summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorArnold D. Robbins <arnold@skeeve.com>2010-07-16 14:47:02 +0300
committerArnold D. Robbins <arnold@skeeve.com>2010-07-16 14:47:02 +0300
commit315bd501ca696bc3e3c938b4604d8dac7a6f512f (patch)
treecf992f0df002126292f7487ca6c0d36d7fe748b9
parent85c0d5edb781c9f31b79e48452b1ca68643f41de (diff)
downloadgawk-315bd501ca696bc3e3c938b4604d8dac7a6f512f.tar.gz
Move to gawk 3.1.5.gawk-3.1.5
-rw-r--r--ABOUT-NLS1362
-rw-r--r--COPYING4
-rw-r--r--ChangeLog798
-rw-r--r--FUTURES2
-rw-r--r--INSTALL61
-rw-r--r--Makefile.am33
-rw-r--r--Makefile.in190
-rw-r--r--NEWS60
-rw-r--r--README4
-rw-r--r--README_d/README.cygwin-dynamic88
-rw-r--r--README_d/README.macos14
-rw-r--r--README_d/README.multibyte7
-rw-r--r--aclocal.m4577
-rw-r--r--array.c8
-rw-r--r--awk.h60
-rw-r--r--awkgram.c1236
-rw-r--r--awkgram.y209
-rw-r--r--awklib/ChangeLog26
-rw-r--r--awklib/Makefile.am29
-rw-r--r--awklib/Makefile.in133
-rw-r--r--bisonfix.awk34
-rw-r--r--bisonfix.sed3
-rw-r--r--builtin.c465
-rwxr-xr-xconfig.guess48
-rwxr-xr-xconfig.rpath83
-rwxr-xr-xconfig.sub34
-rw-r--r--configh.in190
-rwxr-xr-xconfigure6000
-rw-r--r--configure.ac140
-rw-r--r--custom.h2
-rwxr-xr-xdepcomp69
-rw-r--r--dfa.c303
-rw-r--r--dfa.h8
-rw-r--r--doc/ChangeLog35
-rw-r--r--doc/Makefile.am12
-rw-r--r--doc/Makefile.in103
-rw-r--r--doc/ad.block4
-rw-r--r--doc/awkcard.in16
-rw-r--r--doc/gawk.155
-rw-r--r--doc/gawk.info4303
-rwxr-xr-x[-rw-r--r--]doc/gawk.texi221
-rw-r--r--doc/gawkinet.info4
-rw-r--r--doc/gawkinet.texi6
-rw-r--r--doc/macros2
-rw-r--r--doc/setter.outline2
-rw-r--r--doc/texinfo.tex446
-rw-r--r--eval.c114
-rw-r--r--eval_p.c2
-rw-r--r--ext.c6
-rw-r--r--extension/ChangeLog10
-rw-r--r--extension/arrayparm.c2
-rw-r--r--extension/dl.c2
-rw-r--r--extension/filefuncs.c20
-rw-r--r--extension/fork.c2
-rw-r--r--extension/ordchr.c2
-rw-r--r--extension/readfile.c2
-rw-r--r--extension/xreadlink.c93
-rw-r--r--extension/xreadlink.h23
-rw-r--r--field.c53
-rw-r--r--gawkmisc.c2
-rw-r--r--getopt.c493
-rw-r--r--getopt.h41
-rw-r--r--getopt1.c56
-rw-r--r--getopt_int.h130
-rw-r--r--gettext.h9
-rw-r--r--hard-locale.h64
-rwxr-xr-xinstall-sh102
-rw-r--r--intl/ChangeLog4
-rw-r--r--intl/Makefile.in493
-rw-r--r--intl/VERSION1
-rw-r--r--intl/bindtextdom.c363
-rwxr-xr-xintl/config.charset608
-rw-r--r--intl/dcgettext.c56
-rw-r--r--intl/dcigettext.c1219
-rw-r--r--intl/dcngettext.c57
-rw-r--r--intl/dgettext.c58
-rw-r--r--intl/dngettext.c59
-rw-r--r--intl/eval-plural.h108
-rw-r--r--intl/explodename.c185
-rw-r--r--intl/finddomain.c192
-rw-r--r--intl/gettext.c63
-rw-r--r--intl/gettextP.h215
-rw-r--r--intl/gmo.h149
-rw-r--r--intl/hash-string.h48
-rw-r--r--intl/intl-compat.c131
-rw-r--r--intl/l10nflist.c421
-rw-r--r--intl/libgnuintl.h.in383
-rw-r--r--intl/loadinfo.h145
-rw-r--r--intl/loadmsgcat.c1420
-rw-r--r--intl/localcharset.c398
-rw-r--r--intl/localcharset.h42
-rw-r--r--intl/locale.alias78
-rw-r--r--intl/localealias.c414
-rw-r--r--intl/localename.c1142
-rw-r--r--intl/log.c98
-rw-r--r--intl/ngettext.c65
-rw-r--r--intl/os2compat.c98
-rw-r--r--intl/os2compat.h46
-rw-r--r--intl/osdep.c24
-rw-r--r--intl/plural-exp.c154
-rw-r--r--intl/plural-exp.h118
-rw-r--r--intl/plural.c1490
-rw-r--r--intl/plural.y381
-rw-r--r--intl/printf-args.c119
-rw-r--r--intl/printf-args.h137
-rw-r--r--intl/printf-parse.c537
-rw-r--r--intl/printf-parse.h75
-rw-r--r--intl/printf.c371
-rw-r--r--intl/ref-add.sin31
-rw-r--r--intl/ref-del.sin26
-rw-r--r--intl/relocatable.c449
-rw-r--r--intl/relocatable.h77
-rw-r--r--intl/textdomain.c141
-rw-r--r--intl/vasnprintf.c887
-rw-r--r--intl/vasnprintf.h61
-rw-r--r--intl/vasnwprintf.h46
-rw-r--r--intl/wprintf-parse.h75
-rw-r--r--intl/xsize.h109
-rw-r--r--io.c156
-rw-r--r--m4/ChangeLog18
-rw-r--r--m4/arch.m42
-rw-r--r--m4/codeset.m48
-rw-r--r--m4/gettext.m4102
-rw-r--r--m4/glibc2.m430
-rw-r--r--m4/glibc21.m414
-rw-r--r--m4/iconv.m48
-rw-r--r--m4/intdiv0.m48
-rw-r--r--m4/intmax.m418
-rw-r--r--m4/intmax_t.m424
-rw-r--r--m4/inttypes-pri.m48
-rw-r--r--m4/inttypes.m48
-rw-r--r--m4/inttypes_h.m422
-rw-r--r--m4/isc-posix.m48
-rw-r--r--m4/lcmessage.m420
-rw-r--r--m4/lib-ld.m48
-rw-r--r--m4/lib-link.m420
-rw-r--r--m4/lib-prefix.m414
-rw-r--r--m4/longdouble.m48
-rw-r--r--m4/longlong.m414
-rw-r--r--m4/nls.m416
-rw-r--r--m4/po.m433
-rw-r--r--m4/printf-posix.m48
-rw-r--r--m4/progtest.m415
-rw-r--r--m4/signed.m48
-rw-r--r--m4/size_max.m48
-rw-r--r--m4/socket.m42
-rw-r--r--m4/stdint_h.m422
-rw-r--r--m4/strtod.m42
-rw-r--r--m4/uintmax_t.m422
-rw-r--r--m4/ulonglong.m414
-rw-r--r--m4/wchar_t.m48
-rw-r--r--m4/wint_t.m48
-rw-r--r--m4/xsize.m413
-rw-r--r--main.c87
-rw-r--r--mbsupport.h11
-rwxr-xr-xmissing89
-rw-r--r--missing_d/COPYING.LIB6
-rw-r--r--missing_d/ChangeLog10
-rw-r--r--missing_d/mktime.c4
-rw-r--r--missing_d/strerror.c2
-rw-r--r--missing_d/strftime.c4
-rw-r--r--missing_d/strtod.c2
-rw-r--r--missing_d/strtoul.c2
-rw-r--r--missing_d/system.c2
-rw-r--r--msg.c2
-rw-r--r--node.c281
-rw-r--r--pc/ChangeLog29
-rw-r--r--pc/Makefile2
-rw-r--r--pc/Makefile.tst2894
-rw-r--r--pc/config.h34
-rw-r--r--pc/dlfcn.c2
-rw-r--r--pc/dlfcn.h2
-rw-r--r--pc/gawkmisc.pc2
-rw-r--r--po/ChangeLog6
-rw-r--r--po/LINGUAS4
-rw-r--r--po/Makefile.in.in42
-rw-r--r--po/ca.gmobin35000 -> 34846 bytes
-rw-r--r--po/ca.po744
-rw-r--r--po/da.gmobin33386 -> 33248 bytes
-rw-r--r--po/da.po741
-rw-r--r--po/de.gmobin32940 -> 32789 bytes
-rw-r--r--po/de.po743
-rw-r--r--po/es.gmobin40505 -> 43613 bytes
-rw-r--r--po/es.po820
-rw-r--r--po/fr.gmobin35161 -> 43815 bytes
-rw-r--r--po/fr.po956
-rw-r--r--po/ga.gmobin0 -> 33653 bytes
-rw-r--r--po/ga.po1928
-rw-r--r--po/gawk.pot724
-rw-r--r--po/he.gmobin33415 -> 33268 bytes
-rw-r--r--po/he.po741
-rw-r--r--po/it.gmobin41800 -> 42344 bytes
-rw-r--r--po/it.po745
-rw-r--r--po/ja.gmobin39003 -> 41871 bytes
-rw-r--r--po/ja.po809
-rw-r--r--po/nl.gmobin0 -> 41917 bytes
-rw-r--r--po/nl.po1856
-rw-r--r--po/pl.gmobin43069 -> 43523 bytes
-rw-r--r--po/pl.po751
-rw-r--r--po/pt_BR.gmobin38731 -> 38594 bytes
-rw-r--r--po/pt_BR.po742
-rw-r--r--po/ro.gmobin34346 -> 34193 bytes
-rw-r--r--po/ro.po742
-rw-r--r--po/rw.gmobin0 -> 474 bytes
-rw-r--r--po/rw.po1995
-rw-r--r--po/sv.gmobin38062 -> 37921 bytes
-rw-r--r--po/sv.po741
-rw-r--r--po/tr.gmobin42735 -> 42398 bytes
-rw-r--r--po/tr.po741
-rw-r--r--po/vi.gmobin0 -> 50247 bytes
-rw-r--r--po/vi.po2017
-rw-r--r--posix/ChangeLog4
-rw-r--r--posix/gawkmisc.c2
-rw-r--r--profile.c5
-rw-r--r--profile_p.c2
-rw-r--r--protos.h2
-rw-r--r--random.c155
-rw-r--r--random.h20
-rw-r--r--re.c58
-rw-r--r--regcomp.c1166
-rw-r--r--regex.c38
-rw-r--r--regex.h18
-rw-r--r--regex_internal.c238
-rw-r--r--regex_internal.h139
-rw-r--r--regexec.c1549
-rw-r--r--test/ChangeLog72
-rw-r--r--test/Makefile.am84
-rw-r--r--test/Makefile.in159
-rw-r--r--test/Maketests30
-rw-r--r--test/badargs.ok1
-rw-r--r--test/clobber.awk2
-rw-r--r--test/concat1.awk2
-rw-r--r--test/exitval2.awk3
-rw-r--r--test/exitval2.ok1
-rw-r--r--test/fsspcoln.awk41
-rw-r--r--test/fsspcoln.in1
-rw-r--r--test/fsspcoln.ok1
-rw-r--r--test/gensub2.awk5
-rw-r--r--test/gensub2.ok3
-rw-r--r--test/gnuops3.awk14
-rw-r--r--test/gnuops3.ok5
-rw-r--r--test/hex.awk22
-rw-r--r--test/hex.ok6
-rw-r--r--test/iobug1.awk53
-rw-r--r--test/iobug1.ok0
-rw-r--r--test/longdbl.awk159
-rw-r--r--test/longdbl.in2
-rw-r--r--test/longdbl.ok2
-rw-r--r--test/nondec.awk2
-rw-r--r--test/nondec.ok2
-rw-r--r--test/nondec2.awk104
-rw-r--r--test/nondec2.ok1
-rw-r--r--test/nulrsend.awk2
-rw-r--r--test/ofmtfidl.awk2
-rw-r--r--test/reg/func2.out2
-rwxr-xr-xtest/regtest.sh2
-rw-r--r--test/rsstart1.awk32
-rw-r--r--test/rsstart1.in10000
-rw-r--r--test/rsstart1.ok1
-rw-r--r--test/rsstart2.awk2
-rw-r--r--test/rsstart2.ok1
-rw-r--r--test/rsstart3.ok1
-rw-r--r--test/wjposer1.awk75
-rw-r--r--test/wjposer1.in1527
-rw-r--r--test/wjposer1.ok2068
-rw-r--r--unsupported/atari/ChangeLog4
-rw-r--r--unsupported/atari/Makefile.awklib2
-rw-r--r--unsupported/atari/Makefile.st2
-rw-r--r--unsupported/atari/config.h2
-rw-r--r--unsupported/atari/gawkmisc.atr2
-rw-r--r--unsupported/atari/redirect.h2
-rw-r--r--unsupported/tandem/ChangeLog4
-rw-r--r--unsupported/tandem/config.h2
-rw-r--r--unsupported/tandem/tmisc.c2
-rw-r--r--version.c2
-rw-r--r--version.in2
-rw-r--r--vms/ChangeLog60
-rw-r--r--vms/descrip.mms2
-rw-r--r--vms/gawkmisc.vms2
-rw-r--r--vms/redirect.h2
-rw-r--r--vms/vms-conf.h157
-rw-r--r--vms/vms_args.c2
-rw-r--r--vms/vms_fwrite.c2
-rw-r--r--vms/vms_gawk.c13
-rw-r--r--vms/vms_misc.c2
-rw-r--r--vms/vms_popen.c2
-rw-r--r--vms/vmsbuild.com2
-rw-r--r--vms/vmstest.com440
-rwxr-xr-xylwrap22
289 files changed, 41512 insertions, 32646 deletions
diff --git a/ABOUT-NLS b/ABOUT-NLS
index 2f50c669..ed3565ae 100644
--- a/ABOUT-NLS
+++ b/ABOUT-NLS
@@ -1,10 +1,11 @@
-Notes on the Free Translation Project
-*************************************
+1 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
-together, so that will gradually become able to speak many languages.
-A few packages already provide translations for their messages.
+together, so that free software will gradually become able to speak many
+languages. A few packages already provide translations for their
+messages.
If you found this `ABOUT-NLS' file inside a distribution, you may
assume that the distributed package does use GNU `gettext' internally,
@@ -15,15 +16,15 @@ this package with messages translated.
Installers will find here some useful hints. These notes also
explain how users should proceed for getting the programs to use the
available translations. They tell how people wanting to contribute and
-work at translations should contact the appropriate team.
+work on translations can contact the appropriate team.
When reporting bugs in the `intl/' directory or bugs which may be
related to internationalization, you should tell about the version of
`gettext' which is used. The information can be found in the
`intl/VERSION' file, in internationalized packages.
-Quick configuration advice
-==========================
+1.1 Quick configuration advice
+==============================
If you want to exploit the full power of internationalization, you
should configure it using
@@ -45,8 +46,8 @@ to change to GNU `gettext' as soon as possible.
you have installed a recent copy of the GNU gettext package with the
included `libintl'.
-INSTALL Matters
-===============
+1.2 INSTALL Matters
+===================
Some packages are "localizable" when properly installed; the programs
they contain can be made to speak your own native language. Most such
@@ -55,27 +56,27 @@ internationalization, predating GNU `gettext'.
By default, this package will be installed to allow translation of
messages. It will automatically detect whether the system already
-provides the GNU `gettext' functions. If not, the GNU `gettext' own
-library will be used. This library is wholly contained within this
-package, usually in the `intl/' subdirectory, so prior installation of
-the GNU `gettext' package is _not_ required. Installers may use
-special options at configuration time for changing the default
-behaviour. The commands:
+provides the GNU `gettext' functions. If not, the included GNU
+`gettext' library will be used. This library is wholly contained
+within this package, usually in the `intl/' subdirectory, so prior
+installation of the GNU `gettext' package is _not_ required.
+Installers may use special options at configuration time for changing
+the default behaviour. The commands:
./configure --with-included-gettext
./configure --disable-nls
-will respectively bypass any pre-existing `gettext' to use the
+will, respectively, bypass any pre-existing `gettext' to use the
internationalizing routines provided within this package, or else,
_totally_ disable translation of messages.
When you already have GNU `gettext' installed on your system and run
configure without an option for your new package, `configure' will
probably detect the previously built and installed `libintl.a' file and
-will decide to use this. This might be not what is desirable. You
-should use the more recent version of the GNU `gettext' library. I.e.
-if the file `intl/VERSION' shows that the library which comes with this
-package is more recent, you should use
+will decide to use this. This might not be desirable. You should use
+the more recent version of the GNU `gettext' library. I.e. if the file
+`intl/VERSION' shows that the library which comes with this package is
+more recent, you should use
./configure --with-included-gettext
@@ -86,7 +87,7 @@ and therefore it will not be used. The reason is that even an
emulation of `gettext' on top of `catgets' could not provide all the
extensions of the GNU `gettext' library.
- Internationalized packages have usually many `po/LL.po' files, where
+ Internationalized packages usually have many `po/LL.po' files, where
LL gives an ISO 639 two-letter code identifying the language. Unless
translations have been forbidden at `configure' time by using the
`--disable-nls' switch, all available translations are installed
@@ -95,8 +96,8 @@ may be set, prior to configuration, to limit the installed set.
`LINGUAS' should then contain a space separated list of two-letter
codes, stating which languages are allowed.
-Using This Package
-==================
+1.3 Using This Package
+======================
As a user, if your language has been installed for this package, you
only have to set the `LANG' environment variable to the appropriate
@@ -144,8 +145,8 @@ 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
-=================
+1.4 Translating Teams
+=====================
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
@@ -174,562 +175,779 @@ coordinator for all translator teams.
the terminology in use. Proven linguistic skill are praised more than
programming skill, here.
-Available Packages
-==================
+1.5 Available Packages
+======================
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
+matrix shows the current state of internationalization, as of April
+2005. 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 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
-
- et eu fa fi fr ga gl he hr hu id is it ja ko lg
+ Ready PO files af am ar az be bg bs ca cs cy da de el en en_GB
+-------------------------------------------------+
- 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 | [] [] [] [] [] |
+ GNUnet | |
+ a2ps | [] [] [] [] [] |
+ aegis | () |
+ ant-phone | () |
+ anubis | [] |
+ ap-utils | |
+ aspell | [] [] [] [] |
+ bash | [] [] |
+ batchelor | [] |
+ bfd | |
+ bibshelf | [] |
+ binutils | [] |
+ bison | [] [] |
+ bluez-pin | [] [] [] [] |
+ clisp | [] [] |
+ console-tools | [] [] |
+ coreutils | [] [] [] [] |
+ cpio | |
+ cpplib | [] [] [] |
+ darkstat | [] () [] |
+ dialog | [] [] [] [] [] [] |
+ diffutils | [] [] [] [] [] |
+ doodle | [] |
+ e2fsprogs | [] [] |
+ enscript | [] [] [] [] |
+ error | [] [] [] [] |
+ fetchmail | [] () [] [] [] |
+ fileutils | [] [] |
+ findutils | [] [] [] |
+ flex | [] [] [] |
+ fslint | [] |
+ gas | |
+ gawk | [] [] [] |
+ gbiff | [] |
+ gcal | [] |
+ gcc | [] |
+ gettext-examples | [] [] [] [] |
+ gettext-runtime | [] [] [] [] |
+ gettext-tools | [] [] |
+ gimp-print | [] [] [] [] |
+ gip | |
+ gliv | [] |
+ glunarclock | |
+ gmult | [] [] |
+ gnubiff | () |
+ gnucash | [] () () [] |
+ gnucash-glossary | [] () |
+ 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 | |
+ gsasl | [] |
+ gss | |
+ gst-plugins | [] [] [] [] [] [] |
+ gstreamer | [] [] [] [] [] |
+ gtick | [] () |
+ gtkspell | [] [] [] |
+ hello | [] [] [] [] |
+ id-utils | [] [] |
+ impost | |
+ indent | [] [] |
+ iso_3166 | |
+ iso_3166_1 | [] [] [] [] [] |
iso_3166_2 | |
- iso_3166_3 | |
- iso_4217 | [] [] [] [] [] [] |
+ 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 | [] [] [] [] [] [] [] |
+ jpilot | [] |
+ jtag | |
+ jwhois | |
+ kbd | [] [] [] [] |
+ latrine | () |
+ ld | [] |
+ libc | [] [] [] [] [] |
+ libextractor | |
+ libgpewidget | [] [] [] |
+ libgsasl | |
+ libiconv | [] [] [] [] [] |
+ libidn | |
+ lifelines | [] () |
+ lilypond | [] |
+ lingoteach | |
+ lynx | [] [] [] [] |
+ m4 | [] [] [] [] |
+ mailutils | [] |
+ make | [] [] |
+ man-db | [] () [] [] |
+ minicom | [] [] |
+ mysecretdiary | [] [] |
+ nano | [] () [] |
+ nano_1_0 | [] () [] [] |
+ opcodes | [] |
+ parted | [] [] [] [] |
+ psmisc | |
+ ptx | [] [] [] |
+ pwdutils | |
python | |
- radius | [] |
- recode | [] [] [] [] [] [] |
- rpm | [] [] |
+ radius | [] |
+ recode | [] [] [] [] [] |
+ rpm | [] [] |
screem | |
- scrollkeeper | [] |
- sed | [] [] [] [] [] [] [] [] [] |
- sh-utils | [] [] [] [] [] [] [] |
- shared-mime-info | [] [] [] |
- sharutils | [] [] [] [] [] |
- silky | () [] () () |
- skencil | [] |
- sketch | [] |
- soundtracker | [] [] |
- sp | [] () |
- tar | [] [] [] [] [] [] [] [] [] |
- texinfo | [] [] [] [] |
- textutils | [] [] [] [] [] [] |
- tin | [] () |
- tp-robot | [] |
- tuxpaint | [] [] [] [] [] [] [] [] [] |
+ scrollkeeper | [] [] [] [] [] [] [] [] |
+ sed | [] [] |
+ sh-utils | [] [] |
+ shared-mime-info | [] [] |
+ sharutils | [] [] [] [] [] |
+ silky | |
+ skencil | [] () |
+ sketch | [] () |
+ solfege | [] |
+ soundtracker | [] [] |
+ sp | [] |
+ stardict | [] |
+ tar | |
+ texinfo | [] [] |
+ textutils | [] [] [] |
+ tin | () () |
+ tp-robot | [] |
+ tuxpaint | [] [] [] [] [] [] [] |
unicode-han-tra... | |
- unicode-transla... | [] [] |
- util-linux | [] [] [] [] () [] |
- vorbis-tools | [] |
- wastesedge | () |
- wdiff | [] [] [] [] [] [] |
- wget | [] [] [] [] [] [] [] |
- xchat | [] [] [] |
- xfree86_xkb_xml | [] [] |
- xpad | [] [] |
+ unicode-transla... | |
+ util-linux | [] [] [] [] |
+ vorbis-tools | [] [] [] [] |
+ wastesedge | () |
+ wdiff | [] [] [] [] |
+ wget | [] [] [] [] [] [] |
+ xchat | [] [] [] [] |
+ xkeyboard-config | |
+ 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
+ af am ar az be bg bs ca cs cy da de el en en_GB
+ 10 0 0 2 7 4 0 41 43 3 52 90 20 1 15
+
+ eo es et eu fa fi fr ga gl he hr hu id is it
+ +-----------------------------------------------+
+ GNUnet | |
+ a2ps | [] [] [] () |
+ aegis | |
+ ant-phone | [] |
+ anubis | [] |
+ ap-utils | [] |
+ aspell | [] [] |
+ bash | [] [] [] [] |
+ batchelor | [] [] |
+ bfd | [] |
+ bibshelf | [] [] [] |
+ binutils | [] [] |
+ bison | [] [] [] [] [] [] |
+ bluez-pin | [] [] [] [] [] [] |
+ clisp | [] [] |
+ console-tools | |
+ coreutils | [] [] [] [] [] |
+ cpio | [] [] |
+ cpplib | [] [] |
+ darkstat | [] () [] [] [] |
+ dialog | [] [] [] [] [] [] [] [] |
+ diffutils | [] [] [] [] [] [] [] [] [] [] |
+ doodle | [] [] |
+ e2fsprogs | [] [] [] |
+ enscript | [] [] |
+ error | [] [] [] [] [] |
+ fetchmail | [] |
+ fileutils | [] [] [] [] [] [] |
+ findutils | [] [] [] [] [] |
+ flex | [] [] [] |
+ fslint | [] |
+ gas | [] [] |
+ gawk | [] [] [] [] |
+ gbiff | [] |
+ gcal | [] [] |
+ gcc | [] |
+ gettext-examples | [] [] [] [] |
+ gettext-runtime | [] [] [] [] [] [] |
+ gettext-tools | [] [] [] |
+ gimp-print | [] [] |
+ gip | [] [] [] |
+ gliv | () |
+ glunarclock | [] [] [] |
+ gmult | [] [] [] |
+ gnubiff | () () |
+ gnucash | [] () [] |
+ gnucash-glossary | [] [] |
+ 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 | [] [] [] |
+ gsasl | [] [] [] |
+ gss | [] |
+ gst-plugins | [] [] [] |
+ gstreamer | [] |
+ gtick | [] [] [] [] [] |
+ gtkspell | [] [] [] [] [] [] |
+ hello | [] [] [] [] [] [] [] [] [] [] [] [] [] [] |
+ id-utils | [] [] [] [] |
+ impost | [] [] |
+ indent | [] [] [] [] [] [] [] [] [] [] [] |
+ iso_3166 | [] [] [] |
+ iso_3166_1 | [] [] [] [] [] [] [] |
+ iso_3166_2 | [] |
+ iso_3166_3 | [] |
+ iso_4217 | [] [] [] |
+ iso_639 | [] [] [] [] |
+ jpilot | [] [] |
+ jtag | [] |
+ jwhois | [] [] [] [] [] |
+ kbd | [] [] |
+ latrine | [] [] [] |
+ ld | [] [] |
+ libc | [] [] [] [] [] |
+ libextractor | |
+ libgpewidget | [] [] [] [] [] |
+ libgsasl | [] [] |
+ libiconv | [] [] [] [] [] [] [] [] [] [] [] |
+ libidn | [] [] |
+ lifelines | () |
+ lilypond | [] |
+ lingoteach | [] [] [] |
+ lynx | [] [] [] |
+ m4 | [] [] [] [] |
+ mailutils | [] [] |
+ make | [] [] [] [] [] [] [] |
+ man-db | () |
+ minicom | [] [] [] [] |
+ mysecretdiary | [] [] [] |
+ nano | [] [] () [] [] |
+ nano_1_0 | [] [] [] [] [] |
+ opcodes | [] [] |
+ parted | [] [] [] [] |
+ psmisc | [] [] |
+ ptx | [] [] [] [] [] [] [] [] [] |
+ pwdutils | |
+ python | |
+ radius | [] [] |
+ recode | [] [] [] [] [] [] [] [] |
+ rpm | [] |
+ screem | |
+ scrollkeeper | [] [] [] |
+ sed | [] [] [] [] [] |
+ sh-utils | [] [] [] [] [] [] [] |
+ shared-mime-info | [] [] [] [] [] [] |
+ sharutils | [] [] [] [] [] [] [] |
+ silky | [] |
+ skencil | [] [] |
+ sketch | [] [] |
+ solfege | [] |
+ soundtracker | [] [] [] |
+ sp | [] |
+ stardict | [] |
+ tar | [] [] [] [] [] |
+ texinfo | [] [] [] |
+ textutils | [] [] [] [] [] |
+ tin | [] () |
+ tp-robot | [] [] |
+ tuxpaint | [] [] [] [] [] [] [] [] [] |
+ unicode-han-tra... | |
+ unicode-transla... | [] [] |
+ util-linux | [] [] [] [] [] [] |
+ vorbis-tools | [] [] |
+ wastesedge | () |
+ wdiff | [] [] [] [] [] [] [] [] |
+ wget | [] [] [] [] [] [] [] [] [] [] |
+ xchat | [] [] [] [] [] |
+ xkeyboard-config | |
+ xpad | [] [] [] |
+ +-----------------------------------------------+
+ eo es et eu fa fi fr ga gl he hr hu id is it
+ 13 85 21 15 2 35 115 45 17 8 6 40 27 1 45
+
+ ja ko ku lg lt lv mk mn ms mt nb nl nn no nso
+ +-----------------------------------------------+
+ GNUnet | |
+ a2ps | () [] [] () |
+ aegis | () |
+ ant-phone | [] |
+ anubis | [] [] [] |
+ ap-utils | |
+ aspell | [] [] |
+ bash | [] |
+ batchelor | [] |
+ bfd | |
+ bibshelf | |
+ binutils | |
+ bison | [] [] [] |
+ bluez-pin | [] |
+ clisp | [] |
+ console-tools | |
+ coreutils | [] [] |
+ cpio | |
+ cpplib | |
+ darkstat | [] [] |
+ dialog | [] |
+ diffutils | [] [] [] |
+ doodle | |
+ e2fsprogs | |
+ enscript | [] |
+ error | [] |
+ fetchmail | [] [] |
+ fileutils | [] [] |
+ findutils | [] |
+ flex | [] [] |
+ fslint | [] |
+ gas | |
+ gawk | [] [] |
+ gbiff | [] |
+ gcal | |
+ gcc | |
+ gettext-examples | [] [] |
+ gettext-runtime | [] [] [] |
+ gettext-tools | [] [] |
+ gimp-print | [] [] |
+ gip | [] |
+ gliv | [] |
+ glunarclock | [] [] |
+ gmult | [] |
+ gnubiff | |
+ gnucash | () () [] |
+ gnucash-glossary | [] |
+ 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 | |
+ gsasl | [] |
+ gss | |
+ gst-plugins | [] |
+ gstreamer | [] |
+ gtick | [] |
+ gtkspell | [] [] |
+ hello | [] [] [] [] [] [] [] [] |
+ id-utils | [] |
+ impost | |
+ indent | [] [] |
+ iso_3166 | [] |
+ iso_3166_1 | [] [] |
+ iso_3166_2 | [] |
+ iso_3166_3 | [] |
+ iso_4217 | [] [] [] |
+ iso_639 | [] [] [] |
+ jpilot | () () () |
+ jtag | |
+ jwhois | [] |
+ kbd | [] |
+ latrine | [] |
+ ld | |
+ libc | [] [] [] [] [] |
+ libextractor | |
+ libgpewidget | [] |
+ libgsasl | [] |
+ libiconv | [] |
+ libidn | |
+ lifelines | [] |
+ lilypond | [] |
+ lingoteach | [] |
+ lynx | [] [] |
+ m4 | [] [] |
+ mailutils | |
+ make | [] [] [] |
+ man-db | () |
+ minicom | [] |
+ mysecretdiary | [] |
+ nano | [] [] |
+ nano_1_0 | [] [] [] |
+ opcodes | [] |
+ parted | [] [] |
+ psmisc | [] [] |
+ ptx | [] [] [] |
+ pwdutils | |
+ python | |
+ radius | |
+ recode | [] |
+ rpm | [] [] |
+ screem | [] |
+ scrollkeeper | [] [] [] |
+ sed | [] [] |
+ sh-utils | [] [] |
+ shared-mime-info | [] [] [] [] |
+ sharutils | [] [] |
+ silky | [] |
+ skencil | |
+ sketch | |
+ solfege | [] [] |
+ soundtracker | |
+ sp | () |
+ stardict | [] [] |
+ tar | [] [] |
+ texinfo | [] [] [] |
+ textutils | [] [] [] |
+ tin | |
+ tp-robot | [] |
+ tuxpaint | [] [] [] [] [] [] |
+ unicode-han-tra... | |
+ unicode-transla... | |
+ util-linux | [] [] |
+ vorbis-tools | [] |
+ wastesedge | [] |
+ wdiff | [] [] |
+ wget | [] [] |
+ xchat | [] [] [] [] |
+ xkeyboard-config | [] |
+ xpad | [] |
+ +-----------------------------------------------+
+ ja ko ku lg lt lv mk mn ms mt nb nl nn no nso
+ 33 11 1 1 1 2 2 3 11 0 15 96 7 5 0
+
+ or pa pl pt pt_BR rm ro ru rw sk sl sq sr sv ta
+ +-------------------------------------------------+
+ GNUnet | |
+ a2ps | () [] [] [] [] [] [] |
+ aegis | () () |
+ ant-phone | [] |
+ anubis | [] [] [] |
+ ap-utils | () |
+ aspell | [] [] |
+ bash | [] [] [] |
+ batchelor | [] |
+ bfd | |
+ bibshelf | |
+ binutils | [] [] |
+ bison | [] [] [] [] [] |
+ bluez-pin | [] [] [] [] [] [] [] [] |
+ clisp | [] |
+ console-tools | [] |
+ coreutils | [] [] [] [] |
+ cpio | [] [] |
+ cpplib | |
+ darkstat | [] [] [] [] [] [] |
+ dialog | [] [] [] [] [] [] [] |
+ diffutils | [] [] [] [] [] [] |
+ doodle | [] |
+ e2fsprogs | [] [] |
+ enscript | [] [] [] [] |
+ error | [] [] [] |
+ fetchmail | [] () [] [] [] |
+ fileutils | [] [] [] [] [] |
+ findutils | [] [] [] [] [] [] |
+ flex | [] [] [] [] [] |
+ fslint | [] [] [] |
+ gas | |
+ gawk | [] [] [] [] |
+ gbiff | [] |
+ gcal | [] |
+ gcc | |
+ gettext-examples | [] [] [] [] [] [] |
+ gettext-runtime | [] [] [] [] [] [] [] |
+ gettext-tools | [] [] [] [] [] [] [] |
+ gimp-print | [] [] |
+ gip | [] [] [] |
+ gliv | [] [] [] |
+ glunarclock | [] [] [] [] [] [] |
+ gmult | [] [] [] [] |
+ gnubiff | () [] |
+ gnucash | () [] [] [] [] |
+ gnucash-glossary | [] [] [] |
+ 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 | [] |
+ gsasl | [] [] [] [] [] |
+ gss | [] [] [] |
+ gst-plugins | [] [] [] [] |
+ gstreamer | [] [] [] [] |
+ gtick | [] [] [] |
+ gtkspell | [] [] [] [] [] [] |
+ hello | [] [] [] [] [] [] [] |
+ id-utils | [] [] [] [] |
+ impost | |
+ indent | [] [] [] [] [] [] |
+ iso_3166 | [] [] [] [] [] |
+ iso_3166_1 | [] [] [] [] |
+ iso_3166_2 | |
+ iso_3166_3 | [] [] [] |
+ iso_4217 | [] [] |
+ iso_639 | [] [] [] |
+ jpilot | |
+ jtag | [] |
+ jwhois | [] [] [] () () |
+ kbd | [] [] [] |
+ latrine | [] [] |
+ ld | [] |
+ libc | [] [] [] [] [] |
+ libextractor | [] |
+ libgpewidget | [] [] [] [] [] [] |
+ libgsasl | [] [] [] |
+ libiconv | [] [] [] [] [] [] [] [] [] [] |
+ libidn | [] () |
+ lifelines | [] [] |
+ lilypond | [] |
+ lingoteach | [] |
+ lynx | [] [] [] |
+ m4 | [] [] [] [] [] |
+ mailutils | [] [] [] |
+ make | [] [] [] [] |
+ man-db | [] [] |
+ minicom | [] [] [] [] |
+ mysecretdiary | [] [] [] [] |
+ nano | [] [] [] |
+ nano_1_0 | [] [] [] [] |
+ opcodes | [] [] |
+ parted | [] [] [] [] |
+ psmisc | [] [] |
+ ptx | [] [] [] [] [] [] |
+ pwdutils | [] |
+ python | |
+ radius | [] [] |
+ recode | [] [] [] [] [] [] |
+ rpm | [] [] [] [] |
+ screem | |
+ scrollkeeper | [] [] [] [] [] [] [] |
+ sed | [] [] [] [] [] [] [] [] |
+ sh-utils | [] [] [] |
+ shared-mime-info | [] [] [] [] [] |
+ sharutils | [] [] [] |
+ silky | [] |
+ skencil | [] [] [] |
+ sketch | [] [] [] |
+ solfege | |
+ soundtracker | [] [] |
+ sp | |
+ stardict | [] [] |
+ tar | [] [] [] [] |
+ texinfo | [] [] [] [] |
+ textutils | [] [] [] |
+ tin | |
+ tp-robot | [] |
+ tuxpaint | [] [] [] [] [] [] [] [] |
+ unicode-han-tra... | |
+ unicode-transla... | |
+ util-linux | [] [] [] |
+ vorbis-tools | [] [] |
+ wastesedge | |
+ wdiff | [] [] [] [] [] [] |
+ wget | [] [] [] [] [] [] [] [] [] |
+ xchat | [] [] [] [] [] [] |
+ xkeyboard-config | |
+ xpad | |
+ +-------------------------------------------------+
+ or pa pl pt pt_BR rm ro ru rw sk sl sq sr sv ta
+ 1 0 48 30 58 6 79 71 5 45 13 12 50 86 0
+
+ tg th tk tr uk ven vi wa xh zh_CN zh_TW zu
+ +--------------------------------------------+
+ GNUnet | | 0
+ a2ps | [] [] [] | 19
+ aegis | | 0
+ ant-phone | [] | 4
+ anubis | [] | 9
+ ap-utils | () | 1
+ aspell | [] [] [] | 13
+ bash | | 10
+ batchelor | [] [] | 7
+ bfd | | 1
+ bibshelf | [] | 5
+ binutils | [] | 6
+ bison | [] | 17
+ bluez-pin | [] [] [] [] [] | 24
+ clisp | | 7
+ console-tools | [] | 4
+ coreutils | [] | 16
+ cpio | [] [] | 6
+ cpplib | [] [] | 7
+ darkstat | [] () () | 15
+ dialog | [] [] [] | 25
+ diffutils | [] [] [] [] | 28
+ doodle | [] | 5
+ e2fsprogs | [] | 8
+ enscript | [] | 12
+ error | [] [] [] | 16
+ fetchmail | [] | 12
+ fileutils | [] [] [] | 18
+ findutils | [] [] | 17
+ flex | [] [] | 15
+ fslint | [] | 7
+ gas | [] | 3
+ gawk | [] | 14
+ gbiff | | 4
+ gcal | [] | 5
+ gcc | [] | 3
+ gettext-examples | [] [] [] [] | 20
+ gettext-runtime | [] [] [] [] [] | 25
+ gettext-tools | [] [] [] | 17
+ gimp-print | [] | 11
+ gip | [] | 8
+ gliv | [] | 6
+ glunarclock | [] [] | 13
+ gmult | [] [] [] | 13
+ gnubiff | [] | 3
+ gnucash | () [] | 10
+ gnucash-glossary | [] | 8
+ gpe-aerial | [] [] | 13
+ gpe-beam | [] [] | 13
+ gpe-calendar | [] [] [] [] | 18
+ gpe-clock | [] [] [] [] | 17
+ gpe-conf | [] [] | 12
+ gpe-contacts | [] [] | 6
+ gpe-edit | [] [] [] [] | 15
+ gpe-go | [] [] | 11
+ gpe-login | [] [] [] [] [] | 18
+ gpe-ownerinfo | [] [] [] [] | 19
+ gpe-sketchbook | [] [] | 14
+ gpe-su | [] [] [] | 16
+ gpe-taskmanager | [] [] [] | 17
+ gpe-timesheet | [] [] [] [] | 17
+ gpe-today | [] [] [] [] [] | 19
+ gpe-todo | [] [] [] | 16
+ gphoto2 | [] [] | 17
+ gprof | [] [] | 10
+ gpsdrive | | 2
+ gramadoir | [] | 6
+ grep | [] [] [] [] | 32
+ gretl | | 4
+ gsasl | [] [] | 12
+ gss | [] | 5
+ gst-plugins | [] [] | 16
+ gstreamer | [] [] [] | 14
+ gtick | [] | 11
+ gtkspell | [] [] [] | 20
+ hello | [] [] [] [] | 37
+ id-utils | [] [] | 13
+ impost | [] | 3
+ indent | [] [] [] | 24
+ iso_3166 | [] [] [] | 12
+ iso_3166_1 | [] [] | 20
+ iso_3166_2 | | 2
+ iso_3166_3 | [] [] | 8
+ iso_4217 | [] [] | 10
+ iso_639 | [] [] | 12
+ jpilot | [] [] [] | 6
+ jtag | | 2
+ jwhois | [] [] [] | 12
+ kbd | [] [] | 12
+ latrine | [] [] | 8
+ ld | [] | 5
+ libc | [] [] | 22
+ libextractor | | 1
+ libgpewidget | [] [] | 17
+ libgsasl | [] | 7
+ libiconv | [] [] [] [] [] | 32
+ libidn | [] [] | 5
+ lifelines | | 4
+ lilypond | [] | 5
+ lingoteach | | 5
+ lynx | [] [] | 14
+ m4 | [] [] | 17
+ mailutils | [] | 7
+ make | [] [] | 18
+ man-db | | 5
+ minicom | | 11
+ mysecretdiary | [] [] | 12
+ nano | | 11
+ nano_1_0 | [] [] | 17
+ opcodes | [] | 7
+ parted | [] [] [] | 17
+ psmisc | [] | 7
+ ptx | [] [] | 23
+ pwdutils | | 1
+ python | | 0
+ radius | [] | 6
+ recode | [] [] | 22
+ rpm | [] [] | 11
+ screem | | 1
+ scrollkeeper | [] [] | 23
+ sed | [] [] | 19
+ sh-utils | [] | 15
+ shared-mime-info | [] [] | 19
+ sharutils | [] [] [] | 20
+ silky | | 3
+ skencil | | 6
+ sketch | | 6
+ solfege | | 4
+ soundtracker | [] | 8
+ sp | [] | 3
+ stardict | [] [] [] [] | 10
+ tar | [] [] | 13
+ texinfo | [] [] | 14
+ textutils | [] [] [] | 17
+ tin | | 1
+ tp-robot | [] [] | 7
+ tuxpaint | [] [] [] [] | 34
+ unicode-han-tra... | | 0
+ unicode-transla... | | 2
+ util-linux | [] [] | 17
+ vorbis-tools | [] | 10
+ wastesedge | | 1
+ wdiff | [] [] | 22
+ wget | [] [] [] [] | 31
+ xchat | [] [] [] | 22
+ xkeyboard-config | | 1
+ xpad | [] | 5
+ +--------------------------------------------+
+ 72 teams tg th tk tr uk ven vi wa xh zh_CN zh_TW zu
+ 147 domains 0 0 1 78 29 0 71 16 0 41 20 0 1711
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
@@ -742,13 +960,13 @@ distributed as such by its maintainer. There might be an observable
lag between the mere existence a PO file and its wide availability in a
distribution.
- If January 2004 seems to be old, you may fetch a more recent copy of
+ If April 2005 seems to be old, you may fetch a more recent copy of
this `ABOUT-NLS' file on most GNU archive sites. The most up-to-date
matrix with full percentage details can be found at
`http://www.iro.umontreal.ca/contrib/po/HTML/matrix.html'.
-Using `gettext' in new packages
-===============================
+1.6 Using `gettext' in new packages
+===================================
If you are writing a freely available program and want to
internationalize it you are welcome to use GNU `gettext' in your
diff --git a/COPYING b/COPYING
index d60c31a9..623b6258 100644
--- a/COPYING
+++ b/COPYING
@@ -2,7 +2,7 @@
Version 2, June 1991
Copyright (C) 1989, 1991 Free Software Foundation, Inc.
- 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
+ 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
Everyone is permitted to copy and distribute verbatim copies
of this license document, but changing it is not allowed.
@@ -305,7 +305,7 @@ the "copyright" line and a pointer to where the full notice is found.
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
+ Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
Also add information on how to contact you by electronic and paper mail.
diff --git a/ChangeLog b/ChangeLog
index c7cf862b..b29963d7 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,799 @@
+Tue Jul 26 21:46:16 2005 Arnold D. Robbins <arnold@skeeve.com>
+
+ * Release 3.1.5: Release tar file made.
+
+Tue Jul 26 21:44:54 2005 Arnold D. Robbins <arnold@skeeve.com>
+
+ Copyright dates on all relevant files updated to 2005.
+
+Wed Jul 6 17:09:02 2005 Arnold D. Robbins <arnold@skeeve.com>
+
+ Minor cleanups:
+
+ * io.c (do_index): Remove unused variables `mbclen', `mbs1' and `mbs2'.
+ * node.c (wstrstr): Remove unsed variable `j'.
+ (dump_wstr): `#ifdef' out, not currently needed.
+ * eval.c (op_assign): Move decl of `t1' and `t2' into a separate block for
+ the `! HAVE_FMOD' case. Keeps the compiler quiet. Similar for `ltemp'.
+
+Wed Jul 6 16:51:31 2005 Arnold D. Robbins <arnold@skeeve.com>
+
+ * io.c (close_io): Now takes pointer to boolean parameter indicating
+ if there was a problem closing standard output or standard error.
+ Update it in the right places.
+ * awk.h (close_io): Update the declaration.
+ * main.c (main): New variable `stdio_problem'. Pass it to `close_io'.
+ Check the result and exit non-zero if there was a problem.
+ (usage, version): Print warning message if problems with stdout.
+
+ Unrelated:
+
+ * main.c (main): For call to `setlocale' for LC_MESSAGES, just use
+ `#ifdef LC_MESSAGES'. Per Bruno Haible <bruno@clisp.org>.
+
+Wed Jul 6 16:44:58 2005 Jim Meyering <jim@meyering.net>
+
+ * main.c (init_fds): If any of the STDIN_FILENO, STDOUT_FILENO,
+ STDERR_FILENO are initially closed, reopen them with permissions
+ contrary to common usage so that any reasonable attempt to use
+ them will evoke the same sort of error as reading or writing to
+ a closed file descriptor would.
+
+Mon Jul 4 09:38:29 2005 Arnold D. Robbins <arnold@skeeve.com>
+
+ More multibyte fixes from Kimura Koichi, <kimura.koichi@canon.co.jp>.
+
+ * node.c (format_val, r_dupnode): Spell `wstptr' correctly.
+ * regex_internal.c (build_wcs_upper_buffer): Label `offsets_needed' should not
+ be inside `#ifdef _LIBC'.
+ * regcomp.c (build_charclass): Fix declaration of `class_name' in prototype to
+ not be unsigned.
+
+Thu Jun 30 11:52:34 2005 Arnold D. Robbins <arnold@skeeve.com>
+
+ * profile.c (tree_eval): Node_not: Remember to print the exclamation
+ point! Thanks to Dan Nielsen <Dan.Nielsen@corporate.ge.com>
+ for the bug report.
+ * mbsupport.h: Fix spelling of HAVE_ISWUPPER. Thanks to
+ Kimura Koichi, <kimura.koichi@canon.co.jp>.
+
+Sun Jun 26 16:37:59 2005 Arnold D. Robbins <arnold@skeeve.com>
+
+ Unrelated changes:
+
+ * builtin.c (do_length): Allow array argument to length().
+ Returns number of elements in array.
+
+ * awkgram.y (yylex): Ignore carriage returns in source code. Sigh.
+
+Wed Jun 15 22:12:15 2005 Arnold D. Robbins <arnold@skeeve.com>
+
+ * node.c (isnondecimal): Check loc.decimal_point before using it.
+ Avoids problems with command line assignment when locale info may
+ not be set up all the way yet.
+
+Wed Jun 15 21:59:54 2005 Arnold D. Robbins <arnold@skeeve.com>
+
+ * node.c (make_str_node): If working with multibyte characters, while
+ parsing string constants, keep multibyte characters together. This avoids
+ problems in cases where one of the bytes is backslash. Initial patch
+ supplied by Kimura Koichi, <kimura.koichi@canon.co.jp>.
+
+Tue Jun 14 21:50:37 2005 Andrew J. Schorr <ajschorr@users.sourceforge.net>
+
+ Use Exponentiation By Squaring for integer powers for ^ and ^=.
+
+ * eval.c (calc_exp, cal_exp_posint): New functions.
+ (r_tree_eval): Use them.
+
+Fri Jun 3 12:15:54 2005 Arnold D. Robbins <arnold@skeeve.com>
+
+ * configure.ac: Further change the hack at the end so that
+ it works on Mac OS X `sed'. Sigh.
+
+Thu Jun 2 22:44:01 2005 Arnold D. Robbins <arnold@skeeve.com>
+
+ * configure.ac (TYPE_SOCKLEN_T): Use `int' as default type if can't
+ figure one out.
+ * awkgram.y: Warn that `//' is not a C++ comment. (:-)
+
+Thu Jun 2 20:55:27 2005 Arnold D. Robbins <arnold@skeeve.com>
+
+ From: Benno Schulenberg <benno@nietvergeten.nl>
+
+ * eval.c (func_call): Take message out of gettext call since it's for debugging.
+ * ext.c (get_actual_argument): Fix formatting of message.
+
+Wed May 25 09:19:37 2005 Arnold D. Robbins <arnold@skeeve.com>
+
+ * configure.ac: Change hack at end that fixes Makefile to keep
+ version.c to use `sed' and not `ed'. More portable to OS/2, probably
+ other systems.
+
+Mon May 23 09:01:26 2005 Arnold D. Robbins <arnold@skeeve.com>
+
+ Portability help from Jim Meyering.
+
+ * io.c: Rework ifdefs for <inttypes.h> and <stdint.h>. Test them
+ individually.
+ * configure.ac: Add AC_C_RESTRICT and code for socklen_t from rsync.
+ Check for isascii and btowc for regex.
+
+Sat May 14 22:49:54 2005 Arnold D. Robbins <arnold@skeeve.com>
+
+ * wait_any (errno): Remove decl.
+ * gawk_popen: The pipe-simulated but not VMS or DOS version. Remove
+ decl/use of `strdup' in favor of `emalloc' and `strcpy'.
+
+Wed May 11 18:33:30 2005 Arnold D. Robbins <arnold@skeeve.com>
+
+ All files: Updated address of FSF to:
+
+ 51 Franklin Street, Fifth Floor
+ Cambridge, MA 02110-1301
+
+Wed May 11 18:19:03 2005 Jim Meyering <jim@meyering.net>
+
+ * configure.ac: Use AM_GNU_GETTEXT([external]).
+ Reflect upgrade to gettext-0.14.4.
+ Reflect renaming of `jm_'-prefixed macros.
+ (AC_CONFIG_FILES): Remove intl/Makefile.
+
+ * Makefile.am (SUBDIRS): Remove intl.
+ (AM_CPPFLAGS): Remove -Iintl.
+
+Wed May 11 11:42:06 2005 Arnold D. Robbins <arnold@skeeve.com>
+
+ Straighten out mess with `isblank' which is C99 <ctype.h> function.
+
+ * configure.ac: Remove check for `isblank' in call to AC_CHECK_FUNCS.
+ * regex_internal.h: #ifdef out definition of `isblank' and provide `is_blank'
+ function a la dfa.c.
+ * field.c: Ditto.
+ * regcomp.c: #ifdef use of `isblank' and add `is_blank' use instead.
+
+Mon May 9 08:29:37 2005 Arnold D. Robbins <arnold@skeeve.com>
+
+ * configure.ac: Add type check for `socklen_t', fixes compile
+ warning on AMD/64 Linux.
+ * io.c (socketopen): Change type of socket lenght variables
+ to `socklen_t' from `size_t'.
+
+Thu May 5 22:00:03 2005 John E. Haque <j.eh@mchsi.com>
+
+ * io.c (iop_alloc): Let a input processor hook installed via
+ `register_open_hooks' open its own fd in case gawk does not know
+ how to open it.
+ (iop_open): Call `os_close_on_exec' after `iop_alloc'.
+ ADR: If `iop_alloc' returns NULL but the fd is valid, close
+ the fd to avoid an fd leak.
+
+Mon May 2 08:05:59 2005 Arnold D. Robbins <arnold@skeeve.com>
+
+ * eval.c (update_ERRNO): Don't use `return' in a `void' function.
+ * awk.h (AWKNUM): Back out use of `long double' based on LDBL_MANT_DIG.
+ * builtin.c (tmp_integer): Back out extra ifdefs.
+
+Fri Apr 29 13:01:05 2005 Arnold D. Robbins <arnold@skeeve.com>
+
+ * configure.ac: Look for `isblank' function.
+ * field.c: Add define for `isblank' if we don't have it.
+
+Fri Apr 29 12:01:33 2005 Julian Foad <julianfoad@btopenworld.com>
+
+ From grep. Doesn't seem to affect awk.
+
+ * dfa.c (lex): Fix bug #9519: "echo do^re | grep do^re" was
+ failing to find a match. [Towards end, set `lasttok' before
+ returning `c'.]
+
+Fri Apr 29 00:28:46 2005 Arnold D. Robbins <arnold@skeeve.com>
+
+ * configure.ac: Jump through an amazingly convoluted hoop to get
+ config.status to keep version.c upon `make distclean'. Seems to
+ work though.
+
+Thu Apr 28 23:40:02 2005 Stepan Kasal <kasal@ucw.cz>
+
+ * configure.ac (PRINTF_HAS_F_FORMAT): Some cosmetic changes.
+ (custom.h): Don't cat custom.h at the end of config.h; instead, use
+ AH_BOTTOM([#include "custom.h"])
+ * awklib/Makefile.am (AM_CPPFLAGS): Add $(top_srcdir) so that
+ custom.h can be found.
+
+Thu Apr 28 23:21:22 2005 Jim Meyering <jim@meyering.net>
+
+ * field.c (set_FIELDWIDTHS): Tighten up the code to accept FIELDWIDTHS
+ values in [1..INT_MAX], e.g., detect overflow and invalid strings,
+ and reject strings starting with `-'.
+
+Thu Apr 28 23:05:33 2005 Stepan Kasal <kasal@ucw.cz>
+
+ * dfa.c (parse_bracket_exp_mb): Shorten one part of the code, to get
+ closer to grep's copy.
+
+Thu Apr 28 23:00:58 2005 Pat Rankin <rankin@pactechdata.com>
+
+ * builtin.c (format_tree) [#if VAXCRTL]: For floating point
+ formatting, reject zero_flag if using old VAXCRTL run-time
+ library to avoid getting erroneous results which appear as if
+ numerically incorrect (due to an embedded space in some cases,
+ extra trailing zeroes in others) rather than just misformatted.
+ `hsprint' test still fails, but not as badly.
+
+Thu Apr 28 19:12:03 2005 Arnold D. Robbins <arnold@skeeve.com>
+
+ * re.c (reflags2str): Add three new RE_ flags from current regex.h
+ to bring the table up to date.
+
+ * builtin.c (format_tree): Save 2 spare bytes instead of one. Suggested
+ by Stepan Kasal.
+
+Thu Apr 28 18:16:09 2005 Andrew J. Schorr <ajschorr@users.sourceforge.net>
+
+ * awk.h (IOBUF): Add new fields `opaque', `get_record', and `close_func',
+ to support insertion of an alternate input processor. This is used
+ by the XML extension.
+ (register_deferred_variable, register_open_hook, update_ERRNO_saved):
+ Declare new functions.
+ (load_environ, load_procinfo): Remove declarations -- these functions
+ are no longer global, since we use register_deferred_variable instead.
+ * awkgram.y (register_deferred_variable): New function to allow
+ calling code to register special variable names that trigger a callback
+ upon the first reference. This is now used to implement ENVIRON
+ and PROCINFO.
+ (variable): Search the list of deferred variables instead of hardcoded
+ tests for ENVIRON and PROCINFO.
+ * eval.c (set_BINMODE): Fix spelling of "arbitrary" in warning message.
+ (update_ERRNO_saved): New function that allows the caller to specify
+ the errno value instead of using the current value.
+ (update_ERRNO): Implement by calling update_ERRNO_saved(errno).
+ * io.c (iop_close): Call `iop->close_func' if non-NULL.
+ (close_redir): Should save `errno' value, otherwise `lintwarn' messages
+ might update it. Then use `update_ERRNO_saved' to set ERRNO.
+ (do_getline): Call `update_ERRNO_saved' to set ERRNO based on the
+ error code returned by the redirect function (instead of the current
+ value of errno). Similarly, use `update_ERRNO_saved' to set ERRNO
+ based on the value returned by `get_a_record'. But add a special
+ check to avoid updating ERRNO if `get_a_record' returns an error
+ code value of -1 (this is used by the XML extension which already
+ sets ERRNO before returning).
+ (register_open_hook): New function to register a function to be
+ called whenever a new data file is opened. This can be used to
+ install a special input processor (as in the XML extension).
+ (iop_alloc): Call registered open hook.
+ (get_a_record): If a `get_record' method has been set, call that instead.
+ * main.c (init_vars): Use `register_deferred_variable' to implement
+ ENVIRON and PROCINFO.
+ (load_environ, load_procinfo): Now static instead of global.
+ * doc/gawk.texi: Document new internal functions `update_ERRNO_saved',
+ `register_deferred_variable', and `register_open_hook'.
+
+Thu Apr 28 10:50:10 2005 Arnold D. Robbins <arnold@skeeve.com>
+
+ * array.c (assoc_find, do_delete): Change incorrect uses of STREQN
+ to memcmp.
+ * builtin.c (do_index): Same.
+ * field.c (set_FS): Same.
+ * io.c (redirect, getredirect, do_close, set_RS): Same.
+ * re.c (reisstring): Same.
+
+Wed Apr 27 21:35:57 2005 Arnold D. Robbins <arnold@skeeve.com>
+
+ Allow for long double. Initial changes from Jean-Marc Saffroy
+ <jean-marc.saffroy@ext.bull.net>.
+
+ * awk.h (AWKNUM): If have long doubles (LDBL_MANT_DIG), define AWKNUM
+ as long double, otherwise just use double.
+ * builtin.c (format_tree): Change type of tmpval to double.
+ (do_strtonum): Same for `d' and types used in casts.
+ (tmp_integer): Don't do bit shifting if have long doubles.
+
+ Unrelated, from Andrew J. Schorr:
+
+ * io.c (close_one): Check for RED_FILE|RED_WRITE, not just RED_FILE.
+
+Mon Apr 25 12:23:18 2005 Andrew J. Schorr <aschorr@telemetry-investments.com>
+
+ * eval.c (r_tree_eval): In Node_assign_concat case, when copying string
+ constants, include the terminating zero byte.
+
+Fri Apr 1 06:26:31 2005 Arnold D. Robbins <arnold@skeeve.com>
+
+ Update to Automake 1.9.5.
+
+ * INSTALL, aclocal.m4, depcomp, install-sh, missing,
+ mkinstalldirs, ylwrap: Updated.
+
+ Unrelated:
+
+ * builtin.c (do_tolower, do_toupper): Remove old code
+ based on 8-bit character table.
+
+Wed Feb 23 08:23:22 2005 Arnold D. Robbins <arnold@skeeve.com>
+
+ * bisonfix.awk: New file, fixes continued #ifdef for dumb compilers.
+ * Makefile.am (awkgram.c): Fix rule to use it.
+ (EXTRA_DIST): Include bisonfix.awk.
+
+Tue Feb 22 21:18:50 2005 Arnold D. Robbins <arnold@skeeve.com>
+
+ * random.h: Remove include of config.h and move it to ...
+ * random.c: Here. Move include of random.h back to where it was.
+
+ * regcomp.c, regex.c, regexec.c: NUKED all use of alloca not inside
+ `_LIBC' ifdef. Hooray!
+
+Sat Feb 19 20:13:28 2005 Pat Rankin <rankin@pactechdata.com>
+
+ Workarounds for bugs and missing C89 features in old VAX C compiler.
+
+ * regex_internal.h "mbsupport.h": Suppress inclusion if NO_MBSUPPORT
+ is defined.
+ [MB_CUR_MAX]: Define as 1 if mbsupport.h hasn't defined it.
+ [ER_ERRMSG, ERRMSG_TYPE, ERRMSG_OFFSET, ERRMSG_SEPARATOR]: New macros
+ conditionalized upon gawk's NO_TOKEN_PASTING macro.
+ * regcomp.c: Use them.
+ (parse_dup_op): Use alternate initialization of start_token if
+ RE_TOKEN_INIT_BUG is defined.
+ * regexec.c (proceed_next_node): Compare push_fail_stack() result
+ explicitly against REG_NOERROR rather than implicitly against 0.
+
+Sat Feb 19 20:05:50 2005 Pat Rankin <rankin@pactechdata.com>
+
+ * dfa.c "mbsupport.h": Suppress inclusion if NO_MBSUPPORT is defined.
+
+Wed Feb 16 20:43:07 2005 Pat Rankin <rankin@pactechdata.com>
+
+ * awk.h "mbsupport.h": Suppress inclusion if NO_MBSUPPORT is defined.
+ * regex.h <sys/types.h>: Guard inclusion with HAVE_SYS_TYPES_H.
+ * regex.c <sys/types.h>: Likewise.
+ * random.c "random.h": include this first to get config.h setup.
+ <fcntl.h>: Guard inclusion with HAVE_FCNTL_H.
+ <unistd.h>: Guard inclusion with HAVE_UNISTD_H.
+ * io.c [#if defined(MSDOS) ||... defined(__CYGWIN__)]: Splice the
+ backslash continuation back into one long line.
+
+Wed Feb 16 10:11:21 2005 Arnold D. Robbins <arnold@skeeve.com>
+
+ * node.c (unref, format_val): Add assertions checking that both
+ `tmp->wstptr != NULL' and `(tmp->flags & WSTRCUR) != 0' before
+ freeing `tmp->wstptr'. Thanks to kimura.koichi@canon.co.jp.
+
+ * random.c (HAVE_UNISTD_H): Conditionalize include of <unistd.h>.
+ Thanks to Scott Deifik <scottd@amgen.com>.
+
+Sun Feb 13 18:24:50 2005 Arnold D. Robbins <arnold@skeeve.com>
+
+ * io.c (socketopen): Move `#ifdef MSG_PEEK' up to above
+ declarations too. Thanks to Michal Jaegermann.
+
+ * config.guess, config.sub: Updated from Savannah.
+
+Thu Feb 10 15:48:48 2005 Arnold D. Robbins <arnold@skeeve.com>
+
+ * regex_internal.c (re_dfa_add_node): Remove variable `type'
+ and just use `token.type' directly in RE_ENABLE_I18N code below.
+ Saves a compiler warning, and a good compiler will handle it anyway.
+ * regexec.c (check_arrival_add_next_nodes): Move decl of `err'
+ inside #ifdef RE_ENABLE_I18N code where it's used.
+ * awkgram.y (yylex): Add casts to int before use of `strlen' results
+ for printf-style precision. Avoid a compiler warning.
+ * io.c (redirect, do_close): Same for use of tmp->stlen.
+
+ Thanks to Michal Jaegermann <michal@harddata.com>.
+
+Wed Feb 9 10:19:15 2005 Stepan Kasal <kasal@ucw.cz>
+
+ * Makefile.am (datadir, libexecdir): Removed.
+ (awkdatadir): Renamed to pkgdatadir.
+ (pkgdatadir, LDADD): Use the make syntax to refer to other variables,
+ not @...@.
+
+Wed Feb 9 10:05:46 2005 Arnold D. Robbins <arnold@skeeve.com>
+
+ * node.c (r_dupnode): Assign NULL to r->wstr after `getnode'.
+ Fix count of bytes to copy in call to `memcpy'.
+ Thanks to Kimura Koichi, <kimura.koichi@canon.co.jp>.
+
+Tue Feb 8 19:26:22 2005 Pat Rankin <rankin@pactechdata.com>
+
+ * regcomp.c (init_dfa): Avoid strcasecmp() since regex.c doesn't
+ use awk.h and none of the assorted other included header files
+ are guaranteed to declare it.
+ (parse_expression): Modify casts for the string arguments passed to
+ build_charclass_op() to fix char * vs unsigned char * mismatch.
+ (parse_bracket_exp): Likewise add cast for the string argument
+ passed to build_charclass().
+
+Mon Feb 7 15:04:09 2005 Arnold D. Robbins <arnold@skeeve.com>
+
+ * eval.c (make_scalar): Don't use P() macro in definition.
+ Thanks to Juergen Kahrs <Juergen.Kahrs@barco.com>.
+
+Wed Feb 2 16:36:19 2005 Arnold D. Robbins <arnold@skeeve.com>
+
+ * main.c (main): Call `close_io', without its result affecting
+ the exit status. Super small, super dark corner.
+
+ See test/exitval2.awk.
+
+Tue Feb 1 11:58:29 2005 Arnold D. Robbins <arnold@skeeve.com>
+
+ * regex.h (__APPLE_CC__): Removed test and definition of __restrict.
+ Not needed for current MacOS X compiler.
+
+Sun Jan 30 13:56:37 2005 Arnold D. Robbins <arnold@skeeve.com>
+
+ Fresh merge with CVS regex routines. Fixes handling of \B.
+ See tests/gnureop3.awk and also
+ http://sources.redhat.com/bugzilla/show_bug.cgi?id=693.
+
+ CVS base versions:
+
+ * regcomp.c: Version 1.92, Thu Jan 27 19:05:20 2005.
+ * regexec.c: Version 1.77, Thu Jan 27 19:06:34 2005.
+ * regex_internal.c: Version 1.49, Thu Jan 27 19:07:15 2005.
+ * regex_internal.h: Version 1.60, Wed Jan 26 22:40:50 2005.
+ * regexec.c: Version 1.77, Thu Jan 27 19:06:34 2005.
+
+Sat Jan 22 22:30:40 2005 Arnold D. Robbins <arnold@skeeve.com>
+
+ Reinstate patch of 18 Nov 2001, for VMS, at least:
+
+ * random.c (srandomdev): ifdef-out. Lots of compile time
+ problems on multiple platforms, and gawk doesn't even
+ use the routine. The heck with fine-grained solutions.
+
+Thu Jan 20 14:15:32 2005 Arnold D. Robbins <arnold@skeeve.com>
+
+ * awkgram.y (LEX_FOR): Free NAME tokens in transformation of
+ `for (iggy in foo) delete foo[iggy]' into `delete foo'.
+ Thanks and a tip of the hatlo to Valgrind.
+
+ * dfa.c (_): Clean up stuff here by just including "gettext.h".
+ Per Bruno Haible.
+
+Wed Jan 19 18:29:23 2005 Arnold D. Robbins <arnold@skeeve.com>
+
+ * awkgram.y (yylex): Improve parsing of numeric constants
+ and hex values, via a push from Paul Eggert. See test/hex.awk.
+
+ * regex_internal.c (re_node_set_alloc): If `size' is 0, just
+ zero out the structure. From valgrind.
+
+Tue Jan 18 17:23:25 2005 Arnold D. Robbins <arnold@skeeve.com>
+
+ Make gawk multibyte aware. This means that index(), length(),
+ substr() and match() all work in terms of characters, not bytes.
+
+ * awk.h (NODE): Add `wsp' and `wslen' elements to value for wide
+ string.
+ (WSTRCUR, wstptr, wstlen, force_wstring): New macros.
+ (str2wstr, wstrstr, wcasestrstr): New declarations.
+ * builtin.c (do_index, do_length, do_substr, do_match): Handle wide
+ strings.
+ * eval.c (flags2str): Add WSTRCUR.
+ * node.c (format_val, r_dupnode, mk_number, make_str_node, unref):
+ Add code to deal with wide strings.
+ (str2wstr, dump_wstr, wstrstr, wcasestrstr): New functions.
+
+Sun Jan 16 15:10:35 2005 Arnold D. Robbins <arnold@skeeve.com>
+
+ * random.h (int32_t): Define this type.
+
+Thu Jan 13 14:38:13 2005 Arnold D. Robbins <arnold@skeeve.com>
+
+ Cause `configure --disable-nls' to still allow locale-correct
+ formating of numeric values.
+
+ * builtin.c (format_tree): Change #ifdefs to only test HAVE_LOCALE_H.
+ Improve code for ' flag so that extraneous separator is not included if
+ number of digits is multiple of locale separater count (3, 6, 9, etc.)
+ * dfa.c (dfaparse): Change ifdef to only test #ifdef LC_COLLATE.
+ * eval.c (fmt_ok): Remove ENABLE_NLS from #ifdef test.
+ * gettext.h: Include <locale.h> on both sides of test. Should really
+ be factored out.
+ * main.c (loc): Remove ENABLE_NLS from #ifdef test.
+ (main): Same in call to localeconv().
+ * node.c (isnondecimal): Remove ENABLE_NLS from #ifdef test.
+
+ Unrelated:
+
+ * regcomp.c (init_dfa): Change `codeset' to `codeset_name' in two
+ places.
+
+Mon Jan 10 11:49:56 2005 Arnold D. Robbins <arnold@skeeve.com>
+
+ Annual sync with glibc.
+
+ * getopt_int.h: New file.
+ * Makefile.am (base_sources): Add it.
+ * getopt.h, getopt.c, getopt1.c: Updated.
+ * regcomp.c, regex.c, regex.h, regex_internal.c, regex_internal.h,
+ regexec.c: Updated.
+
+ Original versions:
+
+ getopt_int.h, 1.1, Tue Mar 9 10:31:19 2004
+ getopt1.c, 1.10, Tue Mar 9 10:35:37 2004
+ getopt.h, 1.21, Fri Mar 19 00:19:32 2004
+ getopt.c, 1.53, Wed Mar 10 23:13:26 2004
+ regcomp.c, 1.87, Mon Dec 6 02:56:42 2004
+ regex.c, 1.126, Fri Jan 30 05:19:58 2004
+ regex.h, 1.33, Thu Nov 18 23:50:57 2004
+ regex_internal.c, 1.46, Thu Jan 6 20:59:49 2005
+ regex_internal.h, 1.57, Mon Dec 27 16:29:05 2004
+ regexec.c, 1.75, Mon Dec 27 16:29:52 2004
+
+ * regex.h: Add check for __APPLE_CC__ and definition of __restrict.
+ * regex.c: Add check for _MSC_VER and include <stdio.h>.
+ * regex_internal.h (_RE_ENABLE_I18N): Change test.
+ (re_realloc): Add check/fix for SunOS 4.1.x.
+ * regex_internal.c (build_wcs_upper_buffer): ifdef label
+ `offsets_needed', add cast in call to `wcrtomb'.
+ * regcomp.c (build_charclass, build_charclass_op): Remove `unsigned'
+ from declarations of `char *' params.
+ (regerror): Remove use of mempcpy.
+ (peek_token): Disallow \s and \S for gawk.
+ (build_charclass): Change decl of `class_name' and use it directly.
+ Nuke variable `name'.
+ (build_charclass_op): Change decl of `class_name' and `extra'.
+
+Thu Jan 6 16:44:32 2005 Arnold D. Robbins <arnold@skeeve.com>
+
+ Improve autoconfiscation stuff for wide character use.
+
+ * builtin.c (do_tolower, do_toupper): Conditionally compile
+ call to `wide_tolower_toupper'.
+ (wide_tolower_toupper): Conditionally compile typedefs and function.
+ * mbsupport.h: Add check for having `wint_t', and `iswlower',
+ `iswupper', `towlower' and `towupper'.
+ * configure.ac (HAVE_WINT_T): Add test.
+ (AC_CHECK_FUNCS): Add `wint_t', `iswlower', `iswupper', `towlower'
+ and `towupper'.
+
+ Unrelated change:
+
+ * hard-locale.h (hard_locale): Add decl of `xmalloc' to prevent
+ redeclaration problems on some compilers.
+
+Wed Jan 5 10:20:17 2005 Arnold D. Robbins <arnold@skeeve.com>
+
+ Update to Bison 2.0.
+
+ * bisonfix.sed: Removed, no longer needed.
+ * Makefile.am (EXTRA_DIST): Removed bisonfix.sed.
+ (awkgram.c): Fix build rule.
+ * awkgram.c: Regenerated.
+
+Tue Jan 4 18:47:56 2005 Arnold D. Robbins <arnold@skeeve.com>
+
+ Update to Automake 1.9.4.
+
+ * alocal.m4, config.guess, config.sub, install-sh: Updated.
+
+Mon Jan 3 14:08:27 2005 Arnold D. Robbins <arnold@skeeve.com>
+
+ Update to Automake 1.9.3.
+
+ * INSTALL, alocal.m4, config.guess, config.sub, depcomp,
+ install-sh, missing, ylwrap: Updated.
+
+Mon Jan 3 11:23:36 2005 Arnold D. Robbins <arnold@skeeve.com>
+
+ Fix obscure issue. ^ in RS should only match at the very
+ beginning of the input. Essentially, the file is one long
+ string. To do this, use the `not_bol' flag in the `struct
+ pattern_buffer'. Thanks to Stepan Kasal for pointing out the
+ problem and to Andreas Schwab for pointing out the mechanism
+ for a solution.
+
+ * awk.h (RE_NEED_START, RE_NO_BOL): New flags for `research'.
+ (IOP_AT_START): New flag for IOBUF.
+ (research): Last parameter is now `flags'.
+ * builtin.c (do_match, sub_common): Change calls to `research'.
+ * eval.c (interpret, match_op): Same.
+ * field.c (re_parse_field): Same.
+ * io.c (spec_setup): Add IOP_AT_START flag.
+ (iop_alloc): Same.
+ (rsrescan): Modify logic to check IOP_AT_START and if not on to
+ add RE_NO_BOL to flags value in call to `research'.
+ (get_a_record): Clear IOP_AT_START upon return from `*matchrec'.
+ (iopflags2str): Add IOP_AT_START to table. Also IOP_CLOSED,
+ which was missing. (Ooops.)
+ * re.c (research): Last paramater is now flags. Modify logic to
+ handle RE_NO_BOL case by setting the right bit initially. Clean
+ up control flow so that it's cleared before returning. If RE_NO_BOL,
+ don't bother with the dfa matcher, as it doesn't have an analogous
+ capability.
+
+Wed Dec 22 12:33:48 2004 Arnold D. Robbins <arnold@skeeve.com>
+
+ For --exec, don't allow x=y assignments where filenames would be.
+ Do allow -v. This is because we assume --exec is used mainly for
+ CGI stuff and we don't want var assigns to affect the code.
+
+ Suggested by Stepan Kasal; motivated by reading about web security.
+
+ * main.c (disallow_var_assigns): New variable.
+ (main): Set the var for --exec.
+ (arg_assign): Check it appropriately.
+
+Sun Dec 19 17:27:09 2004 Arnold D. Robbins <arnold@skeeve.com>
+
+ * builtin.c (do_gensub): Make `global' flag smarter, such that
+ a string numeric constant (e.g., "3") acts like a numeric
+ constant.
+ * node.c (r_force_number): Not really related: Only set NUMCUR
+ if we actually convert some digits.
+
+Sun Dec 19 16:08:50 2004 Arnold D. Robbins <arnold@skeeve.com>
+
+ * dfa.h, dfa.c: Synchronize with what's happening in GNU grep
+ development. Effectively only minor whitespace changes and some
+ slight code motion of ifdefs and includes.
+ * hard-locale.h: New file, extracted from old dfa.c.
+ * Makefile.am (base_sources): Add hard-locale.h.
+
+Sun Dec 19 11:13:45 2004 Arnold D. Robbins <arnold@skeeve.com>
+
+ * io.c (socketopen): Change type of `readle' and `namelen'
+ variables to size_t. For QNX, but a good idea anyway. Thanks
+ to `Anthony' (rz1a@mail.ru).
+
+Mon Dec 6 11:11:22 2004 Arnold D. Robbins <arnold@skeeve.com>
+
+ Undid change of Mar 9 2004, to add gofast patch. It gets things
+ wrong for gawk. This removes the bandaid of ifdef-ing out the
+ main check. Eventually this'll all get straightened out in the
+ GNU grep code.
+
+ * dfa.c (buf_offset): Removed.
+ (SKIP_REMAINS_MB_IF_INITIAL_STATE): Removed use of buf_offset, do
+ free `mblen_buf', `inputwcs'.
+ (match_anychar, match_mb_charset, transit_state_consume_1char,
+ transit_state): Remove use of buf_offset in mblen_buf.
+ (dfaexec): Use `free' and `malloc', not `realloc'.
+
+Mon Dec 6 10:55:37 2004 Fumitoshi UKAI <ukai@debian.or.jp>
+
+ Forwarded from james@nocrew.org, the Debian contact.
+
+ * dfa.c (parse_bracket_exp_mb):
+ 1. Build range correctly when IGNORECASE for [a-a] to also get 'A'.
+ 2. For [:lower:] and [:upper:], if ignoring case, set type string
+ to "alpha". This parallels code in the regex routines.
+ 3. Reset wc1 to EOF when parsing bracket expressions.
+
+Mon Nov 29 18:36:25 2004 Arnold D. Robbins <arnold@skeeve.com>
+
+ * io.c (redirect): When allocating a new struct redirect, set
+ rp->pid to -1, not 0, so that code checking for EOF on an
+ input pipe works correctly.
+
+Thu Nov 25 14:22:41 2004 Stepan Kasal <kasal@ucw.cz>
+
+ * Makefile.am (MAINTAINERCLEANFILES): Add.
+ * version.in (version_string): Use PACKAGE_STRING.
+
+Tue Nov 23 17:27:38 2004 Stepan Kasal <kasal@ucw.cz>
+
+ * re.c: Fix a typo in a comment.
+
+Mon Nov 22 16:47:00 2004 Arnold D. Robbins <arnold@skeeve.com>
+
+ * awkgram.y (yylex): Add lint check for tawk style modifiers on
+ regexes, /.../i and /.../s. Not that it'll help anyone.
+
+Wed Oct 27 14:25:18 2004 Stepan Kasal <kasal@ucw.cz>
+
+ * builtin.c (do_tolower, do_toupper): Fix the wide char handling,
+ especially when the lowercased char doesn't ocuppy the same
+ number of bytes as its uppercase equivalent. Make use of ...
+ (wide_tolower_toupper): ... this new static function.
+
+Mon Oct 25 11:51:14 2004 Arnold D. Robbins <arnold@skeeve.com>
+
+ * builtin.c (bchunk, bchunk_one, cksize): Change type of `olen'
+ to size_t from long. It is the 21st century now, after all...
+ Thanks to Stepan Kasal.
+
+Mon Oct 11 10:49:09 2004 Arnold D. Robbins <arnold@skeeve.com>
+
+ * awkgram.y (yylex): Improve lint warnings for non-decimal constants.
+ * node.c (isnondecimal): Made a little smarter, thanks to Stepan Kasal.
+
+Thu Oct 7 21:59:38 2004 Arnold D. Robbins <arnold@skeeve.com>
+
+ * dfa.c (dfamust): Redo fix of 22 Sep to match code from
+ current GNU grep.
+
+Sun Oct 3 23:06:00 2004 Arnold D. Robbins <arnold@skeeve.com>
+
+ * node.c (isnondecimal): Made smarter, so that 0xEE does
+ register as non-decimal. Added parameter to indicate use of
+ locale's decimal point and changed declaration and callers.
+
+Tue Sep 28 18:38:17 2004 Arnold D. Robbins <arnold@skeeve.com>
+
+ * node.c (isnondecimal): New function, now smarter.
+ * awk.h (isnondecimal): Changed from macro to function.
+
+Wed Sep 22 11:24:46 2004 Arnold D. Robbins <arnold@skeeve.com>
+
+ * dfa.c (dfamust): At end, check results of `malloc'.
+ Based on bug report from Sorav Bansal <sbansal@stanford.edu>
+ for grep.
+
+Mon Sep 20 13:18:18 2004 Arnold D. Robbins <arnold@skeeve.com>
+
+ New --exec option. Needed for gawk CGI scripts to prevent
+ arbitrary options and/or source getting passed in from the web.
+
+ * main.c (optab): New long option, --exec.
+ (main): Catch it. Like -f but end option processing.
+ (usage): Add it to the usage message.
+
+ Thanks to John DuBois and Don Stokes for their input.
+
+ Unrelated:
+
+ * dfa.c (dfaexec): Disabled caching into buffer that bypasses
+ multibyte initialization, since it can get things wrong. Thanks
+ to Andreas Schwab <schwab@suse.de>.
+
+Mon Sep 20 12:59:42 2004 Andreas Schwab <schwab@suse.de>
+
+ * awkgram.y (nextc): Check for end of lexer buffer before
+ advancing ring buffer index.
+
+Wed Sep 8 09:54:53 2004 Arnold D. Robbins <arnold@skeeve.com>
+
+ * main.c (main): Force LC_NUMERIC locale to "C" before parsing
+ the program, since a variable assignment with -v can leave the
+ locale set incorrectly.
+
+ Thanks to Sirix <sirix@poczta.onet.pl> for reporting the problem.
+
+Wed Aug 25 18:55:30 2004 Arnold D. Robbins <arnold@skeeve.com>
+
+ * main.c (UPDATE_YEAR): New constant at top of file, where we
+ won't miss it.
+ (copyleft): Use it.
+
+Sun Aug 22 17:26:39 2004 Stepan Kasal <kasal@ucw.cz>
+
+ Define gawk_mb_cur_max even if there is no mbs support, as
+ ``const int'' and assign 1 to it.
+ This fixes a bug in re.c where #ifdef MBS_SUPPORT was missing.
+
+ * awk.h (gawk_mb_cur_max): Declare.
+ * main.c (gawk_mb_cur_max): Define.
+ * awkgram.y (nextc_is_1stbyte): Without mbs support, define to 1.
+ * builtin.c (index_multibyte_buffer): Define a dummy function
+ when there is no mbs support.
+ * awkgram.y, builtin.c, re.c: Remove some `#ifdef MBS_SUPPORT'.
+
+Sun Aug 15 22:08:04 2004 Arnold D. Robbins <arnold@skeeve.com>
+
+ Import current FreeBSD random.c. Make it work for gawk.
+ Needed for cases where long is more than 32 bits.
+
+ * random.c: Imported from FreeBSD. Header includes tweaked.
+ * random.h: Typdef gawk_uint32_t appropriately and #define uint32_t
+ to it.
+ * configure.ac: Add calls to AC_CHECK_SIZEOF for unsigned int
+ and unsigned long.
+
+ Started with
+ http://www.freebsd.org/cgi/cvsweb.cgi/src/lib/libc/stdlib/random.c
+ Thanks to Andreas Schwab <schwab@suse.de> for the pointer.
+
+Thu Aug 12 13:09:53 2004 Arnold D. Robbins <arnold@skeeve.com>
+
+ * main.c (copyleft): Fix copyright year.
+
Mon Aug 2 12:18:15 2004 Arnold D. Robbins <arnold@skeeve.com>
* Release 3.1.4: Release tar file made.
@@ -445,7 +1241,7 @@ Thu Feb 5 18:05:12 2004 Arnold D. Robbins <arnold@skeeve.com>
`exit_val' to 1 if not already exiting.
* regcomp.c (regerror): Remove use of mempcpy. Generates too
- many compiler warning.
+ many compiler warnings.
* configure.ac (AC_CHECK_FUNCS): Don't bother checking for it.
Wed Feb 4 17:34:47 2004 Arnold D. Robbins <arnold@skeeve.com>
diff --git a/FUTURES b/FUTURES
index 00e0e28c..f591ad3c 100644
--- a/FUTURES
+++ b/FUTURES
@@ -32,6 +32,8 @@ In 3.1
DONE: Add %'d for putting in commas in formatting.
+ DONE: Multibyte support for index, length, substr, match.
+
For 3.2
=======
Enable \s, \S in regexes (regcomp.c and dfa.c) and document them.
diff --git a/INSTALL b/INSTALL
index 54caf7c1..56b077d6 100644
--- a/INSTALL
+++ b/INSTALL
@@ -1,13 +1,16 @@
-Copyright (C) 1994, 1995, 1996, 1999, 2000, 2001, 2002 Free Software
-Foundation, Inc.
+Installation Instructions
+*************************
- This file is free documentation; the Free Software Foundation gives
+Copyright (C) 1994, 1995, 1996, 1999, 2000, 2001, 2002, 2004, 2005 Free
+Software Foundation, Inc.
+
+This file is free documentation; the Free Software Foundation gives
unlimited permission to copy, distribute and modify it.
Basic Installation
==================
- These are generic installation instructions.
+These are generic installation instructions.
The `configure' shell script attempts to guess correct values for
various system-dependent variables used during compilation. It uses
@@ -67,9 +70,9 @@ The simplest way to compile this package is:
Compilers and Options
=====================
- Some systems require unusual options for compilation or linking that
-the `configure' script does not know about. Run `./configure --help'
-for details on some of the pertinent environment variables.
+Some systems require unusual options for compilation or linking that the
+`configure' script does not know about. Run `./configure --help' for
+details on some of the pertinent environment variables.
You can give `configure' initial values for configuration parameters
by setting variables in the command line or in the environment. Here
@@ -82,7 +85,7 @@ is an example:
Compiling For Multiple Architectures
====================================
- You can compile the package for more than one kind of computer at the
+You can compile the package for more than one kind of computer at the
same time, by placing the object files for each architecture in their
own directory. To do this, you must use a version of `make' that
supports the `VPATH' variable, such as GNU `make'. `cd' to the
@@ -99,19 +102,19 @@ for another architecture.
Installation Names
==================
- By default, `make install' will install the package's files in
+By default, `make install' will install the package's files in
`/usr/local/bin', `/usr/local/man', etc. You can specify an
installation prefix other than `/usr/local' by giving `configure' the
-option `--prefix=PATH'.
+option `--prefix=PREFIX'.
You can specify separate installation prefixes for
architecture-specific files and architecture-independent files. If you
-give `configure' the option `--exec-prefix=PATH', the package will use
-PATH as the prefix for installing programs and libraries.
+give `configure' the option `--exec-prefix=PREFIX', the package will
+use PREFIX as the prefix for installing programs and libraries.
Documentation and other data files will still use the regular prefix.
In addition, if you use an unusual directory layout you can give
-options like `--bindir=PATH' to specify different values for particular
+options like `--bindir=DIR' to specify different values for particular
kinds of files. Run `configure --help' for a list of the directories
you can set and what kinds of files go in them.
@@ -122,7 +125,7 @@ option `--program-prefix=PREFIX' or `--program-suffix=SUFFIX'.
Optional Features
=================
- Some packages pay attention to `--enable-FEATURE' options to
+Some packages pay attention to `--enable-FEATURE' options to
`configure', where FEATURE indicates an optional part of the package.
They may also pay attention to `--with-PACKAGE' options, where PACKAGE
is something like `gnu-as' or `x' (for the X Window System). The
@@ -137,11 +140,11 @@ you can use the `configure' options `--x-includes=DIR' and
Specifying the System Type
==========================
- There may be some features `configure' cannot figure out
-automatically, but needs to determine by the type of machine the package
-will run on. Usually, assuming the package is built to be run on the
-_same_ architectures, `configure' can figure that out, but if it prints
-a message saying it cannot guess the machine type, give it the
+There may be some features `configure' cannot figure out automatically,
+but needs to determine by the type of machine the package will run on.
+Usually, assuming the package is built to be run on the _same_
+architectures, `configure' can figure that out, but if it prints a
+message saying it cannot guess the machine type, give it the
`--build=TYPE' option. TYPE can either be a short name for the system
type, such as `sun4', or a canonical name which has the form:
@@ -167,9 +170,9 @@ eventually be run) with `--host=TYPE'.
Sharing Defaults
================
- If you want to set default values for `configure' scripts to share,
-you can create a site shell script called `config.site' that gives
-default values for variables like `CC', `cache_file', and `prefix'.
+If you want to set default values for `configure' scripts to share, you
+can create a site shell script called `config.site' that gives default
+values for variables like `CC', `cache_file', and `prefix'.
`configure' looks for `PREFIX/share/config.site' if it exists, then
`PREFIX/etc/config.site' if it exists. Or, you can set the
`CONFIG_SITE' environment variable to the location of the site script.
@@ -178,7 +181,7 @@ A warning: not all `configure' scripts look for a site script.
Defining Variables
==================
- Variables not defined in a site shell script can be set in the
+Variables not defined in a site shell script can be set in the
environment passed to `configure'. However, some packages may run
configure again during the build, and the customized values of these
variables may be lost. In order to avoid this problem, you should set
@@ -186,14 +189,18 @@ them in the `configure' command line, using `VAR=value'. For example:
./configure CC=/usr/local2/bin/gcc
-will cause the specified gcc to be used as the C compiler (unless it is
-overridden in the site shell script).
+causes the specified `gcc' to be used as the C compiler (unless it is
+overridden in the site shell script). Here is a another example:
+
+ /bin/bash ./configure CONFIG_SHELL=/bin/bash
+
+Here the `CONFIG_SHELL=/bin/bash' operand causes subsequent
+configuration-related scripts to be executed by `/bin/bash'.
`configure' Invocation
======================
- `configure' recognizes the following options to control how it
-operates.
+`configure' recognizes the following options to control how it operates.
`--help'
`-h'
diff --git a/Makefile.am b/Makefile.am
index 2d7e285b..3a913150 100644
--- a/Makefile.am
+++ b/Makefile.am
@@ -1,7 +1,7 @@
#
# Makefile.am --- automake input file for gawk
#
-# Copyright (C) 2000-2004 the Free Software Foundation, Inc.
+# Copyright (C) 2000-2005 the Free Software Foundation, Inc.
#
# This file is part of GAWK, the GNU implementation of the
# AWK Programming Language.
@@ -18,7 +18,7 @@
#
# 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
+# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA
#
## process this file with automake to produce Makefile.in
@@ -44,7 +44,7 @@ EXTRA_DIST = \
POSIX.STD \
PROBLEMS \
README_d \
- bisonfix.sed \
+ bisonfix.awk \
config.guess \
config.rpath \
config.sub \
@@ -60,15 +60,14 @@ EXTRA_DIST = \
regex_internal.h \
regexec.c \
unsupported \
+ version.in \
vms \
ylwrap
# The order to do things in.
-# Build in intl first in case we need the local gettext version.
-# Build explicitly "." next in order to build gawk first, so
+# Build explicitly in "." in order to build gawk first, so
# that `make check' without a prior `make' works.
SUBDIRS = \
- intl \
. \
awklib \
doc \
@@ -93,7 +92,9 @@ base_sources = \
getopt.c \
getopt.h \
getopt1.c \
+ getopt_int.h \
gettext.h \
+ hard-locale.h \
io.c \
mbsupport.h \
main.c \
@@ -106,30 +107,29 @@ base_sources = \
regex.c \
regex.h \
replace.c \
- version.in \
version.c
gawk_SOURCES = $(base_sources) eval.c profile.c
pgawk_SOURCES = $(base_sources) eval_p.c profile_p.c
-# Get extra libs as needed
-LDADD = @LIBINTL@ @SOCKET_LIBS@
+# Get extra libs as needed, Automake will supply LIBINTL and SOCKET_LIBS.
+LDADD = $(LIBINTL) $(SOCKET_LIBS)
-# Set autoconf Makefile.in variables correctly
-datadir = @datadir@
-awkdatadir = @datadir@/awk
-libexecdir = @libexecdir@/awk
+# Directory for gawk's data files. Automake supplies datadir.
+pkgdatadir = $(datadir)/awk
# stuff for compiling gawk/pgawk
-DEFPATH="\".$(PATH_SEPARATOR)$(awkdatadir)\""
+DEFPATH="\".$(PATH_SEPARATOR)$(pkgdatadir)\""
DEFS= -DDEFPATH=$(DEFPATH) -DHAVE_CONFIG_H -DGAWK -DLOCALEDIR="\"$(datadir)/locale\""
-AM_CPPFLAGS = -Iintl
+AM_CPPFLAGS =
# Get rid of core files when cleaning
CLEANFILES = core core.*
+MAINTAINERCLEANFILES = version.c awkgram.c
+
# We want hard links for install-exec-hook, below
LN= ln
@@ -169,7 +169,8 @@ dist-hook:
# Special rules for individual files
awkgram.c: awkgram.y
- $(YACC) $(AM_YFLAGS) $(YFLAGS) $< && sed -f $(srcdir)/bisonfix.sed < y.tab.c > $*.c && $(RM) y.tab.c
+ $(YACC) $(AM_YFLAGS) $(YFLAGS) $<
+ awk -f $(srcdir)/bisonfix.awk y.tab.c > $*.c && rm y.tab.c
if test -f y.tab.h; then \
if cmp -s y.tab.h $*.h; then rm -f y.tab.h; else mv y.tab.h $*.h; fi; \
else :; fi
diff --git a/Makefile.in b/Makefile.in
index 0fbd2168..4fb6a59e 100644
--- a/Makefile.in
+++ b/Makefile.in
@@ -1,8 +1,8 @@
-# Makefile.in generated by automake 1.8.5 from Makefile.am.
+# Makefile.in generated by automake 1.9.5 from Makefile.am.
# @configure_input@
# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
-# 2003, 2004 Free Software Foundation, Inc.
+# 2003, 2004, 2005 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.
@@ -17,7 +17,7 @@
#
# Makefile.am --- automake input file for gawk
#
-# Copyright (C) 2000-2004 the Free Software Foundation, Inc.
+# Copyright (C) 2000-2005 the Free Software Foundation, Inc.
#
# This file is part of GAWK, the GNU implementation of the
# AWK Programming Language.
@@ -34,7 +34,7 @@
#
# 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
+# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA
#
SOURCES = $(gawk_SOURCES) $(pgawk_SOURCES)
@@ -42,7 +42,6 @@ SOURCES = $(gawk_SOURCES) $(pgawk_SOURCES)
srcdir = @srcdir@
top_srcdir = @top_srcdir@
VPATH = @srcdir@
-pkgdatadir = $(datadir)/@PACKAGE@
pkglibdir = $(libdir)/@PACKAGE@
pkgincludedir = $(includedir)/@PACKAGE@
top_builddir = .
@@ -59,34 +58,27 @@ POST_INSTALL = :
NORMAL_UNINSTALL = :
PRE_UNINSTALL = :
POST_UNINSTALL = :
+build_triplet = @build@
host_triplet = @host@
ANSI2KNR = @ANSI2KNR@
bin_PROGRAMS = gawk$(EXEEXT) pgawk$(EXEEXT)
DIST_COMMON = README $(am__configure_deps) $(srcdir)/Makefile.am \
$(srcdir)/Makefile.in $(srcdir)/configh.in \
- $(srcdir)/version.in $(top_srcdir)/configure \
- $(top_srcdir)/intl/Makefile.in ABOUT-NLS AUTHORS COPYING \
- ChangeLog INSTALL NEWS ansi2knr.1 ansi2knr.c awkgram.c \
+ $(srcdir)/version.in $(top_srcdir)/configure ABOUT-NLS AUTHORS \
+ COPYING ChangeLog INSTALL NEWS ansi2knr.1 ansi2knr.c awkgram.c \
config.guess config.rpath config.sub depcomp install-sh \
missing mkinstalldirs ylwrap
subdir = .
ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
am__aclocal_m4_deps = $(top_srcdir)/m4/arch.m4 \
- $(top_srcdir)/m4/codeset.m4 $(top_srcdir)/m4/gettext.m4 \
- $(top_srcdir)/m4/glibc21.m4 $(top_srcdir)/m4/iconv.m4 \
- $(top_srcdir)/m4/intdiv0.m4 $(top_srcdir)/m4/intmax.m4 \
- $(top_srcdir)/m4/intmax_t.m4 $(top_srcdir)/m4/inttypes-pri.m4 \
- $(top_srcdir)/m4/inttypes.m4 $(top_srcdir)/m4/inttypes_h.m4 \
- $(top_srcdir)/m4/lcmessage.m4 $(top_srcdir)/m4/lib-ld.m4 \
- $(top_srcdir)/m4/lib-link.m4 $(top_srcdir)/m4/lib-prefix.m4 \
- $(top_srcdir)/m4/longdouble.m4 $(top_srcdir)/m4/longlong.m4 \
+ $(top_srcdir)/m4/gettext.m4 $(top_srcdir)/m4/iconv.m4 \
+ $(top_srcdir)/m4/intmax_t.m4 $(top_srcdir)/m4/inttypes_h.m4 \
+ $(top_srcdir)/m4/lib-ld.m4 $(top_srcdir)/m4/lib-link.m4 \
+ $(top_srcdir)/m4/lib-prefix.m4 $(top_srcdir)/m4/longlong.m4 \
$(top_srcdir)/m4/nls.m4 $(top_srcdir)/m4/po.m4 \
- $(top_srcdir)/m4/printf-posix.m4 $(top_srcdir)/m4/progtest.m4 \
- $(top_srcdir)/m4/signed.m4 $(top_srcdir)/m4/size_max.m4 \
- $(top_srcdir)/m4/socket.m4 $(top_srcdir)/m4/stdint_h.m4 \
- $(top_srcdir)/m4/strtod.m4 $(top_srcdir)/m4/uintmax_t.m4 \
- $(top_srcdir)/m4/ulonglong.m4 $(top_srcdir)/m4/wchar_t.m4 \
- $(top_srcdir)/m4/wint_t.m4 $(top_srcdir)/m4/xsize.m4 \
+ $(top_srcdir)/m4/progtest.m4 $(top_srcdir)/m4/socket.m4 \
+ $(top_srcdir)/m4/stdint_h.m4 $(top_srcdir)/m4/strtod.m4 \
+ $(top_srcdir)/m4/uintmax_t.m4 $(top_srcdir)/m4/ulonglong.m4 \
$(top_srcdir)/configure.ac
am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
$(ACLOCAL_M4)
@@ -94,7 +86,7 @@ am__CONFIG_DISTCLEAN_FILES = config.status config.cache config.log \
configure.lineno configure.status.lineno
mkinstalldirs = $(SHELL) $(top_srcdir)/mkinstalldirs
CONFIG_HEADER = config.h
-CONFIG_CLEAN_FILES = intl/Makefile version.c
+CONFIG_CLEAN_FILES = version.c
am__installdirs = "$(DESTDIR)$(bindir)"
binPROGRAMS_INSTALL = $(INSTALL_PROGRAM)
PROGRAMS = $(bin_PROGRAMS)
@@ -109,27 +101,16 @@ am_gawk_OBJECTS = $(am__objects_1) eval$U.$(OBJEXT) \
profile$U.$(OBJEXT)
gawk_OBJECTS = $(am_gawk_OBJECTS)
gawk_LDADD = $(LDADD)
-gawk_DEPENDENCIES =
+am__DEPENDENCIES_1 =
+gawk_DEPENDENCIES = $(am__DEPENDENCIES_1) $(am__DEPENDENCIES_1)
am_pgawk_OBJECTS = $(am__objects_1) eval_p$U.$(OBJEXT) \
profile_p$U.$(OBJEXT)
pgawk_OBJECTS = $(am_pgawk_OBJECTS)
pgawk_LDADD = $(LDADD)
-pgawk_DEPENDENCIES =
+pgawk_DEPENDENCIES = $(am__DEPENDENCIES_1) $(am__DEPENDENCIES_1)
DEFAULT_INCLUDES = -I. -I$(srcdir) -I.
depcomp = $(SHELL) $(top_srcdir)/depcomp
am__depfiles_maybe = depfiles
-@AMDEP_TRUE@DEP_FILES = ./$(DEPDIR)/array$U.Po \
-@AMDEP_TRUE@ ./$(DEPDIR)/awkgram$U.Po ./$(DEPDIR)/builtin$U.Po \
-@AMDEP_TRUE@ ./$(DEPDIR)/dfa$U.Po ./$(DEPDIR)/eval$U.Po \
-@AMDEP_TRUE@ ./$(DEPDIR)/eval_p$U.Po ./$(DEPDIR)/ext$U.Po \
-@AMDEP_TRUE@ ./$(DEPDIR)/field$U.Po ./$(DEPDIR)/gawkmisc$U.Po \
-@AMDEP_TRUE@ ./$(DEPDIR)/getopt$U.Po ./$(DEPDIR)/getopt1$U.Po \
-@AMDEP_TRUE@ ./$(DEPDIR)/io$U.Po ./$(DEPDIR)/main$U.Po \
-@AMDEP_TRUE@ ./$(DEPDIR)/msg$U.Po ./$(DEPDIR)/node$U.Po \
-@AMDEP_TRUE@ ./$(DEPDIR)/profile$U.Po \
-@AMDEP_TRUE@ ./$(DEPDIR)/profile_p$U.Po ./$(DEPDIR)/random$U.Po \
-@AMDEP_TRUE@ ./$(DEPDIR)/re$U.Po ./$(DEPDIR)/regex$U.Po \
-@AMDEP_TRUE@ ./$(DEPDIR)/replace$U.Po ./$(DEPDIR)/version$U.Po
COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \
$(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS)
CCLD = $(CC)
@@ -158,8 +139,10 @@ DIST_ARCHIVES = $(distdir).tar.gz $(distdir).tar.bz2
GZIP_ENV = --best
distuninstallcheck_listfiles = find . -type f -print
distcleancheck_listfiles = find . -type f -print
+
+# Directory for gawk's data files. Automake supplies datadir.
+pkgdatadir = $(datadir)/awk
ACLOCAL = @ACLOCAL@
-ALLOCA = @ALLOCA@
AMDEP_FALSE = @AMDEP_FALSE@
AMDEP_TRUE = @AMDEP_TRUE@
AMTAR = @AMTAR@
@@ -167,15 +150,12 @@ AUTOCONF = @AUTOCONF@
AUTOHEADER = @AUTOHEADER@
AUTOMAKE = @AUTOMAKE@
AWK = @AWK@
-BUILD_INCLUDED_LIBINTL = @BUILD_INCLUDED_LIBINTL@
-CATOBJEXT = @CATOBJEXT@
CC = @CC@
CCDEPMODE = @CCDEPMODE@
CFLAGS = @CFLAGS@
CPP = @CPP@
CPPFLAGS = @CPPFLAGS@
CYGPATH_W = @CYGPATH_W@
-DATADIRNAME = @DATADIRNAME@
DEFS = -DDEFPATH=$(DEFPATH) -DHAVE_CONFIG_H -DGAWK -DLOCALEDIR="\"$(datadir)/locale\""
DEPDIR = @DEPDIR@
ECHO_C = @ECHO_C@
@@ -183,22 +163,13 @@ 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@
+INTL_MACOSX_LIBS = @INTL_MACOSX_LIBS@
LDFLAGS = @LDFLAGS@
LIBICONV = @LIBICONV@
LIBINTL = @LIBINTL@
@@ -227,7 +198,6 @@ SHELL = @SHELL@
SOCKET_LIBS = @SOCKET_LIBS@
STRIP = @STRIP@
U = @U@
-USE_INCLUDED_LIBINTL = @USE_INCLUDED_LIBINTL@
USE_NLS = @USE_NLS@
VERSION = @VERSION@
XGETTEXT = @XGETTEXT@
@@ -240,14 +210,14 @@ am__fastdepCC_TRUE = @am__fastdepCC_TRUE@
am__include = @am__include@
am__leading_dot = @am__leading_dot@
am__quote = @am__quote@
+am__tar = @am__tar@
+am__untar = @am__untar@
bindir = @bindir@
build = @build@
build_alias = @build_alias@
build_cpu = @build_cpu@
build_os = @build_os@
build_vendor = @build_vendor@
-
-# Set autoconf Makefile.in variables correctly
datadir = @datadir@
exec_prefix = @exec_prefix@
host = @host@
@@ -259,7 +229,7 @@ includedir = @includedir@
infodir = @infodir@
install_sh = @install_sh@
libdir = @libdir@
-libexecdir = @libexecdir@/awk
+libexecdir = @libexecdir@
localstatedir = @localstatedir@
mandir = @mandir@
mkdir_p = @mkdir_p@
@@ -292,7 +262,7 @@ EXTRA_DIST = \
POSIX.STD \
PROBLEMS \
README_d \
- bisonfix.sed \
+ bisonfix.awk \
config.guess \
config.rpath \
config.sub \
@@ -308,16 +278,15 @@ EXTRA_DIST = \
regex_internal.h \
regexec.c \
unsupported \
+ version.in \
vms \
ylwrap
# The order to do things in.
-# Build in intl first in case we need the local gettext version.
-# Build explicitly "." next in order to build gawk first, so
+# Build explicitly in "." in order to build gawk first, so
# that `make check' without a prior `make' works.
SUBDIRS = \
- intl \
. \
awklib \
doc \
@@ -340,7 +309,9 @@ base_sources = \
getopt.c \
getopt.h \
getopt1.c \
+ getopt_int.h \
gettext.h \
+ hard-locale.h \
io.c \
mbsupport.h \
main.c \
@@ -353,22 +324,21 @@ base_sources = \
regex.c \
regex.h \
replace.c \
- version.in \
version.c
gawk_SOURCES = $(base_sources) eval.c profile.c
pgawk_SOURCES = $(base_sources) eval_p.c profile_p.c
-# Get extra libs as needed
-LDADD = @LIBINTL@ @SOCKET_LIBS@
-awkdatadir = @datadir@/awk
+# Get extra libs as needed, Automake will supply LIBINTL and SOCKET_LIBS.
+LDADD = $(LIBINTL) $(SOCKET_LIBS)
# stuff for compiling gawk/pgawk
-DEFPATH = "\".$(PATH_SEPARATOR)$(awkdatadir)\""
-AM_CPPFLAGS = -Iintl
+DEFPATH = "\".$(PATH_SEPARATOR)$(pkgdatadir)\""
+AM_CPPFLAGS =
# Get rid of core files when cleaning
CLEANFILES = core core.*
+MAINTAINERCLEANFILES = version.c awkgram.c
# We want hard links for install-exec-hook, below
LN = ln
@@ -428,8 +398,6 @@ $(srcdir)/configh.in: $(am__configure_deps)
distclean-hdr:
-rm -f config.h stamp-h1
-intl/Makefile: $(top_builddir)/config.status $(top_srcdir)/intl/Makefile.in
- cd $(top_builddir) && $(SHELL) ./config.status $@
version.c: $(top_builddir)/config.status $(srcdir)/version.in
cd $(top_builddir) && $(SHELL) ./config.status $@
install-binPROGRAMS: $(bin_PROGRAMS)
@@ -504,16 +472,14 @@ mostlyclean-kr:
@am__fastdepCC_TRUE@ if $(COMPILE) -MT $@ -MD -MP -MF "$(DEPDIR)/$*.Tpo" -c -o $@ $<; \
@am__fastdepCC_TRUE@ then mv -f "$(DEPDIR)/$*.Tpo" "$(DEPDIR)/$*.Po"; else rm -f "$(DEPDIR)/$*.Tpo"; exit 1; fi
@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
-@AMDEP_TRUE@@am__fastdepCC_FALSE@ depfile='$(DEPDIR)/$*.Po' tmpdepfile='$(DEPDIR)/$*.TPo' @AMDEPBACKSLASH@
-@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
@am__fastdepCC_FALSE@ $(COMPILE) -c $<
.c.obj:
@am__fastdepCC_TRUE@ if $(COMPILE) -MT $@ -MD -MP -MF "$(DEPDIR)/$*.Tpo" -c -o $@ `$(CYGPATH_W) '$<'`; \
@am__fastdepCC_TRUE@ then mv -f "$(DEPDIR)/$*.Tpo" "$(DEPDIR)/$*.Po"; else rm -f "$(DEPDIR)/$*.Tpo"; exit 1; fi
@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
-@AMDEP_TRUE@@am__fastdepCC_FALSE@ depfile='$(DEPDIR)/$*.Po' tmpdepfile='$(DEPDIR)/$*.TPo' @AMDEPBACKSLASH@
-@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
@am__fastdepCC_FALSE@ $(COMPILE) -c `$(CYGPATH_W) '$<'`
array_.c: array.c $(ANSI2KNR)
$(CPP) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) `if test -f $(srcdir)/array.c; then echo $(srcdir)/array.c; else echo array.c; fi` | sed 's/^# \([0-9]\)/#line \1/' | $(ANSI2KNR) > $@ || rm -f $@
@@ -577,7 +543,13 @@ uninstall-info-am:
# (which will cause the Makefiles to be regenerated when you run `make');
# (2) otherwise, pass the desired values on the `make' command line.
$(RECURSIVE_TARGETS):
- @set fnord $$MAKEFLAGS; amf=$$2; \
+ @failcom='exit 1'; \
+ for f in x $$MAKEFLAGS; do \
+ case $$f in \
+ *=* | --[!k]*);; \
+ *k*) failcom='fail=yes';; \
+ esac; \
+ done; \
dot_seen=no; \
target=`echo $@ | sed s/-recursive//`; \
list='$(SUBDIRS)'; for subdir in $$list; do \
@@ -589,7 +561,7 @@ $(RECURSIVE_TARGETS):
local_target="$$target"; \
fi; \
(cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \
- || case "$$amf" in *=*) exit 1;; *k*) fail=yes;; *) exit 1;; esac; \
+ || eval $$failcom; \
done; \
if test "$$dot_seen" = "no"; then \
$(MAKE) $(AM_MAKEFLAGS) "$$target-am" || exit 1; \
@@ -597,7 +569,13 @@ $(RECURSIVE_TARGETS):
mostlyclean-recursive clean-recursive distclean-recursive \
maintainer-clean-recursive:
- @set fnord $$MAKEFLAGS; amf=$$2; \
+ @failcom='exit 1'; \
+ for f in x $$MAKEFLAGS; do \
+ case $$f in \
+ *=* | --[!k]*);; \
+ *k*) failcom='fail=yes';; \
+ esac; \
+ done; \
dot_seen=no; \
case "$@" in \
distclean-* | maintainer-clean-*) list='$(DIST_SUBDIRS)' ;; \
@@ -618,7 +596,7 @@ maintainer-clean-recursive:
local_target="$$target"; \
fi; \
(cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \
- || case "$$amf" in *=*) exit 1;; *k*) fail=yes;; *) exit 1;; esac; \
+ || eval $$failcom; \
done && test -z "$$fail"
tags-recursive:
list='$(SUBDIRS)'; for subdir in $$list; do \
@@ -693,7 +671,7 @@ distclean-tags:
distdir: $(DISTFILES)
$(am__remove_distdir)
mkdir $(distdir)
- $(mkdir_p) $(distdir)/. $(distdir)/intl $(distdir)/m4 $(distdir)/po
+ $(mkdir_p) $(distdir)/. $(distdir)/m4 $(distdir)/po
@srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; \
topsrcdirstrip=`echo "$(top_srcdir)" | sed 's|.|.|g'`; \
list='$(DISTFILES)'; for file in $$list; do \
@@ -720,15 +698,17 @@ distdir: $(DISTFILES)
|| exit 1; \
fi; \
done
- list='$(SUBDIRS)'; for subdir in $$list; do \
+ list='$(DIST_SUBDIRS)'; for subdir in $$list; do \
if test "$$subdir" = .; then :; else \
test -d "$(distdir)/$$subdir" \
- || mkdir "$(distdir)/$$subdir" \
+ || $(mkdir_p) "$(distdir)/$$subdir" \
|| exit 1; \
+ distdir=`$(am__cd) $(distdir) && pwd`; \
+ top_distdir=`$(am__cd) $(top_distdir) && pwd`; \
(cd $$subdir && \
$(MAKE) $(AM_MAKEFLAGS) \
- top_distdir="../$(top_distdir)" \
- distdir="../$(distdir)/$$subdir" \
+ top_distdir="$$top_distdir" \
+ distdir="$$distdir/$$subdir" \
distdir) \
|| exit 1; \
fi; \
@@ -742,14 +722,14 @@ distdir: $(DISTFILES)
! -type d ! -perm -444 -exec $(SHELL) $(install_sh) -c -m a+r {} {} \; \
|| chmod -R a+r $(distdir)
dist-gzip: distdir
- $(AMTAR) chof - $(distdir) | GZIP=$(GZIP_ENV) gzip -c >$(distdir).tar.gz
+ tardir=$(distdir) && $(am__tar) | GZIP=$(GZIP_ENV) gzip -c >$(distdir).tar.gz
$(am__remove_distdir)
dist-bzip2: distdir
- $(AMTAR) chof - $(distdir) | bzip2 -9 -c >$(distdir).tar.bz2
+ tardir=$(distdir) && $(am__tar) | bzip2 -9 -c >$(distdir).tar.bz2
$(am__remove_distdir)
dist-tarZ: distdir
- $(AMTAR) chof - $(distdir) | compress -c >$(distdir).tar.Z
+ tardir=$(distdir) && $(am__tar) | compress -c >$(distdir).tar.Z
$(am__remove_distdir)
dist-shar: distdir
@@ -762,8 +742,8 @@ dist-zip: distdir
$(am__remove_distdir)
dist dist-all: distdir
- $(AMTAR) chof - $(distdir) | GZIP=$(GZIP_ENV) gzip -c >$(distdir).tar.gz
- $(AMTAR) chof - $(distdir) | bzip2 -9 -c >$(distdir).tar.bz2
+ tardir=$(distdir) && $(am__tar) | GZIP=$(GZIP_ENV) gzip -c >$(distdir).tar.gz
+ tardir=$(distdir) && $(am__tar) | bzip2 -9 -c >$(distdir).tar.bz2
$(am__remove_distdir)
# This target untars the dist file and tries a VPATH configuration. Then
@@ -772,11 +752,11 @@ dist dist-all: distdir
distcheck: dist
case '$(DIST_ARCHIVES)' in \
*.tar.gz*) \
- GZIP=$(GZIP_ENV) gunzip -c $(distdir).tar.gz | $(AMTAR) xf - ;;\
+ GZIP=$(GZIP_ENV) gunzip -c $(distdir).tar.gz | $(am__untar) ;;\
*.tar.bz2*) \
- bunzip2 -c $(distdir).tar.bz2 | $(AMTAR) xf - ;;\
+ bunzip2 -c $(distdir).tar.bz2 | $(am__untar) ;;\
*.tar.Z*) \
- uncompress -c $(distdir).tar.Z | $(AMTAR) xf - ;;\
+ uncompress -c $(distdir).tar.Z | $(am__untar) ;;\
*.shar.gz*) \
GZIP=$(GZIP_ENV) gunzip -c $(distdir).shar.gz | unshar ;;\
*.zip*) \
@@ -790,7 +770,6 @@ distcheck: dist
&& dc_destdir="$${TMPDIR-/tmp}/am-dc-$$$$/" \
&& cd $(distdir)/_build \
&& ../configure --srcdir=.. --prefix="$$dc_install_base" \
- --with-included-gettext \
$(DISTCHECK_CONFIGURE_FLAGS) \
&& $(MAKE) $(AM_MAKEFLAGS) \
&& $(MAKE) $(AM_MAKEFLAGS) dvi \
@@ -863,12 +842,13 @@ clean-generic:
-test -z "$(CLEANFILES)" || rm -f $(CLEANFILES)
distclean-generic:
- -rm -f $(CONFIG_CLEAN_FILES)
+ -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES)
maintainer-clean-generic:
@echo "This command is intended for maintainers to use"
@echo "it deletes files that may require special tools to rebuild."
-rm -f awkgram.c
+ -test -z "$(MAINTAINERCLEANFILES)" || rm -f $(MAINTAINERCLEANFILES)
clean: clean-recursive
clean-am: clean-binPROGRAMS clean-generic clean-krextra mostlyclean-am
@@ -928,19 +908,20 @@ uninstall-info: uninstall-info-recursive
.PHONY: $(RECURSIVE_TARGETS) CTAGS GTAGS all all-am am--refresh check \
check-am check-local clean clean-binPROGRAMS clean-generic \
clean-krextra clean-recursive ctags ctags-recursive dist \
- dist-all dist-bzip2 dist-gzip dist-shar dist-tarZ dist-zip \
- distcheck distclean distclean-compile distclean-generic \
- distclean-hdr distclean-recursive distclean-tags \
- distcleancheck distdir distuninstallcheck dvi dvi-am html \
- html-am info info-am install install-am install-binPROGRAMS \
- install-data install-data-am install-exec install-exec-am \
- install-info install-info-am install-man install-strip \
- installcheck installcheck-am installdirs installdirs-am \
- maintainer-clean maintainer-clean-generic \
- maintainer-clean-recursive mostlyclean mostlyclean-compile \
- mostlyclean-generic mostlyclean-kr mostlyclean-recursive pdf \
- pdf-am ps ps-am tags tags-recursive uninstall uninstall-am \
- uninstall-binPROGRAMS uninstall-info-am
+ dist-all dist-bzip2 dist-gzip dist-hook dist-shar dist-tarZ \
+ dist-zip distcheck distclean distclean-compile \
+ distclean-generic distclean-hdr distclean-recursive \
+ distclean-tags distcleancheck distdir distuninstallcheck dvi \
+ dvi-am html html-am info info-am install install-am \
+ install-binPROGRAMS install-data install-data-am install-exec \
+ install-exec-am install-exec-hook install-info install-info-am \
+ install-man install-strip installcheck installcheck-am \
+ installdirs installdirs-am maintainer-clean \
+ maintainer-clean-generic maintainer-clean-recursive \
+ mostlyclean mostlyclean-compile mostlyclean-generic \
+ mostlyclean-kr mostlyclean-recursive pdf pdf-am ps ps-am tags \
+ tags-recursive uninstall uninstall-am uninstall-binPROGRAMS \
+ uninstall-info-am
.c.i:
$(COMPILE) -E $< > $@
@@ -977,7 +958,8 @@ dist-hook:
# Special rules for individual files
awkgram.c: awkgram.y
- $(YACC) $(AM_YFLAGS) $(YFLAGS) $< && sed -f $(srcdir)/bisonfix.sed < y.tab.c > $*.c && $(RM) y.tab.c
+ $(YACC) $(AM_YFLAGS) $(YFLAGS) $<
+ awk -f $(srcdir)/bisonfix.awk y.tab.c > $*.c && rm y.tab.c
if test -f y.tab.h; then \
if cmp -s y.tab.h $*.h; then rm -f y.tab.h; else mv y.tab.h $*.h; fi; \
else :; fi
diff --git a/NEWS b/NEWS
index 889c8e20..673a9cce 100644
--- a/NEWS
+++ b/NEWS
@@ -1,3 +1,61 @@
+Changes from 3.1.4 to 3.1.5
+---------------------------
+
+1. The random() suite has been updated to a current FreeBSD version, which
+ works on systems with > 32-bit ints.
+
+2. A new option, `--exec' has been added. It's like -f but ends option
+ processing. It also disables `x=y' variable assignments, but not -v.
+ It's needed mainly for CGI scripts, so that source code can't be
+ passed in as part of the URL.
+
+3. dfa.[ch] have been synced with GNU grep development. This also fixes
+ multiple regex matching problems in multibyte locales.
+
+4. Updated to Automake 1.9.5.
+
+5. Updated to Bison 2.0.
+
+6. The getopt* and regex* files were synchronized with current GLIBC CVS.
+ See the ChangeLog for the versions and minor edits made.
+
+7. `configure --disable-nls' now disables just gawk's own translations.
+ Gawk continues to work with the locale's numeric formatting. This
+ includes a bug fix in handling the printf ' flag (e.g., %'d).
+
+8. Gawk is now multibyte aware. This means that index(), length(),
+ substr() and match() all work in terms of characters, not bytes.
+
+9. Gawk is now smarter about parsing numeric constants in corner cases.
+
+11. Not closing open redirections no longer causes gawk to exit non-zero.
+
+10. The VMS port has been updated.
+
+11. Changes from Andrew Schorr at the xmlgawk project to provide for
+ open hooks from extensions are now included. This will let the
+ xmlgawk extension work in the standard gawk.
+
+12. Updated to gettext 0.14.4. Gawk no longer includes its own copy
+ of the gettext `intl' library, following current GNU practice to
+ rely on there being an external version thereof.
+
+13. A regexp of the form `//' will now generate a warning that it
+ is not a C++ comment from --lint (awk.y).
+
+14. The ^ and ^= operators with an integer exponent now use Exponentiation
+ by Squaring. This simultaneously fixes a problem with ^= and a negative
+ integer exponent.
+
+15. length(array) now returns the number of elements in the array. This is
+ is a non-standard extension that will fail in POSIX mode.
+
+16. Carriage return characters are now ignored in program source code.
+
+17. Four new translations added.
+
+18. Various minor bugs fixed. See the ChangeLog for the details.
+
Changes from 3.1.3 to 3.1.4
---------------------------
@@ -221,7 +279,7 @@ Changes from 3.1.0 to 3.1.1
1. Six new translations.
-2. Having more than 4 different value for OFMT and/or CONVFMT now works.
+2. Having more than 4 different values for OFMT and/or CONVFMT now works.
3. The handling of dynamic regexes is now more more sane, esp. w.r.t.
the profiling code. The profiling code has been fixed in several
diff --git a/README b/README
index 607fef14..84e515a4 100644
--- a/README
+++ b/README
@@ -1,6 +1,6 @@
README:
-This is GNU Awk 3.1.4. It is upwardly compatible with the Bell Labs
+This is GNU Awk 3.1.5. It is upwardly compatible with the Bell Labs
research version of awk. It is almost completely compliant with the
1993 POSIX 1003.2 standard for awk. (See the note below about POSIX.)
@@ -92,7 +92,7 @@ MS-Windows:
juan@biophnet.unlp.edu.ar
OS/2:
- gawk-maintainer@unixos2.org
+ andreas.buening@@nexgo.de
Tandem:
Stephen Davies
diff --git a/README_d/README.cygwin-dynamic b/README_d/README.cygwin-dynamic
new file mode 100644
index 00000000..948538fd
--- /dev/null
+++ b/README_d/README.cygwin-dynamic
@@ -0,0 +1,88 @@
+From: courierdavid@hotmail.com
+Newsgroups: comp.lang.awk
+Subject: Re: Compiling gawk extensions under Cygwin
+Date: 14 Mar 2005 20:47:09 -0800
+Organization: http://groups.google.com
+Lines: 67
+Message-ID: <1110862029.175727.109280@o13g2000cwo.googlegroups.com>
+References: <1e4e8dbe.0501140813.18248833@posting.google.com>
+ <u62nb2-pro.ln1@news.heiming.de>
+NNTP-Posting-Host: 194.237.142.24
+Mime-Version: 1.0
+Content-Type: text/plain; charset="iso-8859-1"
+X-Trace: posting.google.com 1110862033 8921 127.0.0.1 (15 Mar 2005 04:47:13 GMT)
+X-Complaints-To: groups-abuse@google.com
+NNTP-Posting-Date: Tue, 15 Mar 2005 04:47:13 +0000 (UTC)
+User-Agent: G2/0.2
+Complaints-To: groups-abuse@google.com
+Injection-Info: o13g2000cwo.googlegroups.com; posting-host=194.237.142.24;
+ posting-account=Iz4C5wwAAABx1yG_ft8eEAI99Wu1Tku1
+Path: news.012.net.il!seanews2.seabone.net!newsfeed.albacom.net!news.mailgate.org!newsfeed.stueberl.de!proxad.net!64.233.160.134.MISMATCH!postnews.google.com!o13g2000cwo.googlegroups.com!not-for-mail
+Xref: news.012.net.il comp.lang.awk:21835
+
+Thanks for your help there Michael. I wouldn't have thought of that one
+myself without your help :-)
+
+Anyway - for those who must stick with Cygwin here's a method that
+works using the mingw32 makefiles and some modifications:
+
+Basically you need to extract all exportable symbol names from the
+gawk.exe file into a text file and then create a dummy library file
+which we can link against on Cygwin. You then throw the library file
+away because in reality we use the gawk.exe file as the provider of
+those functions.
+
+1. First grab the gawk source, e.g. gawk-3.1.4.tar.bz2 and decompress
+it.
+2. Move to the gawk-3.1.4 directory you just created.
+3. cp pc/* . (copy the pc directory into the main one)
+4. edit makefile - uncomment lines "DYN_FLAGS", "DYN_EXP", "DYN_OBJ"
+and "DYN_MAKEXP=$(DMEmingw32)
+5. make mingw32 (make a gawk.exe)
+6. run "gcc -o gawk.exe array.o builtin.o eval.o field.o gawkmisc.o
+io.o main.o ext.o msg.o node.o profile.o re.o version.o dlfcn.o
+gawk.exp awkgram.o getid.o popen.o getopt.o getopt1.o dfa.o regex.o
+random.o" (i.e. remove the -s from the compile command from the
+makefile so the symbols are left in gawk.exe)
+
+now export all symbols from gawk.exe into foo.def so that we can put
+these in our library
+7. echo EXPORTS > foo.def
+8. nm gawk.exe | grep -E ' [TBD] _' | sed 's/.* [TBD] _//' >> foo.def
+9. cp foo.def gawkw32.def
+
+build the new library with all symbols included
+10. make mingw32
+
+Now you will see a file "libgawk.a" which you can link against to
+create extensions. For example to build an extension called "file" run:
+
+gcc -shared -dll -DHAVE_CONFIG_H -I . extension/file.c -o file.dll -L .
+-lgawk
+
+Then you can load it in gawk using the expression:
+
+extension("./file.dll", "dlload");
+
+You must use the gawk you compiled from source though. It won't work
+with any other gawk unfortunately :-( But that's OK because the
+stripped gawk is not too big in size.
+
+Cheers,
+Dave.
+
+Michael Heiming wrote:
+> In comp.lang.awk David Smith <courierdavid@hotmail.com>:
+> > Has anyone managed to compile gawk extensions (such as "filefuncs")
+> > under Cygwin?
+>
+> Solution is pretty simple, install a real OS, Linux/*BSD or any
+> other unix and this and further problems won't happen.
+>
+> Good luck
+>
+> --
+> Michael Heiming (X-PGP-Sig > GPG-Key ID: EDD27B94)
+> mail: echo zvpunry@urvzvat.qr | perl -pe 'y/a-z/n-za-m/'
+> #bofh excuse 242: Software uses US measurements, but the OS
+> is in metric...
diff --git a/README_d/README.macos b/README_d/README.macos
index 9c84b880..46a68621 100644
--- a/README_d/README.macos
+++ b/README_d/README.macos
@@ -1,3 +1,17 @@
+Mon Jul 4 09:55:22 IDT 2005
+============================
+
+If you use GCC 4.0 under Mac OS X to compile gawk with optimization,
+AND multibyte support is *disabled*, the `ignrcas2' test fails. This is
+a compiler bug. Either compile it without optimization, or use gcc-3.3.
+
+All the other tests pass.
+
+Happily, the default is for the multibyte support to be enabled, so all
+the tests pass by defualt.
+
+The notes below no longer seem to apply.
+
Sun Dec 3 18:11:09 IST 2000
============================
diff --git a/README_d/README.multibyte b/README_d/README.multibyte
index 6bc973a6..135ba86f 100644
--- a/README_d/README.multibyte
+++ b/README_d/README.multibyte
@@ -1,3 +1,10 @@
+Fri Jun 3 12:20:17 IDT 2005
+============================
+
+As noted in the NEWS file, as of 3.1.5, gawk uses character values instead
+of byte values for `index', `length', `substr' and `match'. This works
+in multibyte and unicode locales.
+
Wed Jun 18 16:47:31 IDT 2003
============================
diff --git a/aclocal.m4 b/aclocal.m4
index 4bac0681..5e4b23e8 100644
--- a/aclocal.m4
+++ b/aclocal.m4
@@ -1,7 +1,7 @@
-# generated automatically by aclocal 1.8.5 -*- Autoconf -*-
+# generated automatically by aclocal 1.9.5 -*- Autoconf -*-
-# Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004
-# Free Software Foundation, Inc.
+# Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004,
+# 2005 Free Software Foundation, Inc.
# This file 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.
@@ -11,55 +11,32 @@
# even the implied warranty of MERCHANTABILITY or FITNESS FOR A
# PARTICULAR PURPOSE.
-# -*- Autoconf -*-
-# Copyright (C) 2002, 2003 Free Software Foundation, Inc.
-# Generated from amversion.in; do not edit by hand.
-
-# 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
+# Copyright (C) 2002, 2003, 2005 Free Software Foundation, Inc.
+#
+# This file 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.
# AM_AUTOMAKE_VERSION(VERSION)
# ----------------------------
# Automake X.Y traces this macro to ensure aclocal.m4 has been
# generated from the m4 files accompanying Automake X.Y.
-AC_DEFUN([AM_AUTOMAKE_VERSION], [am__api_version="1.8"])
+AC_DEFUN([AM_AUTOMAKE_VERSION], [am__api_version="1.9"])
# AM_SET_CURRENT_AUTOMAKE_VERSION
# -------------------------------
# Call AM_AUTOMAKE_VERSION so it can be traced.
# This function is AC_REQUIREd by AC_INIT_AUTOMAKE.
AC_DEFUN([AM_SET_CURRENT_AUTOMAKE_VERSION],
- [AM_AUTOMAKE_VERSION([1.8.5])])
+ [AM_AUTOMAKE_VERSION([1.9.5])])
-# AM_AUX_DIR_EXPAND
+# AM_AUX_DIR_EXPAND -*- Autoconf -*-
-# Copyright (C) 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)
-# 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.
+# Copyright (C) 2001, 2003, 2005 Free Software Foundation, Inc.
+#
+# This file 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.
# For projects using AC_CONFIG_AUX_DIR([foo]), Autoconf sets
# $ac_aux_dir to `$srcdir/foo'. In other projects, it is set to
@@ -107,25 +84,14 @@ am_aux_dir=`cd $ac_aux_dir && pwd`
])
-# Copyright (C) 1996, 1997, 1999, 2000, 2001, 2002, 2003
+# Copyright (C) 1996, 1997, 1999, 2000, 2001, 2002, 2003, 2005
# Free Software Foundation, Inc.
+#
+# This file 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.
-# 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.
-
-# serial 3
+# serial 4
# This was merged into AC_PROG_CC in Autoconf.
@@ -140,26 +106,16 @@ am_cv_prog_cc_stdc=$ac_cv_prog_cc_stdc
])
AU_DEFUN([fp_PROG_CC_STDC])
-# AM_CONDITIONAL -*- Autoconf -*-
-
-# Copyright (C) 1997, 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)
-# 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.
+# AM_CONDITIONAL -*- Autoconf -*-
-# 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.
+# Copyright (C) 1997, 2000, 2001, 2003, 2004, 2005
+# Free Software Foundation, Inc.
+#
+# This file 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.
-# serial 6
+# serial 7
# AM_CONDITIONAL(NAME, SHELL-CONDITION)
# -------------------------------------
@@ -179,30 +135,19 @@ else
fi
AC_CONFIG_COMMANDS_PRE(
[if test -z "${$1_TRUE}" && test -z "${$1_FALSE}"; then
- AC_MSG_ERROR([conditional "$1" was never defined.
-Usually this means the macro was only invoked conditionally.])
+ AC_MSG_ERROR([[conditional "$1" was never defined.
+Usually this means the macro was only invoked conditionally.]])
fi])])
-# serial 7 -*- Autoconf -*-
-# Copyright (C) 1999, 2000, 2001, 2002, 2003, 2004
+# Copyright (C) 1999, 2000, 2001, 2002, 2003, 2004, 2005
# Free Software Foundation, Inc.
+#
+# This file 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.
-# 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.
-
+# serial 8
# There are a few dirty hacks below to avoid letting `AC_PROG_CC' be
# written in clear, in which case automake, when reading aclocal.m4,
@@ -211,7 +156,6 @@ fi])])
# CC etc. in the Makefile, will ask for an AC_PROG_CC use...
-
# _AM_DEPENDENCIES(NAME)
# ----------------------
# See how the compiler implements dependency checking.
@@ -351,26 +295,16 @@ AM_CONDITIONAL([AMDEP], [test "x$enable_dependency_tracking" != xno])
AC_SUBST([AMDEPBACKSLASH])
])
-# Generate code to set up dependency tracking. -*- Autoconf -*-
-
-# Copyright (C) 1999, 2000, 2001, 2002, 2003, 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)
-# any later version.
+# Generate code to set up dependency tracking. -*- Autoconf -*-
-# 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.
+# Copyright (C) 1999, 2000, 2001, 2002, 2003, 2004, 2005
+# Free Software Foundation, Inc.
+#
+# This file 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.
-#serial 2
+#serial 3
# _AM_OUTPUT_DEPENDENCY_COMMANDS
# ------------------------------
@@ -389,27 +323,21 @@ AC_DEFUN([_AM_OUTPUT_DEPENDENCY_COMMANDS],
else
continue
fi
- grep '^DEP_FILES *= *[[^ @%:@]]' < "$mf" > /dev/null || continue
- # Extract the definition of DEP_FILES from the Makefile without
- # running `make'.
+ # Extract the definition of DEPDIR, am__include, and am__quote
+ # from the Makefile without running `make'.
DEPDIR=`sed -n 's/^DEPDIR = //p' < "$mf"`
test -z "$DEPDIR" && continue
+ am__include=`sed -n 's/^am__include = //p' < "$mf"`
+ test -z "am__include" && continue
+ am__quote=`sed -n 's/^am__quote = //p' < "$mf"`
# When using ansi2knr, U may be empty or an underscore; expand it
U=`sed -n 's/^U = //p' < "$mf"`
- test -d "$dirpart/$DEPDIR" || mkdir "$dirpart/$DEPDIR"
- # We invoke sed twice because it is the simplest approach to
- # changing $(DEPDIR) to its actual value in the expansion.
- for file in `sed -n '
- /^DEP_FILES = .*\\\\$/ {
- s/^DEP_FILES = //
- :loop
- s/\\\\$//
- p
- n
- /\\\\$/ b loop
- p
- }
- /^DEP_FILES = / s/^DEP_FILES = //p' < "$mf" | \
+ # Find all dependency output files, they are included files with
+ # $(DEPDIR) in their names. We invoke sed twice because it is the
+ # simplest approach to changing $(DEPDIR) to its actual value in the
+ # expansion.
+ for file in `sed -n "
+ s/^$am__include $am__quote\(.*(DEPDIR).*\)$am__quote"'$/\1/p' <"$mf" | \
sed -e 's/\$(DEPDIR)/'"$DEPDIR"'/g' -e 's/\$U/'"$U"'/g'`; do
# Make sure the directory exists.
test -f "$dirpart/$file" && continue
@@ -435,30 +363,19 @@ AC_DEFUN([AM_OUTPUT_DEPENDENCY_COMMANDS],
[AMDEP_TRUE="$AMDEP_TRUE" ac_aux_dir="$ac_aux_dir"])
])
-# Do all the work for Automake. -*- Autoconf -*-
-
-# This macro actually does too much some checks are only needed if
-# your package does certain things. But this isn't really a big deal.
+# Do all the work for Automake. -*- Autoconf -*-
-# Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003
+# Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005
# Free Software Foundation, Inc.
+#
+# This file 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.
-# 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.
+# serial 12
-# serial 11
+# This macro actually does too much. Some checks are only needed if
+# your package does certain things. But this isn't really a big deal.
# AM_INIT_AUTOMAKE(PACKAGE, VERSION, [NO-DEFINE])
# AM_INIT_AUTOMAKE([OPTIONS])
@@ -516,7 +433,6 @@ AM_MISSING_PROG(AUTOCONF, autoconf)
AM_MISSING_PROG(AUTOMAKE, automake-${am__api_version})
AM_MISSING_PROG(AUTOHEADER, autoheader)
AM_MISSING_PROG(MAKEINFO, makeinfo)
-AM_MISSING_PROG(AMTAR, tar)
AM_PROG_INSTALL_SH
AM_PROG_INSTALL_STRIP
AC_REQUIRE([AM_PROG_MKDIR_P])dnl
@@ -525,7 +441,9 @@ AC_REQUIRE([AM_PROG_MKDIR_P])dnl
AC_REQUIRE([AC_PROG_AWK])dnl
AC_REQUIRE([AC_PROG_MAKE_SET])dnl
AC_REQUIRE([AM_SET_LEADING_DOT])dnl
-
+_AM_IF_OPTION([tar-ustar], [_AM_PROG_TAR([ustar])],
+ [_AM_IF_OPTION([tar-pax], [_AM_PROG_TAR([pax])],
+ [_AM_PROG_TAR([v7])])])
_AM_IF_OPTION([no-dependencies],,
[AC_PROVIDE_IFELSE([AC_PROG_CC],
[_AM_DEPENDENCIES(CC)],
@@ -559,51 +477,27 @@ for _am_header in $config_headers :; do
done
echo "timestamp for $1" >`AS_DIRNAME([$1])`/stamp-h[]$_am_stamp_count])
+# Copyright (C) 2001, 2003, 2005 Free Software Foundation, Inc.
+#
+# This file 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.
+
# AM_PROG_INSTALL_SH
# ------------------
# Define $install_sh.
-
-# Copyright (C) 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)
-# 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.
-
AC_DEFUN([AM_PROG_INSTALL_SH],
[AC_REQUIRE([AM_AUX_DIR_EXPAND])dnl
install_sh=${install_sh-"$am_aux_dir/install-sh"}
AC_SUBST(install_sh)])
-# -*- Autoconf -*-
-# 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 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.
+# Copyright (C) 2003, 2005 Free Software Foundation, Inc.
+#
+# This file 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.
-# serial 1
+# serial 2
# Check whether the underlying file-system supports filenames
# with a leading dot. For instance MS-DOS doesn't.
@@ -618,26 +512,15 @@ fi
rmdir .tst 2>/dev/null
AC_SUBST([am__leading_dot])])
-# Check to see how 'make' treats includes. -*- Autoconf -*-
-
-# Copyright (C) 2001, 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 General Public License as published by
-# the Free Software Foundation; either version 2, or (at your option)
-# any later version.
+# Check to see how 'make' treats includes. -*- Autoconf -*-
-# 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.
+# Copyright (C) 2001, 2002, 2003, 2005 Free Software Foundation, Inc.
+#
+# This file 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.
-# serial 2
+# serial 3
# AM_MAKE_INCLUDE()
# -----------------
@@ -681,27 +564,16 @@ AC_MSG_RESULT([$_am_result])
rm -f confinc confmf
])
-# -*- Autoconf -*-
-
-
-# Copyright (C) 1997, 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)
-# any later version.
+# Fake the existence of programs that GNU maintainers use. -*- Autoconf -*-
-# 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.
+# Copyright (C) 1997, 1999, 2000, 2001, 2003, 2005
+# Free Software Foundation, Inc.
+#
+# This file 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.
-# serial 3
+# serial 4
# AM_MISSING_PROG(NAME, PROGRAM)
# ------------------------------
@@ -727,27 +599,16 @@ else
fi
])
+# Copyright (C) 2003, 2004, 2005 Free Software Foundation, Inc.
+#
+# This file 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.
+
# AM_PROG_MKDIR_P
# ---------------
# Check whether `mkdir -p' is supported, fallback to mkinstalldirs otherwise.
-
-# Copyright (C) 2003, 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)
-# 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.
-
+#
# Automake 1.8 used `mkdir -m 0755 -p --' to ensure that directories
# created by `make install' are always world readable, even if the
# installer happens to have an overly restrictive umask (e.g. 077).
@@ -768,13 +629,21 @@ fi
# this.)
AC_DEFUN([AM_PROG_MKDIR_P],
[if mkdir -p --version . >/dev/null 2>&1 && test ! -d ./--version; then
- # Keeping the `.' argument allows $(mkdir_p) to be used without
- # argument. Indeed, we sometimes output rules like
+ # We used to keeping the `.' as first argument, in order to
+ # allow $(mkdir_p) to be used without argument. As in
# $(mkdir_p) $(somedir)
- # where $(somedir) is conditionally defined.
- # (`test -n '$(somedir)' && $(mkdir_p) $(somedir)' is a more
- # expensive solution, as it forces Make to start a sub-shell.)
- mkdir_p='mkdir -p -- .'
+ # where $(somedir) is conditionally defined. However this is wrong
+ # for two reasons:
+ # 1. if the package is installed by a user who cannot write `.'
+ # make install will fail,
+ # 2. the above comment should most certainly read
+ # $(mkdir_p) $(DESTDIR)$(somedir)
+ # so it does not work when $(somedir) is undefined and
+ # $(DESTDIR) is not.
+ # To support the latter case, we have to write
+ # test -z "$(somedir)" || $(mkdir_p) $(DESTDIR)$(somedir),
+ # so the `.' trick is pointless.
+ mkdir_p='mkdir -p --'
else
# On NextStep and OpenStep, the `mkdir' command does not
# recognize any option. It will interpret all options as
@@ -793,26 +662,15 @@ else
fi
AC_SUBST([mkdir_p])])
-# Helper functions for option handling. -*- Autoconf -*-
+# Helper functions for option handling. -*- Autoconf -*-
-# Copyright (C) 2001, 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 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.
+# Copyright (C) 2001, 2002, 2003, 2005 Free Software Foundation, Inc.
+#
+# This file 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.
-# serial 2
+# serial 3
# _AM_MANGLE_OPTION(NAME)
# -----------------------
@@ -837,26 +695,14 @@ AC_DEFUN([_AM_SET_OPTIONS],
AC_DEFUN([_AM_IF_OPTION],
[m4_ifset(_AM_MANGLE_OPTION([$1]), [$2], [$3])])
-
-# Copyright (C) 1996, 1997, 1998, 2000, 2001, 2002, 2003
+# Copyright (C) 1996, 1997, 1998, 2000, 2001, 2002, 2003, 2005
# Free Software Foundation, Inc.
+#
+# This file 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.
-# 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.
-
-# serial 3
+# serial 4
AC_DEFUN([AM_C_PROTOTYPES],
[AC_REQUIRE([AC_C_PROTOTYPES])
@@ -874,28 +720,16 @@ AC_SUBST(ANSI2KNR)dnl
AU_DEFUN([fp_C_PROTOTYPES], [AM_C_PROTOTYPES])
-#
-# Check to make sure that the build environment is sane.
-#
-
-# Copyright (C) 1996, 1997, 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)
-# any later version.
+# Check to make sure that the build environment is sane. -*- Autoconf -*-
-# 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.
+# Copyright (C) 1996, 1997, 2000, 2001, 2003, 2005
+# Free Software Foundation, Inc.
+#
+# This file 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.
-# 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.
-
-# serial 3
+# serial 4
# AM_SANITY_CHECK
# ---------------
@@ -938,25 +772,14 @@ Check your system clock])
fi
AC_MSG_RESULT(yes)])
-# AM_PROG_INSTALL_STRIP
-
-# Copyright (C) 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)
-# 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.
+# Copyright (C) 2001, 2003, 2005 Free Software Foundation, Inc.
+#
+# This file 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.
+# AM_PROG_INSTALL_STRIP
+# ---------------------
# One issue with vendor `install' (even GNU) is that you can't
# specify the program used to strip binaries. This is especially
# annoying in cross-compiling environments, where the build's strip
@@ -977,34 +800,116 @@ fi
INSTALL_STRIP_PROGRAM="\${SHELL} \$(install_sh) -c -s"
AC_SUBST([INSTALL_STRIP_PROGRAM])])
+# Check how to create a tarball. -*- Autoconf -*-
+
+# Copyright (C) 2004, 2005 Free Software Foundation, Inc.
+#
+# This file 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.
+
+# serial 2
+
+# _AM_PROG_TAR(FORMAT)
+# --------------------
+# Check how to create a tarball in format FORMAT.
+# FORMAT should be one of `v7', `ustar', or `pax'.
+#
+# Substitute a variable $(am__tar) that is a command
+# writing to stdout a FORMAT-tarball containing the directory
+# $tardir.
+# tardir=directory && $(am__tar) > result.tar
+#
+# Substitute a variable $(am__untar) that extract such
+# a tarball read from stdin.
+# $(am__untar) < result.tar
+AC_DEFUN([_AM_PROG_TAR],
+[# Always define AMTAR for backward compatibility.
+AM_MISSING_PROG([AMTAR], [tar])
+m4_if([$1], [v7],
+ [am__tar='${AMTAR} chof - "$$tardir"'; am__untar='${AMTAR} xf -'],
+ [m4_case([$1], [ustar],, [pax],,
+ [m4_fatal([Unknown tar format])])
+AC_MSG_CHECKING([how to create a $1 tar archive])
+# Loop over all known methods to create a tar archive until one works.
+_am_tools='gnutar m4_if([$1], [ustar], [plaintar]) pax cpio none'
+_am_tools=${am_cv_prog_tar_$1-$_am_tools}
+# Do not fold the above two line into one, because Tru64 sh and
+# Solaris sh will not grok spaces in the rhs of `-'.
+for _am_tool in $_am_tools
+do
+ case $_am_tool in
+ gnutar)
+ for _am_tar in tar gnutar gtar;
+ do
+ AM_RUN_LOG([$_am_tar --version]) && break
+ done
+ am__tar="$_am_tar --format=m4_if([$1], [pax], [posix], [$1]) -chf - "'"$$tardir"'
+ am__tar_="$_am_tar --format=m4_if([$1], [pax], [posix], [$1]) -chf - "'"$tardir"'
+ am__untar="$_am_tar -xf -"
+ ;;
+ plaintar)
+ # Must skip GNU tar: if it does not support --format= it doesn't create
+ # ustar tarball either.
+ (tar --version) >/dev/null 2>&1 && continue
+ am__tar='tar chf - "$$tardir"'
+ am__tar_='tar chf - "$tardir"'
+ am__untar='tar xf -'
+ ;;
+ pax)
+ am__tar='pax -L -x $1 -w "$$tardir"'
+ am__tar_='pax -L -x $1 -w "$tardir"'
+ am__untar='pax -r'
+ ;;
+ cpio)
+ am__tar='find "$$tardir" -print | cpio -o -H $1 -L'
+ am__tar_='find "$tardir" -print | cpio -o -H $1 -L'
+ am__untar='cpio -i -H $1 -d'
+ ;;
+ none)
+ am__tar=false
+ am__tar_=false
+ am__untar=false
+ ;;
+ esac
+
+ # If the value was cached, stop now. We just wanted to have am__tar
+ # and am__untar set.
+ test -n "${am_cv_prog_tar_$1}" && break
+
+ # tar/untar a dummy directory, and stop if the command works
+ rm -rf conftest.dir
+ mkdir conftest.dir
+ echo GrepMe > conftest.dir/file
+ AM_RUN_LOG([tardir=conftest.dir && eval $am__tar_ >conftest.tar])
+ rm -rf conftest.dir
+ if test -s conftest.tar; then
+ AM_RUN_LOG([$am__untar <conftest.tar])
+ grep GrepMe conftest.dir/file >/dev/null 2>&1 && break
+ fi
+done
+rm -rf conftest.dir
+
+AC_CACHE_VAL([am_cv_prog_tar_$1], [am_cv_prog_tar_$1=$_am_tool])
+AC_MSG_RESULT([$am_cv_prog_tar_$1])])
+AC_SUBST([am__tar])
+AC_SUBST([am__untar])
+]) # _AM_PROG_TAR
+
m4_include([m4/arch.m4])
-m4_include([m4/codeset.m4])
m4_include([m4/gettext.m4])
-m4_include([m4/glibc21.m4])
m4_include([m4/iconv.m4])
-m4_include([m4/intdiv0.m4])
-m4_include([m4/intmax.m4])
m4_include([m4/intmax_t.m4])
-m4_include([m4/inttypes-pri.m4])
-m4_include([m4/inttypes.m4])
m4_include([m4/inttypes_h.m4])
-m4_include([m4/lcmessage.m4])
m4_include([m4/lib-ld.m4])
m4_include([m4/lib-link.m4])
m4_include([m4/lib-prefix.m4])
-m4_include([m4/longdouble.m4])
m4_include([m4/longlong.m4])
m4_include([m4/nls.m4])
m4_include([m4/po.m4])
-m4_include([m4/printf-posix.m4])
m4_include([m4/progtest.m4])
-m4_include([m4/signed.m4])
-m4_include([m4/size_max.m4])
m4_include([m4/socket.m4])
m4_include([m4/stdint_h.m4])
m4_include([m4/strtod.m4])
m4_include([m4/uintmax_t.m4])
m4_include([m4/ulonglong.m4])
-m4_include([m4/wchar_t.m4])
-m4_include([m4/wint_t.m4])
-m4_include([m4/xsize.m4])
diff --git a/array.c b/array.c
index 08d80232..012f32f4 100644
--- a/array.c
+++ b/array.c
@@ -3,7 +3,7 @@
*/
/*
- * Copyright (C) 1986, 1988, 1989, 1991-2004 the Free Software Foundation, Inc.
+ * Copyright (C) 1986, 1988, 1989, 1991-2005 the Free Software Foundation, Inc.
*
* This file is part of GAWK, the GNU implementation of the
* AWK Programming Language.
@@ -20,7 +20,7 @@
*
* 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
+ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA
*/
/*
@@ -435,7 +435,7 @@ assoc_find(NODE *symbol, register NODE *subs, unsigned long hash1)
if (s1_len == s2->stlen) {
if (s1_len == 0 /* "" is a valid index */
- || STREQN(s1_str, s2->stptr, s1_len))
+ || memcmp(s1_str, s2->stptr, s1_len) == 0)
return bucket;
}
}
@@ -609,7 +609,7 @@ do_delete(NODE *sym, NODE *tree)
if (s1_len == s2->stlen) {
if (s1_len == 0 /* "" is a valid index */
- || STREQN(s1_str, s2->stptr, s1_len))
+ || memcmp(s1_str, s2->stptr, s1_len) == 0)
break;
}
}
diff --git a/awk.h b/awk.h
index 6ba3c433..1f1e34a6 100644
--- a/awk.h
+++ b/awk.h
@@ -3,7 +3,7 @@
*/
/*
- * Copyright (C) 1986, 1988, 1989, 1991-2004 the Free Software Foundation, Inc.
+ * Copyright (C) 1986, 1988, 1989, 1991-2005 the Free Software Foundation, Inc.
*
* This file is part of GAWK, the GNU implementation of the
* AWK Programming Language.
@@ -20,7 +20,7 @@
*
* 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
+ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA
*/
/* ------------------------------ Includes ------------------------------ */
@@ -74,7 +74,9 @@ extern int errno;
#include <signum.h>
#endif
+#ifndef NO_MBSUPPORT
#include "mbsupport.h" /* defines MBS_SUPPORT */
+#endif
#if defined(MBS_SUPPORT)
/* We can handle multibyte strings. */
@@ -82,6 +84,10 @@ extern int errno;
#include <wctype.h>
#endif
+#ifdef STDC_HEADERS
+#include <float.h>
+#endif
+
/* ----------------- System dependencies (with more includes) -----------*/
/* This section is the messiest one in the file, not a lot that can be done */
@@ -230,6 +236,9 @@ typedef struct Regexp {
#define SUBPATEND(rp,s,n) (rp)->regs.end[n]
#define NUMSUBPATS(rp,s) (rp)->regs.num_regs
#endif /* GNU_REGEX */
+/* regexp matching flags: */
+#define RE_NEED_START 1 /* need to know start/end of match */
+#define RE_NO_BOL 2 /* for RS, not allowed to match ^ in regexp */
/* Stuff for losing systems. */
#ifdef STRTOD_NOT_C89
@@ -272,10 +281,18 @@ extern double gawk_strtod();
/* ------------------ Constants, Structures, Typedefs ------------------ */
+#if 0
+/* This isn't right. Figure it out the right way for the next release */
#ifndef AWKNUM
-#define AWKNUM double
+#ifdef LDBL_MANT_DIG
+#define AWKNUM long double
+#else
+#endif
+#endif
#endif
+#define AWKNUM double
+
#ifndef TRUE
/* a bit hackneyed, but what the heck */
#define TRUE 1
@@ -481,6 +498,10 @@ typedef struct exp_node {
size_t slen;
long sref;
int idx;
+#ifdef MBS_SUPPORT
+ wchar_t *wsp;
+ size_t wslen;
+#endif
} val;
struct {
struct exp_node *next;
@@ -516,6 +537,9 @@ typedef struct exp_node {
* function name; see awkgram.y */
# define FIELD 1024 /* this is a field */
# define INTLSTR 2048 /* use localized version */
+#ifdef MBS_SUPPORT
+# define WSTRCUR 4096 /* wide str value is current */
+#endif
} NODE;
#define vname sub.nodep.name
@@ -548,6 +572,9 @@ typedef struct exp_node {
#define stref sub.val.sref
#define stfmt sub.val.idx
+#define wstptr sub.val.wsp
+#define wstlen sub.val.wslen
+
#define numbr sub.val.fltnum
/* Node_var: */
@@ -588,6 +615,11 @@ typedef struct iobuf {
ssize_t count; /* amount read last time */
size_t scanoff; /* where we were in the buffer when we had
to regrow/refill */
+
+ void *opaque; /* private data for open hooks */
+ int (*get_record) P((char **out, struct iobuf *, int *errcode));
+ void (*close_func) P((struct iobuf *)); /* open and close hooks */
+
int flag;
# define IOP_IS_TTY 1
# define IOP_IS_INTERNAL 2
@@ -595,6 +627,7 @@ typedef struct iobuf {
# define IOP_NOFREE_OBJ 8
# define IOP_AT_EOF 16
# define IOP_CLOSED 32
+# define IOP_AT_START 64
} IOBUF;
typedef void (*Func_ptr) P((void));
@@ -720,6 +753,8 @@ extern int do_lint_old;
#endif
#ifdef MBS_SUPPORT
extern int gawk_mb_cur_max;
+#else
+extern const int gawk_mb_cur_max;
#endif
#if defined (HAVE_GETGROUPS) && defined(NGROUPS_MAX) && NGROUPS_MAX > 0
@@ -742,8 +777,6 @@ extern char casetable[]; /* for case-independent regexp matching */
/* ------------------------- Pseudo-functions ------------------------- */
#define is_identchar(c) (isalnum(c) || (c) == '_')
-#define isnondecimal(str) (((str)[0]) == '0' && (ISDIGIT((str)[1]) \
- || (str)[1] == 'x' || (str)[1] == 'X'))
#define var_uninitialized(n) ((n)->var_value == Nnull_string)
@@ -944,6 +977,8 @@ extern const char *getfname P((NODE *(*)(NODE *)));
extern NODE *stopme P((NODE *tree));
extern void shadow_funcs P((void));
extern int check_special P((const char *name));
+extern void register_deferred_variable P((const char *name,
+ NODE *(*load_func)(void)));
/* builtin.c */
extern double double_to_int P((double d));
extern NODE *do_exp P((NODE *tree));
@@ -1004,6 +1039,7 @@ extern void set_BINMODE P((void));
extern void set_LINT P((void));
extern void set_TEXTDOMAIN P((void));
extern void update_ERRNO P((void));
+extern void update_ERRNO_saved P((int));
extern const char *redflags2str P((int));
extern const char *flags2str P((int));
extern const char *genflags2str P((int flagval, const struct flagtab *tab));
@@ -1055,13 +1091,14 @@ extern void *memset_ulong P((void *dest, int val, unsigned long l));
#define memset memset_ulong
#endif
/* io.c */
+extern void register_open_hook P((void *(*open_func)(IOBUF *)));
extern void set_FNR P((void));
extern void set_NR P((void));
extern void do_input P((void));
extern struct redirect *redirect P((NODE *tree, int *errflg));
extern NODE *do_close P((NODE *tree));
extern int flush_io P((void));
-extern int close_io P((void));
+extern int close_io P((int *stdio_problem));
extern int devopen P((const char *name, const char *mode));
extern int pathopen P((const char *file));
extern NODE *do_getline P((NODE *tree));
@@ -1069,8 +1106,6 @@ extern void do_nextfile P((void)) ATTRIBUTE_NORETURN;
extern struct redirect *getredirect P((const char *str, int len));
/* main.c */
extern int main P((int argc, char **argv));
-extern NODE *load_environ P((void));
-extern NODE *load_procinfo P((void));
extern int arg_assign P((char *arg, int initing));
/* msg.c */
extern void err P((const char *s, const char *emsg, va_list argp)) ATTRIBUTE_PRINTF(2, 0);
@@ -1126,10 +1161,16 @@ extern void freenode P((NODE *it));
#endif
extern void unref P((NODE *tmp));
extern int parse_escape P((const char **string_ptr));
+#ifdef MBS_SUPPORT
+extern NODE *str2wstr P((NODE *n, size_t **ptr));
+#define force_wstring(n) str2wstr(n, NULL)
+extern const wchar_t *wstrstr P((const wchar_t *haystack, size_t hs_len, const wchar_t *needle, size_t needle_len));
+extern const wchar_t *wcasestrstr P((const wchar_t *haystack, size_t hs_len, const wchar_t *needle, size_t needle_len));
+#endif
/* re.c */
extern Regexp *make_regexp P((const char *s, size_t len, int ignorecase, int dfa));
extern int research P((Regexp *rp, char *str, int start,
- size_t len, int need_start));
+ size_t len, int flags));
extern void refree P((Regexp *rp));
extern void reg_error P((const char *s));
extern Regexp *re_update P((NODE *t));
@@ -1138,6 +1179,7 @@ extern void resetup P((void));
extern int avoid_dfa P((NODE *re, char *str, size_t len)); /* temporary */
extern int reisstring P((const char *text, size_t len, Regexp *re, const char *buf));
extern int remaybelong P((const char *text, size_t len));
+extern int isnondecimal P((const char *str, int use_locale));
/* strncasecmp.c */
#ifndef BROKEN_STRNCASECMP
diff --git a/awkgram.c b/awkgram.c
index 14e2c296..ba2ed5e7 100644
--- a/awkgram.c
+++ b/awkgram.c
@@ -1,7 +1,7 @@
-/* A Bison parser, made by GNU Bison 1.875. */
+/* A Bison parser, made by GNU Bison 2.0. */
/* Skeleton parser for Yacc-like parsing with Bison,
- Copyright (C) 1984, 1989, 1990, 2000, 2001, 2002 Free Software Foundation, Inc.
+ Copyright (C) 1984, 1989, 1990, 2000, 2001, 2002, 2003, 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
@@ -256,8 +256,8 @@ typedef union YYSTYPE {
char *sval;
NODE *(*ptrval) P((void));
} YYSTYPE;
-/* Line 191 of yacc.c. */
-#line 260 "y.tab.c"
+/* Line 190 of yacc.c. */
+#line 261 "y.tab.c"
# define yystype YYSTYPE /* obsolescent; will be withdrawn */
# define YYSTYPE_IS_DECLARED 1
# define YYSTYPE_IS_TRIVIAL 1
@@ -268,25 +268,26 @@ typedef union YYSTYPE {
/* Copy the second part of user declarations. */
-/* Line 214 of yacc.c. */
-#line 272 "y.tab.c"
+/* Line 213 of yacc.c. */
+#line 273 "y.tab.c"
#if ! defined (yyoverflow) || YYERROR_VERBOSE
-/* The parser invokes alloca or malloc; define the necessary symbols. */
+# ifndef YYFREE
+# define YYFREE free
+# endif
+# ifndef YYMALLOC
+# define YYMALLOC malloc
+# endif
-#undef YYSTACK_USE_ALLOCA /* Gawk: nuke alloca once and for all */
+/* 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
+# ifdef YYSTACK_USE_ALLOCA
+# if YYSTACK_USE_ALLOCA
+# ifdef __GNUC__
+# define YYSTACK_ALLOC __builtin_alloca
# else
-# ifdef __GNUC__
-# define YYSTACK_ALLOC __builtin_alloca
-# endif
+# define YYSTACK_ALLOC alloca
# endif
# endif
# endif
@@ -299,20 +300,18 @@ typedef union YYSTYPE {
# include <stdlib.h> /* INFRINGES ON USER NAME SPACE */
# define YYSIZE_T size_t
# endif
-# define YYSTACK_ALLOC malloc
-# define YYSTACK_FREE free
+# define YYSTACK_ALLOC YYMALLOC
+# define YYSTACK_FREE YYFREE
# endif
#endif /* ! defined (yyoverflow) || YYERROR_VERBOSE */
-#if (! defined (yyoverflow) \
- && (! defined (__cplusplus) \
- || (YYSTYPE_IS_TRIVIAL)))
+#if (! defined (yyoverflow) && (! defined (__cplusplus) || (defined (YYSTYPE_IS_TRIVIAL) && YYSTYPE_IS_TRIVIAL)))
/* A type that is properly aligned for any stack member. */
union yyalloc
{
- short yyss;
+ short int yyss;
YYSTYPE yyvs;
};
@@ -322,13 +321,13 @@ union yyalloc
/* The size of an array large to enough to hold all stacks, each with
N elements. */
# define YYSTACK_BYTES(N) \
- ((N) * (sizeof (short) + sizeof (YYSTYPE)) \
+ ((N) * (sizeof (short int) + sizeof (YYSTYPE)) \
+ YYSTACK_GAP_MAXIMUM)
/* Copy COUNT objects from FROM to TO. The source and destination do
not overlap. */
# ifndef YYCOPY
-# if 1 < __GNUC__
+# if defined (__GNUC__) && 1 < __GNUC__
# define YYCOPY(To, From, Count) \
__builtin_memcpy (To, From, (Count) * sizeof (*(From)))
# else
@@ -364,7 +363,7 @@ union yyalloc
#if defined (__STDC__) || defined (__cplusplus)
typedef signed char yysigned_char;
#else
- typedef short yysigned_char;
+ typedef short int yysigned_char;
#endif
/* YYFINAL -- State number of the termination state. */
@@ -427,7 +426,7 @@ static const unsigned char yytranslate[] =
#if YYDEBUG
/* YYPRHS[YYN] -- Index of the first RHS symbol of rule number YYN in
YYRHS. */
-static const unsigned short yyprhs[] =
+static const unsigned short int yyprhs[] =
{
0, 0, 3, 7, 8, 11, 14, 17, 20, 23,
24, 26, 30, 32, 34, 40, 42, 44, 46, 48,
@@ -503,24 +502,24 @@ static const yysigned_char yyrhs[] =
};
/* YYRLINE[YYN] -- source line where rule number YYN was defined. */
-static const unsigned short yyrline[] =
+static const unsigned short int yyrline[] =
{
0, 171, 171, 177, 179, 184, 196, 200, 215, 226,
229, 233, 243, 248, 256, 261, 263, 265, 276, 277,
- 282, 281, 305, 304, 328, 329, 334, 335, 353, 358,
- 359, 363, 365, 367, 369, 371, 373, 375, 417, 421,
- 426, 429, 432, 441, 461, 464, 463, 473, 485, 485,
- 516, 518, 532, 547, 553, 554, 559, 612, 613, 630,
- 635, 637, 642, 644, 649, 651, 653, 658, 659, 667,
- 668, 674, 679, 679, 691, 696, 703, 704, 707, 709,
- 714, 715, 721, 722, 727, 729, 731, 733, 735, 742,
- 743, 749, 750, 755, 757, 763, 765, 767, 769, 774,
- 793, 795, 797, 803, 805, 811, 813, 818, 820, 822,
- 827, 829, 833, 834, 839, 841, 849, 851, 853, 858,
- 860, 862, 864, 866, 868, 870, 872, 878, 883, 885,
- 890, 892, 894, 897, 899, 907, 915, 916, 918, 920,
- 922, 925, 933, 945, 946, 951, 953, 967, 972, 976,
- 980, 983, 985, 989, 993, 996
+ 282, 281, 305, 304, 330, 331, 336, 337, 355, 360,
+ 361, 365, 367, 369, 371, 373, 375, 377, 421, 425,
+ 430, 433, 436, 445, 465, 468, 467, 477, 489, 489,
+ 520, 522, 536, 551, 557, 558, 563, 616, 617, 634,
+ 639, 641, 646, 648, 653, 655, 657, 662, 663, 671,
+ 672, 678, 683, 683, 695, 700, 707, 708, 711, 713,
+ 718, 719, 725, 726, 731, 733, 735, 737, 739, 746,
+ 747, 753, 754, 759, 761, 767, 769, 771, 773, 778,
+ 797, 799, 801, 807, 809, 815, 817, 822, 824, 826,
+ 831, 833, 837, 838, 843, 845, 853, 855, 857, 862,
+ 864, 866, 868, 870, 872, 874, 876, 882, 887, 889,
+ 894, 896, 898, 901, 903, 911, 919, 920, 922, 924,
+ 926, 929, 937, 949, 950, 955, 957, 971, 982, 986,
+ 990, 993, 995, 999, 1003, 1006
};
#endif
@@ -529,26 +528,26 @@ static const unsigned short yyrline[] =
First, the terminals, then, starting at YYNTOKENS, nonterminals. */
static const char *const yytname[] =
{
- "$end", "error", "$undefined", "FUNC_CALL", "NAME", "REGEXP", "ERROR",
- "YNUMBER", "YSTRING", "RELOP", "IO_OUT", "IO_IN", "ASSIGNOP", "ASSIGN",
- "MATCHOP", "CONCAT_OP", "LEX_BEGIN", "LEX_END", "LEX_IF", "LEX_ELSE",
- "LEX_RETURN", "LEX_DELETE", "LEX_SWITCH", "LEX_CASE", "LEX_DEFAULT",
- "LEX_WHILE", "LEX_DO", "LEX_FOR", "LEX_BREAK", "LEX_CONTINUE",
- "LEX_PRINT", "LEX_PRINTF", "LEX_NEXT", "LEX_EXIT", "LEX_FUNCTION",
- "LEX_GETLINE", "LEX_NEXTFILE", "LEX_IN", "LEX_AND", "LEX_OR",
- "INCREMENT", "DECREMENT", "LEX_BUILTIN", "LEX_LENGTH", "NEWLINE",
- "SLASH_BEFORE_EQUAL", "'?'", "':'", "','", "'<'", "'>'", "'+'", "'-'",
- "'*'", "'/'", "'%'", "'!'", "UNARY", "'^'", "'$'", "'('", "')'", "'['",
- "']'", "'{'", "'}'", "';'", "$accept", "start", "program", "rule",
- "pattern", "action", "func_name", "lex_builtin", "function_prologue",
- "@1", "regexp", "@2", "a_slash", "statements", "statement_term",
- "statement", "@3", "simple_stmt", "@4", "opt_simple_stmt",
- "switch_body", "case_statements", "case_statement", "case_value",
- "print", "print_expression_list", "output_redir", "@5", "if_statement",
- "nls", "opt_nls", "input_redir", "opt_param_list", "param_list",
- "opt_exp", "opt_expression_list", "expression_list", "exp",
- "assign_operator", "relop_or_less", "a_relop", "common_exp", "simp_exp",
- "non_post_simp_exp", "opt_variable", "variable", "l_brace", "r_brace",
+ "$end", "error", "$undefined", "FUNC_CALL", "NAME", "REGEXP", "ERROR",
+ "YNUMBER", "YSTRING", "RELOP", "IO_OUT", "IO_IN", "ASSIGNOP", "ASSIGN",
+ "MATCHOP", "CONCAT_OP", "LEX_BEGIN", "LEX_END", "LEX_IF", "LEX_ELSE",
+ "LEX_RETURN", "LEX_DELETE", "LEX_SWITCH", "LEX_CASE", "LEX_DEFAULT",
+ "LEX_WHILE", "LEX_DO", "LEX_FOR", "LEX_BREAK", "LEX_CONTINUE",
+ "LEX_PRINT", "LEX_PRINTF", "LEX_NEXT", "LEX_EXIT", "LEX_FUNCTION",
+ "LEX_GETLINE", "LEX_NEXTFILE", "LEX_IN", "LEX_AND", "LEX_OR",
+ "INCREMENT", "DECREMENT", "LEX_BUILTIN", "LEX_LENGTH", "NEWLINE",
+ "SLASH_BEFORE_EQUAL", "'?'", "':'", "','", "'<'", "'>'", "'+'", "'-'",
+ "'*'", "'/'", "'%'", "'!'", "UNARY", "'^'", "'$'", "'('", "')'", "'['",
+ "']'", "'{'", "'}'", "';'", "$accept", "start", "program", "rule",
+ "pattern", "action", "func_name", "lex_builtin", "function_prologue",
+ "@1", "regexp", "@2", "a_slash", "statements", "statement_term",
+ "statement", "@3", "simple_stmt", "@4", "opt_simple_stmt", "switch_body",
+ "case_statements", "case_statement", "case_value", "print",
+ "print_expression_list", "output_redir", "@5", "if_statement", "nls",
+ "opt_nls", "input_redir", "opt_param_list", "param_list", "opt_exp",
+ "opt_expression_list", "expression_list", "exp", "assign_operator",
+ "relop_or_less", "a_relop", "common_exp", "simp_exp",
+ "non_post_simp_exp", "opt_variable", "variable", "l_brace", "r_brace",
"r_paren", "opt_semi", "semi", "colon", "comma", 0
};
#endif
@@ -556,7 +555,7 @@ static const char *const yytname[] =
# ifdef YYPRINT
/* YYTOKNUM[YYLEX-NUM] -- Internal token number corresponding to
token YYLEX-NUM. */
-static const unsigned short yytoknum[] =
+static const unsigned short int yytoknum[] =
{
0, 256, 257, 258, 259, 260, 261, 262, 263, 264,
265, 266, 267, 268, 269, 270, 271, 272, 273, 274,
@@ -648,7 +647,7 @@ static const unsigned char yydefact[] =
};
/* YYDEFGOTO[NTERM-NUM]. */
-static const short yydefgoto[] =
+static const short int yydefgoto[] =
{
-1, 2, 7, 28, 29, 62, 102, 103, 30, 41,
31, 68, 32, 116, 63, 162, 178, 163, 193, 211,
@@ -661,7 +660,7 @@ static const short yydefgoto[] =
/* YYPACT[STATE-NUM] -- Index in YYTABLE of the portion describing
STATE-NUM. */
#define YYPACT_NINF -236
-static const short yypact[] =
+static const short int yypact[] =
{
-15, -236, 31, -3, -236, -236, -236, 292, -236, -8,
-2, -236, -236, -236, -236, -236, 26, 26, 26, 4,
@@ -696,7 +695,7 @@ static const short yypact[] =
};
/* YYPGOTO[NTERM-NUM]. */
-static const short yypgoto[] =
+static const short int yypgoto[] =
{
-236, -236, -236, -236, -236, 165, -236, -236, -236, -236,
-24, -236, -236, -150, 152, -178, -236, -165, -236, -235,
@@ -711,7 +710,7 @@ static const short yypgoto[] =
number is the opposite. If zero, do what YYDEFACT says.
If YYTABLE_NINF, syntax error. */
#define YYTABLE_NINF -93
-static const short yytable[] =
+static const short int yytable[] =
{
33, 53, 43, 44, 45, 208, 179, 64, 51, 51,
58, 51, 56, 216, 106, 107, -93, 194, 109, 210,
@@ -816,7 +815,7 @@ static const short yytable[] =
0, 0, 0, 0, 74, 0, 0, 76, 77
};
-static const short yycheck[] =
+static const short int yycheck[] =
{
7, 25, 16, 17, 18, 183, 4, 29, 22, 23,
27, 25, 26, 194, 46, 47, 9, 167, 1, 184,
@@ -980,7 +979,8 @@ static const unsigned char yystos[] =
#define YYACCEPT goto yyacceptlab
#define YYABORT goto yyabortlab
-#define YYERROR goto yyerrlab1
+#define YYERROR goto yyerrorlab
+
/* Like YYERROR except do call yyerror. This remains here temporarily
to ease the transition to the new meaning of YYERROR, for GCC.
@@ -1007,20 +1007,53 @@ do \
} \
while (0)
+
#define YYTERROR 1
#define YYERRCODE 256
-/* YYLLOC_DEFAULT -- Compute the default location (before the actions
- are run). */
+/* YYLLOC_DEFAULT -- Set CURRENT to span from RHS[1] to RHS[N].
+ If N is 0, then set CURRENT to the empty location which ends
+ the previous symbol: RHS[0] (always defined). */
+
+#define YYRHSLOC(Rhs, K) ((Rhs)[K])
#ifndef YYLLOC_DEFAULT
-# define YYLLOC_DEFAULT(Current, Rhs, N) \
- Current.first_line = Rhs[1].first_line; \
- Current.first_column = Rhs[1].first_column; \
- Current.last_line = Rhs[N].last_line; \
- Current.last_column = Rhs[N].last_column;
+# define YYLLOC_DEFAULT(Current, Rhs, N) \
+ do \
+ if (N) \
+ { \
+ (Current).first_line = YYRHSLOC (Rhs, 1).first_line; \
+ (Current).first_column = YYRHSLOC (Rhs, 1).first_column; \
+ (Current).last_line = YYRHSLOC (Rhs, N).last_line; \
+ (Current).last_column = YYRHSLOC (Rhs, N).last_column; \
+ } \
+ else \
+ { \
+ (Current).first_line = (Current).last_line = \
+ YYRHSLOC (Rhs, 0).last_line; \
+ (Current).first_column = (Current).last_column = \
+ YYRHSLOC (Rhs, 0).last_column; \
+ } \
+ while (0)
+#endif
+
+
+/* YY_LOCATION_PRINT -- Print the location on the stream.
+ This macro was not mandated originally: define only if we know
+ we won't break user code: when these are the locations we know. */
+
+#ifndef YY_LOCATION_PRINT
+# if YYLTYPE_IS_TRIVIAL
+# define YY_LOCATION_PRINT(File, Loc) \
+ fprintf (File, "%d.%d-%d.%d", \
+ (Loc).first_line, (Loc).first_column, \
+ (Loc).last_line, (Loc).last_column)
+# else
+# define YY_LOCATION_PRINT(File, Loc) ((void) 0)
+# endif
#endif
+
/* YYLEX -- calling `yylex' with the right arguments. */
#ifdef YYLEX_PARAM
@@ -1043,36 +1076,30 @@ do { \
YYFPRINTF Args; \
} while (0)
-# define YYDSYMPRINT(Args) \
-do { \
- if (yydebug) \
- yysymprint Args; \
-} while (0)
-
-# define YYDSYMPRINTF(Title, Token, Value, Location) \
+# define YY_SYMBOL_PRINT(Title, Type, Value, Location) \
do { \
if (yydebug) \
{ \
YYFPRINTF (stderr, "%s ", Title); \
yysymprint (stderr, \
- Token, Value); \
+ Type, Value); \
YYFPRINTF (stderr, "\n"); \
} \
} while (0)
/*------------------------------------------------------------------.
| yy_stack_print -- Print the state stack from its BOTTOM up to its |
-| TOP (cinluded). |
+| TOP (included). |
`------------------------------------------------------------------*/
#if defined (__STDC__) || defined (__cplusplus)
static void
-yy_stack_print (short *bottom, short *top)
+yy_stack_print (short int *bottom, short int *top)
#else
static void
yy_stack_print (bottom, top)
- short *bottom;
- short *top;
+ short int *bottom;
+ short int *top;
#endif
{
YYFPRINTF (stderr, "Stack now");
@@ -1102,9 +1129,9 @@ yy_reduce_print (yyrule)
#endif
{
int yyi;
- unsigned int yylineno = yyrline[yyrule];
+ unsigned int yylno = yyrline[yyrule];
YYFPRINTF (stderr, "Reducing stack by rule %d (line %u), ",
- yyrule - 1, yylineno);
+ yyrule - 1, yylno);
/* Print the symbols being reduced, and their result. */
for (yyi = yyprhs[yyrule]; 0 <= yyrhs[yyi]; yyi++)
YYFPRINTF (stderr, "%s ", yytname [yyrhs[yyi]]);
@@ -1122,8 +1149,7 @@ do { \
int yydebug;
#else /* !YYDEBUG */
# define YYDPRINTF(Args)
-# define YYDSYMPRINT(Args)
-# define YYDSYMPRINTF(Title, Token, Value, Location)
+# define YY_SYMBOL_PRINT(Title, Type, Value, Location)
# define YY_STACK_PRINT(Bottom, Top)
# define YY_REDUCE_PRINT(Rule)
#endif /* !YYDEBUG */
@@ -1141,10 +1167,6 @@ int yydebug;
SIZE_MAX < YYSTACK_BYTES (YYMAXDEPTH)
evaluated with infinite-precision integer arithmetic. */
-#if YYMAXDEPTH == 0
-# undef YYMAXDEPTH
-#endif
-
#ifndef YYMAXDEPTH
# define YYMAXDEPTH 10000
#endif
@@ -1226,15 +1248,15 @@ yysymprint (yyoutput, yytype, yyvaluep)
(void) yyvaluep;
if (yytype < YYNTOKENS)
- {
- YYFPRINTF (yyoutput, "token %s (", yytname[yytype]);
-# ifdef YYPRINT
- YYPRINT (yyoutput, yytoknum[yytype], *yyvaluep);
-# endif
- }
+ YYFPRINTF (yyoutput, "token %s (", yytname[yytype]);
else
YYFPRINTF (yyoutput, "nterm %s (", yytname[yytype]);
+
+# ifdef YYPRINT
+ if (yytype < YYNTOKENS)
+ YYPRINT (yyoutput, yytoknum[yytype], *yyvaluep);
+# endif
switch (yytype)
{
default:
@@ -1250,10 +1272,11 @@ yysymprint (yyoutput, yytype, yyvaluep)
#if defined (__STDC__) || defined (__cplusplus)
static void
-yydestruct (int yytype, YYSTYPE *yyvaluep)
+yydestruct (const char *yymsg, int yytype, YYSTYPE *yyvaluep)
#else
static void
-yydestruct (yytype, yyvaluep)
+yydestruct (yymsg, yytype, yyvaluep)
+ const char *yymsg;
int yytype;
YYSTYPE *yyvaluep;
#endif
@@ -1261,6 +1284,10 @@ yydestruct (yytype, yyvaluep)
/* Pacify ``unused variable'' warnings. */
(void) yyvaluep;
+ if (!yymsg)
+ yymsg = "Deleting";
+ YY_SYMBOL_PRINT (yymsg, yytype, yyvaluep, yylocationp);
+
switch (yytype)
{
@@ -1288,10 +1315,10 @@ int yyparse ();
-/* The lookahead symbol. */
+/* The look-ahead symbol. */
int yychar;
-/* The semantic value of the lookahead symbol. */
+/* The semantic value of the look-ahead symbol. */
YYSTYPE yylval;
/* Number of syntax errors so far. */
@@ -1327,7 +1354,7 @@ yyparse ()
int yyresult;
/* Number of tokens to shift before error messages enabled. */
int yyerrstatus;
- /* Lookahead token as an internal (translated) token number. */
+ /* Look-ahead token as an internal (translated) token number. */
int yytoken = 0;
/* Three stacks and their tools:
@@ -1339,9 +1366,9 @@ yyparse ()
to reallocate them elsewhere. */
/* The state stack. */
- short yyssa[YYINITDEPTH];
- short *yyss = yyssa;
- register short *yyssp;
+ short int yyssa[YYINITDEPTH];
+ short int *yyss = yyssa;
+ register short int *yyssp;
/* The semantic value stack. */
YYSTYPE yyvsa[YYINITDEPTH];
@@ -1378,6 +1405,9 @@ yyparse ()
yyssp = yyss;
yyvsp = yyvs;
+
+ yyvsp[0] = yylval;
+
goto yysetstate;
/*------------------------------------------------------------.
@@ -1403,7 +1433,7 @@ yyparse ()
these so that the &'s don't force the real ones into
memory. */
YYSTYPE *yyvs1 = yyvs;
- short *yyss1 = yyss;
+ short int *yyss1 = yyss;
/* Each stack pointer address is followed by the size of the
@@ -1431,7 +1461,7 @@ yyparse ()
yystacksize = YYMAXDEPTH;
{
- short *yyss1 = yyss;
+ short int *yyss1 = yyss;
union yyalloc *yyptr =
(union yyalloc *) YYSTACK_ALLOC (YYSTACK_BYTES (yystacksize));
if (! yyptr)
@@ -1467,18 +1497,18 @@ yyparse ()
yybackup:
/* Do appropriate processing given the current state. */
-/* Read a lookahead token if we need one and don't already have one. */
+/* Read a look-ahead token if we need one and don't already have one. */
/* yyresume: */
- /* First try to decide what to do without reference to lookahead token. */
+ /* First try to decide what to do without reference to look-ahead token. */
yyn = yypact[yystate];
if (yyn == YYPACT_NINF)
goto yydefault;
- /* Not known => get a lookahead token if don't already have one. */
+ /* Not known => get a look-ahead token if don't already have one. */
- /* YYCHAR is either YYEMPTY or YYEOF or a valid lookahead symbol. */
+ /* YYCHAR is either YYEMPTY or YYEOF or a valid look-ahead symbol. */
if (yychar == YYEMPTY)
{
YYDPRINTF ((stderr, "Reading a token: "));
@@ -1493,7 +1523,7 @@ yybackup:
else
{
yytoken = YYTRANSLATE (yychar);
- YYDSYMPRINTF ("Next token is", yytoken, &yylval, &yylloc);
+ YY_SYMBOL_PRINT ("Next token is", yytoken, &yylval, &yylloc);
}
/* If the proper action on seeing token YYTOKEN is to reduce or to
@@ -1513,8 +1543,8 @@ yybackup:
if (yyn == YYFINAL)
YYACCEPT;
- /* Shift the lookahead token. */
- YYDPRINTF ((stderr, "Shifting token %s, ", yytname[yytoken]));
+ /* Shift the look-ahead token. */
+ YY_SYMBOL_PRINT ("Shifting", yytoken, &yylval, &yylloc);
/* Discard the token being shifted unless it is eof. */
if (yychar != YYEOF)
@@ -1593,16 +1623,16 @@ yyreduce:
case 6:
#line 197 "awkgram.y"
{
- yyvsp[-1].nodeval->rnode = yyvsp[0].nodeval;
+ (yyvsp[-1].nodeval)->rnode = (yyvsp[0].nodeval);
}
break;
case 7:
#line 201 "awkgram.y"
{
- if (yyvsp[-1].nodeval->lnode != NULL) {
+ if ((yyvsp[-1].nodeval)->lnode != NULL) {
/* pattern rule with non-empty pattern */
- yyvsp[-1].nodeval->rnode = node(NULL, Node_K_print_rec, NULL);
+ (yyvsp[-1].nodeval)->rnode = node(NULL, Node_K_print_rec, NULL);
} else {
/* an error */
if (begin_or_end_rule)
@@ -1619,8 +1649,8 @@ yyreduce:
#line 216 "awkgram.y"
{
can_return = FALSE;
- if (yyvsp[-1].nodeval)
- func_install(yyvsp[-1].nodeval, yyvsp[0].nodeval);
+ if ((yyvsp[-1].nodeval))
+ func_install((yyvsp[-1].nodeval), (yyvsp[0].nodeval));
yyerrok;
}
break;
@@ -1628,14 +1658,14 @@ yyreduce:
case 9:
#line 226 "awkgram.y"
{
- yyval.nodeval = append_pattern(&expression_value, (NODE *) NULL);
+ (yyval.nodeval) = append_pattern(&expression_value, (NODE *) NULL);
}
break;
case 10:
#line 230 "awkgram.y"
{
- yyval.nodeval = append_pattern(&expression_value, yyvsp[0].nodeval);
+ (yyval.nodeval) = append_pattern(&expression_value, (yyvsp[0].nodeval));
}
break;
@@ -1646,9 +1676,9 @@ yyreduce:
getnode(r);
r->type = Node_line_range;
- r->condpair = node(yyvsp[-2].nodeval, Node_cond_pair, yyvsp[0].nodeval);
+ r->condpair = node((yyvsp[-2].nodeval), Node_cond_pair, (yyvsp[0].nodeval));
r->triggered = FALSE;
- yyval.nodeval = append_pattern(&expression_value, r);
+ (yyval.nodeval) = append_pattern(&expression_value, r);
}
break;
@@ -1656,7 +1686,7 @@ yyreduce:
#line 244 "awkgram.y"
{
begin_or_end_rule = TRUE;
- yyval.nodeval = append_pattern(&begin_block, (NODE *) NULL);
+ (yyval.nodeval) = append_pattern(&begin_block, (NODE *) NULL);
}
break;
@@ -1664,23 +1694,23 @@ yyreduce:
#line 249 "awkgram.y"
{
begin_or_end_rule = parsing_end_rule = TRUE;
- yyval.nodeval = append_pattern(&end_block, (NODE *) NULL);
+ (yyval.nodeval) = append_pattern(&end_block, (NODE *) NULL);
}
break;
case 14:
#line 257 "awkgram.y"
- { yyval.nodeval = yyvsp[-3].nodeval; }
+ { (yyval.nodeval) = (yyvsp[-3].nodeval); }
break;
case 15:
#line 262 "awkgram.y"
- { yyval.sval = yyvsp[0].sval; }
+ { (yyval.sval) = (yyvsp[0].sval); }
break;
case 16:
#line 264 "awkgram.y"
- { yyval.sval = yyvsp[0].sval; }
+ { (yyval.sval) = (yyvsp[0].sval); }
break;
case 17:
@@ -1689,7 +1719,7 @@ yyreduce:
yyerror(_("`%s' is a built-in function, it cannot be redefined"),
tokstart);
errcount++;
- yyval.sval = builtin_func;
+ (yyval.sval) = builtin_func;
/* yyerrok; */
}
break;
@@ -1706,12 +1736,12 @@ yyreduce:
{
NODE *t;
- t = make_param(yyvsp[-4].sval);
+ t = make_param((yyvsp[-4].sval));
t->flags |= FUNC;
- yyval.nodeval = append_right(t, yyvsp[-2].nodeval);
+ (yyval.nodeval) = append_right(t, (yyvsp[-2].nodeval));
can_return = TRUE;
/* check for duplicate parameter names */
- if (dup_parms(yyval.nodeval))
+ if (dup_parms((yyval.nodeval)))
errcount++;
}
break;
@@ -1725,87 +1755,89 @@ yyreduce:
#line 307 "awkgram.y"
{
NODE *n;
- size_t len = strlen(yyvsp[0].sval);
+ size_t len = strlen((yyvsp[0].sval));
- if (do_lint && (yyvsp[0].sval)[0] == '*') {
- /* possible C comment */
- if ((yyvsp[0].sval)[len-1] == '*')
+ if (do_lint) {
+ if (len == 0)
+ lintwarn(_("regexp constant `//' looks like a C++ comment, but is not"));
+ else if (((yyvsp[0].sval))[0] == '*' && ((yyvsp[0].sval))[len-1] == '*')
+ /* possible C comment */
lintwarn(_("regexp constant `/%s/' looks like a C comment, but is not"), tokstart);
}
getnode(n);
n->type = Node_regex;
- n->re_exp = make_string(yyvsp[0].sval, len);
- n->re_reg = make_regexp(yyvsp[0].sval, len, FALSE, TRUE);
+ n->re_exp = make_string((yyvsp[0].sval), len);
+ n->re_reg = make_regexp((yyvsp[0].sval), len, FALSE, TRUE);
n->re_text = NULL;
n->re_flags = CONST;
n->re_cnt = 1;
- yyval.nodeval = n;
+ (yyval.nodeval) = n;
}
break;
case 26:
-#line 334 "awkgram.y"
- { yyval.nodeval = NULL; }
+#line 336 "awkgram.y"
+ { (yyval.nodeval) = NULL; }
break;
case 27:
-#line 336 "awkgram.y"
+#line 338 "awkgram.y"
{
- if (yyvsp[0].nodeval == NULL)
- yyval.nodeval = yyvsp[-1].nodeval;
+ if ((yyvsp[0].nodeval) == NULL)
+ (yyval.nodeval) = (yyvsp[-1].nodeval);
else {
- if (do_lint && isnoeffect(yyvsp[0].nodeval->type))
+ if (do_lint && isnoeffect((yyvsp[0].nodeval)->type))
lintwarn(_("statement may have no effect"));
- if (yyvsp[-1].nodeval == NULL)
- yyval.nodeval = yyvsp[0].nodeval;
+ if ((yyvsp[-1].nodeval) == NULL)
+ (yyval.nodeval) = (yyvsp[0].nodeval);
else
- yyval.nodeval = append_right(
- (yyvsp[-1].nodeval->type == Node_statement_list ? yyvsp[-1].nodeval
- : node(yyvsp[-1].nodeval, Node_statement_list, (NODE *) NULL)),
- (yyvsp[0].nodeval->type == Node_statement_list ? yyvsp[0].nodeval
- : node(yyvsp[0].nodeval, Node_statement_list, (NODE *) NULL)));
+ (yyval.nodeval) = append_right(
+ ((yyvsp[-1].nodeval)->type == Node_statement_list ? (yyvsp[-1].nodeval)
+ : node((yyvsp[-1].nodeval), Node_statement_list, (NODE *) NULL)),
+ ((yyvsp[0].nodeval)->type == Node_statement_list ? (yyvsp[0].nodeval)
+ : node((yyvsp[0].nodeval), Node_statement_list, (NODE *) NULL)));
}
yyerrok;
}
break;
case 28:
-#line 354 "awkgram.y"
- { yyval.nodeval = NULL; }
+#line 356 "awkgram.y"
+ { (yyval.nodeval) = NULL; }
break;
case 31:
-#line 364 "awkgram.y"
- { yyval.nodeval = NULL; }
+#line 366 "awkgram.y"
+ { (yyval.nodeval) = NULL; }
break;
case 32:
-#line 366 "awkgram.y"
- { yyval.nodeval = yyvsp[-1].nodeval; }
+#line 368 "awkgram.y"
+ { (yyval.nodeval) = (yyvsp[-1].nodeval); }
break;
case 33:
-#line 368 "awkgram.y"
- { yyval.nodeval = yyvsp[0].nodeval; }
+#line 370 "awkgram.y"
+ { (yyval.nodeval) = (yyvsp[0].nodeval); }
break;
case 34:
-#line 370 "awkgram.y"
- { yyval.nodeval = node(yyvsp[-6].nodeval, Node_K_switch, yyvsp[-2].nodeval); }
+#line 372 "awkgram.y"
+ { (yyval.nodeval) = node((yyvsp[-6].nodeval), Node_K_switch, (yyvsp[-2].nodeval)); }
break;
case 35:
-#line 372 "awkgram.y"
- { yyval.nodeval = node(yyvsp[-3].nodeval, Node_K_while, yyvsp[0].nodeval); }
+#line 374 "awkgram.y"
+ { (yyval.nodeval) = node((yyvsp[-3].nodeval), Node_K_while, (yyvsp[0].nodeval)); }
break;
case 36:
-#line 374 "awkgram.y"
- { yyval.nodeval = node(yyvsp[-2].nodeval, Node_K_do, yyvsp[-5].nodeval); }
+#line 376 "awkgram.y"
+ { (yyval.nodeval) = node((yyvsp[-2].nodeval), Node_K_do, (yyvsp[-5].nodeval)); }
break;
case 37:
-#line 376 "awkgram.y"
+#line 378 "awkgram.y"
{
/*
* Efficiency hack. Recognize the special case of
@@ -1820,12 +1852,12 @@ yyreduce:
* Check that the body is a `delete a[i]' statement,
* and that both the loop var and array names match.
*/
- if (yyvsp[0].nodeval != NULL && yyvsp[0].nodeval->type == Node_K_delete && yyvsp[0].nodeval->rnode != NULL) {
+ if ((yyvsp[0].nodeval) != NULL && (yyvsp[0].nodeval)->type == Node_K_delete && (yyvsp[0].nodeval)->rnode != NULL) {
NODE *arr, *sub;
- assert(yyvsp[0].nodeval->rnode->type == Node_expression_list);
- arr = yyvsp[0].nodeval->lnode; /* array var */
- sub = yyvsp[0].nodeval->rnode->lnode; /* index var */
+ assert((yyvsp[0].nodeval)->rnode->type == Node_expression_list);
+ arr = (yyvsp[0].nodeval)->lnode; /* array var */
+ sub = (yyvsp[0].nodeval)->rnode->lnode; /* index var */
if ( (arr->type == Node_var_new
|| arr->type == Node_var_array
@@ -1833,61 +1865,63 @@ yyreduce:
&& (sub->type == Node_var_new
|| sub->type == Node_var
|| sub->type == Node_param_list)
- && strcmp(yyvsp[-5].sval, sub->vname) == 0
- && strcmp(yyvsp[-3].sval, arr->vname) == 0) {
- yyvsp[0].nodeval->type = Node_K_delete_loop;
- yyval.nodeval = yyvsp[0].nodeval;
+ && strcmp((yyvsp[-5].sval), sub->vname) == 0
+ && strcmp((yyvsp[-3].sval), arr->vname) == 0) {
+ (yyvsp[0].nodeval)->type = Node_K_delete_loop;
+ (yyval.nodeval) = (yyvsp[0].nodeval);
+ free((yyvsp[-5].sval)); /* thanks to valgrind for pointing these out */
+ free((yyvsp[-3].sval));
}
else
goto regular_loop;
} else {
regular_loop:
- yyval.nodeval = node(yyvsp[0].nodeval, Node_K_arrayfor,
- make_for_loop(variable(yyvsp[-5].sval, CAN_FREE, Node_var),
- (NODE *) NULL, variable(yyvsp[-3].sval, CAN_FREE, Node_var_array)));
+ (yyval.nodeval) = node((yyvsp[0].nodeval), Node_K_arrayfor,
+ make_for_loop(variable((yyvsp[-5].sval), CAN_FREE, Node_var),
+ (NODE *) NULL, variable((yyvsp[-3].sval), CAN_FREE, Node_var_array)));
}
}
break;
case 38:
-#line 418 "awkgram.y"
+#line 422 "awkgram.y"
{
- yyval.nodeval = node(yyvsp[0].nodeval, Node_K_for, (NODE *) make_for_loop(yyvsp[-9].nodeval, yyvsp[-6].nodeval, yyvsp[-3].nodeval));
+ (yyval.nodeval) = node((yyvsp[0].nodeval), Node_K_for, (NODE *) make_for_loop((yyvsp[-9].nodeval), (yyvsp[-6].nodeval), (yyvsp[-3].nodeval)));
}
break;
case 39:
-#line 422 "awkgram.y"
+#line 426 "awkgram.y"
{
- yyval.nodeval = node(yyvsp[0].nodeval, Node_K_for,
- (NODE *) make_for_loop(yyvsp[-8].nodeval, (NODE *) NULL, yyvsp[-3].nodeval));
+ (yyval.nodeval) = node((yyvsp[0].nodeval), Node_K_for,
+ (NODE *) make_for_loop((yyvsp[-8].nodeval), (NODE *) NULL, (yyvsp[-3].nodeval)));
}
break;
case 40:
-#line 428 "awkgram.y"
- { yyval.nodeval = node((NODE *) NULL, Node_K_break, (NODE *) NULL); }
+#line 432 "awkgram.y"
+ { (yyval.nodeval) = node((NODE *) NULL, Node_K_break, (NODE *) NULL); }
break;
case 41:
-#line 431 "awkgram.y"
- { yyval.nodeval = node((NODE *) NULL, Node_K_continue, (NODE *) NULL); }
+#line 435 "awkgram.y"
+ { (yyval.nodeval) = node((NODE *) NULL, Node_K_continue, (NODE *) NULL); }
break;
case 42:
-#line 433 "awkgram.y"
+#line 437 "awkgram.y"
{ NODETYPE type;
if (begin_or_end_rule)
yyerror(_("`%s' used in %s action"), "next",
(parsing_end_rule ? "END" : "BEGIN"));
type = Node_K_next;
- yyval.nodeval = node((NODE *) NULL, type, (NODE *) NULL);
+ (yyval.nodeval) = node((NODE *) NULL, type, (NODE *) NULL);
}
break;
case 43:
-#line 442 "awkgram.y"
+#line 446 "awkgram.y"
{
if (do_traditional) {
/*
@@ -1905,17 +1939,17 @@ yyreduce:
error(_("`%s' used in %s action"), "nextfile",
(parsing_end_rule ? "END" : "BEGIN"));
}
- yyval.nodeval = node((NODE *) NULL, Node_K_nextfile, (NODE *) NULL);
+ (yyval.nodeval) = node((NODE *) NULL, Node_K_nextfile, (NODE *) NULL);
}
break;
case 44:
-#line 462 "awkgram.y"
- { yyval.nodeval = node(yyvsp[-1].nodeval, Node_K_exit, (NODE *) NULL); }
+#line 466 "awkgram.y"
+ { (yyval.nodeval) = node((yyvsp[-1].nodeval), Node_K_exit, (NODE *) NULL); }
break;
case 45:
-#line 464 "awkgram.y"
+#line 468 "awkgram.y"
{
if (! can_return)
yyerror(_("`return' used outside function context"));
@@ -1923,20 +1957,20 @@ yyreduce:
break;
case 46:
-#line 469 "awkgram.y"
+#line 473 "awkgram.y"
{
- yyval.nodeval = node(yyvsp[-1].nodeval == NULL ? Nnull_string : yyvsp[-1].nodeval,
+ (yyval.nodeval) = node((yyvsp[-1].nodeval) == NULL ? Nnull_string : (yyvsp[-1].nodeval),
Node_K_return, (NODE *) NULL);
}
break;
case 48:
-#line 485 "awkgram.y"
+#line 489 "awkgram.y"
{ in_print = TRUE; in_parens = 0; }
break;
case 49:
-#line 486 "awkgram.y"
+#line 490 "awkgram.y"
{
/*
* Optimization: plain `print' has no expression list, so $3 is null.
@@ -1944,38 +1978,38 @@ yyreduce:
* and lnode is a field spec for field 0, we have `print $0'.
* For both, use Node_K_print_rec, which is faster for these two cases.
*/
- if (yyvsp[-3].nodetypeval == Node_K_print &&
- (yyvsp[-1].nodeval == NULL
- || (yyvsp[-1].nodeval->type == Node_expression_list
- && yyvsp[-1].nodeval->rnode == NULL
- && yyvsp[-1].nodeval->lnode->type == Node_field_spec
- && yyvsp[-1].nodeval->lnode->lnode->type == Node_val
- && yyvsp[-1].nodeval->lnode->lnode->numbr == 0.0))
+ if ((yyvsp[-3].nodetypeval) == Node_K_print &&
+ ((yyvsp[-1].nodeval) == NULL
+ || ((yyvsp[-1].nodeval)->type == Node_expression_list
+ && (yyvsp[-1].nodeval)->rnode == NULL
+ && (yyvsp[-1].nodeval)->lnode->type == Node_field_spec
+ && (yyvsp[-1].nodeval)->lnode->lnode->type == Node_val
+ && (yyvsp[-1].nodeval)->lnode->lnode->numbr == 0.0))
) {
static int warned = FALSE;
- yyval.nodeval = node(NULL, Node_K_print_rec, yyvsp[0].nodeval);
+ (yyval.nodeval) = node(NULL, Node_K_print_rec, (yyvsp[0].nodeval));
- if (do_lint && yyvsp[-1].nodeval == NULL && begin_or_end_rule && ! warned) {
+ if (do_lint && (yyvsp[-1].nodeval) == NULL && begin_or_end_rule && ! warned) {
warned = TRUE;
lintwarn(
_("plain `print' in BEGIN or END rule should probably be `print \"\"'"));
}
} else {
- yyval.nodeval = node(yyvsp[-1].nodeval, yyvsp[-3].nodetypeval, yyvsp[0].nodeval);
- if (yyval.nodeval->type == Node_K_printf)
- count_args(yyval.nodeval);
+ (yyval.nodeval) = node((yyvsp[-1].nodeval), (yyvsp[-3].nodetypeval), (yyvsp[0].nodeval));
+ if ((yyval.nodeval)->type == Node_K_printf)
+ count_args((yyval.nodeval));
}
}
break;
case 50:
-#line 517 "awkgram.y"
- { yyval.nodeval = node(variable(yyvsp[-3].sval, CAN_FREE, Node_var_array), Node_K_delete, yyvsp[-1].nodeval); }
+#line 521 "awkgram.y"
+ { (yyval.nodeval) = node(variable((yyvsp[-3].sval), CAN_FREE, Node_var_array), Node_K_delete, (yyvsp[-1].nodeval)); }
break;
case 51:
-#line 519 "awkgram.y"
+#line 523 "awkgram.y"
{
if (do_lint)
lintwarn(_("`delete array' is a gawk extension"));
@@ -1987,12 +2021,12 @@ yyreduce:
errcount++;
error(_("`delete array' is a gawk extension"));
}
- yyval.nodeval = node(variable(yyvsp[0].sval, CAN_FREE, Node_var_array), Node_K_delete, (NODE *) NULL);
+ (yyval.nodeval) = node(variable((yyvsp[0].sval), CAN_FREE, Node_var_array), Node_K_delete, (NODE *) NULL);
}
break;
case 52:
-#line 533 "awkgram.y"
+#line 537 "awkgram.y"
{
/* this is for tawk compatibility. maybe the warnings should always be done. */
if (do_lint)
@@ -2005,33 +2039,33 @@ yyreduce:
errcount++;
error(_("`delete(array)' is a non-portable tawk extension"));
}
- yyval.nodeval = node(variable(yyvsp[-1].sval, CAN_FREE, Node_var_array), Node_K_delete, (NODE *) NULL);
+ (yyval.nodeval) = node(variable((yyvsp[-1].sval), CAN_FREE, Node_var_array), Node_K_delete, (NODE *) NULL);
}
break;
case 53:
-#line 548 "awkgram.y"
- { yyval.nodeval = yyvsp[0].nodeval; }
+#line 552 "awkgram.y"
+ { (yyval.nodeval) = (yyvsp[0].nodeval); }
break;
case 54:
-#line 553 "awkgram.y"
- { yyval.nodeval = NULL; }
+#line 557 "awkgram.y"
+ { (yyval.nodeval) = NULL; }
break;
case 55:
-#line 555 "awkgram.y"
- { yyval.nodeval = yyvsp[0].nodeval; }
+#line 559 "awkgram.y"
+ { (yyval.nodeval) = (yyvsp[0].nodeval); }
break;
case 56:
-#line 560 "awkgram.y"
+#line 564 "awkgram.y"
{
- if (yyvsp[0].nodeval == NULL) {
- yyval.nodeval = NULL;
+ if ((yyvsp[0].nodeval) == NULL) {
+ (yyval.nodeval) = NULL;
} else {
NODE *dflt = NULL;
- NODE *head = yyvsp[0].nodeval;
+ NODE *head = (yyvsp[0].nodeval);
NODE *curr;
const char **case_values = NULL;
@@ -2041,7 +2075,7 @@ yyreduce:
int i;
emalloc(case_values, const char **, sizeof(char*) * maxcount, "switch_body");
- for (curr = yyvsp[0].nodeval; curr != NULL; curr = curr->rnode) {
+ for (curr = (yyvsp[0].nodeval); curr != NULL; curr = curr->rnode) {
/* Assure that case statement values are unique. */
if (curr->lnode->type == Node_K_case) {
char *caseval;
@@ -2071,30 +2105,30 @@ yyreduce:
free(case_values);
/* Create the switch body. */
- yyval.nodeval = node(head, Node_switch_body, dflt);
+ (yyval.nodeval) = node(head, Node_switch_body, dflt);
}
}
break;
case 57:
-#line 612 "awkgram.y"
- { yyval.nodeval = NULL; }
+#line 616 "awkgram.y"
+ { (yyval.nodeval) = NULL; }
break;
case 58:
-#line 614 "awkgram.y"
+#line 618 "awkgram.y"
{
- if (yyvsp[0].nodeval == NULL)
- yyval.nodeval = yyvsp[-1].nodeval;
+ if ((yyvsp[0].nodeval) == NULL)
+ (yyval.nodeval) = (yyvsp[-1].nodeval);
else {
- if (do_lint && isnoeffect(yyvsp[0].nodeval->type))
+ if (do_lint && isnoeffect((yyvsp[0].nodeval)->type))
lintwarn(_("statement may have no effect"));
- if (yyvsp[-1].nodeval == NULL)
- yyval.nodeval = node(yyvsp[0].nodeval, Node_case_list, (NODE *) NULL);
+ if ((yyvsp[-1].nodeval) == NULL)
+ (yyval.nodeval) = node((yyvsp[0].nodeval), Node_case_list, (NODE *) NULL);
else
- yyval.nodeval = append_right(
- (yyvsp[-1].nodeval->type == Node_case_list ? yyvsp[-1].nodeval : node(yyvsp[-1].nodeval, Node_case_list, (NODE *) NULL)),
- (yyvsp[0].nodeval->type == Node_case_list ? yyvsp[0].nodeval : node(yyvsp[0].nodeval, Node_case_list, (NODE *) NULL))
+ (yyval.nodeval) = append_right(
+ ((yyvsp[-1].nodeval)->type == Node_case_list ? (yyvsp[-1].nodeval) : node((yyvsp[-1].nodeval), Node_case_list, (NODE *) NULL)),
+ ((yyvsp[0].nodeval)->type == Node_case_list ? (yyvsp[0].nodeval) : node((yyvsp[0].nodeval), Node_case_list, (NODE *) NULL))
);
}
yyerrok;
@@ -2102,526 +2136,526 @@ yyreduce:
break;
case 59:
-#line 631 "awkgram.y"
- { yyval.nodeval = NULL; }
+#line 635 "awkgram.y"
+ { (yyval.nodeval) = NULL; }
break;
case 60:
-#line 636 "awkgram.y"
- { yyval.nodeval = node(yyvsp[-3].nodeval, Node_K_case, yyvsp[0].nodeval); }
+#line 640 "awkgram.y"
+ { (yyval.nodeval) = node((yyvsp[-3].nodeval), Node_K_case, (yyvsp[0].nodeval)); }
break;
case 61:
-#line 638 "awkgram.y"
- { yyval.nodeval = node((NODE *) NULL, Node_K_default, yyvsp[0].nodeval); }
+#line 642 "awkgram.y"
+ { (yyval.nodeval) = node((NODE *) NULL, Node_K_default, (yyvsp[0].nodeval)); }
break;
case 62:
-#line 643 "awkgram.y"
- { yyval.nodeval = yyvsp[0].nodeval; }
+#line 647 "awkgram.y"
+ { (yyval.nodeval) = (yyvsp[0].nodeval); }
break;
case 63:
-#line 645 "awkgram.y"
+#line 649 "awkgram.y"
{
- yyvsp[0].nodeval->numbr = -(force_number(yyvsp[0].nodeval));
- yyval.nodeval = yyvsp[0].nodeval;
+ (yyvsp[0].nodeval)->numbr = -(force_number((yyvsp[0].nodeval)));
+ (yyval.nodeval) = (yyvsp[0].nodeval);
}
break;
case 64:
-#line 650 "awkgram.y"
- { yyval.nodeval = yyvsp[0].nodeval; }
+#line 654 "awkgram.y"
+ { (yyval.nodeval) = (yyvsp[0].nodeval); }
break;
case 65:
-#line 652 "awkgram.y"
- { yyval.nodeval = yyvsp[0].nodeval; }
+#line 656 "awkgram.y"
+ { (yyval.nodeval) = (yyvsp[0].nodeval); }
break;
case 66:
-#line 654 "awkgram.y"
- { yyval.nodeval = yyvsp[0].nodeval; }
+#line 658 "awkgram.y"
+ { (yyval.nodeval) = (yyvsp[0].nodeval); }
break;
case 70:
-#line 669 "awkgram.y"
- { yyval.nodeval = node(yyvsp[-3].nodeval, Node_expression_list, yyvsp[-1].nodeval); }
+#line 673 "awkgram.y"
+ { (yyval.nodeval) = node((yyvsp[-3].nodeval), Node_expression_list, (yyvsp[-1].nodeval)); }
break;
case 71:
-#line 674 "awkgram.y"
+#line 678 "awkgram.y"
{
in_print = FALSE;
in_parens = 0;
- yyval.nodeval = NULL;
+ (yyval.nodeval) = NULL;
}
break;
case 72:
-#line 679 "awkgram.y"
+#line 683 "awkgram.y"
{ in_print = FALSE; in_parens = 0; }
break;
case 73:
-#line 680 "awkgram.y"
+#line 684 "awkgram.y"
{
- yyval.nodeval = node(yyvsp[0].nodeval, yyvsp[-2].nodetypeval, (NODE *) NULL);
- if (yyvsp[-2].nodetypeval == Node_redirect_twoway
- && yyvsp[0].nodeval->type == Node_K_getline
- && yyvsp[0].nodeval->rnode != NULL
- && yyvsp[0].nodeval->rnode->type == Node_redirect_twoway)
+ (yyval.nodeval) = node((yyvsp[0].nodeval), (yyvsp[-2].nodetypeval), (NODE *) NULL);
+ if ((yyvsp[-2].nodetypeval) == Node_redirect_twoway
+ && (yyvsp[0].nodeval)->type == Node_K_getline
+ && (yyvsp[0].nodeval)->rnode != NULL
+ && (yyvsp[0].nodeval)->rnode->type == Node_redirect_twoway)
yyerror(_("multistage two-way pipelines don't work"));
}
break;
case 74:
-#line 692 "awkgram.y"
+#line 696 "awkgram.y"
{
- yyval.nodeval = node(yyvsp[-3].nodeval, Node_K_if,
- node(yyvsp[0].nodeval, Node_if_branches, (NODE *) NULL));
+ (yyval.nodeval) = node((yyvsp[-3].nodeval), Node_K_if,
+ node((yyvsp[0].nodeval), Node_if_branches, (NODE *) NULL));
}
break;
case 75:
-#line 698 "awkgram.y"
- { yyval.nodeval = node(yyvsp[-6].nodeval, Node_K_if,
- node(yyvsp[-3].nodeval, Node_if_branches, yyvsp[0].nodeval)); }
+#line 702 "awkgram.y"
+ { (yyval.nodeval) = node((yyvsp[-6].nodeval), Node_K_if,
+ node((yyvsp[-3].nodeval), Node_if_branches, (yyvsp[0].nodeval))); }
break;
case 80:
-#line 714 "awkgram.y"
- { yyval.nodeval = NULL; }
+#line 718 "awkgram.y"
+ { (yyval.nodeval) = NULL; }
break;
case 81:
-#line 716 "awkgram.y"
- { yyval.nodeval = node(yyvsp[0].nodeval, Node_redirect_input, (NODE *) NULL); }
+#line 720 "awkgram.y"
+ { (yyval.nodeval) = node((yyvsp[0].nodeval), Node_redirect_input, (NODE *) NULL); }
break;
case 82:
-#line 721 "awkgram.y"
- { yyval.nodeval = NULL; }
+#line 725 "awkgram.y"
+ { (yyval.nodeval) = NULL; }
break;
case 83:
-#line 723 "awkgram.y"
- { yyval.nodeval = yyvsp[0].nodeval; }
+#line 727 "awkgram.y"
+ { (yyval.nodeval) = (yyvsp[0].nodeval); }
break;
case 84:
-#line 728 "awkgram.y"
- { yyval.nodeval = make_param(yyvsp[0].sval); }
+#line 732 "awkgram.y"
+ { (yyval.nodeval) = make_param((yyvsp[0].sval)); }
break;
case 85:
-#line 730 "awkgram.y"
- { yyval.nodeval = append_right(yyvsp[-2].nodeval, make_param(yyvsp[0].sval)); yyerrok; }
+#line 734 "awkgram.y"
+ { (yyval.nodeval) = append_right((yyvsp[-2].nodeval), make_param((yyvsp[0].sval))); yyerrok; }
break;
case 86:
-#line 732 "awkgram.y"
- { yyval.nodeval = NULL; }
+#line 736 "awkgram.y"
+ { (yyval.nodeval) = NULL; }
break;
case 87:
-#line 734 "awkgram.y"
- { yyval.nodeval = NULL; }
+#line 738 "awkgram.y"
+ { (yyval.nodeval) = NULL; }
break;
case 88:
-#line 736 "awkgram.y"
- { yyval.nodeval = NULL; }
+#line 740 "awkgram.y"
+ { (yyval.nodeval) = NULL; }
break;
case 89:
-#line 742 "awkgram.y"
- { yyval.nodeval = NULL; }
+#line 746 "awkgram.y"
+ { (yyval.nodeval) = NULL; }
break;
case 90:
-#line 744 "awkgram.y"
- { yyval.nodeval = yyvsp[0].nodeval; }
+#line 748 "awkgram.y"
+ { (yyval.nodeval) = (yyvsp[0].nodeval); }
break;
case 91:
-#line 749 "awkgram.y"
- { yyval.nodeval = NULL; }
+#line 753 "awkgram.y"
+ { (yyval.nodeval) = NULL; }
break;
case 92:
-#line 751 "awkgram.y"
- { yyval.nodeval = yyvsp[0].nodeval; }
+#line 755 "awkgram.y"
+ { (yyval.nodeval) = (yyvsp[0].nodeval); }
break;
case 93:
-#line 756 "awkgram.y"
- { yyval.nodeval = node(yyvsp[0].nodeval, Node_expression_list, (NODE *) NULL); }
+#line 760 "awkgram.y"
+ { (yyval.nodeval) = node((yyvsp[0].nodeval), Node_expression_list, (NODE *) NULL); }
break;
case 94:
-#line 758 "awkgram.y"
+#line 762 "awkgram.y"
{
- yyval.nodeval = append_right(yyvsp[-2].nodeval,
- node(yyvsp[0].nodeval, Node_expression_list, (NODE *) NULL));
+ (yyval.nodeval) = append_right((yyvsp[-2].nodeval),
+ node((yyvsp[0].nodeval), Node_expression_list, (NODE *) NULL));
yyerrok;
}
break;
case 95:
-#line 764 "awkgram.y"
- { yyval.nodeval = NULL; }
+#line 768 "awkgram.y"
+ { (yyval.nodeval) = NULL; }
break;
case 96:
-#line 766 "awkgram.y"
- { yyval.nodeval = NULL; }
+#line 770 "awkgram.y"
+ { (yyval.nodeval) = NULL; }
break;
case 97:
-#line 768 "awkgram.y"
- { yyval.nodeval = NULL; }
+#line 772 "awkgram.y"
+ { (yyval.nodeval) = NULL; }
break;
case 98:
-#line 770 "awkgram.y"
- { yyval.nodeval = NULL; }
+#line 774 "awkgram.y"
+ { (yyval.nodeval) = NULL; }
break;
case 99:
-#line 775 "awkgram.y"
+#line 779 "awkgram.y"
{
- if (do_lint && yyvsp[0].nodeval->type == Node_regex)
+ if (do_lint && (yyvsp[0].nodeval)->type == Node_regex)
lintwarn(_("regular expression on right of assignment"));
/*
* Optimization of `x = x y'. Can save lots of time
* if done a lot.
*/
- if (( yyvsp[-2].nodeval->type == Node_var
- || yyvsp[-2].nodeval->type == Node_var_new
- || yyvsp[-2].nodeval->type == Node_param_list)
- && yyvsp[-1].nodetypeval == Node_assign
- && yyvsp[0].nodeval->type == Node_concat
- && yyvsp[0].nodeval->lnode == yyvsp[-2].nodeval) {
- yyvsp[0].nodeval->type = Node_assign_concat; /* Just change the type */
- yyval.nodeval = yyvsp[0].nodeval; /* And use it directly */
+ if (( (yyvsp[-2].nodeval)->type == Node_var
+ || (yyvsp[-2].nodeval)->type == Node_var_new
+ || (yyvsp[-2].nodeval)->type == Node_param_list)
+ && (yyvsp[-1].nodetypeval) == Node_assign
+ && (yyvsp[0].nodeval)->type == Node_concat
+ && (yyvsp[0].nodeval)->lnode == (yyvsp[-2].nodeval)) {
+ (yyvsp[0].nodeval)->type = Node_assign_concat; /* Just change the type */
+ (yyval.nodeval) = (yyvsp[0].nodeval); /* And use it directly */
} else
- yyval.nodeval = node(yyvsp[-2].nodeval, yyvsp[-1].nodetypeval, yyvsp[0].nodeval);
+ (yyval.nodeval) = node((yyvsp[-2].nodeval), (yyvsp[-1].nodetypeval), (yyvsp[0].nodeval));
}
break;
case 100:
-#line 794 "awkgram.y"
- { yyval.nodeval = node(yyvsp[-2].nodeval, Node_and, yyvsp[0].nodeval); }
+#line 798 "awkgram.y"
+ { (yyval.nodeval) = node((yyvsp[-2].nodeval), Node_and, (yyvsp[0].nodeval)); }
break;
case 101:
-#line 796 "awkgram.y"
- { yyval.nodeval = node(yyvsp[-2].nodeval, Node_or, yyvsp[0].nodeval); }
+#line 800 "awkgram.y"
+ { (yyval.nodeval) = node((yyvsp[-2].nodeval), Node_or, (yyvsp[0].nodeval)); }
break;
case 102:
-#line 798 "awkgram.y"
+#line 802 "awkgram.y"
{
- if (yyvsp[-2].nodeval->type == Node_regex)
+ if ((yyvsp[-2].nodeval)->type == Node_regex)
warning(_("regular expression on left of `~' or `!~' operator"));
- yyval.nodeval = node(yyvsp[-2].nodeval, yyvsp[-1].nodetypeval, mk_rexp(yyvsp[0].nodeval));
+ (yyval.nodeval) = node((yyvsp[-2].nodeval), (yyvsp[-1].nodetypeval), mk_rexp((yyvsp[0].nodeval)));
}
break;
case 103:
-#line 804 "awkgram.y"
- { yyval.nodeval = node(variable(yyvsp[0].sval, CAN_FREE, Node_var_array), Node_in_array, yyvsp[-2].nodeval); }
+#line 808 "awkgram.y"
+ { (yyval.nodeval) = node(variable((yyvsp[0].sval), CAN_FREE, Node_var_array), Node_in_array, (yyvsp[-2].nodeval)); }
break;
case 104:
-#line 806 "awkgram.y"
+#line 810 "awkgram.y"
{
- if (do_lint && yyvsp[0].nodeval->type == Node_regex)
+ if (do_lint && (yyvsp[0].nodeval)->type == Node_regex)
lintwarn(_("regular expression on right of comparison"));
- yyval.nodeval = node(yyvsp[-2].nodeval, yyvsp[-1].nodetypeval, yyvsp[0].nodeval);
+ (yyval.nodeval) = node((yyvsp[-2].nodeval), (yyvsp[-1].nodetypeval), (yyvsp[0].nodeval));
}
break;
case 105:
-#line 812 "awkgram.y"
- { yyval.nodeval = node(yyvsp[-4].nodeval, Node_cond_exp, node(yyvsp[-2].nodeval, Node_if_branches, yyvsp[0].nodeval));}
+#line 816 "awkgram.y"
+ { (yyval.nodeval) = node((yyvsp[-4].nodeval), Node_cond_exp, node((yyvsp[-2].nodeval), Node_if_branches, (yyvsp[0].nodeval)));}
break;
case 106:
-#line 814 "awkgram.y"
- { yyval.nodeval = yyvsp[0].nodeval; }
+#line 818 "awkgram.y"
+ { (yyval.nodeval) = (yyvsp[0].nodeval); }
break;
case 107:
-#line 819 "awkgram.y"
- { yyval.nodetypeval = yyvsp[0].nodetypeval; }
+#line 823 "awkgram.y"
+ { (yyval.nodetypeval) = (yyvsp[0].nodetypeval); }
break;
case 108:
-#line 821 "awkgram.y"
- { yyval.nodetypeval = yyvsp[0].nodetypeval; }
+#line 825 "awkgram.y"
+ { (yyval.nodetypeval) = (yyvsp[0].nodetypeval); }
break;
case 109:
-#line 823 "awkgram.y"
- { yyval.nodetypeval = Node_assign_quotient; }
+#line 827 "awkgram.y"
+ { (yyval.nodetypeval) = Node_assign_quotient; }
break;
case 110:
-#line 828 "awkgram.y"
- { yyval.nodetypeval = yyvsp[0].nodetypeval; }
+#line 832 "awkgram.y"
+ { (yyval.nodetypeval) = (yyvsp[0].nodetypeval); }
break;
case 111:
-#line 830 "awkgram.y"
- { yyval.nodetypeval = Node_less; }
+#line 834 "awkgram.y"
+ { (yyval.nodetypeval) = Node_less; }
break;
case 113:
-#line 835 "awkgram.y"
- { yyval.nodetypeval = Node_greater; }
+#line 839 "awkgram.y"
+ { (yyval.nodetypeval) = Node_greater; }
break;
case 114:
-#line 840 "awkgram.y"
- { yyval.nodeval = yyvsp[0].nodeval; }
+#line 844 "awkgram.y"
+ { (yyval.nodeval) = (yyvsp[0].nodeval); }
break;
case 115:
-#line 842 "awkgram.y"
+#line 846 "awkgram.y"
{
- yyval.nodeval = node(node(make_number(0.0),
+ (yyval.nodeval) = node(node(make_number(0.0),
Node_field_spec,
(NODE *) NULL),
Node_nomatch,
- yyvsp[0].nodeval);
+ (yyvsp[0].nodeval));
}
break;
case 116:
-#line 850 "awkgram.y"
- { yyval.nodeval = node(variable(yyvsp[0].sval, CAN_FREE, Node_var_array), Node_in_array, yyvsp[-3].nodeval); }
+#line 854 "awkgram.y"
+ { (yyval.nodeval) = node(variable((yyvsp[0].sval), CAN_FREE, Node_var_array), Node_in_array, (yyvsp[-3].nodeval)); }
break;
case 117:
-#line 852 "awkgram.y"
- { yyval.nodeval = yyvsp[0].nodeval; }
+#line 856 "awkgram.y"
+ { (yyval.nodeval) = (yyvsp[0].nodeval); }
break;
case 118:
-#line 854 "awkgram.y"
- { yyval.nodeval = node(yyvsp[-1].nodeval, Node_concat, yyvsp[0].nodeval); }
+#line 858 "awkgram.y"
+ { (yyval.nodeval) = node((yyvsp[-1].nodeval), Node_concat, (yyvsp[0].nodeval)); }
break;
case 120:
-#line 861 "awkgram.y"
- { yyval.nodeval = node(yyvsp[-2].nodeval, Node_exp, yyvsp[0].nodeval); }
+#line 865 "awkgram.y"
+ { (yyval.nodeval) = node((yyvsp[-2].nodeval), Node_exp, (yyvsp[0].nodeval)); }
break;
case 121:
-#line 863 "awkgram.y"
- { yyval.nodeval = node(yyvsp[-2].nodeval, Node_times, yyvsp[0].nodeval); }
+#line 867 "awkgram.y"
+ { (yyval.nodeval) = node((yyvsp[-2].nodeval), Node_times, (yyvsp[0].nodeval)); }
break;
case 122:
-#line 865 "awkgram.y"
- { yyval.nodeval = node(yyvsp[-2].nodeval, Node_quotient, yyvsp[0].nodeval); }
+#line 869 "awkgram.y"
+ { (yyval.nodeval) = node((yyvsp[-2].nodeval), Node_quotient, (yyvsp[0].nodeval)); }
break;
case 123:
-#line 867 "awkgram.y"
- { yyval.nodeval = node(yyvsp[-2].nodeval, Node_mod, yyvsp[0].nodeval); }
+#line 871 "awkgram.y"
+ { (yyval.nodeval) = node((yyvsp[-2].nodeval), Node_mod, (yyvsp[0].nodeval)); }
break;
case 124:
-#line 869 "awkgram.y"
- { yyval.nodeval = node(yyvsp[-2].nodeval, Node_plus, yyvsp[0].nodeval); }
+#line 873 "awkgram.y"
+ { (yyval.nodeval) = node((yyvsp[-2].nodeval), Node_plus, (yyvsp[0].nodeval)); }
break;
case 125:
-#line 871 "awkgram.y"
- { yyval.nodeval = node(yyvsp[-2].nodeval, Node_minus, yyvsp[0].nodeval); }
+#line 875 "awkgram.y"
+ { (yyval.nodeval) = node((yyvsp[-2].nodeval), Node_minus, (yyvsp[0].nodeval)); }
break;
case 126:
-#line 873 "awkgram.y"
+#line 877 "awkgram.y"
{
- if (do_lint && parsing_end_rule && yyvsp[0].nodeval == NULL)
+ if (do_lint && parsing_end_rule && (yyvsp[0].nodeval) == NULL)
lintwarn(_("non-redirected `getline' undefined inside END action"));
- yyval.nodeval = node(yyvsp[-1].nodeval, Node_K_getline, yyvsp[0].nodeval);
+ (yyval.nodeval) = node((yyvsp[-1].nodeval), Node_K_getline, (yyvsp[0].nodeval));
}
break;
case 127:
-#line 879 "awkgram.y"
+#line 883 "awkgram.y"
{
- yyval.nodeval = node(yyvsp[0].nodeval, Node_K_getline,
- node(yyvsp[-3].nodeval, yyvsp[-2].nodetypeval, (NODE *) NULL));
+ (yyval.nodeval) = node((yyvsp[0].nodeval), Node_K_getline,
+ node((yyvsp[-3].nodeval), (yyvsp[-2].nodetypeval), (NODE *) NULL));
}
break;
case 128:
-#line 884 "awkgram.y"
- { yyval.nodeval = node(yyvsp[-1].nodeval, Node_postincrement, (NODE *) NULL); }
+#line 888 "awkgram.y"
+ { (yyval.nodeval) = node((yyvsp[-1].nodeval), Node_postincrement, (NODE *) NULL); }
break;
case 129:
-#line 886 "awkgram.y"
- { yyval.nodeval = node(yyvsp[-1].nodeval, Node_postdecrement, (NODE *) NULL); }
+#line 890 "awkgram.y"
+ { (yyval.nodeval) = node((yyvsp[-1].nodeval), Node_postdecrement, (NODE *) NULL); }
break;
case 130:
-#line 891 "awkgram.y"
- { yyval.nodeval = node(yyvsp[0].nodeval, Node_not, (NODE *) NULL); }
+#line 895 "awkgram.y"
+ { (yyval.nodeval) = node((yyvsp[0].nodeval), Node_not, (NODE *) NULL); }
break;
case 131:
-#line 893 "awkgram.y"
- { yyval.nodeval = yyvsp[-1].nodeval; }
+#line 897 "awkgram.y"
+ { (yyval.nodeval) = (yyvsp[-1].nodeval); }
break;
case 132:
-#line 896 "awkgram.y"
- { yyval.nodeval = snode(yyvsp[-1].nodeval, Node_builtin, (int) yyvsp[-3].lval); }
+#line 900 "awkgram.y"
+ { (yyval.nodeval) = snode((yyvsp[-1].nodeval), Node_builtin, (int) (yyvsp[-3].lval)); }
break;
case 133:
-#line 898 "awkgram.y"
- { yyval.nodeval = snode(yyvsp[-1].nodeval, Node_builtin, (int) yyvsp[-3].lval); }
+#line 902 "awkgram.y"
+ { (yyval.nodeval) = snode((yyvsp[-1].nodeval), Node_builtin, (int) (yyvsp[-3].lval)); }
break;
case 134:
-#line 900 "awkgram.y"
+#line 904 "awkgram.y"
{
if (do_lint)
lintwarn(_("call of `length' without parentheses is not portable"));
- yyval.nodeval = snode((NODE *) NULL, Node_builtin, (int) yyvsp[0].lval);
+ (yyval.nodeval) = snode((NODE *) NULL, Node_builtin, (int) (yyvsp[0].lval));
if (do_posix)
warning(_("call of `length' without parentheses is deprecated by POSIX"));
}
break;
case 135:
-#line 908 "awkgram.y"
+#line 912 "awkgram.y"
{
- yyval.nodeval = node(yyvsp[-1].nodeval, Node_func_call, make_string(yyvsp[-3].sval, strlen(yyvsp[-3].sval)));
- yyval.nodeval->funcbody = NULL;
- func_use(yyvsp[-3].sval, FUNC_USE);
- param_sanity(yyvsp[-1].nodeval);
- free(yyvsp[-3].sval);
+ (yyval.nodeval) = node((yyvsp[-1].nodeval), Node_func_call, make_string((yyvsp[-3].sval), strlen((yyvsp[-3].sval))));
+ (yyval.nodeval)->funcbody = NULL;
+ func_use((yyvsp[-3].sval), FUNC_USE);
+ param_sanity((yyvsp[-1].nodeval));
+ free((yyvsp[-3].sval));
}
break;
case 137:
-#line 917 "awkgram.y"
- { yyval.nodeval = node(yyvsp[0].nodeval, Node_preincrement, (NODE *) NULL); }
+#line 921 "awkgram.y"
+ { (yyval.nodeval) = node((yyvsp[0].nodeval), Node_preincrement, (NODE *) NULL); }
break;
case 138:
-#line 919 "awkgram.y"
- { yyval.nodeval = node(yyvsp[0].nodeval, Node_predecrement, (NODE *) NULL); }
+#line 923 "awkgram.y"
+ { (yyval.nodeval) = node((yyvsp[0].nodeval), Node_predecrement, (NODE *) NULL); }
break;
case 139:
-#line 921 "awkgram.y"
- { yyval.nodeval = yyvsp[0].nodeval; }
+#line 925 "awkgram.y"
+ { (yyval.nodeval) = (yyvsp[0].nodeval); }
break;
case 140:
-#line 923 "awkgram.y"
- { yyval.nodeval = yyvsp[0].nodeval; }
+#line 927 "awkgram.y"
+ { (yyval.nodeval) = (yyvsp[0].nodeval); }
break;
case 141:
-#line 926 "awkgram.y"
+#line 930 "awkgram.y"
{
- if (yyvsp[0].nodeval->type == Node_val && (yyvsp[0].nodeval->flags & (STRCUR|STRING)) == 0) {
- yyvsp[0].nodeval->numbr = -(force_number(yyvsp[0].nodeval));
- yyval.nodeval = yyvsp[0].nodeval;
+ if ((yyvsp[0].nodeval)->type == Node_val && ((yyvsp[0].nodeval)->flags & (STRCUR|STRING)) == 0) {
+ (yyvsp[0].nodeval)->numbr = -(force_number((yyvsp[0].nodeval)));
+ (yyval.nodeval) = (yyvsp[0].nodeval);
} else
- yyval.nodeval = node(yyvsp[0].nodeval, Node_unary_minus, (NODE *) NULL);
+ (yyval.nodeval) = node((yyvsp[0].nodeval), Node_unary_minus, (NODE *) NULL);
}
break;
case 142:
-#line 934 "awkgram.y"
+#line 938 "awkgram.y"
{
/*
* was: $$ = $2
* POSIX semantics: force a conversion to numeric type
*/
- yyval.nodeval = node (make_number(0.0), Node_plus, yyvsp[0].nodeval);
+ (yyval.nodeval) = node (make_number(0.0), Node_plus, (yyvsp[0].nodeval));
}
break;
case 143:
-#line 945 "awkgram.y"
- { yyval.nodeval = NULL; }
+#line 949 "awkgram.y"
+ { (yyval.nodeval) = NULL; }
break;
case 144:
-#line 947 "awkgram.y"
- { yyval.nodeval = yyvsp[0].nodeval; }
+#line 951 "awkgram.y"
+ { (yyval.nodeval) = (yyvsp[0].nodeval); }
break;
case 145:
-#line 952 "awkgram.y"
- { yyval.nodeval = variable(yyvsp[0].sval, CAN_FREE, Node_var_new); }
+#line 956 "awkgram.y"
+ { (yyval.nodeval) = variable((yyvsp[0].sval), CAN_FREE, Node_var_new); }
break;
case 146:
-#line 954 "awkgram.y"
+#line 958 "awkgram.y"
{
NODE *n;
- if ((n = lookup(yyvsp[-3].sval)) != NULL && ! isarray(n))
+ if ((n = lookup((yyvsp[-3].sval))) != NULL && ! isarray(n))
yyerror(_("use of non-array as array"));
- else if (yyvsp[-1].nodeval == NULL) {
+ else if ((yyvsp[-1].nodeval) == NULL) {
fatal(_("invalid subscript expression"));
- } else if (yyvsp[-1].nodeval->rnode == NULL) {
- yyval.nodeval = node(variable(yyvsp[-3].sval, CAN_FREE, Node_var_array), Node_subscript, yyvsp[-1].nodeval->lnode);
- freenode(yyvsp[-1].nodeval);
+ } else if ((yyvsp[-1].nodeval)->rnode == NULL) {
+ (yyval.nodeval) = node(variable((yyvsp[-3].sval), CAN_FREE, Node_var_array), Node_subscript, (yyvsp[-1].nodeval)->lnode);
+ freenode((yyvsp[-1].nodeval));
} else
- yyval.nodeval = node(variable(yyvsp[-3].sval, CAN_FREE, Node_var_array), Node_subscript, yyvsp[-1].nodeval);
+ (yyval.nodeval) = node(variable((yyvsp[-3].sval), CAN_FREE, Node_var_array), Node_subscript, (yyvsp[-1].nodeval));
}
break;
case 147:
-#line 968 "awkgram.y"
- { yyval.nodeval = node(yyvsp[0].nodeval, Node_field_spec, (NODE *) NULL); }
+#line 972 "awkgram.y"
+ { (yyval.nodeval) = node((yyvsp[0].nodeval), Node_field_spec, (NODE *) NULL); }
break;
case 149:
-#line 976 "awkgram.y"
+#line 986 "awkgram.y"
{ yyerrok; }
break;
case 150:
-#line 980 "awkgram.y"
+#line 990 "awkgram.y"
{ yyerrok; }
break;
case 153:
-#line 989 "awkgram.y"
+#line 999 "awkgram.y"
{ yyerrok; }
break;
case 154:
-#line 993 "awkgram.y"
+#line 1003 "awkgram.y"
{ yyerrok; }
break;
case 155:
-#line 996 "awkgram.y"
+#line 1006 "awkgram.y"
{ yyerrok; }
break;
}
-/* Line 991 of yacc.c. */
-#line 2622 "y.tab.c"
+/* Line 1037 of yacc.c. */
+#line 2661 "y.tab.c"
yyvsp -= yylen;
yyssp -= yylen;
@@ -2662,18 +2696,33 @@ yyerrlab:
{
YYSIZE_T yysize = 0;
int yytype = YYTRANSLATE (yychar);
+ const char* yyprefix;
char *yymsg;
- int yyx, yycount;
+ int yyx;
- 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++)
+ int yyxbegin = yyn < 0 ? -yyn : 0;
+
+ /* Stay within bounds of both yycheck and yytname. */
+ int yychecklim = YYLAST - yyn;
+ int yyxend = yychecklim < YYNTOKENS ? yychecklim : YYNTOKENS;
+ int yycount = 0;
+
+ yyprefix = ", expecting ";
+ for (yyx = yyxbegin; yyx < yyxend; ++yyx)
if (yycheck[yyx + yyn] == yyx && yyx != YYTERROR)
- yysize += yystrlen (yytname[yyx]) + 15, yycount++;
- yysize += yystrlen ("syntax error, unexpected ") + 1;
- yysize += yystrlen (yytname[yytype]);
+ {
+ yysize += yystrlen (yyprefix) + yystrlen (yytname [yyx]);
+ yycount += 1;
+ if (yycount == 5)
+ {
+ yysize = 0;
+ break;
+ }
+ }
+ yysize += (sizeof ("syntax error, unexpected ")
+ + yystrlen (yytname[yytype]));
yymsg = (char *) YYSTACK_ALLOC (yysize);
if (yymsg != 0)
{
@@ -2682,16 +2731,13 @@ yyerrlab:
if (yycount < 5)
{
- yycount = 0;
- for (yyx = yyn < 0 ? -yyn : 0;
- yyx < (int) (sizeof (yytname) / sizeof (char *));
- yyx++)
+ yyprefix = ", expecting ";
+ for (yyx = yyxbegin; yyx < yyxend; ++yyx)
if (yycheck[yyx + yyn] == yyx && yyx != YYTERROR)
{
- const char *yyq = ! yycount ? ", expecting " : " or ";
- yyp = yystpcpy (yyp, yyq);
+ yyp = yystpcpy (yyp, yyprefix);
yyp = yystpcpy (yyp, yytname[yyx]);
- yycount++;
+ yyprefix = " or ";
}
}
yyerror (yymsg);
@@ -2709,54 +2755,58 @@ yyerrlab:
if (yyerrstatus == 3)
{
- /* If just tried and failed to reuse lookahead token after an
+ /* If just tried and failed to reuse look-ahead token after an
error, discard it. */
- /* Return failure if at end of input. */
- if (yychar == YYEOF)
+ if (yychar <= YYEOF)
{
- /* Pop the error token. */
- YYPOPSTACK;
- /* Pop the rest of the stack. */
- while (yyss < yyssp)
- {
- YYDSYMPRINTF ("Error: popping", yystos[*yyssp], yyvsp, yylsp);
- yydestruct (yystos[*yyssp], yyvsp);
- YYPOPSTACK;
- }
- YYABORT;
+ /* If at end of input, pop the error token,
+ then the rest of the stack, then return failure. */
+ if (yychar == YYEOF)
+ for (;;)
+ {
+
+ YYPOPSTACK;
+ if (yyssp == yyss)
+ YYABORT;
+ yydestruct ("Error: popping",
+ yystos[*yyssp], yyvsp);
+ }
}
-
- YYDSYMPRINTF ("Error: discarding", yytoken, &yylval, &yylloc);
- yydestruct (yytoken, &yylval);
- yychar = YYEMPTY;
-
+ else
+ {
+ yydestruct ("Error: discarding", yytoken, &yylval);
+ yychar = YYEMPTY;
+ }
}
- /* Else will try to reuse lookahead token after shifting the error
+ /* Else will try to reuse look-ahead token after shifting the error
token. */
- goto yyerrlab2;
+ goto yyerrlab1;
-/*----------------------------------------------------.
-| yyerrlab1 -- error raised explicitly by an action. |
-`----------------------------------------------------*/
-yyerrlab1:
+/*---------------------------------------------------.
+| yyerrorlab -- error raised explicitly by YYERROR. |
+`---------------------------------------------------*/
+yyerrorlab:
- /* Suppress GCC warning that yyerrlab1 is unused when no action
- invokes YYERROR. */
-#if defined (__GNUC_MINOR__) && 2093 <= (__GNUC__ * 1000 + __GNUC_MINOR__)
- __attribute__ ((__unused__))
+#ifdef __GNUC__
+ /* Pacify GCC when the user code never invokes YYERROR and the label
+ yyerrorlab therefore never appears in user code. */
+ if (0)
+ goto yyerrorlab;
#endif
-
- goto yyerrlab2;
+yyvsp -= yylen;
+ yyssp -= yylen;
+ yystate = *yyssp;
+ goto yyerrlab1;
-/*---------------------------------------------------------------.
-| yyerrlab2 -- pop states until the error token can be shifted. |
-`---------------------------------------------------------------*/
-yyerrlab2:
+/*-------------------------------------------------------------.
+| yyerrlab1 -- common code for both syntax error and YYERROR. |
+`-------------------------------------------------------------*/
+yyerrlab1:
yyerrstatus = 3; /* Each real token shifted decrements this. */
for (;;)
@@ -2777,22 +2827,22 @@ yyerrlab2:
if (yyssp == yyss)
YYABORT;
- YYDSYMPRINTF ("Error: popping", yystos[*yyssp], yyvsp, yylsp);
- yydestruct (yystos[yystate], yyvsp);
- yyvsp--;
- yystate = *--yyssp;
+ yydestruct ("Error: popping", yystos[yystate], yyvsp);
+ YYPOPSTACK;
+ yystate = *yyssp;
YY_STACK_PRINT (yyss, yyssp);
}
if (yyn == YYFINAL)
YYACCEPT;
- YYDPRINTF ((stderr, "Shifting error token, "));
-
*++yyvsp = yylval;
+ /* Shift the error token. */
+ YY_SYMBOL_PRINT ("Shifting", yystos[yyn], yyvsp, yylsp);
+
yystate = yyn;
goto yynewstate;
@@ -2808,6 +2858,9 @@ yyacceptlab:
| yyabortlab -- YYABORT comes here. |
`-----------------------------------*/
yyabortlab:
+ yydestruct ("Error: discarding lookahead",
+ yytoken, &yylval);
+ yychar = YYEMPTY;
yyresult = 1;
goto yyreturn;
@@ -2830,7 +2883,7 @@ yyreturn:
}
-#line 999 "awkgram.y"
+#line 1009 "awkgram.y"
struct token {
@@ -2940,6 +2993,9 @@ static int cur_ring_idx;
/* This macro means that last nextc() return a singlebyte character
or 1st byte of a multibyte character. */
#define nextc_is_1stbyte (cur_char_ring[cur_ring_idx] == 1)
+#else /* MBS_SUPPORT */
+/* a dummy */
+#define nextc_is_1stbyte 1
#endif /* MBS_SUPPORT */
/* getfname --- return name of a builtin function (for pretty printing) */
@@ -3267,7 +3323,12 @@ tokexpand()
static int
nextc(void)
{
- if (gawk_mb_cur_max > 1) {
+ if (gawk_mb_cur_max > 1) {
+ if (!lexptr || lexptr >= lexend) {
+ if (! get_src_buf())
+ return EOF;
+ }
+
/* Update the buffer index. */
cur_ring_idx = (cur_ring_idx == RING_BUFFER_SIZE - 1)? 0 :
cur_ring_idx + 1;
@@ -3279,11 +3340,6 @@ nextc(void)
mbstate_t tmp_state;
size_t mbclen;
- if (!lexptr || lexptr >= lexend)
- if (!get_src_buf()) {
- return EOF;
- }
-
for (idx = 0 ; lexptr + idx < lexend ; idx++) {
tmp_state = cur_mbstate;
mbclen = mbrlen(lexptr, idx + 1, &tmp_state);
@@ -3357,24 +3413,17 @@ nextc(void)
/* pushback --- push a character back on the input */
-#ifdef MBS_SUPPORT
-
-static void
+static inline void
pushback(void)
{
- if (gawk_mb_cur_max > 1) {
+#ifdef MBS_SUPPORT
+ if (gawk_mb_cur_max > 1)
cur_ring_idx = (cur_ring_idx == 0)? RING_BUFFER_SIZE - 1 :
cur_ring_idx - 1;
- (lexptr && lexptr > lexptr_begin ? lexptr-- : lexptr);
- } else
- (lexptr && lexptr > lexptr_begin ? lexptr-- : lexptr);
+#endif
+ (lexptr && lexptr > lexptr_begin ? lexptr-- : lexptr);
}
-#else
-
-#define pushback() (lexptr && lexptr > lexptr_begin ? lexptr-- : lexptr)
-
-#endif /* MBS_SUPPORT */
/* allow_newline --- allow newline after &&, ||, ? and : */
@@ -3465,10 +3514,8 @@ yylex(void)
tok = tokstart;
for (;;) {
c = nextc();
-#ifdef MBS_SUPPORT
- if (gawk_mb_cur_max == 1 || nextc_is_1stbyte)
-#endif
- switch (c) {
+
+ if (gawk_mb_cur_max == 1 || nextc_is_1stbyte) switch (c) {
case '[':
/* one day check for `.' and `=' too */
if (nextc() == ':' || in_brack == 0)
@@ -3503,6 +3550,21 @@ yylex(void)
end_regexp:
tokadd('\0');
yylval.sval = tokstart;
+ if (do_lint) {
+ int peek = nextc();
+
+ pushback();
+ if (peek == 'i' || peek == 's') {
+ if (source)
+ lintwarn(
+ _("%s: %d: tawk regex modifier `/.../%c' doesn't work in gawk"),
+ source, sourceline, peek);
+ else
+ lintwarn(
+ _("tawk regex modifier `/.../%c' doesn't work in gawk"),
+ peek);
+ }
+ }
return lasttok = REGEXP;
case '\n':
pushback();
@@ -3516,7 +3578,9 @@ end_regexp:
}
}
retry:
- while ((c = nextc()) == ' ' || c == '\t')
+
+ /* skipping \r is a hack, but windows is just too pervasive. sigh. */
+ while ((c = nextc()) == ' ' || c == '\t' || c == '\r')
continue;
lexeme = lexptr ? lexptr - 1 : lexptr;
@@ -3524,10 +3588,7 @@ retry:
tok = tokstart;
yylval.nodetypeval = Node_illegal;
-#ifdef MBS_SUPPORT
- if (gawk_mb_cur_max == 1 || nextc_is_1stbyte)
-#endif
- switch (c) {
+ if (gawk_mb_cur_max == 1 || nextc_is_1stbyte) switch (c) {
case EOF:
if (lasttok != NEWLINE) {
lasttok = NEWLINE;
@@ -3571,7 +3632,7 @@ retry:
*/
if (! do_traditional) {
/* strip trailing white-space and/or comment */
- while ((c = nextc()) == ' ' || c == '\t')
+ while ((c = nextc()) == ' ' || c == '\t' || c == '\r')
continue;
if (c == '#') {
if (do_lint)
@@ -3772,10 +3833,8 @@ retry:
yyerror(_("unterminated string"));
exit(1);
}
-#ifdef MBS_SUPPORT
- if (gawk_mb_cur_max == 1 || nextc_is_1stbyte)
-#endif
- if (c == '\\') {
+ if ((gawk_mb_cur_max == 1 || nextc_is_1stbyte) &&
+ c == '\\') {
c = nextc();
if (c == '\n') {
sourceline++;
@@ -3841,11 +3900,21 @@ retry:
case 'X':
if (do_traditional)
goto done;
- if (tok == tokstart + 2)
- inhex = TRUE;
+ if (tok == tokstart + 2) {
+ int peek = nextc();
+
+ if (ISXDIGIT(peek)) {
+ inhex = TRUE;
+ pushback(); /* following digit */
+ } else {
+ pushback(); /* x or X */
+ goto done;
+ }
+ }
break;
case '.':
- if (seen_point) {
+ /* period ends exponent part of floating point number */
+ if (seen_point || seen_e) {
gotnumber = TRUE;
break;
}
@@ -3860,10 +3929,23 @@ retry:
break;
}
seen_e = TRUE;
- if ((c = nextc()) == '-' || c == '+')
- tokadd(c);
- else
- pushback();
+ if ((c = nextc()) == '-' || c == '+') {
+ int c2 = nextc();
+
+ if (ISDIGIT(c2)) {
+ tokadd(c);
+ tokadd(c2);
+ } else {
+ pushback(); /* non-digit after + or - */
+ pushback(); /* + or - */
+ pushback(); /* e or E */
+ }
+ } else if (! ISDIGIT(c)) {
+ pushback(); /* character after e or E */
+ pushback(); /* e or E */
+ } else {
+ pushback(); /* digit */
+ }
break;
case 'a':
case 'A':
@@ -3904,12 +3986,14 @@ retry:
eof_warned = TRUE;
}
tokadd('\0');
- if (! do_traditional && isnondecimal(tokstart)) {
- static short warned = FALSE;
- if (do_lint && ! warned) {
- warned = TRUE;
- lintwarn("numeric constant `%.*s' treated as octal or hexadecimal",
- strlen(tokstart)-1, tokstart);
+ if (! do_traditional && isnondecimal(tokstart, FALSE)) {
+ if (do_lint) {
+ if (ISDIGIT(tokstart[1])) /* not an 'x' or 'X' */
+ lintwarn("numeric constant `%.*s' treated as octal",
+ (int) strlen(tokstart)-1, tokstart);
+ else if (tokstart[1] == 'x' || tokstart[1] == 'X')
+ lintwarn("numeric constant `%.*s' treated as hexadecimal",
+ (int) strlen(tokstart)-1, tokstart);
}
yylval.nodeval = make_number(nondec2awknum(tokstart, strlen(tokstart)));
} else
@@ -3955,7 +4039,7 @@ retry:
*
* print "xyzzy"$_"foo"
*
- * Without the check for ` lasttok != '$'' ', this is parsed as
+ * Without the check for ` lasttok != '$' ', this is parsed as
*
* print "xxyzz" $(_"foo")
*
@@ -4856,6 +4940,37 @@ param_sanity(NODE *arglist)
}
}
+/* deferred varibles --- those that are only defined if needed. */
+
+/*
+ * Is there any reason to use a hash table for deferred variables? At the
+ * moment, there are only 1 to 3 such variables, so it may not be worth
+ * the overhead. If more modules start using this facility, it should
+ * probably be converted into a hash table.
+ */
+
+static struct deferred_variable {
+ NODE *(*load_func)(void);
+ struct deferred_variable *next;
+ char name[1]; /* variable-length array */
+} *deferred_variables;
+
+/* register_deferred_variable --- add a var name and loading function to the list */
+
+void
+register_deferred_variable(const char *name, NODE *(*load_func)(void))
+{
+ struct deferred_variable *dv;
+ size_t sl = strlen(name);
+
+ emalloc(dv, struct deferred_variable *, sizeof(*dv)+sl,
+ "register_deferred_variable");
+ dv->load_func = load_func;
+ dv->next = deferred_variables;
+ memcpy(dv->name, name, sl+1);
+ deferred_variables = dv;
+}
+
/* variable --- make sure NAME is in the symbol table */
NODE *
@@ -4870,22 +4985,27 @@ variable(char *name, int can_free, NODETYPE type)
} else {
/* not found */
- if (! do_traditional && STREQ(name, "PROCINFO"))
- r = load_procinfo();
- else if (STREQ(name, "ENVIRON"))
- r = load_environ();
- else {
- /*
- * This is the only case in which we may not free the string.
- */
- NODE *n;
-
- if (type == Node_var_array)
- n = node((NODE *) NULL, type, (NODE *) NULL);
- else
- n = node(Nnull_string, type, (NODE *) NULL);
+ struct deferred_variable *dv;
+
+ for (dv = deferred_variables; TRUE; dv = dv->next) {
+ if (dv == NULL) {
+ /*
+ * This is the only case in which we may not
+ * free the string.
+ */
+ NODE *n;
+
+ if (type == Node_var_array)
+ n = node(NULL, type, NULL);
+ else
+ n = node(Nnull_string, type, NULL);
- return install(name, n);
+ return install(name, n);
+ }
+ if (STREQ(name, dv->name)) {
+ r = (*dv->load_func)();
+ break;
+ }
}
}
if (can_free)
diff --git a/awkgram.y b/awkgram.y
index a70a36b0..b222ddc1 100644
--- a/awkgram.y
+++ b/awkgram.y
@@ -3,7 +3,7 @@
*/
/*
- * Copyright (C) 1986, 1988, 1989, 1991-2004 the Free Software Foundation, Inc.
+ * Copyright (C) 1986, 1988, 1989, 1991-2005 the Free Software Foundation, Inc.
*
* This file is part of GAWK, the GNU implementation of the
* AWK Programming Language.
@@ -20,7 +20,7 @@
*
* 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
+ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA
*/
%{
@@ -308,9 +308,11 @@ regexp
NODE *n;
size_t len = strlen($3);
- if (do_lint && ($3)[0] == '*') {
- /* possible C comment */
- if (($3)[len-1] == '*')
+ if (do_lint) {
+ if (len == 0)
+ lintwarn(_("regexp constant `//' looks like a C++ comment, but is not"));
+ else if (($3)[0] == '*' && ($3)[len-1] == '*')
+ /* possible C comment */
lintwarn(_("regexp constant `/%s/' looks like a C comment, but is not"), tokstart);
}
getnode(n);
@@ -404,6 +406,8 @@ statement
&& strcmp($5, arr->vname) == 0) {
$8->type = Node_K_delete_loop;
$$ = $8;
+ free($3); /* thanks to valgrind for pointing these out */
+ free($5);
}
else
goto regular_loop;
@@ -966,6 +970,12 @@ variable
}
| '$' non_post_simp_exp
{ $$ = node($2, Node_field_spec, (NODE *) NULL); }
+/*
+#if 0
+ | lex_builtin
+ { fatal(_("can't use built-in function `%s' as a variable"), tokstart); }
+#endif
+*/
;
l_brace
@@ -1105,6 +1115,9 @@ static int cur_ring_idx;
/* This macro means that last nextc() return a singlebyte character
or 1st byte of a multibyte character. */
#define nextc_is_1stbyte (cur_char_ring[cur_ring_idx] == 1)
+#else /* MBS_SUPPORT */
+/* a dummy */
+#define nextc_is_1stbyte 1
#endif /* MBS_SUPPORT */
/* getfname --- return name of a builtin function (for pretty printing) */
@@ -1432,7 +1445,12 @@ tokexpand()
static int
nextc(void)
{
- if (gawk_mb_cur_max > 1) {
+ if (gawk_mb_cur_max > 1) {
+ if (!lexptr || lexptr >= lexend) {
+ if (! get_src_buf())
+ return EOF;
+ }
+
/* Update the buffer index. */
cur_ring_idx = (cur_ring_idx == RING_BUFFER_SIZE - 1)? 0 :
cur_ring_idx + 1;
@@ -1444,11 +1462,6 @@ nextc(void)
mbstate_t tmp_state;
size_t mbclen;
- if (!lexptr || lexptr >= lexend)
- if (!get_src_buf()) {
- return EOF;
- }
-
for (idx = 0 ; lexptr + idx < lexend ; idx++) {
tmp_state = cur_mbstate;
mbclen = mbrlen(lexptr, idx + 1, &tmp_state);
@@ -1522,24 +1535,17 @@ nextc(void)
/* pushback --- push a character back on the input */
-#ifdef MBS_SUPPORT
-
-static void
+static inline void
pushback(void)
{
- if (gawk_mb_cur_max > 1) {
+#ifdef MBS_SUPPORT
+ if (gawk_mb_cur_max > 1)
cur_ring_idx = (cur_ring_idx == 0)? RING_BUFFER_SIZE - 1 :
cur_ring_idx - 1;
- (lexptr && lexptr > lexptr_begin ? lexptr-- : lexptr);
- } else
- (lexptr && lexptr > lexptr_begin ? lexptr-- : lexptr);
+#endif
+ (lexptr && lexptr > lexptr_begin ? lexptr-- : lexptr);
}
-#else
-
-#define pushback() (lexptr && lexptr > lexptr_begin ? lexptr-- : lexptr)
-
-#endif /* MBS_SUPPORT */
/* allow_newline --- allow newline after &&, ||, ? and : */
@@ -1630,10 +1636,8 @@ yylex(void)
tok = tokstart;
for (;;) {
c = nextc();
-#ifdef MBS_SUPPORT
- if (gawk_mb_cur_max == 1 || nextc_is_1stbyte)
-#endif
- switch (c) {
+
+ if (gawk_mb_cur_max == 1 || nextc_is_1stbyte) switch (c) {
case '[':
/* one day check for `.' and `=' too */
if (nextc() == ':' || in_brack == 0)
@@ -1668,6 +1672,21 @@ yylex(void)
end_regexp:
tokadd('\0');
yylval.sval = tokstart;
+ if (do_lint) {
+ int peek = nextc();
+
+ pushback();
+ if (peek == 'i' || peek == 's') {
+ if (source)
+ lintwarn(
+ _("%s: %d: tawk regex modifier `/.../%c' doesn't work in gawk"),
+ source, sourceline, peek);
+ else
+ lintwarn(
+ _("tawk regex modifier `/.../%c' doesn't work in gawk"),
+ peek);
+ }
+ }
return lasttok = REGEXP;
case '\n':
pushback();
@@ -1681,7 +1700,9 @@ end_regexp:
}
}
retry:
- while ((c = nextc()) == ' ' || c == '\t')
+
+ /* skipping \r is a hack, but windows is just too pervasive. sigh. */
+ while ((c = nextc()) == ' ' || c == '\t' || c == '\r')
continue;
lexeme = lexptr ? lexptr - 1 : lexptr;
@@ -1689,10 +1710,7 @@ retry:
tok = tokstart;
yylval.nodetypeval = Node_illegal;
-#ifdef MBS_SUPPORT
- if (gawk_mb_cur_max == 1 || nextc_is_1stbyte)
-#endif
- switch (c) {
+ if (gawk_mb_cur_max == 1 || nextc_is_1stbyte) switch (c) {
case EOF:
if (lasttok != NEWLINE) {
lasttok = NEWLINE;
@@ -1736,7 +1754,7 @@ retry:
*/
if (! do_traditional) {
/* strip trailing white-space and/or comment */
- while ((c = nextc()) == ' ' || c == '\t')
+ while ((c = nextc()) == ' ' || c == '\t' || c == '\r')
continue;
if (c == '#') {
if (do_lint)
@@ -1937,10 +1955,8 @@ retry:
yyerror(_("unterminated string"));
exit(1);
}
-#ifdef MBS_SUPPORT
- if (gawk_mb_cur_max == 1 || nextc_is_1stbyte)
-#endif
- if (c == '\\') {
+ if ((gawk_mb_cur_max == 1 || nextc_is_1stbyte) &&
+ c == '\\') {
c = nextc();
if (c == '\n') {
sourceline++;
@@ -2006,11 +2022,21 @@ retry:
case 'X':
if (do_traditional)
goto done;
- if (tok == tokstart + 2)
- inhex = TRUE;
+ if (tok == tokstart + 2) {
+ int peek = nextc();
+
+ if (ISXDIGIT(peek)) {
+ inhex = TRUE;
+ pushback(); /* following digit */
+ } else {
+ pushback(); /* x or X */
+ goto done;
+ }
+ }
break;
case '.':
- if (seen_point) {
+ /* period ends exponent part of floating point number */
+ if (seen_point || seen_e) {
gotnumber = TRUE;
break;
}
@@ -2025,10 +2051,23 @@ retry:
break;
}
seen_e = TRUE;
- if ((c = nextc()) == '-' || c == '+')
- tokadd(c);
- else
- pushback();
+ if ((c = nextc()) == '-' || c == '+') {
+ int c2 = nextc();
+
+ if (ISDIGIT(c2)) {
+ tokadd(c);
+ tokadd(c2);
+ } else {
+ pushback(); /* non-digit after + or - */
+ pushback(); /* + or - */
+ pushback(); /* e or E */
+ }
+ } else if (! ISDIGIT(c)) {
+ pushback(); /* character after e or E */
+ pushback(); /* e or E */
+ } else {
+ pushback(); /* digit */
+ }
break;
case 'a':
case 'A':
@@ -2069,12 +2108,14 @@ retry:
eof_warned = TRUE;
}
tokadd('\0');
- if (! do_traditional && isnondecimal(tokstart)) {
- static short warned = FALSE;
- if (do_lint && ! warned) {
- warned = TRUE;
- lintwarn("numeric constant `%.*s' treated as octal or hexadecimal",
- strlen(tokstart)-1, tokstart);
+ if (! do_traditional && isnondecimal(tokstart, FALSE)) {
+ if (do_lint) {
+ if (ISDIGIT(tokstart[1])) /* not an 'x' or 'X' */
+ lintwarn("numeric constant `%.*s' treated as octal",
+ (int) strlen(tokstart)-1, tokstart);
+ else if (tokstart[1] == 'x' || tokstart[1] == 'X')
+ lintwarn("numeric constant `%.*s' treated as hexadecimal",
+ (int) strlen(tokstart)-1, tokstart);
}
yylval.nodeval = make_number(nondec2awknum(tokstart, strlen(tokstart)));
} else
@@ -2120,7 +2161,7 @@ retry:
*
* print "xyzzy"$_"foo"
*
- * Without the check for ` lasttok != '$'' ', this is parsed as
+ * Without the check for ` lasttok != '$' ', this is parsed as
*
* print "xxyzz" $(_"foo")
*
@@ -3021,6 +3062,37 @@ param_sanity(NODE *arglist)
}
}
+/* deferred varibles --- those that are only defined if needed. */
+
+/*
+ * Is there any reason to use a hash table for deferred variables? At the
+ * moment, there are only 1 to 3 such variables, so it may not be worth
+ * the overhead. If more modules start using this facility, it should
+ * probably be converted into a hash table.
+ */
+
+static struct deferred_variable {
+ NODE *(*load_func)(void);
+ struct deferred_variable *next;
+ char name[1]; /* variable-length array */
+} *deferred_variables;
+
+/* register_deferred_variable --- add a var name and loading function to the list */
+
+void
+register_deferred_variable(const char *name, NODE *(*load_func)(void))
+{
+ struct deferred_variable *dv;
+ size_t sl = strlen(name);
+
+ emalloc(dv, struct deferred_variable *, sizeof(*dv)+sl,
+ "register_deferred_variable");
+ dv->load_func = load_func;
+ dv->next = deferred_variables;
+ memcpy(dv->name, name, sl+1);
+ deferred_variables = dv;
+}
+
/* variable --- make sure NAME is in the symbol table */
NODE *
@@ -3035,22 +3107,27 @@ variable(char *name, int can_free, NODETYPE type)
} else {
/* not found */
- if (! do_traditional && STREQ(name, "PROCINFO"))
- r = load_procinfo();
- else if (STREQ(name, "ENVIRON"))
- r = load_environ();
- else {
- /*
- * This is the only case in which we may not free the string.
- */
- NODE *n;
-
- if (type == Node_var_array)
- n = node((NODE *) NULL, type, (NODE *) NULL);
- else
- n = node(Nnull_string, type, (NODE *) NULL);
+ struct deferred_variable *dv;
+
+ for (dv = deferred_variables; TRUE; dv = dv->next) {
+ if (dv == NULL) {
+ /*
+ * This is the only case in which we may not
+ * free the string.
+ */
+ NODE *n;
+
+ if (type == Node_var_array)
+ n = node(NULL, type, NULL);
+ else
+ n = node(Nnull_string, type, NULL);
- return install(name, n);
+ return install(name, n);
+ }
+ if (STREQ(name, dv->name)) {
+ r = (*dv->load_func)();
+ break;
+ }
}
}
if (can_free)
diff --git a/awklib/ChangeLog b/awklib/ChangeLog
index ef6057de..b328453a 100644
--- a/awklib/ChangeLog
+++ b/awklib/ChangeLog
@@ -1,3 +1,25 @@
+Tue Jul 26 21:46:16 2005 Arnold D. Robbins <arnold@skeeve.com>
+
+ * Release 3.1.5: Release tar file made.
+
+Mon Jun 20 23:20:22 2005 Andreas Schwab <schwab@suse.de>
+
+ * Makefile.am: Install pwcat and grcat in pkglibexecdir instead of
+ libexecdir.
+
+Wed Feb 9 10:13:27 2005 Arnold D. Robbins <arnold@skeeve.com>
+
+ * Makefile.am (pkgdatadir, pkglibexecdir): Use $(datadir) and
+ $(libexecdir) instead of @datadir@ and @libexecdir@ for coolest
+ GNU Coding Standards compatibility and functionality. Per Stepan
+ Kasal.
+
+Tue Feb 8 18:57:08 2005 Arnold D. Robbins <arnold@skeeve.com>
+
+ * Makefile.am (pkgdatadir, pkglibexecdir): New variables for compatibility
+ with current GNU Coding Standards. Fixed uses. Thanks to Stepan Kasal
+ and the discussion in bug-gnu-utils.
+
Mon Aug 2 12:18:15 2004 Arnold D. Robbins <arnold@skeeve.com>
* Release 3.1.4: Release tar file made.
@@ -48,12 +70,12 @@ Sun Jun 3 13:04:44 2001 Arnold D. Robbins <arnold@skeeve.com>
2001-02-26 Paul Eggert <eggert@twinsun.com>
- * Makefile.am (stamp-eg): Use $(AWK), not awk, as the
+ * Makefile.am (stamp-eg): Use $(AWK), not awk, as the
native awk might not work.
2001-02-26 Andreas Schwab <schwab@suse.de>
- * Makefile.am: Install igawk as script.
+ * Makefile.am: Install igawk as script.
Mon Nov 6 15:29:08 2000 Arnold D. Robbins <arnold@skeeve.com>
diff --git a/awklib/Makefile.am b/awklib/Makefile.am
index ddd85e23..810e5596 100644
--- a/awklib/Makefile.am
+++ b/awklib/Makefile.am
@@ -1,7 +1,7 @@
#
# awklib/Makefile.am --- automake input file for gawk
#
-# Copyright (C) 1995-2004 the Free Software Foundation, Inc.
+# Copyright (C) 1995-2005 the Free Software Foundation, Inc.
#
# This file is part of GAWK, the GNU implementation of the
# AWK Programming Language.
@@ -18,22 +18,21 @@
#
# 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
+# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA
#
## process this file with automake to produce Makefile.in
EXTRA_DIST = ChangeLog extract.awk eg stamp-eg
-# This is so we get config.h. It'll be in the build directory,
-# not the source directory.
-AM_CPPFLAGS = -I..
+# Get config.h from the build directory and custom.h from the source directory.
+AM_CPPFLAGS = -I$(top_builddir) -I$(top_srcdir)
-datadir = @datadir@/awk
-libexecdir = @libexecdir@/awk
+pkgdatadir = $(datadir)/awk
+pkglibexecdir = $(libexecdir)/awk
bin_SCRIPTS = igawk
-libexec_PROGRAMS = pwcat grcat
+pkglibexec_PROGRAMS = pwcat grcat
AUXAWK = passwd.awk group.awk
nodist_grcat_SOURCES = grcat.c
nodist_pwcat_SOURCES = pwcat.c
@@ -41,15 +40,15 @@ nodist_pwcat_SOURCES = pwcat.c
all: stamp-eg $(AUXPROGS) igawk $(AUXAWK)
install-exec-hook: $(AUXAWK)
- $(mkinstalldirs) $(DESTDIR)$(datadir)
+ $(mkinstalldirs) $(DESTDIR)$(pkgdatadir)
for i in $(AUXAWK) $(srcdir)/eg/lib/*.awk ; do \
progname=`echo $$i | sed 's;.*/;;'` ; \
- $(INSTALL_DATA) $$i $(DESTDIR)$(datadir)/$$progname ; \
+ $(INSTALL_DATA) $$i $(DESTDIR)$(pkgdatadir)/$$progname ; \
done
-# libexecdir and datadir are removed in the top level Makefile's uninstall
+# pkglibexecdir and pkgdatadir are removed in the top level Makefile's uninstall
uninstall-local:
- rm -fr $(DESTDIR)$(libexecdir)/* $(DESTDIR)$(datadir)/*
+ rm -fr $(DESTDIR)$(pkglibexecdir)/* $(DESTDIR)$(pkgdatadir)/*
rm -f $(DESTDIR)$(bindir)/igawk
clean-local:
@@ -71,9 +70,7 @@ igawk: $(srcdir)/eg/prog/igawk.sh
cp $(srcdir)/eg/prog/igawk.sh $@ ; chmod 755 $@
passwd.awk: $(srcdir)/eg/lib/passwdawk.in
- (cd $(srcdir)/eg/lib ; \
- sed 's;/usr/local/libexec/awk;$(libexecdir);' < passwdawk.in) > passwd.awk
+ sed 's;/usr/local/libexec/awk;$(pkglibexecdir);' < $(srcdir)/eg/lib/passwdawk.in > passwd.awk
group.awk: $(srcdir)/eg/lib/groupawk.in
- (cd $(srcdir)/eg/lib ; \
- sed 's;/usr/local/libexec/awk;$(libexecdir);' < groupawk.in) > group.awk
+ sed 's;/usr/local/libexec/awk;$(pkglibexecdir);' < $(srcdir)/eg/lib/groupawk.in > group.awk
diff --git a/awklib/Makefile.in b/awklib/Makefile.in
index 6dd67b71..d21c9055 100644
--- a/awklib/Makefile.in
+++ b/awklib/Makefile.in
@@ -1,8 +1,8 @@
-# Makefile.in generated by automake 1.8.5 from Makefile.am.
+# Makefile.in generated by automake 1.9.5 from Makefile.am.
# @configure_input@
# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
-# 2003, 2004 Free Software Foundation, Inc.
+# 2003, 2004, 2005 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.
@@ -17,7 +17,7 @@
#
# awklib/Makefile.am --- automake input file for gawk
#
-# Copyright (C) 1995-2004 the Free Software Foundation, Inc.
+# Copyright (C) 1995-2005 the Free Software Foundation, Inc.
#
# This file is part of GAWK, the GNU implementation of the
# AWK Programming Language.
@@ -34,7 +34,7 @@
#
# 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
+# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA
#
@@ -43,7 +43,6 @@ SOURCES = $(nodist_grcat_SOURCES) $(nodist_pwcat_SOURCES)
srcdir = @srcdir@
top_srcdir = @top_srcdir@
VPATH = @srcdir@
-pkgdatadir = $(datadir)/@PACKAGE@
pkglibdir = $(libdir)/@PACKAGE@
pkgincludedir = $(includedir)/@PACKAGE@
top_builddir = ..
@@ -60,36 +59,30 @@ POST_INSTALL = :
NORMAL_UNINSTALL = :
PRE_UNINSTALL = :
POST_UNINSTALL = :
+build_triplet = @build@
host_triplet = @host@
-libexec_PROGRAMS = pwcat$(EXEEXT) grcat$(EXEEXT)
+pkglibexec_PROGRAMS = pwcat$(EXEEXT) grcat$(EXEEXT)
subdir = awklib
DIST_COMMON = $(srcdir)/Makefile.am $(srcdir)/Makefile.in ChangeLog
ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
am__aclocal_m4_deps = $(top_srcdir)/m4/arch.m4 \
- $(top_srcdir)/m4/codeset.m4 $(top_srcdir)/m4/gettext.m4 \
- $(top_srcdir)/m4/glibc21.m4 $(top_srcdir)/m4/iconv.m4 \
- $(top_srcdir)/m4/intdiv0.m4 $(top_srcdir)/m4/intmax.m4 \
- $(top_srcdir)/m4/intmax_t.m4 $(top_srcdir)/m4/inttypes-pri.m4 \
- $(top_srcdir)/m4/inttypes.m4 $(top_srcdir)/m4/inttypes_h.m4 \
- $(top_srcdir)/m4/lcmessage.m4 $(top_srcdir)/m4/lib-ld.m4 \
- $(top_srcdir)/m4/lib-link.m4 $(top_srcdir)/m4/lib-prefix.m4 \
- $(top_srcdir)/m4/longdouble.m4 $(top_srcdir)/m4/longlong.m4 \
+ $(top_srcdir)/m4/gettext.m4 $(top_srcdir)/m4/iconv.m4 \
+ $(top_srcdir)/m4/intmax_t.m4 $(top_srcdir)/m4/inttypes_h.m4 \
+ $(top_srcdir)/m4/lib-ld.m4 $(top_srcdir)/m4/lib-link.m4 \
+ $(top_srcdir)/m4/lib-prefix.m4 $(top_srcdir)/m4/longlong.m4 \
$(top_srcdir)/m4/nls.m4 $(top_srcdir)/m4/po.m4 \
- $(top_srcdir)/m4/printf-posix.m4 $(top_srcdir)/m4/progtest.m4 \
- $(top_srcdir)/m4/signed.m4 $(top_srcdir)/m4/size_max.m4 \
- $(top_srcdir)/m4/socket.m4 $(top_srcdir)/m4/stdint_h.m4 \
- $(top_srcdir)/m4/strtod.m4 $(top_srcdir)/m4/uintmax_t.m4 \
- $(top_srcdir)/m4/ulonglong.m4 $(top_srcdir)/m4/wchar_t.m4 \
- $(top_srcdir)/m4/wint_t.m4 $(top_srcdir)/m4/xsize.m4 \
+ $(top_srcdir)/m4/progtest.m4 $(top_srcdir)/m4/socket.m4 \
+ $(top_srcdir)/m4/stdint_h.m4 $(top_srcdir)/m4/strtod.m4 \
+ $(top_srcdir)/m4/uintmax_t.m4 $(top_srcdir)/m4/ulonglong.m4 \
$(top_srcdir)/configure.ac
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 =
-am__installdirs = "$(DESTDIR)$(libexecdir)" "$(DESTDIR)$(bindir)"
-libexecPROGRAMS_INSTALL = $(INSTALL_PROGRAM)
-PROGRAMS = $(libexec_PROGRAMS)
+am__installdirs = "$(DESTDIR)$(pkglibexecdir)" "$(DESTDIR)$(bindir)"
+pkglibexecPROGRAMS_INSTALL = $(INSTALL_PROGRAM)
+PROGRAMS = $(pkglibexec_PROGRAMS)
nodist_grcat_OBJECTS = grcat.$(OBJEXT)
grcat_OBJECTS = $(nodist_grcat_OBJECTS)
grcat_LDADD = $(LDADD)
@@ -101,7 +94,6 @@ SCRIPTS = $(bin_SCRIPTS)
DEFAULT_INCLUDES = -I. -I$(srcdir) -I$(top_builddir)
depcomp = $(SHELL) $(top_srcdir)/depcomp
am__depfiles_maybe = depfiles
-@AMDEP_TRUE@DEP_FILES = ./$(DEPDIR)/grcat.Po ./$(DEPDIR)/pwcat.Po
COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \
$(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS)
CCLD = $(CC)
@@ -111,8 +103,8 @@ DIST_SOURCES =
ETAGS = etags
CTAGS = ctags
DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
+pkgdatadir = $(datadir)/awk
ACLOCAL = @ACLOCAL@
-ALLOCA = @ALLOCA@
AMDEP_FALSE = @AMDEP_FALSE@
AMDEP_TRUE = @AMDEP_TRUE@
AMTAR = @AMTAR@
@@ -120,15 +112,12 @@ AUTOCONF = @AUTOCONF@
AUTOHEADER = @AUTOHEADER@
AUTOMAKE = @AUTOMAKE@
AWK = @AWK@
-BUILD_INCLUDED_LIBINTL = @BUILD_INCLUDED_LIBINTL@
-CATOBJEXT = @CATOBJEXT@
CC = @CC@
CCDEPMODE = @CCDEPMODE@
CFLAGS = @CFLAGS@
CPP = @CPP@
CPPFLAGS = @CPPFLAGS@
CYGPATH_W = @CYGPATH_W@
-DATADIRNAME = @DATADIRNAME@
DEFS = @DEFS@
DEPDIR = @DEPDIR@
ECHO_C = @ECHO_C@
@@ -136,22 +125,13 @@ 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@
+INTL_MACOSX_LIBS = @INTL_MACOSX_LIBS@
LDFLAGS = @LDFLAGS@
LIBICONV = @LIBICONV@
LIBINTL = @LIBINTL@
@@ -180,7 +160,6 @@ SHELL = @SHELL@
SOCKET_LIBS = @SOCKET_LIBS@
STRIP = @STRIP@
U = @U@
-USE_INCLUDED_LIBINTL = @USE_INCLUDED_LIBINTL@
USE_NLS = @USE_NLS@
VERSION = @VERSION@
XGETTEXT = @XGETTEXT@
@@ -193,13 +172,15 @@ am__fastdepCC_TRUE = @am__fastdepCC_TRUE@
am__include = @am__include@
am__leading_dot = @am__leading_dot@
am__quote = @am__quote@
+am__tar = @am__tar@
+am__untar = @am__untar@
bindir = @bindir@
build = @build@
build_alias = @build_alias@
build_cpu = @build_cpu@
build_os = @build_os@
build_vendor = @build_vendor@
-datadir = @datadir@/awk
+datadir = @datadir@
exec_prefix = @exec_prefix@
host = @host@
host_alias = @host_alias@
@@ -210,7 +191,7 @@ includedir = @includedir@
infodir = @infodir@
install_sh = @install_sh@
libdir = @libdir@
-libexecdir = @libexecdir@/awk
+libexecdir = @libexecdir@
localstatedir = @localstatedir@
mandir = @mandir@
mkdir_p = @mkdir_p@
@@ -223,9 +204,9 @@ sysconfdir = @sysconfdir@
target_alias = @target_alias@
EXTRA_DIST = ChangeLog extract.awk eg stamp-eg
-# This is so we get config.h. It'll be in the build directory,
-# not the source directory.
-AM_CPPFLAGS = -I..
+# Get config.h from the build directory and custom.h from the source directory.
+AM_CPPFLAGS = -I$(top_builddir) -I$(top_srcdir)
+pkglibexecdir = $(libexecdir)/awk
bin_SCRIPTS = igawk
AUXAWK = passwd.awk group.awk
nodist_grcat_SOURCES = grcat.c
@@ -263,29 +244,29 @@ $(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
-install-libexecPROGRAMS: $(libexec_PROGRAMS)
+install-pkglibexecPROGRAMS: $(pkglibexec_PROGRAMS)
@$(NORMAL_INSTALL)
- test -z "$(libexecdir)" || $(mkdir_p) "$(DESTDIR)$(libexecdir)"
- @list='$(libexec_PROGRAMS)'; for p in $$list; do \
+ test -z "$(pkglibexecdir)" || $(mkdir_p) "$(DESTDIR)$(pkglibexecdir)"
+ @list='$(pkglibexec_PROGRAMS)'; for p in $$list; do \
p1=`echo $$p|sed 's/$(EXEEXT)$$//'`; \
if test -f $$p \
; then \
f=`echo "$$p1" | sed 's,^.*/,,;$(transform);s/$$/$(EXEEXT)/'`; \
- echo " $(INSTALL_PROGRAM_ENV) $(libexecPROGRAMS_INSTALL) '$$p' '$(DESTDIR)$(libexecdir)/$$f'"; \
- $(INSTALL_PROGRAM_ENV) $(libexecPROGRAMS_INSTALL) "$$p" "$(DESTDIR)$(libexecdir)/$$f" || exit 1; \
+ echo " $(INSTALL_PROGRAM_ENV) $(pkglibexecPROGRAMS_INSTALL) '$$p' '$(DESTDIR)$(pkglibexecdir)/$$f'"; \
+ $(INSTALL_PROGRAM_ENV) $(pkglibexecPROGRAMS_INSTALL) "$$p" "$(DESTDIR)$(pkglibexecdir)/$$f" || exit 1; \
else :; fi; \
done
-uninstall-libexecPROGRAMS:
+uninstall-pkglibexecPROGRAMS:
@$(NORMAL_UNINSTALL)
- @list='$(libexec_PROGRAMS)'; for p in $$list; do \
+ @list='$(pkglibexec_PROGRAMS)'; for p in $$list; do \
f=`echo "$$p" | sed 's,^.*/,,;s/$(EXEEXT)$$//;$(transform);s/$$/$(EXEEXT)/'`; \
- echo " rm -f '$(DESTDIR)$(libexecdir)/$$f'"; \
- rm -f "$(DESTDIR)$(libexecdir)/$$f"; \
+ echo " rm -f '$(DESTDIR)$(pkglibexecdir)/$$f'"; \
+ rm -f "$(DESTDIR)$(pkglibexecdir)/$$f"; \
done
-clean-libexecPROGRAMS:
- -test -z "$(libexec_PROGRAMS)" || rm -f $(libexec_PROGRAMS)
+clean-pkglibexecPROGRAMS:
+ -test -z "$(pkglibexec_PROGRAMS)" || rm -f $(pkglibexec_PROGRAMS)
install-binSCRIPTS: $(bin_SCRIPTS)
@$(NORMAL_INSTALL)
test -z "$(bindir)" || $(mkdir_p) "$(DESTDIR)$(bindir)"
@@ -319,16 +300,14 @@ distclean-compile:
@am__fastdepCC_TRUE@ if $(COMPILE) -MT $@ -MD -MP -MF "$(DEPDIR)/$*.Tpo" -c -o $@ $<; \
@am__fastdepCC_TRUE@ then mv -f "$(DEPDIR)/$*.Tpo" "$(DEPDIR)/$*.Po"; else rm -f "$(DEPDIR)/$*.Tpo"; exit 1; fi
@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
-@AMDEP_TRUE@@am__fastdepCC_FALSE@ depfile='$(DEPDIR)/$*.Po' tmpdepfile='$(DEPDIR)/$*.TPo' @AMDEPBACKSLASH@
-@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
@am__fastdepCC_FALSE@ $(COMPILE) -c $<
.c.obj:
@am__fastdepCC_TRUE@ if $(COMPILE) -MT $@ -MD -MP -MF "$(DEPDIR)/$*.Tpo" -c -o $@ `$(CYGPATH_W) '$<'`; \
@am__fastdepCC_TRUE@ then mv -f "$(DEPDIR)/$*.Tpo" "$(DEPDIR)/$*.Po"; else rm -f "$(DEPDIR)/$*.Tpo"; exit 1; fi
@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
-@AMDEP_TRUE@@am__fastdepCC_FALSE@ depfile='$(DEPDIR)/$*.Po' tmpdepfile='$(DEPDIR)/$*.TPo' @AMDEPBACKSLASH@
-@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
@am__fastdepCC_FALSE@ $(COMPILE) -c `$(CYGPATH_W) '$<'`
uninstall-info-am:
@@ -411,7 +390,7 @@ check-am: all-am
check: check-am
all-am: Makefile $(PROGRAMS) $(SCRIPTS)
installdirs:
- for dir in "$(DESTDIR)$(libexecdir)" "$(DESTDIR)$(bindir)"; do \
+ for dir in "$(DESTDIR)$(pkglibexecdir)" "$(DESTDIR)$(bindir)"; do \
test -z "$$dir" || $(mkdir_p) "$$dir"; \
done
install: install-am
@@ -433,14 +412,14 @@ mostlyclean-generic:
clean-generic:
distclean-generic:
- -rm -f $(CONFIG_CLEAN_FILES)
+ -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES)
maintainer-clean-generic:
@echo "This command is intended for maintainers to use"
@echo "it deletes files that may require special tools to rebuild."
clean: clean-am
-clean-am: clean-generic clean-libexecPROGRAMS clean-local \
+clean-am: clean-generic clean-local clean-pkglibexecPROGRAMS \
mostlyclean-am
distclean: distclean-am
@@ -461,7 +440,7 @@ info-am:
install-data-am:
-install-exec-am: install-binSCRIPTS install-libexecPROGRAMS
+install-exec-am: install-binSCRIPTS install-pkglibexecPROGRAMS
@$(NORMAL_INSTALL)
$(MAKE) $(AM_MAKEFLAGS) install-exec-hook
@@ -488,35 +467,35 @@ ps: ps-am
ps-am:
-uninstall-am: uninstall-binSCRIPTS uninstall-info-am \
- uninstall-libexecPROGRAMS uninstall-local
+uninstall-am: uninstall-binSCRIPTS uninstall-info-am uninstall-local \
+ uninstall-pkglibexecPROGRAMS
.PHONY: CTAGS GTAGS all all-am check check-am clean clean-generic \
- clean-libexecPROGRAMS clean-local ctags distclean \
+ clean-local clean-pkglibexecPROGRAMS ctags distclean \
distclean-compile distclean-generic distclean-tags distdir dvi \
dvi-am html html-am info info-am install install-am \
install-binSCRIPTS install-data install-data-am install-exec \
- install-exec-am install-info install-info-am \
- install-libexecPROGRAMS install-man install-strip installcheck \
- installcheck-am installdirs maintainer-clean \
+ install-exec-am install-exec-hook install-info install-info-am \
+ install-man install-pkglibexecPROGRAMS install-strip \
+ installcheck installcheck-am installdirs maintainer-clean \
maintainer-clean-generic mostlyclean mostlyclean-compile \
mostlyclean-generic pdf pdf-am ps ps-am tags uninstall \
uninstall-am uninstall-binSCRIPTS uninstall-info-am \
- uninstall-libexecPROGRAMS uninstall-local
+ uninstall-local uninstall-pkglibexecPROGRAMS
all: stamp-eg $(AUXPROGS) igawk $(AUXAWK)
install-exec-hook: $(AUXAWK)
- $(mkinstalldirs) $(DESTDIR)$(datadir)
+ $(mkinstalldirs) $(DESTDIR)$(pkgdatadir)
for i in $(AUXAWK) $(srcdir)/eg/lib/*.awk ; do \
progname=`echo $$i | sed 's;.*/;;'` ; \
- $(INSTALL_DATA) $$i $(DESTDIR)$(datadir)/$$progname ; \
+ $(INSTALL_DATA) $$i $(DESTDIR)$(pkgdatadir)/$$progname ; \
done
-# libexecdir and datadir are removed in the top level Makefile's uninstall
+# pkglibexecdir and pkgdatadir are removed in the top level Makefile's uninstall
uninstall-local:
- rm -fr $(DESTDIR)$(libexecdir)/* $(DESTDIR)$(datadir)/*
+ rm -fr $(DESTDIR)$(pkglibexecdir)/* $(DESTDIR)$(pkgdatadir)/*
rm -f $(DESTDIR)$(bindir)/igawk
clean-local:
@@ -538,12 +517,10 @@ igawk: $(srcdir)/eg/prog/igawk.sh
cp $(srcdir)/eg/prog/igawk.sh $@ ; chmod 755 $@
passwd.awk: $(srcdir)/eg/lib/passwdawk.in
- (cd $(srcdir)/eg/lib ; \
- sed 's;/usr/local/libexec/awk;$(libexecdir);' < passwdawk.in) > passwd.awk
+ sed 's;/usr/local/libexec/awk;$(pkglibexecdir);' < $(srcdir)/eg/lib/passwdawk.in > passwd.awk
group.awk: $(srcdir)/eg/lib/groupawk.in
- (cd $(srcdir)/eg/lib ; \
- sed 's;/usr/local/libexec/awk;$(libexecdir);' < groupawk.in) > group.awk
+ sed 's;/usr/local/libexec/awk;$(pkglibexecdir);' < $(srcdir)/eg/lib/groupawk.in > group.awk
# 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.
.NOEXPORT:
diff --git a/bisonfix.awk b/bisonfix.awk
new file mode 100644
index 00000000..5a45f18d
--- /dev/null
+++ b/bisonfix.awk
@@ -0,0 +1,34 @@
+# bisonfix.awk --- tweak awkgram.c for stupid compilers.
+
+# Copyright (C) 2005 the Free Software Foundation, Inc.
+#
+# This file is part of GAWK, the GNU implementation of the
+# AWK Programming Language.
+#
+# GAWK 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 of the License, or
+# (at your option) any later version.
+#
+# GAWK 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., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA
+
+/^#if \(! defined \(yyoverflow\) \\/ {
+ line = $0
+ sub(/\\$/, "", line)
+ getline line2
+ sub(/\\$/, "", line2)
+ getline line3
+
+ line = line line2 line3
+ print line
+ next
+}
+
+{ print }
diff --git a/bisonfix.sed b/bisonfix.sed
deleted file mode 100644
index c18103be..00000000
--- a/bisonfix.sed
+++ /dev/null
@@ -1,3 +0,0 @@
-/\/\* The parser invokes alloca or malloc; define the necessary symbols. *\*\//a\
-\
-#undef YYSTACK_USE_ALLOCA /* Gawk: nuke alloca once and for all */
diff --git a/builtin.c b/builtin.c
index 5306a5bd..78f16569 100644
--- a/builtin.c
+++ b/builtin.c
@@ -3,7 +3,7 @@
*/
/*
- * Copyright (C) 1986, 1988, 1989, 1991-2004 the Free Software Foundation, Inc.
+ * Copyright (C) 1986, 1988, 1989, 1991-2005 the Free Software Foundation, Inc.
*
* This file is part of GAWK, the GNU implementation of the
* AWK Programming Language.
@@ -20,7 +20,7 @@
*
* 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
+ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA
*/
@@ -32,10 +32,9 @@
#undef INTBITS
#if HAVE_INTTYPES_H
# include <inttypes.h>
-#else
-# if HAVE_STDINT_H
-# include <stdint.h>
-# endif
+#endif
+#if HAVE_STDINT_H
+# include <stdint.h>
#endif
#include <math.h>
#include "random.h"
@@ -74,9 +73,6 @@ extern int output_is_tty;
static NODE *sub_common P((NODE *tree, long how_many, int backdigs));
-#ifdef STDC_HEADERS
-#include <float.h>
-#endif
/* Assume IEEE-754 arithmetic on pre-C89 hosts. */
#ifndef FLT_RADIX
#define FLT_RADIX 2
@@ -310,6 +306,13 @@ index_multibyte_buffer(char* src, char* dest, int len)
dest[idx] = mbclen;
}
}
+#else
+/* a dummy function */
+static void
+index_multibyte_buffer(char* src ATTRIBUTE_UNUSED, char* dest ATTRIBUTE_UNUSED, int len ATTRIBUTE_UNUSED)
+{
+ cant_happen();
+}
#endif
/* do_index --- find index of a string */
@@ -321,15 +324,6 @@ do_index(NODE *tree)
register const char *p1, *p2;
register size_t l1, l2;
long ret;
-#ifdef MBS_SUPPORT
- size_t mbclen = 0;
- mbstate_t mbs1, mbs2;
- if (gawk_mb_cur_max > 1) {
- memset(&mbs1, 0, sizeof(mbstate_t));
- memset(&mbs2, 0, sizeof(mbstate_t));
- }
-#endif
-
s1 = tree_eval(tree->lnode);
s2 = tree_eval(tree->rnode->lnode);
@@ -364,19 +358,17 @@ do_index(NODE *tree)
break;
#ifdef MBS_SUPPORT
if (gawk_mb_cur_max > 1) {
- if (strncasecmpmbs(p1, mbs1, p2, mbs2, l2) == 0) {
- ret = 1 + s1->stlen - l1;
- break;
- }
- /* Update l1, and p1. */
- mbclen = mbrlen(p1, l1, &mbs1);
- if ((mbclen == 1) || (mbclen == (size_t) -1)
- || (mbclen == (size_t) -2) || (mbclen == 0)) {
- /* We treat it as a singlebyte character. */
- mbclen = 1;
- }
- l1 -= mbclen;
- p1 += mbclen;
+ const wchar_t *pos;
+
+ s1 = force_wstring(s1);
+ s2 = force_wstring(s2);
+
+ pos = wcasestrstr(s1->wstptr, s1->wstlen, s2->wstptr, s2->wstlen);
+ if (pos == NULL)
+ ret = 0;
+ else
+ ret = pos - s1->wstptr + 1; /* 1-based */
+ goto out;
} else {
#endif
/*
@@ -399,20 +391,23 @@ do_index(NODE *tree)
if (l2 > l1)
break;
if (*p1 == *p2
- && (l2 == 1 || STREQN(p1, p2, l2))) {
+ && (l2 == 1 || (l2 > 0 && memcmp(p1, p2, l2) == 0))) {
ret = 1 + s1->stlen - l1;
break;
}
#ifdef MBS_SUPPORT
if (gawk_mb_cur_max > 1) {
- mbclen = mbrlen(p1, l1, &mbs1);
- if ((mbclen == 1) || (mbclen == (size_t) -1) ||
- (mbclen == (size_t) -2) || (mbclen == 0)) {
- /* We treat it as a singlebyte character. */
- mbclen = 1;
- }
- l1 -= mbclen;
- p1 += mbclen;
+ const wchar_t *pos;
+
+ s1 = force_wstring(s1);
+ s2 = force_wstring(s2);
+
+ pos = wstrstr(s1->wstptr, s1->wstlen, s2->wstptr, s2->wstlen);
+ if (pos == NULL)
+ ret = 0;
+ else
+ ret = pos - s1->wstptr + 1; /* 1-based */
+ goto out;
} else {
l1--;
p1++;
@@ -466,12 +461,36 @@ do_length(NODE *tree)
NODE *tmp;
size_t len;
- tmp = tree_eval(tree->lnode);
- if (do_lint && (tmp->flags & (STRING|STRCUR)) == 0)
- lintwarn(_("length: received non-string argument"));
- len = force_string(tmp)->stlen;
- free_temp(tmp);
- return tmp_number((AWKNUM) len);
+ if (tree->lnode->type == Node_var_array
+ || tree->lnode->type == Node_array_ref) {
+ NODE *array_var = tree->lnode;
+
+ if (array_var->type == Node_array_ref)
+ array_var = array_var->orig_array;
+
+ if (do_lint)
+ lintwarn(_("`length(array)' is a gawk extension"));
+ if (do_posix)
+ goto normal; /* will die as fatal error */
+
+ return tmp_number((AWKNUM) array_var->table_size);
+ } else {
+normal:
+ tmp = tree_eval(tree->lnode);
+ if (do_lint && (tmp->flags & (STRING|STRCUR)) == 0)
+ lintwarn(_("length: received non-string argument"));
+ tmp = force_string(tmp);
+#ifdef MBS_SUPPORT
+ if (gawk_mb_cur_max > 1) {
+ tmp = force_wstring(tmp);
+ len = tmp->wstlen;
+ } else
+#endif
+ len = tmp->stlen;
+
+ free_temp(tmp);
+ return tmp_number((AWKNUM) len);
+ }
}
/* do_log --- the log function */
@@ -514,7 +533,7 @@ format_tree(
/* difference of pointers should be of ptrdiff_t type, but let us be kind */
#define bchunk(s, l) if (l) { \
while ((l) > ofre) { \
- long olen = obufout - obuf; \
+ size_t olen = obufout - obuf; \
erealloc(obuf, char *, osiz * 2, "format_tree"); \
ofre += osiz; \
osiz *= 2; \
@@ -528,7 +547,7 @@ format_tree(
/* copy one byte from 's' to 'obufout' checking for space in the process */
#define bchunk_one(s) { \
if (ofre < 1) { \
- long olen = obufout - obuf; \
+ size_t olen = obufout - obuf; \
erealloc(obuf, char *, osiz * 2, "format_tree"); \
ofre += osiz; \
osiz *= 2; \
@@ -540,7 +559,7 @@ format_tree(
/* Is there space for something L big in the buffer? */
#define chksize(l) if ((l) > ofre) { \
- long olen = obufout - obuf; \
+ size_t olen = obufout - obuf; \
erealloc(obuf, char *, osiz * 2, "format_tree"); \
obufout = obuf + olen; \
ofre += osiz; \
@@ -578,7 +597,7 @@ format_tree(
char *cend = &cpbuf[30];/* chars, we lose, but seems unlikely */
char *cp;
const char *fill;
- double tmpval;
+ AWKNUM tmpval;
char signchar = FALSE;
size_t len;
int zero_flag = FALSE;
@@ -593,7 +612,7 @@ format_tree(
emalloc(obuf, char *, INITIAL_OUT_SIZE, "format_tree");
obufout = obuf;
osiz = INITIAL_OUT_SIZE;
- ofre = osiz - 1;
+ ofre = osiz - 2;
/*
* Icky problem. If the args make a nested call to printf/sprintf,
@@ -833,7 +852,7 @@ check_pos:
case '#':
alt = TRUE;
goto check_pos;
-#if ENABLE_NLS && defined(HAVE_LOCALE_H)
+#if defined(HAVE_LOCALE_H)
case '\'':
quote_flag = TRUE;
goto check_pos;
@@ -950,9 +969,11 @@ check_pos:
ii = jj = 0;
do {
*--cp = (char) ('0' + uval % 10);
-#if ENABLE_NLS && defined(HAVE_LOCALE_H)
+ uval /= 10;
+#if defined(HAVE_LOCALE_H)
if (quote_flag && loc.grouping[ii] && ++jj == loc.grouping[ii]) {
- *--cp = loc.thousands_sep[0]; /* XXX - assumption it's one char */
+ if (uval) /* only add if more digits coming */
+ *--cp = loc.thousands_sep[0]; /* XXX - assumption it's one char */
if (loc.grouping[ii+1] == 0)
jj = 0; /* keep using current val in loc.grouping[ii] */
else if (loc.grouping[ii+1] == CHAR_MAX)
@@ -963,7 +984,6 @@ check_pos:
}
}
#endif
- uval /= 10;
} while (uval > 0);
/* add more output digits to match the precision */
@@ -1052,9 +1072,11 @@ check_pos:
ii = jj = 0;
do {
*--cp = chbuf[uval % base];
-#if ENABLE_NLS && defined(HAVE_LOCALE_H)
+ uval /= base;
+#if defined(HAVE_LOCALE_H)
if (base == 10 && quote_flag && loc.grouping[ii] && ++jj == loc.grouping[ii]) {
- *--cp = loc.thousands_sep[0]; /* XXX --- assumption it's one char */
+ if (uval) /* only add if more digits coming */
+ *--cp = loc.thousands_sep[0]; /* XXX --- assumption it's one char */
if (loc.grouping[ii+1] == 0)
jj = 0; /* keep using current val in loc.grouping[ii] */
else if (loc.grouping[ii+1] == CHAR_MAX)
@@ -1065,7 +1087,6 @@ check_pos:
}
}
#endif
- uval /= base;
} while (uval > 0);
/* add more output digits to match the precision */
@@ -1130,7 +1151,13 @@ check_pos:
if (! have_prec)
prec = DEFAULT_G_PRECISION;
chksize(fw + prec + 9); /* 9 == slop */
-
+#ifdef VAXCRTL
+ /* pre-ANSI library doesn't handle '0' flag
+ correctly in many cases; reject it */
+ if (zero_flag
+ && (lj || (signchar && signchar != '+')))
+ zero_flag = FALSE;
+#endif
cp = cpbuf;
*cp++ = '%';
if (lj)
@@ -1289,6 +1316,7 @@ do_substr(NODE *tree)
register size_t indx;
size_t length;
double d_index, d_length;
+ size_t src_len;
t1 = force_string(tree_eval(tree->lnode));
t2 = tree_eval(tree->rnode->lnode);
@@ -1352,21 +1380,71 @@ do_substr(NODE *tree)
free_temp(t1);
return Nnull_string;
}
- if (indx >= t1->stlen) {
+
+ /* get total len of input string, for following checks */
+#ifdef MBS_SUPPORT
+ if (gawk_mb_cur_max > 1) {
+ t1 = force_wstring(t1);
+ src_len = t1->wstlen;
+ } else
+#endif
+ src_len = t1->stlen;
+
+ if (indx >= src_len) {
if (do_lint)
lintwarn(_("substr: start index %g is past end of string"),
d_index);
free_temp(t1);
return Nnull_string;
}
- if (length > t1->stlen - indx) {
+ if (length > src_len - indx) {
if (do_lint)
lintwarn(
_("substr: length %g at start index %g exceeds length of first argument (%lu)"),
- d_length, d_index, (unsigned long int) t1->stlen);
- length = t1->stlen - indx;
+ d_length, d_index, (unsigned long int) src_len);
+ length = src_len - indx;
+ }
+
+#ifdef MBS_SUPPORT
+ if (gawk_mb_cur_max > 1) {
+ /* multibyte case, more work */
+ size_t result;
+ wchar_t *wp;
+ mbstate_t mbs;
+ char *substr, *cp;
+
+ /* force_wstring() already called */
+
+ if (t1->stlen == t1->wstlen)
+ goto single_byte_case;
+
+ /*
+ * Convert the wide chars in t1->wstptr back into m.b. chars.
+ * This is pretty grotty, but it's the most straightforward
+ * way to do things.
+ */
+ memset(& mbs, 0, sizeof(mbs));
+ emalloc(substr, char *, (length * gawk_mb_cur_max) + 2, "do_substr");
+ wp = t1->wstptr + indx;
+ for (cp = substr; length > 0; length--) {
+ result = wcrtomb(cp, *wp, & mbs);
+ if (result == (size_t) -1) /* what to do? break seems best */
+ break;
+ cp += result;
+ wp++;
+ }
+ *cp = '\0';
+ r = make_str_node(substr, cp - substr, ALREADY_MALLOCED);
+ r->flags |= TEMP;
+ } else {
+ /* single byte case, easy */
+single_byte_case:
+ r = tmp_string(t1->stptr + indx, length);
}
+#else
r = tmp_string(t1->stptr + indx, length);
+#endif
+
free_temp(t1);
return r;
}
@@ -1652,51 +1730,117 @@ do_print_rec(register NODE *tree)
fflush(rp->fp);
}
+#ifdef MBS_SUPPORT
+/* wide_tolower_toupper --- lower- or uppercase a multibute string */
+
+typedef int (*isw_func)(wint_t);
+typedef wint_t (*tow_func)(wint_t);
+
+static NODE *
+wide_tolower_toupper(NODE *t1, isw_func iswu, tow_func towl)
+{
+ register unsigned char *cp, *cpe;
+ register unsigned char *cp2;
+ size_t mbclen;
+ mbstate_t mbs, prev_mbs;
+ wchar_t wc;
+ NODE *t2;
+ /*
+ * Since the lowercase char and its uppercase equivalent may occupy
+ * different number of bytes (Turkish `i'), we cannot say the length
+ * of the output string.
+ * This approach is adapted from format_tree().
+ */
+ unsigned char *obuf;
+ size_t osiz, ofre;
+
+ /*
+ * Better 2 spare bytes than 1, consistently with make_str_node().
+ * And we need gawk_mb_cur_max free bytes before we convert the last
+ * char, so we add (gawk_mb_cur_max - 1).
+ */
+ osiz = t1->stlen + 2 + (gawk_mb_cur_max - 1);
+ ofre = osiz - 2;
+ emalloc(obuf, char *, osiz, "wide_tolower_toupper");
+
+ memset(&mbs, 0, sizeof(mbstate_t));
+ cp = (unsigned char *)t1->stptr;
+ cpe = (unsigned char *)(t1->stptr + t1->stlen);
+ cp2 = obuf;
+ while (cp < cpe) {
+ if (ofre < gawk_mb_cur_max) {
+ size_t olen = cp2 - obuf;
+ ofre += osiz;
+ osiz *= 2;
+ erealloc(obuf, char *, osiz, "wide_tolower_toupper");
+ cp2 = obuf + olen;
+ }
+ prev_mbs = mbs;
+ mbclen = (size_t) mbrtowc(&wc, (char *) cp, cpe - cp,
+ &mbs);
+ if (mbclen == 0 || mbclen == (size_t) -1 || mbclen == (size_t) -2) {
+ /* Null wide char, or a problem appeared. */
+ *cp2++ = *cp++;
+ ofre--;
+ continue;
+ }
+
+ /* If the character doesn't need change, copy it. */
+ if (!(*iswu)(wc)) {
+ ofre -= mbclen;
+ while (mbclen--)
+ *cp2++ = *cp++;
+ continue;
+ }
+
+ /* Increment the input pointer. */
+ cp += mbclen;
+
+ /* Write the modified wide character. */
+ mbclen = wcrtomb((char *) cp2, (*towl)(wc), &prev_mbs);
+
+ if (mbclen > 0 && mbclen < (size_t) -2) {
+ /* Increment the output pointer. */
+ cp2 += mbclen;
+ ofre -= mbclen;
+ } else {
+ /* A problem appeared. */
+ cp2++;
+ ofre--;
+ }
+ }
+ t2 = make_str_node(obuf, cp2 - obuf, ALREADY_MALLOCED);
+ t2->flags |= TEMP;
+ return t2;
+}
+#endif
+
/* do_tolower --- lower case a string */
NODE *
do_tolower(NODE *tree)
{
NODE *t1, *t2;
- register unsigned char *cp, *cp2;
-#ifdef MBS_SUPPORT
- size_t mbclen = 0;
- mbstate_t mbs, prev_mbs;
- if (gawk_mb_cur_max > 1)
- memset(&mbs, 0, sizeof(mbstate_t));
-#endif
t1 = tree_eval(tree->lnode);
if (do_lint && (t1->flags & (STRING|STRCUR)) == 0)
lintwarn(_("tolower: received non-string argument"));
t1 = force_string(t1);
- t2 = tmp_string(t1->stptr, t1->stlen);
- for (cp = (unsigned char *)t2->stptr,
- cp2 = (unsigned char *)(t2->stptr + t2->stlen); cp < cp2; cp++)
+
#ifdef MBS_SUPPORT
- if (gawk_mb_cur_max > 1) {
- wchar_t wc;
- prev_mbs = mbs;
- mbclen = (size_t) mbrtowc(&wc, (char *) cp, cp2 - cp,
- &mbs);
- if ((mbclen != 1) && (mbclen != (size_t) -1) &&
- (mbclen != (size_t) -2) && (mbclen != 0)) {
- /* a multibyte character. */
- if (iswupper(wc)) {
- wc = towlower(wc);
- wcrtomb((char *) cp, wc, &prev_mbs);
- }
- /* Adjust the pointer. */
- cp += mbclen - 1;
- } else {
- /* Otherwise we treat it as a singlebyte character. */
- if (ISUPPER(*cp))
- *cp = tolower(*cp);
- }
- } else
+ if (gawk_mb_cur_max > 1)
+ t2 = wide_tolower_toupper(t1, iswupper, towlower);
+ else
#endif
- if (ISUPPER(*cp))
- *cp = TOLOWER(*cp);
+ {
+ register unsigned char *cp, *cpe;
+
+ t2 = tmp_string(t1->stptr, t1->stlen);
+ for (cp = (unsigned char *)t2->stptr,
+ cpe = (unsigned char *)(t2->stptr + t2->stlen); cp < cpe; cp++)
+ if (ISUPPER(*cp))
+ *cp = TOLOWER(*cp);
+ }
free_temp(t1);
return t2;
}
@@ -1707,45 +1851,26 @@ NODE *
do_toupper(NODE *tree)
{
NODE *t1, *t2;
- register unsigned char *cp, *cp2;
-#ifdef MBS_SUPPORT
- size_t mbclen = 0;
- mbstate_t mbs, prev_mbs;
- if (gawk_mb_cur_max > 1)
- memset(&mbs, 0, sizeof(mbstate_t));
-#endif
t1 = tree_eval(tree->lnode);
if (do_lint && (t1->flags & (STRING|STRCUR)) == 0)
lintwarn(_("toupper: received non-string argument"));
t1 = force_string(t1);
- t2 = tmp_string(t1->stptr, t1->stlen);
- for (cp = (unsigned char *)t2->stptr,
- cp2 = (unsigned char *)(t2->stptr + t2->stlen); cp < cp2; cp++)
+
#ifdef MBS_SUPPORT
- if (gawk_mb_cur_max > 1) {
- wchar_t wc;
- prev_mbs = mbs;
- mbclen = (size_t) mbrtowc(&wc, (char *) cp, cp2 - cp,
- &mbs);
- if ((mbclen != 1) && (mbclen != (size_t) -1) &&
- (mbclen != (size_t) -2) && (mbclen != 0)) {
- /* a multibyte character. */
- if (iswlower(wc)) {
- wc = towupper(wc);
- wcrtomb((char *) cp, wc, &prev_mbs);
- }
- /* Adjust the pointer. */
- cp += mbclen - 1;
- } else {
- /* Otherwise we treat it as a singlebyte character. */
- if (ISLOWER(*cp))
- *cp = toupper(*cp);
- }
- } else
+ if (gawk_mb_cur_max > 1)
+ t2 = wide_tolower_toupper(t1, iswlower, towupper);
+ else
#endif
- if (ISLOWER(*cp))
- *cp = TOUPPER(*cp);
+ {
+ register unsigned char *cp, *cpe;
+
+ t2 = tmp_string(t1->stptr, t1->stlen);
+ for (cp = (unsigned char *)t2->stptr,
+ cpe = (unsigned char *)(t2->stptr + t2->stlen); cp < cpe; cp++)
+ if (ISLOWER(*cp))
+ *cp = TOUPPER(*cp);
+ }
free_temp(t1);
return t2;
}
@@ -1866,7 +1991,7 @@ do_match(NODE *tree)
{
NODE *t1, *dest, *it;
int rstart, len, ii;
- AWKNUM rlength;
+ int rlength;
Regexp *rp;
regoff_t s;
char *start;
@@ -1889,10 +2014,19 @@ do_match(NODE *tree)
assoc_clear(dest);
}
- rstart = research(rp, t1->stptr, 0, t1->stlen, TRUE);
+ rstart = research(rp, t1->stptr, 0, t1->stlen, RE_NEED_START);
if (rstart >= 0) { /* match succeded */
- rstart++; /* 1-based indexing */
- rlength = REEND(rp, t1->stptr) - RESTART(rp, t1->stptr);
+ size_t *wc_indices = NULL;
+
+ rlength = REEND(rp, t1->stptr) - RESTART(rp, t1->stptr); /* byte length */
+#ifdef MBS_SUPPORT
+ if (gawk_mb_cur_max > 1) {
+ t1 = str2wstr(t1, & wc_indices);
+ rlength = wc_indices[rstart + rlength - 1] - wc_indices[rstart] + 1;
+ rstart = wc_indices[rstart];
+ }
+#endif
+ rstart++; /* now it's 1-based indexing */
/* Build the array only if the caller wants the optional subpatterns */
if (dest != NULL) {
@@ -1905,8 +2039,18 @@ do_match(NODE *tree)
* matched even if all of them did not.
*/
if ((s = SUBPATSTART(rp, t1->stptr, ii)) != -1) {
+ size_t subpat_start;
+ size_t subpat_len;
+
start = t1->stptr + s;
- len = SUBPATEND(rp, t1->stptr, ii) - s;
+ subpat_start = s;
+ subpat_len = len = SUBPATEND(rp, t1->stptr, ii) - s;
+#ifdef MBS_SUPPORT
+ if (gawk_mb_cur_max > 1) {
+ subpat_start = wc_indices[s];
+ subpat_len = wc_indices[s + len - 1] - subpat_start + 1;
+ }
+#endif
it = make_string(start, len);
/*
@@ -1930,7 +2074,7 @@ do_match(NODE *tree)
slen = ilen + subseplen + 5;
- it = make_number((AWKNUM) s + 1);
+ it = make_number((AWKNUM) subpat_start + 1);
*assoc_lookup(dest, tmp_string(buf, slen), FALSE) = it;
memcpy(buf, buff, ilen);
@@ -1939,22 +2083,24 @@ do_match(NODE *tree)
slen = ilen + subseplen + 6;
- it = make_number((AWKNUM) len);
+ it = make_number((AWKNUM) subpat_len);
*assoc_lookup(dest, tmp_string(buf, slen), FALSE) = it;
}
}
free(buf);
+ if (wc_indices != NULL)
+ free(wc_indices);
}
} else { /* match failed */
rstart = 0;
- rlength = -1.0;
+ rlength = -1;
}
free_temp(t1);
unref(RSTART_node->var_value);
RSTART_node->var_value = make_number((AWKNUM) rstart);
unref(RLENGTH_node->var_value);
- RLENGTH_node->var_value = make_number(rlength);
+ RLENGTH_node->var_value = make_number((AWKNUM) rlength);
return tmp_number((AWKNUM) rstart);
}
@@ -2079,9 +2225,7 @@ sub_common(NODE *tree, long how_many, int backdigs)
int global = (how_many == -1);
long current;
int lastmatchnonzero;
-#ifdef MBS_SUPPORT
- char *mb_indices;
-#endif
+ char *mb_indices = NULL;
tmp = tree->lnode; /* regexp */
rp = re_update(tmp);
@@ -2095,7 +2239,7 @@ sub_common(NODE *tree, long how_many, int backdigs)
t = force_string(tree_eval(tmp));
/* do the search early to avoid work on non-match */
- if (research(rp, t->stptr, 0, t->stlen, TRUE) == -1 ||
+ if (research(rp, t->stptr, 0, t->stlen, RE_NEED_START) == -1 ||
RESTART(rp, t->stptr) > t->stlen) {
free_temp(t);
free_temp(s);
@@ -2126,7 +2270,7 @@ sub_common(NODE *tree, long how_many, int backdigs)
buf[buflen] = '\0';
buf[buflen + 1] = '\0';
ampersands = 0;
-#ifdef MBS_SUPPORT
+
/*
* Some systems' malloc() can't handle being called with an
* argument of zero. Thus we have to have some special case
@@ -2138,16 +2282,11 @@ sub_common(NODE *tree, long how_many, int backdigs)
if (gawk_mb_cur_max > 1 && repllen > 0) {
emalloc(mb_indices, char *, repllen * sizeof(char), "sub_common");
index_multibyte_buffer(repl, mb_indices, repllen);
- } else
- mb_indices = NULL;
-#endif
+ }
+
for (scan = repl; scan < replend; scan++) {
-#ifdef MBS_SUPPORT
if ((gawk_mb_cur_max == 1 || (repllen > 0 && mb_indices[scan - repl] == 1))
- && (*scan == '&')) {
-#else
- if (*scan == '&') {
-#endif
+ && (*scan == '&')) {
repllen--;
ampersands++;
} else if (*scan == '\\') {
@@ -2230,22 +2369,18 @@ sub_common(NODE *tree, long how_many, int backdigs)
*/
for (scan = repl; scan < replend; scan++)
if (*scan == '&'
-#ifdef MBS_SUPPORT
/*
* Don't test repllen here. A simple "&" could
* end up with repllen == 0.
*/
&& (gawk_mb_cur_max == 1
|| mb_indices[scan - repl] == 1)
-#endif
) {
for (cp = matchstart; cp < matchend; cp++)
*bp++ = *cp;
} else if (*scan == '\\'
-#ifdef MBS_SUPPORT
&& (gawk_mb_cur_max == 1
|| (repllen > 0 && mb_indices[scan - repl] == 1))
-#endif
) {
if (backdigs) { /* gensub, behave sanely */
if (ISDIGIT(scan[1])) {
@@ -2310,7 +2445,7 @@ sub_common(NODE *tree, long how_many, int backdigs)
if ((current >= how_many && !global)
|| ((long) textlen <= 0 && matchstart == matchend)
- || research(rp, t->stptr, text - t->stptr, textlen, TRUE) == -1)
+ || research(rp, t->stptr, text - t->stptr, textlen, RE_NEED_START) == -1)
break;
}
@@ -2338,10 +2473,9 @@ sub_common(NODE *tree, long how_many, int backdigs)
(*after_assign)();
t->flags &= ~(NUMCUR|NUMBER);
}
-#ifdef MBS_SUPPORT
if (mb_indices != NULL)
free(mb_indices);
-#endif
+
return tmp_number((AWKNUM) matches);
}
@@ -2400,10 +2534,17 @@ do_gensub(NODE *tree)
if ((t->flags & (STRCUR|STRING)) != 0) {
if (t->stlen > 0 && (t->stptr[0] == 'g' || t->stptr[0] == 'G'))
how_many = -1;
- else
+ else {
+ d = force_number(t);
+
+ if ((t->flags & NUMCUR) != 0)
+ goto set_how_many;
+
how_many = 1;
+ }
} else {
d = force_number(t);
+set_how_many:
if (d < 1)
how_many = 1;
else if (d < LONG_MAX)
@@ -2541,6 +2682,7 @@ static NODE *
tmp_integer(uintmax_t n)
{
#ifdef HAVE_UINTMAX_T
+/* #ifndef LDBL_MANT_DIG */
/*
* If uintmax_t is so wide that AWKNUM cannot represent all its
* values, strip leading nonzero bits of integers that are so large
@@ -2551,6 +2693,7 @@ tmp_integer(uintmax_t n)
*/
if (AWKNUM_FRACTION_BITS < CHAR_BIT * sizeof n)
n &= ((uintmax_t) 1 << AWKNUM_FRACTION_BITS) - 1;
+/* #endif */ /* LDBL_MANT_DIG */
#endif /* HAVE_UINTMAX_T */
return tmp_number((AWKNUM) n);
@@ -2773,16 +2916,16 @@ NODE *
do_strtonum(NODE *tree)
{
NODE *tmp;
- double d;
+ AWKNUM d;
tmp = tree_eval(tree->lnode);
if ((tmp->flags & (NUMBER|NUMCUR)) != 0)
- d = (double) force_number(tmp);
- else if (isnondecimal(tmp->stptr))
+ d = (AWKNUM) force_number(tmp);
+ else if (isnondecimal(tmp->stptr, TRUE))
d = nondec2awknum(tmp->stptr, tmp->stlen);
else
- d = (double) force_number(tmp);
+ d = (AWKNUM) force_number(tmp);
free_temp(tmp);
return tmp_number((AWKNUM) d);
diff --git a/config.guess b/config.guess
index a6d8a945..772ec36a 100755
--- a/config.guess
+++ b/config.guess
@@ -1,9 +1,9 @@
#! /bin/sh
# Attempt to guess a canonical system name.
# Copyright (C) 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999,
-# 2000, 2001, 2002, 2003, 2004 Free Software Foundation, Inc.
+# 2000, 2001, 2002, 2003, 2004, 2005 Free Software Foundation, Inc.
-timestamp='2004-06-24'
+timestamp='2005-02-10'
# This file is free software; you can redistribute it and/or modify it
# under the terms of the GNU General Public License as published by
@@ -17,7 +17,7 @@ timestamp='2004-06-24'
#
# 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.
+# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
#
# As a special exception to the GNU General Public License, if you
# distribute this file as part of a program that contains a
@@ -53,7 +53,7 @@ version="\
GNU config.guess ($timestamp)
Originally written by Per Bothner.
-Copyright (C) 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004
+Copyright (C) 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005
Free Software Foundation, Inc.
This is free software; see the source for copying conditions. There is NO
@@ -203,9 +203,6 @@ case "${UNAME_MACHINE}:${UNAME_SYSTEM}:${UNAME_RELEASE}:${UNAME_VERSION}" in
amiga:OpenBSD:*:*)
echo m68k-unknown-openbsd${UNAME_RELEASE}
exit 0 ;;
- arc:OpenBSD:*:*)
- echo mipsel-unknown-openbsd${UNAME_RELEASE}
- exit 0 ;;
cats:OpenBSD:*:*)
echo arm-unknown-openbsd${UNAME_RELEASE}
exit 0 ;;
@@ -230,18 +227,12 @@ case "${UNAME_MACHINE}:${UNAME_SYSTEM}:${UNAME_RELEASE}:${UNAME_VERSION}" in
mvmeppc:OpenBSD:*:*)
echo powerpc-unknown-openbsd${UNAME_RELEASE}
exit 0 ;;
- pmax:OpenBSD:*:*)
- echo mipsel-unknown-openbsd${UNAME_RELEASE}
- exit 0 ;;
sgi:OpenBSD:*:*)
- echo mipseb-unknown-openbsd${UNAME_RELEASE}
+ echo mips64-unknown-openbsd${UNAME_RELEASE}
exit 0 ;;
sun3:OpenBSD:*:*)
echo m68k-unknown-openbsd${UNAME_RELEASE}
exit 0 ;;
- wgrisc:OpenBSD:*:*)
- echo mipsel-unknown-openbsd${UNAME_RELEASE}
- exit 0 ;;
*:OpenBSD:*:*)
echo ${UNAME_MACHINE}-unknown-openbsd${UNAME_RELEASE}
exit 0 ;;
@@ -328,6 +319,9 @@ case "${UNAME_MACHINE}:${UNAME_SYSTEM}:${UNAME_RELEASE}:${UNAME_VERSION}" in
*:OS/390:*:*)
echo i370-ibm-openedition
exit 0 ;;
+ *:z/VM:*:*)
+ echo s390-ibm-zvmoe
+ exit 0 ;;
*:OS400:*:*)
echo powerpc-ibm-os400
exit 0 ;;
@@ -351,7 +345,7 @@ case "${UNAME_MACHINE}:${UNAME_SYSTEM}:${UNAME_RELEASE}:${UNAME_VERSION}" in
DRS?6000:unix:4.0:6*)
echo sparc-icl-nx6
exit 0 ;;
- DRS?6000:UNIX_SV:4.2*:7*)
+ DRS?6000:UNIX_SV:4.2*:7* | DRS?6000:isis:4.2*:7*)
case `/usr/bin/uname -p` in
sparc) echo sparc-icl-nx7 && exit 0 ;;
esac ;;
@@ -810,6 +804,9 @@ EOF
i*:UWIN*:*)
echo ${UNAME_MACHINE}-pc-uwin
exit 0 ;;
+ amd64:CYGWIN*:*:*)
+ echo x86_64-unknown-cygwin
+ exit 0 ;;
p*:CYGWIN*:*)
echo powerpcle-unknown-cygwin
exit 0 ;;
@@ -833,6 +830,12 @@ EOF
cris:Linux:*:*)
echo cris-axis-linux-gnu
exit 0 ;;
+ crisv32:Linux:*:*)
+ echo crisv32-axis-linux-gnu
+ exit 0 ;;
+ frv:Linux:*:*)
+ echo frv-unknown-linux-gnu
+ exit 0 ;;
ia64:Linux:*:*)
echo ${UNAME_MACHINE}-unknown-linux-gnu
exit 0 ;;
@@ -1081,7 +1084,7 @@ EOF
exit 0 ;;
M68*:*:R3V[5678]*:*)
test -r /sysV68 && echo 'm68k-motorola-sysv' && exit 0 ;;
- 3[345]??:*:4.0:3.0 | 3[34]??A:*:4.0:3.0 | 3[34]??,*:*:4.0:3.0 | 3[34]??/*:*:4.0:3.0 | 4400:*:4.0:3.0 | 4850:*:4.0:3.0 | SKA40:*:4.0:3.0 | SDS2:*:4.0:3.0 | SHG2:*:4.0:3.0)
+ 3[345]??:*:4.0:3.0 | 3[34]??A:*:4.0:3.0 | 3[34]??,*:*:4.0:3.0 | 3[34]??/*:*:4.0:3.0 | 4400:*:4.0:3.0 | 4850:*:4.0:3.0 | SKA40:*:4.0:3.0 | SDS2:*:4.0:3.0 | SHG2:*:4.0:3.0 | S7501*:*:4.0:3.0)
OS_REL=''
test -r /etc/.relid \
&& OS_REL=.`sed -n 's/[^ ]* [^ ]* \([0-9][0-9]\).*/\1/p' < /etc/.relid`
@@ -1179,9 +1182,10 @@ EOF
echo ${UNAME_MACHINE}-apple-rhapsody${UNAME_RELEASE}
exit 0 ;;
*:Darwin:*:*)
- case `uname -p` in
+ UNAME_PROCESSOR=`uname -p` || UNAME_PROCESSOR=unknown
+ case $UNAME_PROCESSOR in
*86) UNAME_PROCESSOR=i686 ;;
- powerpc) UNAME_PROCESSOR=powerpc ;;
+ unknown) UNAME_PROCESSOR=powerpc ;;
esac
echo ${UNAME_PROCESSOR}-apple-darwin${UNAME_RELEASE}
exit 0 ;;
@@ -1196,6 +1200,9 @@ EOF
*:QNX:*:4*)
echo i386-pc-qnx
exit 0 ;;
+ NSE-?:NONSTOP_KERNEL:*:*)
+ echo nse-tandem-nsk${UNAME_RELEASE}
+ exit 0 ;;
NSR-?:NONSTOP_KERNEL:*:*)
echo nsr-tandem-nsk${UNAME_RELEASE}
exit 0 ;;
@@ -1249,7 +1256,10 @@ EOF
A*) echo alpha-dec-vms && exit 0 ;;
I*) echo ia64-dec-vms && exit 0 ;;
V*) echo vax-dec-vms && exit 0 ;;
- esac
+ esac ;;
+ *:XENIX:*:SysV)
+ echo i386-pc-xenix
+ exit 0 ;;
esac
#echo '(No uname command or uname output not recognized.)' 1>&2
diff --git a/config.rpath b/config.rpath
index 4db13e50..3f1bef34 100755
--- a/config.rpath
+++ b/config.rpath
@@ -2,28 +2,13 @@
# Output a system dependent set of variables, describing how to set the
# run time search path of shared libraries in an executable.
#
-# Copyright 1996-2003 Free Software Foundation, Inc.
+# Copyright 1996-2005 Free Software Foundation, Inc.
# Taken from GNU libtool, 2001
# Originally by Gordon Matzigkeit <gord@gnu.ai.mit.edu>, 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 of the License, or
-# (at your option) any later version.
-#
-# This program is distributed in the hope that it will be useful, but
-# WITHOUT ANY WARRANTY; without even the implied warranty of
-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
-# General Public License for more details.
-#
-# You should have received a copy of the GNU General Public License
-# along with this program; if not, write to the Free Software
-# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
-#
-# As a special exception to the GNU General Public License, if you
-# distribute this file as part of a program that contains a
-# configuration script generated by Autoconf, you may include it under
-# the same distribution terms that you use for the rest of that program.
+# This file 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.
#
# The first argument passed to this file is the canonical host specification,
# CPU_TYPE-MANUFACTURER-OPERATING_SYSTEM
@@ -50,6 +35,8 @@ host_cpu=`echo "$host" | sed 's/^\([^-]*\)-\([^-]*\)-\(.*\)$/\1/'`
host_vendor=`echo "$host" | sed 's/^\([^-]*\)-\([^-]*\)-\(.*\)$/\2/'`
host_os=`echo "$host" | sed 's/^\([^-]*\)-\([^-]*\)-\(.*\)$/\3/'`
+cc_basename=`echo "$CC" | sed -e 's%^.*/%%'`
+
# Code taken from libtool.m4's AC_LIBTOOL_PROG_COMPILER_PIC.
wl=
@@ -60,6 +47,13 @@ else
aix*)
wl='-Wl,'
;;
+ darwin*)
+ case "$cc_basename" in
+ xlc*)
+ wl='-Wl,'
+ ;;
+ esac
+ ;;
mingw* | pw32* | os2*)
;;
hpux9* | hpux10* | hpux11*)
@@ -71,13 +65,19 @@ else
newsos6)
;;
linux*)
- case $CC in
- icc|ecc)
+ case $cc_basename in
+ icc* | ecc*)
+ wl='-Wl,'
+ ;;
+ pgcc | pgf77 | pgf90)
wl='-Wl,'
;;
- ccc)
+ ccc*)
wl='-Wl,'
;;
+ como)
+ wl='-lopt='
+ ;;
esac
;;
osf3* | osf4* | osf5*)
@@ -96,6 +96,9 @@ else
;;
sysv4*MP*)
;;
+ unicos*)
+ wl='-Wl,'
+ ;;
uts4*)
;;
esac
@@ -138,7 +141,7 @@ if test "$with_gnu_ld" = yes; then
# that the semantics of dynamic libraries on AmigaOS, at least up
# to version 4, is to share data among multiple programs linked
# with the same dynamic library. Since this doesn't match the
- # behavior of shared libraries on other platforms, we can use
+ # behavior of shared libraries on other platforms, we cannot use
# them.
ld_shlibs=no
;;
@@ -173,6 +176,13 @@ if test "$with_gnu_ld" = yes; then
sunos4*)
hardcode_direct=yes
;;
+ linux*)
+ if $LD --help 2>&1 | grep ': supported targets:.* elf' > /dev/null; then
+ :
+ else
+ ld_shlibs=no
+ fi
+ ;;
*)
if $LD --help 2>&1 | grep ': supported targets:.* elf' > /dev/null; then
:
@@ -266,7 +276,7 @@ else
# see comment about different semantics on the GNU ld section
ld_shlibs=no
;;
- bsdi4*)
+ bsdi[45]*)
;;
cygwin* | mingw* | pw32*)
# When not using gcc, we currently assume that we are using
@@ -277,8 +287,17 @@ else
libext=lib
;;
darwin* | rhapsody*)
- if $CC -v 2>&1 | grep 'Apple' >/dev/null ; then
- hardcode_direct=no
+ hardcode_direct=no
+ if test "$GCC" = yes ; then
+ :
+ else
+ case "$cc_basename" in
+ xlc*)
+ ;;
+ *)
+ ld_shlibs=no
+ ;;
+ esac
fi
;;
dgux*)
@@ -295,7 +314,7 @@ else
hardcode_direct=yes
hardcode_minus_L=yes
;;
- freebsd*)
+ freebsd* | kfreebsd*-gnu | dragonfly*)
hardcode_libdir_flag_spec='-R$libdir'
hardcode_direct=yes
;;
@@ -438,7 +457,7 @@ case "$host_os" in
;;
beos*)
;;
- bsdi4*)
+ bsdi[45]*)
;;
cygwin* | mingw* | pw32*)
shrext=.dll
@@ -450,6 +469,8 @@ case "$host_os" in
;;
freebsd1*)
;;
+ kfreebsd*-gnu)
+ ;;
freebsd*)
;;
gnu*)
@@ -486,11 +507,13 @@ case "$host_os" in
;;
linux*)
;;
+ knetbsd*-gnu)
+ ;;
netbsd*)
;;
newsos6)
;;
- nto-qnx)
+ nto-qnx*)
;;
openbsd*)
;;
@@ -519,7 +542,7 @@ escaped_wl=`echo "X$wl" | sed -e 's/^X//' -e "$sed_quote_subst"`
shlibext=`echo "$shrext" | sed -e 's,^\.,,'`
escaped_hardcode_libdir_flag_spec=`echo "X$hardcode_libdir_flag_spec" | sed -e 's/^X//' -e "$sed_quote_subst"`
-sed -e 's/^\([a-zA-Z0-9_]*\)=/acl_cv_\1=/' <<EOF
+LC_ALL=C sed -e 's/^\([a-zA-Z0-9_]*\)=/acl_cv_\1=/' <<EOF
# How to pass a linker flag through the compiler.
wl="$escaped_wl"
diff --git a/config.sub b/config.sub
index ac6de986..1a7fd811 100755
--- a/config.sub
+++ b/config.sub
@@ -1,9 +1,9 @@
#! /bin/sh
# Configuration validation subroutine script.
# Copyright (C) 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999,
-# 2000, 2001, 2002, 2003, 2004 Free Software Foundation, Inc.
+# 2000, 2001, 2002, 2003, 2004, 2005 Free Software Foundation, Inc.
-timestamp='2004-06-24'
+timestamp='2005-02-10'
# This file is (in principle) common to ALL GNU software.
# The presence of a machine in this file suggests that SOME GNU software
@@ -21,8 +21,8 @@ timestamp='2004-06-24'
#
# 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.
+# Foundation, Inc., 51 Franklin Street, Fifth Floor,
+# Boston, MA 02110-1301, USA.
# As a special exception to the GNU General Public License, if you
# distribute this file as part of a program that contains a
@@ -70,7 +70,7 @@ Report bugs and patches to <config-patches@gnu.org>."
version="\
GNU config.sub ($timestamp)
-Copyright (C) 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004
+Copyright (C) 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005
Free Software Foundation, Inc.
This is free software; see the source for copying conditions. There is NO
@@ -237,7 +237,7 @@ case $basic_machine in
| h8300 | h8500 | hppa | hppa1.[01] | hppa2.0 | hppa2.0[nw] | hppa64 \
| i370 | i860 | i960 | ia64 \
| ip2k | iq2000 \
- | m32r | m32rle | m68000 | m68k | m88k | mcore \
+ | m32r | m32rle | m68000 | m68k | m88k | maxq | mcore \
| mips | mipsbe | mipseb | mipsel | mipsle \
| mips16 \
| mips64 | mips64el \
@@ -267,7 +267,7 @@ case $basic_machine in
| tahoe | thumb | tic4x | tic80 | tron \
| v850 | v850e \
| we32k \
- | x86 | xscale | xstormy16 | xtensa \
+ | x86 | xscale | xscalee[bl] | xstormy16 | xtensa \
| z8k)
basic_machine=$basic_machine-unknown
;;
@@ -310,7 +310,7 @@ case $basic_machine in
| ip2k-* | iq2000-* \
| m32r-* | m32rle-* \
| m68000-* | m680[012346]0-* | m68360-* | m683?2-* | m68k-* \
- | m88110-* | m88k-* | mcore-* \
+ | m88110-* | m88k-* | maxq-* | mcore-* \
| mips-* | mipsbe-* | mipseb-* | mipsel-* | mipsle-* \
| mips16-* \
| mips64-* | mips64el-* \
@@ -343,8 +343,8 @@ case $basic_machine in
| tron-* \
| v850-* | v850e-* | vax-* \
| we32k-* \
- | x86-* | x86_64-* | xps100-* | xscale-* | xstormy16-* \
- | xtensa-* \
+ | x86-* | x86_64-* | xps100-* | xscale-* | xscalee[bl]-* \
+ | xstormy16-* | xtensa-* \
| ymp-* \
| z8k-*)
;;
@@ -457,6 +457,9 @@ case $basic_machine in
crds | unos)
basic_machine=m68k-crds
;;
+ crisv32 | crisv32-* | etraxfs*)
+ basic_machine=crisv32-axis
+ ;;
cris | cris-* | etrax*)
basic_machine=cris-axis
;;
@@ -486,6 +489,10 @@ case $basic_machine in
basic_machine=m88k-motorola
os=-sysv3
;;
+ djgpp)
+ basic_machine=i586-pc
+ os=-msdosdjgpp
+ ;;
dpx20 | dpx20-*)
basic_machine=rs6000-bull
os=-bosx
@@ -1026,6 +1033,10 @@ case $basic_machine in
basic_machine=hppa1.1-winbond
os=-proelf
;;
+ xbox)
+ basic_machine=i686-pc
+ os=-mingw32
+ ;;
xps | xps100)
basic_machine=xps100-honeywell
;;
@@ -1294,6 +1305,9 @@ case $os in
-kaos*)
os=-kaos
;;
+ -zvmoe)
+ os=-zvmoe
+ ;;
-none)
;;
*)
diff --git a/configh.in b/configh.in
index 612f7925..3731e4f7 100644
--- a/configh.in
+++ b/configh.in
@@ -3,14 +3,6 @@
/* switch statements are enabled in awk programs */
#undef ALLOW_SWITCH
-/* Define to one of `_getb67', `GETB67', `getb67' for Cray-2 and Cray-YMP
- systems. This function is required for `alloca.c' support on those systems.
- */
-#undef CRAY_STACKSEG_END
-
-/* Define to 1 if using `alloca.c'. */
-#undef C_ALLOCA
-
/* dynamic loading is possible */
#undef DYNAMIC
@@ -28,43 +20,21 @@
/* Define to 1 if you have the `alarm' function. */
#undef HAVE_ALARM
-/* Define to 1 if you have `alloca', as a function or macro. */
-#undef HAVE_ALLOCA
+/* Define to 1 if you have the `btowc' function. */
+#undef HAVE_BTOWC
-/* Define to 1 if you have <alloca.h> and it should be used (not on Ultrix).
- */
-#undef HAVE_ALLOCA_H
-
-/* Define to 1 if you have the <argz.h> header file. */
-#undef HAVE_ARGZ_H
+/* Define to 1 if you have the MacOS X function CFLocaleCopyCurrent in the
+ CoreFoundation framework. */
+#undef HAVE_CFLOCALECOPYCURRENT
-/* Define to 1 if you have the `asprintf' function. */
-#undef HAVE_ASPRINTF
+/* Define to 1 if you have the MacOS X function CFPreferencesCopyAppValue in
+ the CoreFoundation framework. */
+#undef HAVE_CFPREFERENCESCOPYAPPVALUE
/* Define if the GNU dcgettext() function is already present or preinstalled.
*/
#undef HAVE_DCGETTEXT
-/* Define to 1 if you have the declaration of `feof_unlocked', and to 0 if you
- don't. */
-#undef HAVE_DECL_FEOF_UNLOCKED
-
-/* Define to 1 if you have the declaration of `fgets_unlocked', and to 0 if
- you don't. */
-#undef HAVE_DECL_FGETS_UNLOCKED
-
-/* Define to 1 if you have the declaration of `getc_unlocked', and to 0 if you
- don't. */
-#undef HAVE_DECL_GETC_UNLOCKED
-
-/* Define to 1 if you have the declaration of `_snprintf', and to 0 if you
- don't. */
-#undef HAVE_DECL__SNPRINTF
-
-/* Define to 1 if you have the declaration of `_snwprintf', and to 0 if you
- don't. */
-#undef HAVE_DECL__SNWPRINTF
-
/* Define to 1 if you don't have `vprintf' but do have `_doprnt.' */
#undef HAVE_DOPRNT
@@ -74,36 +44,15 @@
/* Define to 1 if you have the `fmod' function. */
#undef HAVE_FMOD
-/* Define to 1 if you have the `fwprintf' function. */
-#undef HAVE_FWPRINTF
-
-/* Define to 1 if you have the `getcwd' function. */
-#undef HAVE_GETCWD
-
-/* Define to 1 if you have the `getegid' function. */
-#undef HAVE_GETEGID
-
-/* Define to 1 if you have the `geteuid' function. */
-#undef HAVE_GETEUID
-
-/* Define to 1 if you have the `getgid' function. */
-#undef HAVE_GETGID
-
/* Define to 1 if you have the `getgrent' function. */
#undef HAVE_GETGRENT
/* Define to 1 if you have the `getgroups' function. */
#undef HAVE_GETGROUPS
-/* Define to 1 if you have the `getpagesize' function. */
-#undef HAVE_GETPAGESIZE
-
/* Define if the GNU gettext() function is already present or preinstalled. */
#undef HAVE_GETTEXT
-/* Define to 1 if you have the `getuid' function. */
-#undef HAVE_GETUID
-
/* Define to 1 if you have the `grantpt' function. */
#undef HAVE_GRANTPT
@@ -113,21 +62,24 @@
/* Define if you have the 'intmax_t' type in <stdint.h> or <inttypes.h>. */
#undef HAVE_INTMAX_T
-/* Define if <inttypes.h> exists and doesn't clash with <sys/types.h>. */
+/* Define to 1 if you have the <inttypes.h> header file. */
#undef HAVE_INTTYPES_H
/* Define if <inttypes.h> exists, doesn't clash with <sys/types.h>, and
declares uintmax_t. */
#undef HAVE_INTTYPES_H_WITH_UINTMAX
+/* Define to 1 if you have the `isascii' function. */
+#undef HAVE_ISASCII
+
/* Define to 1 if you have the `iswctype' function. */
#undef HAVE_ISWCTYPE
-/* Define if you have <langinfo.h> and nl_langinfo(CODESET). */
-#undef HAVE_LANGINFO_CODESET
+/* Define to 1 if you have the `iswlower' function. */
+#undef HAVE_ISWLOWER
-/* Define if your <locale.h> file defines LC_MESSAGES. */
-#undef HAVE_LC_MESSAGES
+/* Define to 1 if you have the `iswupper' function. */
+#undef HAVE_ISWUPPER
/* Define to 1 if you have the `dl' library (-ldl). */
#undef HAVE_LIBDL
@@ -144,15 +96,9 @@
/* Define to 1 if you have the <locale.h> header file. */
#undef HAVE_LOCALE_H
-/* Define if you have the 'long double' type. */
-#undef HAVE_LONG_DOUBLE
-
/* Define if you have the 'long long' type. */
#undef HAVE_LONG_LONG
-/* Define to 1 if you have the <malloc.h> header file. */
-#undef HAVE_MALLOC_H
-
/* Define to 1 if you have the `mbrlen' function. */
#undef HAVE_MBRLEN
@@ -174,42 +120,21 @@
/* Define to 1 if you have the <memory.h> header file. */
#undef HAVE_MEMORY_H
-/* Define to 1 if you have the `mempcpy' function. */
-#undef HAVE_MEMPCPY
-
/* Define to 1 if you have the `memset' function. */
#undef HAVE_MEMSET
/* we have the mktime function */
#undef HAVE_MKTIME
-/* Define to 1 if you have a working `mmap' system call. */
-#undef HAVE_MMAP
-
-/* Define to 1 if you have the `munmap' function. */
-#undef HAVE_MUNMAP
-
/* Define to 1 if you have the <netdb.h> header file. */
#undef HAVE_NETDB_H
/* Define to 1 if you have the <netinet/in.h> header file. */
#undef HAVE_NETINET_IN_H
-/* Define to 1 if you have the <nl_types.h> header file. */
-#undef HAVE_NL_TYPES_H
-
/* we have portals on /p on this system */
#undef HAVE_PORTALS
-/* Define if your printf() function supports format strings with positions. */
-#undef HAVE_POSIX_PRINTF
-
-/* Define to 1 if you have the `putenv' function. */
-#undef HAVE_PUTENV
-
-/* Define to 1 if you have the `setenv' function. */
-#undef HAVE_SETENV
-
/* Define to 1 if you have the `setlocale' function. */
#undef HAVE_SETLOCALE
@@ -225,9 +150,6 @@
/* Define to 1 if you have the <stdarg.h> header file. */
#undef HAVE_STDARG_H
-/* Define to 1 if you have the <stddef.h> header file. */
-#undef HAVE_STDDEF_H
-
/* Define to 1 if you have the <stdint.h> header file. */
#undef HAVE_STDINT_H
@@ -238,18 +160,9 @@
/* Define to 1 if you have the <stdlib.h> header file. */
#undef HAVE_STDLIB_H
-/* Define to 1 if you have the `stpcpy' function. */
-#undef HAVE_STPCPY
-
-/* Define to 1 if you have the `strcasecmp' function. */
-#undef HAVE_STRCASECMP
-
/* Define to 1 if you have the `strchr' function. */
#undef HAVE_STRCHR
-/* Define to 1 if you have the `strdup' function. */
-#undef HAVE_STRDUP
-
/* Define to 1 if you have the `strerror' function. */
#undef HAVE_STRERROR
@@ -315,8 +228,11 @@
`HAVE_STRUCT_TM_TM_ZONE' instead. */
#undef HAVE_TM_ZONE
-/* Define to 1 if you have the `tsearch' function. */
-#undef HAVE_TSEARCH
+/* Define to 1 if you have the `towlower' function. */
+#undef HAVE_TOWLOWER
+
+/* Define to 1 if you have the `towupper' function. */
+#undef HAVE_TOWUPPER
/* Define to 1 if you don't have `tm_zone' but do have the external array
`tzname'. */
@@ -340,18 +256,12 @@
/* Define to 1 if you have the <wchar.h> header file. */
#undef HAVE_WCHAR_H
-/* Define if you have the 'wchar_t' type. */
-#undef HAVE_WCHAR_T
-
/* Define to 1 if you have the `wcrtomb' function. */
#undef HAVE_WCRTOMB
/* Define to 1 if you have the `wcscoll' function. */
#undef HAVE_WCSCOLL
-/* Define to 1 if you have the `wcslen' function. */
-#undef HAVE_WCSLEN
-
/* Define to 1 if you have the `wctype' function. */
#undef HAVE_WCTYPE
@@ -361,27 +271,9 @@
/* systems should define this type here */
#undef HAVE_WCTYPE_T
-/* Define if you have the 'wint_t' type. */
+/* systems should define this type here */
#undef HAVE_WINT_T
-/* Define to 1 if you have the `__argz_count' function. */
-#undef HAVE___ARGZ_COUNT
-
-/* Define to 1 if you have the `__argz_next' function. */
-#undef HAVE___ARGZ_NEXT
-
-/* Define to 1 if you have the `__argz_stringify' function. */
-#undef HAVE___ARGZ_STRINGIFY
-
-/* Define to 1 if you have the `__fsetlocking' function. */
-#undef HAVE___FSETLOCKING
-
-/* Define as const if the declaration of iconv() needs const. */
-#undef ICONV_CONST
-
-/* Define if integer division by zero raises signal SIGFPE. */
-#undef INTDIV0_RAISES_SIGFPE
-
/* disable lint checks */
#undef NO_LINT
@@ -406,30 +298,21 @@
/* Define to 1 if *printf supports %F format */
#undef PRINTF_HAS_F_FORMAT
-/* Define if <inttypes.h> exists and defines unusable PRI* macros. */
-#undef PRI_MACROS_BROKEN
-
/* Define to 1 if the C compiler supports function prototypes. */
#undef PROTOTYPES
/* Define as the return type of signal handlers (`int' or `void'). */
#undef RETSIGTYPE
-/* Define as the maximum value of type 'size_t', if the system doesn't define
- it. */
-#undef SIZE_MAX
+/* The size of a `unsigned int', as computed by sizeof. */
+#undef SIZEOF_UNSIGNED_INT
+
+/* The size of a `unsigned long', as computed by sizeof. */
+#undef SIZEOF_UNSIGNED_LONG
/* return type of sprintf */
#undef SPRINTF_RET
-/* If using the C implementation of alloca, define if you know the
- direction of stack growth for your system; otherwise it will be
- automatically deduced at run-time.
- STACK_DIRECTION > 0 => grows toward higher addresses
- STACK_DIRECTION < 0 => grows toward lower addresses
- STACK_DIRECTION = 0 => direction of growth unknown */
-#undef STACK_DIRECTION
-
/* Define to 1 if you have the ANSI C header files. */
#undef STDC_HEADERS
@@ -494,25 +377,22 @@
#undef inline
#endif
-/* Define to widest signed type if <inttypes.h> doesn't define. */
+/* Define to long or long long if <inttypes.h> and <stdint.h> don't define. */
#undef intmax_t
-/* Define to `long' if <sys/types.h> does not define. */
-#undef off_t
-
/* Define to `int' if <sys/types.h> does not define. */
#undef pid_t
-/* Define as the type of the result of subtracting two pointers, if the system
- doesn't define it. */
-#undef ptrdiff_t
-
-/* Define to empty if the C compiler doesn't support this keyword. */
-#undef signed
+/* Define to equivalent of C99 restrict keyword, or to nothing if this is not
+ supported. Do not define if restrict is supported directly. */
+#undef restrict
/* Define to `unsigned' if <sys/types.h> does not define. */
#undef size_t
+/* type to use in place of socklen_t if not defined */
+#undef socklen_t
+
/* Define to `int' if <sys/types.h> does not define. */
#undef ssize_t
@@ -522,3 +402,5 @@
/* Define to unsigned long or unsigned long long if <stdint.h> and
<inttypes.h> don't define. */
#undef uintmax_t
+
+#include "custom.h"
diff --git a/configure b/configure
index 149836f9..6c8b4b5c 100755
--- a/configure
+++ b/configure
@@ -1,6 +1,6 @@
#! /bin/sh
# Guess values for system-dependent variables and create Makefiles.
-# Generated by GNU Autoconf 2.59 for GNU Awk 3.1.4.
+# Generated by GNU Autoconf 2.59 for GNU Awk 3.1.5.
#
# Report bugs to <bug-gawk@gnu.org>.
#
@@ -269,8 +269,8 @@ SHELL=${CONFIG_SHELL-/bin/sh}
# Identity of this package.
PACKAGE_NAME='GNU Awk'
PACKAGE_TARNAME='gawk'
-PACKAGE_VERSION='3.1.4'
-PACKAGE_STRING='GNU Awk 3.1.4'
+PACKAGE_VERSION='3.1.5'
+PACKAGE_STRING='GNU Awk 3.1.5'
PACKAGE_BUGREPORT='bug-gawk@gnu.org'
# Factoring default headers for most tests.
@@ -310,7 +310,7 @@ ac_includes_default="\
# include <unistd.h>
#endif"
-ac_subst_vars='SHELL PATH_SEPARATOR PACKAGE_NAME PACKAGE_TARNAME PACKAGE_VERSION PACKAGE_STRING PACKAGE_BUGREPORT exec_prefix prefix program_transform_name bindir sbindir libexecdir datadir sysconfdir sharedstatedir localstatedir libdir includedir oldincludedir infodir mandir build_alias host_alias target_alias DEFS ECHO_C ECHO_N ECHO_T LIBS INSTALL_PROGRAM INSTALL_SCRIPT INSTALL_DATA CYGPATH_W PACKAGE VERSION ACLOCAL AUTOCONF AUTOMAKE AUTOHEADER MAKEINFO AMTAR install_sh STRIP ac_ct_STRIP INSTALL_STRIP_PROGRAM mkdir_p AWK SET_MAKE am__leading_dot EGREP YACC LN_S CC CFLAGS LDFLAGS CPPFLAGS ac_ct_CC EXEEXT OBJEXT DEPDIR am__include am__quote AMDEP_TRUE AMDEP_FALSE AMDEPBACKSLASH CCDEPMODE am__fastdepCC_TRUE am__fastdepCC_FALSE CPP RANLIB ac_ct_RANLIB U ANSI2KNR MKINSTALLDIRS USE_NLS MSGFMT GMSGFMT XGETTEXT MSGMERGE build build_cpu build_vendor build_os host host_cpu host_vendor host_os ALLOCA GLIBC21 HAVE_POSIX_PRINTF HAVE_ASPRINTF HAVE_SNPRINTF HAVE_WPRINTF LIBICONV LTLIBICONV INTLBISON BUILD_INCLUDED_LIBINTL USE_INCLUDED_LIBINTL CATOBJEXT DATADIRNAME INSTOBJEXT GENCAT INTLOBJS INTL_LIBTOOL_SUFFIX_PREFIX INTLLIBS LIBINTL LTLIBINTL POSUB LIBOBJS SOCKET_LIBS LTLIBOBJS'
+ac_subst_vars='SHELL PATH_SEPARATOR PACKAGE_NAME PACKAGE_TARNAME PACKAGE_VERSION PACKAGE_STRING PACKAGE_BUGREPORT exec_prefix prefix program_transform_name bindir sbindir libexecdir datadir sysconfdir sharedstatedir localstatedir libdir includedir oldincludedir infodir mandir build_alias host_alias target_alias DEFS ECHO_C ECHO_N ECHO_T LIBS INSTALL_PROGRAM INSTALL_SCRIPT INSTALL_DATA CYGPATH_W PACKAGE VERSION ACLOCAL AUTOCONF AUTOMAKE AUTOHEADER MAKEINFO install_sh STRIP ac_ct_STRIP INSTALL_STRIP_PROGRAM mkdir_p AWK SET_MAKE am__leading_dot AMTAR am__tar am__untar EGREP YACC LN_S CC CFLAGS LDFLAGS CPPFLAGS ac_ct_CC EXEEXT OBJEXT DEPDIR am__include am__quote AMDEP_TRUE AMDEP_FALSE AMDEPBACKSLASH CCDEPMODE am__fastdepCC_TRUE am__fastdepCC_FALSE CPP RANLIB ac_ct_RANLIB U ANSI2KNR MKINSTALLDIRS USE_NLS MSGFMT GMSGFMT XGETTEXT MSGMERGE build build_cpu build_vendor build_os host host_cpu host_vendor host_os INTL_MACOSX_LIBS LIBICONV LTLIBICONV INTLLIBS LIBINTL LTLIBINTL POSUB LIBOBJS SOCKET_LIBS LTLIBOBJS'
ac_subst_files=''
# Initialize some variables set by options.
@@ -779,7 +779,7 @@ if test "$ac_init_help" = "long"; then
# Omit some internal or obsolete options to make the list less imposing.
# This message is too long to be a string in the A/UX 3.1 sh.
cat <<_ACEOF
-\`configure' configures GNU Awk 3.1.4 to adapt to many kinds of systems.
+\`configure' configures GNU Awk 3.1.5 to adapt to many kinds of systems.
Usage: $0 [OPTION]... [VAR=VALUE]...
@@ -845,7 +845,7 @@ fi
if test -n "$ac_init_help"; then
case $ac_init_help in
- short | recursive ) echo "Configuration of GNU Awk 3.1.4:";;
+ short | recursive ) echo "Configuration of GNU Awk 3.1.5:";;
esac
cat <<\_ACEOF
@@ -868,7 +868,6 @@ Optional Packages:
--with-gnu-ld assume the C compiler uses GNU ld default=no
--with-libiconv-prefix[=DIR] search for libiconv in DIR/include and DIR/lib
--without-libiconv-prefix don't search for libiconv in includedir and libdir
- --with-included-gettext use the GNU gettext library included here
--with-libintl-prefix[=DIR] search for libintl in DIR/include and DIR/lib
--without-libintl-prefix don't search for libintl in includedir and libdir
@@ -980,7 +979,7 @@ fi
test -n "$ac_init_help" && exit 0
if $ac_init_version; then
cat <<\_ACEOF
-GNU Awk configure 3.1.4
+GNU Awk configure 3.1.5
generated by GNU Autoconf 2.59
Copyright (C) 2003 Free Software Foundation, Inc.
@@ -994,7 +993,7 @@ cat >&5 <<_ACEOF
This file contains any messages produced by compilers while
running configure, to aid debugging if configure makes a mistake.
-It was created by GNU Awk $as_me 3.1.4, which was
+It was created by GNU Awk $as_me 3.1.5, which was
generated by GNU Autoconf 2.59. Invocation command line was
$ $0 $@
@@ -1346,7 +1345,7 @@ then
fi
-am__api_version="1.8"
+am__api_version="1.9"
ac_aux_dir=
for ac_dir in $srcdir $srcdir/.. $srcdir/../..; do
if test -f $ac_dir/install-sh; then
@@ -1523,13 +1522,21 @@ echo "$as_me: WARNING: \`missing' script is too old or missing" >&2;}
fi
if mkdir -p --version . >/dev/null 2>&1 && test ! -d ./--version; then
- # Keeping the `.' argument allows $(mkdir_p) to be used without
- # argument. Indeed, we sometimes output rules like
+ # We used to keeping the `.' as first argument, in order to
+ # allow $(mkdir_p) to be used without argument. As in
# $(mkdir_p) $(somedir)
- # where $(somedir) is conditionally defined.
- # (`test -n '$(somedir)' && $(mkdir_p) $(somedir)' is a more
- # expensive solution, as it forces Make to start a sub-shell.)
- mkdir_p='mkdir -p -- .'
+ # where $(somedir) is conditionally defined. However this is wrong
+ # for two reasons:
+ # 1. if the package is installed by a user who cannot write `.'
+ # make install will fail,
+ # 2. the above comment should most certainly read
+ # $(mkdir_p) $(DESTDIR)$(somedir)
+ # so it does not work when $(somedir) is undefined and
+ # $(DESTDIR) is not.
+ # To support the latter case, we have to write
+ # test -z "$(somedir)" || $(mkdir_p) $(DESTDIR)$(somedir),
+ # so the `.' trick is pointless.
+ mkdir_p='mkdir -p --'
else
# On NextStep and OpenStep, the `mkdir' command does not
# recognize any option. It will interpret all options as
@@ -1645,7 +1652,7 @@ fi
# Define the identity of the package.
PACKAGE='gawk'
- VERSION='3.1.4'
+ VERSION='3.1.5'
cat >>confdefs.h <<_ACEOF
@@ -1673,9 +1680,6 @@ AUTOHEADER=${AUTOHEADER-"${am_missing_run}autoheader"}
MAKEINFO=${MAKEINFO-"${am_missing_run}makeinfo"}
-
-AMTAR=${AMTAR-"${am_missing_run}tar"}
-
install_sh=${install_sh-"$am_aux_dir/install-sh"}
# Installed binaries are usually stripped using `strip' when the user
@@ -1768,6 +1772,13 @@ INSTALL_STRIP_PROGRAM="\${SHELL} \$(install_sh) -c -s"
# We need awk for the "check" target. The system "awk" is bad on
# some platforms.
+# Always define AMTAR for backward compatibility.
+
+AMTAR=${AMTAR-"${am_missing_run}tar"}
+
+am__tar='${AMTAR} chof - "$$tardir"'; am__untar='${AMTAR} xf -'
+
+
@@ -5455,6 +5466,7 @@ case `(uname) 2> /dev/null` in
esac
+
MKINSTALLDIRS=
if test -n "$ac_aux_dir"; then
case "$ac_aux_dir" in
@@ -5531,7 +5543,8 @@ else
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 $ac_dir/$ac_word --statistics /dev/null >/dev/null 2>&1 &&
+ echo "$as_me: trying $ac_dir/$ac_word..." >&5
+ if $ac_dir/$ac_word --statistics /dev/null >&5 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); then
ac_cv_path_MSGFMT="$ac_dir/$ac_word$ac_exec_ext"
break 2
@@ -5641,7 +5654,8 @@ else
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 $ac_dir/$ac_word --omit-header --copyright-holder= --msgid-bugs-address= /dev/null >/dev/null 2>&1 &&
+ echo "$as_me: trying $ac_dir/$ac_word..." >&5
+ if $ac_dir/$ac_word --omit-header --copyright-holder= --msgid-bugs-address= /dev/null >&5 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); then
ac_cv_path_XGETTEXT="$ac_dir/$ac_word$ac_exec_ext"
break 2
@@ -5712,7 +5726,8 @@ else
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 $ac_dir/$ac_word --update -q /dev/null /dev/null >/dev/null 2>&1; then
+ echo "$as_me: trying $ac_dir/$ac_word..." >&5
+ if $ac_dir/$ac_word --update -q /dev/null /dev/null >&5 2>&1; then
ac_cv_path_MSGMERGE="$ac_dir/$ac_word$ac_exec_ext"
break 2
fi
@@ -5761,6 +5776,22 @@ echo "${ECHO_T}found xgettext program is not GNU xgettext; ignore it" >&6
ac_config_commands="$ac_config_commands default-1"
+
+ 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"
+
# Make sure we can run config.sub.
$ac_config_sub sun4 >/dev/null 2>&1 ||
{ { echo "$as_me:$LINENO: error: cannot run $ac_config_sub" >&5
@@ -5815,3469 +5846,6 @@ host_vendor=`echo $ac_cv_host | sed 's/^\([^-]*\)-\([^-]*\)-\(.*\)$/\2/'`
host_os=`echo $ac_cv_host | sed 's/^\([^-]*\)-\([^-]*\)-\(.*\)$/\3/'`
-echo "$as_me:$LINENO: checking for an ANSI C-conforming const" >&5
-echo $ECHO_N "checking for an ANSI C-conforming const... $ECHO_C" >&6
-if test "${ac_cv_c_const+set}" = set; then
- echo $ECHO_N "(cached) $ECHO_C" >&6
-else
- cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h. */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
-/* end confdefs.h. */
-
-int
-main ()
-{
-/* FIXME: Include the comments suggested by Paul. */
-#ifndef __cplusplus
- /* Ultrix mips cc rejects this. */
- typedef int charset[2];
- const charset x;
- /* SunOS 4.1.1 cc rejects this. */
- char const *const *ccp;
- char **p;
- /* NEC SVR4.0.2 mips cc rejects this. */
- struct point {int x, y;};
- static struct point const zero = {0,0};
- /* AIX XL C 1.02.0.0 rejects this.
- It does not let you subtract one const X* pointer from another in
- an arm of an if-expression whose if-part is not a constant
- expression */
- const char *g = "string";
- ccp = &g + (g ? g-g : 0);
- /* HPUX 7.0 cc rejects these. */
- ++ccp;
- p = (char**) ccp;
- ccp = (char const *const *) p;
- { /* SCO 3.2v4 cc rejects this. */
- char *t;
- char const *s = 0 ? (char *) 0 : (char const *) 0;
-
- *t++ = 0;
- }
- { /* Someone thinks the Sun supposedly-ANSI compiler will reject this. */
- int x[] = {25, 17};
- const int *foo = &x[0];
- ++foo;
- }
- { /* Sun SC1.0 ANSI compiler rejects this -- but not the above. */
- typedef const int *iptr;
- iptr p = 0;
- ++p;
- }
- { /* AIX XL C 1.02.0.0 rejects this saying
- "k.c", line 2.27: 1506-025 (S) Operand must be a modifiable lvalue. */
- struct s { int j; const int *ap[3]; };
- struct s *b; b->j = 5;
- }
- { /* ULTRIX-32 V3.1 (Rev 9) vcc rejects this */
- const int foo = 10;
- }
-#endif
-
- ;
- return 0;
-}
-_ACEOF
-rm -f conftest.$ac_objext
-if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
- (eval $ac_compile) 2>conftest.er1
- ac_status=$?
- grep -v '^ *+' conftest.er1 >conftest.err
- rm -f conftest.er1
- cat conftest.err >&5
- echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); } &&
- { ac_try='test -z "$ac_c_werror_flag"
- || test ! -s conftest.err'
- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
- (eval $ac_try) 2>&5
- ac_status=$?
- echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); }; } &&
- { ac_try='test -s conftest.$ac_objext'
- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
- (eval $ac_try) 2>&5
- ac_status=$?
- echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); }; }; then
- ac_cv_c_const=yes
-else
- echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-ac_cv_c_const=no
-fi
-rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
-fi
-echo "$as_me:$LINENO: result: $ac_cv_c_const" >&5
-echo "${ECHO_T}$ac_cv_c_const" >&6
-if test $ac_cv_c_const = no; then
-
-cat >>confdefs.h <<\_ACEOF
-#define const
-_ACEOF
-
-fi
-
-
- echo "$as_me:$LINENO: checking for signed" >&5
-echo $ECHO_N "checking for signed... $ECHO_C" >&6
-if test "${bh_cv_c_signed+set}" = set; then
- echo $ECHO_N "(cached) $ECHO_C" >&6
-else
- cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h. */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
-/* end confdefs.h. */
-
-int
-main ()
-{
-signed char x;
- ;
- return 0;
-}
-_ACEOF
-rm -f conftest.$ac_objext
-if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
- (eval $ac_compile) 2>conftest.er1
- ac_status=$?
- grep -v '^ *+' conftest.er1 >conftest.err
- rm -f conftest.er1
- cat conftest.err >&5
- echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); } &&
- { ac_try='test -z "$ac_c_werror_flag"
- || test ! -s conftest.err'
- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
- (eval $ac_try) 2>&5
- ac_status=$?
- echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); }; } &&
- { ac_try='test -s conftest.$ac_objext'
- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
- (eval $ac_try) 2>&5
- ac_status=$?
- echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); }; }; then
- bh_cv_c_signed=yes
-else
- echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-bh_cv_c_signed=no
-fi
-rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
-fi
-echo "$as_me:$LINENO: result: $bh_cv_c_signed" >&5
-echo "${ECHO_T}$bh_cv_c_signed" >&6
- if test $bh_cv_c_signed = no; then
-
-cat >>confdefs.h <<\_ACEOF
-#define signed
-_ACEOF
-
- fi
-
-echo "$as_me:$LINENO: checking for inline" >&5
-echo $ECHO_N "checking for inline... $ECHO_C" >&6
-if test "${ac_cv_c_inline+set}" = set; then
- echo $ECHO_N "(cached) $ECHO_C" >&6
-else
- ac_cv_c_inline=no
-for ac_kw in inline __inline__ __inline; do
- cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h. */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
-/* end confdefs.h. */
-#ifndef __cplusplus
-typedef int foo_t;
-static $ac_kw foo_t static_foo () {return 0; }
-$ac_kw foo_t foo () {return 0; }
-#endif
-
-_ACEOF
-rm -f conftest.$ac_objext
-if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
- (eval $ac_compile) 2>conftest.er1
- ac_status=$?
- grep -v '^ *+' conftest.er1 >conftest.err
- rm -f conftest.er1
- cat conftest.err >&5
- echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); } &&
- { ac_try='test -z "$ac_c_werror_flag"
- || test ! -s conftest.err'
- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
- (eval $ac_try) 2>&5
- ac_status=$?
- echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); }; } &&
- { ac_try='test -s conftest.$ac_objext'
- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
- (eval $ac_try) 2>&5
- ac_status=$?
- echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); }; }; then
- ac_cv_c_inline=$ac_kw; break
-else
- echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-fi
-rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
-done
-
-fi
-echo "$as_me:$LINENO: result: $ac_cv_c_inline" >&5
-echo "${ECHO_T}$ac_cv_c_inline" >&6
-
-
-case $ac_cv_c_inline in
- inline | yes) ;;
- *)
- case $ac_cv_c_inline in
- no) ac_val=;;
- *) ac_val=$ac_cv_c_inline;;
- esac
- cat >>confdefs.h <<_ACEOF
-#ifndef __cplusplus
-#define inline $ac_val
-#endif
-_ACEOF
- ;;
-esac
-
-echo "$as_me:$LINENO: checking for off_t" >&5
-echo $ECHO_N "checking for off_t... $ECHO_C" >&6
-if test "${ac_cv_type_off_t+set}" = set; then
- echo $ECHO_N "(cached) $ECHO_C" >&6
-else
- cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h. */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
-/* end confdefs.h. */
-$ac_includes_default
-int
-main ()
-{
-if ((off_t *) 0)
- return 0;
-if (sizeof (off_t))
- return 0;
- ;
- return 0;
-}
-_ACEOF
-rm -f conftest.$ac_objext
-if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
- (eval $ac_compile) 2>conftest.er1
- ac_status=$?
- grep -v '^ *+' conftest.er1 >conftest.err
- rm -f conftest.er1
- cat conftest.err >&5
- echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); } &&
- { ac_try='test -z "$ac_c_werror_flag"
- || test ! -s conftest.err'
- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
- (eval $ac_try) 2>&5
- ac_status=$?
- echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); }; } &&
- { ac_try='test -s conftest.$ac_objext'
- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
- (eval $ac_try) 2>&5
- ac_status=$?
- echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); }; }; then
- ac_cv_type_off_t=yes
-else
- echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-ac_cv_type_off_t=no
-fi
-rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
-fi
-echo "$as_me:$LINENO: result: $ac_cv_type_off_t" >&5
-echo "${ECHO_T}$ac_cv_type_off_t" >&6
-if test $ac_cv_type_off_t = yes; then
- :
-else
-
-cat >>confdefs.h <<_ACEOF
-#define off_t long
-_ACEOF
-
-fi
-
-echo "$as_me:$LINENO: checking for size_t" >&5
-echo $ECHO_N "checking for size_t... $ECHO_C" >&6
-if test "${ac_cv_type_size_t+set}" = set; then
- echo $ECHO_N "(cached) $ECHO_C" >&6
-else
- cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h. */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
-/* end confdefs.h. */
-$ac_includes_default
-int
-main ()
-{
-if ((size_t *) 0)
- return 0;
-if (sizeof (size_t))
- return 0;
- ;
- return 0;
-}
-_ACEOF
-rm -f conftest.$ac_objext
-if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
- (eval $ac_compile) 2>conftest.er1
- ac_status=$?
- grep -v '^ *+' conftest.er1 >conftest.err
- rm -f conftest.er1
- cat conftest.err >&5
- echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); } &&
- { ac_try='test -z "$ac_c_werror_flag"
- || test ! -s conftest.err'
- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
- (eval $ac_try) 2>&5
- ac_status=$?
- echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); }; } &&
- { ac_try='test -s conftest.$ac_objext'
- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
- (eval $ac_try) 2>&5
- ac_status=$?
- echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); }; }; then
- ac_cv_type_size_t=yes
-else
- echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-ac_cv_type_size_t=no
-fi
-rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
-fi
-echo "$as_me:$LINENO: result: $ac_cv_type_size_t" >&5
-echo "${ECHO_T}$ac_cv_type_size_t" >&6
-if test $ac_cv_type_size_t = yes; then
- :
-else
-
-cat >>confdefs.h <<_ACEOF
-#define size_t unsigned
-_ACEOF
-
-fi
-
-
- echo "$as_me:$LINENO: checking for long long" >&5
-echo $ECHO_N "checking for long long... $ECHO_C" >&6
-if test "${ac_cv_type_long_long+set}" = set; then
- echo $ECHO_N "(cached) $ECHO_C" >&6
-else
- cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h. */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
-/* end confdefs.h. */
-long long ll = 1LL; int i = 63;
-int
-main ()
-{
-long long llmax = (long long) -1;
- return ll << i | ll >> i | llmax / ll | llmax % ll;
- ;
- return 0;
-}
-_ACEOF
-rm -f conftest.$ac_objext conftest$ac_exeext
-if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
- (eval $ac_link) 2>conftest.er1
- ac_status=$?
- grep -v '^ *+' conftest.er1 >conftest.err
- rm -f conftest.er1
- cat conftest.err >&5
- echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); } &&
- { ac_try='test -z "$ac_c_werror_flag"
- || test ! -s conftest.err'
- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
- (eval $ac_try) 2>&5
- ac_status=$?
- echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); }; } &&
- { ac_try='test -s conftest$ac_exeext'
- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
- (eval $ac_try) 2>&5
- ac_status=$?
- echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); }; }; then
- ac_cv_type_long_long=yes
-else
- echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-ac_cv_type_long_long=no
-fi
-rm -f conftest.err conftest.$ac_objext \
- conftest$ac_exeext conftest.$ac_ext
-fi
-echo "$as_me:$LINENO: result: $ac_cv_type_long_long" >&5
-echo "${ECHO_T}$ac_cv_type_long_long" >&6
- if test $ac_cv_type_long_long = yes; then
-
-cat >>confdefs.h <<\_ACEOF
-#define HAVE_LONG_LONG 1
-_ACEOF
-
- fi
-
-
- echo "$as_me:$LINENO: checking for long double" >&5
-echo $ECHO_N "checking for long double... $ECHO_C" >&6
-if test "${gt_cv_c_long_double+set}" = set; then
- echo $ECHO_N "(cached) $ECHO_C" >&6
-else
- if test "$GCC" = yes; then
- gt_cv_c_long_double=yes
- else
- cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h. */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
-/* end confdefs.h. */
-
- /* 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];
-
-int
-main ()
-{
-
- ;
- return 0;
-}
-_ACEOF
-rm -f conftest.$ac_objext
-if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
- (eval $ac_compile) 2>conftest.er1
- ac_status=$?
- grep -v '^ *+' conftest.er1 >conftest.err
- rm -f conftest.er1
- cat conftest.err >&5
- echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); } &&
- { ac_try='test -z "$ac_c_werror_flag"
- || test ! -s conftest.err'
- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
- (eval $ac_try) 2>&5
- ac_status=$?
- echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); }; } &&
- { ac_try='test -s conftest.$ac_objext'
- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
- (eval $ac_try) 2>&5
- ac_status=$?
- echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); }; }; then
- gt_cv_c_long_double=yes
-else
- echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-gt_cv_c_long_double=no
-fi
-rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
- fi
-fi
-echo "$as_me:$LINENO: result: $gt_cv_c_long_double" >&5
-echo "${ECHO_T}$gt_cv_c_long_double" >&6
- if test $gt_cv_c_long_double = yes; then
-
-cat >>confdefs.h <<\_ACEOF
-#define HAVE_LONG_DOUBLE 1
-_ACEOF
-
- fi
-
-
- echo "$as_me:$LINENO: checking for wchar_t" >&5
-echo $ECHO_N "checking for wchar_t... $ECHO_C" >&6
-if test "${gt_cv_c_wchar_t+set}" = set; then
- echo $ECHO_N "(cached) $ECHO_C" >&6
-else
- cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h. */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
-/* end confdefs.h. */
-#include <stddef.h>
- wchar_t foo = (wchar_t)'\0';
-int
-main ()
-{
-
- ;
- return 0;
-}
-_ACEOF
-rm -f conftest.$ac_objext
-if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
- (eval $ac_compile) 2>conftest.er1
- ac_status=$?
- grep -v '^ *+' conftest.er1 >conftest.err
- rm -f conftest.er1
- cat conftest.err >&5
- echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); } &&
- { ac_try='test -z "$ac_c_werror_flag"
- || test ! -s conftest.err'
- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
- (eval $ac_try) 2>&5
- ac_status=$?
- echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); }; } &&
- { ac_try='test -s conftest.$ac_objext'
- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
- (eval $ac_try) 2>&5
- ac_status=$?
- echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); }; }; then
- gt_cv_c_wchar_t=yes
-else
- echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-gt_cv_c_wchar_t=no
-fi
-rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
-fi
-echo "$as_me:$LINENO: result: $gt_cv_c_wchar_t" >&5
-echo "${ECHO_T}$gt_cv_c_wchar_t" >&6
- if test $gt_cv_c_wchar_t = yes; then
-
-cat >>confdefs.h <<\_ACEOF
-#define HAVE_WCHAR_T 1
-_ACEOF
-
- fi
-
-
- echo "$as_me:$LINENO: checking for wint_t" >&5
-echo $ECHO_N "checking for wint_t... $ECHO_C" >&6
-if test "${gt_cv_c_wint_t+set}" = set; then
- echo $ECHO_N "(cached) $ECHO_C" >&6
-else
- cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h. */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
-/* end confdefs.h. */
-#include <wchar.h>
- wint_t foo = (wchar_t)'\0';
-int
-main ()
-{
-
- ;
- return 0;
-}
-_ACEOF
-rm -f conftest.$ac_objext
-if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
- (eval $ac_compile) 2>conftest.er1
- ac_status=$?
- grep -v '^ *+' conftest.er1 >conftest.err
- rm -f conftest.er1
- cat conftest.err >&5
- echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); } &&
- { ac_try='test -z "$ac_c_werror_flag"
- || test ! -s conftest.err'
- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
- (eval $ac_try) 2>&5
- ac_status=$?
- echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); }; } &&
- { ac_try='test -s conftest.$ac_objext'
- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
- (eval $ac_try) 2>&5
- ac_status=$?
- echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); }; }; then
- gt_cv_c_wint_t=yes
-else
- echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-gt_cv_c_wint_t=no
-fi
-rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
-fi
-echo "$as_me:$LINENO: result: $gt_cv_c_wint_t" >&5
-echo "${ECHO_T}$gt_cv_c_wint_t" >&6
- if test $gt_cv_c_wint_t = yes; then
-
-cat >>confdefs.h <<\_ACEOF
-#define HAVE_WINT_T 1
-_ACEOF
-
- fi
-
-
- echo "$as_me:$LINENO: checking for inttypes.h" >&5
-echo $ECHO_N "checking for inttypes.h... $ECHO_C" >&6
-if test "${jm_ac_cv_header_inttypes_h+set}" = set; then
- echo $ECHO_N "(cached) $ECHO_C" >&6
-else
- cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h. */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
-/* end confdefs.h. */
-#include <sys/types.h>
-#include <inttypes.h>
-int
-main ()
-{
-uintmax_t i = (uintmax_t) -1;
- ;
- return 0;
-}
-_ACEOF
-rm -f conftest.$ac_objext
-if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
- (eval $ac_compile) 2>conftest.er1
- ac_status=$?
- grep -v '^ *+' conftest.er1 >conftest.err
- rm -f conftest.er1
- cat conftest.err >&5
- echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); } &&
- { ac_try='test -z "$ac_c_werror_flag"
- || test ! -s conftest.err'
- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
- (eval $ac_try) 2>&5
- ac_status=$?
- echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); }; } &&
- { ac_try='test -s conftest.$ac_objext'
- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
- (eval $ac_try) 2>&5
- ac_status=$?
- echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); }; }; then
- jm_ac_cv_header_inttypes_h=yes
-else
- echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-jm_ac_cv_header_inttypes_h=no
-fi
-rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
-fi
-echo "$as_me:$LINENO: result: $jm_ac_cv_header_inttypes_h" >&5
-echo "${ECHO_T}$jm_ac_cv_header_inttypes_h" >&6
- if test $jm_ac_cv_header_inttypes_h = yes; then
-
-cat >>confdefs.h <<_ACEOF
-#define HAVE_INTTYPES_H_WITH_UINTMAX 1
-_ACEOF
-
- fi
-
-
- echo "$as_me:$LINENO: checking for stdint.h" >&5
-echo $ECHO_N "checking for stdint.h... $ECHO_C" >&6
-if test "${jm_ac_cv_header_stdint_h+set}" = set; then
- echo $ECHO_N "(cached) $ECHO_C" >&6
-else
- cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h. */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
-/* end confdefs.h. */
-#include <sys/types.h>
-#include <stdint.h>
-int
-main ()
-{
-uintmax_t i = (uintmax_t) -1;
- ;
- return 0;
-}
-_ACEOF
-rm -f conftest.$ac_objext
-if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
- (eval $ac_compile) 2>conftest.er1
- ac_status=$?
- grep -v '^ *+' conftest.er1 >conftest.err
- rm -f conftest.er1
- cat conftest.err >&5
- echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); } &&
- { ac_try='test -z "$ac_c_werror_flag"
- || test ! -s conftest.err'
- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
- (eval $ac_try) 2>&5
- ac_status=$?
- echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); }; } &&
- { ac_try='test -s conftest.$ac_objext'
- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
- (eval $ac_try) 2>&5
- ac_status=$?
- echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); }; }; then
- jm_ac_cv_header_stdint_h=yes
-else
- echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-jm_ac_cv_header_stdint_h=no
-fi
-rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
-fi
-echo "$as_me:$LINENO: result: $jm_ac_cv_header_stdint_h" >&5
-echo "${ECHO_T}$jm_ac_cv_header_stdint_h" >&6
- if test $jm_ac_cv_header_stdint_h = yes; then
-
-cat >>confdefs.h <<_ACEOF
-#define HAVE_STDINT_H_WITH_UINTMAX 1
-_ACEOF
-
- fi
-
-
-
-
- echo "$as_me:$LINENO: checking for intmax_t" >&5
-echo $ECHO_N "checking for intmax_t... $ECHO_C" >&6
-if test "${gt_cv_c_intmax_t+set}" = set; then
- echo $ECHO_N "(cached) $ECHO_C" >&6
-else
- cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h. */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
-/* end confdefs.h. */
-
-#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
-
-int
-main ()
-{
-intmax_t x = -1;
- ;
- return 0;
-}
-_ACEOF
-rm -f conftest.$ac_objext
-if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
- (eval $ac_compile) 2>conftest.er1
- ac_status=$?
- grep -v '^ *+' conftest.er1 >conftest.err
- rm -f conftest.er1
- cat conftest.err >&5
- echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); } &&
- { ac_try='test -z "$ac_c_werror_flag"
- || test ! -s conftest.err'
- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
- (eval $ac_try) 2>&5
- ac_status=$?
- echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); }; } &&
- { ac_try='test -s conftest.$ac_objext'
- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
- (eval $ac_try) 2>&5
- ac_status=$?
- echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); }; }; then
- gt_cv_c_intmax_t=yes
-else
- echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-gt_cv_c_intmax_t=no
-fi
-rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
-fi
-echo "$as_me:$LINENO: result: $gt_cv_c_intmax_t" >&5
-echo "${ECHO_T}$gt_cv_c_intmax_t" >&6
- if test $gt_cv_c_intmax_t = yes; then
-
-cat >>confdefs.h <<\_ACEOF
-#define HAVE_INTMAX_T 1
-_ACEOF
-
- fi
-
-
-
- echo "$as_me:$LINENO: checking whether printf() supports POSIX/XSI format strings" >&5
-echo $ECHO_N "checking whether printf() supports POSIX/XSI format strings... $ECHO_C" >&6
-if test "${gt_cv_func_printf_posix+set}" = set; then
- echo $ECHO_N "(cached) $ECHO_C" >&6
-else
-
- if test "$cross_compiling" = yes; then
-
- cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h. */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
-/* end confdefs.h. */
-
-#if defined __NetBSD__ || defined _MSC_VER || defined __MINGW32__ || defined __CYGWIN__
- notposix
-#endif
-
-_ACEOF
-if (eval "$ac_cpp conftest.$ac_ext") 2>&5 |
- $EGREP "notposix" >/dev/null 2>&1; then
- gt_cv_func_printf_posix="guessing no"
-else
- gt_cv_func_printf_posix="guessing yes"
-fi
-rm -f conftest*
-
-
-else
- cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h. */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
-/* end confdefs.h. */
-
-#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);
-}
-_ACEOF
-rm -f conftest$ac_exeext
-if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
- (eval $ac_link) 2>&5
- ac_status=$?
- echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); } && { ac_try='./conftest$ac_exeext'
- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
- (eval $ac_try) 2>&5
- ac_status=$?
- echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); }; }; then
- gt_cv_func_printf_posix=yes
-else
- echo "$as_me: program exited with status $ac_status" >&5
-echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-( exit $ac_status )
-gt_cv_func_printf_posix=no
-fi
-rm -f core *.core gmon.out bb.out conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext
-fi
-
-fi
-echo "$as_me:$LINENO: result: $gt_cv_func_printf_posix" >&5
-echo "${ECHO_T}$gt_cv_func_printf_posix" >&6
- case $gt_cv_func_printf_posix in
- *yes)
-
-cat >>confdefs.h <<\_ACEOF
-#define HAVE_POSIX_PRINTF 1
-_ACEOF
-
- ;;
- esac
-
-# The Ultrix 4.2 mips builtin alloca declared by alloca.h only works
-# for constant arguments. Useless!
-echo "$as_me:$LINENO: checking for working alloca.h" >&5
-echo $ECHO_N "checking for working alloca.h... $ECHO_C" >&6
-if test "${ac_cv_working_alloca_h+set}" = set; then
- echo $ECHO_N "(cached) $ECHO_C" >&6
-else
- cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h. */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
-/* end confdefs.h. */
-#include <alloca.h>
-int
-main ()
-{
-char *p = (char *) alloca (2 * sizeof (int));
- ;
- return 0;
-}
-_ACEOF
-rm -f conftest.$ac_objext conftest$ac_exeext
-if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
- (eval $ac_link) 2>conftest.er1
- ac_status=$?
- grep -v '^ *+' conftest.er1 >conftest.err
- rm -f conftest.er1
- cat conftest.err >&5
- echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); } &&
- { ac_try='test -z "$ac_c_werror_flag"
- || test ! -s conftest.err'
- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
- (eval $ac_try) 2>&5
- ac_status=$?
- echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); }; } &&
- { ac_try='test -s conftest$ac_exeext'
- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
- (eval $ac_try) 2>&5
- ac_status=$?
- echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); }; }; then
- ac_cv_working_alloca_h=yes
-else
- echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-ac_cv_working_alloca_h=no
-fi
-rm -f conftest.err conftest.$ac_objext \
- conftest$ac_exeext conftest.$ac_ext
-fi
-echo "$as_me:$LINENO: result: $ac_cv_working_alloca_h" >&5
-echo "${ECHO_T}$ac_cv_working_alloca_h" >&6
-if test $ac_cv_working_alloca_h = yes; then
-
-cat >>confdefs.h <<\_ACEOF
-#define HAVE_ALLOCA_H 1
-_ACEOF
-
-fi
-
-echo "$as_me:$LINENO: checking for alloca" >&5
-echo $ECHO_N "checking for alloca... $ECHO_C" >&6
-if test "${ac_cv_func_alloca_works+set}" = set; then
- echo $ECHO_N "(cached) $ECHO_C" >&6
-else
- cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h. */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
-/* end confdefs.h. */
-#ifdef __GNUC__
-# define alloca __builtin_alloca
-#else
-# ifdef _MSC_VER
-# include <malloc.h>
-# define alloca _alloca
-# else
-# if HAVE_ALLOCA_H
-# include <alloca.h>
-# else
-# ifdef _AIX
- #pragma alloca
-# else
-# ifndef alloca /* predefined by HP cc +Olibcalls */
-char *alloca ();
-# endif
-# endif
-# endif
-# endif
-#endif
-
-int
-main ()
-{
-char *p = (char *) alloca (1);
- ;
- return 0;
-}
-_ACEOF
-rm -f conftest.$ac_objext conftest$ac_exeext
-if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
- (eval $ac_link) 2>conftest.er1
- ac_status=$?
- grep -v '^ *+' conftest.er1 >conftest.err
- rm -f conftest.er1
- cat conftest.err >&5
- echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); } &&
- { ac_try='test -z "$ac_c_werror_flag"
- || test ! -s conftest.err'
- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
- (eval $ac_try) 2>&5
- ac_status=$?
- echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); }; } &&
- { ac_try='test -s conftest$ac_exeext'
- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
- (eval $ac_try) 2>&5
- ac_status=$?
- echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); }; }; then
- ac_cv_func_alloca_works=yes
-else
- echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-ac_cv_func_alloca_works=no
-fi
-rm -f conftest.err conftest.$ac_objext \
- conftest$ac_exeext conftest.$ac_ext
-fi
-echo "$as_me:$LINENO: result: $ac_cv_func_alloca_works" >&5
-echo "${ECHO_T}$ac_cv_func_alloca_works" >&6
-
-if test $ac_cv_func_alloca_works = yes; then
-
-cat >>confdefs.h <<\_ACEOF
-#define HAVE_ALLOCA 1
-_ACEOF
-
-else
- # The SVR3 libPW and SVR4 libucb both contain incompatible functions
-# that cause trouble. Some versions do not even contain alloca or
-# contain a buggy version. If you still want to use their alloca,
-# use ar to extract alloca.o from them instead of compiling alloca.c.
-
-ALLOCA=alloca.$ac_objext
-
-cat >>confdefs.h <<\_ACEOF
-#define C_ALLOCA 1
-_ACEOF
-
-
-echo "$as_me:$LINENO: checking whether \`alloca.c' needs Cray hooks" >&5
-echo $ECHO_N "checking whether \`alloca.c' needs Cray hooks... $ECHO_C" >&6
-if test "${ac_cv_os_cray+set}" = set; then
- echo $ECHO_N "(cached) $ECHO_C" >&6
-else
- cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h. */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
-/* end confdefs.h. */
-#if defined(CRAY) && ! defined(CRAY2)
-webecray
-#else
-wenotbecray
-#endif
-
-_ACEOF
-if (eval "$ac_cpp conftest.$ac_ext") 2>&5 |
- $EGREP "webecray" >/dev/null 2>&1; then
- ac_cv_os_cray=yes
-else
- ac_cv_os_cray=no
-fi
-rm -f conftest*
-
-fi
-echo "$as_me:$LINENO: result: $ac_cv_os_cray" >&5
-echo "${ECHO_T}$ac_cv_os_cray" >&6
-if test $ac_cv_os_cray = yes; then
- for ac_func in _getb67 GETB67 getb67; do
- as_ac_var=`echo "ac_cv_func_$ac_func" | $as_tr_sh`
-echo "$as_me:$LINENO: checking for $ac_func" >&5
-echo $ECHO_N "checking for $ac_func... $ECHO_C" >&6
-if eval "test \"\${$as_ac_var+set}\" = set"; then
- echo $ECHO_N "(cached) $ECHO_C" >&6
-else
- cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h. */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
-/* end confdefs.h. */
-/* Define $ac_func to an innocuous variant, in case <limits.h> declares $ac_func.
- For example, HP-UX 11i <limits.h> declares gettimeofday. */
-#define $ac_func innocuous_$ac_func
-
-/* System header to define __stub macros and hopefully few prototypes,
- which can conflict with char $ac_func (); below.
- Prefer <limits.h> to <assert.h> if __STDC__ is defined, since
- <limits.h> exists even on freestanding compilers. */
-
-#ifdef __STDC__
-# include <limits.h>
-#else
-# include <assert.h>
-#endif
-
-#undef $ac_func
-
-/* Override any gcc2 internal prototype to avoid an error. */
-#ifdef __cplusplus
-extern "C"
-{
-#endif
-/* We use char because int might match the return type of a gcc2
- builtin and then its argument prototype would still apply. */
-char $ac_func ();
-/* The GNU C library defines this for functions which it implements
- to always fail with ENOSYS. Some functions are actually named
- something starting with __ and the normal name is an alias. */
-#if defined (__stub_$ac_func) || defined (__stub___$ac_func)
-choke me
-#else
-char (*f) () = $ac_func;
-#endif
-#ifdef __cplusplus
-}
-#endif
-
-int
-main ()
-{
-return f != $ac_func;
- ;
- return 0;
-}
-_ACEOF
-rm -f conftest.$ac_objext conftest$ac_exeext
-if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
- (eval $ac_link) 2>conftest.er1
- ac_status=$?
- grep -v '^ *+' conftest.er1 >conftest.err
- rm -f conftest.er1
- cat conftest.err >&5
- echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); } &&
- { ac_try='test -z "$ac_c_werror_flag"
- || test ! -s conftest.err'
- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
- (eval $ac_try) 2>&5
- ac_status=$?
- echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); }; } &&
- { ac_try='test -s conftest$ac_exeext'
- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
- (eval $ac_try) 2>&5
- ac_status=$?
- echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); }; }; then
- eval "$as_ac_var=yes"
-else
- echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-eval "$as_ac_var=no"
-fi
-rm -f conftest.err conftest.$ac_objext \
- conftest$ac_exeext conftest.$ac_ext
-fi
-echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_var'}'`" >&5
-echo "${ECHO_T}`eval echo '${'$as_ac_var'}'`" >&6
-if test `eval echo '${'$as_ac_var'}'` = yes; then
-
-cat >>confdefs.h <<_ACEOF
-#define CRAY_STACKSEG_END $ac_func
-_ACEOF
-
- break
-fi
-
- done
-fi
-
-echo "$as_me:$LINENO: checking stack direction for C alloca" >&5
-echo $ECHO_N "checking stack direction for C alloca... $ECHO_C" >&6
-if test "${ac_cv_c_stack_direction+set}" = set; then
- echo $ECHO_N "(cached) $ECHO_C" >&6
-else
- if test "$cross_compiling" = yes; then
- ac_cv_c_stack_direction=0
-else
- cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h. */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
-/* end confdefs.h. */
-int
-find_stack_direction ()
-{
- static char *addr = 0;
- auto char dummy;
- if (addr == 0)
- {
- addr = &dummy;
- return find_stack_direction ();
- }
- else
- return (&dummy > addr) ? 1 : -1;
-}
-
-int
-main ()
-{
- exit (find_stack_direction () < 0);
-}
-_ACEOF
-rm -f conftest$ac_exeext
-if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
- (eval $ac_link) 2>&5
- ac_status=$?
- echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); } && { ac_try='./conftest$ac_exeext'
- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
- (eval $ac_try) 2>&5
- ac_status=$?
- echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); }; }; then
- ac_cv_c_stack_direction=1
-else
- echo "$as_me: program exited with status $ac_status" >&5
-echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-( exit $ac_status )
-ac_cv_c_stack_direction=-1
-fi
-rm -f core *.core gmon.out bb.out conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext
-fi
-fi
-echo "$as_me:$LINENO: result: $ac_cv_c_stack_direction" >&5
-echo "${ECHO_T}$ac_cv_c_stack_direction" >&6
-
-cat >>confdefs.h <<_ACEOF
-#define STACK_DIRECTION $ac_cv_c_stack_direction
-_ACEOF
-
-
-fi
-
-
-
-for ac_header in stdlib.h unistd.h
-do
-as_ac_Header=`echo "ac_cv_header_$ac_header" | $as_tr_sh`
-if eval "test \"\${$as_ac_Header+set}\" = set"; then
- echo "$as_me:$LINENO: checking for $ac_header" >&5
-echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6
-if eval "test \"\${$as_ac_Header+set}\" = set"; then
- echo $ECHO_N "(cached) $ECHO_C" >&6
-fi
-echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_Header'}'`" >&5
-echo "${ECHO_T}`eval echo '${'$as_ac_Header'}'`" >&6
-else
- # Is the header compilable?
-echo "$as_me:$LINENO: checking $ac_header usability" >&5
-echo $ECHO_N "checking $ac_header usability... $ECHO_C" >&6
-cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h. */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
-/* end confdefs.h. */
-$ac_includes_default
-#include <$ac_header>
-_ACEOF
-rm -f conftest.$ac_objext
-if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
- (eval $ac_compile) 2>conftest.er1
- ac_status=$?
- grep -v '^ *+' conftest.er1 >conftest.err
- rm -f conftest.er1
- cat conftest.err >&5
- echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); } &&
- { ac_try='test -z "$ac_c_werror_flag"
- || test ! -s conftest.err'
- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
- (eval $ac_try) 2>&5
- ac_status=$?
- echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); }; } &&
- { ac_try='test -s conftest.$ac_objext'
- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
- (eval $ac_try) 2>&5
- ac_status=$?
- echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); }; }; then
- ac_header_compiler=yes
-else
- echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-ac_header_compiler=no
-fi
-rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
-echo "$as_me:$LINENO: result: $ac_header_compiler" >&5
-echo "${ECHO_T}$ac_header_compiler" >&6
-
-# Is the header present?
-echo "$as_me:$LINENO: checking $ac_header presence" >&5
-echo $ECHO_N "checking $ac_header presence... $ECHO_C" >&6
-cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h. */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
-/* end confdefs.h. */
-#include <$ac_header>
-_ACEOF
-if { (eval echo "$as_me:$LINENO: \"$ac_cpp conftest.$ac_ext\"") >&5
- (eval $ac_cpp conftest.$ac_ext) 2>conftest.er1
- ac_status=$?
- grep -v '^ *+' conftest.er1 >conftest.err
- rm -f conftest.er1
- cat conftest.err >&5
- echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); } >/dev/null; then
- if test -s conftest.err; then
- ac_cpp_err=$ac_c_preproc_warn_flag
- ac_cpp_err=$ac_cpp_err$ac_c_werror_flag
- else
- ac_cpp_err=
- fi
-else
- ac_cpp_err=yes
-fi
-if test -z "$ac_cpp_err"; then
- ac_header_preproc=yes
-else
- echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
- ac_header_preproc=no
-fi
-rm -f conftest.err conftest.$ac_ext
-echo "$as_me:$LINENO: result: $ac_header_preproc" >&5
-echo "${ECHO_T}$ac_header_preproc" >&6
-
-# So? What about this header?
-case $ac_header_compiler:$ac_header_preproc:$ac_c_preproc_warn_flag in
- yes:no: )
- { echo "$as_me:$LINENO: WARNING: $ac_header: accepted by the compiler, rejected by the preprocessor!" >&5
-echo "$as_me: WARNING: $ac_header: accepted by the compiler, rejected by the preprocessor!" >&2;}
- { echo "$as_me:$LINENO: WARNING: $ac_header: proceeding with the compiler's result" >&5
-echo "$as_me: WARNING: $ac_header: proceeding with the compiler's result" >&2;}
- ac_header_preproc=yes
- ;;
- no:yes:* )
- { echo "$as_me:$LINENO: WARNING: $ac_header: present but cannot be compiled" >&5
-echo "$as_me: WARNING: $ac_header: present but cannot be compiled" >&2;}
- { echo "$as_me:$LINENO: WARNING: $ac_header: check for missing prerequisite headers?" >&5
-echo "$as_me: WARNING: $ac_header: check for missing prerequisite headers?" >&2;}
- { echo "$as_me:$LINENO: WARNING: $ac_header: see the Autoconf documentation" >&5
-echo "$as_me: WARNING: $ac_header: see the Autoconf documentation" >&2;}
- { echo "$as_me:$LINENO: WARNING: $ac_header: section \"Present But Cannot Be Compiled\"" >&5
-echo "$as_me: WARNING: $ac_header: section \"Present But Cannot Be Compiled\"" >&2;}
- { echo "$as_me:$LINENO: WARNING: $ac_header: proceeding with the preprocessor's result" >&5
-echo "$as_me: WARNING: $ac_header: proceeding with the preprocessor's result" >&2;}
- { echo "$as_me:$LINENO: WARNING: $ac_header: in the future, the compiler will take precedence" >&5
-echo "$as_me: WARNING: $ac_header: in the future, the compiler will take precedence" >&2;}
- (
- cat <<\_ASBOX
-## ------------------------------- ##
-## Report this to bug-gawk@gnu.org ##
-## ------------------------------- ##
-_ASBOX
- ) |
- sed "s/^/$as_me: WARNING: /" >&2
- ;;
-esac
-echo "$as_me:$LINENO: checking for $ac_header" >&5
-echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6
-if eval "test \"\${$as_ac_Header+set}\" = set"; then
- echo $ECHO_N "(cached) $ECHO_C" >&6
-else
- eval "$as_ac_Header=\$ac_header_preproc"
-fi
-echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_Header'}'`" >&5
-echo "${ECHO_T}`eval echo '${'$as_ac_Header'}'`" >&6
-
-fi
-if test `eval echo '${'$as_ac_Header'}'` = yes; then
- cat >>confdefs.h <<_ACEOF
-#define `echo "HAVE_$ac_header" | $as_tr_cpp` 1
-_ACEOF
-
-fi
-
-done
-
-
-for ac_func in getpagesize
-do
-as_ac_var=`echo "ac_cv_func_$ac_func" | $as_tr_sh`
-echo "$as_me:$LINENO: checking for $ac_func" >&5
-echo $ECHO_N "checking for $ac_func... $ECHO_C" >&6
-if eval "test \"\${$as_ac_var+set}\" = set"; then
- echo $ECHO_N "(cached) $ECHO_C" >&6
-else
- cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h. */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
-/* end confdefs.h. */
-/* Define $ac_func to an innocuous variant, in case <limits.h> declares $ac_func.
- For example, HP-UX 11i <limits.h> declares gettimeofday. */
-#define $ac_func innocuous_$ac_func
-
-/* System header to define __stub macros and hopefully few prototypes,
- which can conflict with char $ac_func (); below.
- Prefer <limits.h> to <assert.h> if __STDC__ is defined, since
- <limits.h> exists even on freestanding compilers. */
-
-#ifdef __STDC__
-# include <limits.h>
-#else
-# include <assert.h>
-#endif
-
-#undef $ac_func
-
-/* Override any gcc2 internal prototype to avoid an error. */
-#ifdef __cplusplus
-extern "C"
-{
-#endif
-/* We use char because int might match the return type of a gcc2
- builtin and then its argument prototype would still apply. */
-char $ac_func ();
-/* The GNU C library defines this for functions which it implements
- to always fail with ENOSYS. Some functions are actually named
- something starting with __ and the normal name is an alias. */
-#if defined (__stub_$ac_func) || defined (__stub___$ac_func)
-choke me
-#else
-char (*f) () = $ac_func;
-#endif
-#ifdef __cplusplus
-}
-#endif
-
-int
-main ()
-{
-return f != $ac_func;
- ;
- return 0;
-}
-_ACEOF
-rm -f conftest.$ac_objext conftest$ac_exeext
-if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
- (eval $ac_link) 2>conftest.er1
- ac_status=$?
- grep -v '^ *+' conftest.er1 >conftest.err
- rm -f conftest.er1
- cat conftest.err >&5
- echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); } &&
- { ac_try='test -z "$ac_c_werror_flag"
- || test ! -s conftest.err'
- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
- (eval $ac_try) 2>&5
- ac_status=$?
- echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); }; } &&
- { ac_try='test -s conftest$ac_exeext'
- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
- (eval $ac_try) 2>&5
- ac_status=$?
- echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); }; }; then
- eval "$as_ac_var=yes"
-else
- echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-eval "$as_ac_var=no"
-fi
-rm -f conftest.err conftest.$ac_objext \
- conftest$ac_exeext conftest.$ac_ext
-fi
-echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_var'}'`" >&5
-echo "${ECHO_T}`eval echo '${'$as_ac_var'}'`" >&6
-if test `eval echo '${'$as_ac_var'}'` = yes; then
- cat >>confdefs.h <<_ACEOF
-#define `echo "HAVE_$ac_func" | $as_tr_cpp` 1
-_ACEOF
-
-fi
-done
-
-echo "$as_me:$LINENO: checking for working mmap" >&5
-echo $ECHO_N "checking for working mmap... $ECHO_C" >&6
-if test "${ac_cv_func_mmap_fixed_mapped+set}" = set; then
- echo $ECHO_N "(cached) $ECHO_C" >&6
-else
- if test "$cross_compiling" = yes; then
- ac_cv_func_mmap_fixed_mapped=no
-else
- cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h. */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
-/* end confdefs.h. */
-$ac_includes_default
-/* malloc might have been renamed as rpl_malloc. */
-#undef malloc
-
-/* Thanks to Mike Haertel and Jim Avera for this test.
- Here is a matrix of mmap possibilities:
- mmap private not fixed
- mmap private fixed at somewhere currently unmapped
- mmap private fixed at somewhere already mapped
- mmap shared not fixed
- mmap shared fixed at somewhere currently unmapped
- mmap shared fixed at somewhere already mapped
- For private mappings, we should verify that changes cannot be read()
- back from the file, nor mmap's back from the file at a different
- address. (There have been systems where private was not correctly
- implemented like the infamous i386 svr4.0, and systems where the
- VM page cache was not coherent with the file system buffer cache
- like early versions of FreeBSD and possibly contemporary NetBSD.)
- For shared mappings, we should conversely verify that changes get
- propagated back to all the places they're supposed to be.
-
- Grep wants private fixed already mapped.
- The main things grep needs to know about mmap are:
- * does it exist and is it safe to write into the mmap'd area
- * how to use it (BSD variants) */
-
-#include <fcntl.h>
-#include <sys/mman.h>
-
-#if !STDC_HEADERS && !HAVE_STDLIB_H
-char *malloc ();
-#endif
-
-/* This mess was copied from the GNU getpagesize.h. */
-#if !HAVE_GETPAGESIZE
-/* Assume that all systems that can run configure have sys/param.h. */
-# if !HAVE_SYS_PARAM_H
-# define HAVE_SYS_PARAM_H 1
-# endif
-
-# ifdef _SC_PAGESIZE
-# define getpagesize() sysconf(_SC_PAGESIZE)
-# else /* no _SC_PAGESIZE */
-# if HAVE_SYS_PARAM_H
-# include <sys/param.h>
-# ifdef EXEC_PAGESIZE
-# define getpagesize() EXEC_PAGESIZE
-# else /* no EXEC_PAGESIZE */
-# ifdef NBPG
-# define getpagesize() NBPG * CLSIZE
-# ifndef CLSIZE
-# define CLSIZE 1
-# endif /* no CLSIZE */
-# else /* no NBPG */
-# ifdef NBPC
-# define getpagesize() NBPC
-# else /* no NBPC */
-# ifdef PAGESIZE
-# define getpagesize() PAGESIZE
-# endif /* PAGESIZE */
-# endif /* no NBPC */
-# endif /* no NBPG */
-# endif /* no EXEC_PAGESIZE */
-# else /* no HAVE_SYS_PARAM_H */
-# define getpagesize() 8192 /* punt totally */
-# endif /* no HAVE_SYS_PARAM_H */
-# endif /* no _SC_PAGESIZE */
-
-#endif /* no HAVE_GETPAGESIZE */
-
-int
-main ()
-{
- char *data, *data2, *data3;
- int i, pagesize;
- int fd;
-
- pagesize = getpagesize ();
-
- /* First, make a file with some known garbage in it. */
- data = (char *) malloc (pagesize);
- if (!data)
- exit (1);
- for (i = 0; i < pagesize; ++i)
- *(data + i) = rand ();
- umask (0);
- fd = creat ("conftest.mmap", 0600);
- if (fd < 0)
- exit (1);
- if (write (fd, data, pagesize) != pagesize)
- exit (1);
- close (fd);
-
- /* Next, try to mmap the file at a fixed address which already has
- something else allocated at it. If we can, also make sure that
- we see the same garbage. */
- fd = open ("conftest.mmap", O_RDWR);
- if (fd < 0)
- exit (1);
- data2 = (char *) malloc (2 * pagesize);
- if (!data2)
- exit (1);
- data2 += (pagesize - ((long) data2 & (pagesize - 1))) & (pagesize - 1);
- if (data2 != mmap (data2, pagesize, PROT_READ | PROT_WRITE,
- MAP_PRIVATE | MAP_FIXED, fd, 0L))
- exit (1);
- for (i = 0; i < pagesize; ++i)
- if (*(data + i) != *(data2 + i))
- exit (1);
-
- /* Finally, make sure that changes to the mapped area do not
- percolate back to the file as seen by read(). (This is a bug on
- some variants of i386 svr4.0.) */
- for (i = 0; i < pagesize; ++i)
- *(data2 + i) = *(data2 + i) + 1;
- data3 = (char *) malloc (pagesize);
- if (!data3)
- exit (1);
- if (read (fd, data3, pagesize) != pagesize)
- exit (1);
- for (i = 0; i < pagesize; ++i)
- if (*(data + i) != *(data3 + i))
- exit (1);
- close (fd);
- exit (0);
-}
-_ACEOF
-rm -f conftest$ac_exeext
-if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
- (eval $ac_link) 2>&5
- ac_status=$?
- echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); } && { ac_try='./conftest$ac_exeext'
- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
- (eval $ac_try) 2>&5
- ac_status=$?
- echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); }; }; then
- ac_cv_func_mmap_fixed_mapped=yes
-else
- echo "$as_me: program exited with status $ac_status" >&5
-echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-( exit $ac_status )
-ac_cv_func_mmap_fixed_mapped=no
-fi
-rm -f core *.core gmon.out bb.out conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext
-fi
-fi
-echo "$as_me:$LINENO: result: $ac_cv_func_mmap_fixed_mapped" >&5
-echo "${ECHO_T}$ac_cv_func_mmap_fixed_mapped" >&6
-if test $ac_cv_func_mmap_fixed_mapped = yes; then
-
-cat >>confdefs.h <<\_ACEOF
-#define HAVE_MMAP 1
-_ACEOF
-
-fi
-rm -f conftest.mmap
-
-
- echo "$as_me:$LINENO: checking whether we are using the GNU C Library 2.1 or newer" >&5
-echo $ECHO_N "checking whether we are using the GNU C Library 2.1 or newer... $ECHO_C" >&6
-if test "${ac_cv_gnu_library_2_1+set}" = set; then
- echo $ECHO_N "(cached) $ECHO_C" >&6
-else
- cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h. */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
-/* end confdefs.h. */
-
-#include <features.h>
-#ifdef __GNU_LIBRARY__
- #if (__GLIBC__ == 2 && __GLIBC_MINOR__ >= 1) || (__GLIBC__ > 2)
- Lucky GNU user
- #endif
-#endif
-
-_ACEOF
-if (eval "$ac_cpp conftest.$ac_ext") 2>&5 |
- $EGREP "Lucky GNU user" >/dev/null 2>&1; then
- ac_cv_gnu_library_2_1=yes
-else
- ac_cv_gnu_library_2_1=no
-fi
-rm -f conftest*
-
-
-
-fi
-echo "$as_me:$LINENO: result: $ac_cv_gnu_library_2_1" >&5
-echo "${ECHO_T}$ac_cv_gnu_library_2_1" >&6
-
- GLIBC21="$ac_cv_gnu_library_2_1"
-
-
-
-
- echo "$as_me:$LINENO: checking whether integer division by zero raises SIGFPE" >&5
-echo $ECHO_N "checking whether integer division by zero raises SIGFPE... $ECHO_C" >&6
-if test "${gt_cv_int_divbyzero_sigfpe+set}" = set; then
- echo $ECHO_N "(cached) $ECHO_C" >&6
-else
-
- if test "$cross_compiling" = yes; then
-
- # Guess based on the CPU.
- case "$host_cpu" in
- alpha* | i3456786 | m68k | s390*)
- gt_cv_int_divbyzero_sigfpe="guessing yes";;
- *)
- gt_cv_int_divbyzero_sigfpe="guessing no";;
- esac
-
-else
- cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h. */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
-/* end confdefs.h. */
-
-#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);
-}
-
-_ACEOF
-rm -f conftest$ac_exeext
-if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
- (eval $ac_link) 2>&5
- ac_status=$?
- echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); } && { ac_try='./conftest$ac_exeext'
- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
- (eval $ac_try) 2>&5
- ac_status=$?
- echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); }; }; then
- gt_cv_int_divbyzero_sigfpe=yes
-else
- echo "$as_me: program exited with status $ac_status" >&5
-echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-( exit $ac_status )
-gt_cv_int_divbyzero_sigfpe=no
-fi
-rm -f core *.core gmon.out bb.out conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext
-fi
-
-fi
-echo "$as_me:$LINENO: result: $gt_cv_int_divbyzero_sigfpe" >&5
-echo "${ECHO_T}$gt_cv_int_divbyzero_sigfpe" >&6
- case "$gt_cv_int_divbyzero_sigfpe" in
- *yes) value=1;;
- *) value=0;;
- esac
-
-cat >>confdefs.h <<_ACEOF
-#define INTDIV0_RAISES_SIGFPE $value
-_ACEOF
-
-
-
- echo "$as_me:$LINENO: checking for unsigned long long" >&5
-echo $ECHO_N "checking for unsigned long long... $ECHO_C" >&6
-if test "${ac_cv_type_unsigned_long_long+set}" = set; then
- echo $ECHO_N "(cached) $ECHO_C" >&6
-else
- cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h. */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
-/* end confdefs.h. */
-unsigned long long ull = 1ULL; int i = 63;
-int
-main ()
-{
-unsigned long long ullmax = (unsigned long long) -1;
- return ull << i | ull >> i | ullmax / ull | ullmax % ull;
- ;
- return 0;
-}
-_ACEOF
-rm -f conftest.$ac_objext conftest$ac_exeext
-if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
- (eval $ac_link) 2>conftest.er1
- ac_status=$?
- grep -v '^ *+' conftest.er1 >conftest.err
- rm -f conftest.er1
- cat conftest.err >&5
- echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); } &&
- { ac_try='test -z "$ac_c_werror_flag"
- || test ! -s conftest.err'
- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
- (eval $ac_try) 2>&5
- ac_status=$?
- echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); }; } &&
- { ac_try='test -s conftest$ac_exeext'
- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
- (eval $ac_try) 2>&5
- ac_status=$?
- echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); }; }; then
- ac_cv_type_unsigned_long_long=yes
-else
- echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-ac_cv_type_unsigned_long_long=no
-fi
-rm -f conftest.err conftest.$ac_objext \
- conftest$ac_exeext conftest.$ac_ext
-fi
-echo "$as_me:$LINENO: result: $ac_cv_type_unsigned_long_long" >&5
-echo "${ECHO_T}$ac_cv_type_unsigned_long_long" >&6
- if test $ac_cv_type_unsigned_long_long = yes; then
-
-cat >>confdefs.h <<\_ACEOF
-#define HAVE_UNSIGNED_LONG_LONG 1
-_ACEOF
-
- fi
-
-
-
-
- if test $jm_ac_cv_header_inttypes_h = no && test $jm_ac_cv_header_stdint_h = no; then
-
- test $ac_cv_type_unsigned_long_long = yes \
- && ac_type='unsigned long long' \
- || ac_type='unsigned long'
-
-cat >>confdefs.h <<_ACEOF
-#define uintmax_t $ac_type
-_ACEOF
-
- else
-
-cat >>confdefs.h <<\_ACEOF
-#define HAVE_UINTMAX_T 1
-_ACEOF
-
- fi
-
-
- echo "$as_me:$LINENO: checking for inttypes.h" >&5
-echo $ECHO_N "checking for inttypes.h... $ECHO_C" >&6
-if test "${gt_cv_header_inttypes_h+set}" = set; then
- echo $ECHO_N "(cached) $ECHO_C" >&6
-else
-
- cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h. */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
-/* end confdefs.h. */
-#include <sys/types.h>
-#include <inttypes.h>
-int
-main ()
-{
-
- ;
- return 0;
-}
-_ACEOF
-rm -f conftest.$ac_objext
-if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
- (eval $ac_compile) 2>conftest.er1
- ac_status=$?
- grep -v '^ *+' conftest.er1 >conftest.err
- rm -f conftest.er1
- cat conftest.err >&5
- echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); } &&
- { ac_try='test -z "$ac_c_werror_flag"
- || test ! -s conftest.err'
- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
- (eval $ac_try) 2>&5
- ac_status=$?
- echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); }; } &&
- { ac_try='test -s conftest.$ac_objext'
- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
- (eval $ac_try) 2>&5
- ac_status=$?
- echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); }; }; then
- gt_cv_header_inttypes_h=yes
-else
- echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-gt_cv_header_inttypes_h=no
-fi
-rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
-
-fi
-echo "$as_me:$LINENO: result: $gt_cv_header_inttypes_h" >&5
-echo "${ECHO_T}$gt_cv_header_inttypes_h" >&6
- if test $gt_cv_header_inttypes_h = yes; then
-
-cat >>confdefs.h <<_ACEOF
-#define HAVE_INTTYPES_H 1
-_ACEOF
-
- fi
-
-
-
- if test $gt_cv_header_inttypes_h = yes; then
- echo "$as_me:$LINENO: checking whether the inttypes.h PRIxNN macros are broken" >&5
-echo $ECHO_N "checking whether the inttypes.h PRIxNN macros are broken... $ECHO_C" >&6
-if test "${gt_cv_inttypes_pri_broken+set}" = set; then
- echo $ECHO_N "(cached) $ECHO_C" >&6
-else
-
- cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h. */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
-/* end confdefs.h. */
-#include <inttypes.h>
-#ifdef PRId32
-char *p = PRId32;
-#endif
-
-int
-main ()
-{
-
- ;
- return 0;
-}
-_ACEOF
-rm -f conftest.$ac_objext
-if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
- (eval $ac_compile) 2>conftest.er1
- ac_status=$?
- grep -v '^ *+' conftest.er1 >conftest.err
- rm -f conftest.er1
- cat conftest.err >&5
- echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); } &&
- { ac_try='test -z "$ac_c_werror_flag"
- || test ! -s conftest.err'
- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
- (eval $ac_try) 2>&5
- ac_status=$?
- echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); }; } &&
- { ac_try='test -s conftest.$ac_objext'
- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
- (eval $ac_try) 2>&5
- ac_status=$?
- echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); }; }; then
- gt_cv_inttypes_pri_broken=no
-else
- echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-gt_cv_inttypes_pri_broken=yes
-fi
-rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
-
-fi
-echo "$as_me:$LINENO: result: $gt_cv_inttypes_pri_broken" >&5
-echo "${ECHO_T}$gt_cv_inttypes_pri_broken" >&6
- fi
- if test "$gt_cv_inttypes_pri_broken" = yes; then
-
-cat >>confdefs.h <<_ACEOF
-#define PRI_MACROS_BROKEN 1
-_ACEOF
-
- fi
-
-
-
-for ac_header in stdint.h
-do
-as_ac_Header=`echo "ac_cv_header_$ac_header" | $as_tr_sh`
-if eval "test \"\${$as_ac_Header+set}\" = set"; then
- echo "$as_me:$LINENO: checking for $ac_header" >&5
-echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6
-if eval "test \"\${$as_ac_Header+set}\" = set"; then
- echo $ECHO_N "(cached) $ECHO_C" >&6
-fi
-echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_Header'}'`" >&5
-echo "${ECHO_T}`eval echo '${'$as_ac_Header'}'`" >&6
-else
- # Is the header compilable?
-echo "$as_me:$LINENO: checking $ac_header usability" >&5
-echo $ECHO_N "checking $ac_header usability... $ECHO_C" >&6
-cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h. */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
-/* end confdefs.h. */
-$ac_includes_default
-#include <$ac_header>
-_ACEOF
-rm -f conftest.$ac_objext
-if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
- (eval $ac_compile) 2>conftest.er1
- ac_status=$?
- grep -v '^ *+' conftest.er1 >conftest.err
- rm -f conftest.er1
- cat conftest.err >&5
- echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); } &&
- { ac_try='test -z "$ac_c_werror_flag"
- || test ! -s conftest.err'
- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
- (eval $ac_try) 2>&5
- ac_status=$?
- echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); }; } &&
- { ac_try='test -s conftest.$ac_objext'
- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
- (eval $ac_try) 2>&5
- ac_status=$?
- echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); }; }; then
- ac_header_compiler=yes
-else
- echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-ac_header_compiler=no
-fi
-rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
-echo "$as_me:$LINENO: result: $ac_header_compiler" >&5
-echo "${ECHO_T}$ac_header_compiler" >&6
-
-# Is the header present?
-echo "$as_me:$LINENO: checking $ac_header presence" >&5
-echo $ECHO_N "checking $ac_header presence... $ECHO_C" >&6
-cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h. */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
-/* end confdefs.h. */
-#include <$ac_header>
-_ACEOF
-if { (eval echo "$as_me:$LINENO: \"$ac_cpp conftest.$ac_ext\"") >&5
- (eval $ac_cpp conftest.$ac_ext) 2>conftest.er1
- ac_status=$?
- grep -v '^ *+' conftest.er1 >conftest.err
- rm -f conftest.er1
- cat conftest.err >&5
- echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); } >/dev/null; then
- if test -s conftest.err; then
- ac_cpp_err=$ac_c_preproc_warn_flag
- ac_cpp_err=$ac_cpp_err$ac_c_werror_flag
- else
- ac_cpp_err=
- fi
-else
- ac_cpp_err=yes
-fi
-if test -z "$ac_cpp_err"; then
- ac_header_preproc=yes
-else
- echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
- ac_header_preproc=no
-fi
-rm -f conftest.err conftest.$ac_ext
-echo "$as_me:$LINENO: result: $ac_header_preproc" >&5
-echo "${ECHO_T}$ac_header_preproc" >&6
-
-# So? What about this header?
-case $ac_header_compiler:$ac_header_preproc:$ac_c_preproc_warn_flag in
- yes:no: )
- { echo "$as_me:$LINENO: WARNING: $ac_header: accepted by the compiler, rejected by the preprocessor!" >&5
-echo "$as_me: WARNING: $ac_header: accepted by the compiler, rejected by the preprocessor!" >&2;}
- { echo "$as_me:$LINENO: WARNING: $ac_header: proceeding with the compiler's result" >&5
-echo "$as_me: WARNING: $ac_header: proceeding with the compiler's result" >&2;}
- ac_header_preproc=yes
- ;;
- no:yes:* )
- { echo "$as_me:$LINENO: WARNING: $ac_header: present but cannot be compiled" >&5
-echo "$as_me: WARNING: $ac_header: present but cannot be compiled" >&2;}
- { echo "$as_me:$LINENO: WARNING: $ac_header: check for missing prerequisite headers?" >&5
-echo "$as_me: WARNING: $ac_header: check for missing prerequisite headers?" >&2;}
- { echo "$as_me:$LINENO: WARNING: $ac_header: see the Autoconf documentation" >&5
-echo "$as_me: WARNING: $ac_header: see the Autoconf documentation" >&2;}
- { echo "$as_me:$LINENO: WARNING: $ac_header: section \"Present But Cannot Be Compiled\"" >&5
-echo "$as_me: WARNING: $ac_header: section \"Present But Cannot Be Compiled\"" >&2;}
- { echo "$as_me:$LINENO: WARNING: $ac_header: proceeding with the preprocessor's result" >&5
-echo "$as_me: WARNING: $ac_header: proceeding with the preprocessor's result" >&2;}
- { echo "$as_me:$LINENO: WARNING: $ac_header: in the future, the compiler will take precedence" >&5
-echo "$as_me: WARNING: $ac_header: in the future, the compiler will take precedence" >&2;}
- (
- cat <<\_ASBOX
-## ------------------------------- ##
-## Report this to bug-gawk@gnu.org ##
-## ------------------------------- ##
-_ASBOX
- ) |
- sed "s/^/$as_me: WARNING: /" >&2
- ;;
-esac
-echo "$as_me:$LINENO: checking for $ac_header" >&5
-echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6
-if eval "test \"\${$as_ac_Header+set}\" = set"; then
- echo $ECHO_N "(cached) $ECHO_C" >&6
-else
- eval "$as_ac_Header=\$ac_header_preproc"
-fi
-echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_Header'}'`" >&5
-echo "${ECHO_T}`eval echo '${'$as_ac_Header'}'`" >&6
-
-fi
-if test `eval echo '${'$as_ac_Header'}'` = yes; then
- cat >>confdefs.h <<_ACEOF
-#define `echo "HAVE_$ac_header" | $as_tr_cpp` 1
-_ACEOF
-
-fi
-
-done
-
- echo "$as_me:$LINENO: checking for SIZE_MAX" >&5
-echo $ECHO_N "checking for SIZE_MAX... $ECHO_C" >&6
- result=
- cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h. */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
-/* end confdefs.h. */
-
-#include <limits.h>
-#if HAVE_STDINT_H
-#include <stdint.h>
-#endif
-#ifdef SIZE_MAX
-Found it
-#endif
-
-_ACEOF
-if (eval "$ac_cpp conftest.$ac_ext") 2>&5 |
- $EGREP "Found it" >/dev/null 2>&1; then
- result=yes
-fi
-rm -f conftest*
-
- if test -z "$result"; then
- if test "$cross_compiling" = yes; then
- # Depending upon the size, compute the lo and hi bounds.
-cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h. */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
-/* end confdefs.h. */
-#include <stddef.h>
-int
-main ()
-{
-static int test_array [1 - 2 * !((~(size_t)0 / 10) >= 0)];
-test_array [0] = 0
-
- ;
- return 0;
-}
-_ACEOF
-rm -f conftest.$ac_objext
-if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
- (eval $ac_compile) 2>conftest.er1
- ac_status=$?
- grep -v '^ *+' conftest.er1 >conftest.err
- rm -f conftest.er1
- cat conftest.err >&5
- echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); } &&
- { ac_try='test -z "$ac_c_werror_flag"
- || test ! -s conftest.err'
- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
- (eval $ac_try) 2>&5
- ac_status=$?
- echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); }; } &&
- { ac_try='test -s conftest.$ac_objext'
- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
- (eval $ac_try) 2>&5
- ac_status=$?
- echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); }; }; then
- ac_lo=0 ac_mid=0
- while :; do
- cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h. */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
-/* end confdefs.h. */
-#include <stddef.h>
-int
-main ()
-{
-static int test_array [1 - 2 * !((~(size_t)0 / 10) <= $ac_mid)];
-test_array [0] = 0
-
- ;
- return 0;
-}
-_ACEOF
-rm -f conftest.$ac_objext
-if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
- (eval $ac_compile) 2>conftest.er1
- ac_status=$?
- grep -v '^ *+' conftest.er1 >conftest.err
- rm -f conftest.er1
- cat conftest.err >&5
- echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); } &&
- { ac_try='test -z "$ac_c_werror_flag"
- || test ! -s conftest.err'
- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
- (eval $ac_try) 2>&5
- ac_status=$?
- echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); }; } &&
- { ac_try='test -s conftest.$ac_objext'
- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
- (eval $ac_try) 2>&5
- ac_status=$?
- echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); }; }; then
- ac_hi=$ac_mid; break
-else
- echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-ac_lo=`expr $ac_mid + 1`
- if test $ac_lo -le $ac_mid; then
- ac_lo= ac_hi=
- break
- fi
- ac_mid=`expr 2 '*' $ac_mid + 1`
-fi
-rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
- done
-else
- echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h. */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
-/* end confdefs.h. */
-#include <stddef.h>
-int
-main ()
-{
-static int test_array [1 - 2 * !((~(size_t)0 / 10) < 0)];
-test_array [0] = 0
-
- ;
- return 0;
-}
-_ACEOF
-rm -f conftest.$ac_objext
-if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
- (eval $ac_compile) 2>conftest.er1
- ac_status=$?
- grep -v '^ *+' conftest.er1 >conftest.err
- rm -f conftest.er1
- cat conftest.err >&5
- echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); } &&
- { ac_try='test -z "$ac_c_werror_flag"
- || test ! -s conftest.err'
- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
- (eval $ac_try) 2>&5
- ac_status=$?
- echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); }; } &&
- { ac_try='test -s conftest.$ac_objext'
- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
- (eval $ac_try) 2>&5
- ac_status=$?
- echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); }; }; then
- ac_hi=-1 ac_mid=-1
- while :; do
- cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h. */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
-/* end confdefs.h. */
-#include <stddef.h>
-int
-main ()
-{
-static int test_array [1 - 2 * !((~(size_t)0 / 10) >= $ac_mid)];
-test_array [0] = 0
-
- ;
- return 0;
-}
-_ACEOF
-rm -f conftest.$ac_objext
-if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
- (eval $ac_compile) 2>conftest.er1
- ac_status=$?
- grep -v '^ *+' conftest.er1 >conftest.err
- rm -f conftest.er1
- cat conftest.err >&5
- echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); } &&
- { ac_try='test -z "$ac_c_werror_flag"
- || test ! -s conftest.err'
- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
- (eval $ac_try) 2>&5
- ac_status=$?
- echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); }; } &&
- { ac_try='test -s conftest.$ac_objext'
- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
- (eval $ac_try) 2>&5
- ac_status=$?
- echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); }; }; then
- ac_lo=$ac_mid; break
-else
- echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-ac_hi=`expr '(' $ac_mid ')' - 1`
- if test $ac_mid -le $ac_hi; then
- ac_lo= ac_hi=
- break
- fi
- ac_mid=`expr 2 '*' $ac_mid`
-fi
-rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
- done
-else
- echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-ac_lo= ac_hi=
-fi
-rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
-fi
-rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
-# Binary search between lo and hi bounds.
-while test "x$ac_lo" != "x$ac_hi"; do
- ac_mid=`expr '(' $ac_hi - $ac_lo ')' / 2 + $ac_lo`
- cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h. */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
-/* end confdefs.h. */
-#include <stddef.h>
-int
-main ()
-{
-static int test_array [1 - 2 * !((~(size_t)0 / 10) <= $ac_mid)];
-test_array [0] = 0
-
- ;
- return 0;
-}
-_ACEOF
-rm -f conftest.$ac_objext
-if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
- (eval $ac_compile) 2>conftest.er1
- ac_status=$?
- grep -v '^ *+' conftest.er1 >conftest.err
- rm -f conftest.er1
- cat conftest.err >&5
- echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); } &&
- { ac_try='test -z "$ac_c_werror_flag"
- || test ! -s conftest.err'
- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
- (eval $ac_try) 2>&5
- ac_status=$?
- echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); }; } &&
- { ac_try='test -s conftest.$ac_objext'
- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
- (eval $ac_try) 2>&5
- ac_status=$?
- echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); }; }; then
- ac_hi=$ac_mid
-else
- echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-ac_lo=`expr '(' $ac_mid ')' + 1`
-fi
-rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
-done
-case $ac_lo in
-?*) res_hi=$ac_lo;;
-'') result=? ;;
-esac
-else
- if test "$cross_compiling" = yes; then
- { { echo "$as_me:$LINENO: error: cannot run test program while cross compiling
-See \`config.log' for more details." >&5
-echo "$as_me: error: cannot run test program while cross compiling
-See \`config.log' for more details." >&2;}
- { (exit 1); exit 1; }; }
-else
- cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h. */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
-/* end confdefs.h. */
-#include <stddef.h>
-long longval () { return ~(size_t)0 / 10; }
-unsigned long ulongval () { return ~(size_t)0 / 10; }
-#include <stdio.h>
-#include <stdlib.h>
-int
-main ()
-{
-
- FILE *f = fopen ("conftest.val", "w");
- if (! f)
- exit (1);
- if ((~(size_t)0 / 10) < 0)
- {
- long i = longval ();
- if (i != (~(size_t)0 / 10))
- exit (1);
- fprintf (f, "%ld\n", i);
- }
- else
- {
- unsigned long i = ulongval ();
- if (i != (~(size_t)0 / 10))
- exit (1);
- fprintf (f, "%lu\n", i);
- }
- exit (ferror (f) || fclose (f) != 0);
-
- ;
- return 0;
-}
-_ACEOF
-rm -f conftest$ac_exeext
-if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
- (eval $ac_link) 2>&5
- ac_status=$?
- echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); } && { ac_try='./conftest$ac_exeext'
- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
- (eval $ac_try) 2>&5
- ac_status=$?
- echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); }; }; then
- res_hi=`cat conftest.val`
-else
- echo "$as_me: program exited with status $ac_status" >&5
-echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-( exit $ac_status )
-result=?
-fi
-rm -f core *.core gmon.out bb.out conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext
-fi
-fi
-rm -f conftest.val
- if test "$cross_compiling" = yes; then
- # Depending upon the size, compute the lo and hi bounds.
-cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h. */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
-/* end confdefs.h. */
-#include <stddef.h>
-int
-main ()
-{
-static int test_array [1 - 2 * !((~(size_t)0 % 10) >= 0)];
-test_array [0] = 0
-
- ;
- return 0;
-}
-_ACEOF
-rm -f conftest.$ac_objext
-if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
- (eval $ac_compile) 2>conftest.er1
- ac_status=$?
- grep -v '^ *+' conftest.er1 >conftest.err
- rm -f conftest.er1
- cat conftest.err >&5
- echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); } &&
- { ac_try='test -z "$ac_c_werror_flag"
- || test ! -s conftest.err'
- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
- (eval $ac_try) 2>&5
- ac_status=$?
- echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); }; } &&
- { ac_try='test -s conftest.$ac_objext'
- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
- (eval $ac_try) 2>&5
- ac_status=$?
- echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); }; }; then
- ac_lo=0 ac_mid=0
- while :; do
- cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h. */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
-/* end confdefs.h. */
-#include <stddef.h>
-int
-main ()
-{
-static int test_array [1 - 2 * !((~(size_t)0 % 10) <= $ac_mid)];
-test_array [0] = 0
-
- ;
- return 0;
-}
-_ACEOF
-rm -f conftest.$ac_objext
-if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
- (eval $ac_compile) 2>conftest.er1
- ac_status=$?
- grep -v '^ *+' conftest.er1 >conftest.err
- rm -f conftest.er1
- cat conftest.err >&5
- echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); } &&
- { ac_try='test -z "$ac_c_werror_flag"
- || test ! -s conftest.err'
- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
- (eval $ac_try) 2>&5
- ac_status=$?
- echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); }; } &&
- { ac_try='test -s conftest.$ac_objext'
- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
- (eval $ac_try) 2>&5
- ac_status=$?
- echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); }; }; then
- ac_hi=$ac_mid; break
-else
- echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-ac_lo=`expr $ac_mid + 1`
- if test $ac_lo -le $ac_mid; then
- ac_lo= ac_hi=
- break
- fi
- ac_mid=`expr 2 '*' $ac_mid + 1`
-fi
-rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
- done
-else
- echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h. */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
-/* end confdefs.h. */
-#include <stddef.h>
-int
-main ()
-{
-static int test_array [1 - 2 * !((~(size_t)0 % 10) < 0)];
-test_array [0] = 0
-
- ;
- return 0;
-}
-_ACEOF
-rm -f conftest.$ac_objext
-if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
- (eval $ac_compile) 2>conftest.er1
- ac_status=$?
- grep -v '^ *+' conftest.er1 >conftest.err
- rm -f conftest.er1
- cat conftest.err >&5
- echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); } &&
- { ac_try='test -z "$ac_c_werror_flag"
- || test ! -s conftest.err'
- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
- (eval $ac_try) 2>&5
- ac_status=$?
- echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); }; } &&
- { ac_try='test -s conftest.$ac_objext'
- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
- (eval $ac_try) 2>&5
- ac_status=$?
- echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); }; }; then
- ac_hi=-1 ac_mid=-1
- while :; do
- cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h. */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
-/* end confdefs.h. */
-#include <stddef.h>
-int
-main ()
-{
-static int test_array [1 - 2 * !((~(size_t)0 % 10) >= $ac_mid)];
-test_array [0] = 0
-
- ;
- return 0;
-}
-_ACEOF
-rm -f conftest.$ac_objext
-if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
- (eval $ac_compile) 2>conftest.er1
- ac_status=$?
- grep -v '^ *+' conftest.er1 >conftest.err
- rm -f conftest.er1
- cat conftest.err >&5
- echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); } &&
- { ac_try='test -z "$ac_c_werror_flag"
- || test ! -s conftest.err'
- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
- (eval $ac_try) 2>&5
- ac_status=$?
- echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); }; } &&
- { ac_try='test -s conftest.$ac_objext'
- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
- (eval $ac_try) 2>&5
- ac_status=$?
- echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); }; }; then
- ac_lo=$ac_mid; break
-else
- echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-ac_hi=`expr '(' $ac_mid ')' - 1`
- if test $ac_mid -le $ac_hi; then
- ac_lo= ac_hi=
- break
- fi
- ac_mid=`expr 2 '*' $ac_mid`
-fi
-rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
- done
-else
- echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-ac_lo= ac_hi=
-fi
-rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
-fi
-rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
-# Binary search between lo and hi bounds.
-while test "x$ac_lo" != "x$ac_hi"; do
- ac_mid=`expr '(' $ac_hi - $ac_lo ')' / 2 + $ac_lo`
- cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h. */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
-/* end confdefs.h. */
-#include <stddef.h>
-int
-main ()
-{
-static int test_array [1 - 2 * !((~(size_t)0 % 10) <= $ac_mid)];
-test_array [0] = 0
-
- ;
- return 0;
-}
-_ACEOF
-rm -f conftest.$ac_objext
-if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
- (eval $ac_compile) 2>conftest.er1
- ac_status=$?
- grep -v '^ *+' conftest.er1 >conftest.err
- rm -f conftest.er1
- cat conftest.err >&5
- echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); } &&
- { ac_try='test -z "$ac_c_werror_flag"
- || test ! -s conftest.err'
- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
- (eval $ac_try) 2>&5
- ac_status=$?
- echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); }; } &&
- { ac_try='test -s conftest.$ac_objext'
- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
- (eval $ac_try) 2>&5
- ac_status=$?
- echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); }; }; then
- ac_hi=$ac_mid
-else
- echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-ac_lo=`expr '(' $ac_mid ')' + 1`
-fi
-rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
-done
-case $ac_lo in
-?*) res_lo=$ac_lo;;
-'') result=? ;;
-esac
-else
- if test "$cross_compiling" = yes; then
- { { echo "$as_me:$LINENO: error: cannot run test program while cross compiling
-See \`config.log' for more details." >&5
-echo "$as_me: error: cannot run test program while cross compiling
-See \`config.log' for more details." >&2;}
- { (exit 1); exit 1; }; }
-else
- cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h. */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
-/* end confdefs.h. */
-#include <stddef.h>
-long longval () { return ~(size_t)0 % 10; }
-unsigned long ulongval () { return ~(size_t)0 % 10; }
-#include <stdio.h>
-#include <stdlib.h>
-int
-main ()
-{
-
- FILE *f = fopen ("conftest.val", "w");
- if (! f)
- exit (1);
- if ((~(size_t)0 % 10) < 0)
- {
- long i = longval ();
- if (i != (~(size_t)0 % 10))
- exit (1);
- fprintf (f, "%ld\n", i);
- }
- else
- {
- unsigned long i = ulongval ();
- if (i != (~(size_t)0 % 10))
- exit (1);
- fprintf (f, "%lu\n", i);
- }
- exit (ferror (f) || fclose (f) != 0);
-
- ;
- return 0;
-}
-_ACEOF
-rm -f conftest$ac_exeext
-if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
- (eval $ac_link) 2>&5
- ac_status=$?
- echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); } && { ac_try='./conftest$ac_exeext'
- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
- (eval $ac_try) 2>&5
- ac_status=$?
- echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); }; }; then
- res_lo=`cat conftest.val`
-else
- echo "$as_me: program exited with status $ac_status" >&5
-echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-( exit $ac_status )
-result=?
-fi
-rm -f core *.core gmon.out bb.out conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext
-fi
-fi
-rm -f conftest.val
- if test "$cross_compiling" = yes; then
- # Depending upon the size, compute the lo and hi bounds.
-cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h. */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
-/* end confdefs.h. */
-#include <stddef.h>
-int
-main ()
-{
-static int test_array [1 - 2 * !((sizeof (size_t) <= sizeof (unsigned int)) >= 0)];
-test_array [0] = 0
-
- ;
- return 0;
-}
-_ACEOF
-rm -f conftest.$ac_objext
-if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
- (eval $ac_compile) 2>conftest.er1
- ac_status=$?
- grep -v '^ *+' conftest.er1 >conftest.err
- rm -f conftest.er1
- cat conftest.err >&5
- echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); } &&
- { ac_try='test -z "$ac_c_werror_flag"
- || test ! -s conftest.err'
- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
- (eval $ac_try) 2>&5
- ac_status=$?
- echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); }; } &&
- { ac_try='test -s conftest.$ac_objext'
- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
- (eval $ac_try) 2>&5
- ac_status=$?
- echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); }; }; then
- ac_lo=0 ac_mid=0
- while :; do
- cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h. */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
-/* end confdefs.h. */
-#include <stddef.h>
-int
-main ()
-{
-static int test_array [1 - 2 * !((sizeof (size_t) <= sizeof (unsigned int)) <= $ac_mid)];
-test_array [0] = 0
-
- ;
- return 0;
-}
-_ACEOF
-rm -f conftest.$ac_objext
-if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
- (eval $ac_compile) 2>conftest.er1
- ac_status=$?
- grep -v '^ *+' conftest.er1 >conftest.err
- rm -f conftest.er1
- cat conftest.err >&5
- echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); } &&
- { ac_try='test -z "$ac_c_werror_flag"
- || test ! -s conftest.err'
- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
- (eval $ac_try) 2>&5
- ac_status=$?
- echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); }; } &&
- { ac_try='test -s conftest.$ac_objext'
- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
- (eval $ac_try) 2>&5
- ac_status=$?
- echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); }; }; then
- ac_hi=$ac_mid; break
-else
- echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-ac_lo=`expr $ac_mid + 1`
- if test $ac_lo -le $ac_mid; then
- ac_lo= ac_hi=
- break
- fi
- ac_mid=`expr 2 '*' $ac_mid + 1`
-fi
-rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
- done
-else
- echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h. */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
-/* end confdefs.h. */
-#include <stddef.h>
-int
-main ()
-{
-static int test_array [1 - 2 * !((sizeof (size_t) <= sizeof (unsigned int)) < 0)];
-test_array [0] = 0
-
- ;
- return 0;
-}
-_ACEOF
-rm -f conftest.$ac_objext
-if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
- (eval $ac_compile) 2>conftest.er1
- ac_status=$?
- grep -v '^ *+' conftest.er1 >conftest.err
- rm -f conftest.er1
- cat conftest.err >&5
- echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); } &&
- { ac_try='test -z "$ac_c_werror_flag"
- || test ! -s conftest.err'
- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
- (eval $ac_try) 2>&5
- ac_status=$?
- echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); }; } &&
- { ac_try='test -s conftest.$ac_objext'
- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
- (eval $ac_try) 2>&5
- ac_status=$?
- echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); }; }; then
- ac_hi=-1 ac_mid=-1
- while :; do
- cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h. */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
-/* end confdefs.h. */
-#include <stddef.h>
-int
-main ()
-{
-static int test_array [1 - 2 * !((sizeof (size_t) <= sizeof (unsigned int)) >= $ac_mid)];
-test_array [0] = 0
-
- ;
- return 0;
-}
-_ACEOF
-rm -f conftest.$ac_objext
-if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
- (eval $ac_compile) 2>conftest.er1
- ac_status=$?
- grep -v '^ *+' conftest.er1 >conftest.err
- rm -f conftest.er1
- cat conftest.err >&5
- echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); } &&
- { ac_try='test -z "$ac_c_werror_flag"
- || test ! -s conftest.err'
- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
- (eval $ac_try) 2>&5
- ac_status=$?
- echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); }; } &&
- { ac_try='test -s conftest.$ac_objext'
- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
- (eval $ac_try) 2>&5
- ac_status=$?
- echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); }; }; then
- ac_lo=$ac_mid; break
-else
- echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-ac_hi=`expr '(' $ac_mid ')' - 1`
- if test $ac_mid -le $ac_hi; then
- ac_lo= ac_hi=
- break
- fi
- ac_mid=`expr 2 '*' $ac_mid`
-fi
-rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
- done
-else
- echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-ac_lo= ac_hi=
-fi
-rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
-fi
-rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
-# Binary search between lo and hi bounds.
-while test "x$ac_lo" != "x$ac_hi"; do
- ac_mid=`expr '(' $ac_hi - $ac_lo ')' / 2 + $ac_lo`
- cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h. */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
-/* end confdefs.h. */
-#include <stddef.h>
-int
-main ()
-{
-static int test_array [1 - 2 * !((sizeof (size_t) <= sizeof (unsigned int)) <= $ac_mid)];
-test_array [0] = 0
-
- ;
- return 0;
-}
-_ACEOF
-rm -f conftest.$ac_objext
-if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
- (eval $ac_compile) 2>conftest.er1
- ac_status=$?
- grep -v '^ *+' conftest.er1 >conftest.err
- rm -f conftest.er1
- cat conftest.err >&5
- echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); } &&
- { ac_try='test -z "$ac_c_werror_flag"
- || test ! -s conftest.err'
- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
- (eval $ac_try) 2>&5
- ac_status=$?
- echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); }; } &&
- { ac_try='test -s conftest.$ac_objext'
- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
- (eval $ac_try) 2>&5
- ac_status=$?
- echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); }; }; then
- ac_hi=$ac_mid
-else
- echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-ac_lo=`expr '(' $ac_mid ')' + 1`
-fi
-rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
-done
-case $ac_lo in
-?*) fits_in_uint=$ac_lo;;
-'') result=? ;;
-esac
-else
- if test "$cross_compiling" = yes; then
- { { echo "$as_me:$LINENO: error: cannot run test program while cross compiling
-See \`config.log' for more details." >&5
-echo "$as_me: error: cannot run test program while cross compiling
-See \`config.log' for more details." >&2;}
- { (exit 1); exit 1; }; }
-else
- cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h. */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
-/* end confdefs.h. */
-#include <stddef.h>
-long longval () { return sizeof (size_t) <= sizeof (unsigned int); }
-unsigned long ulongval () { return sizeof (size_t) <= sizeof (unsigned int); }
-#include <stdio.h>
-#include <stdlib.h>
-int
-main ()
-{
-
- FILE *f = fopen ("conftest.val", "w");
- if (! f)
- exit (1);
- if ((sizeof (size_t) <= sizeof (unsigned int)) < 0)
- {
- long i = longval ();
- if (i != (sizeof (size_t) <= sizeof (unsigned int)))
- exit (1);
- fprintf (f, "%ld\n", i);
- }
- else
- {
- unsigned long i = ulongval ();
- if (i != (sizeof (size_t) <= sizeof (unsigned int)))
- exit (1);
- fprintf (f, "%lu\n", i);
- }
- exit (ferror (f) || fclose (f) != 0);
-
- ;
- return 0;
-}
-_ACEOF
-rm -f conftest$ac_exeext
-if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
- (eval $ac_link) 2>&5
- ac_status=$?
- echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); } && { ac_try='./conftest$ac_exeext'
- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
- (eval $ac_try) 2>&5
- ac_status=$?
- echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); }; }; then
- fits_in_uint=`cat conftest.val`
-else
- echo "$as_me: program exited with status $ac_status" >&5
-echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-( exit $ac_status )
-result=?
-fi
-rm -f core *.core gmon.out bb.out conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext
-fi
-fi
-rm -f conftest.val
- if test "$fits_in_uint" = 1; then
- cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h. */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
-/* end confdefs.h. */
-#include <stddef.h>
- extern size_t foo;
- extern unsigned long foo;
-
-int
-main ()
-{
-
- ;
- return 0;
-}
-_ACEOF
-rm -f conftest.$ac_objext
-if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
- (eval $ac_compile) 2>conftest.er1
- ac_status=$?
- grep -v '^ *+' conftest.er1 >conftest.err
- rm -f conftest.er1
- cat conftest.err >&5
- echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); } &&
- { ac_try='test -z "$ac_c_werror_flag"
- || test ! -s conftest.err'
- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
- (eval $ac_try) 2>&5
- ac_status=$?
- echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); }; } &&
- { ac_try='test -s conftest.$ac_objext'
- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
- (eval $ac_try) 2>&5
- ac_status=$?
- echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); }; }; then
- fits_in_uint=0
-else
- echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-fi
-rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
- 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
- result='~(size_t)0'
- fi
- fi
- echo "$as_me:$LINENO: result: $result" >&5
-echo "${ECHO_T}$result" >&6
- if test "$result" != yes; then
-
-cat >>confdefs.h <<_ACEOF
-#define SIZE_MAX $result
-_ACEOF
-
- fi
-
-
-
-
-for ac_header in stdint.h
-do
-as_ac_Header=`echo "ac_cv_header_$ac_header" | $as_tr_sh`
-if eval "test \"\${$as_ac_Header+set}\" = set"; then
- echo "$as_me:$LINENO: checking for $ac_header" >&5
-echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6
-if eval "test \"\${$as_ac_Header+set}\" = set"; then
- echo $ECHO_N "(cached) $ECHO_C" >&6
-fi
-echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_Header'}'`" >&5
-echo "${ECHO_T}`eval echo '${'$as_ac_Header'}'`" >&6
-else
- # Is the header compilable?
-echo "$as_me:$LINENO: checking $ac_header usability" >&5
-echo $ECHO_N "checking $ac_header usability... $ECHO_C" >&6
-cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h. */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
-/* end confdefs.h. */
-$ac_includes_default
-#include <$ac_header>
-_ACEOF
-rm -f conftest.$ac_objext
-if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
- (eval $ac_compile) 2>conftest.er1
- ac_status=$?
- grep -v '^ *+' conftest.er1 >conftest.err
- rm -f conftest.er1
- cat conftest.err >&5
- echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); } &&
- { ac_try='test -z "$ac_c_werror_flag"
- || test ! -s conftest.err'
- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
- (eval $ac_try) 2>&5
- ac_status=$?
- echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); }; } &&
- { ac_try='test -s conftest.$ac_objext'
- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
- (eval $ac_try) 2>&5
- ac_status=$?
- echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); }; }; then
- ac_header_compiler=yes
-else
- echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-ac_header_compiler=no
-fi
-rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
-echo "$as_me:$LINENO: result: $ac_header_compiler" >&5
-echo "${ECHO_T}$ac_header_compiler" >&6
-
-# Is the header present?
-echo "$as_me:$LINENO: checking $ac_header presence" >&5
-echo $ECHO_N "checking $ac_header presence... $ECHO_C" >&6
-cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h. */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
-/* end confdefs.h. */
-#include <$ac_header>
-_ACEOF
-if { (eval echo "$as_me:$LINENO: \"$ac_cpp conftest.$ac_ext\"") >&5
- (eval $ac_cpp conftest.$ac_ext) 2>conftest.er1
- ac_status=$?
- grep -v '^ *+' conftest.er1 >conftest.err
- rm -f conftest.er1
- cat conftest.err >&5
- echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); } >/dev/null; then
- if test -s conftest.err; then
- ac_cpp_err=$ac_c_preproc_warn_flag
- ac_cpp_err=$ac_cpp_err$ac_c_werror_flag
- else
- ac_cpp_err=
- fi
-else
- ac_cpp_err=yes
-fi
-if test -z "$ac_cpp_err"; then
- ac_header_preproc=yes
-else
- echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
- ac_header_preproc=no
-fi
-rm -f conftest.err conftest.$ac_ext
-echo "$as_me:$LINENO: result: $ac_header_preproc" >&5
-echo "${ECHO_T}$ac_header_preproc" >&6
-
-# So? What about this header?
-case $ac_header_compiler:$ac_header_preproc:$ac_c_preproc_warn_flag in
- yes:no: )
- { echo "$as_me:$LINENO: WARNING: $ac_header: accepted by the compiler, rejected by the preprocessor!" >&5
-echo "$as_me: WARNING: $ac_header: accepted by the compiler, rejected by the preprocessor!" >&2;}
- { echo "$as_me:$LINENO: WARNING: $ac_header: proceeding with the compiler's result" >&5
-echo "$as_me: WARNING: $ac_header: proceeding with the compiler's result" >&2;}
- ac_header_preproc=yes
- ;;
- no:yes:* )
- { echo "$as_me:$LINENO: WARNING: $ac_header: present but cannot be compiled" >&5
-echo "$as_me: WARNING: $ac_header: present but cannot be compiled" >&2;}
- { echo "$as_me:$LINENO: WARNING: $ac_header: check for missing prerequisite headers?" >&5
-echo "$as_me: WARNING: $ac_header: check for missing prerequisite headers?" >&2;}
- { echo "$as_me:$LINENO: WARNING: $ac_header: see the Autoconf documentation" >&5
-echo "$as_me: WARNING: $ac_header: see the Autoconf documentation" >&2;}
- { echo "$as_me:$LINENO: WARNING: $ac_header: section \"Present But Cannot Be Compiled\"" >&5
-echo "$as_me: WARNING: $ac_header: section \"Present But Cannot Be Compiled\"" >&2;}
- { echo "$as_me:$LINENO: WARNING: $ac_header: proceeding with the preprocessor's result" >&5
-echo "$as_me: WARNING: $ac_header: proceeding with the preprocessor's result" >&2;}
- { echo "$as_me:$LINENO: WARNING: $ac_header: in the future, the compiler will take precedence" >&5
-echo "$as_me: WARNING: $ac_header: in the future, the compiler will take precedence" >&2;}
- (
- cat <<\_ASBOX
-## ------------------------------- ##
-## Report this to bug-gawk@gnu.org ##
-## ------------------------------- ##
-_ASBOX
- ) |
- sed "s/^/$as_me: WARNING: /" >&2
- ;;
-esac
-echo "$as_me:$LINENO: checking for $ac_header" >&5
-echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6
-if eval "test \"\${$as_ac_Header+set}\" = set"; then
- echo $ECHO_N "(cached) $ECHO_C" >&6
-else
- eval "$as_ac_Header=\$ac_header_preproc"
-fi
-echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_Header'}'`" >&5
-echo "${ECHO_T}`eval echo '${'$as_ac_Header'}'`" >&6
-
-fi
-if test `eval echo '${'$as_ac_Header'}'` = yes; then
- cat >>confdefs.h <<_ACEOF
-#define `echo "HAVE_$ac_header" | $as_tr_cpp` 1
-_ACEOF
-
-fi
-
-done
-
-
-
- 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"
-
# Check whether --with-gnu-ld or --without-gnu-ld was given.
if test "${with_gnu_ld+set}" = set; then
@@ -9394,6 +5962,7 @@ with_gnu_ld=$acl_cv_prog_gnu_ld
+
echo "$as_me:$LINENO: checking for shared library run path origin" >&5
echo $ECHO_N "checking for shared library run path origin... $ECHO_C" >&6
if test "${acl_cv_rpath+set}" = set; then
@@ -9639,7 +6208,7 @@ fi;
if test "X$additional_includedir" = "X/usr/local/include"; then
if test -n "$GCC"; then
case $host_os in
- linux*) haveit=yes;;
+ linux* | gnu* | k*bsd*-gnu) haveit=yes;;
esac
fi
fi
@@ -9683,7 +6252,7 @@ fi;
if test "X$additional_libdir" = "X/usr/local/lib"; then
if test -n "$GCC"; then
case $host_os in
- linux*) haveit=yes;;
+ linux* | gnu* | k*bsd*-gnu) haveit=yes;;
esac
fi
fi
@@ -9813,72 +6382,6 @@ fi;
- echo "$as_me:$LINENO: checking for ptrdiff_t" >&5
-echo $ECHO_N "checking for ptrdiff_t... $ECHO_C" >&6
-if test "${ac_cv_type_ptrdiff_t+set}" = set; then
- echo $ECHO_N "(cached) $ECHO_C" >&6
-else
- cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h. */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
-/* end confdefs.h. */
-$ac_includes_default
-int
-main ()
-{
-if ((ptrdiff_t *) 0)
- return 0;
-if (sizeof (ptrdiff_t))
- return 0;
- ;
- return 0;
-}
-_ACEOF
-rm -f conftest.$ac_objext
-if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
- (eval $ac_compile) 2>conftest.er1
- ac_status=$?
- grep -v '^ *+' conftest.er1 >conftest.err
- rm -f conftest.er1
- cat conftest.err >&5
- echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); } &&
- { ac_try='test -z "$ac_c_werror_flag"
- || test ! -s conftest.err'
- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
- (eval $ac_try) 2>&5
- ac_status=$?
- echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); }; } &&
- { ac_try='test -s conftest.$ac_objext'
- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
- (eval $ac_try) 2>&5
- ac_status=$?
- echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); }; }; then
- ac_cv_type_ptrdiff_t=yes
-else
- echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-ac_cv_type_ptrdiff_t=no
-fi
-rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
-fi
-echo "$as_me:$LINENO: result: $ac_cv_type_ptrdiff_t" >&5
-echo "${ECHO_T}$ac_cv_type_ptrdiff_t" >&6
-if test $ac_cv_type_ptrdiff_t = yes; then
- :
-else
-
-cat >>confdefs.h <<\_ACEOF
-#define ptrdiff_t long
-_ACEOF
-
-
-fi
@@ -9889,238 +6392,26 @@ fi
-
-for ac_header in argz.h limits.h locale.h nl_types.h malloc.h stddef.h \
-stdlib.h string.h unistd.h sys/param.h
-do
-as_ac_Header=`echo "ac_cv_header_$ac_header" | $as_tr_sh`
-if eval "test \"\${$as_ac_Header+set}\" = set"; then
- echo "$as_me:$LINENO: checking for $ac_header" >&5
-echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6
-if eval "test \"\${$as_ac_Header+set}\" = set"; then
+ echo "$as_me:$LINENO: checking for CFPreferencesCopyAppValue" >&5
+echo $ECHO_N "checking for CFPreferencesCopyAppValue... $ECHO_C" >&6
+if test "${gt_cv_func_CFPreferencesCopyAppValue+set}" = set; then
echo $ECHO_N "(cached) $ECHO_C" >&6
-fi
-echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_Header'}'`" >&5
-echo "${ECHO_T}`eval echo '${'$as_ac_Header'}'`" >&6
else
- # Is the header compilable?
-echo "$as_me:$LINENO: checking $ac_header usability" >&5
-echo $ECHO_N "checking $ac_header usability... $ECHO_C" >&6
-cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h. */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
-/* end confdefs.h. */
-$ac_includes_default
-#include <$ac_header>
-_ACEOF
-rm -f conftest.$ac_objext
-if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
- (eval $ac_compile) 2>conftest.er1
- ac_status=$?
- grep -v '^ *+' conftest.er1 >conftest.err
- rm -f conftest.er1
- cat conftest.err >&5
- echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); } &&
- { ac_try='test -z "$ac_c_werror_flag"
- || test ! -s conftest.err'
- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
- (eval $ac_try) 2>&5
- ac_status=$?
- echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); }; } &&
- { ac_try='test -s conftest.$ac_objext'
- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
- (eval $ac_try) 2>&5
- ac_status=$?
- echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); }; }; then
- ac_header_compiler=yes
-else
- echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-ac_header_compiler=no
-fi
-rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
-echo "$as_me:$LINENO: result: $ac_header_compiler" >&5
-echo "${ECHO_T}$ac_header_compiler" >&6
-
-# Is the header present?
-echo "$as_me:$LINENO: checking $ac_header presence" >&5
-echo $ECHO_N "checking $ac_header presence... $ECHO_C" >&6
-cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h. */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
-/* end confdefs.h. */
-#include <$ac_header>
-_ACEOF
-if { (eval echo "$as_me:$LINENO: \"$ac_cpp conftest.$ac_ext\"") >&5
- (eval $ac_cpp conftest.$ac_ext) 2>conftest.er1
- ac_status=$?
- grep -v '^ *+' conftest.er1 >conftest.err
- rm -f conftest.er1
- cat conftest.err >&5
- echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); } >/dev/null; then
- if test -s conftest.err; then
- ac_cpp_err=$ac_c_preproc_warn_flag
- ac_cpp_err=$ac_cpp_err$ac_c_werror_flag
- else
- ac_cpp_err=
- fi
-else
- ac_cpp_err=yes
-fi
-if test -z "$ac_cpp_err"; then
- ac_header_preproc=yes
-else
- echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
- ac_header_preproc=no
-fi
-rm -f conftest.err conftest.$ac_ext
-echo "$as_me:$LINENO: result: $ac_header_preproc" >&5
-echo "${ECHO_T}$ac_header_preproc" >&6
-
-# So? What about this header?
-case $ac_header_compiler:$ac_header_preproc:$ac_c_preproc_warn_flag in
- yes:no: )
- { echo "$as_me:$LINENO: WARNING: $ac_header: accepted by the compiler, rejected by the preprocessor!" >&5
-echo "$as_me: WARNING: $ac_header: accepted by the compiler, rejected by the preprocessor!" >&2;}
- { echo "$as_me:$LINENO: WARNING: $ac_header: proceeding with the compiler's result" >&5
-echo "$as_me: WARNING: $ac_header: proceeding with the compiler's result" >&2;}
- ac_header_preproc=yes
- ;;
- no:yes:* )
- { echo "$as_me:$LINENO: WARNING: $ac_header: present but cannot be compiled" >&5
-echo "$as_me: WARNING: $ac_header: present but cannot be compiled" >&2;}
- { echo "$as_me:$LINENO: WARNING: $ac_header: check for missing prerequisite headers?" >&5
-echo "$as_me: WARNING: $ac_header: check for missing prerequisite headers?" >&2;}
- { echo "$as_me:$LINENO: WARNING: $ac_header: see the Autoconf documentation" >&5
-echo "$as_me: WARNING: $ac_header: see the Autoconf documentation" >&2;}
- { echo "$as_me:$LINENO: WARNING: $ac_header: section \"Present But Cannot Be Compiled\"" >&5
-echo "$as_me: WARNING: $ac_header: section \"Present But Cannot Be Compiled\"" >&2;}
- { echo "$as_me:$LINENO: WARNING: $ac_header: proceeding with the preprocessor's result" >&5
-echo "$as_me: WARNING: $ac_header: proceeding with the preprocessor's result" >&2;}
- { echo "$as_me:$LINENO: WARNING: $ac_header: in the future, the compiler will take precedence" >&5
-echo "$as_me: WARNING: $ac_header: in the future, the compiler will take precedence" >&2;}
- (
- cat <<\_ASBOX
-## ------------------------------- ##
-## Report this to bug-gawk@gnu.org ##
-## ------------------------------- ##
-_ASBOX
- ) |
- sed "s/^/$as_me: WARNING: /" >&2
- ;;
-esac
-echo "$as_me:$LINENO: checking for $ac_header" >&5
-echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6
-if eval "test \"\${$as_ac_Header+set}\" = set"; then
- echo $ECHO_N "(cached) $ECHO_C" >&6
-else
- eval "$as_ac_Header=\$ac_header_preproc"
-fi
-echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_Header'}'`" >&5
-echo "${ECHO_T}`eval echo '${'$as_ac_Header'}'`" >&6
-
-fi
-if test `eval echo '${'$as_ac_Header'}'` = yes; then
- cat >>confdefs.h <<_ACEOF
-#define `echo "HAVE_$ac_header" | $as_tr_cpp` 1
-_ACEOF
-
-fi
-
-done
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-for ac_func in 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
-do
-as_ac_var=`echo "ac_cv_func_$ac_func" | $as_tr_sh`
-echo "$as_me:$LINENO: checking for $ac_func" >&5
-echo $ECHO_N "checking for $ac_func... $ECHO_C" >&6
-if eval "test \"\${$as_ac_var+set}\" = set"; then
- echo $ECHO_N "(cached) $ECHO_C" >&6
-else
- cat >conftest.$ac_ext <<_ACEOF
+ gt_save_CPPFLAGS="$CPPFLAGS"
+ CPPFLAGS="$CPPFLAGS -I/System/Library/Frameworks/CoreFoundation.framework/Headers"
+ gt_save_LIBS="$LIBS"
+ LIBS="$LIBS -framework CoreFoundation"
+ cat >conftest.$ac_ext <<_ACEOF
/* confdefs.h. */
_ACEOF
cat confdefs.h >>conftest.$ac_ext
cat >>conftest.$ac_ext <<_ACEOF
/* end confdefs.h. */
-/* Define $ac_func to an innocuous variant, in case <limits.h> declares $ac_func.
- For example, HP-UX 11i <limits.h> declares gettimeofday. */
-#define $ac_func innocuous_$ac_func
-
-/* System header to define __stub macros and hopefully few prototypes,
- which can conflict with char $ac_func (); below.
- Prefer <limits.h> to <assert.h> if __STDC__ is defined, since
- <limits.h> exists even on freestanding compilers. */
-
-#ifdef __STDC__
-# include <limits.h>
-#else
-# include <assert.h>
-#endif
-
-#undef $ac_func
-
-/* Override any gcc2 internal prototype to avoid an error. */
-#ifdef __cplusplus
-extern "C"
-{
-#endif
-/* We use char because int might match the return type of a gcc2
- builtin and then its argument prototype would still apply. */
-char $ac_func ();
-/* The GNU C library defines this for functions which it implements
- to always fail with ENOSYS. Some functions are actually named
- something starting with __ and the normal name is an alias. */
-#if defined (__stub_$ac_func) || defined (__stub___$ac_func)
-choke me
-#else
-char (*f) () = $ac_func;
-#endif
-#ifdef __cplusplus
-}
-#endif
-
+#include <CFPreferences.h>
int
main ()
{
-return f != $ac_func;
+CFPreferencesCopyAppValue(NULL, NULL)
;
return 0;
}
@@ -10147,124 +6438,54 @@ if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
ac_status=$?
echo "$as_me:$LINENO: \$? = $ac_status" >&5
(exit $ac_status); }; }; then
- eval "$as_ac_var=yes"
+ gt_cv_func_CFPreferencesCopyAppValue=yes
else
echo "$as_me: failed program was:" >&5
sed 's/^/| /' conftest.$ac_ext >&5
-eval "$as_ac_var=no"
+gt_cv_func_CFPreferencesCopyAppValue=no
fi
rm -f conftest.err conftest.$ac_objext \
conftest$ac_exeext conftest.$ac_ext
+ CPPFLAGS="$gt_save_CPPFLAGS"
+ LIBS="$gt_save_LIBS"
fi
-echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_var'}'`" >&5
-echo "${ECHO_T}`eval echo '${'$as_ac_var'}'`" >&6
-if test `eval echo '${'$as_ac_var'}'` = yes; then
- cat >>confdefs.h <<_ACEOF
-#define `echo "HAVE_$ac_func" | $as_tr_cpp` 1
-_ACEOF
-
-fi
-done
+echo "$as_me:$LINENO: result: $gt_cv_func_CFPreferencesCopyAppValue" >&5
+echo "${ECHO_T}$gt_cv_func_CFPreferencesCopyAppValue" >&6
+ if test $gt_cv_func_CFPreferencesCopyAppValue = yes; then
-
-
- echo "$as_me:$LINENO: checking whether _snprintf is declared" >&5
-echo $ECHO_N "checking whether _snprintf is declared... $ECHO_C" >&6
-if test "${ac_cv_have_decl__snprintf+set}" = set; then
- echo $ECHO_N "(cached) $ECHO_C" >&6
-else
- cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h. */
+cat >>confdefs.h <<\_ACEOF
+#define HAVE_CFPREFERENCESCOPYAPPVALUE 1
_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
-/* end confdefs.h. */
-#include <stdio.h>
-int
-main ()
-{
-
-#ifndef _snprintf
- char *p = (char *) _snprintf;
-#endif
- ;
- return 0;
-}
-_ACEOF
-rm -f conftest.$ac_objext
-if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
- (eval $ac_compile) 2>conftest.er1
- ac_status=$?
- grep -v '^ *+' conftest.er1 >conftest.err
- rm -f conftest.er1
- cat conftest.err >&5
- echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); } &&
- { ac_try='test -z "$ac_c_werror_flag"
- || test ! -s conftest.err'
- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
- (eval $ac_try) 2>&5
- ac_status=$?
- echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); }; } &&
- { ac_try='test -s conftest.$ac_objext'
- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
- (eval $ac_try) 2>&5
- ac_status=$?
- echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); }; }; then
- ac_cv_have_decl__snprintf=yes
-else
- echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-ac_cv_have_decl__snprintf=no
-fi
-rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
-fi
-echo "$as_me:$LINENO: result: $ac_cv_have_decl__snprintf" >&5
-echo "${ECHO_T}$ac_cv_have_decl__snprintf" >&6
- if test $ac_cv_have_decl__snprintf = yes; then
- gt_value=1
- else
- gt_value=0
fi
-
-cat >>confdefs.h <<_ACEOF
-#define HAVE_DECL__SNPRINTF $gt_value
-_ACEOF
-
-
-
- echo "$as_me:$LINENO: checking whether _snwprintf is declared" >&5
-echo $ECHO_N "checking whether _snwprintf is declared... $ECHO_C" >&6
-if test "${ac_cv_have_decl__snwprintf+set}" = set; then
+ echo "$as_me:$LINENO: checking for CFLocaleCopyCurrent" >&5
+echo $ECHO_N "checking for CFLocaleCopyCurrent... $ECHO_C" >&6
+if test "${gt_cv_func_CFLocaleCopyCurrent+set}" = set; then
echo $ECHO_N "(cached) $ECHO_C" >&6
else
- cat >conftest.$ac_ext <<_ACEOF
+ gt_save_CPPFLAGS="$CPPFLAGS"
+ CPPFLAGS="$CPPFLAGS -I/System/Library/Frameworks/CoreFoundation.framework/Headers"
+ gt_save_LIBS="$LIBS"
+ LIBS="$LIBS -framework CoreFoundation"
+ cat >conftest.$ac_ext <<_ACEOF
/* confdefs.h. */
_ACEOF
cat confdefs.h >>conftest.$ac_ext
cat >>conftest.$ac_ext <<_ACEOF
/* end confdefs.h. */
-#include <stdio.h>
+#include <CFLocale.h>
int
main ()
{
-
-#ifndef _snwprintf
- char *p = (char *) _snwprintf;
-#endif
-
+CFLocaleCopyCurrent();
;
return 0;
}
_ACEOF
-rm -f conftest.$ac_objext
-if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
- (eval $ac_compile) 2>conftest.er1
+rm -f conftest.$ac_objext conftest$ac_exeext
+if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
+ (eval $ac_link) 2>conftest.er1
ac_status=$?
grep -v '^ *+' conftest.er1 >conftest.err
rm -f conftest.er1
@@ -10278,177 +6499,71 @@ if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
ac_status=$?
echo "$as_me:$LINENO: \$? = $ac_status" >&5
(exit $ac_status); }; } &&
- { ac_try='test -s conftest.$ac_objext'
+ { ac_try='test -s conftest$ac_exeext'
{ (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
(eval $ac_try) 2>&5
ac_status=$?
echo "$as_me:$LINENO: \$? = $ac_status" >&5
(exit $ac_status); }; }; then
- ac_cv_have_decl__snwprintf=yes
+ gt_cv_func_CFLocaleCopyCurrent=yes
else
echo "$as_me: failed program was:" >&5
sed 's/^/| /' conftest.$ac_ext >&5
-ac_cv_have_decl__snwprintf=no
+gt_cv_func_CFLocaleCopyCurrent=no
fi
-rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
+rm -f conftest.err conftest.$ac_objext \
+ conftest$ac_exeext conftest.$ac_ext
+ CPPFLAGS="$gt_save_CPPFLAGS"
+ LIBS="$gt_save_LIBS"
fi
-echo "$as_me:$LINENO: result: $ac_cv_have_decl__snwprintf" >&5
-echo "${ECHO_T}$ac_cv_have_decl__snwprintf" >&6
- if test $ac_cv_have_decl__snwprintf = yes; then
- gt_value=1
- else
- gt_value=0
- fi
+echo "$as_me:$LINENO: result: $gt_cv_func_CFLocaleCopyCurrent" >&5
+echo "${ECHO_T}$gt_cv_func_CFLocaleCopyCurrent" >&6
+ if test $gt_cv_func_CFLocaleCopyCurrent = yes; then
-cat >>confdefs.h <<_ACEOF
-#define HAVE_DECL__SNWPRINTF $gt_value
+cat >>confdefs.h <<\_ACEOF
+#define HAVE_CFLOCALECOPYCURRENT 1
_ACEOF
+ fi
+ INTL_MACOSX_LIBS=
+ if test $gt_cv_func_CFPreferencesCopyAppValue = yes || test $gt_cv_func_CFLocaleCopyCurrent = yes; then
+ INTL_MACOSX_LIBS="-Wl,-framework -Wl,CoreFoundation"
+ fi
- echo "$as_me:$LINENO: checking whether feof_unlocked is declared" >&5
-echo $ECHO_N "checking whether feof_unlocked is declared... $ECHO_C" >&6
-if test "${ac_cv_have_decl_feof_unlocked+set}" = set; then
- echo $ECHO_N "(cached) $ECHO_C" >&6
-else
- cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h. */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
-/* end confdefs.h. */
-#include <stdio.h>
-int
-main ()
-{
-
-#ifndef feof_unlocked
- char *p = (char *) feof_unlocked;
-#endif
- ;
- return 0;
-}
-_ACEOF
-rm -f conftest.$ac_objext
-if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
- (eval $ac_compile) 2>conftest.er1
- ac_status=$?
- grep -v '^ *+' conftest.er1 >conftest.err
- rm -f conftest.er1
- cat conftest.err >&5
- echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); } &&
- { ac_try='test -z "$ac_c_werror_flag"
- || test ! -s conftest.err'
- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
- (eval $ac_try) 2>&5
- ac_status=$?
- echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); }; } &&
- { ac_try='test -s conftest.$ac_objext'
- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
- (eval $ac_try) 2>&5
- ac_status=$?
- echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); }; }; then
- ac_cv_have_decl_feof_unlocked=yes
+ echo "$as_me:$LINENO: checking whether NLS is requested" >&5
+echo $ECHO_N "checking whether NLS is requested... $ECHO_C" >&6
+ # Check whether --enable-nls or --disable-nls was given.
+if test "${enable_nls+set}" = set; then
+ enableval="$enable_nls"
+ USE_NLS=$enableval
else
- echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
+ USE_NLS=yes
+fi;
+ echo "$as_me:$LINENO: result: $USE_NLS" >&5
+echo "${ECHO_T}$USE_NLS" >&6
-ac_cv_have_decl_feof_unlocked=no
-fi
-rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
-fi
-echo "$as_me:$LINENO: result: $ac_cv_have_decl_feof_unlocked" >&5
-echo "${ECHO_T}$ac_cv_have_decl_feof_unlocked" >&6
- if test $ac_cv_have_decl_feof_unlocked = yes; then
- gt_value=1
- else
- gt_value=0
- fi
-cat >>confdefs.h <<_ACEOF
-#define HAVE_DECL_FEOF_UNLOCKED $gt_value
-_ACEOF
+ LIBINTL=
+ LTLIBINTL=
+ POSUB=
- echo "$as_me:$LINENO: checking whether fgets_unlocked is declared" >&5
-echo $ECHO_N "checking whether fgets_unlocked is declared... $ECHO_C" >&6
-if test "${ac_cv_have_decl_fgets_unlocked+set}" = set; then
- echo $ECHO_N "(cached) $ECHO_C" >&6
-else
- cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h. */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
-/* end confdefs.h. */
-#include <stdio.h>
-int
-main ()
-{
+ if test "$USE_NLS" = "yes"; then
+ gt_use_preinstalled_gnugettext=no
-#ifndef fgets_unlocked
- char *p = (char *) fgets_unlocked;
-#endif
- ;
- return 0;
-}
-_ACEOF
-rm -f conftest.$ac_objext
-if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
- (eval $ac_compile) 2>conftest.er1
- ac_status=$?
- grep -v '^ *+' conftest.er1 >conftest.err
- rm -f conftest.er1
- cat conftest.err >&5
- echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); } &&
- { ac_try='test -z "$ac_c_werror_flag"
- || test ! -s conftest.err'
- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
- (eval $ac_try) 2>&5
- ac_status=$?
- echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); }; } &&
- { ac_try='test -s conftest.$ac_objext'
- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
- (eval $ac_try) 2>&5
- ac_status=$?
- echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); }; }; then
- ac_cv_have_decl_fgets_unlocked=yes
-else
- echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-ac_cv_have_decl_fgets_unlocked=no
-fi
-rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
-fi
-echo "$as_me:$LINENO: result: $ac_cv_have_decl_fgets_unlocked" >&5
-echo "${ECHO_T}$ac_cv_have_decl_fgets_unlocked" >&6
- if test $ac_cv_have_decl_fgets_unlocked = yes; then
- gt_value=1
- else
- gt_value=0
- fi
-cat >>confdefs.h <<_ACEOF
-#define HAVE_DECL_FGETS_UNLOCKED $gt_value
-_ACEOF
- echo "$as_me:$LINENO: checking whether getc_unlocked is declared" >&5
-echo $ECHO_N "checking whether getc_unlocked is declared... $ECHO_C" >&6
-if test "${ac_cv_have_decl_getc_unlocked+set}" = set; then
+ echo "$as_me:$LINENO: checking for GNU gettext in libc" >&5
+echo $ECHO_N "checking for GNU gettext in libc... $ECHO_C" >&6
+if test "${gt_cv_func_gnugettext1_libc+set}" = set; then
echo $ECHO_N "(cached) $ECHO_C" >&6
else
cat >conftest.$ac_ext <<_ACEOF
@@ -10457,22 +6572,21 @@ _ACEOF
cat confdefs.h >>conftest.$ac_ext
cat >>conftest.$ac_ext <<_ACEOF
/* end confdefs.h. */
-#include <stdio.h>
+#include <libintl.h>
+extern int _nl_msg_cat_cntr;
+extern int *_nl_domain_bindings;
int
main ()
{
-
-#ifndef getc_unlocked
- char *p = (char *) getc_unlocked;
-#endif
-
+bindtextdomain ("", "");
+return * gettext ("") + _nl_msg_cat_cntr + *_nl_domain_bindings
;
return 0;
}
_ACEOF
-rm -f conftest.$ac_objext
-if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
- (eval $ac_compile) 2>conftest.er1
+rm -f conftest.$ac_objext conftest$ac_exeext
+if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
+ (eval $ac_link) 2>conftest.er1
ac_status=$?
grep -v '^ *+' conftest.er1 >conftest.err
rm -f conftest.er1
@@ -10486,59 +6600,26 @@ if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
ac_status=$?
echo "$as_me:$LINENO: \$? = $ac_status" >&5
(exit $ac_status); }; } &&
- { ac_try='test -s conftest.$ac_objext'
+ { ac_try='test -s conftest$ac_exeext'
{ (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
(eval $ac_try) 2>&5
ac_status=$?
echo "$as_me:$LINENO: \$? = $ac_status" >&5
(exit $ac_status); }; }; then
- ac_cv_have_decl_getc_unlocked=yes
+ gt_cv_func_gnugettext1_libc=yes
else
echo "$as_me: failed program was:" >&5
sed 's/^/| /' conftest.$ac_ext >&5
-ac_cv_have_decl_getc_unlocked=no
+gt_cv_func_gnugettext1_libc=no
fi
-rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
+rm -f conftest.err conftest.$ac_objext \
+ conftest$ac_exeext conftest.$ac_ext
fi
-echo "$as_me:$LINENO: result: $ac_cv_have_decl_getc_unlocked" >&5
-echo "${ECHO_T}$ac_cv_have_decl_getc_unlocked" >&6
- if test $ac_cv_have_decl_getc_unlocked = yes; then
- gt_value=1
- else
- gt_value=0
- fi
-
-cat >>confdefs.h <<_ACEOF
-#define HAVE_DECL_GETC_UNLOCKED $gt_value
-_ACEOF
-
-
-
- case $gt_cv_func_printf_posix in
- *yes) HAVE_POSIX_PRINTF=1 ;;
- *) HAVE_POSIX_PRINTF=0 ;;
- esac
-
- if test "$ac_cv_func_asprintf" = yes; then
- HAVE_ASPRINTF=1
- else
- HAVE_ASPRINTF=0
- fi
-
- if test "$ac_cv_func_snprintf" = yes; then
- HAVE_SNPRINTF=1
- else
- HAVE_SNPRINTF=0
- fi
-
- if test "$ac_cv_func_wprintf" = yes; then
- HAVE_WPRINTF=1
- else
- HAVE_WPRINTF=0
- fi
-
+echo "$as_me:$LINENO: result: $gt_cv_func_gnugettext1_libc" >&5
+echo "${ECHO_T}$gt_cv_func_gnugettext1_libc" >&6
+ if test "$gt_cv_func_gnugettext1_libc" != "yes"; then
@@ -10703,394 +6784,6 @@ echo "${ECHO_T}$LIBICONV" >&6
- if test "$am_cv_func_iconv" = yes; then
- echo "$as_me:$LINENO: checking for iconv declaration" >&5
-echo $ECHO_N "checking for iconv declaration... $ECHO_C" >&6
- if test "${am_cv_proto_iconv+set}" = set; then
- echo $ECHO_N "(cached) $ECHO_C" >&6
-else
-
- cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h. */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
-/* end confdefs.h. */
-
-#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
-
-int
-main ()
-{
-
- ;
- return 0;
-}
-_ACEOF
-rm -f conftest.$ac_objext
-if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
- (eval $ac_compile) 2>conftest.er1
- ac_status=$?
- grep -v '^ *+' conftest.er1 >conftest.err
- rm -f conftest.er1
- cat conftest.err >&5
- echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); } &&
- { ac_try='test -z "$ac_c_werror_flag"
- || test ! -s conftest.err'
- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
- (eval $ac_try) 2>&5
- ac_status=$?
- echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); }; } &&
- { ac_try='test -s conftest.$ac_objext'
- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
- (eval $ac_try) 2>&5
- ac_status=$?
- echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); }; }; then
- am_cv_proto_iconv_arg1=""
-else
- echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-am_cv_proto_iconv_arg1="const"
-fi
-rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
- 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);"
-fi
-
- am_cv_proto_iconv=`echo "$am_cv_proto_iconv" | tr -s ' ' | sed -e 's/( /(/'`
- echo "$as_me:$LINENO: result: ${ac_t:-
- }$am_cv_proto_iconv" >&5
-echo "${ECHO_T}${ac_t:-
- }$am_cv_proto_iconv" >&6
-
-cat >>confdefs.h <<_ACEOF
-#define ICONV_CONST $am_cv_proto_iconv_arg1
-_ACEOF
-
- fi
-
-
- echo "$as_me:$LINENO: checking for nl_langinfo and CODESET" >&5
-echo $ECHO_N "checking for nl_langinfo and CODESET... $ECHO_C" >&6
-if test "${am_cv_langinfo_codeset+set}" = set; then
- echo $ECHO_N "(cached) $ECHO_C" >&6
-else
- cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h. */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
-/* end confdefs.h. */
-#include <langinfo.h>
-int
-main ()
-{
-char* cs = nl_langinfo(CODESET);
- ;
- return 0;
-}
-_ACEOF
-rm -f conftest.$ac_objext conftest$ac_exeext
-if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
- (eval $ac_link) 2>conftest.er1
- ac_status=$?
- grep -v '^ *+' conftest.er1 >conftest.err
- rm -f conftest.er1
- cat conftest.err >&5
- echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); } &&
- { ac_try='test -z "$ac_c_werror_flag"
- || test ! -s conftest.err'
- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
- (eval $ac_try) 2>&5
- ac_status=$?
- echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); }; } &&
- { ac_try='test -s conftest$ac_exeext'
- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
- (eval $ac_try) 2>&5
- ac_status=$?
- echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); }; }; then
- am_cv_langinfo_codeset=yes
-else
- echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-am_cv_langinfo_codeset=no
-fi
-rm -f conftest.err conftest.$ac_objext \
- conftest$ac_exeext conftest.$ac_ext
-
-fi
-echo "$as_me:$LINENO: result: $am_cv_langinfo_codeset" >&5
-echo "${ECHO_T}$am_cv_langinfo_codeset" >&6
- if test $am_cv_langinfo_codeset = yes; then
-
-cat >>confdefs.h <<\_ACEOF
-#define HAVE_LANGINFO_CODESET 1
-_ACEOF
-
- fi
-
- if test $ac_cv_header_locale_h = yes; then
-
- echo "$as_me:$LINENO: checking for LC_MESSAGES" >&5
-echo $ECHO_N "checking for LC_MESSAGES... $ECHO_C" >&6
-if test "${am_cv_val_LC_MESSAGES+set}" = set; then
- echo $ECHO_N "(cached) $ECHO_C" >&6
-else
- cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h. */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
-/* end confdefs.h. */
-#include <locale.h>
-int
-main ()
-{
-return LC_MESSAGES
- ;
- return 0;
-}
-_ACEOF
-rm -f conftest.$ac_objext conftest$ac_exeext
-if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
- (eval $ac_link) 2>conftest.er1
- ac_status=$?
- grep -v '^ *+' conftest.er1 >conftest.err
- rm -f conftest.er1
- cat conftest.err >&5
- echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); } &&
- { ac_try='test -z "$ac_c_werror_flag"
- || test ! -s conftest.err'
- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
- (eval $ac_try) 2>&5
- ac_status=$?
- echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); }; } &&
- { ac_try='test -s conftest$ac_exeext'
- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
- (eval $ac_try) 2>&5
- ac_status=$?
- echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); }; }; then
- am_cv_val_LC_MESSAGES=yes
-else
- echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-am_cv_val_LC_MESSAGES=no
-fi
-rm -f conftest.err conftest.$ac_objext \
- conftest$ac_exeext conftest.$ac_ext
-fi
-echo "$as_me:$LINENO: result: $am_cv_val_LC_MESSAGES" >&5
-echo "${ECHO_T}$am_cv_val_LC_MESSAGES" >&6
- if test $am_cv_val_LC_MESSAGES = yes; then
-
-cat >>confdefs.h <<\_ACEOF
-#define HAVE_LC_MESSAGES 1
-_ACEOF
-
- fi
-
- fi
-
- for ac_prog in bison
-do
- # Extract the first word of "$ac_prog", so it can be a program name with args.
-set dummy $ac_prog; ac_word=$2
-echo "$as_me:$LINENO: checking for $ac_word" >&5
-echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6
-if test "${ac_cv_prog_INTLBISON+set}" = set; then
- echo $ECHO_N "(cached) $ECHO_C" >&6
-else
- if test -n "$INTLBISON"; then
- ac_cv_prog_INTLBISON="$INTLBISON" # Let the user override the test.
-else
-as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
-for as_dir in $PATH
-do
- IFS=$as_save_IFS
- test -z "$as_dir" && as_dir=.
- for ac_exec_ext in '' $ac_executable_extensions; do
- if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
- ac_cv_prog_INTLBISON="$ac_prog"
- echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
- break 2
- fi
-done
-done
-
-fi
-fi
-INTLBISON=$ac_cv_prog_INTLBISON
-if test -n "$INTLBISON"; then
- echo "$as_me:$LINENO: result: $INTLBISON" >&5
-echo "${ECHO_T}$INTLBISON" >&6
-else
- echo "$as_me:$LINENO: result: no" >&5
-echo "${ECHO_T}no" >&6
-fi
-
- test -n "$INTLBISON" && break
-done
-
- if test -z "$INTLBISON"; then
- ac_verc_fail=yes
- else
- echo "$as_me:$LINENO: checking version of bison" >&5
-echo $ECHO_N "checking version of bison... $ECHO_C" >&6
- 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].*)
- ac_prog_version="$ac_prog_version, ok"; ac_verc_fail=no;;
- *) ac_prog_version="$ac_prog_version, bad"; ac_verc_fail=yes;;
- esac
- echo "$as_me:$LINENO: result: $ac_prog_version" >&5
-echo "${ECHO_T}$ac_prog_version" >&6
- fi
- if test $ac_verc_fail = yes; then
- INTLBISON=:
- fi
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- echo "$as_me:$LINENO: checking whether NLS is requested" >&5
-echo $ECHO_N "checking whether NLS is requested... $ECHO_C" >&6
- # Check whether --enable-nls or --disable-nls was given.
-if test "${enable_nls+set}" = set; then
- enableval="$enable_nls"
- USE_NLS=$enableval
-else
- USE_NLS=yes
-fi;
- echo "$as_me:$LINENO: result: $USE_NLS" >&5
-echo "${ECHO_T}$USE_NLS" >&6
-
-
-
-
- BUILD_INCLUDED_LIBINTL=no
- USE_INCLUDED_LIBINTL=no
-
- LIBINTL=
- LTLIBINTL=
- POSUB=
-
- if test "$USE_NLS" = "yes"; then
- gt_use_preinstalled_gnugettext=no
-
- echo "$as_me:$LINENO: checking whether included gettext is requested" >&5
-echo $ECHO_N "checking whether included gettext is requested... $ECHO_C" >&6
-
-# Check whether --with-included-gettext or --without-included-gettext was given.
-if test "${with_included_gettext+set}" = set; then
- withval="$with_included_gettext"
- nls_cv_force_use_gnu_gettext=$withval
-else
- nls_cv_force_use_gnu_gettext=no
-fi;
- echo "$as_me:$LINENO: result: $nls_cv_force_use_gnu_gettext" >&5
-echo "${ECHO_T}$nls_cv_force_use_gnu_gettext" >&6
-
- nls_cv_use_gnu_gettext="$nls_cv_force_use_gnu_gettext"
- if test "$nls_cv_force_use_gnu_gettext" != "yes"; then
-
-
-
-
-
-
- echo "$as_me:$LINENO: checking for GNU gettext in libc" >&5
-echo $ECHO_N "checking for GNU gettext in libc... $ECHO_C" >&6
-if test "${gt_cv_func_gnugettext2_libc+set}" = set; then
- echo $ECHO_N "(cached) $ECHO_C" >&6
-else
- cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h. */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
-/* end confdefs.h. */
-#include <libintl.h>
-extern int _nl_msg_cat_cntr;
-extern int *_nl_domain_bindings;
-int
-main ()
-{
-bindtextdomain ("", "");
-return (int) gettext ("") + (int) ngettext ("", "", 0) + _nl_msg_cat_cntr + *_nl_domain_bindings
- ;
- return 0;
-}
-_ACEOF
-rm -f conftest.$ac_objext conftest$ac_exeext
-if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
- (eval $ac_link) 2>conftest.er1
- ac_status=$?
- grep -v '^ *+' conftest.er1 >conftest.err
- rm -f conftest.er1
- cat conftest.err >&5
- echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); } &&
- { ac_try='test -z "$ac_c_werror_flag"
- || test ! -s conftest.err'
- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
- (eval $ac_try) 2>&5
- ac_status=$?
- echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); }; } &&
- { ac_try='test -s conftest$ac_exeext'
- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
- (eval $ac_try) 2>&5
- ac_status=$?
- echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); }; }; then
- gt_cv_func_gnugettext2_libc=yes
-else
- echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-gt_cv_func_gnugettext2_libc=no
-fi
-rm -f conftest.err conftest.$ac_objext \
- conftest$ac_exeext conftest.$ac_ext
-fi
-echo "$as_me:$LINENO: result: $gt_cv_func_gnugettext2_libc" >&5
-echo "${ECHO_T}$gt_cv_func_gnugettext2_libc" >&6
-
- if test "$gt_cv_func_gnugettext2_libc" != "yes"; then
@@ -11303,7 +6996,7 @@ fi;
if test "X$additional_includedir" = "X/usr/local/include"; then
if test -n "$GCC"; then
case $host_os in
- linux*) haveit=yes;;
+ linux* | gnu* | k*bsd*-gnu) haveit=yes;;
esac
fi
fi
@@ -11347,7 +7040,7 @@ fi;
if test "X$additional_libdir" = "X/usr/local/lib"; then
if test -n "$GCC"; then
case $host_os in
- linux*) haveit=yes;;
+ linux* | gnu* | k*bsd*-gnu) haveit=yes;;
esac
fi
fi
@@ -11472,7 +7165,7 @@ fi;
echo "$as_me:$LINENO: checking for GNU gettext in libintl" >&5
echo $ECHO_N "checking for GNU gettext in libintl... $ECHO_C" >&6
-if test "${gt_cv_func_gnugettext2_libintl+set}" = set; then
+if test "${gt_cv_func_gnugettext1_libintl+set}" = set; then
echo $ECHO_N "(cached) $ECHO_C" >&6
else
gt_save_CPPFLAGS="$CPPFLAGS"
@@ -11491,12 +7184,12 @@ extern
#ifdef __cplusplus
"C"
#endif
-const char *_nl_expand_alias ();
+const char *_nl_expand_alias (const char *);
int
main ()
{
bindtextdomain ("", "");
-return (int) gettext ("") + (int) ngettext ("", "", 0) + _nl_msg_cat_cntr + *_nl_expand_alias (0)
+return * gettext ("") + _nl_msg_cat_cntr + *_nl_expand_alias ("")
;
return 0;
}
@@ -11523,16 +7216,16 @@ if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
ac_status=$?
echo "$as_me:$LINENO: \$? = $ac_status" >&5
(exit $ac_status); }; }; then
- gt_cv_func_gnugettext2_libintl=yes
+ gt_cv_func_gnugettext1_libintl=yes
else
echo "$as_me: failed program was:" >&5
sed 's/^/| /' conftest.$ac_ext >&5
-gt_cv_func_gnugettext2_libintl=no
+gt_cv_func_gnugettext1_libintl=no
fi
rm -f conftest.err conftest.$ac_objext \
conftest$ac_exeext conftest.$ac_ext
- if test "$gt_cv_func_gnugettext2_libintl" != yes && test -n "$LIBICONV"; then
+ if test "$gt_cv_func_gnugettext1_libintl" != yes && test -n "$LIBICONV"; then
LIBS="$LIBS $LIBICONV"
cat >conftest.$ac_ext <<_ACEOF
/* confdefs.h. */
@@ -11546,12 +7239,12 @@ extern
#ifdef __cplusplus
"C"
#endif
-const char *_nl_expand_alias ();
+const char *_nl_expand_alias (const char *);
int
main ()
{
bindtextdomain ("", "");
-return (int) gettext ("") + (int) ngettext ("", "", 0) + _nl_msg_cat_cntr + *_nl_expand_alias (0)
+return * gettext ("") + _nl_msg_cat_cntr + *_nl_expand_alias ("")
;
return 0;
}
@@ -11580,7 +7273,7 @@ if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
(exit $ac_status); }; }; then
LIBINTL="$LIBINTL $LIBICONV"
LTLIBINTL="$LTLIBINTL $LTLIBICONV"
- gt_cv_func_gnugettext2_libintl=yes
+ gt_cv_func_gnugettext1_libintl=yes
else
echo "$as_me: failed program was:" >&5
@@ -11593,12 +7286,12 @@ rm -f conftest.err conftest.$ac_objext \
CPPFLAGS="$gt_save_CPPFLAGS"
LIBS="$gt_save_LIBS"
fi
-echo "$as_me:$LINENO: result: $gt_cv_func_gnugettext2_libintl" >&5
-echo "${ECHO_T}$gt_cv_func_gnugettext2_libintl" >&6
+echo "$as_me:$LINENO: result: $gt_cv_func_gnugettext1_libintl" >&5
+echo "${ECHO_T}$gt_cv_func_gnugettext1_libintl" >&6
fi
- if test "$gt_cv_func_gnugettext2_libc" = "yes" \
- || { test "$gt_cv_func_gnugettext2_libintl" = "yes" \
+ if test "$gt_cv_func_gnugettext1_libc" = "yes" \
+ || { test "$gt_cv_func_gnugettext1_libintl" = "yes" \
&& test "$PACKAGE" != gettext-runtime \
&& test "$PACKAGE" != gettext-tools; }; then
gt_use_preinstalled_gnugettext=yes
@@ -11609,24 +7302,14 @@ echo "${ECHO_T}$gt_cv_func_gnugettext2_libintl" >&6
fi
- if test "$gt_use_preinstalled_gnugettext" != "yes"; then
- nls_cv_use_gnu_gettext=yes
- fi
- fi
-
- if test "$nls_cv_use_gnu_gettext" = "yes"; then
- BUILD_INCLUDED_LIBINTL=yes
- USE_INCLUDED_LIBINTL=yes
- LIBINTL="\${top_builddir}/intl/libintl.a $LIBICONV"
- LTLIBINTL="\${top_builddir}/intl/libintl.a $LTLIBICONV"
- LIBS=`echo " $LIBS " | sed -e 's/ -lintl / /' -e 's/^ //' -e 's/ $//'`
- fi
+ if test -n "$INTL_MACOSX_LIBS"; then
if test "$gt_use_preinstalled_gnugettext" = "yes" \
|| test "$nls_cv_use_gnu_gettext" = "yes"; then
- CATOBJEXT=.gmo
+ LIBINTL="$LIBINTL $INTL_MACOSX_LIBS"
+ LTLIBINTL="$LTLIBINTL $INTL_MACOSX_LIBS"
fi
-
+ fi
if test "$gt_use_preinstalled_gnugettext" = "yes" \
|| test "$nls_cv_use_gnu_gettext" = "yes"; then
@@ -11648,7 +7331,7 @@ echo "${ECHO_T}$USE_NLS" >&6
echo "$as_me:$LINENO: checking where the gettext function comes from" >&5
echo $ECHO_N "checking where the gettext function comes from... $ECHO_C" >&6
if test "$gt_use_preinstalled_gnugettext" = "yes"; then
- if test "$gt_cv_func_gnugettext2_libintl" = "yes"; then
+ if test "$gt_cv_func_gnugettext1_libintl" = "yes"; then
gt_source="external libintl"
else
gt_source="libc"
@@ -11663,7 +7346,7 @@ echo "${ECHO_T}$gt_source" >&6
if test "$USE_NLS" = "yes"; then
if test "$gt_use_preinstalled_gnugettext" = "yes"; then
- if test "$gt_cv_func_gnugettext2_libintl" = "yes"; then
+ if test "$gt_cv_func_gnugettext1_libintl" = "yes"; then
echo "$as_me:$LINENO: checking how to link with libintl" >&5
echo $ECHO_N "checking how to link with libintl... $ECHO_C" >&6
echo "$as_me:$LINENO: result: $LIBINTL" >&5
@@ -11709,34 +7392,6 @@ _ACEOF
fi
- if test "$PACKAGE" = gettext-runtime || test "$PACKAGE" = gettext-tools; then
- BUILD_INCLUDED_LIBINTL=yes
- fi
-
-
-
-
-
- nls_cv_header_intl=
- nls_cv_header_libgt=
-
- DATADIRNAME=share
-
-
- INSTOBJEXT=.mo
-
-
- GENCAT=gencat
-
-
- if test "$USE_INCLUDED_LIBINTL" = yes; then
- INTLOBJS="\$(GETTOBJS)"
- fi
-
-
- INTL_LIBTOOL_SUFFIX_PREFIX=
-
-
INTLLIBS="$LIBINTL"
@@ -12980,10 +8635,9 @@ _ACEOF
fi
-
- echo "$as_me:$LINENO: checking for intmax_t" >&5
-echo $ECHO_N "checking for intmax_t... $ECHO_C" >&6
-if test "${ac_cv_type_intmax_t+set}" = set; then
+ echo "$as_me:$LINENO: checking for inttypes.h" >&5
+echo $ECHO_N "checking for inttypes.h... $ECHO_C" >&6
+if test "${gl_cv_header_inttypes_h+set}" = set; then
echo $ECHO_N "(cached) $ECHO_C" >&6
else
cat >conftest.$ac_ext <<_ACEOF
@@ -12992,14 +8646,12 @@ _ACEOF
cat confdefs.h >>conftest.$ac_ext
cat >>conftest.$ac_ext <<_ACEOF
/* end confdefs.h. */
-$ac_includes_default
+#include <sys/types.h>
+#include <inttypes.h>
int
main ()
{
-if ((intmax_t *) 0)
- return 0;
-if (sizeof (intmax_t))
- return 0;
+uintmax_t i = (uintmax_t) -1;
;
return 0;
}
@@ -13026,35 +8678,113 @@ if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
ac_status=$?
echo "$as_me:$LINENO: \$? = $ac_status" >&5
(exit $ac_status); }; }; then
- ac_cv_type_intmax_t=yes
+ gl_cv_header_inttypes_h=yes
else
echo "$as_me: failed program was:" >&5
sed 's/^/| /' conftest.$ac_ext >&5
-ac_cv_type_intmax_t=no
+gl_cv_header_inttypes_h=no
fi
rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
fi
-echo "$as_me:$LINENO: result: $ac_cv_type_intmax_t" >&5
-echo "${ECHO_T}$ac_cv_type_intmax_t" >&6
-if test $ac_cv_type_intmax_t = yes; then
- :
+echo "$as_me:$LINENO: result: $gl_cv_header_inttypes_h" >&5
+echo "${ECHO_T}$gl_cv_header_inttypes_h" >&6
+ if test $gl_cv_header_inttypes_h = yes; then
+
+cat >>confdefs.h <<_ACEOF
+#define HAVE_INTTYPES_H_WITH_UINTMAX 1
+_ACEOF
+
+ fi
+
+
+ echo "$as_me:$LINENO: checking for stdint.h" >&5
+echo $ECHO_N "checking for stdint.h... $ECHO_C" >&6
+if test "${gl_cv_header_stdint_h+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+ cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+#include <sys/types.h>
+#include <stdint.h>
+int
+main ()
+{
+uintmax_t i = (uintmax_t) -1;
+ ;
+ return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext
+if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
+ (eval $ac_compile) 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } &&
+ { ac_try='test -z "$ac_c_werror_flag"
+ || test ! -s conftest.err'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; } &&
+ { ac_try='test -s conftest.$ac_objext'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; }; then
+ gl_cv_header_stdint_h=yes
else
- test $ac_cv_type_long_long = yes \
- && ac_type='long long' \
- || ac_type='long'
+ echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+gl_cv_header_stdint_h=no
+fi
+rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
+fi
+echo "$as_me:$LINENO: result: $gl_cv_header_stdint_h" >&5
+echo "${ECHO_T}$gl_cv_header_stdint_h" >&6
+ if test $gl_cv_header_stdint_h = yes; then
+
+cat >>confdefs.h <<_ACEOF
+#define HAVE_STDINT_H_WITH_UINTMAX 1
+_ACEOF
+
+ fi
+
+
+
+
+ if test $gl_cv_header_inttypes_h = no && test $gl_cv_header_stdint_h = no; then
+
+ test $ac_cv_type_long_long = yes \
+ && ac_type='long long' \
+ || ac_type='long'
cat >>confdefs.h <<_ACEOF
#define intmax_t $ac_type
_ACEOF
-fi
+ else
+cat >>confdefs.h <<\_ACEOF
+#define HAVE_INTMAX_T 1
+_ACEOF
+ fi
- if test $jm_ac_cv_header_inttypes_h = no && test $jm_ac_cv_header_stdint_h = no; then
+
+ if test $gl_cv_header_inttypes_h = no && test $gl_cv_header_stdint_h = no; then
test $ac_cv_type_unsigned_long_long = yes \
&& ac_type='unsigned long long' \
@@ -13138,6 +8868,834 @@ _ACEOF
fi
+echo "$as_me:$LINENO: checking for unsigned int" >&5
+echo $ECHO_N "checking for unsigned int... $ECHO_C" >&6
+if test "${ac_cv_type_unsigned_int+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+ cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+$ac_includes_default
+int
+main ()
+{
+if ((unsigned int *) 0)
+ return 0;
+if (sizeof (unsigned int))
+ return 0;
+ ;
+ return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext
+if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
+ (eval $ac_compile) 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } &&
+ { ac_try='test -z "$ac_c_werror_flag"
+ || test ! -s conftest.err'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; } &&
+ { ac_try='test -s conftest.$ac_objext'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; }; then
+ ac_cv_type_unsigned_int=yes
+else
+ echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ac_cv_type_unsigned_int=no
+fi
+rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
+fi
+echo "$as_me:$LINENO: result: $ac_cv_type_unsigned_int" >&5
+echo "${ECHO_T}$ac_cv_type_unsigned_int" >&6
+
+echo "$as_me:$LINENO: checking size of unsigned int" >&5
+echo $ECHO_N "checking size of unsigned int... $ECHO_C" >&6
+if test "${ac_cv_sizeof_unsigned_int+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+ if test "$ac_cv_type_unsigned_int" = yes; then
+ # The cast to unsigned long works around a bug in the HP C Compiler
+ # version HP92453-01 B.11.11.23709.GP, which incorrectly rejects
+ # declarations like `int a3[[(sizeof (unsigned char)) >= 0]];'.
+ # This bug is HP SR number 8606223364.
+ if test "$cross_compiling" = yes; then
+ # Depending upon the size, compute the lo and hi bounds.
+cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+$ac_includes_default
+int
+main ()
+{
+static int test_array [1 - 2 * !(((long) (sizeof (unsigned int))) >= 0)];
+test_array [0] = 0
+
+ ;
+ return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext
+if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
+ (eval $ac_compile) 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } &&
+ { ac_try='test -z "$ac_c_werror_flag"
+ || test ! -s conftest.err'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; } &&
+ { ac_try='test -s conftest.$ac_objext'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; }; then
+ ac_lo=0 ac_mid=0
+ while :; do
+ cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+$ac_includes_default
+int
+main ()
+{
+static int test_array [1 - 2 * !(((long) (sizeof (unsigned int))) <= $ac_mid)];
+test_array [0] = 0
+
+ ;
+ return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext
+if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
+ (eval $ac_compile) 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } &&
+ { ac_try='test -z "$ac_c_werror_flag"
+ || test ! -s conftest.err'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; } &&
+ { ac_try='test -s conftest.$ac_objext'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; }; then
+ ac_hi=$ac_mid; break
+else
+ echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ac_lo=`expr $ac_mid + 1`
+ if test $ac_lo -le $ac_mid; then
+ ac_lo= ac_hi=
+ break
+ fi
+ ac_mid=`expr 2 '*' $ac_mid + 1`
+fi
+rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
+ done
+else
+ echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+$ac_includes_default
+int
+main ()
+{
+static int test_array [1 - 2 * !(((long) (sizeof (unsigned int))) < 0)];
+test_array [0] = 0
+
+ ;
+ return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext
+if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
+ (eval $ac_compile) 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } &&
+ { ac_try='test -z "$ac_c_werror_flag"
+ || test ! -s conftest.err'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; } &&
+ { ac_try='test -s conftest.$ac_objext'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; }; then
+ ac_hi=-1 ac_mid=-1
+ while :; do
+ cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+$ac_includes_default
+int
+main ()
+{
+static int test_array [1 - 2 * !(((long) (sizeof (unsigned int))) >= $ac_mid)];
+test_array [0] = 0
+
+ ;
+ return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext
+if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
+ (eval $ac_compile) 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } &&
+ { ac_try='test -z "$ac_c_werror_flag"
+ || test ! -s conftest.err'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; } &&
+ { ac_try='test -s conftest.$ac_objext'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; }; then
+ ac_lo=$ac_mid; break
+else
+ echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ac_hi=`expr '(' $ac_mid ')' - 1`
+ if test $ac_mid -le $ac_hi; then
+ ac_lo= ac_hi=
+ break
+ fi
+ ac_mid=`expr 2 '*' $ac_mid`
+fi
+rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
+ done
+else
+ echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ac_lo= ac_hi=
+fi
+rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
+fi
+rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
+# Binary search between lo and hi bounds.
+while test "x$ac_lo" != "x$ac_hi"; do
+ ac_mid=`expr '(' $ac_hi - $ac_lo ')' / 2 + $ac_lo`
+ cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+$ac_includes_default
+int
+main ()
+{
+static int test_array [1 - 2 * !(((long) (sizeof (unsigned int))) <= $ac_mid)];
+test_array [0] = 0
+
+ ;
+ return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext
+if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
+ (eval $ac_compile) 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } &&
+ { ac_try='test -z "$ac_c_werror_flag"
+ || test ! -s conftest.err'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; } &&
+ { ac_try='test -s conftest.$ac_objext'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; }; then
+ ac_hi=$ac_mid
+else
+ echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ac_lo=`expr '(' $ac_mid ')' + 1`
+fi
+rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
+done
+case $ac_lo in
+?*) ac_cv_sizeof_unsigned_int=$ac_lo;;
+'') { { echo "$as_me:$LINENO: error: cannot compute sizeof (unsigned int), 77
+See \`config.log' for more details." >&5
+echo "$as_me: error: cannot compute sizeof (unsigned int), 77
+See \`config.log' for more details." >&2;}
+ { (exit 1); exit 1; }; } ;;
+esac
+else
+ if test "$cross_compiling" = yes; then
+ { { echo "$as_me:$LINENO: error: cannot run test program while cross compiling
+See \`config.log' for more details." >&5
+echo "$as_me: error: cannot run test program while cross compiling
+See \`config.log' for more details." >&2;}
+ { (exit 1); exit 1; }; }
+else
+ cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+$ac_includes_default
+long longval () { return (long) (sizeof (unsigned int)); }
+unsigned long ulongval () { return (long) (sizeof (unsigned int)); }
+#include <stdio.h>
+#include <stdlib.h>
+int
+main ()
+{
+
+ FILE *f = fopen ("conftest.val", "w");
+ if (! f)
+ exit (1);
+ if (((long) (sizeof (unsigned int))) < 0)
+ {
+ long i = longval ();
+ if (i != ((long) (sizeof (unsigned int))))
+ exit (1);
+ fprintf (f, "%ld\n", i);
+ }
+ else
+ {
+ unsigned long i = ulongval ();
+ if (i != ((long) (sizeof (unsigned int))))
+ exit (1);
+ fprintf (f, "%lu\n", i);
+ }
+ exit (ferror (f) || fclose (f) != 0);
+
+ ;
+ return 0;
+}
+_ACEOF
+rm -f conftest$ac_exeext
+if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
+ (eval $ac_link) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } && { ac_try='./conftest$ac_exeext'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; }; then
+ ac_cv_sizeof_unsigned_int=`cat conftest.val`
+else
+ echo "$as_me: program exited with status $ac_status" >&5
+echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+( exit $ac_status )
+{ { echo "$as_me:$LINENO: error: cannot compute sizeof (unsigned int), 77
+See \`config.log' for more details." >&5
+echo "$as_me: error: cannot compute sizeof (unsigned int), 77
+See \`config.log' for more details." >&2;}
+ { (exit 1); exit 1; }; }
+fi
+rm -f core *.core gmon.out bb.out conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext
+fi
+fi
+rm -f conftest.val
+else
+ ac_cv_sizeof_unsigned_int=0
+fi
+fi
+echo "$as_me:$LINENO: result: $ac_cv_sizeof_unsigned_int" >&5
+echo "${ECHO_T}$ac_cv_sizeof_unsigned_int" >&6
+cat >>confdefs.h <<_ACEOF
+#define SIZEOF_UNSIGNED_INT $ac_cv_sizeof_unsigned_int
+_ACEOF
+
+
+echo "$as_me:$LINENO: checking for unsigned long" >&5
+echo $ECHO_N "checking for unsigned long... $ECHO_C" >&6
+if test "${ac_cv_type_unsigned_long+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+ cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+$ac_includes_default
+int
+main ()
+{
+if ((unsigned long *) 0)
+ return 0;
+if (sizeof (unsigned long))
+ return 0;
+ ;
+ return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext
+if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
+ (eval $ac_compile) 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } &&
+ { ac_try='test -z "$ac_c_werror_flag"
+ || test ! -s conftest.err'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; } &&
+ { ac_try='test -s conftest.$ac_objext'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; }; then
+ ac_cv_type_unsigned_long=yes
+else
+ echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ac_cv_type_unsigned_long=no
+fi
+rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
+fi
+echo "$as_me:$LINENO: result: $ac_cv_type_unsigned_long" >&5
+echo "${ECHO_T}$ac_cv_type_unsigned_long" >&6
+
+echo "$as_me:$LINENO: checking size of unsigned long" >&5
+echo $ECHO_N "checking size of unsigned long... $ECHO_C" >&6
+if test "${ac_cv_sizeof_unsigned_long+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+ if test "$ac_cv_type_unsigned_long" = yes; then
+ # The cast to unsigned long works around a bug in the HP C Compiler
+ # version HP92453-01 B.11.11.23709.GP, which incorrectly rejects
+ # declarations like `int a3[[(sizeof (unsigned char)) >= 0]];'.
+ # This bug is HP SR number 8606223364.
+ if test "$cross_compiling" = yes; then
+ # Depending upon the size, compute the lo and hi bounds.
+cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+$ac_includes_default
+int
+main ()
+{
+static int test_array [1 - 2 * !(((long) (sizeof (unsigned long))) >= 0)];
+test_array [0] = 0
+
+ ;
+ return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext
+if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
+ (eval $ac_compile) 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } &&
+ { ac_try='test -z "$ac_c_werror_flag"
+ || test ! -s conftest.err'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; } &&
+ { ac_try='test -s conftest.$ac_objext'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; }; then
+ ac_lo=0 ac_mid=0
+ while :; do
+ cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+$ac_includes_default
+int
+main ()
+{
+static int test_array [1 - 2 * !(((long) (sizeof (unsigned long))) <= $ac_mid)];
+test_array [0] = 0
+
+ ;
+ return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext
+if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
+ (eval $ac_compile) 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } &&
+ { ac_try='test -z "$ac_c_werror_flag"
+ || test ! -s conftest.err'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; } &&
+ { ac_try='test -s conftest.$ac_objext'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; }; then
+ ac_hi=$ac_mid; break
+else
+ echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ac_lo=`expr $ac_mid + 1`
+ if test $ac_lo -le $ac_mid; then
+ ac_lo= ac_hi=
+ break
+ fi
+ ac_mid=`expr 2 '*' $ac_mid + 1`
+fi
+rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
+ done
+else
+ echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+$ac_includes_default
+int
+main ()
+{
+static int test_array [1 - 2 * !(((long) (sizeof (unsigned long))) < 0)];
+test_array [0] = 0
+
+ ;
+ return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext
+if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
+ (eval $ac_compile) 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } &&
+ { ac_try='test -z "$ac_c_werror_flag"
+ || test ! -s conftest.err'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; } &&
+ { ac_try='test -s conftest.$ac_objext'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; }; then
+ ac_hi=-1 ac_mid=-1
+ while :; do
+ cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+$ac_includes_default
+int
+main ()
+{
+static int test_array [1 - 2 * !(((long) (sizeof (unsigned long))) >= $ac_mid)];
+test_array [0] = 0
+
+ ;
+ return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext
+if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
+ (eval $ac_compile) 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } &&
+ { ac_try='test -z "$ac_c_werror_flag"
+ || test ! -s conftest.err'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; } &&
+ { ac_try='test -s conftest.$ac_objext'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; }; then
+ ac_lo=$ac_mid; break
+else
+ echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ac_hi=`expr '(' $ac_mid ')' - 1`
+ if test $ac_mid -le $ac_hi; then
+ ac_lo= ac_hi=
+ break
+ fi
+ ac_mid=`expr 2 '*' $ac_mid`
+fi
+rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
+ done
+else
+ echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ac_lo= ac_hi=
+fi
+rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
+fi
+rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
+# Binary search between lo and hi bounds.
+while test "x$ac_lo" != "x$ac_hi"; do
+ ac_mid=`expr '(' $ac_hi - $ac_lo ')' / 2 + $ac_lo`
+ cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+$ac_includes_default
+int
+main ()
+{
+static int test_array [1 - 2 * !(((long) (sizeof (unsigned long))) <= $ac_mid)];
+test_array [0] = 0
+
+ ;
+ return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext
+if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
+ (eval $ac_compile) 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } &&
+ { ac_try='test -z "$ac_c_werror_flag"
+ || test ! -s conftest.err'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; } &&
+ { ac_try='test -s conftest.$ac_objext'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; }; then
+ ac_hi=$ac_mid
+else
+ echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ac_lo=`expr '(' $ac_mid ')' + 1`
+fi
+rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
+done
+case $ac_lo in
+?*) ac_cv_sizeof_unsigned_long=$ac_lo;;
+'') { { echo "$as_me:$LINENO: error: cannot compute sizeof (unsigned long), 77
+See \`config.log' for more details." >&5
+echo "$as_me: error: cannot compute sizeof (unsigned long), 77
+See \`config.log' for more details." >&2;}
+ { (exit 1); exit 1; }; } ;;
+esac
+else
+ if test "$cross_compiling" = yes; then
+ { { echo "$as_me:$LINENO: error: cannot run test program while cross compiling
+See \`config.log' for more details." >&5
+echo "$as_me: error: cannot run test program while cross compiling
+See \`config.log' for more details." >&2;}
+ { (exit 1); exit 1; }; }
+else
+ cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+$ac_includes_default
+long longval () { return (long) (sizeof (unsigned long)); }
+unsigned long ulongval () { return (long) (sizeof (unsigned long)); }
+#include <stdio.h>
+#include <stdlib.h>
+int
+main ()
+{
+
+ FILE *f = fopen ("conftest.val", "w");
+ if (! f)
+ exit (1);
+ if (((long) (sizeof (unsigned long))) < 0)
+ {
+ long i = longval ();
+ if (i != ((long) (sizeof (unsigned long))))
+ exit (1);
+ fprintf (f, "%ld\n", i);
+ }
+ else
+ {
+ unsigned long i = ulongval ();
+ if (i != ((long) (sizeof (unsigned long))))
+ exit (1);
+ fprintf (f, "%lu\n", i);
+ }
+ exit (ferror (f) || fclose (f) != 0);
+
+ ;
+ return 0;
+}
+_ACEOF
+rm -f conftest$ac_exeext
+if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
+ (eval $ac_link) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } && { ac_try='./conftest$ac_exeext'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; }; then
+ ac_cv_sizeof_unsigned_long=`cat conftest.val`
+else
+ echo "$as_me: program exited with status $ac_status" >&5
+echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+( exit $ac_status )
+{ { echo "$as_me:$LINENO: error: cannot compute sizeof (unsigned long), 77
+See \`config.log' for more details." >&5
+echo "$as_me: error: cannot compute sizeof (unsigned long), 77
+See \`config.log' for more details." >&2;}
+ { (exit 1); exit 1; }; }
+fi
+rm -f core *.core gmon.out bb.out conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext
+fi
+fi
+rm -f conftest.val
+else
+ ac_cv_sizeof_unsigned_long=0
+fi
+fi
+echo "$as_me:$LINENO: result: $ac_cv_sizeof_unsigned_long" >&5
+echo "${ECHO_T}$ac_cv_sizeof_unsigned_long" >&6
+cat >>confdefs.h <<_ACEOF
+#define SIZEOF_UNSIGNED_LONG $ac_cv_sizeof_unsigned_long
+_ACEOF
+
+
cat >conftest.$ac_ext <<_ACEOF
/* confdefs.h. */
_ACEOF
@@ -13264,6 +9822,210 @@ sed 's/^/| /' conftest.$ac_ext >&5
fi
rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
+cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+#include <wctype.h>
+int
+main ()
+{
+
+ wint_t foo;
+ foo = 0;
+
+ ;
+ return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext
+if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
+ (eval $ac_compile) 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } &&
+ { ac_try='test -z "$ac_c_werror_flag"
+ || test ! -s conftest.err'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; } &&
+ { ac_try='test -s conftest.$ac_objext'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; }; then
+
+cat >>confdefs.h <<\_ACEOF
+#define HAVE_WINT_T 1
+_ACEOF
+
+else
+ echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+fi
+rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
+
+
+
+
+
+
+ echo "$as_me:$LINENO: checking for socklen_t" >&5
+echo $ECHO_N "checking for socklen_t... $ECHO_C" >&6
+if test "${ac_cv_type_socklen_t+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+ cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+#include <sys/types.h>
+#include <sys/socket.h>
+
+int
+main ()
+{
+if ((socklen_t *) 0)
+ return 0;
+if (sizeof (socklen_t))
+ return 0;
+ ;
+ return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext
+if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
+ (eval $ac_compile) 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } &&
+ { ac_try='test -z "$ac_c_werror_flag"
+ || test ! -s conftest.err'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; } &&
+ { ac_try='test -s conftest.$ac_objext'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; }; then
+ ac_cv_type_socklen_t=yes
+else
+ echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ac_cv_type_socklen_t=no
+fi
+rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
+fi
+echo "$as_me:$LINENO: result: $ac_cv_type_socklen_t" >&5
+echo "${ECHO_T}$ac_cv_type_socklen_t" >&6
+if test $ac_cv_type_socklen_t = yes; then
+ :
+else
+
+ echo "$as_me:$LINENO: checking for socklen_t equivalent" >&5
+echo $ECHO_N "checking for socklen_t equivalent... $ECHO_C" >&6
+ if test "${rsync_cv_socklen_t_equiv+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+
+ # Systems have either "struct sockaddr *" or
+ # "void *" as the second argument to getpeername
+ rsync_cv_socklen_t_equiv=
+ for arg2 in "struct sockaddr" void; do
+ for t in int size_t unsigned long "unsigned long"; do
+ cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+
+#include <sys/types.h>
+#include <sys/socket.h>
+
+ int getpeername (int, $arg2 *, $t *);
+
+int
+main ()
+{
+
+ $t len;
+ getpeername(0,0,&len);
+
+ ;
+ return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext
+if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
+ (eval $ac_compile) 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } &&
+ { ac_try='test -z "$ac_c_werror_flag"
+ || test ! -s conftest.err'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; } &&
+ { ac_try='test -s conftest.$ac_objext'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; }; then
+
+ rsync_cv_socklen_t_equiv="$t"
+ break
+
+else
+ echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+fi
+rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
+ done
+ done
+
+ if test "x$rsync_cv_socklen_t_equiv" = x; then
+ rsync_cv_socklen_t_equiv=int
+ fi
+
+fi
+
+ echo "$as_me:$LINENO: result: $rsync_cv_socklen_t_equiv" >&5
+echo "${ECHO_T}$rsync_cv_socklen_t_equiv" >&6
+
+cat >>confdefs.h <<_ACEOF
+#define socklen_t $rsync_cv_socklen_t_equiv
+_ACEOF
+
+fi
+
+
for ac_func in vprintf
@@ -14362,9 +11124,17 @@ fi
+
+
+
+
+
+
for ac_func in fmod getgrent getgroups grantpt iswctype mbrlen \
memcmp memcpy memmove memset setlocale snprintf strchr \
strerror strftime strncasecmp strtod strtoul system tzset \
+ isascii btowc \
+ iswlower iswupper towlower towupper \
wcrtomb wcscoll wcscoll wctype
do
as_ac_var=`echo "ac_cv_func_$ac_func" | $as_tr_sh`
@@ -14841,12 +11611,7 @@ esac
echo "$as_me:$LINENO: checking for printf %F format" >&5
echo $ECHO_N "checking for printf %F format... $ECHO_C" >&6
if test "$cross_compiling" = yes; then
-
-cat >>confdefs.h <<\_ACEOF
-#define PRINTF_HAS_F_FORMAT 0
-_ACEOF
-
-
+ has_f_format=no
else
cat >conftest.$ac_ext <<_ACEOF
@@ -14876,24 +11641,26 @@ if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
ac_status=$?
echo "$as_me:$LINENO: \$? = $ac_status" >&5
(exit $ac_status); }; }; then
-
-cat >>confdefs.h <<\_ACEOF
-#define PRINTF_HAS_F_FORMAT 1
-_ACEOF
-
- echo "$as_me:$LINENO: result: yes" >&5
-echo "${ECHO_T}yes" >&6
+ has_f_format=yes
else
echo "$as_me: program exited with status $ac_status" >&5
echo "$as_me: failed program was:" >&5
sed 's/^/| /' conftest.$ac_ext >&5
( exit $ac_status )
- echo "$as_me:$LINENO: result: no" >&5
-echo "${ECHO_T}no" >&6
+has_f_format=no
fi
rm -f core *.core gmon.out bb.out conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext
fi
+if test "$has_f_format" = yes; then
+
+cat >>confdefs.h <<\_ACEOF
+#define PRINTF_HAS_F_FORMAT 1
+_ACEOF
+
+fi
+echo "$as_me:$LINENO: result: $has_f_format" >&5
+echo "${ECHO_T}$has_f_format" >&6
gawk_have_sockets=no
@@ -15879,6 +12646,70 @@ _ACEOF
fi
+echo "$as_me:$LINENO: checking for C/C++ restrict keyword" >&5
+echo $ECHO_N "checking for C/C++ restrict keyword... $ECHO_C" >&6
+if test "${ac_cv_c_restrict+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+ ac_cv_c_restrict=no
+ # Try the official restrict keyword, then gcc's __restrict, and
+ # the less common variants.
+ for ac_kw in restrict __restrict __restrict__ _Restrict; do
+ cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+float * $ac_kw x;
+_ACEOF
+rm -f conftest.$ac_objext
+if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
+ (eval $ac_compile) 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } &&
+ { ac_try='test -z "$ac_c_werror_flag"
+ || test ! -s conftest.err'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; } &&
+ { ac_try='test -s conftest.$ac_objext'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; }; then
+ ac_cv_c_restrict=$ac_kw; break
+else
+ echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+fi
+rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
+ done
+
+fi
+echo "$as_me:$LINENO: result: $ac_cv_c_restrict" >&5
+echo "${ECHO_T}$ac_cv_c_restrict" >&6
+ case $ac_cv_c_restrict in
+ restrict) ;;
+ no)
+cat >>confdefs.h <<\_ACEOF
+#define restrict
+_ACEOF
+ ;;
+ *) cat >>confdefs.h <<_ACEOF
+#define restrict $ac_cv_c_restrict
+_ACEOF
+ ;;
+ esac
+
echo "$as_me:$LINENO: checking for inline" >&5
echo $ECHO_N "checking for inline... $ECHO_C" >&6
if test "${ac_cv_c_inline+set}" = set; then
@@ -15987,7 +12818,18 @@ fi
ac_config_headers="$ac_config_headers config.h:configh.in"
- ac_config_files="$ac_config_files Makefile awklib/Makefile doc/Makefile intl/Makefile po/Makefile.in test/Makefile version.c:version.in"
+
+
+
+ ac_config_files="$ac_config_files Makefile awklib/Makefile doc/Makefile po/Makefile.in test/Makefile version.c:version.in"
+
+
+
+
+
+
+
+
cat >confcache <<\_ACEOF
# This file is a shell script that caches the results of configure
@@ -16372,7 +13214,7 @@ _ASBOX
} >&5
cat >&5 <<_CSEOF
-This file was extended by GNU Awk $as_me 3.1.4, which was
+This file was extended by GNU Awk $as_me 3.1.5, which was
generated by GNU Autoconf 2.59. Invocation command line was
CONFIG_FILES = $CONFIG_FILES
@@ -16435,7 +13277,7 @@ _ACEOF
cat >>$CONFIG_STATUS <<_ACEOF
ac_cs_version="\\
-GNU Awk config.status 3.1.4
+GNU Awk config.status 3.1.5
configured by $0, generated by GNU Autoconf 2.59,
with options \\"`echo "$ac_configure_args" | sed 's/[\\""\`\$]/\\\\&/g'`\\"
@@ -16555,7 +13397,6 @@ do
"Makefile" ) CONFIG_FILES="$CONFIG_FILES Makefile" ;;
"awklib/Makefile" ) CONFIG_FILES="$CONFIG_FILES awklib/Makefile" ;;
"doc/Makefile" ) CONFIG_FILES="$CONFIG_FILES doc/Makefile" ;;
- "intl/Makefile" ) CONFIG_FILES="$CONFIG_FILES intl/Makefile" ;;
"po/Makefile.in" ) CONFIG_FILES="$CONFIG_FILES po/Makefile.in" ;;
"test/Makefile" ) CONFIG_FILES="$CONFIG_FILES test/Makefile" ;;
"version.c" ) CONFIG_FILES="$CONFIG_FILES version.c:version.in" ;;
@@ -16658,7 +13499,6 @@ s,@AUTOCONF@,$AUTOCONF,;t t
s,@AUTOMAKE@,$AUTOMAKE,;t t
s,@AUTOHEADER@,$AUTOHEADER,;t t
s,@MAKEINFO@,$MAKEINFO,;t t
-s,@AMTAR@,$AMTAR,;t t
s,@install_sh@,$install_sh,;t t
s,@STRIP@,$STRIP,;t t
s,@ac_ct_STRIP@,$ac_ct_STRIP,;t t
@@ -16667,6 +13507,9 @@ s,@mkdir_p@,$mkdir_p,;t t
s,@AWK@,$AWK,;t t
s,@SET_MAKE@,$SET_MAKE,;t t
s,@am__leading_dot@,$am__leading_dot,;t t
+s,@AMTAR@,$AMTAR,;t t
+s,@am__tar@,$am__tar,;t t
+s,@am__untar@,$am__untar,;t t
s,@EGREP@,$EGREP,;t t
s,@YACC@,$YACC,;t t
s,@LN_S@,$LN_S,;t t
@@ -16705,23 +13548,9 @@ s,@host@,$host,;t t
s,@host_cpu@,$host_cpu,;t t
s,@host_vendor@,$host_vendor,;t t
s,@host_os@,$host_os,;t t
-s,@ALLOCA@,$ALLOCA,;t t
-s,@GLIBC21@,$GLIBC21,;t t
-s,@HAVE_POSIX_PRINTF@,$HAVE_POSIX_PRINTF,;t t
-s,@HAVE_ASPRINTF@,$HAVE_ASPRINTF,;t t
-s,@HAVE_SNPRINTF@,$HAVE_SNPRINTF,;t t
-s,@HAVE_WPRINTF@,$HAVE_WPRINTF,;t t
+s,@INTL_MACOSX_LIBS@,$INTL_MACOSX_LIBS,;t t
s,@LIBICONV@,$LIBICONV,;t t
s,@LTLIBICONV@,$LTLIBICONV,;t t
-s,@INTLBISON@,$INTLBISON,;t t
-s,@BUILD_INCLUDED_LIBINTL@,$BUILD_INCLUDED_LIBINTL,;t t
-s,@USE_INCLUDED_LIBINTL@,$USE_INCLUDED_LIBINTL,;t t
-s,@CATOBJEXT@,$CATOBJEXT,;t t
-s,@DATADIRNAME@,$DATADIRNAME,;t t
-s,@INSTOBJEXT@,$INSTOBJEXT,;t t
-s,@GENCAT@,$GENCAT,;t t
-s,@INTLOBJS@,$INTLOBJS,;t t
-s,@INTL_LIBTOOL_SUFFIX_PREFIX@,$INTL_LIBTOOL_SUFFIX_PREFIX,;t t
s,@INTLLIBS@,$INTLLIBS,;t t
s,@LIBINTL@,$LIBINTL,;t t
s,@LTLIBINTL@,$LTLIBINTL,;t t
@@ -17210,10 +14039,6 @@ echo X$ac_file |
/^X\(\/\/\)$/{ s//\1/; q; }
/^X\(\/\).*/{ s//\1/; q; }
s/.*/./; q'`/stamp-h$_am_stamp_count
- # Run the commands associated with the file.
- case $ac_file in
- config.h ) cat $srcdir/custom.h >> config.h ;;
- esac
done
_ACEOF
cat >>$CONFIG_STATUS <<\_ACEOF
@@ -17355,27 +14180,21 @@ echo X"$mf" |
else
continue
fi
- grep '^DEP_FILES *= *[^ #]' < "$mf" > /dev/null || continue
- # Extract the definition of DEP_FILES from the Makefile without
- # running `make'.
+ # Extract the definition of DEPDIR, am__include, and am__quote
+ # from the Makefile without running `make'.
DEPDIR=`sed -n 's/^DEPDIR = //p' < "$mf"`
test -z "$DEPDIR" && continue
+ am__include=`sed -n 's/^am__include = //p' < "$mf"`
+ test -z "am__include" && continue
+ am__quote=`sed -n 's/^am__quote = //p' < "$mf"`
# When using ansi2knr, U may be empty or an underscore; expand it
U=`sed -n 's/^U = //p' < "$mf"`
- test -d "$dirpart/$DEPDIR" || mkdir "$dirpart/$DEPDIR"
- # We invoke sed twice because it is the simplest approach to
- # changing $(DEPDIR) to its actual value in the expansion.
- for file in `sed -n '
- /^DEP_FILES = .*\\\\$/ {
- s/^DEP_FILES = //
- :loop
- s/\\\\$//
- p
- n
- /\\\\$/ b loop
- p
- }
- /^DEP_FILES = / s/^DEP_FILES = //p' < "$mf" | \
+ # Find all dependency output files, they are included files with
+ # $(DEPDIR) in their names. We invoke sed twice because it is the
+ # simplest approach to changing $(DEPDIR) to its actual value in the
+ # expansion.
+ for file in `sed -n "
+ s/^$am__include $am__quote\(.*(DEPDIR).*\)$am__quote"'$/\1/p' <"$mf" | \
sed -e 's/\$(DEPDIR)/'"$DEPDIR"'/g' -e 's/\$U/'"$U"'/g'`; do
# Make sure the directory exists.
test -f "$dirpart/$file" && continue
@@ -17441,6 +14260,9 @@ done
/*) top_srcdir="$ac_given_srcdir" ;;
*) top_srcdir="$ac_dots$ac_given_srcdir" ;;
esac
+ # Treat a directory as a PO directory if and only if it has a
+ # POTFILES.in file. This allows packages to have multiple PO
+ # directories under different names or in different locations.
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"
@@ -17454,7 +14276,7 @@ done
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"`
+ ALL_LINGUAS_=`sed -e "/^#/d" -e "s/#.*//" "$ac_given_srcdir/$ac_dir/LINGUAS"`
# Hide the ALL_LINGUAS assigment from automake.
eval 'ALL_LINGUAS''=$ALL_LINGUAS_'
POMAKEFILEDEPS="$POMAKEFILEDEPS LINGUAS"
@@ -17541,6 +14363,12 @@ _ACEOF
chmod +x $CONFIG_STATUS
ac_clean_files=$ac_clean_files_save
+sed '$i\
+ echo $as_me: fixing Makefile to keep version.c\
+ sed "/CONFIG_CLEAN_FILES/s/version.c//" < Makefile > $$.Makefile\
+ mv $$.Makefile Makefile
+ ' < $CONFIG_STATUS > $$.gawk-hack
+ mv $$.gawk-hack $CONFIG_STATUS
# configure is writing to config.log, and then calls config.status.
# config.status does its own redirection, appending to config.log.
@@ -17563,9 +14391,3 @@ if test "$no_create" != yes; then
$ac_cs_success || { (exit 1); exit 1; }
fi
-
-# This is a significant and rather ugly hack. We want to keep
-# version.c from being removed upon `make distclean'.
-# We put the `$$' on the front for old systems with 14-char filenames.
-sed '/CONFIG_CLEAN_FILES/s/version.c//' < Makefile > $$.Makefile
-mv $$.Makefile Makefile
diff --git a/configure.ac b/configure.ac
index c5ef7e5a..ee5a487c 100644
--- a/configure.ac
+++ b/configure.ac
@@ -1,7 +1,7 @@
dnl
dnl configure.ac --- autoconf input file for gawk
dnl
-dnl Copyright (C) 1995-2004 the Free Software Foundation, Inc.
+dnl Copyright (C) 1995-2005 the Free Software Foundation, Inc.
dnl
dnl This file is part of GAWK, the GNU implementation of the
dnl AWK Programming Language.
@@ -18,12 +18,12 @@ dnl GNU General Public License for more details.
dnl
dnl You should have received a copy of the GNU General Public License
dnl along with this program; if not, write to the Free Software
-dnl Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA
+dnl Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA
dnl
dnl Process this file with autoconf to produce a configure script.
-AC_INIT([GNU Awk], 3.1.4, bug-gawk@gnu.org, gawk)
+AC_INIT([GNU Awk], 3.1.5, bug-gawk@gnu.org, gawk)
# This is a hack. Different versions of install on different systems
# are just too different. Chuck it and use install-sh.
@@ -138,8 +138,8 @@ case `(uname) 2> /dev/null` in
esac
dnl initialize GNU gettext
-AM_GNU_GETTEXT([no-libtool], [need-ngettext])
-AM_GNU_GETTEXT_VERSION(0.14.1)
+AM_GNU_GETTEXT([external])
+AM_GNU_GETTEXT_VERSION([0.14.4])
dnl checks for header files
AC_HEADER_STDC
@@ -162,11 +162,13 @@ AC_TYPE_PID_T
AC_TYPE_SIGNAL
AC_SIZE_T
AC_TYPE_GETGROUPS
-jm_AC_TYPE_LONG_LONG
-jm_AC_TYPE_UNSIGNED_LONG_LONG
-jm_AC_TYPE_INTMAX_T
-jm_AC_TYPE_UINTMAX_T
+gl_AC_TYPE_LONG_LONG
+gl_AC_TYPE_UNSIGNED_LONG_LONG
+gl_AC_TYPE_INTMAX_T
+gl_AC_TYPE_UINTMAX_T
AC_CHECK_TYPE(ssize_t, int)
+AC_CHECK_SIZEOF(unsigned int)
+AC_CHECK_SIZEOF(unsigned long)
AC_EGREP_HEADER([int.*sprintf], stdio.h,
AC_DEFINE(SPRINTF_RET, int, [return type of sprintf]),
AC_DEFINE(SPRINTF_RET, char *))
@@ -183,6 +185,62 @@ AC_TRY_COMPILE([#include <wctype.h>],[
foo = 0;
],
AC_DEFINE(HAVE_WCTYPE_T, 1, [systems should define this type here]))
+dnl check for wint_t in <wctype.h>
+AC_TRY_COMPILE([#include <wctype.h>],[
+ wint_t foo;
+ foo = 0;
+],
+ AC_DEFINE(HAVE_WINT_T, 1, [systems should define this type here]))
+
+dnl Borrwed from rsync, thanks to to Jim Meyering.
+
+dnl Check for socklen_t: historically on BSD it is an int, and in
+dnl POSIX 1g it is a type of its own, but some platforms use different
+dnl types for the argument to getsockopt, getpeername, etc. So we
+dnl have to test to find something that will work.
+
+dnl This is no good, because passing the wrong pointer on C compilers is
+dnl likely to only generate a warning, not an error.
+
+AC_DEFUN([TYPE_SOCKLEN_T],
+[
+ AC_CHECK_TYPE([socklen_t], ,[
+ AC_MSG_CHECKING([for socklen_t equivalent])
+ AC_CACHE_VAL([rsync_cv_socklen_t_equiv],
+ [
+ # Systems have either "struct sockaddr *" or
+ # "void *" as the second argument to getpeername
+ rsync_cv_socklen_t_equiv=
+ for arg2 in "struct sockaddr" void; do
+ for t in int size_t unsigned long "unsigned long"; do
+ AC_TRY_COMPILE([
+#include <sys/types.h>
+#include <sys/socket.h>
+
+ int getpeername (int, $arg2 *, $t *);
+ ],[
+ $t len;
+ getpeername(0,0,&len);
+ ],[
+ rsync_cv_socklen_t_equiv="$t"
+ break
+ ])
+ done
+ done
+
+ if test "x$rsync_cv_socklen_t_equiv" = x; then
+dnl Some systems get this. Default to int. -- ADR
+dnl AC_MSG_ERROR([Cannot find a type to use in place of socklen_t])
+ rsync_cv_socklen_t_equiv=int
+ fi
+ ])
+ AC_MSG_RESULT($rsync_cv_socklen_t_equiv)
+ AC_DEFINE_UNQUOTED(socklen_t, $rsync_cv_socklen_t_equiv,
+ [type to use in place of socklen_t if not defined])],
+ [#include <sys/types.h>
+#include <sys/socket.h>])
+])
+TYPE_SOCKLEN_T
dnl checks for functions
AC_FUNC_VPRINTF
@@ -197,8 +255,10 @@ AC_CHECK_LIB(m, fmod)
AC_CHECK_FUNCS(fmod getgrent getgroups grantpt iswctype mbrlen \
memcmp memcpy memmove memset setlocale snprintf strchr \
strerror strftime strncasecmp strtod strtoul system tzset \
+ isascii btowc \
+ iswlower iswupper towlower towupper \
wcrtomb wcscoll wcscoll wctype)
-dnl this check for both mbrtowc and the mbstate_t type, which is good
+dnl this check is for both mbrtowc and the mbstate_t type, which is good
AC_FUNC_MBRTOWC
dnl check for dynamic linking
@@ -249,14 +309,14 @@ int main()
return 1;
}
],
-dnl action if true:
- AC_DEFINE(PRINTF_HAS_F_FORMAT, 1, [Define to 1 if *printf supports %F format])
- AC_MSG_RESULT([yes]),
-dnl action if false:
- AC_MSG_RESULT([no]),
-dnl action if cross-compiling, assume the worst:
- AC_DEFINE(PRINTF_HAS_F_FORMAT, 0, [Define to 1 if *printf supports %F format])
+ has_f_format=yes,
+ has_f_format=no,
+ has_f_format=no dnl Cross-compiling, assuming the worst.
)
+if test "$has_f_format" = yes; then
+ AC_DEFINE(PRINTF_HAS_F_FORMAT, 1, [Define to 1 if *printf supports %F format])
+fi
+AC_MSG_RESULT($has_f_format)
dnl check for sockets
GAWK_AC_LIB_SOCKETS
@@ -270,21 +330,41 @@ AC_STRUCT_TIMEZONE
dnl checks for compiler characteristics
AC_C_CHAR_UNSIGNED
AC_C_CONST
+AC_C_RESTRICT
AC_C_INLINE
AC_C_STRINGIZE
-AC_CONFIG_HEADERS([config.h:configh.in], [cat $srcdir/custom.h >> config.h])
-AC_CONFIG_FILES(Makefile \
- awklib/Makefile \
- doc/Makefile \
- intl/Makefile \
- po/Makefile.in \
- test/Makefile \
+AC_CONFIG_HEADERS([config.h:configh.in])
+AH_BOTTOM([#include "custom.h"])
+
+AC_CONFIG_FILES(Makefile
+ awklib/Makefile
+ doc/Makefile
+ po/Makefile.in
+ test/Makefile
[version.c:version.in])
-AC_OUTPUT
-# This is a significant and rather ugly hack. We want to keep
-# version.c from being removed upon `make distclean'.
-# We put the `$$' on the front for old systems with 14-char filenames.
-sed '/CONFIG_CLEAN_FILES/s/version.c//' < Makefile > $$.Makefile
-mv $$.Makefile Makefile
+dnl This is a significant and rather ugly hack. We want to keep
+dnl version.c from being removed upon `make distclean'.
+dnl We put the `$$' on the front for old systems with 14-char filenames.
+
+dnl At this point, `configure' has finished creating `config.status' which
+dnl actually does all the checking and configuring. `config.status' is run
+dnl by the AC_OUTPUT macro below. This step comes in between the two: it
+dnl adds code to `config.status'. Doing it there ensures that this step
+dnl happens *every* time `config.status' is run, such as when `make' decides
+dnl to update something. Fun, fun, fun.
+
+dnl Be careful of multiple levels of shell quoting!
+
+dnl The trailing newline in the sed command is needed for Mac OS X. Sigh.
+
+AC_CONFIG_COMMANDS_POST([sed '$i\
+ echo $as_me: fixing Makefile to keep version.c\
+ sed "/CONFIG_CLEAN_FILES/s/version.c//" < Makefile > $$.Makefile\
+ mv $$.Makefile Makefile
+ ' < $CONFIG_STATUS > $$.gawk-hack
+ mv $$.gawk-hack $CONFIG_STATUS])
+
+
+AC_OUTPUT
diff --git a/custom.h b/custom.h
index 598b3c6a..6411f80d 100644
--- a/custom.h
+++ b/custom.h
@@ -28,7 +28,7 @@
*
* 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
+ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA
*/
/* for MIPS RiscOS, from Nelson H. F. Beebe, beebe@math.utah.edu */
diff --git a/depcomp b/depcomp
index 25bdb188..fc834192 100755
--- a/depcomp
+++ b/depcomp
@@ -1,9 +1,9 @@
#! /bin/sh
# depcomp - compile a program generating dependencies as side-effects
-scriptversion=2004-04-25.13
+scriptversion=2005-02-09.22
-# Copyright (C) 1999, 2000, 2003, 2004 Free Software Foundation, Inc.
+# Copyright (C) 1999, 2000, 2003, 2004, 2005 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
@@ -17,8 +17,8 @@ scriptversion=2004-04-25.13
# 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.
+# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+# 02110-1301, USA.
# As a special exception to the GNU General Public License, if you
# distribute this file as part of a program that contains a
@@ -43,17 +43,18 @@ Environment variables:
depmode Dependency tracking mode.
source Source file read by `PROGRAMS ARGS'.
object Object file output by `PROGRAMS ARGS'.
+ DEPDIR directory where to store dependencies.
depfile Dependency file to output.
tmpdepfile Temporary file to use when outputing dependencies.
libtool Whether libtool is used (yes/no).
Report bugs to <bug-automake@gnu.org>.
EOF
- exit 0
+ exit $?
;;
-v | --v*)
echo "depcomp $scriptversion"
- exit 0
+ exit $?
;;
esac
@@ -61,18 +62,10 @@ if test -z "$depmode" || test -z "$source" || test -z "$object"; then
echo "depcomp: Variables source, object and depmode must be set" 1>&2
exit 1
fi
-# `libtool' can also be set to `yes' or `no'.
-
-if test -z "$depfile"; then
- base=`echo "$object" | sed -e 's,^.*/,,' -e 's,\.\([^.]*\)$,.P\1,'`
- dir=`echo "$object" | sed 's,/.*$,/,'`
- if test "$dir" = "$object"; then
- dir=
- fi
- # FIXME: should be _deps on DOS.
- depfile="$dir.deps/$base"
-fi
+# Dependencies for sub/bar.o or sub/bar.obj go into sub/.deps/bar.Po.
+depfile=${depfile-`echo "$object" |
+ sed 's|[^\\/]*$|'${DEPDIR-.deps}'/&|;s|\.\([^.]*\)$|.P\1|;s|Pobj$|Po|'`}
tmpdepfile=${tmpdepfile-`echo "$depfile" | sed 's/\.\([^.]*\)$/.T\1/'`}
rm -f "$tmpdepfile"
@@ -294,33 +287,43 @@ tru64)
base=`echo "$object" | sed -e 's|^.*/||' -e 's/\.o$//' -e 's/\.lo$//'`
if test "$libtool" = yes; then
- # Dependencies are output in .lo.d with libtool 1.4.
- # They are output in .o.d with libtool 1.5.
- tmpdepfile1="$dir.libs/$base.lo.d"
- tmpdepfile2="$dir.libs/$base.o.d"
- tmpdepfile3="$dir.libs/$base.d"
+ # With Tru64 cc, shared objects can also be used to make a
+ # static library. This mecanism is used in libtool 1.4 series to
+ # handle both shared and static libraries in a single compilation.
+ # With libtool 1.4, dependencies were output in $dir.libs/$base.lo.d.
+ #
+ # With libtool 1.5 this exception was removed, and libtool now
+ # generates 2 separate objects for the 2 libraries. These two
+ # compilations output dependencies in in $dir.libs/$base.o.d and
+ # in $dir$base.o.d. We have to check for both files, because
+ # one of the two compilations can be disabled. We should prefer
+ # $dir$base.o.d over $dir.libs/$base.o.d because the latter is
+ # automatically cleaned when .libs/ is deleted, while ignoring
+ # the former would cause a distcleancheck panic.
+ tmpdepfile1=$dir.libs/$base.lo.d # libtool 1.4
+ tmpdepfile2=$dir$base.o.d # libtool 1.5
+ tmpdepfile3=$dir.libs/$base.o.d # libtool 1.5
+ tmpdepfile4=$dir.libs/$base.d # Compaq CCC V6.2-504
"$@" -Wc,-MD
else
- tmpdepfile1="$dir$base.o.d"
- tmpdepfile2="$dir$base.d"
- tmpdepfile3="$dir$base.d"
+ tmpdepfile1=$dir$base.o.d
+ tmpdepfile2=$dir$base.d
+ tmpdepfile3=$dir$base.d
+ tmpdepfile4=$dir$base.d
"$@" -MD
fi
stat=$?
if test $stat -eq 0; then :
else
- rm -f "$tmpdepfile1" "$tmpdepfile2" "$tmpdepfile3"
+ rm -f "$tmpdepfile1" "$tmpdepfile2" "$tmpdepfile3" "$tmpdepfile4"
exit $stat
fi
- if test -f "$tmpdepfile1"; then
- tmpdepfile="$tmpdepfile1"
- elif test -f "$tmpdepfile2"; then
- tmpdepfile="$tmpdepfile2"
- else
- tmpdepfile="$tmpdepfile3"
- fi
+ for tmpdepfile in "$tmpdepfile1" "$tmpdepfile2" "$tmpdepfile3" "$tmpdepfile4"
+ do
+ test -f "$tmpdepfile" && break
+ done
if test -f "$tmpdepfile"; then
sed -e "s,^.*\.[a-z]*:,$object:," < "$tmpdepfile" > "$depfile"
# That's a tab and a space in the [].
diff --git a/dfa.c b/dfa.c
index f9ccb25b..71e37369 100644
--- a/dfa.c
+++ b/dfa.c
@@ -1,5 +1,5 @@
/* dfa.c - deterministic extended regexp routines for GNU
- Copyright 1988, 1998, 2000, 2002, 2004 Free Software Foundation, Inc.
+ Copyright 1988, 1998, 2000, 2002, 2004, 2005 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
@@ -13,7 +13,7 @@
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 */
+ Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA */
/* Written June, 1988 by Mike Haertel
Modified July, 1988 by Arthur David Olson to assist BMG speedups */
@@ -48,13 +48,6 @@ extern void free();
# include <locale.h>
#endif
-#include "mbsupport.h" /* defined MBS_SUPPORT if appropriate */
-
-#ifdef MBS_SUPPORT
-# include <wchar.h>
-# include <wctype.h>
-#endif
-
#ifndef DEBUG /* use the same approach as regex.c */
#undef assert
@@ -101,26 +94,22 @@ extern void free();
host does not conform to Posix. */
#define ISASCIIDIGIT(c) ((unsigned) (c) - '0' <= 9)
-/* Don't use gettext if ENABLE_NLS is not defined */
-/* If we (don't) have I18N. */
-/* glibc defines _ */
-#ifdef ENABLE_NLS
-# ifndef _
-# ifdef HAVE_LIBINTL_H
-# include <libintl.h>
-# ifndef _
-# define _(Str) gettext (Str)
-# endif
-# else
-# define _(Str) (Str)
-# endif
-# endif
-#else
-# define _(Str) (Str)
+/* gettext.h ensures that we don't use gettext if ENABLE_NLS is not defined */
+#include "gettext.h"
+#define _(str) gettext (str)
+
+#ifndef NO_MBSUPPORT
+#include "mbsupport.h" /* defines MBS_SUPPORT if appropriate */
+#endif
+#ifdef MBS_SUPPORT
+/* We can handle multibyte strings. */
+# include <wchar.h>
+# include <wctype.h>
#endif
#include "regex.h"
#include "dfa.h"
+#include "hard-locale.h"
/* HPUX, define those as macros in sys/param.h */
#ifdef setbit
@@ -172,7 +161,6 @@ static char **enlist PARAMS ((char **cpp, char *new, size_t len));
static char **comsubs PARAMS ((char *left, char *right));
static char **addlists PARAMS ((char **old, char **new));
static char **inboth PARAMS ((char **left, char **right));
-static int hard_locale PARAMS ((int category));
static ptr_t
xcalloc (size_t n, size_t s)
@@ -383,7 +371,7 @@ static int cur_mb_len; /* Byte length of the current scanning
static int cur_mb_index; /* Byte index of the current scanning multibyte
character.
- singlebyte character : cur_mb_index = 0
+ single byte character : cur_mb_index = 0
multibyte character
1st byte : cur_mb_index = 1
2nd byte : cur_mb_index = 2
@@ -394,7 +382,7 @@ static unsigned char *mblen_buf;/* Correspond to the input buffer in dfaexec().
byte of corresponding multibyte character
in the input string. A element's value
is 0 if corresponding character is a
- singlebyte chracter.
+ single byte chracter.
e.g. input : 'a', <mb(0)>, <mb(1)>, <mb(2)>
mblen_buf : 0, 3, 2, 1
*/
@@ -405,9 +393,8 @@ static wchar_t *inputwcs; /* Wide character representation of input
inputstring[i] is a single-byte char,
or 1st byte of a multibyte char.
And inputwcs[i] is the codepoint. */
-static unsigned char const *buf_begin;/* refference to begin in dfaexec(). */
-static unsigned char const *buf_end; /* refference to end in dfaexec(). */
-static unsigned long buf_offset; /* Go fast. */
+static unsigned char const *buf_begin; /* reference to begin in dfaexec(). */
+static unsigned char const *buf_end; /* reference to end in dfaexec(). */
#endif /* MBS_SUPPORT */
#ifdef MBS_SUPPORT
@@ -433,10 +420,10 @@ update_mb_len_index (unsigned char const *p, int len)
cur_mb_len was already set by mbrlen(). */
cur_mb_index = 1;
else if (cur_mb_len < 1)
- /* Invalid sequence. We treat it as a singlebyte character.
+ /* Invalid sequence. We treat it as a single byte character.
cur_mb_index is aleady 0. */
cur_mb_len = 1;
- /* Otherwise, cur_mb_len == 1, it is a singlebyte character.
+ /* Otherwise, cur_mb_len == 1, it is a single byte character.
cur_mb_index is aleady 0. */
}
}
@@ -529,8 +516,8 @@ parse_bracket_exp_mb ()
work_mbc->nchars = work_mbc->nranges = work_mbc->nch_classes = 0;
work_mbc->nequivs = work_mbc->ncoll_elems = 0;
- work_mbc->ch_classes = NULL;
work_mbc->chars = NULL;
+ work_mbc->ch_classes = NULL;
work_mbc->range_sts = work_mbc->range_ends = NULL;
work_mbc->equivs = work_mbc->coll_elems = NULL;
@@ -596,6 +583,9 @@ parse_bracket_exp_mb ()
{
wctype_t wt;
/* Query the character class as wctype_t. */
+ if (case_fold && (strcmp(str, "upper") == 0 || strcmp(str, "lower") == 0))
+ strcpy(str, "alpha");
+
wt = wctype (str);
if (ch_classes_al == 0)
@@ -634,7 +624,7 @@ parse_bracket_exp_mb ()
work_mbc->coll_elems[work_mbc->ncoll_elems++] = elem;
}
}
- wc = WEOF;
+ wc = wc1 = WEOF;
}
else
/* We treat '[' as a normal character here. */
@@ -682,6 +672,28 @@ parse_bracket_exp_mb ()
REALLOC_IF_NECESSARY(work_mbc->range_ends, wchar_t,
range_ends_al, work_mbc->nranges + 1);
work_mbc->range_ends[work_mbc->nranges++] = (wchar_t)wc2;
+ if (case_fold && (iswlower((wint_t)wc) || iswupper((wint_t)wc))
+ && (iswlower((wint_t)wc2) || iswupper((wint_t)wc2)))
+ {
+ wint_t altcase;
+ altcase = wc;
+ if (iswlower((wint_t)wc))
+ altcase = towupper((wint_t)wc);
+ else
+ altcase = towlower((wint_t)wc);
+ REALLOC_IF_NECESSARY(work_mbc->range_sts, wchar_t,
+ range_sts_al, work_mbc->nranges + 1);
+ work_mbc->range_sts[work_mbc->nranges] = (wchar_t)altcase;
+
+ altcase = wc2;
+ if (iswlower((wint_t)wc2))
+ altcase = towupper((wint_t)wc2);
+ else
+ altcase = towlower((wint_t)wc2);
+ REALLOC_IF_NECESSARY(work_mbc->range_ends, wchar_t,
+ range_ends_al, work_mbc->nranges + 1);
+ work_mbc->range_ends[work_mbc->nranges++] = (wchar_t)altcase;
+ }
}
else if (wc != WEOF)
/* build normal characters. */
@@ -689,19 +701,12 @@ parse_bracket_exp_mb ()
REALLOC_IF_NECESSARY(work_mbc->chars, wchar_t, chars_al,
work_mbc->nchars + 1);
work_mbc->chars[work_mbc->nchars++] = (wchar_t)wc;
- if (case_fold && (iswlower((wint_t) wc) || iswupper((wint_t) wc)))
+ if (case_fold && (iswlower(wc) || iswupper(wc)))
{
- wint_t altcase;
-
- altcase = wc; /* keeps compiler happy */
- if (iswlower((wint_t) wc))
- altcase = towupper((wint_t) wc);
- else if (iswupper((wint_t) wc))
- altcase = towlower((wint_t) wc);
-
- REALLOC_IF_NECESSARY(work_mbc->chars, wchar_t, chars_al,
- work_mbc->nchars + 1);
- work_mbc->chars[work_mbc->nchars++] = (wchar_t) altcase;
+ REALLOC_IF_NECESSARY(work_mbc->chars, wchar_t, chars_al,
+ work_mbc->nchars + 1);
+ work_mbc->chars[work_mbc->nchars++] =
+ (wchar_t) (iswlower(wc) ? towupper(wc) : towlower(wc));
}
}
}
@@ -1063,14 +1068,14 @@ lex (void)
case '[':
if (backslash)
goto normal_char;
- laststart = 0;
+ laststart = 0;
#ifdef MBS_SUPPORT
if (MB_CUR_MAX > 1)
{
/* In multibyte environment a bracket expression may contain
multibyte characters, which must be treated as characters
(not bytes). So we parse it by parse_bracket_exp_mb(). */
- parse_bracket_exp_mb();
+ parse_bracket_exp_mb();
return lasttok = MBCSET;
}
#endif
@@ -1129,17 +1134,15 @@ lex (void)
setbit_case_fold (c, ccl);
} else {
/* POSIX locales are painful - leave the decision to libc */
- /* char expr[6] = { '[', c, '-', c2, ']', '\0' }; */
regex_t re;
- char expr[6];
+ char expr[6]; /* = { '[', c, '-', c2, ']', '\0' }; */
expr[0] = '['; expr[1] = c; expr[2] = '-';
expr[3] = c2; expr[4] = ']'; expr[5] = '\0';
if (regcomp (&re, expr, case_fold ? REG_ICASE : 0) == REG_NOERROR) {
for (c = 0; c < NOTCHAR; ++c) {
- /* char buf[2] = { c, '\0' }; */
regmatch_t mat;
- char buf[2];
+ char buf[2]; /* = { c, '\0' }; */
buf[0] = c; buf[1] = '\0';
if (regexec (&re, buf, 1, &mat, 0) == REG_NOERROR
@@ -1176,7 +1179,7 @@ lex (void)
setbit_case_fold (c, ccl);
return lasttok = CSET + charclass_index(ccl);
}
- return c;
+ return lasttok = c;
}
}
@@ -1207,16 +1210,16 @@ addtok (token t)
dfa->tindex);
/* Set dfa->multibyte_prop. See struct dfa in dfa.h. */
if (t == MBCSET)
- dfa->multibyte_prop[dfa->tindex] = ((dfa->nmbcsets - 1) << 2) + 3;
+ dfa->multibyte_prop[dfa->tindex] = ((dfa->nmbcsets - 1) << 2) + 3;
else if (t < NOTCHAR)
dfa->multibyte_prop[dfa->tindex]
= (cur_mb_len == 1)? 3 /* single-byte char */
: (((cur_mb_index == 1)? 1 : 0) /* 1st-byte of multibyte char */
+ ((cur_mb_index == cur_mb_len)? 2 : 0)); /* last-byte */
else
- /* It may be unnecessary, but it is safer to treat other
+ /* It may be unnecessary, but it is safer to treat other
symbols as single byte characters. */
- dfa->multibyte_prop[dfa->tindex] = 3;
+ dfa->multibyte_prop[dfa->tindex] = 3;
}
#endif
@@ -1309,7 +1312,7 @@ atom (void)
addtok(tok);
addtok(CAT);
tok = lex();
- }
+ }
}
#endif /* MBS_SUPPORT */
}
@@ -1446,7 +1449,7 @@ dfaparse (char const *s, size_t len, struct dfa *d)
lasttok = END;
laststart = 1;
parens = 0;
-#if ENABLE_NLS
+#ifdef LC_COLLATE
hard_LC_COLLATE = hard_locale (LC_COLLATE);
#endif
#ifdef MBS_SUPPORT
@@ -2036,7 +2039,7 @@ dfastate (int s, struct dfa *d, int trans[])
static int initialized; /* Flag for static initialization. */
#ifdef MBS_SUPPORT
int next_isnt_1st_byte = 0; /* Flag if we can't add state0. */
-#endif
+#endif
int i, j, k;
/* Initialize the set of letters, if necessary. */
@@ -2218,11 +2221,11 @@ dfastate (int s, struct dfa *d, int trans[])
character, or the states of follows must accept the bytes
which are not 1st byte of the multibyte character.
Then, if a state of follows encounter a byte, it must not be
- a 1st byte of a multibyte character nor singlebyte character.
+ a 1st byte of a multibyte character nor single byte character.
We cansel to add state[0].follows to next state, because
state[0] must accept 1st-byte
- For example, we assume <sb a> is a certain singlebyte
+ For example, we assume <sb a> is a certain single byte
character, <mb A> is a certain multibyte character, and the
codepoint of <sb a> equals the 2nd byte of the codepoint of
<mb A>.
@@ -2402,22 +2405,24 @@ build_state_zero (struct dfa *d)
#ifdef MBS_SUPPORT
/* Multibyte character handling sub-routines for dfaexec. */
-/* Initial state may encounter the byte which is not a singlebyte character
+/* Initial state may encounter the byte which is not a single byte character
nor 1st byte of a multibyte character. But it is incorrect for initial
state to accept such a byte.
For example, in sjis encoding the regular expression like "\\" accepts
the codepoint 0x5c, but should not accept the 2nd byte of the codepoint
- 0x815c. Then Initial state must skip the bytes which are not a singlebyte
+ 0x815c. Then Initial state must skip the bytes which are not a single byte
character nor 1st byte of a multibyte character. */
#define SKIP_REMAINS_MB_IF_INITIAL_STATE(s, p) \
if (s == 0) \
{ \
- while (inputwcs[p - buf_begin + buf_offset] == 0 \
- && mblen_buf[p - buf_begin + buf_offset] > 0 \
- && (unsigned char const *)p < buf_end) \
+ while (inputwcs[p - buf_begin] == 0 \
+ && mblen_buf[p - buf_begin] > 0 \
+ && (unsigned char const *)p < buf_end) \
++p; \
if ((char *)p >= end) \
- { \
+ { \
+ free(mblen_buf); \
+ free(inputwcs); \
return NULL; \
} \
}
@@ -2511,8 +2516,8 @@ match_anychar (struct dfa *d, int s, position pos, int index)
wchar_t wc;
int mbclen;
- wc = inputwcs[index + buf_offset];
- mbclen = (mblen_buf[index + buf_offset] == 0)? 1 : mblen_buf[index + buf_offset];
+ wc = inputwcs[index];
+ mbclen = (mblen_buf[index] == 0)? 1 : mblen_buf[index];
/* Check context. */
if (wc == (wchar_t)eolbyte)
@@ -2554,14 +2559,14 @@ match_mb_charset (struct dfa *d, int s, position pos, int index)
char buffer[128];
wchar_t wcbuf[6];
- /* Pointer to the structure to which we are currently reffering. */
+ /* Pointer to the structure to which we are currently refering. */
struct mb_char_classes *work_mbc;
int newline = 0;
int letter = 0;
- wchar_t wc; /* Current reffering character. */
+ wchar_t wc; /* Current refering character. */
- wc = inputwcs[index + buf_offset];
+ wc = inputwcs[index];
/* Check context. */
if (wc == (wchar_t)eolbyte)
@@ -2582,10 +2587,10 @@ match_mb_charset (struct dfa *d, int s, position pos, int index)
newline, d->states[s].letter, letter))
return 0;
- /* Assign the current reffering operator to work_mbc. */
+ /* Assign the current refering operator to work_mbc. */
work_mbc = &(d->mbcsets[(d->multibyte_prop[pos.index]) >> 2]);
match = !work_mbc->invert;
- match_len = (mblen_buf[index + buf_offset] == 0)? 1 : mblen_buf[index + buf_offset];
+ match_len = (mblen_buf[index] == 0)? 1 : mblen_buf[index];
/* match with a character class? */
for (i = 0; i<work_mbc->nch_classes; i++)
@@ -2700,8 +2705,8 @@ transit_state_consume_1char (struct dfa *d, int s, unsigned char const **pp,
/* Calculate the length of the (single/multi byte) character
to which p points. */
- *mbclen = (mblen_buf[*pp - buf_begin + buf_offset] == 0)? 1
- : mblen_buf[*pp - buf_begin + buf_offset];
+ *mbclen = (mblen_buf[*pp - buf_begin] == 0)? 1
+ : mblen_buf[*pp - buf_begin];
/* Calculate the state which can be reached from the state `s' by
consuming `*mbclen' single bytes from the buffer. */
@@ -2738,7 +2743,7 @@ transit_state_consume_1char (struct dfa *d, int s, unsigned char const **pp,
/* Transit state from s, then return new state and update the pointer of the
buffer. This function is for some operator which can match with a multi-
- byte character or a collating element(which may be multi characters). */
+ byte character or a collating element (which may be multi characters). */
static int
transit_state (struct dfa *d, int s, unsigned char const **pp)
{
@@ -2771,7 +2776,7 @@ transit_state (struct dfa *d, int s, unsigned char const **pp)
if (nelem == 0 || maxlen == 0)
/* This state has no multibyte operator which can match.
- We need to check only one singlebyte character. */
+ We need to check only one single byte character. */
{
status_transit_state rs;
rs = transit_state_singlebyte(d, s, *pp, &s1);
@@ -2795,7 +2800,7 @@ transit_state (struct dfa *d, int s, unsigned char const **pp)
`maxlen' bytes. */
rs = transit_state_consume_1char(d, s, pp, match_lens, &mbclen, &follows);
- wc = inputwcs[*pp - mbclen - buf_begin + buf_offset];
+ wc = inputwcs[*pp - mbclen - buf_begin];
s1 = state_index(d, &follows, wc == L'\n', iswalnum(wc));
realloc_trans_if_necessary(d, s1);
@@ -2813,7 +2818,7 @@ transit_state (struct dfa *d, int s, unsigned char const **pp)
&follows);
}
- wc = inputwcs[*pp - mbclen - buf_begin + buf_offset];
+ wc = inputwcs[*pp - mbclen - buf_begin];
s1 = state_index(d, &follows, wc == L'\n', iswalnum(wc));
realloc_trans_if_necessary(d, s1);
}
@@ -2842,7 +2847,7 @@ dfaexec (struct dfa *d, char const *begin, char *end,
int newline, int *count, int *backref)
{
register int s, s1, tmp; /* Current state. */
- register unsigned char const *p; /* Current input character. */
+ register unsigned char const *p; /* Current input character. */
register int **trans, *t; /* Copy of d->trans so it can be optimized
into a register. */
register unsigned char eol = eolbyte; /* Likewise for eolbyte. */
@@ -2871,21 +2876,12 @@ dfaexec (struct dfa *d, char const *begin, char *end,
if (MB_CUR_MAX > 1)
{
int remain_bytes, i;
- buf_begin -= buf_offset;
- if (buf_begin <= (unsigned char const *)begin && (unsigned char const *) end <= buf_end) {
- buf_offset = (unsigned char const *)begin - buf_begin;
- buf_begin = begin;
- buf_end = end;
- goto go_fast;
- }
-
- buf_offset = 0;
buf_begin = begin;
buf_end = end;
/* initialize mblen_buf, and inputwcs. */
- REALLOC(mblen_buf, unsigned char, end - begin + 2);
- REALLOC(inputwcs, wchar_t, end - begin + 2);
+ MALLOC(mblen_buf, unsigned char, end - begin + 2);
+ MALLOC(inputwcs, wchar_t, end - begin + 2);
memset(&mbs, 0, sizeof(mbstate_t));
remain_bytes = 0;
for (i = 0; i < end - begin + 1; i++)
@@ -2916,21 +2912,20 @@ dfaexec (struct dfa *d, char const *begin, char *end,
mblen_buf[i] = 0;
inputwcs[i] = 0; /* sentinel */
}
-go_fast:
#endif /* MBS_SUPPORT */
for (;;)
{
#ifdef MBS_SUPPORT
if (MB_CUR_MAX > 1)
- while ((t = trans[s]))
+ while ((t = trans[s]))
{
- if ((char *) p > end)
- break;
- s1 = s;
+ if ((char *) p > end)
+ break;
+ s1 = s;
if (d->states[s].mbps.nelem != 0)
{
- /* Can match with a multibyte character( and multi character
+ /* Can match with a multibyte character (and multi character
collating element). */
unsigned char const *nextp;
@@ -2953,10 +2948,10 @@ go_fast:
#endif /* MBS_SUPPORT */
while ((t = trans[s]) != 0) { /* hand-optimized loop */
s1 = t[*p++];
- if ((t = trans[s1]) == 0) {
- tmp = s ; s = s1 ; s1 = tmp ; /* swap */
- break;
- }
+ if ((t = trans[s1]) == 0) {
+ tmp = s ; s = s1 ; s1 = tmp ; /* swap */
+ break;
+ }
s = t[*p++];
}
@@ -2966,22 +2961,29 @@ go_fast:
{
if (backref)
*backref = (d->states[s].backref != 0);
- return (char *) p;
+#ifdef MBS_SUPPORT
+ if (MB_CUR_MAX > 1)
+ {
+ free(mblen_buf);
+ free(inputwcs);
+ }
+#endif /* MBS_SUPPORT */
+ return (char *) p;
}
s1 = s;
#ifdef MBS_SUPPORT
if (MB_CUR_MAX > 1)
{
- unsigned char const *nextp;
- nextp = p;
- s = transit_state(d, s, &nextp);
+ unsigned char const *nextp;
+ nextp = p;
+ s = transit_state(d, s, &nextp);
p = (unsigned char *)nextp;
- /* Trans table might be updated. */
- trans = d->trans;
- }
- else
+ /* Trans table might be updated. */
+ trans = d->trans;
+ }
+ else
#endif /* MBS_SUPPORT */
s = d->fails[s][*p++];
continue;
@@ -2993,9 +2995,16 @@ go_fast:
/* Check if we've run off the end of the buffer. */
if ((char *) p > end)
- {
- return NULL;
- }
+ {
+#ifdef MBS_SUPPORT
+ if (MB_CUR_MAX > 1)
+ {
+ free(mblen_buf);
+ free(inputwcs);
+ }
+#endif /* MBS_SUPPORT */
+ return NULL;
+ }
if (s >= 0)
{
@@ -3058,7 +3067,7 @@ dfacomp (char const *s, size_t len, struct dfa *d, int searchflag)
lcopy = malloc(len);
if (!lcopy)
- dfaerror(_("out of memory"));
+ dfaerror(_("memory exhausted"));
/* This is a kludge. */
case_fold = 0;
@@ -3358,14 +3367,14 @@ comsubs (char *left, char *right)
for (lcp = left; *lcp != '\0'; ++lcp)
{
len = 0;
- rcp = strchr(right, *lcp);
+ rcp = strchr (right, *lcp);
while (rcp != NULL)
{
for (i = 1; lcp[i] != '\0' && lcp[i] == rcp[i]; ++i)
continue;
if (i > len)
len = i;
- rcp = strchr(rcp + 1, *lcp);
+ rcp = strchr (rcp + 1, *lcp);
}
if (len == 0)
continue;
@@ -3668,9 +3677,9 @@ dfamust (struct dfa *dfa)
done:
if (strlen(result))
{
- dm = (struct dfamust *) malloc(sizeof (struct dfamust));
+ MALLOC(dm, struct dfamust, 1);
dm->exact = exact;
- dm->must = malloc(strlen(result) + 1);
+ MALLOC(dm->must, char, strlen(result) + 1);
strcpy(dm->must, result);
dm->next = dfa->musts;
dfa->musts = dm;
@@ -3687,59 +3696,3 @@ dfamust (struct dfa *dfa)
free((char *) mp);
}
/* vim:set shiftwidth=2: */
-/* hard-locale.c -- Determine whether a locale is hard.
- Copyright 1997, 1998, 1999 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. */
-
-
-/* Return nonzero if the current CATEGORY locale is hard, i.e. if you
- can't get away with assuming traditional C or POSIX behavior. */
-static int
-hard_locale (int category)
-{
-#if ! (defined ENABLE_NLS && HAVE_SETLOCALE)
- return 0;
-#else
-
- int hard = 1;
- char const *p = setlocale (category, 0);
-
- if (p)
- {
-# if defined __GLIBC__ && __GLIBC__ >= 2
- if (strcmp (p, "C") == 0 || strcmp (p, "POSIX") == 0)
- hard = 0;
-# else
- char *locale = xmalloc (strlen (p) + 1);
- strcpy (locale, p);
-
- /* Temporarily set the locale to the "C" and "POSIX" locales to
- find their names, so that we can determine whether one or the
- other is the caller's locale. */
- if (((p = setlocale (category, "C")) && strcmp (p, locale) == 0)
- || ((p = setlocale (category, "POSIX")) && strcmp (p, locale) == 0))
- hard = 0;
-
- /* Restore the caller's locale. */
- setlocale (category, locale);
- free(locale);
-# endif
- }
-
- return hard;
-
-#endif
-}
diff --git a/dfa.h b/dfa.h
index 68886fd8..32449f48 100644
--- a/dfa.h
+++ b/dfa.h
@@ -13,7 +13,7 @@
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 */
+ Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA */
/* Written June, 1988 by Mike Haertel */
@@ -150,7 +150,7 @@ typedef enum
#ifdef MBS_SUPPORT
ANYCHAR, /* ANYCHAR is a terminal symbol that matches
- any multibyte(or singlebyte) characters.
+ any multibyte (or single byte) characters.
It is used only if MB_CUR_MAX > 1. */
MBCSET, /* MBCSET is similar to CSET, but for
@@ -305,9 +305,9 @@ struct dfa
int *multibyte_prop;
/* The value of multibyte_prop[i] is defined by following rule.
if tokens[i] < NOTCHAR
- bit 1 : tokens[i] is a singlebyte character, or the last-byte of
+ bit 1 : tokens[i] is a single byte character, or the last-byte of
a multibyte character.
- bit 0 : tokens[i] is a singlebyte character, or the 1st-byte of
+ bit 0 : tokens[i] is a single byte character, or the 1st-byte of
a multibyte character.
if tokens[i] = MBCSET
("the index of mbcsets correspnd to this operator" << 2) + 3
diff --git a/doc/ChangeLog b/doc/ChangeLog
index 5c8e4376..7d7f2050 100644
--- a/doc/ChangeLog
+++ b/doc/ChangeLog
@@ -1,3 +1,38 @@
+Tue Jul 26 21:46:16 2005 Arnold D. Robbins <arnold@skeeve.com>
+
+ * Release 3.1.5: Release tar file made.
+
+Sun Jun 26 16:24:07 2005 Arnold D. Robbins <arnold@skeeve.com>
+
+ * gawk.texi: Document `length(array)'.
+ * gawk.1: Ditto.
+ * awkcard.in: Ditto.
+
+Mon May 23 20:56:32 2005 Arnold D. Robbins <arnold@skeeve.com>
+
+ * gawk.texi: Removed references to `--with-included-gettext'.
+
+Fri Apr 1 06:25:30 2005 Arnold D. Robbins <arnold@skeeve.com>
+
+ * texinfo.tex: Updated to version 2005-01-30.17.
+
+Wed Feb 9 11:39:38 2005 Arnold D. Robbins <arnold@skeeve.com>
+
+ * Makefile.am: Per Stepan Kasal, removed html rules, since
+ Automake does it for us.
+
+Tue Jan 4 18:47:34 2005 Arnold D. Robbins <arnold@skeeve.com>
+
+ * texinfo.tex: Updated to version 2004-11-25.16.
+
+Mon Jan 3 14:09:57 2005 Arnold D. Robbins <arnold@skeeve.com>
+
+ * texinfo.tex: Updated to version 2004-10-31.06.
+
+Wed Sep 22 11:40:06 2004 Arnold D. Robbins <arnold@skeeve.com>
+
+ * gawk.1, gawk.texi, awkcard.in: Documented new --exec option.
+
Mon Aug 2 12:18:15 2004 Arnold D. Robbins <arnold@skeeve.com>
* Release 3.1.4: Release tar file made.
diff --git a/doc/Makefile.am b/doc/Makefile.am
index 54106624..f3a26815 100644
--- a/doc/Makefile.am
+++ b/doc/Makefile.am
@@ -1,7 +1,7 @@
#
# doc/Makefile.am --- automake input file for gawk
#
-# Copyright (C) 2000, 2001, 2002, 2004 the Free Software Foundation, Inc.
+# Copyright (C) 2000, 2001, 2002, 2004, 2005 the Free Software Foundation, Inc.
#
# This file is part of GAWK, the GNU implementation of the
# AWK Programming Language.
@@ -18,7 +18,7 @@
#
# 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
+# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA
#
## process this file with automake to produce Makefile.in
@@ -91,13 +91,5 @@ awkcard.ps: $(CARDFILES)
awkcard.nc: $(CARDFILES)
$(TROFF) $(CARDSRC_N) | $(SEDME) | cat $(srcdir)/setter.outline - > awkcard.ps && touch awkcard.nc
-html: gawk.html gawkinet.html
-
-gawk.html: gawk.texi
- $(MAKEINFO) --html $<
-
-gawkinet.html: gawkinet.texi
- $(MAKEINFO) --html $<
-
clean:
rm -f *.ps *~ awkcard.nc awkcard.tr *.html
diff --git a/doc/Makefile.in b/doc/Makefile.in
index 38f01b1c..93a4d28f 100644
--- a/doc/Makefile.in
+++ b/doc/Makefile.in
@@ -1,8 +1,8 @@
-# Makefile.in generated by automake 1.8.5 from Makefile.am.
+# Makefile.in generated by automake 1.9.5 from Makefile.am.
# @configure_input@
# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
-# 2003, 2004 Free Software Foundation, Inc.
+# 2003, 2004, 2005 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.
@@ -17,7 +17,7 @@
#
# doc/Makefile.am --- automake input file for gawk
#
-# Copyright (C) 2000, 2001, 2002, 2004 the Free Software Foundation, Inc.
+# Copyright (C) 2000, 2001, 2002, 2004, 2005 the Free Software Foundation, Inc.
#
# This file is part of GAWK, the GNU implementation of the
# AWK Programming Language.
@@ -34,7 +34,7 @@
#
# 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
+# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA
#
srcdir = @srcdir@
top_srcdir = @top_srcdir@
@@ -56,27 +56,21 @@ POST_INSTALL = :
NORMAL_UNINSTALL = :
PRE_UNINSTALL = :
POST_UNINSTALL = :
+build_triplet = @build@
host_triplet = @host@
subdir = doc
DIST_COMMON = $(srcdir)/Makefile.am $(srcdir)/Makefile.in ChangeLog \
texinfo.tex
ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
am__aclocal_m4_deps = $(top_srcdir)/m4/arch.m4 \
- $(top_srcdir)/m4/codeset.m4 $(top_srcdir)/m4/gettext.m4 \
- $(top_srcdir)/m4/glibc21.m4 $(top_srcdir)/m4/iconv.m4 \
- $(top_srcdir)/m4/intdiv0.m4 $(top_srcdir)/m4/intmax.m4 \
- $(top_srcdir)/m4/intmax_t.m4 $(top_srcdir)/m4/inttypes-pri.m4 \
- $(top_srcdir)/m4/inttypes.m4 $(top_srcdir)/m4/inttypes_h.m4 \
- $(top_srcdir)/m4/lcmessage.m4 $(top_srcdir)/m4/lib-ld.m4 \
- $(top_srcdir)/m4/lib-link.m4 $(top_srcdir)/m4/lib-prefix.m4 \
- $(top_srcdir)/m4/longdouble.m4 $(top_srcdir)/m4/longlong.m4 \
+ $(top_srcdir)/m4/gettext.m4 $(top_srcdir)/m4/iconv.m4 \
+ $(top_srcdir)/m4/intmax_t.m4 $(top_srcdir)/m4/inttypes_h.m4 \
+ $(top_srcdir)/m4/lib-ld.m4 $(top_srcdir)/m4/lib-link.m4 \
+ $(top_srcdir)/m4/lib-prefix.m4 $(top_srcdir)/m4/longlong.m4 \
$(top_srcdir)/m4/nls.m4 $(top_srcdir)/m4/po.m4 \
- $(top_srcdir)/m4/printf-posix.m4 $(top_srcdir)/m4/progtest.m4 \
- $(top_srcdir)/m4/signed.m4 $(top_srcdir)/m4/size_max.m4 \
- $(top_srcdir)/m4/socket.m4 $(top_srcdir)/m4/stdint_h.m4 \
- $(top_srcdir)/m4/strtod.m4 $(top_srcdir)/m4/uintmax_t.m4 \
- $(top_srcdir)/m4/ulonglong.m4 $(top_srcdir)/m4/wchar_t.m4 \
- $(top_srcdir)/m4/wint_t.m4 $(top_srcdir)/m4/xsize.m4 \
+ $(top_srcdir)/m4/progtest.m4 $(top_srcdir)/m4/socket.m4 \
+ $(top_srcdir)/m4/stdint_h.m4 $(top_srcdir)/m4/strtod.m4 \
+ $(top_srcdir)/m4/uintmax_t.m4 $(top_srcdir)/m4/ulonglong.m4 \
$(top_srcdir)/configure.ac
am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
$(ACLOCAL_M4)
@@ -103,7 +97,6 @@ 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@
@@ -111,15 +104,12 @@ AUTOCONF = @AUTOCONF@
AUTOHEADER = @AUTOHEADER@
AUTOMAKE = @AUTOMAKE@
AWK = @AWK@
-BUILD_INCLUDED_LIBINTL = @BUILD_INCLUDED_LIBINTL@
-CATOBJEXT = @CATOBJEXT@
CC = @CC@
CCDEPMODE = @CCDEPMODE@
CFLAGS = @CFLAGS@
CPP = @CPP@
CPPFLAGS = @CPPFLAGS@
CYGPATH_W = @CYGPATH_W@
-DATADIRNAME = @DATADIRNAME@
DEFS = @DEFS@
DEPDIR = @DEPDIR@
ECHO_C = @ECHO_C@
@@ -127,22 +117,13 @@ 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@
+INTL_MACOSX_LIBS = @INTL_MACOSX_LIBS@
LDFLAGS = @LDFLAGS@
LIBICONV = @LIBICONV@
LIBINTL = @LIBINTL@
@@ -171,7 +152,6 @@ SHELL = @SHELL@
SOCKET_LIBS = @SOCKET_LIBS@
STRIP = @STRIP@
U = @U@
-USE_INCLUDED_LIBINTL = @USE_INCLUDED_LIBINTL@
USE_NLS = @USE_NLS@
VERSION = @VERSION@
XGETTEXT = @XGETTEXT@
@@ -184,6 +164,8 @@ am__fastdepCC_TRUE = @am__fastdepCC_TRUE@
am__include = @am__include@
am__leading_dot = @am__leading_dot@
am__quote = @am__quote@
+am__tar = @am__tar@
+am__untar = @am__untar@
bindir = @bindir@
build = @build@
build_alias = @build_alias@
@@ -277,15 +259,11 @@ $(ACLOCAL_M4): $(am__aclocal_m4_deps)
cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
.texi.info:
- restore=: && \
- backupdir="$(am__leading_dot)am$$$$" && \
+ restore=: && backupdir="$(am__leading_dot)am$$$$" && \
am__cwd=`pwd` && cd $(srcdir) && \
rm -rf $$backupdir && mkdir $$backupdir && \
for f in $@ $@-[0-9] $@-[0-9][0-9] $(@:.info=).i[0-9] $(@:.info=).i[0-9][0-9]; do \
- if test -f $$f; then \
- mv $$f $$backupdir; \
- restore=mv; \
- fi; \
+ if test -f $$f; then mv $$f $$backupdir; restore=mv; else :; fi; \
done; \
cd "$$am__cwd"; \
if $(MAKEINFO) $(AM_MAKEINFOFLAGS) $(MAKEINFOFLAGS) -I $(srcdir) \
@@ -298,8 +276,7 @@ $(ACLOCAL_M4): $(am__aclocal_m4_deps)
cd $(srcdir) && \
$$restore $$backupdir/* `echo "./$@" | sed 's|[^/]*$$||'`; \
fi; \
- rm -rf $$backupdir; \
- exit $$rc
+ rm -rf $$backupdir; exit $$rc
.texi.dvi:
TEXINPUTS="$(am__TEXINFO_TEX_DIR)$(PATH_SEPARATOR)$$TEXINPUTS" \
@@ -312,21 +289,31 @@ $(ACLOCAL_M4): $(am__aclocal_m4_deps)
$(TEXI2PDF) $<
.texi.html:
- $(MAKEINFOHTML) $(AM_MAKEINFOHTMLFLAGS) $(MAKEINFOFLAGS) -I $(srcdir) \
- -o $@ $<
- if test ! -d $@ && test -d $(@:.html=); then \
- mv $(@:.html=) $@; else :; fi
+ rm -rf $(@:.html=.htp)
+ if $(MAKEINFOHTML) $(AM_MAKEINFOHTMLFLAGS) $(MAKEINFOFLAGS) -I $(srcdir) \
+ -o $(@:.html=.htp) $<; \
+ then \
+ rm -rf $@; \
+ if test ! -d $(@:.html=.htp) && test -d $(@:.html=); then \
+ mv $(@:.html=) $@; else mv $(@:.html=.htp) $@; fi; \
+ else \
+ if test ! -d $(@:.html=.htp) && test -d $(@:.html=); then \
+ rm -rf $(@:.html=); else rm -Rf $(@:.html=.htp) $@; fi; \
+ exit 1; \
+ fi
$(srcdir)/gawk.info: gawk.texi
gawk.dvi: gawk.texi
gawk.pdf: gawk.texi
+gawk.html: gawk.texi
$(srcdir)/gawkinet.info: gawkinet.texi
gawkinet.dvi: gawkinet.texi
gawkinet.pdf: gawkinet.texi
+gawkinet.html: gawkinet.texi
.dvi.ps:
$(DVIPS) -o $@ $<
uninstall-info-am:
- $(PRE_UNINSTALL)
+ @$(PRE_UNINSTALL)
@if (install-info --version && \
install-info --version 2>&1 | sed 1q | grep -i -v debian) >/dev/null 2>&1; then \
list='$(INFO_DEPS)'; \
@@ -342,7 +329,7 @@ uninstall-info-am:
relfile=`echo "$$file" | sed 's|^.*/||'`; \
relfile_i=`echo "$$relfile" | sed 's|\.info$$||;s|$$|.i|'`; \
(if cd "$(DESTDIR)$(infodir)"; then \
- echo " rm -f $$relfile $$relfile-[0-9] $$relfile-[0-9][0-9] $$relfile_i[0-9] $$relfile_i[0-9][0-9])"; \
+ echo " cd '$(DESTDIR)$(infodir)' && rm -f $$relfile $$relfile-[0-9] $$relfile-[0-9][0-9] $$relfile_i[0-9] $$relfile_i[0-9][0-9]"; \
rm -f $$relfile $$relfile-[0-9] $$relfile-[0-9][0-9] $$relfile_i[0-9] $$relfile_i[0-9][0-9]; \
else :; fi); \
done
@@ -485,7 +472,7 @@ mostlyclean-generic:
clean-generic:
distclean-generic:
- -rm -f $(CONFIG_CLEAN_FILES)
+ -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES)
maintainer-clean-generic:
@echo "This command is intended for maintainers to use"
@@ -500,6 +487,8 @@ dvi: dvi-am
dvi-am: $(DVIS)
+html: html-am
+
html-am: $(HTMLS)
info: info-am
@@ -574,13 +563,13 @@ uninstall-man: uninstall-man1
.PHONY: all all-am check check-am clean clean-generic dist-info \
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 \
+ install-data-hook install-exec install-exec-am install-info \
+ install-info-am install-man install-man1 install-strip \
+ installcheck installcheck-am installdirs maintainer-clean \
maintainer-clean-aminfo maintainer-clean-generic mostlyclean \
mostlyclean-aminfo mostlyclean-generic pdf pdf-am ps ps-am \
- uninstall uninstall-am uninstall-info-am uninstall-man \
- uninstall-man1
+ uninstall uninstall-am uninstall-hook uninstall-info-am \
+ uninstall-man uninstall-man1
# Link gawk.1 to pgawk.1
@@ -616,14 +605,6 @@ awkcard.ps: $(CARDFILES)
awkcard.nc: $(CARDFILES)
$(TROFF) $(CARDSRC_N) | $(SEDME) | cat $(srcdir)/setter.outline - > awkcard.ps && touch awkcard.nc
-html: gawk.html gawkinet.html
-
-gawk.html: gawk.texi
- $(MAKEINFO) --html $<
-
-gawkinet.html: gawkinet.texi
- $(MAKEINFO) --html $<
-
clean:
rm -f *.ps *~ awkcard.nc awkcard.tr *.html
# Tell versions [3.59,3.63) of GNU make to not export all variables.
diff --git a/doc/ad.block b/doc/ad.block
index 7d3b2665..6093c45b 100644
--- a/doc/ad.block
+++ b/doc/ad.block
@@ -30,8 +30,8 @@
.ce 7
\*(CBFree Software Foundation, Inc.
.ft H
-59 Temple Place \(em Suite 330
-Boston, MA 02111-1307 USA
+51 Franklin Street, Fifth Floor
+Boston, MA 02110-1301 USA
Phone: +1-617-542-5942
Fax (including Japan): +1-617-542-2652
E-mail: gnu@gnu.org
diff --git a/doc/awkcard.in b/doc/awkcard.in
index fd7e4975..7d55d977 100644
--- a/doc/awkcard.in
+++ b/doc/awkcard.in
@@ -1,6 +1,7 @@
.\" AWK Reference Card --- Arnold Robbins, arnold@skeeve.com
.\"
-.\" Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004 Free Software Foundation, Inc.
+.\" Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001, 2002,
+.\" 2003, 2004, 2005 Free Software Foundation, Inc.
.\"
.\" Permission is granted to make and distribute verbatim copies of
.\" this reference card provided the copyright notice and this permission
@@ -264,13 +265,18 @@ ls
l lw(2.2i).
\*(FC\-\^\-dump-variables\*(FR[\*(FC=\*(FIfile\*(FR]
%T{
-Print a sorted list of global variables,
+print a sorted list of global variables,
their types and final values to
\*(FIfile\*(FR.
If no \*(FIfile\*(FR
is provided, \*(FCgawk\*(FR
uses \*(FCawkvars.out\*(FR.
T}
+\*(FC\-\^\-exec \*(FIfile\*(FR%T{
+read program text from \*(FIfile\fP. No other
+options are processed. Useful with \*(FC#!\fP.
+Also disables command-line variable assignments.
+T}
\*(FC\-\^\-gen\-po\*(FR%T{
process the program and print a GNU \*(FCgettext\*(FR
format \*(FC\&.po\*(FR format file on standard output,
@@ -1568,6 +1574,8 @@ returns the index of the string
.br
returns the length of the string
\*(FIs\*(FR, or the length of \*(FC$0\fP if \*(FIs\fP is not supplied.
+\*(CBWith an array argument, returns the number of elements
+in the array.\*(CD
.ti -.2i
\*(FCmatch(\*(FIs\*(FC, \*(FIr \*(CB\*(FR[\*(FC, \*(FIa\*(FR]\*(CD\*(FC)\*(FR
.br
@@ -1894,7 +1902,7 @@ to use the current domain.\*(CB
.ES
.nf
\*(CDHost: \*(FCftp.gnu.org\*(FR
-File: \*(FC/gnu/gawk/gawk-3.1.4.tar.gz\fP
+File: \*(FC/gnu/gawk/gawk-3.1.5.tar.gz\fP
.in +.2i
.fi
GNU \*(AK (\*(GK). There may be a later version.
@@ -1921,7 +1929,7 @@ Michael Brennan's \*(MK. There may be a newer version.\*(CX
.\" --- Copying Permissions
.ES
.fi
-\*(CDCopyright \(co 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004
+\*(CDCopyright \(co 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005
Free Software Foundation, Inc.
.sp .5
Permission is granted to make and distribute verbatim copies of this
diff --git a/doc/gawk.1 b/doc/gawk.1
index 8250236c..9859e7d3 100644
--- a/doc/gawk.1
+++ b/doc/gawk.1
@@ -14,7 +14,7 @@
. if \w'\(rq' .ds rq "\(rq
. \}
.\}
-.TH GAWK 1 "July 28 2004" "Free Software Foundation" "Utility Commands"
+.TH GAWK 1 "June 26 2005" "Free Software Foundation" "Utility Commands"
.SH NAME
gawk \- pattern scanning and processing language
.SH SYNOPSIS
@@ -248,6 +248,36 @@ names like
and so on.)
.TP
.PD 0
+.BI "\-W exec " file
+.TP
+.PD
+.BI \-\^\-exec " file"
+Similar to
+.BR \-f ,
+however, this is option is the last one processed.
+This should be used with
+.B #!
+scripts, particularly for CGI applications, to avoid
+passing in options or source code (!) on the command line
+from a URL.
+This option disables command-line variable assignments.
+.TP
+.PD 0
+.B "\-W gen\-po"
+.TP
+.PD
+.B \-\^\-gen\-po
+Scan and parse the \*(AK program, and generate a \*(GN
+.B \&.po
+format file on standard output with entries for all localizable
+strings in the program. The program itself is not executed.
+See the \*(GN
+.I gettext
+distribution for more information on
+.B \&.po
+files.
+.TP
+.PD 0
.B "\-W help"
.TP
.PD 0
@@ -291,21 +321,6 @@ not portable to the original version of Unix
.IR awk .
.TP
.PD 0
-.B "\-W gen\-po"
-.TP
-.PD
-.B \-\^\-gen\-po
-Scan and parse the \*(AK program, and generate a \*(GN
-.B \&.po
-format file on standard output with entries for all localizable
-strings in the program. The program itself is not executed.
-See the \*(GN
-.I gettext
-distribution for more information on
-.B \&.po
-files.
-.TP
-.PD 0
.B "\-W non\-decimal\-data"
.TP
.PD
@@ -2386,6 +2401,10 @@ or the length of
if
.I s
is not supplied.
+Starting with version 3.1.5,
+as a non-standard extension, with an array argument,
+.B length()
+returns the number of elements in the array.
.TP
\fBmatch(\fIs\fB, \fIr \fR[\fB, \fIa\fR]\fB)\fR
Returns the position in
@@ -3372,7 +3391,7 @@ and Martin Brown provided the BeOS port.
.SH VERSION INFORMATION
This man page documents
.IR gawk ,
-version 3.1.4.
+version 3.1.5.
.SH BUG REPORTS
If you find a bug in
.IR gawk ,
@@ -3416,7 +3435,7 @@ provided valuable assistance during testing and debugging.
We thank him.
.SH COPYING PERMISSIONS
Copyright \(co 1989, 1991, 1992, 1993, 1994, 1995, 1996,
-1997, 1998, 1999, 2001, 2002, 2003, 2004 Free Software Foundation, Inc.
+1997, 1998, 1999, 2001, 2002, 2003, 2004, 2005 Free Software Foundation, Inc.
.PP
Permission is granted to make and distribute verbatim copies of
this manual page provided the copyright notice and this permission
diff --git a/doc/gawk.info b/doc/gawk.info
index e60d0038..edc9939c 100644
--- a/doc/gawk.info
+++ b/doc/gawk.info
@@ -10,11 +10,11 @@ START-INFO-DIR-ENTRY
END-INFO-DIR-ENTRY
Copyright (C) 1989, 1991, 1992, 1993, 1996, 1997, 1998, 1999, 2000,
-2001, 2002, 2003 Free Software Foundation, Inc.
+2001, 2002, 2003, 2004, 2005 Free Software Foundation, Inc.
This is Edition 3 of `GAWK: Effective AWK Programming: A User's
-Guide for GNU Awk', for the 3.1.4 (or later) version of the GNU
+Guide for GNU Awk', for the 3.1.5 (or later) version of the GNU
implementation of AWK.
Permission is granted to copy, distribute and/or modify this document
@@ -41,11 +41,11 @@ This file documents `awk', a program that you can use to select
particular records in a file and perform operations upon them.
Copyright (C) 1989, 1991, 1992, 1993, 1996, 1997, 1998, 1999, 2000,
-2001, 2002, 2003 Free Software Foundation, Inc.
+2001, 2002, 2003, 2004, 2005 Free Software Foundation, Inc.
This is Edition 3 of `GAWK: Effective AWK Programming: A User's
-Guide for GNU Awk', for the 3.1.4 (or later) version of the GNU
+Guide for GNU Awk', for the 3.1.5 (or later) version of the GNU
implementation of AWK.
Permission is granted to copy, distribute and/or modify this document
@@ -1714,7 +1714,7 @@ the date the file was last modified. Its output looks like this:
-rw-r--r-- 1 arnold user 1933 Nov 7 13:05 Makefile
-rw-r--r-- 1 arnold user 10809 Nov 7 13:03 awk.h
-rw-r--r-- 1 arnold user 983 Apr 13 12:14 awk.tab.h
- -rw-r--r-- 1 arnold user 31869 Jun 15 12:20 awk.y
+ -rw-r--r-- 1 arnold user 31869 Jun 15 12:20 awkgram.y
-rw-r--r-- 1 arnold user 22414 Nov 7 13:03 awk1.c
-rw-r--r-- 1 arnold user 37455 Nov 7 13:03 awk2.c
-rw-r--r-- 1 arnold user 27511 Dec 9 13:07 awk3.c
@@ -2960,6 +2960,14 @@ that could match the trailing part is fairly long. `gawk' attempts to
avoid this problem, but currently, there's no guarantee that this will
never happen.
+ NOTE: Remember that in `awk', the `^' and `$' anchor
+ metacharacters match the beginning and end of a _string_, and not
+ the beginning and end of a _line_. As a result, something like
+ `RS = "^[[:upper:]]"' can only match at the beginning of a file.
+ This is because `gawk' views the input file as one long string
+ that happens to contain newline characters in it. It is thus best
+ to avoid anchor characters in the value of `RS'.
+
The use of `RS' as a regular expression and the `RT' variable are
`gawk' extensions; they are not available in compatibility mode (*note
Options::). In compatibility mode, only the first character of the
@@ -4677,12 +4685,12 @@ which they may appear:
-| 1,234,567
For more information about locales and internationalization issues,
- *FIXME: see xxxx*.
+ see *Note Locales::.
NOTE: The `'' flag is a nice feature, but its use complicates
things: it now becomes difficult to use it in command-line
- programs. For information on appropriate quoting tricks,
- *FIXME: see XXXX*.
+ programs. For information on appropriate quoting tricks, see
+ *Note Quoting::.
`WIDTH'
This is a number specifying the desired minimum width of a field.
@@ -5326,11 +5334,11 @@ if there is a system problem closing the file or process. In these
cases, `gawk' sets the built-in variable `ERRNO' to a string describing
the problem.
-In `gawk', when closing a pipe or coprocess, the return value is the
-exit status of the command.(2) Otherwise, it is the return value from
-the system's `close' or `fclose' C functions when closing input or
-output files, respectively. This value is zero if the close succeeds,
-or -1 if it fails.
+In `gawk', when closing a pipe or coprocess (input or output), the
+return value is the exit status of the command.(2) Otherwise, it is the
+return value from the system's `close' or `fclose' C functions when
+closing input or output files, respectively. This value is zero if the
+close succeeds, or -1 if it fails.
The POSIX standard is very vague; it says that `close' returns zero on
success and non-zero otherwise. In general, different implementations
@@ -7453,11 +7461,11 @@ File: gawk.info, Node: Switch Statement, Next: Break Statement, Prev: For Sta
6.4.5 The `switch' Statement
----------------------------
-*NOTE:* This node describes an experimental feature added in `gawk'
-3.1.3. It is _not_ enabled by default. To enable it, use the
-`--enable-switch' option to `configure' when `gawk' is being configured
-and built. *Note Additional Configuration Options::, for more
-information.
+ NOTE: This node describes an experimental feature added in `gawk'
+ 3.1.3. It is _not_ enabled by default. To enable it, use the
+ `--enable-switch' option to `configure' when `gawk' is being
+ configured and built. *Note Additional Configuration Options::,
+ for more information.
The `switch' statement allows the evaluation of an expression and the
execution of statements based on a `case' match. Case statements are
@@ -9235,6 +9243,15 @@ with a pound sign (`#'):
for programs to be maximally portable, always supply the
parentheses.
+ Beginning with `gawk' version 3.2, when supplied an array
+ argument, the `length' function returns the number of elements in
+ the array. This is less useful than it might seem at first, as the
+ array is not guaranteed to be indexed from one to the number of
+ elements in it. If `--lint' is provided on the command line
+ (*note Options::), `gawk' warns that passing an array argument is
+ not portable. If `--posix' is supplied, using an array argument
+ is a fatal error (*note Arrays::).
+
`match(STRING, REGEXP [, ARRAY])'
The `match' function searches STRING for the longest, leftmost
substring matched by the regular expression, REGEXP. It returns
@@ -9399,6 +9416,9 @@ with a pound sign (`#'):
a string value; the automatic coercion of strings to numbers works
only for decimal data, not for octal or hexadecimal.(1)
+ Note also that `strtonum' uses the current locale's decimal point
+ for recognizing numbers.
+
`strtonum' is a `gawk' extension; it is not available in
compatibility mode (*note Options::).
@@ -11420,11 +11440,6 @@ in *Note Top::.) As of this writing, the latest version of GNU
If a translation of `gawk''s messages exists, then `gawk' produces
usage messages, warnings, and fatal errors in the local language.
-On systems that do not use version 2 (or later) of the GNU C library,
-you should configure `gawk' with the `--with-included-gettext' option
-before compiling and installing it. *Note Additional Configuration
-Options::, for more information.
-

File: gawk.info, Node: Advanced Features, Next: Invoking Gawk, Prev: Internationalization, Up: Top
@@ -12097,6 +12112,25 @@ The following list describes `gawk'-specific options:
particularly easy mistake to make with simple variable names like
`i', `j', etc.)
+`-W exec FILE'
+`--exec FILE'
+ Similar to `-f', reads `awk' program text from FILE. There are
+ two differences. The fist is that this option also terminates
+ option processing; anything else on the command line is passed on
+ directly to the `awk' program. The second is that command line
+ variable assignments of the form `VAR=VALUE' are disallowed.
+
+ This option is particularly necessary for World Wide Web CGI
+ applications that pass arguments through the URL; using this
+ option prevents a malicious (or other) user from passing in
+ options, assignments, or `awk' source code (via `--source') to the
+ CGI application. This option should be used with `#!' scripts
+ (*note Executable Scripts::), like so:
+
+ #! /usr/local/bin/gawk --exec
+
+ AWK PROGRAM HERE ...
+
`-W gen-po'
`--gen-po'
Analyzes the source program and generates a GNU `gettext' Portable
@@ -17006,6 +17040,12 @@ Version 3.1 of `gawk' introduced the following features:
* POSIX compliance for `sub' and `gsub' (*note Gory Details::).
+ * The `--exec' option, for use in CGI scripts. (*note Options::).
+
+ * The `length' function was extended to accept an array argument and
+ return the number of elements in the array (*note String
+ Functions::).
+

File: gawk.info, Node: Contributors, Prev: POSIX/GNU, Up: Language History
@@ -17155,8 +17195,8 @@ There are three ways to get GNU software:
in several CD packages. Their address is:
Free Software Foundation
- 59 Temple Place, Suite 330
- Boston, MA 02111-1307 USA
+ 51 Franklin Street, Fifth Floor
+ Boston, MA 02110-1301 USA
Phone: +1-617-542-5942
Fax (including Japan): +1-617-542-2652
Email: <gnu@gnu.org>
@@ -17183,20 +17223,20 @@ B.1.2 Extracting the Distribution
`gawk' is distributed as a `tar' file compressed with the GNU Zip
program, `gzip'.
-Once you have the distribution (for example, `gawk-3.1.4.tar.gz'), use
+Once you have the distribution (for example, `gawk-3.1.5.tar.gz'), use
`gzip' to expand the file and then use `tar' to extract it. You can
use the following pipeline to produce the `gawk' distribution:
# Under System V, add 'o' to the tar options
- gzip -d -c gawk-3.1.4.tar.gz | tar -xvpf -
+ gzip -d -c gawk-3.1.5.tar.gz | tar -xvpf -
-This creates a directory named `gawk-3.1.4' in the current directory.
+This creates a directory named `gawk-3.1.5' in the current directory.
The distribution file name is of the form `gawk-V.R.P.tar.gz'. The V
represents the major version of `gawk', the R represents the current
release of version V, and the P represents a "patch level", meaning
that minor bugs have been fixed in the release. The current patch
-level is 4, but when retrieving distributions, you should get the
+level is 5, but when retrieving distributions, you should get the
version with the highest version, release, and patch level. (Note,
however, that patch levels greater than or equal to 80 denote "beta" or
nonproduction software; you might not want to retrieve such a version
@@ -17315,11 +17355,8 @@ Various `.c', `.y', and `.h' files
for various Unix systems. They are explained in *Note Unix
Installation::.
-`intl/*'
`po/*'
- The `intl' directory provides the GNU `gettext' library, which
- implements `gawk''s internationalization features, while the `po'
- library contains message translations.
+ The `po' library contains message translations.
`awklib/extract.awk'
`awklib/Makefile.am'
@@ -17385,7 +17422,7 @@ B.2.1 Compiling `gawk' for Unix
-------------------------------
After you have extracted the `gawk' distribution, `cd' to
-`gawk-3.1.4'. Like most GNU software, `gawk' is configured
+`gawk-3.1.5'. Like most GNU software, `gawk' is configured
automatically for your Unix system by running the `configure' program.
This program is a Bourne shell script that is generated automatically
using GNU `autoconf'. (The `autoconf' software is described fully
@@ -17437,12 +17474,6 @@ command line when compiling `gawk' from scratch, including:
Enable the recognition and execution of C-style `switch' statements
in `awk' programs (*note Switch Statement::.)
-`--with-included-gettext'
- Use the version of the `gettext' library that comes with `gawk'.
- This option should be used on systems that do _not_ use version 2
- (or later) of the GNU C library. All known modern GNU/Linux
- systems use Glibc 2. Use this option on any other system.
-
`--disable-lint'
This option disables all lint checking within `gawk'. The
`--lint' and `--lint-old' options (*note Options::) are accepted,
@@ -17461,8 +17492,11 @@ command line when compiling `gawk' from scratch, including:
`--disable-nls'
Disable all message-translation facilities. This is usually not
desirable, but it may bring you some slight performance
- improvement. You should also use this option if
- `--with-included-gettext' doesn't work on your system.
+ improvement.
+
+As of version 3.1.5, the `--with-included-gettext' configuration option
+is no longer available, since `gawk' expects the GNU `gettext' library
+to be installed as an external library.

File: gawk.info, Node: Configuration Philosophy, Prev: Additional Configuration Options, Up: Unix Installation
@@ -17711,7 +17745,7 @@ use the following commands at your `sh' prompt:
$ export CPPFLAGS
$ CFLAGS="-O2 -Zomf -Zmt"
$ export CFLAGS
- $ LDFLAGS="-s -Zcrtdll -Zlinker /exepack:2 -Zlinker /pm:vio -Zstack 0x8000"
+ $ LDFLAGS="-s -Zcrtdll -Zlinker /exepack:2 -Zlinker /pm:vio -Zstack 0x6000"
$ export LDFLAGS
$ RANLIB="echo"
$ export RANLIB
@@ -17725,12 +17759,7 @@ To get an FHS-compliant file hierarchy it is recommended to use the
additional `configure' options `--infodir=c:/usr/share/info',
`--mandir=c:/usr/share/man' and `--libexecdir=c:/usr/lib'.
-The internal `gettext' library tends to be problematic. It is therefore
-recommended to use either an external one
-(`--without-included-gettext') or to disable NLS entirely
-(`--disable-nls').
-
-If you use GCC 2.95 or newer it is recommended to use also:
+If you use GCC 2.95 it is recommended to use also:
$ LIBS="-lgcc"
$ export LIBS
@@ -17741,12 +17770,15 @@ You can also get an `a.out' executable if you prefer:
$ export CPPFLAGS
$ CFLAGS="-O2 -Zmt"
$ export CFLAGS
- $ LDFLAGS="-s -Zstack 0x8000"
+ $ LDFLAGS="-s -Zstack 0x6000"
$ LIBS="-lgcc"
$ unset RANLIB
- $ ./configure --prefix=c:/usr --without-included-gettext
+ $ ./configure --prefix=c:/usr
$ make
+ NOTE: Versions later than GCC 2.95, i.e., GCC 3.x using the
+ Innotek libc were not tested.
+
NOTE: Even if the compiled `gawk.exe' (`a.out') executable
contains a DOS header, it does _not_ work under DOS. To compile an
executable that runs under DOS, `"-DPIPES_SIMULATED"' must be
@@ -17754,9 +17786,9 @@ You can also get an `a.out' executable if you prefer:
`gawk' (e.g., `|&') do not work!
After compilation the internal tests can be performed. Enter `make
-check CMP="diff -a"' at your command prompt. All tests but the `pid'
-test are expected to work properly. The `pid' test fails because child
-processes are not started by `fork()'.
+check CMP="diff -a"' at your command prompt. All tests except for the
+`pid' test are expected to work properly. The `pid' test fails because
+child processes are not started by `fork()'.
`make install' works as expected.
@@ -17923,8 +17955,8 @@ simulation of Unix, using the GNU tools, such as `bash', the GNU
Compiler Collection (GCC), GNU Make, and other GNU tools. Compilation
and installation for Cygwin is the same as for a Unix system:
- tar -xvpzf gawk-3.1.4.tar.gz
- cd gawk-3.1.4
+ tar -xvpzf gawk-3.1.5.tar.gz
+ cd gawk-3.1.5
./configure
make
@@ -18741,6 +18773,11 @@ in C or C++ is necessary when reading this minor node.
subject to change in a future `gawk' release. Be aware that you may
have to re-do everything, perhaps from scratch, at some future time.
+*Caution:* If you have written your own dynamic extensions, be sure to
+recompile them for each new `gawk' release. There is no guarantee of
+binary compatibility between different releases, no will there ever be
+such a guarantee.
+
* Menu:
* Internals:: A brief look at some `gawk' internals.
@@ -18758,7 +18795,7 @@ are something of a "bag on the side." Thus, this tour is brief and
simplistic; would-be `gawk' hackers are encouraged to spend some time
reading the source code before trying to write extensions based on the
material presented here. Of particular note are the files `awk.h',
-`builtin.c', and `eval.c'. Reading `awk.y' in order to see how the
+`builtin.c', and `eval.c'. Reading `awkgram.y' in order to see how the
parse tree is built would also be of use.
With the disclaimers out of the way, the following types, structure
@@ -18903,6 +18940,60 @@ when writing extensions. The next minor node shows how they are used:
the value of `gawk''s `ERRNO' variable, based on the current value
of the C `errno' variable. It is provided as a convenience.
+`void update_ERRNO_saved(int errno_saved)'
+ This function is called from within a C extension function to set
+ the value of `gawk''s `ERRNO' variable, based on the saved value
+ of the C `errno' variable provided as the argument. It is
+ provided as a convenience.
+
+ *Caution:* This function is new as of `gawk' 3.1.5.
+
+`void register_deferred_variable(const char *name, NODE *(*load_func)(void))'
+ This function is called to register a function to be called when a
+ reference to an undefined variable with the given name is
+ encountered. The callback function will never be called if the
+ variable exists already, so, unless the calling code is running at
+ program startup, it should first check whether a variable of the
+ given name already exists. The argument function must return a
+ pointer to a NODE containing the newly created variable. This
+ function is used to implement the builtin `ENVIRON' and `PROCINFO'
+ variables, so you can refer to them for examples.
+
+ *Caution:* This function is new as of `gawk' 3.1.5.
+
+`void register_open_hook(void *(*open_func)(IOBUF *))'
+ This function is called to register a function to be called
+ whenever a new data file is opened, leading to the creation of an
+ `IOBUF' structure in `iop_alloc'. After creating the new `IOBUF',
+ `iop_alloc' will call (in reverse order of registration, so the
+ last function registered is called first) each open hook until one
+ returns non-NULL. If any hook returns a non-NULL value, that
+ value is assigned to the `IOBUF''s `opaque' field (which will
+ presumably point to a structure containing additional state
+ associated with the input processing), and no further open hooks
+ are called.
+
+ The function called will most likely want to set the `IOBUF'
+ `get_record' method to indicate that future input records should
+ be retrieved by calling that method instead of using the standard
+ `gawk' input processing.
+
+ And the function will also probably want to set the `IOBUF'
+ `close_func' method to be called when the file is closed to clean
+ up any state associated with the input.
+
+ Finally, hook functions should be prepared to receive an `IOBUF'
+ structure where the `fd' field is set to `INVALID_HANDLE', meaning
+ that `gawk' was not able to open the file itself. In this case,
+ the hook function must be able to successfully open the file and
+ place a valid file descriptor there.
+
+ Currently, for example, the hook function facility is used to
+ implement the XML parser shared library extension. For more info,
+ please look in `awk.h' and in `io.c'.
+
+ *Caution:* This function is new as of `gawk' 3.1.5.
+
An argument that is supposed to be an array needs to be handled with
some extra code, in case the array being passed in is actually from a
function parameter.
@@ -19366,13 +19457,6 @@ Databases
It may be possible to map a GDBM/NDBM/SDBM file into an `awk'
array.
-Large character sets
- It would be nice if `gawk' could handle UTF-8 and other character
- sets that are larger than eight bits. (`gawk' currently has
- partial multi-byte support, but it needs an expert to really think
- out the multi-byte issues and consult with the maintainer on the
- appropriate changes.)
-
More `lint' warnings
There are more things that could be checked for portability.
@@ -20344,7 +20428,7 @@ GNU General Public License
Version 2, June 1991
Copyright (C) 1989, 1991 Free Software Foundation, Inc.
- 59 Temple Place, Suite 330, Boston, MA 02111, USA
+ 51 Franklin Street, Fifth Floor, Boston, MA 02111, USA
Everyone is permitted to copy and distribute verbatim copies
of this license document, but changing it is not allowed.
@@ -20659,7 +20743,7 @@ the exclusion of warranty; and each file should have at least the
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, USA.
+ Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02111, USA.
Also add information on how to contact you by electronic and paper mail.
@@ -20704,7 +20788,7 @@ GNU Free Documentation License
Version 1.2, November 2002
Copyright (C) 2000,2001,2002 Free Software Foundation, Inc.
- 59 Temple Place, Suite 330, Boston, MA 02111-1307, USA
+ 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA
Everyone is permitted to copy and distribute verbatim copies
of this license document, but changing it is not allowed.
@@ -21135,23 +21219,23 @@ Index
* Menu:
-* ! (exclamation point), ! operator: Boolean Ops. (line 6516)
-* ! (exclamation point), ! operator <1>: Egrep Program. (line 14645)
-* ! (exclamation point), ! operator: Precedence. (line 6690)
-* ! (exclamation point), != operator <1>: Precedence. (line 6703)
+* ! (exclamation point), ! operator: Boolean Ops. (line 6524)
+* ! (exclamation point), ! operator <1>: Egrep Program. (line 14679)
+* ! (exclamation point), ! operator: Precedence. (line 6698)
+* ! (exclamation point), != operator <1>: Precedence. (line 6711)
* ! (exclamation point), != operator: Typing and Comparison.
- (line 6334)
+ (line 6342)
* ! (exclamation point), !~ operator <1>: Expression Patterns.
- (line 6843)
-* ! (exclamation point), !~ operator <2>: Precedence. (line 6719)
+ (line 6851)
+* ! (exclamation point), !~ operator <2>: Precedence. (line 6727)
* ! (exclamation point), !~ operator <3>: Typing and Comparison.
- (line 6334)
-* ! (exclamation point), !~ operator <4>: Regexp Constants. (line 5524)
+ (line 6342)
+* ! (exclamation point), !~ operator <4>: Regexp Constants. (line 5532)
* ! (exclamation point), !~ operator <5>: Computed Regexps. (line 2656)
* ! (exclamation point), !~ operator <6>: Case-sensitivity. (line 2569)
* ! (exclamation point), !~ operator: Regexp Usage. (line 1989)
-* ! operator <1>: Egrep Program. (line 14653)
-* ! operator: Ranges. (line 6947)
+* ! operator <1>: Egrep Program. (line 14687)
+* ! operator: Ranges. (line 6955)
* " (double quote) <1>: Quoting. (line 1376)
* " (double quote): Read Terminal. (line 1165)
* " (double quote), regexp constants: Computed Regexps. (line 2677)
@@ -21161,165 +21245,161 @@ Index
(line 1233)
* # (number sign), commenting: Comments. (line 1296)
* $ (dollar sign): Regexp Operators. (line 2210)
-* $ (dollar sign), $ field operator <1>: Precedence. (line 6681)
-* $ (dollar sign), $ field operator: Fields. (line 3019)
+* $ (dollar sign), $ field operator <1>: Precedence. (line 6689)
+* $ (dollar sign), $ field operator: Fields. (line 3027)
* $ (dollar sign), incrementing fields and arrays: Increment Ops.
- (line 6176)
-* $ field operator: Fields. (line 3019)
-* % (percent sign), % operator: Precedence. (line 6693)
-* % (percent sign), %= operator <1>: Precedence. (line 6734)
-* % (percent sign), %= operator: Assignment Ops. (line 6103)
-* & (ampersand), && operator <1>: Precedence. (line 6725)
-* & (ampersand), && operator: Boolean Ops. (line 6506)
+ (line 6184)
+* $ field operator: Fields. (line 3027)
+* % (percent sign), % operator: Precedence. (line 6701)
+* % (percent sign), %= operator <1>: Precedence. (line 6742)
+* % (percent sign), %= operator: Assignment Ops. (line 6111)
+* & (ampersand), && operator <1>: Precedence. (line 6733)
+* & (ampersand), && operator: Boolean Ops. (line 6514)
* & (ampersand), gsub/gensub/sub functions and: Gory Details.
- (line 9622)
+ (line 9642)
* ' (single quote) <1>: Quoting. (line 1370)
* ' (single quote) <2>: Long. (line 1223)
* ' (single quote): One-shot. (line 1126)
* ' (single quote), vs. apostrophe: Comments. (line 1317)
* ' (single quote), with double quotes: Quoting. (line 1392)
* () (parentheses): Regexp Operators. (line 2253)
-* () (parentheses), pgawk program: Profiling. (line 11862)
+* () (parentheses), pgawk program: Profiling. (line 11877)
* * (asterisk), * operator, as multiplication operator: Precedence.
- (line 6693)
+ (line 6701)
* * (asterisk), * operator, as regexp operator: Regexp Operators.
(line 2261)
* * (asterisk), * operator, null strings, matching: Gory Details.
- (line 9776)
-* * (asterisk), ** operator <1>: Options. (line 12157)
-* * (asterisk), ** operator <2>: Precedence. (line 6687)
-* * (asterisk), ** operator: Arithmetic Ops. (line 5890)
-* * (asterisk), **= operator <1>: Options. (line 12157)
-* * (asterisk), **= operator <2>: Precedence. (line 6734)
-* * (asterisk), **= operator: Assignment Ops. (line 6103)
-* * (asterisk), *= operator <1>: Precedence. (line 6734)
-* * (asterisk), *= operator: Assignment Ops. (line 6103)
+ (line 9796)
+* * (asterisk), ** operator <1>: Options. (line 12191)
+* * (asterisk), ** operator <2>: Precedence. (line 6695)
+* * (asterisk), ** operator: Arithmetic Ops. (line 5898)
+* * (asterisk), **= operator <1>: Options. (line 12191)
+* * (asterisk), **= operator <2>: Precedence. (line 6742)
+* * (asterisk), **= operator: Assignment Ops. (line 6111)
+* * (asterisk), *= operator <1>: Precedence. (line 6742)
+* * (asterisk), *= operator: Assignment Ops. (line 6111)
* + (plus sign): Regexp Operators. (line 2276)
-* + (plus sign), + operator: Precedence. (line 6690)
-* + (plus sign), ++ operator <1>: Precedence. (line 6684)
-* + (plus sign), ++ operator: Increment Ops. (line 6186)
-* + (plus sign), += operator <1>: Precedence. (line 6734)
-* + (plus sign), += operator: Assignment Ops. (line 6056)
+* + (plus sign), + operator: Precedence. (line 6698)
+* + (plus sign), ++ operator <1>: Precedence. (line 6692)
+* + (plus sign), ++ operator: Increment Ops. (line 6194)
+* + (plus sign), += operator <1>: Precedence. (line 6742)
+* + (plus sign), += operator: Assignment Ops. (line 6064)
* + (plus sign), decrement/increment operators: Increment Ops.
- (line 6157)
-* , (comma), in range patterns: Ranges. (line 6905)
-* - (hyphen), - operator: Precedence. (line 6690)
+ (line 6165)
+* , (comma), in range patterns: Ranges. (line 6913)
+* - (hyphen), - operator: Precedence. (line 6698)
* - (hyphen), -- (decrement/increment) operator: Precedence.
- (line 6684)
-* - (hyphen), -- operator: Increment Ops. (line 6194)
-* - (hyphen), -= operator <1>: Precedence. (line 6734)
-* - (hyphen), -= operator: Assignment Ops. (line 6103)
-* - (hyphen), filenames beginning with: Options. (line 12058)
+ (line 6692)
+* - (hyphen), -- operator: Increment Ops. (line 6202)
+* - (hyphen), -= operator <1>: Precedence. (line 6742)
+* - (hyphen), -= operator: Assignment Ops. (line 6111)
+* - (hyphen), filenames beginning with: Options. (line 12073)
* - (hyphen), in character lists: Character Lists. (line 2364)
-* --assign option: Options. (line 12021)
-* --compat option: Options. (line 12070)
-* --copyleft option: Options. (line 12083)
-* --copyright option: Options. (line 12078)
+* --assign option: Options. (line 12036)
+* --compat option: Options. (line 12085)
+* --copyleft option: Options. (line 12098)
+* --copyright option: Options. (line 12093)
* --disable-lint configuration option: Additional Configuration Options.
- (line 17446)
+ (line 17477)
* --disable-nls configuration option: Additional Configuration Options.
- (line 17461)
-* --dump-variables option <1>: Library Names. (line 12546)
-* --dump-variables option: Options. (line 12086)
+ (line 17492)
+* --dump-variables option <1>: Library Names. (line 12580)
+* --dump-variables option: Options. (line 12101)
* --enable-portals configuration option <1>: Additional Configuration Options.
- (line 17432)
-* --enable-portals configuration option: Portal Files. (line 11710)
+ (line 17469)
+* --enable-portals configuration option: Portal Files. (line 11725)
* --enable-switch configuration option: Additional Configuration Options.
- (line 17436)
-* --field-separator option: Options. (line 12012)
-* --file option: Options. (line 12016)
-* --gen-po option <1>: Options. (line 12102)
-* --gen-po option: String Extraction. (line 11157)
-* --help option: Options. (line 12111)
-* --lint option <1>: Options. (line 12116)
-* --lint option: Command Line. (line 11987)
-* --lint-old option: Options. (line 12128)
-* --non-decimal-data option <1>: Options. (line 12133)
-* --non-decimal-data option: Nondecimal Data. (line 11465)
+ (line 17473)
+* --exec option: Options. (line 12117)
+* --field-separator option: Options. (line 12027)
+* --file option: Options. (line 12031)
+* --gen-po option <1>: Options. (line 12136)
+* --gen-po option: String Extraction. (line 11177)
+* --help option: Options. (line 12145)
+* --lint option <1>: Options. (line 12150)
+* --lint option: Command Line. (line 12002)
+* --lint-old option: Options. (line 12162)
+* --non-decimal-data option <1>: Options. (line 12167)
+* --non-decimal-data option: Nondecimal Data. (line 11480)
* --non-decimal-data option, strtonum function and: Nondecimal Data.
- (line 11495)
-* --posix option: Options. (line 12141)
-* --posix option, --traditional option and: Options. (line 12168)
-* --profile option <1>: Options. (line 12174)
-* --profile option: Profiling. (line 11734)
-* --re-interval option: Options. (line 12186)
-* --source option: Options. (line 12193)
-* --traditional option: Options. (line 12070)
-* --traditional option, --posix option and: Options. (line 12168)
-* --usage option: Options. (line 12111)
-* --version option: Options. (line 12201)
-* --with-included-gettext configuration option <1>: Additional Configuration Options.
- (line 17440)
-* --with-included-gettext configuration option: Gawk I18N. (line 11423)
-* --with-included-gettext configuration option, configuring gawk with: Additional Configuration Options.
- (line 17440)
-* -f option: Options. (line 12016)
-* -F option <1>: Options. (line 12012)
+ (line 11510)
+* --posix option: Options. (line 12175)
+* --posix option, --traditional option and: Options. (line 12202)
+* --profile option <1>: Options. (line 12208)
+* --profile option: Profiling. (line 11749)
+* --re-interval option: Options. (line 12220)
+* --source option: Options. (line 12227)
+* --traditional option: Options. (line 12085)
+* --traditional option, --posix option and: Options. (line 12202)
+* --usage option: Options. (line 12145)
+* --version option: Options. (line 12235)
+* -f option: Options. (line 12031)
+* -F option <1>: Options. (line 12027)
* -F option: Command Line Field Separator.
- (line 3419)
+ (line 3427)
* -f option: Long. (line 1202)
-* -F option, -Ft sets FS to TAB: Options. (line 12209)
-* -f option, on command line: Options. (line 12214)
-* -F option, troubleshooting: Known Bugs. (line 12420)
-* -mf/-mr options: Options. (line 12036)
-* -v option: Options. (line 12021)
+* -F option, -Ft sets FS to TAB: Options. (line 12243)
+* -f option, on command line: Options. (line 12248)
+* -F option, troubleshooting: Known Bugs. (line 12454)
+* -mf/-mr options: Options. (line 12051)
+* -v option: Options. (line 12036)
* -v option, variables, assigning: Assignment Options.
- (line 5669)
-* -W option: Options. (line 12046)
+ (line 5677)
+* -W option: Options. (line 12061)
* . (period): Regexp Operators. (line 2218)
* .mo files: Explaining gettext.
- (line 10934)
-* .mo files, converting from .po: I18N Example. (line 11380)
-* .mo files, specifying directory of <1>: Programmer i18n. (line 11070)
+ (line 10954)
+* .mo files, converting from .po: I18N Example. (line 11400)
+* .mo files, specifying directory of <1>: Programmer i18n. (line 11090)
* .mo files, specifying directory of: Explaining gettext.
- (line 10946)
-* .po files <1>: Translator i18n. (line 11136)
+ (line 10966)
+* .po files <1>: Translator i18n. (line 11156)
* .po files: Explaining gettext.
- (line 10931)
-* .po files, converting to .mo: I18N Example. (line 11380)
+ (line 10951)
+* .po files, converting to .mo: I18N Example. (line 11400)
* / (forward slash): Regexp. (line 1949)
-* / (forward slash), / operator: Precedence. (line 6693)
-* / (forward slash), /= operator <1>: Precedence. (line 6734)
-* / (forward slash), /= operator: Assignment Ops. (line 6103)
+* / (forward slash), / operator: Precedence. (line 6701)
+* / (forward slash), /= operator <1>: Precedence. (line 6742)
+* / (forward slash), /= operator: Assignment Ops. (line 6111)
* / (forward slash), /= operator, vs. /=.../ regexp constant: Assignment Ops.
- (line 6129)
+ (line 6137)
* / (forward slash), patterns and: Expression Patterns.
- (line 6843)
-* /= operator vs. /=.../ regexp constant: Assignment Ops. (line 6129)
-* /dev/... special files (gawk): Special FD. (line 5046)
-* /inet/ files (gawk): TCP/IP Networking. (line 11643)
-* /p files (gawk): Portal Files. (line 11710)
+ (line 6851)
+* /= operator vs. /=.../ regexp constant: Assignment Ops. (line 6137)
+* /dev/... special files (gawk): Special FD. (line 5054)
+* /inet/ files (gawk): TCP/IP Networking. (line 11658)
+* /p files (gawk): Portal Files. (line 11725)
* ; (semicolon): Statements/Lines. (line 1853)
-* ; (semicolon), AWKPATH variable and: PC Using. (line 17826)
+* ; (semicolon), AWKPATH variable and: PC Using. (line 17858)
* ; (semicolon), separating statements in actions <1>: Statements.
- (line 7220)
+ (line 7228)
* ; (semicolon), separating statements in actions: Action Overview.
- (line 7170)
-* < (left angle bracket), < operator <1>: Precedence. (line 6703)
+ (line 7178)
+* < (left angle bracket), < operator <1>: Precedence. (line 6711)
* < (left angle bracket), < operator: Typing and Comparison.
- (line 6334)
-* < (left angle bracket), < operator (I/O): Getline/File. (line 3971)
-* < (left angle bracket), <= operator <1>: Precedence. (line 6703)
+ (line 6342)
+* < (left angle bracket), < operator (I/O): Getline/File. (line 3979)
+* < (left angle bracket), <= operator <1>: Precedence. (line 6711)
* < (left angle bracket), <= operator: Typing and Comparison.
- (line 6334)
-* = (equals sign), = operator: Assignment Ops. (line 5981)
-* = (equals sign), == operator <1>: Precedence. (line 6703)
+ (line 6342)
+* = (equals sign), = operator: Assignment Ops. (line 5989)
+* = (equals sign), == operator <1>: Precedence. (line 6711)
* = (equals sign), == operator: Typing and Comparison.
- (line 6334)
-* > (right angle bracket), > operator <1>: Precedence. (line 6703)
+ (line 6342)
+* > (right angle bracket), > operator <1>: Precedence. (line 6711)
* > (right angle bracket), > operator: Typing and Comparison.
- (line 6334)
-* > (right angle bracket), > operator (I/O): Redirection. (line 4856)
-* > (right angle bracket), >= operator <1>: Precedence. (line 6703)
+ (line 6342)
+* > (right angle bracket), > operator (I/O): Redirection. (line 4864)
+* > (right angle bracket), >= operator <1>: Precedence. (line 6711)
* > (right angle bracket), >= operator: Typing and Comparison.
- (line 6334)
+ (line 6342)
* > (right angle bracket), >> operator (I/O) <1>: Precedence.
- (line 6703)
-* > (right angle bracket), >> operator (I/O): Redirection. (line 4884)
+ (line 6711)
+* > (right angle bracket), >> operator (I/O): Redirection. (line 4892)
* ? (question mark) <1>: GNU Regexp Operators.
(line 2506)
* ? (question mark): Regexp Operators. (line 2285)
-* ? (question mark), ?: operator: Precedence. (line 6731)
+* ? (question mark), ?: operator: Precedence. (line 6739)
* [] (square brackets): Regexp Operators. (line 2230)
* \ (backslash) <1>: Regexp Operators. (line 2193)
* \ (backslash) <2>: Quoting. (line 1370)
@@ -21353,8 +21433,8 @@ Index
* \ (backslash), \y operator (gawk): GNU Regexp Operators.
(line 2485)
* \ (backslash), as field separators: Command Line Field Separator.
- (line 3440)
-* \ (backslash), continuing lines and <1>: Egrep Program. (line 14703)
+ (line 3448)
+* \ (backslash), continuing lines and <1>: Egrep Program. (line 14737)
* \ (backslash), continuing lines and: Statements/Lines. (line 1783)
* \ (backslash), continuing lines and, comments and: Statements/Lines.
(line 1838)
@@ -21363,7 +21443,7 @@ Index
* \ (backslash), continuing lines and, in csh: More Complex.
(line 1708)
* \ (backslash), gsub/gensub/sub functions and: Gory Details.
- (line 9622)
+ (line 9642)
* \ (backslash), in character lists: Character Lists. (line 2364)
* \ (backslash), in escape sequences: Escape Sequences. (line 2038)
* \ (backslash), in escape sequences, POSIX and: Escape Sequences.
@@ -21372,214 +21452,214 @@ Index
* ^ (caret) <1>: GNU Regexp Operators.
(line 2506)
* ^ (caret): Regexp Operators. (line 2197)
-* ^ (caret), ^ operator <1>: Options. (line 12157)
-* ^ (caret), ^ operator: Precedence. (line 6687)
-* ^ (caret), ^= operator <1>: Options. (line 12157)
-* ^ (caret), ^= operator <2>: Precedence. (line 6734)
-* ^ (caret), ^= operator: Assignment Ops. (line 6103)
+* ^ (caret), ^ operator <1>: Options. (line 12191)
+* ^ (caret), ^ operator: Precedence. (line 6695)
+* ^ (caret), ^= operator <1>: Options. (line 12191)
+* ^ (caret), ^= operator <2>: Precedence. (line 6742)
+* ^ (caret), ^= operator: Assignment Ops. (line 6111)
* ^ (caret), in character lists: Character Lists. (line 2364)
* _ (underscore), _ C macro: Explaining gettext.
- (line 10963)
+ (line 10983)
* _ (underscore), in names of private variables: Library Names.
- (line 12530)
-* _ (underscore), translatable string: Programmer i18n. (line 11092)
-* _gr_init user-defined function: Group Functions. (line 14008)
-* _pw_init user-defined function: Passwd Functions. (line 13794)
-* accessing fields: Fields. (line 3006)
-* account information <1>: Group Functions. (line 13934)
-* account information: Passwd Functions. (line 13719)
-* actions: Action Overview. (line 7157)
-* actions, control statements in: Statements. (line 7216)
+ (line 12564)
+* _ (underscore), translatable string: Programmer i18n. (line 11112)
+* _gr_init user-defined function: Group Functions. (line 14042)
+* _pw_init user-defined function: Passwd Functions. (line 13828)
+* accessing fields: Fields. (line 3014)
+* account information <1>: Group Functions. (line 13968)
+* account information: Passwd Functions. (line 13753)
+* actions: Action Overview. (line 7165)
+* actions, control statements in: Statements. (line 7224)
* actions, default: Very Simple. (line 1559)
* actions, empty: Very Simple. (line 1564)
-* adding, features to gawk: Adding Code. (line 18515)
-* adding, fields: Changing Fields. (line 3169)
+* adding, features to gawk: Adding Code. (line 18547)
+* adding, fields: Changing Fields. (line 3177)
* adding, functions to gawk: Dynamic Extensions.
- (line 18733)
-* advanced features, buffering: I/O Functions. (line 9884)
+ (line 18765)
+* advanced features, buffering: I/O Functions. (line 9904)
* advanced features, close function: Close Files And Pipes.
- (line 5315)
+ (line 5323)
* advanced features, constants, values of: Nondecimal-numbers.
- (line 5510)
-* advanced features, data files as single record: Records. (line 2971)
-* advanced features, fixed-width data: Constant Size. (line 3597)
-* advanced features, FNR/NR variables: Auto-set. (line 8140)
-* advanced features, gawk: Advanced Features. (line 11434)
-* advanced features, gawk, BSD portals: Portal Files. (line 11710)
+ (line 5518)
+* advanced features, data files as single record: Records. (line 2979)
+* advanced features, fixed-width data: Constant Size. (line 3605)
+* advanced features, FNR/NR variables: Auto-set. (line 8148)
+* advanced features, gawk: Advanced Features. (line 11449)
+* advanced features, gawk, BSD portals: Portal Files. (line 11725)
* advanced features, gawk, network programming: TCP/IP Networking.
- (line 11643)
+ (line 11658)
* advanced features, gawk, nondecimal input data: Nondecimal Data.
- (line 11465)
+ (line 11480)
* advanced features, gawk, processes, communicating with: Two-way I/O.
- (line 11524)
+ (line 11539)
* advanced features, network connections, See Also networks, connections: Advanced Features.
- (line 11434)
-* advanced features, null strings, matching: Gory Details. (line 9776)
-* advanced features, operators, precedence: Increment Ops. (line 6207)
-* advanced features, piping into sh: Redirection. (line 4973)
-* advanced features, regexp constants: Assignment Ops. (line 6129)
-* Aho, Alfred <1>: Contributors. (line 17022)
+ (line 11449)
+* advanced features, null strings, matching: Gory Details. (line 9796)
+* advanced features, operators, precedence: Increment Ops. (line 6215)
+* advanced features, piping into sh: Redirection. (line 4981)
+* advanced features, regexp constants: Assignment Ops. (line 6137)
+* Aho, Alfred <1>: Contributors. (line 17062)
* Aho, Alfred: History. (line 640)
-* alarm clock example program: Alarm Program. (line 15446)
-* alarm.awk program: Alarm Program. (line 15464)
-* algorithms: Basic High Level. (line 19519)
+* alarm clock example program: Alarm Program. (line 15480)
+* alarm.awk program: Alarm Program. (line 15498)
+* algorithms: Basic High Level. (line 19603)
* Alpha (DEC): Manual History. (line 886)
-* amazing awk assembler (aaa): Glossary. (line 19753)
-* amazingly workable formatter (awf): Glossary. (line 19761)
+* amazing awk assembler (aaa): Glossary. (line 19837)
+* amazingly workable formatter (awf): Glossary. (line 19845)
* ambiguity, syntactic: /= operator vs. /=.../ regexp constant: Assignment Ops.
- (line 6129)
+ (line 6137)
* amiga: Amiga Installation.
- (line 17535)
-* ampersand (&), && operator: Boolean Ops. (line 6506)
-* ampersand (&), &&operator: Precedence. (line 6725)
+ (line 17569)
+* ampersand (&), && operator: Boolean Ops. (line 6514)
+* ampersand (&), &&operator: Precedence. (line 6733)
* ampersand (&), gsub/gensub/sub functions and: Gory Details.
- (line 9622)
-* AND bitwise operation: Bitwise Functions. (line 10294)
-* and Boolean-logic operator: Boolean Ops. (line 6455)
-* and function (gawk): Bitwise Functions. (line 10327)
-* ANSI: Glossary. (line 19772)
-* archeologists: Bugs. (line 18282)
-* ARGC/ARGV variables <1>: ARGC and ARGV. (line 8172)
-* ARGC/ARGV variables: Auto-set. (line 7964)
+ (line 9642)
+* AND bitwise operation: Bitwise Functions. (line 10314)
+* and Boolean-logic operator: Boolean Ops. (line 6463)
+* and function (gawk): Bitwise Functions. (line 10347)
+* ANSI: Glossary. (line 19856)
+* archeologists: Bugs. (line 18314)
+* ARGC/ARGV variables <1>: ARGC and ARGV. (line 8180)
+* ARGC/ARGV variables: Auto-set. (line 7972)
* ARGC/ARGV variables, command-line arguments: Other Arguments.
- (line 12277)
+ (line 12311)
* ARGC/ARGV variables, portability and: Executable Scripts.
(line 1270)
-* ARGIND variable: Auto-set. (line 7993)
-* ARGIND variable, command-line arguments: Other Arguments. (line 12277)
-* arguments, command-line <1>: Other Arguments. (line 12271)
-* arguments, command-line <2>: ARGC and ARGV. (line 8172)
-* arguments, command-line: Auto-set. (line 7964)
-* arguments, command-line, invoking awk: Command Line. (line 11973)
-* arguments, in function calls: Function Calls. (line 6595)
-* arguments, processing: Getopt Function. (line 13426)
-* arguments, retrieving: Internals. (line 18870)
-* arithmetic operators: Arithmetic Ops. (line 5815)
-* arrays: Arrays. (line 8268)
-* arrays, as parameters to functions: Function Caveats. (line 10696)
-* arrays, associative: Array Intro. (line 8348)
-* arrays, associative, clearing: Internals. (line 18815)
+* ARGIND variable: Auto-set. (line 8001)
+* ARGIND variable, command-line arguments: Other Arguments. (line 12311)
+* arguments, command-line <1>: Other Arguments. (line 12305)
+* arguments, command-line <2>: ARGC and ARGV. (line 8180)
+* arguments, command-line: Auto-set. (line 7972)
+* arguments, command-line, invoking awk: Command Line. (line 11988)
+* arguments, in function calls: Function Calls. (line 6603)
+* arguments, processing: Getopt Function. (line 13460)
+* arguments, retrieving: Internals. (line 18907)
+* arithmetic operators: Arithmetic Ops. (line 5823)
+* arrays: Arrays. (line 8276)
+* arrays, as parameters to functions: Function Caveats. (line 10716)
+* arrays, associative: Array Intro. (line 8356)
+* arrays, associative, clearing: Internals. (line 18852)
* arrays, associative, library functions and: Library Names.
- (line 12558)
-* arrays, deleting entire contents: Delete. (line 8610)
+ (line 12592)
+* arrays, deleting entire contents: Delete. (line 8618)
* arrays, elements, assigning: Assigning Elements.
- (line 8452)
-* arrays, elements, deleting: Delete. (line 8577)
-* arrays, elements, installing: Internals. (line 18819)
-* arrays, elements, order of: Scanning an Array. (line 8563)
+ (line 8460)
+* arrays, elements, deleting: Delete. (line 8585)
+* arrays, elements, installing: Internals. (line 18856)
+* arrays, elements, order of: Scanning an Array. (line 8571)
* arrays, elements, referencing: Reference to Elements.
- (line 8405)
-* arrays, elements, retrieving number of: String Functions. (line 9168)
-* arrays, for statement and: Scanning an Array. (line 8536)
-* arrays, IGNORECASE variable and: Array Intro. (line 8390)
-* arrays, indexing: Array Intro. (line 8348)
-* arrays, merging into strings: Join Function. (line 13033)
-* arrays, multidimensional: Multi-dimensional. (line 8746)
-* arrays, multidimensional, scanning: Multi-scanning. (line 8832)
-* arrays, names of: Arrays. (line 8279)
-* arrays, scanning: Scanning an Array. (line 8522)
-* arrays, sorting: Array Sorting. (line 8867)
-* arrays, sorting, IGNORECASE variable and: Array Sorting. (line 8945)
-* arrays, sparse: Array Intro. (line 8369)
+ (line 8413)
+* arrays, elements, retrieving number of: String Functions. (line 9176)
+* arrays, for statement and: Scanning an Array. (line 8544)
+* arrays, IGNORECASE variable and: Array Intro. (line 8398)
+* arrays, indexing: Array Intro. (line 8356)
+* arrays, merging into strings: Join Function. (line 13067)
+* arrays, multidimensional: Multi-dimensional. (line 8754)
+* arrays, multidimensional, scanning: Multi-scanning. (line 8840)
+* arrays, names of: Arrays. (line 8287)
+* arrays, scanning: Scanning an Array. (line 8530)
+* arrays, sorting: Array Sorting. (line 8875)
+* arrays, sorting, IGNORECASE variable and: Array Sorting. (line 8953)
+* arrays, sparse: Array Intro. (line 8377)
* arrays, subscripts: Numeric Array Subscripts.
- (line 8648)
+ (line 8656)
* arrays, subscripts, uninitialized variables as: Uninitialized Subscripts.
- (line 8699)
+ (line 8707)
* artificial intelligence, gawk and: Distribution contents.
- (line 17254)
-* ASCII: Ordinal Functions. (line 12980)
-* asort function (gawk) <1>: String Functions. (line 9168)
-* asort function (gawk): Array Sorting. (line 8867)
-* asort function (gawk), arrays, sorting: Array Sorting. (line 8867)
-* asorti function (gawk): String Functions. (line 9197)
-* assert function (C library): Assert Function. (line 12781)
-* assert user-defined function: Assert Function. (line 12803)
-* assertions: Assert Function. (line 12781)
-* assignment operators: Assignment Ops. (line 5981)
-* assignment operators, evaluation order: Assignment Ops. (line 6085)
-* assignment operators, lvalues/rvalues: Assignment Ops. (line 6006)
-* assignments as filenames: Ignoring Assigns. (line 13384)
-* assoc_clear internal function: Internals. (line 18815)
-* assoc_lookup internal function: Internals. (line 18819)
-* associative arrays: Array Intro. (line 8348)
+ (line 17294)
+* ASCII: Ordinal Functions. (line 13014)
+* asort function (gawk) <1>: String Functions. (line 9176)
+* asort function (gawk): Array Sorting. (line 8875)
+* asort function (gawk), arrays, sorting: Array Sorting. (line 8875)
+* asorti function (gawk): String Functions. (line 9205)
+* assert function (C library): Assert Function. (line 12815)
+* assert user-defined function: Assert Function. (line 12837)
+* assertions: Assert Function. (line 12815)
+* assignment operators: Assignment Ops. (line 5989)
+* assignment operators, evaluation order: Assignment Ops. (line 6093)
+* assignment operators, lvalues/rvalues: Assignment Ops. (line 6014)
+* assignments as filenames: Ignoring Assigns. (line 13418)
+* assoc_clear internal function: Internals. (line 18852)
+* assoc_lookup internal function: Internals. (line 18856)
+* associative arrays: Array Intro. (line 8356)
* asterisk (*), * operator, as multiplication operator: Precedence.
- (line 6693)
+ (line 6701)
* asterisk (*), * operator, as regexp operator: Regexp Operators.
(line 2261)
* asterisk (*), * operator, null strings, matching: Gory Details.
- (line 9776)
-* asterisk (*), ** operator <1>: Options. (line 12157)
-* asterisk (*), ** operator <2>: Precedence. (line 6687)
-* asterisk (*), ** operator: Arithmetic Ops. (line 5890)
-* asterisk (*), **= operator <1>: Options. (line 12157)
-* asterisk (*), **= operator <2>: Precedence. (line 6734)
-* asterisk (*), **= operator: Assignment Ops. (line 6103)
-* asterisk (*), *= operator <1>: Precedence. (line 6734)
-* asterisk (*), *= operator: Assignment Ops. (line 6103)
-* atan2 function: Numeric Functions. (line 9074)
+ (line 9796)
+* asterisk (*), ** operator <1>: Options. (line 12191)
+* asterisk (*), ** operator <2>: Precedence. (line 6695)
+* asterisk (*), ** operator: Arithmetic Ops. (line 5898)
+* asterisk (*), **= operator <1>: Options. (line 12191)
+* asterisk (*), **= operator <2>: Precedence. (line 6742)
+* asterisk (*), **= operator: Assignment Ops. (line 6111)
+* asterisk (*), *= operator <1>: Precedence. (line 6742)
+* asterisk (*), *= operator: Assignment Ops. (line 6111)
+* atan2 function: Numeric Functions. (line 9082)
* atari: Atari Installation.
- (line 18129)
-* awf (amazingly workable formatter) program: Glossary. (line 19761)
-* awk language, POSIX version: Assignment Ops. (line 6114)
+ (line 18161)
+* awf (amazingly workable formatter) program: Glossary. (line 19845)
+* awk language, POSIX version: Assignment Ops. (line 6122)
* awk programs <1>: Two Rules. (line 1647)
* awk programs <2>: Executable Scripts.
(line 1233)
* awk programs: Getting Started. (line 1038)
* awk programs, complex: When. (line 1923)
-* awk programs, documenting <1>: Library Names. (line 12507)
+* awk programs, documenting <1>: Library Names. (line 12541)
* awk programs, documenting: Comments. (line 1296)
-* awk programs, examples of: Sample Programs. (line 14166)
-* awk programs, execution of: Next Statement. (line 7637)
-* awk programs, internationalizing <1>: Programmer i18n. (line 11031)
-* awk programs, internationalizing: I18N Functions. (line 10416)
+* awk programs, examples of: Sample Programs. (line 14200)
+* awk programs, execution of: Next Statement. (line 7645)
+* awk programs, internationalizing <1>: Programmer i18n. (line 11051)
+* awk programs, internationalizing: I18N Functions. (line 10436)
* awk programs, lengthy: Long. (line 1196)
-* awk programs, lengthy, assertions: Assert Function. (line 12781)
-* awk programs, location of: Options. (line 12016)
+* awk programs, lengthy, assertions: Assert Function. (line 12815)
+* awk programs, location of: Options. (line 12031)
* awk programs, one-line examples: Very Simple. (line 1570)
-* awk programs, profiling: Profiling. (line 11725)
-* awk programs, profiling, enabling: Options. (line 12174)
+* awk programs, profiling: Profiling. (line 11740)
+* awk programs, profiling, enabling: Options. (line 12208)
* awk programs, running <1>: Long. (line 1196)
* awk programs, running: Running gawk. (line 1084)
* awk programs, running, from shell scripts: One-shot. (line 1133)
* awk programs, running, without input files: Read Terminal.
(line 1157)
* awk programs, shell variables in: Using Shell Variables.
- (line 7106)
+ (line 7114)
* awk, function of: Getting Started. (line 1032)
* awk, gawk and <1>: This Manual. (line 718)
* awk, gawk and: Preface. (line 569)
* awk, history of: History. (line 640)
-* awk, implementation issues, pipes: Redirection. (line 4965)
-* awk, implementations: Other Versions. (line 18351)
-* awk, implementations, limits: Getline Notes. (line 4185)
-* awk, invoking: Command Line. (line 11973)
+* awk, implementation issues, pipes: Redirection. (line 4973)
+* awk, implementations: Other Versions. (line 18383)
+* awk, implementations, limits: Getline Notes. (line 4193)
+* awk, invoking: Command Line. (line 11988)
* awk, new vs. old: Names. (line 677)
-* awk, new vs. old, OFMT variable: Conversion. (line 5759)
+* awk, new vs. old, OFMT variable: Conversion. (line 5767)
* awk, POSIX and: Preface. (line 569)
* awk, POSIX and, See Also POSIX awk: Preface. (line 569)
* awk, regexp constants and: Typing and Comparison.
- (line 6434)
+ (line 6442)
* awk, See Also gawk: Preface. (line 582)
* awk, terms describing: This Manual. (line 711)
* awk, uses for <1>: When. (line 1899)
* awk, uses for <2>: Getting Started. (line 1038)
* awk, uses for: Preface. (line 569)
-* awk, versions of <1>: V7/SVR3.1. (line 16631)
+* awk, versions of <1>: V7/SVR3.1. (line 16665)
* awk, versions of: Names. (line 681)
-* awk, versions of, changes between SVR3.1 and SVR4: SVR4. (line 16690)
+* awk, versions of, changes between SVR3.1 and SVR4: SVR4. (line 16724)
* awk, versions of, changes between SVR4 and POSIX awk: POSIX.
- (line 16731)
+ (line 16765)
* awk, versions of, changes between V7 and SVR3.1: V7/SVR3.1.
- (line 16631)
-* awk, versions of, See Also Bell Laboratories awk: BTL. (line 16775)
-* awk.h file (internal): Internals. (line 18764)
-* awka compiler for awk: Other Versions. (line 18421)
-* AWKNUM internal type: Internals. (line 18768)
-* AWKPATH environment variable <1>: PC Using. (line 17826)
-* AWKPATH environment variable: AWKPATH Variable. (line 12327)
-* awkprof.out file: Profiling. (line 11729)
-* awksed.awk program: Simple Sed. (line 16155)
-* awkvars.out file: Options. (line 12086)
+ (line 16665)
+* awk, versions of, See Also Bell Laboratories awk: BTL. (line 16809)
+* awk.h file (internal): Internals. (line 18801)
+* awka compiler for awk: Other Versions. (line 18453)
+* AWKNUM internal type: Internals. (line 18805)
+* AWKPATH environment variable <1>: PC Using. (line 17858)
+* AWKPATH environment variable: AWKPATH Variable. (line 12361)
+* awkprof.out file: Profiling. (line 11744)
+* awksed.awk program: Simple Sed. (line 16189)
+* awkvars.out file: Options. (line 12101)
* backslash (\) <1>: Regexp Operators. (line 2193)
* backslash (\) <2>: Quoting. (line 1370)
* backslash (\) <3>: Comments. (line 1339)
@@ -21612,8 +21692,8 @@ Index
* backslash (\), \y operator (gawk): GNU Regexp Operators.
(line 2485)
* backslash (\), as field separators: Command Line Field Separator.
- (line 3440)
-* backslash (\), continuing lines and <1>: Egrep Program. (line 14703)
+ (line 3448)
+* backslash (\), continuing lines and <1>: Egrep Program. (line 14737)
* backslash (\), continuing lines and: Statements/Lines. (line 1783)
* backslash (\), continuing lines and, comments and: Statements/Lines.
(line 1838)
@@ -21622,7 +21702,7 @@ Index
* backslash (\), continuing lines and, in csh: More Complex.
(line 1708)
* backslash (\), gsub/gensub/sub functions and: Gory Details.
- (line 9622)
+ (line 9642)
* backslash (\), in character lists: Character Lists. (line 2364)
* backslash (\), in escape sequences: Escape Sequences. (line 2038)
* backslash (\), in escape sequences, POSIX and: Escape Sequences.
@@ -21630,108 +21710,109 @@ Index
* backslash (\), regexp constants: Computed Regexps. (line 2677)
* BBS-list file: Sample Data Files. (line 1461)
* Beebe, Nelson: Acknowledgments. (line 995)
-* Beebe, Nelson H.F.: Other Versions. (line 18433)
-* BEGIN pattern <1>: BEGIN/END. (line 6972)
-* BEGIN pattern <2>: Field Separators. (line 3292)
+* Beebe, Nelson H.F.: Other Versions. (line 18465)
+* BEGIN pattern <1>: BEGIN/END. (line 6980)
+* BEGIN pattern <2>: Field Separators. (line 3300)
* BEGIN pattern: Records. (line 2839)
* BEGIN pattern, assert user-defined function and: Assert Function.
- (line 12857)
+ (line 12891)
* BEGIN pattern, Boolean patterns and: Expression Patterns.
- (line 6892)
-* BEGIN pattern, exit statement and: Exit Statement. (line 7735)
-* BEGIN pattern, getline and: Getline Notes. (line 4190)
-* BEGIN pattern, headings, adding: Print Examples. (line 4342)
+ (line 6900)
+* BEGIN pattern, exit statement and: Exit Statement. (line 7743)
+* BEGIN pattern, getline and: Getline Notes. (line 4198)
+* BEGIN pattern, headings, adding: Print Examples. (line 4350)
* BEGIN pattern, next/nextfile statements and <1>: Next Statement.
- (line 7660)
+ (line 7668)
* BEGIN pattern, next/nextfile statements and: I/O And BEGIN/END.
- (line 7080)
+ (line 7088)
* BEGIN pattern, OFS/ORS variables, assigning values to: Output Separators.
- (line 4399)
-* BEGIN pattern, operators and: Using BEGIN/END. (line 7002)
-* BEGIN pattern, pgawk program: Profiling. (line 11787)
-* BEGIN pattern, print statement and: I/O And BEGIN/END. (line 7060)
-* BEGIN pattern, pwcat program: Passwd Functions. (line 13828)
-* BEGIN pattern, running awk programs and: Cut Program. (line 14297)
-* BEGIN pattern, TEXTDOMAIN variable and: Programmer i18n. (line 11083)
+ (line 4407)
+* BEGIN pattern, operators and: Using BEGIN/END. (line 7010)
+* BEGIN pattern, pgawk program: Profiling. (line 11802)
+* BEGIN pattern, print statement and: I/O And BEGIN/END. (line 7068)
+* BEGIN pattern, pwcat program: Passwd Functions. (line 13862)
+* BEGIN pattern, running awk programs and: Cut Program. (line 14331)
+* BEGIN pattern, TEXTDOMAIN variable and: Programmer i18n. (line 11103)
* beginfile user-defined function: Filetrans Function.
- (line 13231)
-* Bell Laboratories awk extensions: BTL. (line 16775)
-* Benzinger, Michael: Contributors. (line 17095)
-* BeOS: BeOS Installation. (line 17568)
+ (line 13265)
+* Bell Laboratories awk extensions: BTL. (line 16809)
+* Benzinger, Michael: Contributors. (line 17135)
+* BeOS: BeOS Installation. (line 17602)
* Berry, Karl: Acknowledgments. (line 972)
-* binary input/output: User-modified. (line 7809)
+* binary input/output: User-modified. (line 7817)
* bindtextdomain function (C library): Explaining gettext.
- (line 10942)
-* bindtextdomain function (gawk) <1>: Programmer i18n. (line 11070)
-* bindtextdomain function (gawk): I18N Functions. (line 10436)
+ (line 10962)
+* bindtextdomain function (gawk) <1>: Programmer i18n. (line 11090)
+* bindtextdomain function (gawk): I18N Functions. (line 10456)
* bindtextdomain function (gawk), portability and: I18N Portability.
- (line 11286)
-* BINMODE variable <1>: PC Using. (line 17855)
-* BINMODE variable: User-modified. (line 7809)
-* bits2str user-defined function: Bitwise Functions. (line 10348)
-* bitwise, complement: Bitwise Functions. (line 10313)
-* bitwise, operations: Bitwise Functions. (line 10294)
-* bitwise, shift: Bitwise Functions. (line 10320)
-* body, in actions: Statements. (line 7220)
-* body, in loops: While Statement. (line 7299)
-* Boolean expressions: Boolean Ops. (line 6455)
+ (line 11306)
+* BINMODE variable <1>: PC Using. (line 17887)
+* BINMODE variable: User-modified. (line 7817)
+* bits2str user-defined function: Bitwise Functions. (line 10368)
+* bitwise, complement: Bitwise Functions. (line 10333)
+* bitwise, operations: Bitwise Functions. (line 10314)
+* bitwise, shift: Bitwise Functions. (line 10340)
+* body, in actions: Statements. (line 7228)
+* body, in loops: While Statement. (line 7307)
+* Boolean expressions: Boolean Ops. (line 6463)
* Boolean expressions, as patterns: Expression Patterns.
- (line 6860)
-* Boolean operators, See Boolean expressions: Boolean Ops. (line 6455)
+ (line 6868)
+* Boolean operators, See Boolean expressions: Boolean Ops. (line 6463)
* Bourne shell, quoting rules for: Quoting. (line 1357)
-* braces ({}), actions and: Action Overview. (line 7170)
-* braces ({}), pgawk program: Profiling. (line 11858)
-* braces ({}), statements, grouping: Statements. (line 7220)
+* braces ({}), actions and: Action Overview. (line 7178)
+* braces ({}), pgawk program: Profiling. (line 11873)
+* braces ({}), statements, grouping: Statements. (line 7228)
* bracket expressions, See character lists: Regexp Operators.
(line 2230)
-* break statement: Break Statement. (line 7517)
-* Brennan, Michael <1>: Other Versions. (line 18351)
-* Brennan, Michael <2>: Simple Sed. (line 16155)
-* Brennan, Michael <3>: Two-way I/O. (line 11507)
-* Brennan, Michael: Delete. (line 8622)
-* Broder, Alan J.: Contributors. (line 17086)
-* Brown, Martin <1>: Bugs. (line 18332)
-* Brown, Martin <2>: Contributors. (line 17081)
+* break statement: Break Statement. (line 7525)
+* Brennan, Michael <1>: Other Versions. (line 18383)
+* Brennan, Michael <2>: Simple Sed. (line 16189)
+* Brennan, Michael <3>: Two-way I/O. (line 11522)
+* Brennan, Michael: Delete. (line 8630)
+* Broder, Alan J.: Contributors. (line 17126)
+* Brown, Martin <1>: Bugs. (line 18364)
+* Brown, Martin <2>: Contributors. (line 17121)
* Brown, Martin: Acknowledgments. (line 995)
-* BSD portals: Portal Files. (line 11710)
-* BSD-based operating systems: Glossary. (line 20320)
-* Buening, Andreas <1>: Contributors. (line 17090)
+* BSD portals: Portal Files. (line 11725)
+* BSD-based operating systems: Glossary. (line 20404)
+* Buening, Andreas <1>: Contributors. (line 17130)
* Buening, Andreas: Acknowledgments. (line 995)
-* buffering, input/output <1>: Two-way I/O. (line 11572)
-* buffering, input/output: I/O Functions. (line 9916)
-* buffering, interactive vs. noninteractive: I/O Functions. (line 9884)
-* buffers, flushing: I/O Functions. (line 9818)
+* buffering, input/output <1>: Two-way I/O. (line 11587)
+* buffering, input/output: I/O Functions. (line 9936)
+* buffering, interactive vs. noninteractive: I/O Functions. (line 9904)
+* buffers, flushing: I/O Functions. (line 9838)
* buffers, operators for: GNU Regexp Operators.
(line 2495)
-* bug reports, email address, bug-gawk@gnu.org: Bugs. (line 18303)
-* bug-gawk@gnu.org bug reporting address: Bugs. (line 18303)
-* built-in functions: Functions. (line 8956)
-* built-in functions, evaluation order: Calling Built-in. (line 9023)
+* bug reports, email address, bug-gawk@gnu.org: Bugs. (line 18335)
+* bug-gawk@gnu.org bug reporting address: Bugs. (line 18335)
+* built-in functions: Functions. (line 8964)
+* built-in functions, evaluation order: Calling Built-in. (line 9031)
* built-in variables: Built-in Variables.
- (line 7779)
-* built-in variables, -v option, setting with: Options. (line 12029)
-* built-in variables, conveying information: Auto-set. (line 7959)
-* built-in variables, user-modifiable: User-modified. (line 7805)
-* call by reference: Function Caveats. (line 10696)
-* call by value: Function Caveats. (line 10667)
+ (line 7787)
+* built-in variables, -v option, setting with: Options. (line 12044)
+* built-in variables, conveying information: Auto-set. (line 7967)
+* built-in variables, user-modifiable: User-modified. (line 7813)
+* call by reference: Function Caveats. (line 10716)
+* call by value: Function Caveats. (line 10687)
* caret (^) <1>: GNU Regexp Operators.
(line 2506)
* caret (^): Regexp Operators. (line 2197)
-* caret (^), ^ operator <1>: Options. (line 12157)
-* caret (^), ^ operator: Precedence. (line 6687)
-* caret (^), ^= operator <1>: Options. (line 12157)
-* caret (^), ^= operator <2>: Precedence. (line 6734)
-* caret (^), ^= operator: Assignment Ops. (line 6103)
+* caret (^), ^ operator <1>: Options. (line 12191)
+* caret (^), ^ operator: Precedence. (line 6695)
+* caret (^), ^= operator <1>: Options. (line 12191)
+* caret (^), ^= operator <2>: Precedence. (line 6742)
+* caret (^), ^= operator: Assignment Ops. (line 6111)
* caret (^), in character lists: Character Lists. (line 2364)
-* case keyword: Switch Statement. (line 7456)
-* case sensitivity, array indices and: Array Intro. (line 8390)
-* case sensitivity, converting case: String Functions. (line 9591)
-* case sensitivity, example programs: Library Functions. (line 12472)
+* case keyword: Switch Statement. (line 7464)
+* case sensitivity, array indices and: Array Intro. (line 8398)
+* case sensitivity, converting case: String Functions. (line 9611)
+* case sensitivity, example programs: Library Functions. (line 12506)
* case sensitivity, gawk: Case-sensitivity. (line 2569)
-* case sensitivity, regexps and <1>: User-modified. (line 7867)
+* case sensitivity, regexps and <1>: User-modified. (line 7875)
* case sensitivity, regexps and: Case-sensitivity. (line 2549)
-* case sensitivity, string comparisons and: User-modified. (line 7867)
-* character encodings: Ordinal Functions. (line 12980)
+* case sensitivity, string comparisons and: User-modified. (line 7875)
+* CGI, awk scripts for: Options. (line 12117)
+* character encodings: Ordinal Functions. (line 13014)
* character lists <1>: Character Lists. (line 2353)
* character lists: Regexp Operators. (line 2230)
* character lists, character classes: Character Lists. (line 2377)
@@ -21741,1243 +21822,1242 @@ Index
* character lists, equivalence classes: Character Lists. (line 2443)
* character lists, non-ASCII: Character Lists. (line 2430)
* character lists, range expressions: Character Lists. (line 2353)
-* character sets: Ordinal Functions. (line 12980)
-* character sets (machine character encodings): Glossary. (line 19879)
+* character sets: Ordinal Functions. (line 13014)
+* character sets (machine character encodings): Glossary. (line 19963)
* character sets, See Also character lists: Regexp Operators.
(line 2230)
-* characters, counting: Wc Program. (line 15230)
-* characters, transliterating: Translate Program. (line 15567)
-* characters, values of as numbers: Ordinal Functions. (line 12942)
+* characters, counting: Wc Program. (line 15264)
+* characters, transliterating: Translate Program. (line 15601)
+* characters, values of as numbers: Ordinal Functions. (line 12976)
* Chassell, Robert J.: Acknowledgments. (line 972)
-* chdir function, implementing in gawk: Sample Library. (line 18963)
-* chem utility: Glossary. (line 19887)
-* chr user-defined function: Ordinal Functions. (line 12952)
+* chdir function, implementing in gawk: Sample Library. (line 19054)
+* chem utility: Glossary. (line 19971)
+* chr user-defined function: Ordinal Functions. (line 12986)
* Cliff random numbers: Cliff Random Function.
- (line 12911)
+ (line 12945)
* cliff_rand user-defined function: Cliff Random Function.
- (line 12916)
-* close function <1>: I/O Functions. (line 9799)
+ (line 12950)
+* close function <1>: I/O Functions. (line 9819)
* close function <2>: Close Files And Pipes.
- (line 5203)
-* close function <3>: Getline/Pipe. (line 4061)
+ (line 5211)
+* close function <3>: Getline/Pipe. (line 4069)
* close function: Getline/Variable/File.
- (line 4028)
+ (line 4036)
* close function, return values: Close Files And Pipes.
- (line 5315)
-* close function, two-way pipes and: Two-way I/O. (line 11579)
-* Close, Diane <1>: Contributors. (line 17031)
+ (line 5323)
+* close function, two-way pipes and: Two-way I/O. (line 11594)
+* Close, Diane <1>: Contributors. (line 17071)
* Close, Diane: Manual History. (line 898)
+* close_func input method: Internals. (line 18964)
* collating elements: Character Lists. (line 2430)
* collating symbols: Character Lists. (line 2437)
-* columns, aligning: Print Examples. (line 4369)
-* columns, cutting: Cut Program. (line 14237)
-* comma (,), in range patterns: Ranges. (line 6905)
-* command line, arguments <1>: Other Arguments. (line 12271)
-* command line, arguments <2>: ARGC and ARGV. (line 8172)
-* command line, arguments: Auto-set. (line 7964)
+* columns, aligning: Print Examples. (line 4377)
+* columns, cutting: Cut Program. (line 14271)
+* comma (,), in range patterns: Ranges. (line 6913)
+* command line, arguments <1>: Other Arguments. (line 12305)
+* command line, arguments <2>: ARGC and ARGV. (line 8180)
+* command line, arguments: Auto-set. (line 7972)
* command line, formats: Running gawk. (line 1090)
* command line, FS on, setting: Command Line Field Separator.
- (line 3419)
-* command line, invoking awk from: Command Line. (line 11973)
-* command line, options <1>: Options. (line 11997)
+ (line 3427)
+* command line, invoking awk from: Command Line. (line 11988)
+* command line, options <1>: Options. (line 12012)
* command line, options <2>: Command Line Field Separator.
- (line 3419)
+ (line 3427)
* command line, options: Long. (line 1202)
-* command line, options, end of: Options. (line 12053)
+* command line, options, end of: Options. (line 12068)
* command line, variables, assigning on: Assignment Options.
- (line 5663)
-* command-line options, processing: Getopt Function. (line 13426)
+ (line 5671)
+* command-line options, processing: Getopt Function. (line 13460)
* command-line options, string extraction: String Extraction.
- (line 11157)
+ (line 11177)
* commenting: Comments. (line 1296)
* commenting, backslash continuation and: Statements/Lines. (line 1838)
-* comp.lang.awk newsgroup: Bugs. (line 18312)
+* comp.lang.awk newsgroup: Bugs. (line 18344)
* comparison expressions: Typing and Comparison.
- (line 6269)
+ (line 6277)
* comparison expressions, as patterns: Expression Patterns.
- (line 6833)
+ (line 6841)
* comparison expressions, string vs. regexp: Typing and Comparison.
- (line 6411)
-* compatibility mode (gawk), extensions: POSIX/GNU. (line 16818)
-* compatibility mode (gawk), file names: Special Caveats. (line 5159)
+ (line 6419)
+* compatibility mode (gawk), extensions: POSIX/GNU. (line 16852)
+* compatibility mode (gawk), file names: Special Caveats. (line 5167)
* compatibility mode (gawk), hexadecimal numbers: Nondecimal-numbers.
- (line 5503)
+ (line 5511)
* compatibility mode (gawk), octal numbers: Nondecimal-numbers.
- (line 5503)
-* compatibility mode (gawk), specifying: Options. (line 12070)
-* compiled programs <1>: Glossary. (line 19897)
-* compiled programs: Basic High Level. (line 19467)
-* compl function (gawk): Bitwise Functions. (line 10331)
-* complement, bitwise: Bitwise Functions. (line 10313)
-* compound statements, control statements and: Statements. (line 7220)
-* concatenating: Concatenation. (line 5903)
-* conditional expressions: Conditional Exp. (line 6545)
+ (line 5511)
+* compatibility mode (gawk), specifying: Options. (line 12085)
+* compiled programs <1>: Glossary. (line 19981)
+* compiled programs: Basic High Level. (line 19551)
+* compl function (gawk): Bitwise Functions. (line 10351)
+* complement, bitwise: Bitwise Functions. (line 10333)
+* compound statements, control statements and: Statements. (line 7228)
+* concatenating: Concatenation. (line 5911)
+* conditional expressions: Conditional Exp. (line 6553)
* configuration option, --disable-lint: Additional Configuration Options.
- (line 17446)
+ (line 17477)
* configuration option, --disable-nls: Additional Configuration Options.
- (line 17461)
+ (line 17492)
* configuration option, --enable-portals: Additional Configuration Options.
- (line 17432)
+ (line 17469)
* configuration option, --enable-switch: Additional Configuration Options.
- (line 17436)
-* configuration option, --with-included-gettext <1>: Additional Configuration Options.
- (line 17440)
-* configuration option, --with-included-gettext: Gawk I18N. (line 11423)
+ (line 17473)
* configuration options, gawk: Additional Configuration Options.
- (line 17429)
-* constants, nondecimal: Nondecimal Data. (line 11465)
-* constants, types of: Constants. (line 5397)
+ (line 17466)
+* constants, nondecimal: Nondecimal Data. (line 11480)
+* constants, types of: Constants. (line 5405)
* continue statement: Continue Statement.
- (line 7574)
-* control statements: Statements. (line 7216)
-* converting, case: String Functions. (line 9591)
-* converting, dates to timestamps: Time Functions. (line 10030)
+ (line 7582)
+* control statements: Statements. (line 7224)
+* converting, case: String Functions. (line 9611)
+* converting, dates to timestamps: Time Functions. (line 10050)
* converting, during subscripting: Numeric Array Subscripts.
- (line 8673)
-* converting, numbers: Conversion. (line 5711)
-* converting, numbers, to strings: Bitwise Functions. (line 10387)
-* converting, strings to numbers: Conversion. (line 5711)
-* CONVFMT variable <1>: User-modified. (line 7825)
-* CONVFMT variable: Conversion. (line 5734)
+ (line 8681)
+* converting, numbers: Conversion. (line 5719)
+* converting, numbers, to strings: Bitwise Functions. (line 10407)
+* converting, strings to numbers: Conversion. (line 5719)
+* CONVFMT variable <1>: User-modified. (line 7833)
+* CONVFMT variable: Conversion. (line 5742)
* CONVFMT variable, array subscripts and: Numeric Array Subscripts.
- (line 8648)
-* coprocesses <1>: Two-way I/O. (line 11545)
-* coprocesses: Redirection. (line 4936)
+ (line 8656)
+* coprocesses <1>: Two-way I/O. (line 11560)
+* coprocesses: Redirection. (line 4944)
* coprocesses, closing: Close Files And Pipes.
- (line 5191)
-* coprocesses, getline from: Getline/Coprocess. (line 4129)
-* cos function: Numeric Functions. (line 9071)
-* counting: Wc Program. (line 15230)
+ (line 5199)
+* coprocesses, getline from: Getline/Coprocess. (line 4137)
+* cos function: Numeric Functions. (line 9079)
+* counting: Wc Program. (line 15264)
* csh utility: Statements/Lines. (line 1807)
* csh utility, backslash continuation and: More Complex. (line 1708)
* csh utility, POSIXLY_CORRECT environment variable: Options.
- (line 12252)
-* csh utility, |& operator, comparison with: Two-way I/O. (line 11545)
-* ctime user-defined function: Function Example. (line 10629)
+ (line 12286)
+* csh utility, |& operator, comparison with: Two-way I/O. (line 11560)
+* ctime user-defined function: Function Example. (line 10649)
* currency symbols, localization: Explaining gettext.
- (line 10994)
+ (line 11014)
* custom.h file: Configuration Philosophy.
- (line 17496)
-* cut utility: Cut Program. (line 14237)
-* cut.awk program: Cut Program. (line 14275)
+ (line 17530)
+* cut utility: Cut Program. (line 14271)
+* cut.awk program: Cut Program. (line 14309)
* d.c., See dark corner: Conventions. (line 850)
-* dark corner <1>: Glossary. (line 19929)
-* dark corner <2>: Truth Values. (line 6256)
-* dark corner <3>: Assignment Ops. (line 6129)
-* dark corner <4>: Format Modifiers. (line 4659)
+* dark corner <1>: Glossary. (line 20013)
+* dark corner <2>: Truth Values. (line 6264)
+* dark corner <3>: Assignment Ops. (line 6137)
+* dark corner <4>: Format Modifiers. (line 4667)
* dark corner: Conventions. (line 850)
* dark corner, array subscripts: Uninitialized Subscripts.
- (line 8735)
-* dark corner, break statement: Break Statement. (line 7558)
+ (line 8743)
+* dark corner, break statement: Break Statement. (line 7566)
* dark corner, close function: Close Files And Pipes.
- (line 5315)
+ (line 5323)
* dark corner, command-line arguments: Assignment Options.
- (line 5700)
+ (line 5708)
* dark corner, continue statement: Continue Statement.
- (line 7611)
-* dark corner, CONVFMT variable: Conversion. (line 5745)
-* dark corner, escape sequences: Other Arguments. (line 12296)
+ (line 7619)
+* dark corner, CONVFMT variable: Conversion. (line 5753)
+* dark corner, escape sequences: Other Arguments. (line 12330)
* dark corner, escape sequences, for metacharacters: Escape Sequences.
(line 2168)
-* dark corner, exit statement: Exit Statement. (line 7752)
+* dark corner, exit statement: Exit Statement. (line 7760)
* dark corner, field separators: Field Splitting Summary.
- (line 3547)
-* dark corner, FILENAME variable <1>: Auto-set. (line 8041)
-* dark corner, FILENAME variable: Getline Notes. (line 4190)
-* dark corner, FNR/NR variables: Auto-set. (line 8140)
-* dark corner, format-control characters: Control Letters. (line 4593)
+ (line 3555)
+* dark corner, FILENAME variable <1>: Auto-set. (line 8049)
+* dark corner, FILENAME variable: Getline Notes. (line 4198)
+* dark corner, FNR/NR variables: Auto-set. (line 8148)
+* dark corner, format-control characters: Control Letters. (line 4601)
* dark corner, FS as null string: Single Character Fields.
- (line 3407)
+ (line 3415)
* dark corner, input files: Records. (line 2908)
-* dark corner, invoking awk: Command Line. (line 11983)
-* dark corner, multiline records: Multiple Line. (line 3726)
-* dark corner, NF variable, decrementing: Changing Fields. (line 3223)
-* dark corner, OFMT variable: OFMT. (line 4447)
+* dark corner, invoking awk: Command Line. (line 11998)
+* dark corner, multiline records: Multiple Line. (line 3734)
+* dark corner, NF variable, decrementing: Changing Fields. (line 3231)
+* dark corner, OFMT variable: OFMT. (line 4455)
* dark corner, regexp constants: Using Constant Regexps.
- (line 5536)
+ (line 5544)
* dark corner, regexp constants, /= operator and: Assignment Ops.
- (line 6129)
+ (line 6137)
* dark corner, regexp constants, as arguments to user-defined functions: Using Constant Regexps.
- (line 5574)
-* dark corner, split function: String Functions. (line 9361)
-* dark corner, strings, storing: Records. (line 2987)
-* data, fixed-width: Constant Size. (line 3597)
-* data-driven languages: Basic High Level. (line 19536)
-* database, group, reading: Group Functions. (line 13934)
-* database, users, reading: Passwd Functions. (line 13709)
-* date utility, GNU: Time Functions. (line 9978)
-* date utility, POSIX: Time Functions. (line 10225)
-* dates, converting to timestamps: Time Functions. (line 10030)
+ (line 5582)
+* dark corner, split function: String Functions. (line 9378)
+* dark corner, strings, storing: Records. (line 2995)
+* data, fixed-width: Constant Size. (line 3605)
+* data-driven languages: Basic High Level. (line 19620)
+* database, group, reading: Group Functions. (line 13968)
+* database, users, reading: Passwd Functions. (line 13743)
+* date utility, GNU: Time Functions. (line 9998)
+* date utility, POSIX: Time Functions. (line 10245)
+* dates, converting to timestamps: Time Functions. (line 10050)
* dates, information related to, localization: Explaining gettext.
- (line 11006)
-* Davies, Stephen <1>: Bugs. (line 18337)
-* Davies, Stephen: Contributors. (line 17078)
-* dcgettext function (gawk) <1>: Programmer i18n. (line 11044)
-* dcgettext function (gawk): I18N Functions. (line 10422)
+ (line 11026)
+* Davies, Stephen <1>: Bugs. (line 18369)
+* Davies, Stephen: Contributors. (line 17118)
+* dcgettext function (gawk) <1>: Programmer i18n. (line 11064)
+* dcgettext function (gawk): I18N Functions. (line 10442)
* dcgettext function (gawk), portability and: I18N Portability.
- (line 11286)
-* dcngettext function (gawk) <1>: Programmer i18n. (line 11060)
-* dcngettext function (gawk): I18N Functions. (line 10428)
+ (line 11306)
+* dcngettext function (gawk) <1>: Programmer i18n. (line 11080)
+* dcngettext function (gawk): I18N Functions. (line 10448)
* dcngettext function (gawk), portability and: I18N Portability.
- (line 11286)
-* deadlocks: Two-way I/O. (line 11572)
-* debugging gawk: Known Bugs. (line 12420)
-* debugging gawk, bug reports: Bugs. (line 18285)
-* decrement operators: Increment Ops. (line 6181)
-* default keyword: Switch Statement. (line 7456)
-* Deifik, Scott <1>: Bugs. (line 18333)
-* Deifik, Scott <2>: Contributors. (line 17062)
+ (line 11306)
+* deadlocks: Two-way I/O. (line 11587)
+* debugging gawk: Known Bugs. (line 12454)
+* debugging gawk, bug reports: Bugs. (line 18317)
+* decrement operators: Increment Ops. (line 6189)
+* default keyword: Switch Statement. (line 7464)
+* Deifik, Scott <1>: Bugs. (line 18365)
+* Deifik, Scott <2>: Contributors. (line 17102)
* Deifik, Scott: Acknowledgments. (line 995)
-* delete statement: Delete. (line 8577)
-* deleting elements in arrays: Delete. (line 8577)
-* deleting entire arrays: Delete. (line 8610)
+* delete statement: Delete. (line 8585)
+* deleting elements in arrays: Delete. (line 8585)
+* deleting entire arrays: Delete. (line 8618)
+* differences between gawk and awk: String Functions. (line 9246)
* differences in awk and gawk, ARGC/ARGV variables: ARGC and ARGV.
- (line 8251)
-* differences in awk and gawk, ARGIND variable: Auto-set. (line 7993)
+ (line 8259)
+* differences in awk and gawk, ARGIND variable: Auto-set. (line 8001)
* differences in awk and gawk, array elements, deleting: Delete.
- (line 8610)
+ (line 8618)
* differences in awk and gawk, AWKPATH environment variable: AWKPATH Variable.
- (line 12327)
+ (line 12361)
* differences in awk and gawk, BEGIN/END patterns: I/O And BEGIN/END.
- (line 7060)
+ (line 7068)
* differences in awk and gawk, BINMODE variable <1>: PC Using.
- (line 17855)
+ (line 17887)
* differences in awk and gawk, BINMODE variable: User-modified.
- (line 7820)
+ (line 7828)
* differences in awk and gawk, close function: Close Files And Pipes.
- (line 5266)
-* differences in awk and gawk, ERRNO variable: Auto-set. (line 8025)
-* differences in awk and gawk, error messages: Special FD. (line 5020)
+ (line 5274)
+* differences in awk and gawk, ERRNO variable: Auto-set. (line 8033)
+* differences in awk and gawk, error messages: Special FD. (line 5028)
* differences in awk and gawk, FIELDWIDTHS variable: User-modified.
- (line 7832)
+ (line 7840)
* differences in awk and gawk, function arguments (gawk): Calling Built-in.
- (line 9009)
-* differences in awk and gawk, getline command: Getline. (line 3848)
+ (line 9017)
+* differences in awk and gawk, getline command: Getline. (line 3856)
* differences in awk and gawk, IGNORECASE variable: User-modified.
- (line 7867)
+ (line 7875)
* differences in awk and gawk, implementation limitations <1>: Redirection.
- (line 4965)
+ (line 4973)
* differences in awk and gawk, implementation limitations: Getline Notes.
- (line 4185)
+ (line 4193)
* differences in awk and gawk, input/output operators <1>: Redirection.
- (line 4936)
+ (line 4944)
* differences in awk and gawk, input/output operators: Getline/Coprocess.
- (line 4129)
+ (line 4137)
* differences in awk and gawk, line continuations: Conditional Exp.
- (line 6573)
+ (line 6581)
* differences in awk and gawk, LINT variable: User-modified.
- (line 7882)
+ (line 7890)
* differences in awk and gawk, match function: String Functions.
- (line 9292)
+ (line 9309)
* differences in awk and gawk, next/nextfile statements: Nextfile Statement.
- (line 7676)
+ (line 7684)
* differences in awk and gawk, print/printf statements: Format Modifiers.
- (line 4613)
-* differences in awk and gawk, PROCINFO array: Auto-set. (line 8072)
+ (line 4621)
+* differences in awk and gawk, PROCINFO array: Auto-set. (line 8080)
* differences in awk and gawk, record separators: Records. (line 2921)
* differences in awk and gawk, regexp constants: Using Constant Regexps.
- (line 5574)
+ (line 5582)
* differences in awk and gawk, regular expressions: Case-sensitivity.
(line 2569)
-* differences in awk and gawk, RS/RT variables: Records. (line 2963)
-* differences in awk and gawk, RT variable: Auto-set. (line 8129)
+* differences in awk and gawk, RS/RT variables: Records. (line 2971)
+* differences in awk and gawk, RT variable: Auto-set. (line 8137)
* differences in awk and gawk, single-character fields: Single Character Fields.
- (line 3393)
+ (line 3401)
* differences in awk and gawk, split function: String Functions.
- (line 9350)
-* differences in awk and gawk, strings: Scalar Constants. (line 5431)
-* differences in awk and gawk, strings, storing: Records. (line 2983)
+ (line 9367)
+* differences in awk and gawk, strings: Scalar Constants. (line 5439)
+* differences in awk and gawk, strings, storing: Records. (line 2991)
* differences in awk and gawk, strtonum function (gawk): String Functions.
- (line 9388)
+ (line 9405)
* differences in awk and gawk, TEXTDOMAIN variable: User-modified.
- (line 7937)
+ (line 7945)
* differences in awk and gawk, trunc-mod operation: Arithmetic Ops.
- (line 5875)
-* directories, changing: Sample Library. (line 18963)
-* directories, searching <1>: Igawk Program. (line 16567)
-* directories, searching: AWKPATH Variable. (line 12327)
-* division: Arithmetic Ops. (line 5853)
-* do-while statement <1>: Do Statement. (line 7338)
+ (line 5883)
+* directories, changing: Sample Library. (line 19054)
+* directories, searching <1>: Igawk Program. (line 16601)
+* directories, searching: AWKPATH Variable. (line 12361)
+* division: Arithmetic Ops. (line 5861)
+* do-while statement <1>: Do Statement. (line 7346)
* do-while statement: Regexp Usage. (line 1989)
-* documentation, of awk programs: Library Names. (line 12507)
+* documentation, of awk programs: Library Names. (line 12541)
* documentation, online: Manual History. (line 870)
-* documents, searching: Dupword Program. (line 15395)
+* documents, searching: Dupword Program. (line 15429)
* dollar sign ($): Regexp Operators. (line 2210)
-* dollar sign ($), $ field operator <1>: Precedence. (line 6681)
-* dollar sign ($), $ field operator: Fields. (line 3019)
+* dollar sign ($), $ field operator <1>: Precedence. (line 6689)
+* dollar sign ($), $ field operator: Fields. (line 3027)
* dollar sign ($), incrementing fields and arrays: Increment Ops.
- (line 6176)
+ (line 6184)
* double quote (") <1>: Quoting. (line 1376)
* double quote ("): Read Terminal. (line 1165)
* double quote ("), regexp constants: Computed Regexps. (line 2677)
-* double-precision floating-point: Basic Data Typing. (line 19582)
+* double-precision floating-point: Basic Data Typing. (line 19666)
* Drepper, Ulrich: Acknowledgments. (line 991)
-* dupnode internal function: Internals. (line 18846)
-* dupword.awk program: Dupword Program. (line 15420)
-* EBCDIC: Ordinal Functions. (line 12980)
-* egrep utility <1>: Egrep Program. (line 14491)
+* dupnode internal function: Internals. (line 18883)
+* dupword.awk program: Dupword Program. (line 15454)
+* EBCDIC: Ordinal Functions. (line 13014)
+* egrep utility <1>: Egrep Program. (line 14525)
* egrep utility: Character Lists. (line 2371)
-* egrep.awk program: Egrep Program. (line 14539)
+* egrep.awk program: Egrep Program. (line 14573)
* elements in arrays: Reference to Elements.
- (line 8405)
+ (line 8413)
* elements in arrays, assigning: Assigning Elements.
- (line 8452)
-* elements in arrays, deleting: Delete. (line 8577)
-* elements in arrays, order of: Scanning an Array. (line 8563)
-* elements in arrays, scanning: Scanning an Array. (line 8522)
-* email address for bug reports, bug-gawk@gnu.org: Bugs. (line 18303)
-* EMISTERED: TCP/IP Networking. (line 11643)
-* empty pattern: Empty. (line 7093)
+ (line 8460)
+* elements in arrays, deleting: Delete. (line 8585)
+* elements in arrays, order of: Scanning an Array. (line 8571)
+* elements in arrays, scanning: Scanning an Array. (line 8530)
+* email address for bug reports, bug-gawk@gnu.org: Bugs. (line 18335)
+* EMISTERED: TCP/IP Networking. (line 11658)
+* empty pattern: Empty. (line 7101)
* empty strings, See null strings: Regexp Field Splitting.
- (line 3371)
-* END pattern: BEGIN/END. (line 6972)
+ (line 3379)
+* END pattern: BEGIN/END. (line 6980)
* END pattern, assert user-defined function and: Assert Function.
- (line 12849)
-* END pattern, backslash continuation and: Egrep Program. (line 14703)
+ (line 12883)
+* END pattern, backslash continuation and: Egrep Program. (line 14737)
* END pattern, Boolean patterns and: Expression Patterns.
- (line 6892)
-* END pattern, exit statement and: Exit Statement. (line 7735)
+ (line 6900)
+* END pattern, exit statement and: Exit Statement. (line 7743)
* END pattern, next/nextfile statements and <1>: Next Statement.
- (line 7660)
+ (line 7668)
* END pattern, next/nextfile statements and: I/O And BEGIN/END.
- (line 7080)
-* END pattern, operators and: Using BEGIN/END. (line 7002)
-* END pattern, pgawk program: Profiling. (line 11787)
-* END pattern, print statement and: I/O And BEGIN/END. (line 7060)
+ (line 7088)
+* END pattern, operators and: Using BEGIN/END. (line 7010)
+* END pattern, pgawk program: Profiling. (line 11802)
+* END pattern, print statement and: I/O And BEGIN/END. (line 7068)
* endfile user-defined function: Filetrans Function.
- (line 13231)
-* endgrent function (C library): Group Functions. (line 14141)
-* endgrent user-defined function: Group Functions. (line 14144)
-* endpwent function (C library): Passwd Functions. (line 13895)
-* endpwent user-defined function: Passwd Functions. (line 13898)
-* ENVIRON variable: Auto-set. (line 8013)
-* environment variables: Auto-set. (line 8013)
-* epoch, definition of: Glossary. (line 19971)
-* equals sign (=), = operator: Assignment Ops. (line 5981)
-* equals sign (=), == operator <1>: Precedence. (line 6703)
+ (line 13265)
+* endgrent function (C library): Group Functions. (line 14175)
+* endgrent user-defined function: Group Functions. (line 14178)
+* endpwent function (C library): Passwd Functions. (line 13929)
+* endpwent user-defined function: Passwd Functions. (line 13932)
+* ENVIRON variable <1>: Internals. (line 18951)
+* ENVIRON variable: Auto-set. (line 8021)
+* environment variables: Auto-set. (line 8021)
+* epoch, definition of: Glossary. (line 20055)
+* equals sign (=), = operator: Assignment Ops. (line 5989)
+* equals sign (=), == operator <1>: Precedence. (line 6711)
* equals sign (=), == operator: Typing and Comparison.
- (line 6334)
+ (line 6342)
* EREs (Extended Regular Expressions): Character Lists. (line 2371)
-* ERRNO variable <1>: Internals. (line 18901)
-* ERRNO variable <2>: Auto-set. (line 8025)
-* ERRNO variable: Getline. (line 3848)
-* error handling: Special FD. (line 5020)
-* error handling, ERRNO variable and: Auto-set. (line 8025)
-* error output: Special FD. (line 5011)
+* ERRNO variable <1>: Internals. (line 18938)
+* ERRNO variable <2>: Auto-set. (line 8033)
+* ERRNO variable: Getline. (line 3856)
+* error handling: Special FD. (line 5028)
+* error handling, ERRNO variable and: Auto-set. (line 8033)
+* error output: Special FD. (line 5019)
* escape processing, gsub/gensub/sub functions: Gory Details.
- (line 9622)
+ (line 9642)
* escape sequences: Escape Sequences. (line 2038)
-* escape sequences, unrecognized: Options. (line 12145)
-* evaluation order: Increment Ops. (line 6207)
-* evaluation order, concatenation: Concatenation. (line 5935)
-* evaluation order, functions: Calling Built-in. (line 9023)
-* examining fields: Fields. (line 3006)
-* exclamation point (!), ! operator <1>: Egrep Program. (line 14645)
-* exclamation point (!), ! operator <2>: Precedence. (line 6690)
-* exclamation point (!), ! operator: Boolean Ops. (line 6516)
-* exclamation point (!), != operator <1>: Precedence. (line 6703)
+* escape sequences, unrecognized: Options. (line 12179)
+* evaluation order: Increment Ops. (line 6215)
+* evaluation order, concatenation: Concatenation. (line 5943)
+* evaluation order, functions: Calling Built-in. (line 9031)
+* examining fields: Fields. (line 3014)
+* exclamation point (!), ! operator <1>: Egrep Program. (line 14679)
+* exclamation point (!), ! operator <2>: Precedence. (line 6698)
+* exclamation point (!), ! operator: Boolean Ops. (line 6524)
+* exclamation point (!), != operator <1>: Precedence. (line 6711)
* exclamation point (!), != operator: Typing and Comparison.
- (line 6334)
+ (line 6342)
* exclamation point (!), !~ operator <1>: Expression Patterns.
- (line 6843)
-* exclamation point (!), !~ operator <2>: Precedence. (line 6719)
+ (line 6851)
+* exclamation point (!), !~ operator <2>: Precedence. (line 6727)
* exclamation point (!), !~ operator <3>: Typing and Comparison.
- (line 6334)
-* exclamation point (!), !~ operator <4>: Regexp Constants. (line 5524)
+ (line 6342)
+* exclamation point (!), !~ operator <4>: Regexp Constants. (line 5532)
* exclamation point (!), !~ operator <5>: Computed Regexps. (line 2656)
* exclamation point (!), !~ operator <6>: Case-sensitivity. (line 2569)
* exclamation point (!), !~ operator: Regexp Usage. (line 1989)
-* exit statement: Exit Statement. (line 7729)
-* exp function: Numeric Functions. (line 9059)
+* exit statement: Exit Statement. (line 7737)
+* exp function: Numeric Functions. (line 9067)
* expand utility: Very Simple. (line 1594)
-* expressions: Expressions. (line 5354)
+* expressions: Expressions. (line 5362)
* expressions, as patterns: Expression Patterns.
- (line 6825)
-* expressions, assignment: Assignment Ops. (line 5981)
-* expressions, Boolean: Boolean Ops. (line 6455)
+ (line 6833)
+* expressions, assignment: Assignment Ops. (line 5989)
+* expressions, Boolean: Boolean Ops. (line 6463)
* expressions, comparison: Typing and Comparison.
- (line 6269)
-* expressions, conditional: Conditional Exp. (line 6545)
+ (line 6277)
+* expressions, conditional: Conditional Exp. (line 6553)
* expressions, matching, See comparison expressions: Typing and Comparison.
- (line 6269)
-* expressions, selecting: Conditional Exp. (line 6545)
+ (line 6277)
+* expressions, selecting: Conditional Exp. (line 6553)
* Extended Regular Expressions (EREs): Character Lists. (line 2371)
* extension function (gawk): Using Internal File Ops.
- (line 19282)
-* extensions, Bell Laboratories awk: BTL. (line 16775)
-* extensions, in gawk, not in POSIX awk: POSIX/GNU. (line 16818)
-* extensions, mawk: Other Versions. (line 18391)
-* extract.awk program: Extract Program. (line 16016)
+ (line 19373)
+* extensions, Bell Laboratories awk: BTL. (line 16809)
+* extensions, in gawk, not in POSIX awk: POSIX/GNU. (line 16852)
+* extensions, mawk: Other Versions. (line 18423)
+* extract.awk program: Extract Program. (line 16050)
* extraction, of marked strings (internationalization): String Extraction.
- (line 11157)
-* false, logical: Truth Values. (line 6238)
+ (line 11177)
+* false, logical: Truth Values. (line 6246)
* FDL (Free Documentation License): GNU Free Documentation License.
- (line 20705)
-* features, adding to gawk: Adding Code. (line 18515)
-* features, advanced, See advanced features: Obsolete. (line 12387)
-* features, deprecated: Obsolete. (line 12387)
-* features, undocumented: Undocumented. (line 12409)
-* Fenlason, Jay <1>: Contributors. (line 17029)
+ (line 20789)
+* features, adding to gawk: Adding Code. (line 18547)
+* features, advanced, See advanced features: Obsolete. (line 12421)
+* features, deprecated: Obsolete. (line 12421)
+* features, undocumented: Undocumented. (line 12443)
+* Fenlason, Jay <1>: Contributors. (line 17069)
* Fenlason, Jay: History. (line 653)
-* fflush function: I/O Functions. (line 9814)
-* fflush function, unsupported: Options. (line 12165)
+* fflush function: I/O Functions. (line 9834)
+* fflush function, unsupported: Options. (line 12199)
* field numbers: Nonconstant Fields.
- (line 3077)
-* field operator $: Fields. (line 3019)
-* field operators, dollar sign as: Fields. (line 3019)
-* field separators <1>: User-modified. (line 7842)
-* field separators: Field Separators. (line 3263)
-* field separators, choice of: Field Separators. (line 3298)
+ (line 3085)
+* field operator $: Fields. (line 3027)
+* field operators, dollar sign as: Fields. (line 3027)
+* field separators <1>: User-modified. (line 7850)
+* field separators: Field Separators. (line 3271)
+* field separators, choice of: Field Separators. (line 3306)
* field separators, FIELDWIDTHS variable and: User-modified.
- (line 7832)
-* field separators, in multiline records: Multiple Line. (line 3732)
+ (line 7840)
+* field separators, in multiline records: Multiple Line. (line 3740)
* field separators, on command line: Command Line Field Separator.
- (line 3419)
+ (line 3427)
* field separators, POSIX and <1>: Field Splitting Summary.
- (line 3541)
-* field separators, POSIX and: Fields. (line 3006)
+ (line 3549)
+* field separators, POSIX and: Fields. (line 3014)
* field separators, regular expressions as <1>: Regexp Field Splitting.
- (line 3335)
+ (line 3343)
* field separators, regular expressions as: Field Separators.
- (line 3298)
-* field separators, See Also OFS: Changing Fields. (line 3180)
-* field separators, spaces as: Cut Program. (line 14337)
-* fields <1>: Basic High Level. (line 19524)
-* fields <2>: Fields. (line 3006)
+ (line 3306)
+* field separators, See Also OFS: Changing Fields. (line 3188)
+* field separators, spaces as: Cut Program. (line 14371)
+* fields <1>: Basic High Level. (line 19608)
+* fields <2>: Fields. (line 3014)
* fields: Reading Files. (line 2788)
-* fields, adding: Changing Fields. (line 3169)
-* fields, changing contents of: Changing Fields. (line 3122)
-* fields, cutting: Cut Program. (line 14237)
-* fields, examining: Fields. (line 3006)
-* fields, number of: Fields. (line 3033)
+* fields, adding: Changing Fields. (line 3177)
+* fields, changing contents of: Changing Fields. (line 3130)
+* fields, cutting: Cut Program. (line 14271)
+* fields, examining: Fields. (line 3014)
+* fields, number of: Fields. (line 3041)
* fields, numbers: Nonconstant Fields.
- (line 3077)
-* fields, printing: Print Examples. (line 4321)
-* fields, separating: Field Separators. (line 3263)
+ (line 3085)
+* fields, printing: Print Examples. (line 4329)
+* fields, separating: Field Separators. (line 3271)
* fields, single-character: Single Character Fields.
- (line 3393)
-* FIELDWIDTHS variable <1>: User-modified. (line 7832)
-* FIELDWIDTHS variable: Constant Size. (line 3610)
-* file descriptors: Special FD. (line 5011)
-* file names, distinguishing: Auto-set. (line 8005)
-* file names, in compatibility mode: Special Caveats. (line 5159)
-* file names, standard streams in gawk: Special FD. (line 5046)
-* FILENAME variable <1>: Auto-set. (line 8041)
+ (line 3401)
+* FIELDWIDTHS variable <1>: User-modified. (line 7840)
+* FIELDWIDTHS variable: Constant Size. (line 3618)
+* file descriptors: Special FD. (line 5019)
+* file names, distinguishing: Auto-set. (line 8013)
+* file names, in compatibility mode: Special Caveats. (line 5167)
+* file names, standard streams in gawk: Special FD. (line 5054)
+* FILENAME variable <1>: Auto-set. (line 8049)
* FILENAME variable: Reading Files. (line 2780)
-* FILENAME variable, getline, setting with: Getline Notes. (line 4190)
-* filenames, assignments as: Ignoring Assigns. (line 13384)
+* FILENAME variable, getline, setting with: Getline Notes. (line 4198)
+* filenames, assignments as: Ignoring Assigns. (line 13418)
* files, .mo: Explaining gettext.
- (line 10934)
-* files, .mo, converting from .po: I18N Example. (line 11380)
-* files, .mo, specifying directory of <1>: Programmer i18n. (line 11070)
+ (line 10954)
+* files, .mo, converting from .po: I18N Example. (line 11400)
+* files, .mo, specifying directory of <1>: Programmer i18n. (line 11090)
* files, .mo, specifying directory of: Explaining gettext.
- (line 10946)
-* files, .po <1>: Translator i18n. (line 11136)
+ (line 10966)
+* files, .po <1>: Translator i18n. (line 11156)
* files, .po: Explaining gettext.
- (line 10931)
-* files, .po, converting to .mo: I18N Example. (line 11380)
-* files, /dev/... special files: Special FD. (line 5046)
-* files, /inet/ (gawk): TCP/IP Networking. (line 11643)
-* files, /p (gawk): Portal Files. (line 11710)
-* files, as single records: Records. (line 2992)
+ (line 10951)
+* files, .po, converting to .mo: I18N Example. (line 11400)
+* files, /dev/... special files: Special FD. (line 5054)
+* files, /inet/ (gawk): TCP/IP Networking. (line 11658)
+* files, /p (gawk): Portal Files. (line 11725)
+* files, as single records: Records. (line 3000)
* files, awk programs in: Long. (line 1196)
-* files, awkprof.out: Profiling. (line 11729)
-* files, awkvars.out: Options. (line 12086)
-* files, closing: I/O Functions. (line 9799)
-* files, descriptors, See file descriptors: Special FD. (line 5011)
-* files, for process information: Special Process. (line 5078)
-* files, group: Group Functions. (line 13934)
-* files, information about, retrieving: Sample Library. (line 18963)
+* files, awkprof.out: Profiling. (line 11744)
+* files, awkvars.out: Options. (line 12101)
+* files, closing: I/O Functions. (line 9819)
+* files, descriptors, See file descriptors: Special FD. (line 5019)
+* files, for process information: Special Process. (line 5086)
+* files, group: Group Functions. (line 13968)
+* files, information about, retrieving: Sample Library. (line 19054)
* files, initialization and cleanup: Filetrans Function.
- (line 13177)
+ (line 13211)
* files, input, See input files: Read Terminal. (line 1157)
-* files, log, timestamps in: Time Functions. (line 9967)
+* files, log, timestamps in: Time Functions. (line 9987)
* files, managing: Data File Management.
- (line 13160)
+ (line 13194)
* files, managing, data file boundaries: Filetrans Function.
- (line 13177)
+ (line 13211)
* files, message object: Explaining gettext.
- (line 10934)
+ (line 10954)
* files, message object, converting from portable object files: I18N Example.
- (line 11380)
+ (line 11400)
* files, message object, specifying directory of <1>: Programmer i18n.
- (line 11070)
+ (line 11090)
* files, message object, specifying directory of: Explaining gettext.
- (line 10946)
-* files, multiple passes over: Other Arguments. (line 12314)
-* files, multiple, duplicating output into: Tee Program. (line 14930)
+ (line 10966)
+* files, multiple passes over: Other Arguments. (line 12348)
+* files, multiple, duplicating output into: Tee Program. (line 14964)
* files, output, See output files: Close Files And Pipes.
- (line 5191)
-* files, password: Passwd Functions. (line 13719)
-* files, portable object <1>: Translator i18n. (line 11136)
+ (line 5199)
+* files, password: Passwd Functions. (line 13753)
+* files, portable object <1>: Translator i18n. (line 11156)
* files, portable object: Explaining gettext.
- (line 10931)
+ (line 10951)
* files, portable object, converting to message object files: I18N Example.
- (line 11380)
-* files, portable object, generating: Options. (line 12102)
-* files, portal: Portal Files. (line 11710)
-* files, processing, ARGIND variable and: Auto-set. (line 8000)
-* files, reading: Rewind Function. (line 13258)
-* files, reading, multiline records: Multiple Line. (line 3697)
-* files, searching for regular expressions: Egrep Program. (line 14491)
-* files, skipping: File Checking. (line 13300)
-* files, source, search path for: Igawk Program. (line 16567)
-* files, splitting: Split Program. (line 14828)
+ (line 11400)
+* files, portable object, generating: Options. (line 12136)
+* files, portal: Portal Files. (line 11725)
+* files, processing, ARGIND variable and: Auto-set. (line 8008)
+* files, reading: Rewind Function. (line 13292)
+* files, reading, multiline records: Multiple Line. (line 3705)
+* files, searching for regular expressions: Egrep Program. (line 14525)
+* files, skipping: File Checking. (line 13334)
+* files, source, search path for: Igawk Program. (line 16601)
+* files, splitting: Split Program. (line 14862)
* files, Texinfo, extracting programs from: Extract Program.
- (line 15945)
-* Fish, Fred <1>: Bugs. (line 18332)
-* Fish, Fred: Contributors. (line 17060)
-* fixed-width data: Constant Size. (line 3597)
-* flag variables <1>: Tee Program. (line 14944)
-* flag variables: Boolean Ops. (line 6516)
+ (line 15979)
+* Fish, Fred <1>: Bugs. (line 18364)
+* Fish, Fred: Contributors. (line 17100)
+* fixed-width data: Constant Size. (line 3605)
+* flag variables <1>: Tee Program. (line 14978)
+* flag variables: Boolean Ops. (line 6524)
* floating-point: Floating Point Issues.
- (line 19692)
-* floating-point, numbers: Basic Data Typing. (line 19570)
-* floating-point, numbers, AWKNUM internal type: Internals. (line 18768)
-* FNR variable <1>: Auto-set. (line 8051)
+ (line 19776)
+* floating-point, numbers: Basic Data Typing. (line 19654)
+* floating-point, numbers, AWKNUM internal type: Internals. (line 18805)
+* FNR variable <1>: Auto-set. (line 8059)
* FNR variable: Records. (line 2817)
-* FNR variable, changing: Auto-set. (line 8140)
-* for statement: For Statement. (line 7374)
-* for statement, in arrays: Scanning an Array. (line 8536)
-* force_number internal function: Internals. (line 18776)
-* force_string internal function: Internals. (line 18781)
+* FNR variable, changing: Auto-set. (line 8148)
+* for statement: For Statement. (line 7382)
+* for statement, in arrays: Scanning an Array. (line 8544)
+* force_number internal function: Internals. (line 18813)
+* force_string internal function: Internals. (line 18818)
* format specifiers, mixing regular with positional specifiers: Printf Ordering.
- (line 11234)
-* format specifiers, printf statement: Control Letters. (line 4519)
+ (line 11254)
+* format specifiers, printf statement: Control Letters. (line 4527)
* format specifiers, strftime function (gawk): Time Functions.
- (line 10043)
-* format strings: Basic Printf. (line 4487)
-* formats, numeric output: OFMT. (line 4426)
-* formatting output: Printf. (line 4457)
+ (line 10063)
+* format strings: Basic Printf. (line 4495)
+* formats, numeric output: OFMT. (line 4434)
+* formatting output: Printf. (line 4465)
* forward slash (/): Regexp. (line 1949)
-* forward slash (/), / operator: Precedence. (line 6693)
-* forward slash (/), /= operator <1>: Precedence. (line 6734)
-* forward slash (/), /= operator: Assignment Ops. (line 6103)
+* forward slash (/), / operator: Precedence. (line 6701)
+* forward slash (/), /= operator <1>: Precedence. (line 6742)
+* forward slash (/), /= operator: Assignment Ops. (line 6111)
* forward slash (/), /= operator, vs. /=.../ regexp constant: Assignment Ops.
- (line 6129)
+ (line 6137)
* forward slash (/), patterns and: Expression Patterns.
- (line 6843)
+ (line 6851)
* Free Documentation License (FDL): GNU Free Documentation License.
- (line 20705)
-* Free Software Foundation (FSF) <1>: Glossary. (line 20025)
-* Free Software Foundation (FSF) <2>: Getting. (line 17153)
+ (line 20789)
+* Free Software Foundation (FSF) <1>: Glossary. (line 20109)
+* Free Software Foundation (FSF) <2>: Getting. (line 17193)
* Free Software Foundation (FSF): Manual History. (line 865)
-* free_temp internal macro: Internals. (line 18851)
-* FreeBSD: Glossary. (line 20320)
-* FS variable <1>: User-modified. (line 7842)
-* FS variable: Field Separators. (line 3263)
-* FS variable, --field-separator option and: Options. (line 12012)
+* free_temp internal macro: Internals. (line 18888)
+* FreeBSD: Glossary. (line 20404)
+* FS variable <1>: User-modified. (line 7850)
+* FS variable: Field Separators. (line 3271)
+* FS variable, --field-separator option and: Options. (line 12027)
* FS variable, as null string: Single Character Fields.
- (line 3407)
-* FS variable, as TAB character: Options. (line 12161)
-* FS variable, changing value of <1>: Known Bugs. (line 12420)
-* FS variable, changing value of: Field Separators. (line 3282)
-* FS variable, running awk programs and: Cut Program. (line 14297)
+ (line 3415)
+* FS variable, as TAB character: Options. (line 12195)
+* FS variable, changing value of <1>: Known Bugs. (line 12454)
+* FS variable, changing value of: Field Separators. (line 3290)
+* FS variable, running awk programs and: Cut Program. (line 14331)
* FS variable, setting from command line: Command Line Field Separator.
- (line 3419)
-* FSF (Free Software Foundation) <1>: Glossary. (line 20025)
-* FSF (Free Software Foundation) <2>: Getting. (line 17153)
+ (line 3427)
+* FSF (Free Software Foundation) <1>: Glossary. (line 20109)
+* FSF (Free Software Foundation) <2>: Getting. (line 17193)
* FSF (Free Software Foundation): Manual History. (line 865)
-* function calls: Function Calls. (line 6585)
-* functions, arrays as parameters to: Function Caveats. (line 10696)
-* functions, built-in <1>: Functions. (line 8956)
-* functions, built-in: Function Calls. (line 6589)
+* function calls: Function Calls. (line 6593)
+* functions, arrays as parameters to: Function Caveats. (line 10716)
+* functions, built-in <1>: Functions. (line 8964)
+* functions, built-in: Function Calls. (line 6597)
* functions, built-in, adding to gawk: Dynamic Extensions.
- (line 18733)
-* functions, built-in, evaluation order: Calling Built-in. (line 9023)
-* functions, defining: Definition Syntax. (line 10472)
-* functions, library: Library Functions. (line 12435)
-* functions, library, assertions: Assert Function. (line 12781)
+ (line 18765)
+* functions, built-in, evaluation order: Calling Built-in. (line 9031)
+* functions, defining: Definition Syntax. (line 10492)
+* functions, library: Library Functions. (line 12469)
+* functions, library, assertions: Assert Function. (line 12815)
* functions, library, associative arrays and: Library Names.
- (line 12558)
-* functions, library, C library: Getopt Function. (line 13426)
+ (line 12592)
+* functions, library, C library: Getopt Function. (line 13460)
* functions, library, character values as numbers: Ordinal Functions.
- (line 12942)
+ (line 12976)
* functions, library, Cliff random numbers: Cliff Random Function.
- (line 12911)
+ (line 12945)
* functions, library, command-line options: Getopt Function.
- (line 13426)
+ (line 13460)
* functions, library, example program for using: Igawk Program.
- (line 16216)
+ (line 16250)
* functions, library, group database, reading: Group Functions.
- (line 13934)
+ (line 13968)
* functions, library, managing data files: Data File Management.
- (line 13160)
+ (line 13194)
* functions, library, managing time: Gettimeofday Function.
- (line 13078)
+ (line 13112)
* functions, library, merging arrays into strings: Join Function.
- (line 13033)
+ (line 13067)
* functions, library, nextfile statement: Nextfile Function.
- (line 12611)
-* functions, library, rounding numbers: Round Function. (line 12866)
+ (line 12645)
+* functions, library, rounding numbers: Round Function. (line 12900)
* functions, library, user database, reading: Passwd Functions.
- (line 13709)
-* functions, names of <1>: Definition Syntax. (line 10486)
-* functions, names of: Arrays. (line 8279)
-* functions, recursive: Definition Syntax. (line 10534)
-* functions, return values, setting: Internals. (line 18895)
-* functions, string-translation: I18N Functions. (line 10416)
-* functions, undefined: Function Caveats. (line 10720)
-* functions, user-defined: User-defined. (line 10452)
-* functions, user-defined, calling: Function Caveats. (line 10647)
-* functions, user-defined, counts: Profiling. (line 11853)
-* functions, user-defined, library of: Library Functions. (line 12435)
+ (line 13743)
+* functions, names of <1>: Definition Syntax. (line 10506)
+* functions, names of: Arrays. (line 8287)
+* functions, recursive: Definition Syntax. (line 10554)
+* functions, return values, setting: Internals. (line 18932)
+* functions, string-translation: I18N Functions. (line 10436)
+* functions, undefined: Function Caveats. (line 10740)
+* functions, user-defined: User-defined. (line 10472)
+* functions, user-defined, calling: Function Caveats. (line 10667)
+* functions, user-defined, counts: Profiling. (line 11868)
+* functions, user-defined, library of: Library Functions. (line 12469)
* functions, user-defined, next/nextfile statements and <1>: Nextfile Statement.
- (line 7709)
+ (line 7717)
* functions, user-defined, next/nextfile statements and: Next Statement.
- (line 7660)
+ (line 7668)
* G-d: Acknowledgments. (line 1012)
-* Garfinkle, Scott: Contributors. (line 17047)
+* Garfinkle, Scott: Contributors. (line 17087)
* gawk, awk and <1>: This Manual. (line 718)
* gawk, awk and: Preface. (line 569)
-* gawk, bitwise operations in: Bitwise Functions. (line 10327)
-* gawk, break statement in: Break Statement. (line 7558)
+* gawk, bitwise operations in: Bitwise Functions. (line 10347)
+* gawk, break statement in: Break Statement. (line 7566)
* gawk, built-in variables and: Built-in Variables.
- (line 7787)
+ (line 7795)
* gawk, character classes and: Character Lists. (line 2451)
-* gawk, coding style in: Adding Code. (line 18541)
+* gawk, coding style in: Adding Code. (line 18573)
* gawk, command-line options: GNU Regexp Operators.
(line 2517)
* gawk, comparison operators and: Typing and Comparison.
- (line 6382)
+ (line 6390)
* gawk, configuring: Configuration Philosophy.
- (line 17473)
+ (line 17507)
* gawk, configuring, options: Additional Configuration Options.
- (line 17429)
+ (line 17466)
* gawk, continue statement in: Continue Statement.
- (line 7611)
-* gawk, debugging: Known Bugs. (line 12420)
+ (line 7619)
+* gawk, debugging: Known Bugs. (line 12454)
* gawk, distribution: Distribution contents.
- (line 17213)
+ (line 17253)
* gawk, escape sequences: Escape Sequences. (line 2157)
-* gawk, extensions, disabling: Options. (line 12141)
-* gawk, features, adding: Adding Code. (line 18515)
-* gawk, features, advanced: Advanced Features. (line 11434)
-* gawk, fflush function in: I/O Functions. (line 9834)
-* gawk, field separators and: User-modified. (line 7862)
-* gawk, FIELDWIDTHS variable in: User-modified. (line 7838)
-* gawk, file names in: Special Files. (line 4994)
-* gawk, format-control characters: Control Letters. (line 4593)
-* gawk, function arguments and: Calling Built-in. (line 9009)
+* gawk, extensions, disabling: Options. (line 12175)
+* gawk, features, adding: Adding Code. (line 18547)
+* gawk, features, advanced: Advanced Features. (line 11449)
+* gawk, fflush function in: I/O Functions. (line 9854)
+* gawk, field separators and: User-modified. (line 7870)
+* gawk, FIELDWIDTHS variable in: User-modified. (line 7846)
+* gawk, file names in: Special Files. (line 5002)
+* gawk, format-control characters: Control Letters. (line 4601)
+* gawk, function arguments and: Calling Built-in. (line 9017)
* gawk, functions, adding: Dynamic Extensions.
- (line 18733)
+ (line 18765)
* gawk, hexadecimal numbers and: Nondecimal-numbers.
- (line 5485)
-* gawk, IGNORECASE variable in: User-modified. (line 7878)
-* gawk, implementation issues: Notes. (line 18452)
+ (line 5493)
+* gawk, IGNORECASE variable in: User-modified. (line 7886)
+* gawk, implementation issues: Notes. (line 18484)
* gawk, implementation issues, debugging: Compatibility Mode.
- (line 18471)
+ (line 18503)
* gawk, implementation issues, downward compatibility: Compatibility Mode.
- (line 18471)
-* gawk, implementation issues, limits: Getline Notes. (line 4185)
-* gawk, implementation issues, pipes: Redirection. (line 4965)
-* gawk, installing: Installation. (line 17111)
-* gawk, internals: Internals. (line 18755)
+ (line 18503)
+* gawk, implementation issues, limits: Getline Notes. (line 4193)
+* gawk, implementation issues, pipes: Redirection. (line 4973)
+* gawk, installing: Installation. (line 17151)
+* gawk, internals: Internals. (line 18792)
* gawk, internationalization and, See internationalization: Internationalization.
- (line 10863)
-* gawk, interpreter, adding code to <1>: Future Extensions. (line 19421)
+ (line 10883)
+* gawk, interpreter, adding code to <1>: Future Extensions. (line 19505)
* gawk, interpreter, adding code to: Using Internal File Ops.
- (line 19273)
+ (line 19364)
* gawk, interval expressions and: Regexp Operators. (line 2313)
-* gawk, line continuation in: Conditional Exp. (line 6573)
-* gawk, LINT variable in: User-modified. (line 7891)
-* gawk, list of contributors to: Contributors. (line 17016)
-* gawk, MS-DOS version of: PC Using. (line 17826)
+* gawk, line continuation in: Conditional Exp. (line 6581)
+* gawk, LINT variable in: User-modified. (line 7899)
+* gawk, list of contributors to: Contributors. (line 17056)
+* gawk, MS-DOS version of: PC Using. (line 17858)
* gawk, newlines in: Statements/Lines. (line 1776)
* gawk, next file statement in: Nextfile Statement.
- (line 7716)
-* gawk, nextfile statement in <1>: Nextfile Function. (line 12611)
+ (line 7724)
+* gawk, nextfile statement in <1>: Nextfile Function. (line 12645)
* gawk, nextfile statement in: Nextfile Statement.
- (line 7716)
+ (line 7724)
* gawk, octal numbers and: Nondecimal-numbers.
- (line 5485)
-* gawk, OS/2 version of: PC Using. (line 17826)
+ (line 5493)
+* gawk, OS/2 version of: PC Using. (line 17858)
* gawk, regexp constants and: Using Constant Regexps.
- (line 5558)
+ (line 5566)
* gawk, regular expressions, case sensitivity: Case-sensitivity.
(line 2569)
* gawk, regular expressions, operators: GNU Regexp Operators.
(line 2461)
* gawk, regular expressions, precedence: Regexp Operators. (line 2329)
* gawk, See Also awk: Preface. (line 582)
-* gawk, source code, obtaining: Getting. (line 17149)
-* gawk, splitting fields and: Constant Size. (line 3674)
-* gawk, string-translation functions: I18N Functions. (line 10416)
-* gawk, timestamps: Time Functions. (line 9967)
+* gawk, source code, obtaining: Getting. (line 17189)
+* gawk, splitting fields and: Constant Size. (line 3682)
+* gawk, string-translation functions: I18N Functions. (line 10436)
+* gawk, timestamps: Time Functions. (line 9987)
* gawk, uses for: Preface. (line 582)
-* gawk, versions of, information about, printing: Options. (line 12201)
+* gawk, versions of, information about, printing: Options. (line 12235)
* gawk, word-boundary operator: GNU Regexp Operators.
(line 2510)
-* General Public License (GPL): Glossary. (line 20034)
+* General Public License (GPL): Glossary. (line 20118)
* General Public License, See GPL: Manual History. (line 870)
-* gensub function (gawk) <1>: String Functions. (line 9499)
+* gensub function (gawk) <1>: String Functions. (line 9519)
* gensub function (gawk): Using Constant Regexps.
- (line 5574)
-* gensub function (gawk), escape processing: Gory Details. (line 9622)
-* get_actual_argument internal function: Internals. (line 18875)
-* get_argument internal function: Internals. (line 18870)
-* get_array_argument internal macro: Internals. (line 18890)
-* get_curfunc_arg_count internal function: Internals. (line 18786)
-* get_scalar_argument internal macro: Internals. (line 18885)
-* getgrent function (C library): Group Functions. (line 13934)
-* getgrent user-defined function: Group Functions. (line 13934)
-* getgrgid function (C library): Group Functions. (line 14108)
-* getgrgid user-defined function: Group Functions. (line 14111)
-* getgrnam function (C library): Group Functions. (line 14096)
-* getgrnam user-defined function: Group Functions. (line 14100)
-* getgruser function (C library): Group Functions. (line 14119)
-* getgruser function, user-defined: Group Functions. (line 14122)
+ (line 5582)
+* gensub function (gawk), escape processing: Gory Details. (line 9642)
+* get_actual_argument internal function: Internals. (line 18912)
+* get_argument internal function: Internals. (line 18907)
+* get_array_argument internal macro: Internals. (line 18927)
+* get_curfunc_arg_count internal function: Internals. (line 18823)
+* get_record input method: Internals. (line 18964)
+* get_scalar_argument internal macro: Internals. (line 18922)
+* getgrent function (C library): Group Functions. (line 13968)
+* getgrent user-defined function: Group Functions. (line 13968)
+* getgrgid function (C library): Group Functions. (line 14142)
+* getgrgid user-defined function: Group Functions. (line 14145)
+* getgrnam function (C library): Group Functions. (line 14130)
+* getgrnam user-defined function: Group Functions. (line 14134)
+* getgruser function (C library): Group Functions. (line 14153)
+* getgruser function, user-defined: Group Functions. (line 14156)
* getline command: Reading Files. (line 2794)
* getline command, _gr_init user-defined function: Group Functions.
- (line 14008)
-* getline command, _pw_init function: Passwd Functions. (line 13839)
+ (line 14042)
+* getline command, _pw_init function: Passwd Functions. (line 13873)
* getline command, coprocesses, using from <1>: Close Files And Pipes.
- (line 5191)
+ (line 5199)
* getline command, coprocesses, using from: Getline/Coprocess.
- (line 4129)
-* getline command, deadlock and: Two-way I/O. (line 11572)
-* getline command, explicit input with: Getline. (line 3835)
-* getline command, FILENAME variable and: Getline Notes. (line 4190)
-* getline command, return values: Getline. (line 3848)
-* getline command, variants: Getline Summary. (line 4211)
-* getopt function (C library): Getopt Function. (line 13435)
-* getopt user-defined function: Getopt Function. (line 13525)
-* getpwent function (C library): Passwd Functions. (line 13719)
-* getpwent user-defined function: Passwd Functions. (line 13719)
-* getpwnam function (C library): Passwd Functions. (line 13859)
-* getpwnam user-defined function: Passwd Functions. (line 13863)
-* getpwuid function (C library): Passwd Functions. (line 13871)
-* getpwuid user-defined function: Passwd Functions. (line 13875)
-* getservbyname function (C library): TCP/IP Networking. (line 11671)
+ (line 4137)
+* getline command, deadlock and: Two-way I/O. (line 11587)
+* getline command, explicit input with: Getline. (line 3843)
+* getline command, FILENAME variable and: Getline Notes. (line 4198)
+* getline command, return values: Getline. (line 3856)
+* getline command, variants: Getline Summary. (line 4219)
+* getopt function (C library): Getopt Function. (line 13469)
+* getopt user-defined function: Getopt Function. (line 13559)
+* getpwent function (C library): Passwd Functions. (line 13753)
+* getpwent user-defined function: Passwd Functions. (line 13753)
+* getpwnam function (C library): Passwd Functions. (line 13893)
+* getpwnam user-defined function: Passwd Functions. (line 13897)
+* getpwuid function (C library): Passwd Functions. (line 13905)
+* getpwuid user-defined function: Passwd Functions. (line 13909)
+* getservbyname function (C library): TCP/IP Networking. (line 11686)
* gettext function (C library): Explaining gettext.
- (line 10955)
+ (line 10975)
* gettext library: Explaining gettext.
- (line 10901)
+ (line 10921)
* gettext library, locale categories: Explaining gettext.
- (line 10973)
+ (line 10993)
* gettimeofday user-defined function: Gettimeofday Function.
- (line 13088)
+ (line 13122)
* GNITS mailing list: Acknowledgments. (line 991)
* GNU awk, See gawk: Preface. (line 595)
* GNU Free Documentation License: GNU Free Documentation License.
- (line 20705)
-* GNU General Public License: Glossary. (line 20034)
-* GNU Lesser General Public License: Glossary. (line 20111)
-* GNU long options <1>: Options. (line 11997)
-* GNU long options: Command Line. (line 11980)
-* GNU long options, printing list of: Options. (line 12111)
-* GNU Project <1>: Glossary. (line 20043)
+ (line 20789)
+* GNU General Public License: Glossary. (line 20118)
+* GNU Lesser General Public License: Glossary. (line 20195)
+* GNU long options <1>: Options. (line 12012)
+* GNU long options: Command Line. (line 11995)
+* GNU long options, printing list of: Options. (line 12145)
+* GNU Project <1>: Glossary. (line 20127)
* GNU Project: Manual History. (line 870)
-* GNU/Linux <1>: Glossary. (line 20320)
-* GNU/Linux <2>: Atari Compiling. (line 18166)
-* GNU/Linux <3>: Additional Configuration Options.
- (line 17440)
-* GNU/Linux <4>: I18N Example. (line 11373)
+* GNU/Linux <1>: Glossary. (line 20404)
+* GNU/Linux <2>: Atari Compiling. (line 18198)
+* GNU/Linux <3>: I18N Example. (line 11393)
* GNU/Linux: Manual History. (line 886)
-* GPL (General Public License) <1>: Glossary. (line 20034)
+* GPL (General Public License) <1>: Glossary. (line 20118)
* GPL (General Public License): Manual History. (line 870)
-* GPL (General Public License), printing: Options. (line 12078)
-* grcat program: Group Functions. (line 13943)
-* Grigera, Juan <1>: Bugs. (line 18334)
-* Grigera, Juan: Contributors. (line 17064)
-* group database, reading: Group Functions. (line 13934)
-* group file: Group Functions. (line 13934)
-* groups, information about: Group Functions. (line 13934)
-* gsub function <1>: String Functions. (line 9483)
+* GPL (General Public License), printing: Options. (line 12093)
+* grcat program: Group Functions. (line 13977)
+* Grigera, Juan <1>: Bugs. (line 18366)
+* Grigera, Juan: Contributors. (line 17104)
+* group database, reading: Group Functions. (line 13968)
+* group file: Group Functions. (line 13968)
+* groups, information about: Group Functions. (line 13968)
+* gsub function <1>: String Functions. (line 9503)
* gsub function: Using Constant Regexps.
- (line 5574)
-* gsub function, arguments of: String Functions. (line 9463)
-* gsub function, escape processing: Gory Details. (line 9622)
-* Hankerson, Darrel <1>: Bugs. (line 18333)
-* Hankerson, Darrel <2>: Contributors. (line 17066)
+ (line 5582)
+* gsub function, arguments of: String Functions. (line 9483)
+* gsub function, escape processing: Gory Details. (line 9642)
+* Hankerson, Darrel <1>: Bugs. (line 18365)
+* Hankerson, Darrel <2>: Contributors. (line 17106)
* Hankerson, Darrel: Acknowledgments. (line 995)
* Hartholz, Elaine: Acknowledgments. (line 977)
* Hartholz, Marshall: Acknowledgments. (line 977)
-* Hasegawa, Isamu <1>: Contributors. (line 17092)
+* Hasegawa, Isamu <1>: Contributors. (line 17132)
* Hasegawa, Isamu: Acknowledgments. (line 995)
* hexadecimal numbers: Nondecimal-numbers.
- (line 5449)
-* hexadecimal values, enabling interpretation of: Options. (line 12133)
-* histsort.awk program: History Sorting. (line 15919)
+ (line 5457)
+* hexadecimal values, enabling interpretation of: Options. (line 12167)
+* histsort.awk program: History Sorting. (line 15953)
* Hughes, Phil: Acknowledgments. (line 982)
-* HUP signal: Profiling. (line 11928)
-* hyphen (-), - operator: Precedence. (line 6690)
+* HUP signal: Profiling. (line 11943)
+* hyphen (-), - operator: Precedence. (line 6698)
* hyphen (-), -- (decrement/increment) operators: Precedence.
- (line 6684)
-* hyphen (-), -- operator: Increment Ops. (line 6194)
-* hyphen (-), -= operator <1>: Precedence. (line 6734)
-* hyphen (-), -= operator: Assignment Ops. (line 6103)
-* hyphen (-), filenames beginning with: Options. (line 12058)
+ (line 6692)
+* hyphen (-), -- operator: Increment Ops. (line 6202)
+* hyphen (-), -= operator <1>: Precedence. (line 6742)
+* hyphen (-), -= operator: Assignment Ops. (line 6111)
+* hyphen (-), filenames beginning with: Options. (line 12073)
* hyphen (-), in character lists: Character Lists. (line 2364)
-* id utility: Id Program. (line 14721)
-* id.awk program: Id Program. (line 14745)
-* if statement <1>: If Statement. (line 7252)
+* id utility: Id Program. (line 14755)
+* id.awk program: Id Program. (line 14779)
+* if statement <1>: If Statement. (line 7260)
* if statement: Regexp Usage. (line 1989)
-* if statement, actions, changing: Ranges. (line 6924)
-* igawk.sh program: Igawk Program. (line 16328)
-* IGNORECASE variable <1>: User-modified. (line 7867)
+* if statement, actions, changing: Ranges. (line 6932)
+* igawk.sh program: Igawk Program. (line 16362)
+* IGNORECASE variable <1>: User-modified. (line 7875)
* IGNORECASE variable: Case-sensitivity. (line 2569)
-* IGNORECASE variable, array sorting and: Array Sorting. (line 8945)
-* IGNORECASE variable, array subscripts and: Array Intro. (line 8390)
+* IGNORECASE variable, array sorting and: Array Sorting. (line 8953)
+* IGNORECASE variable, array subscripts and: Array Intro. (line 8398)
* IGNORECASE variable, in example programs: Library Functions.
- (line 12472)
-* implementation issues, gawk: Notes. (line 18452)
+ (line 12506)
+* implementation issues, gawk: Notes. (line 18484)
* implementation issues, gawk, debugging: Compatibility Mode.
- (line 18471)
-* implementation issues, gawk, limits <1>: Redirection. (line 4965)
-* implementation issues, gawk, limits: Getline Notes. (line 4185)
-* in operator <1>: Id Program. (line 14808)
-* in operator <2>: For Statement. (line 7441)
-* in operator <3>: Precedence. (line 6722)
+ (line 18503)
+* implementation issues, gawk, limits <1>: Redirection. (line 4973)
+* implementation issues, gawk, limits: Getline Notes. (line 4193)
+* in operator <1>: Id Program. (line 14842)
+* in operator <2>: For Statement. (line 7449)
+* in operator <3>: Precedence. (line 6730)
* in operator: Typing and Comparison.
- (line 6334)
-* in operator, arrays and <1>: Scanning an Array. (line 8533)
+ (line 6342)
+* in operator, arrays and <1>: Scanning an Array. (line 8541)
* in operator, arrays and: Reference to Elements.
- (line 8424)
-* increment operators: Increment Ops. (line 6152)
-* index function: String Functions. (line 9210)
-* indexing arrays: Array Intro. (line 8348)
+ (line 8432)
+* increment operators: Increment Ops. (line 6160)
+* index function: String Functions. (line 9218)
+* indexing arrays: Array Intro. (line 8356)
* initialization, automatic: More Complex. (line 1731)
* input files: Reading Files. (line 2780)
* input files, closing: Close Files And Pipes.
- (line 5191)
-* input files, counting elements in: Wc Program. (line 15230)
+ (line 5199)
+* input files, counting elements in: Wc Program. (line 15264)
* input files, examples: Sample Data Files. (line 1461)
* input files, reading: Reading Files. (line 2780)
* input files, running awk without: Read Terminal. (line 1146)
-* input files, skipping: Nextfile Function. (line 12611)
-* input files, variable assignments and: Other Arguments. (line 12284)
-* input pipeline: Getline/Pipe. (line 4043)
-* input redirection: Getline/File. (line 3971)
-* input, data, nondecimal: Nondecimal Data. (line 11465)
-* input, explicit: Getline. (line 3835)
-* input, files, See input files: Multiple Line. (line 3697)
-* input, multiline records: Multiple Line. (line 3697)
+* input files, skipping: Nextfile Function. (line 12645)
+* input files, variable assignments and: Other Arguments. (line 12318)
+* input pipeline: Getline/Pipe. (line 4051)
+* input redirection: Getline/File. (line 3979)
+* input, data, nondecimal: Nondecimal Data. (line 11480)
+* input, explicit: Getline. (line 3843)
+* input, files, See input files: Multiple Line. (line 3705)
+* input, multiline records: Multiple Line. (line 3705)
* input, splitting into records: Records. (line 2817)
-* input, standard <1>: Special FD. (line 5011)
+* input, standard <1>: Special FD. (line 5019)
* input, standard: Read Terminal. (line 1146)
-* input/output, binary: User-modified. (line 7809)
-* input/output, from BEGIN and END: I/O And BEGIN/END. (line 7050)
-* input/output, two-way: Two-way I/O. (line 11545)
-* insomnia, cure for: Alarm Program. (line 15443)
+* input/output, binary: User-modified. (line 7817)
+* input/output, from BEGIN and END: I/O And BEGIN/END. (line 7058)
+* input/output, two-way: Two-way I/O. (line 11560)
+* insomnia, cure for: Alarm Program. (line 15477)
* installation, amiga: Amiga Installation.
- (line 17535)
+ (line 17569)
* installation, atari: Atari Installation.
- (line 18129)
-* installation, beos: BeOS Installation. (line 17568)
+ (line 18161)
+* installation, beos: BeOS Installation. (line 17602)
* installation, tandem: Tandem Installation.
- (line 18246)
-* installation, vms: VMS Installation. (line 17949)
-* installing gawk: Installation. (line 17111)
-* int function: Numeric Functions. (line 9048)
-* INT signal (MS-DOS): Profiling. (line 11931)
-* integers: Basic Data Typing. (line 19570)
-* integers, unsigned: Basic Data Typing. (line 19577)
-* interacting with other programs: I/O Functions. (line 9852)
-* internationalization <1>: I18N and L10N. (line 10886)
-* internationalization: I18N Functions. (line 10416)
+ (line 18278)
+* installation, vms: VMS Installation. (line 17981)
+* installing gawk: Installation. (line 17151)
+* int function: Numeric Functions. (line 9056)
+* INT signal (MS-DOS): Profiling. (line 11946)
+* integers: Basic Data Typing. (line 19654)
+* integers, unsigned: Basic Data Typing. (line 19661)
+* interacting with other programs: I/O Functions. (line 9872)
+* internationalization <1>: I18N and L10N. (line 10906)
+* internationalization: I18N Functions. (line 10436)
* internationalization, localization <1>: Internationalization.
- (line 10863)
-* internationalization, localization: User-modified. (line 7937)
+ (line 10883)
+* internationalization, localization: User-modified. (line 7945)
* internationalization, localization, character classes: Character Lists.
(line 2451)
* internationalization, localization, gawk and: Internationalization.
- (line 10863)
+ (line 10883)
* internationalization, localization, locale categories: Explaining gettext.
- (line 10973)
+ (line 10993)
* internationalization, localization, marked strings: Programmer i18n.
- (line 11039)
+ (line 11059)
* internationalization, localization, portability and: I18N Portability.
- (line 11260)
+ (line 11280)
* internationalizing a program: Explaining gettext.
- (line 10901)
-* interpreted programs <1>: Glossary. (line 20083)
-* interpreted programs: Basic High Level. (line 19467)
+ (line 10921)
+* interpreted programs <1>: Glossary. (line 20167)
+* interpreted programs: Basic High Level. (line 19551)
* interval expressions: Regexp Operators. (line 2290)
* inventory-shipped file: Sample Data Files. (line 1487)
-* ISO: Glossary. (line 20094)
-* ISO 8859-1: Glossary. (line 19879)
-* ISO Latin-1: Glossary. (line 19879)
-* Jacobs, Andrew: Passwd Functions. (line 13779)
-* Jaegermann, Michal <1>: Contributors. (line 17055)
+* IOBUF internal structure: Internals. (line 18964)
+* iop_alloc internal function: Internals. (line 18964)
+* ISO: Glossary. (line 20178)
+* ISO 8859-1: Glossary. (line 19963)
+* ISO Latin-1: Glossary. (line 19963)
+* Jacobs, Andrew: Passwd Functions. (line 13813)
+* Jaegermann, Michal <1>: Contributors. (line 17095)
* Jaegermann, Michal: Acknowledgments. (line 995)
-* Jedi knights: Undocumented. (line 12409)
-* join user-defined function: Join Function. (line 13045)
-* Kahrs, Ju"rgen <1>: Contributors. (line 17074)
+* Jedi knights: Undocumented. (line 12443)
+* join user-defined function: Join Function. (line 13079)
+* Kahrs, Ju"rgen <1>: Contributors. (line 17114)
* Kahrs, Ju"rgen: Acknowledgments. (line 995)
-* Kenobi, Obi-Wan: Undocumented. (line 12409)
-* Kernighan, Brian <1>: Basic Data Typing. (line 19620)
-* Kernighan, Brian <2>: Other Versions. (line 18358)
-* Kernighan, Brian <3>: Contributors. (line 17022)
-* Kernighan, Brian <4>: BTL. (line 16775)
-* Kernighan, Brian <5>: Concatenation. (line 5900)
+* Kenobi, Obi-Wan: Undocumented. (line 12443)
+* Kernighan, Brian <1>: Basic Data Typing. (line 19704)
+* Kernighan, Brian <2>: Other Versions. (line 18390)
+* Kernighan, Brian <3>: Contributors. (line 17062)
+* Kernighan, Brian <4>: BTL. (line 16809)
+* Kernighan, Brian <5>: Concatenation. (line 5908)
* Kernighan, Brian <6>: Acknowledgments. (line 1002)
* Kernighan, Brian <7>: Conventions. (line 846)
* Kernighan, Brian: History. (line 640)
-* kill command, dynamic profiling: Profiling. (line 11906)
-* Knights, jedi: Undocumented. (line 12409)
-* Kwok, Conrad: Contributors. (line 17047)
-* labels.awk program: Labels Program. (line 15731)
-* languages, data-driven: Basic High Level. (line 19536)
+* kill command, dynamic profiling: Profiling. (line 11921)
+* Knights, jedi: Undocumented. (line 12443)
+* Kwok, Conrad: Contributors. (line 17087)
+* labels.awk program: Labels Program. (line 15765)
+* languages, data-driven: Basic High Level. (line 19620)
* LC_ALL locale category: Explaining gettext.
- (line 11011)
+ (line 11031)
* LC_COLLATE locale category: Explaining gettext.
- (line 10984)
+ (line 11004)
* LC_CTYPE locale category: Explaining gettext.
- (line 10988)
+ (line 11008)
* LC_MESSAGES locale category: Explaining gettext.
- (line 10978)
+ (line 10998)
* LC_MESSAGES locale category, bindtextdomain function (gawk): Programmer i18n.
- (line 11111)
+ (line 11131)
* LC_MONETARY locale category: Explaining gettext.
- (line 10994)
+ (line 11014)
* LC_NUMERIC locale category: Explaining gettext.
- (line 10998)
+ (line 11018)
* LC_RESPONSE locale category: Explaining gettext.
- (line 11002)
+ (line 11022)
* LC_TIME locale category: Explaining gettext.
- (line 11006)
-* left angle bracket (<), < operator <1>: Precedence. (line 6703)
+ (line 11026)
+* left angle bracket (<), < operator <1>: Precedence. (line 6711)
* left angle bracket (<), < operator: Typing and Comparison.
- (line 6334)
-* left angle bracket (<), < operator (I/O): Getline/File. (line 3971)
-* left angle bracket (<), <= operator <1>: Precedence. (line 6703)
+ (line 6342)
+* left angle bracket (<), < operator (I/O): Getline/File. (line 3979)
+* left angle bracket (<), <= operator <1>: Precedence. (line 6711)
* left angle bracket (<), <= operator: Typing and Comparison.
- (line 6334)
-* left shift, bitwise: Bitwise Functions. (line 10320)
-* leftmost longest match: Multiple Line. (line 3717)
-* length function: String Functions. (line 9221)
-* Lesser General Public License (LGPL): Glossary. (line 20111)
-* LGPL (Lesser General Public License): Glossary. (line 20111)
-* libraries of awk functions: Library Functions. (line 12435)
-* libraries of awk functions, assertions: Assert Function. (line 12781)
+ (line 6342)
+* left shift, bitwise: Bitwise Functions. (line 10340)
+* leftmost longest match: Multiple Line. (line 3725)
+* length function: String Functions. (line 9229)
+* Lesser General Public License (LGPL): Glossary. (line 20195)
+* LGPL (Lesser General Public License): Glossary. (line 20195)
+* libraries of awk functions: Library Functions. (line 12469)
+* libraries of awk functions, assertions: Assert Function. (line 12815)
* libraries of awk functions, associative arrays and: Library Names.
- (line 12558)
+ (line 12592)
* libraries of awk functions, character values as numbers: Ordinal Functions.
- (line 12942)
+ (line 12976)
* libraries of awk functions, command-line options: Getopt Function.
- (line 13426)
+ (line 13460)
* libraries of awk functions, example program for using: Igawk Program.
- (line 16216)
+ (line 16250)
* libraries of awk functions, group database, reading: Group Functions.
- (line 13934)
+ (line 13968)
* libraries of awk functions, managing, data files: Data File Management.
- (line 13160)
+ (line 13194)
* libraries of awk functions, managing, time: Gettimeofday Function.
- (line 13078)
+ (line 13112)
* libraries of awk functions, merging arrays into strings: Join Function.
- (line 13033)
+ (line 13067)
* libraries of awk functions, nextfile statement: Nextfile Function.
- (line 12611)
+ (line 12645)
* libraries of awk functions, rounding numbers: Round Function.
- (line 12866)
+ (line 12900)
* libraries of awk functions, user database, reading: Passwd Functions.
- (line 13709)
+ (line 13743)
* line breaks: Statements/Lines. (line 1770)
-* line continuations: Boolean Ops. (line 6511)
-* line continuations, gawk: Conditional Exp. (line 6573)
-* line continuations, in print statement: Print Examples. (line 4375)
+* line continuations: Boolean Ops. (line 6519)
+* line continuations, gawk: Conditional Exp. (line 6581)
+* line continuations, in print statement: Print Examples. (line 4383)
* line continuations, with C shell: More Complex. (line 1723)
-* lines, blank, printing: Print. (line 4292)
-* lines, counting: Wc Program. (line 15230)
-* lines, duplicate, removing: History Sorting. (line 15900)
-* lines, matching ranges of: Ranges. (line 6905)
-* lines, skipping between markers: Ranges. (line 6942)
-* lint checking: User-modified. (line 7882)
-* lint checking, array elements: Delete. (line 8605)
+* lines, blank, printing: Print. (line 4300)
+* lines, counting: Wc Program. (line 15264)
+* lines, duplicate, removing: History Sorting. (line 15934)
+* lines, matching ranges of: Ranges. (line 6913)
+* lines, skipping between markers: Ranges. (line 6950)
+* lint checking: User-modified. (line 7890)
+* lint checking, array elements: Delete. (line 8613)
* lint checking, array subscripts: Uninitialized Subscripts.
- (line 8735)
-* lint checking, empty programs: Command Line. (line 11983)
-* lint checking, issuing warnings: Options. (line 12116)
+ (line 8743)
+* lint checking, empty programs: Command Line. (line 11998)
+* lint checking, issuing warnings: Options. (line 12150)
* lint checking, POSIXLY_CORRECT environment variable: Options.
- (line 12239)
-* lint checking, undefined functions: Function Caveats. (line 10737)
-* LINT variable: User-modified. (line 7882)
-* Linux <1>: Glossary. (line 20320)
-* Linux <2>: Atari Compiling. (line 18166)
-* Linux <3>: Additional Configuration Options.
- (line 17440)
-* Linux <4>: I18N Example. (line 11373)
+ (line 12273)
+* lint checking, undefined functions: Function Caveats. (line 10757)
+* LINT variable: User-modified. (line 7890)
+* Linux <1>: Glossary. (line 20404)
+* Linux <2>: Atari Compiling. (line 18198)
+* Linux <3>: I18N Example. (line 11393)
* Linux: Manual History. (line 886)
* locale categories: Explaining gettext.
- (line 10973)
-* localization: I18N and L10N. (line 10886)
+ (line 10993)
+* localization: I18N and L10N. (line 10906)
* localization, See internationalization, localization: I18N and L10N.
- (line 10886)
-* log files, timestamps in: Time Functions. (line 9967)
-* log function: Numeric Functions. (line 9064)
-* logical false/true: Truth Values. (line 6238)
-* logical operators, See Boolean expressions: Boolean Ops. (line 6455)
-* login information: Passwd Functions. (line 13719)
-* long options: Command Line. (line 11980)
-* loops: While Statement. (line 7291)
-* loops, continue statements and: For Statement. (line 7430)
-* loops, count for header: Profiling. (line 11847)
-* loops, exiting: Break Statement. (line 7517)
-* loops, See Also while statement: While Statement. (line 7291)
+ (line 10906)
+* log files, timestamps in: Time Functions. (line 9987)
+* log function: Numeric Functions. (line 9072)
+* logical false/true: Truth Values. (line 6246)
+* logical operators, See Boolean expressions: Boolean Ops. (line 6463)
+* login information: Passwd Functions. (line 13753)
+* long options: Command Line. (line 11995)
+* loops: While Statement. (line 7299)
+* loops, continue statements and: For Statement. (line 7438)
+* loops, count for header: Profiling. (line 11862)
+* loops, exiting: Break Statement. (line 7525)
+* loops, See Also while statement: While Statement. (line 7299)
* Lost In Space: Dynamic Extensions.
- (line 18729)
+ (line 18761)
* ls utility: More Complex. (line 1708)
-* lshift function (gawk): Bitwise Functions. (line 10333)
-* lvalues/rvalues: Assignment Ops. (line 6006)
-* mailing labels, printing: Labels Program. (line 15689)
+* lshift function (gawk): Bitwise Functions. (line 10353)
+* lvalues/rvalues: Assignment Ops. (line 6014)
+* mailing labels, printing: Labels Program. (line 15723)
* mailing list, GNITS: Acknowledgments. (line 991)
-* make_builtin internal function: Internals. (line 18856)
-* make_number internal function: Internals. (line 18831)
-* make_string internal function: Internals. (line 18826)
-* mark parity: Ordinal Functions. (line 12980)
+* make_builtin internal function: Internals. (line 18893)
+* make_number internal function: Internals. (line 18868)
+* make_string internal function: Internals. (line 18863)
+* mark parity: Ordinal Functions. (line 13014)
* marked string extraction (internationalization): String Extraction.
- (line 11157)
-* marked strings, extracting: String Extraction. (line 11157)
-* Marx, Groucho: Increment Ops. (line 6207)
-* match function: String Functions. (line 9239)
+ (line 11177)
+* marked strings, extracting: String Extraction. (line 11177)
+* Marx, Groucho: Increment Ops. (line 6215)
+* match function: String Functions. (line 9256)
* match function, RSTART/RLENGTH variables: String Functions.
- (line 9256)
+ (line 9273)
* matching, expressions, See comparison expressions: Typing and Comparison.
- (line 6269)
-* matching, leftmost longest: Multiple Line. (line 3717)
-* matching, null strings: Gory Details. (line 9776)
-* mawk program: Other Versions. (line 18378)
-* McPhee, Patrick: Contributors. (line 17098)
-* memory, releasing: Internals. (line 18851)
-* memory, setting limits: Options. (line 12036)
+ (line 6277)
+* matching, leftmost longest: Multiple Line. (line 3725)
+* matching, null strings: Gory Details. (line 9796)
+* mawk program: Other Versions. (line 18410)
+* McPhee, Patrick: Contributors. (line 17138)
+* memory, releasing: Internals. (line 18888)
+* memory, setting limits: Options. (line 12051)
* message object files: Explaining gettext.
- (line 10934)
+ (line 10954)
* message object files, converting from portable object files: I18N Example.
- (line 11380)
+ (line 11400)
* message object files, specifying directory of <1>: Programmer i18n.
- (line 11070)
+ (line 11090)
* message object files, specifying directory of: Explaining gettext.
- (line 10946)
+ (line 10966)
* metacharacters, escape sequences for: Escape Sequences. (line 2164)
-* mktime function (gawk): Time Functions. (line 9991)
-* modifiers, in format specifiers: Format Modifiers. (line 4606)
+* mktime function (gawk): Time Functions. (line 10011)
+* modifiers, in format specifiers: Format Modifiers. (line 4614)
* monetary information, localization: Explaining gettext.
- (line 10994)
-* msgfmt utility: I18N Example. (line 11380)
-* names, arrays/variables <1>: Library Names. (line 12507)
-* names, arrays/variables: Arrays. (line 8279)
-* names, functions <1>: Library Names. (line 12507)
-* names, functions: Definition Syntax. (line 10486)
-* namespace issues <1>: Library Names. (line 12507)
-* namespace issues: Arrays. (line 8279)
-* namespace issues, functions: Definition Syntax. (line 10486)
+ (line 11014)
+* msgfmt utility: I18N Example. (line 11400)
+* names, arrays/variables <1>: Library Names. (line 12541)
+* names, arrays/variables: Arrays. (line 8287)
+* names, functions <1>: Library Names. (line 12541)
+* names, functions: Definition Syntax. (line 10506)
+* namespace issues <1>: Library Names. (line 12541)
+* namespace issues: Arrays. (line 8287)
+* namespace issues, functions: Definition Syntax. (line 10506)
* nawk utility: Names. (line 688)
* negative zero: Floating Point Issues.
- (line 19714)
-* NetBSD: Glossary. (line 20320)
-* networks, programming: TCP/IP Networking. (line 11643)
-* networks, support for: Special Network. (line 5137)
-* newlines <1>: Options. (line 12148)
-* newlines <2>: Boolean Ops. (line 6516)
+ (line 19798)
+* NetBSD: Glossary. (line 20404)
+* networks, programming: TCP/IP Networking. (line 11658)
+* networks, support for: Special Network. (line 5145)
+* newlines <1>: Options. (line 12182)
+* newlines <2>: Boolean Ops. (line 6524)
* newlines: Statements/Lines. (line 1770)
-* newlines, as field separators: Field Separators. (line 3312)
+* newlines, as field separators: Field Separators. (line 3320)
* newlines, as record separators: Records. (line 2831)
* newlines, in dynamic regexps: Computed Regexps. (line 2708)
* newlines, in regexp constants: Computed Regexps. (line 2718)
-* newlines, printing: Print Examples. (line 4312)
+* newlines, printing: Print Examples. (line 4320)
* newlines, separating statements in actions <1>: Statements.
- (line 7220)
+ (line 7228)
* newlines, separating statements in actions: Action Overview.
- (line 7170)
-* next file statement: POSIX/GNU. (line 16967)
-* next file statement, deprecated: Obsolete. (line 12392)
+ (line 7178)
+* next file statement: POSIX/GNU. (line 17001)
+* next file statement, deprecated: Obsolete. (line 12426)
* next file statement, in gawk: Nextfile Statement.
- (line 7716)
-* next statement <1>: Next Statement. (line 7627)
-* next statement: Boolean Ops. (line 6533)
+ (line 7724)
+* next statement <1>: Next Statement. (line 7635)
+* next statement: Boolean Ops. (line 6541)
* next statement, BEGIN/END patterns and: I/O And BEGIN/END.
- (line 7080)
+ (line 7088)
* next statement, user-defined functions and: Next Statement.
- (line 7660)
+ (line 7668)
* nextfile statement: Nextfile Statement.
- (line 7676)
+ (line 7684)
* nextfile statement, BEGIN/END patterns and: I/O And BEGIN/END.
- (line 7080)
-* nextfile statement, implementing: Nextfile Function. (line 12611)
+ (line 7088)
+* nextfile statement, implementing: Nextfile Function. (line 12645)
* nextfile statement, in gawk: Nextfile Statement.
- (line 7716)
-* nextfile statement, next file statement and: Obsolete. (line 12392)
+ (line 7724)
+* nextfile statement, next file statement and: Obsolete. (line 12426)
* nextfile statement, user-defined functions and: Nextfile Statement.
- (line 7709)
-* nextfile user-defined function: Nextfile Function. (line 12643)
-* NF variable <1>: Auto-set. (line 8056)
-* NF variable: Fields. (line 3033)
-* NF variable, decrementing: Changing Fields. (line 3223)
-* noassign.awk program: Ignoring Assigns. (line 13393)
-* NODE internal type: Internals. (line 18772)
-* nodes, duplicating: Internals. (line 18846)
-* not Boolean-logic operator: Boolean Ops. (line 6455)
-* NR variable <1>: Auto-set. (line 8067)
+ (line 7717)
+* nextfile user-defined function: Nextfile Function. (line 12677)
+* NF variable <1>: Auto-set. (line 8064)
+* NF variable: Fields. (line 3041)
+* NF variable, decrementing: Changing Fields. (line 3231)
+* noassign.awk program: Ignoring Assigns. (line 13427)
+* NODE internal type: Internals. (line 18809)
+* nodes, duplicating: Internals. (line 18883)
+* not Boolean-logic operator: Boolean Ops. (line 6463)
+* NR variable <1>: Auto-set. (line 8075)
* NR variable: Records. (line 2817)
-* NR variable, changing: Auto-set. (line 8140)
-* null strings <1>: Basic Data Typing. (line 19596)
-* null strings <2>: Truth Values. (line 6238)
+* NR variable, changing: Auto-set. (line 8148)
+* null strings <1>: Basic Data Typing. (line 19680)
+* null strings <2>: Truth Values. (line 6246)
* null strings <3>: Regexp Field Splitting.
- (line 3371)
+ (line 3379)
* null strings: Records. (line 2912)
-* null strings, array elements and: Delete. (line 8598)
+* null strings, array elements and: Delete. (line 8606)
* null strings, as array subscripts: Uninitialized Subscripts.
- (line 8735)
-* null strings, converting numbers to strings: Conversion. (line 5726)
-* null strings, matching: Gory Details. (line 9776)
+ (line 8743)
+* null strings, converting numbers to strings: Conversion. (line 5734)
+* null strings, matching: Gory Details. (line 9796)
* null strings, quoting and: Quoting. (line 1401)
* number sign (#), #! (executable scripts): Executable Scripts.
(line 1233)
* number sign (#), #! (executable scripts), portability issues with: Executable Scripts.
(line 1233)
* number sign (#), commenting: Comments. (line 1296)
-* numbers: Internals. (line 18831)
+* numbers: Internals. (line 18868)
* numbers, as array subscripts: Numeric Array Subscripts.
- (line 8648)
-* numbers, as values of characters: Ordinal Functions. (line 12942)
+ (line 8656)
+* numbers, as values of characters: Ordinal Functions. (line 12976)
* numbers, Cliff random: Cliff Random Function.
- (line 12911)
-* numbers, converting: Conversion. (line 5711)
-* numbers, converting, to strings <1>: Bitwise Functions. (line 10387)
-* numbers, converting, to strings: User-modified. (line 7825)
-* numbers, floating-point: Basic Data Typing. (line 19570)
-* numbers, floating-point, AWKNUM internal type: Internals. (line 18768)
+ (line 12945)
+* numbers, converting: Conversion. (line 5719)
+* numbers, converting, to strings <1>: Bitwise Functions. (line 10407)
+* numbers, converting, to strings: User-modified. (line 7833)
+* numbers, floating-point: Basic Data Typing. (line 19654)
+* numbers, floating-point, AWKNUM internal type: Internals. (line 18805)
* numbers, hexadecimal: Nondecimal-numbers.
- (line 5449)
-* numbers, NODE internal type: Internals. (line 18772)
+ (line 5457)
+* numbers, NODE internal type: Internals. (line 18809)
* numbers, octal: Nondecimal-numbers.
- (line 5449)
-* numbers, random: Numeric Functions. (line 9107)
-* numbers, rounding: Round Function. (line 12866)
-* numeric, constants: Scalar Constants. (line 5417)
-* numeric, output format: OFMT. (line 4426)
+ (line 5457)
+* numbers, random: Numeric Functions. (line 9115)
+* numbers, rounding: Round Function. (line 12900)
+* numeric, constants: Scalar Constants. (line 5425)
+* numeric, output format: OFMT. (line 4434)
* numeric, strings: Typing and Comparison.
- (line 6273)
-* numeric, values: Internals. (line 18776)
+ (line 6281)
+* numeric, values: Internals. (line 18813)
* oawk utility: Names. (line 688)
-* obsolete features: Obsolete. (line 12387)
+* obsolete features: Obsolete. (line 12421)
* octal numbers: Nondecimal-numbers.
- (line 5449)
-* octal values, enabling interpretation of: Options. (line 12133)
-* OFMT variable <1>: User-modified. (line 7899)
-* OFMT variable <2>: Conversion. (line 5759)
-* OFMT variable: OFMT. (line 4435)
-* OFMT variable, POSIX awk and: OFMT. (line 4447)
-* OFS variable <1>: User-modified. (line 7908)
-* OFS variable <2>: Output Separators. (line 4385)
-* OFS variable: Changing Fields. (line 3180)
-* OpenBSD: Glossary. (line 20320)
-* operating systems, BSD-based <1>: Portal Files. (line 11710)
+ (line 5457)
+* octal values, enabling interpretation of: Options. (line 12167)
+* OFMT variable <1>: User-modified. (line 7907)
+* OFMT variable <2>: Conversion. (line 5767)
+* OFMT variable: OFMT. (line 4443)
+* OFMT variable, POSIX awk and: OFMT. (line 4455)
+* OFS variable <1>: User-modified. (line 7916)
+* OFS variable <2>: Output Separators. (line 4393)
+* OFS variable: Changing Fields. (line 3188)
+* OpenBSD: Glossary. (line 20404)
+* operating systems, BSD-based <1>: Portal Files. (line 11725)
* operating systems, BSD-based: Manual History. (line 886)
-* operating systems, PC, gawk on: PC Using. (line 17821)
+* operating systems, PC, gawk on: PC Using. (line 17853)
* operating systems, PC, gawk on, installing: PC Installation.
- (line 17600)
-* operating systems, porting gawk to: New Ports. (line 18648)
+ (line 17634)
+* operating systems, porting gawk to: New Ports. (line 18680)
* operating systems, See Also GNU/Linux, PC operating systems, Unix: Installation.
- (line 17111)
-* operations, bitwise: Bitwise Functions. (line 10294)
-* operators, arithmetic: Arithmetic Ops. (line 5815)
-* operators, assignment: Assignment Ops. (line 5981)
-* operators, assignment, evaluation order: Assignment Ops. (line 6085)
-* operators, Boolean, See Boolean expressions: Boolean Ops. (line 6455)
-* operators, decrement/increment: Increment Ops. (line 6152)
+ (line 17151)
+* operations, bitwise: Bitwise Functions. (line 10314)
+* operators, arithmetic: Arithmetic Ops. (line 5823)
+* operators, assignment: Assignment Ops. (line 5989)
+* operators, assignment, evaluation order: Assignment Ops. (line 6093)
+* operators, Boolean, See Boolean expressions: Boolean Ops. (line 6463)
+* operators, decrement/increment: Increment Ops. (line 6160)
* operators, GNU-specific: GNU Regexp Operators.
(line 2461)
-* operators, input/output <1>: Precedence. (line 6703)
-* operators, input/output <2>: Redirection. (line 4856)
-* operators, input/output <3>: Getline/Coprocess. (line 4129)
-* operators, input/output <4>: Getline/Pipe. (line 4043)
-* operators, input/output: Getline/File. (line 3971)
-* operators, logical, See Boolean expressions: Boolean Ops. (line 6455)
-* operators, precedence <1>: Precedence. (line 6649)
-* operators, precedence: Increment Ops. (line 6207)
+* operators, input/output <1>: Precedence. (line 6711)
+* operators, input/output <2>: Redirection. (line 4864)
+* operators, input/output <3>: Getline/Coprocess. (line 4137)
+* operators, input/output <4>: Getline/Pipe. (line 4051)
+* operators, input/output: Getline/File. (line 3979)
+* operators, logical, See Boolean expressions: Boolean Ops. (line 6463)
+* operators, precedence <1>: Precedence. (line 6657)
+* operators, precedence: Increment Ops. (line 6215)
* operators, relational, See operators, comparison: Typing and Comparison.
- (line 6269)
-* operators, short-circuit: Boolean Ops. (line 6506)
-* operators, string: Concatenation. (line 5903)
+ (line 6277)
+* operators, short-circuit: Boolean Ops. (line 6514)
+* operators, string: Concatenation. (line 5911)
* operators, string-matching: Regexp Usage. (line 1989)
* operators, string-matching, for buffers: GNU Regexp Operators.
(line 2495)
* operators, word-boundary (gawk): GNU Regexp Operators.
(line 2510)
-* options, command-line <1>: Options. (line 11997)
+* options, command-line <1>: Options. (line 12012)
* options, command-line <2>: Command Line Field Separator.
- (line 3419)
+ (line 3427)
* options, command-line: Long. (line 1202)
-* options, command-line, end of: Options. (line 12053)
-* options, command-line, invoking awk: Command Line. (line 11973)
-* options, command-line, processing: Getopt Function. (line 13426)
-* options, deprecated: Obsolete. (line 12387)
-* options, long <1>: Options. (line 11997)
-* options, long: Command Line. (line 11980)
-* options, printing list of: Options. (line 12111)
-* OR bitwise operation: Bitwise Functions. (line 10294)
-* or Boolean-logic operator: Boolean Ops. (line 6455)
-* or function (gawk): Bitwise Functions. (line 10327)
-* ord user-defined function: Ordinal Functions. (line 12952)
-* order of evaluation, concatenation: Concatenation. (line 5935)
-* ORS variable <1>: User-modified. (line 7913)
-* ORS variable: Output Separators. (line 4399)
+* options, command-line, end of: Options. (line 12068)
+* options, command-line, invoking awk: Command Line. (line 11988)
+* options, command-line, processing: Getopt Function. (line 13460)
+* options, deprecated: Obsolete. (line 12421)
+* options, long <1>: Options. (line 12012)
+* options, long: Command Line. (line 11995)
+* options, printing list of: Options. (line 12145)
+* OR bitwise operation: Bitwise Functions. (line 10314)
+* or Boolean-logic operator: Boolean Ops. (line 6463)
+* or function (gawk): Bitwise Functions. (line 10347)
+* ord user-defined function: Ordinal Functions. (line 12986)
+* order of evaluation, concatenation: Concatenation. (line 5943)
+* ORS variable <1>: User-modified. (line 7921)
+* ORS variable: Output Separators. (line 4407)
* output field separator, See OFS variable: Changing Fields.
- (line 3180)
+ (line 3188)
* output record separator, See ORS variable: Output Separators.
- (line 4399)
-* output redirection: Redirection. (line 4843)
-* output, buffering: I/O Functions. (line 9818)
-* output, duplicating into files: Tee Program. (line 14930)
+ (line 4407)
+* output redirection: Redirection. (line 4851)
+* output, buffering: I/O Functions. (line 9838)
+* output, duplicating into files: Tee Program. (line 14964)
* output, files, closing: Close Files And Pipes.
- (line 5191)
-* output, format specifier, OFMT: OFMT. (line 4435)
-* output, formatted: Printf. (line 4457)
-* output, pipes: Redirection. (line 4891)
-* output, printing, See printing: Printing. (line 4241)
-* output, records: Output Separators. (line 4399)
-* output, standard: Special FD. (line 5011)
-* P1003.2 POSIX standard: Glossary. (line 20164)
-* param_cnt internal variable: Internals. (line 18795)
-* parameters, number of: Internals. (line 18795)
+ (line 5199)
+* output, format specifier, OFMT: OFMT. (line 4443)
+* output, formatted: Printf. (line 4465)
+* output, pipes: Redirection. (line 4899)
+* output, printing, See printing: Printing. (line 4249)
+* output, records: Output Separators. (line 4407)
+* output, standard: Special FD. (line 5019)
+* P1003.2 POSIX standard: Glossary. (line 20248)
+* param_cnt internal variable: Internals. (line 18832)
+* parameters, number of: Internals. (line 18832)
* parentheses (): Regexp Operators. (line 2253)
-* parentheses (), pgawk program: Profiling. (line 11862)
-* password file: Passwd Functions. (line 13719)
+* parentheses (), pgawk program: Profiling. (line 11877)
+* password file: Passwd Functions. (line 13753)
* patterns: Patterns and Actions.
- (line 6747)
+ (line 6755)
* patterns, comparison expressions as: Expression Patterns.
- (line 6833)
-* patterns, counts: Profiling. (line 11834)
+ (line 6841)
+* patterns, counts: Profiling. (line 11849)
* patterns, default: Very Simple. (line 1559)
-* patterns, empty: Empty. (line 7093)
-* patterns, expressions as: Regexp Patterns. (line 6811)
-* patterns, ranges in: Ranges. (line 6905)
+* patterns, empty: Empty. (line 7101)
+* patterns, expressions as: Regexp Patterns. (line 6819)
+* patterns, ranges in: Ranges. (line 6913)
* patterns, regexp constants as: Expression Patterns.
- (line 6855)
-* patterns, types of: Pattern Overview. (line 6780)
-* pawk profiling Bell Labs awk: Other Versions. (line 18433)
-* PC operating systems, gawk on: PC Using. (line 17821)
+ (line 6863)
+* patterns, types of: Pattern Overview. (line 6788)
+* pawk profiling Bell Labs awk: Other Versions. (line 18465)
+* PC operating systems, gawk on: PC Using. (line 17853)
* PC operating systems, gawk on, installing: PC Installation.
- (line 17600)
-* percent sign (%), % operator: Precedence. (line 6693)
-* percent sign (%), %= operator <1>: Precedence. (line 6734)
-* percent sign (%), %= operator: Assignment Ops. (line 6103)
+ (line 17634)
+* percent sign (%), % operator: Precedence. (line 6701)
+* percent sign (%), %= operator <1>: Precedence. (line 6742)
+* percent sign (%), %= operator: Assignment Ops. (line 6111)
* period (.): Regexp Operators. (line 2218)
-* PERL: Future Extensions. (line 19333)
-* Peters, Arno: Contributors. (line 17083)
-* Peterson, Hal: Contributors. (line 17050)
-* pgawk program: Profiling. (line 11725)
-* pgawk program, awkprof.out file: Profiling. (line 11729)
-* pgawk program, dynamic profiling: Profiling. (line 11898)
+* PERL: Future Extensions. (line 19424)
+* Peters, Arno: Contributors. (line 17123)
+* Peterson, Hal: Contributors. (line 17090)
+* pgawk program: Profiling. (line 11740)
+* pgawk program, awkprof.out file: Profiling. (line 11744)
+* pgawk program, dynamic profiling: Profiling. (line 11913)
* pipes, closing: Close Files And Pipes.
- (line 5191)
-* pipes, input: Getline/Pipe. (line 4043)
-* pipes, output: Redirection. (line 4891)
+ (line 5199)
+* pipes, input: Getline/Pipe. (line 4051)
+* pipes, output: Redirection. (line 4899)
* plus sign (+): Regexp Operators. (line 2276)
-* plus sign (+), + operator: Precedence. (line 6690)
-* plus sign (+), ++ operator <1>: Precedence. (line 6684)
-* plus sign (+), ++ operator: Increment Ops. (line 6186)
-* plus sign (+), += operator <1>: Precedence. (line 6734)
-* plus sign (+), += operator: Assignment Ops. (line 6056)
+* plus sign (+), + operator: Precedence. (line 6698)
+* plus sign (+), ++ operator <1>: Precedence. (line 6692)
+* plus sign (+), ++ operator: Increment Ops. (line 6194)
+* plus sign (+), += operator <1>: Precedence. (line 6742)
+* plus sign (+), += operator: Assignment Ops. (line 6064)
* plus sign (+), decrement/increment operators: Increment Ops.
- (line 6157)
+ (line 6165)
* portability: Escape Sequences. (line 2126)
* portability, #! (executable scripts): Executable Scripts.
(line 1261)
-* portability, ** operator and: Arithmetic Ops. (line 5890)
-* portability, **= operator and: Assignment Ops. (line 6123)
+* portability, ** operator and: Arithmetic Ops. (line 5898)
+* portability, **= operator and: Assignment Ops. (line 6131)
* portability, ARGV variable: Executable Scripts.
(line 1270)
* portability, backslash continuation and: Statements/Lines.
@@ -22985,218 +23065,221 @@ Index
* portability, backslash in escape sequences: Escape Sequences.
(line 2145)
* portability, close function and: Close Files And Pipes.
- (line 5266)
-* portability, data files as single record: Records. (line 2971)
-* portability, deleting array elements: Delete. (line 8622)
-* portability, example programs: Library Functions. (line 12460)
-* portability, fflush function and: I/O Functions. (line 9818)
-* portability, functions, defining: Definition Syntax. (line 10554)
-* portability, gawk: New Ports. (line 18648)
+ (line 5274)
+* portability, data files as single record: Records. (line 2979)
+* portability, deleting array elements: Delete. (line 8630)
+* portability, example programs: Library Functions. (line 12494)
+* portability, fflush function and: I/O Functions. (line 9838)
+* portability, functions, defining: Definition Syntax. (line 10574)
+* portability, gawk: New Ports. (line 18680)
* portability, gettext library and: Explaining gettext.
- (line 10905)
-* portability, internationalization and: I18N Portability. (line 11260)
-* portability, length function: String Functions. (line 9230)
-* portability, new awk vs. old awk: Conversion. (line 5759)
+ (line 10925)
+* portability, internationalization and: I18N Portability. (line 11280)
+* portability, length function: String Functions. (line 9238)
+* portability, new awk vs. old awk: Conversion. (line 5767)
* portability, next statement in user-defined functions: Function Caveats.
- (line 10740)
-* portability, NF variable, decrementing: Changing Fields. (line 3231)
-* portability, operators: Increment Ops. (line 6207)
-* portability, operators, not in POSIX awk: Precedence. (line 6738)
+ (line 10760)
+* portability, NF variable, decrementing: Changing Fields. (line 3239)
+* portability, operators: Increment Ops. (line 6215)
+* portability, operators, not in POSIX awk: Precedence. (line 6746)
* portability, POSIXLY_CORRECT environment variable: Options.
- (line 12257)
-* portability, substr function: String Functions. (line 9581)
-* portable object files <1>: Translator i18n. (line 11136)
+ (line 12291)
+* portability, substr function: String Functions. (line 9601)
+* portable object files <1>: Translator i18n. (line 11156)
* portable object files: Explaining gettext.
- (line 10931)
+ (line 10951)
* portable object files, converting to message object files: I18N Example.
- (line 11380)
-* portable object files, generating: Options. (line 12102)
-* portal files: Portal Files. (line 11710)
-* porting gawk: New Ports. (line 18648)
+ (line 11400)
+* portable object files, generating: Options. (line 12136)
+* portal files: Portal Files. (line 11725)
+* porting gawk: New Ports. (line 18680)
* positional specifiers, printf statement <1>: Printf Ordering.
- (line 11183)
+ (line 11203)
* positional specifiers, printf statement: Format Modifiers.
- (line 4613)
+ (line 4621)
* positional specifiers, printf statement, mixing with regular formats: Printf Ordering.
- (line 11234)
+ (line 11254)
* positive zero: Floating Point Issues.
- (line 19714)
-* POSIX awk <1>: Assignment Ops. (line 6114)
+ (line 19798)
+* POSIX awk <1>: Assignment Ops. (line 6122)
* POSIX awk: This Manual. (line 718)
-* POSIX awk, **= operator and: Assignment Ops. (line 6123)
-* POSIX awk, < operator and: Getline/File. (line 3991)
-* POSIX awk, arithmetic operators and: Arithmetic Ops. (line 5845)
+* POSIX awk, **= operator and: Assignment Ops. (line 6131)
+* POSIX awk, < operator and: Getline/File. (line 3999)
+* POSIX awk, arithmetic operators and: Arithmetic Ops. (line 5853)
* POSIX awk, backslashes in string constants: Escape Sequences.
(line 2145)
-* POSIX awk, BEGIN/END patterns: I/O And BEGIN/END. (line 7060)
-* POSIX awk, break statement and: Break Statement. (line 7558)
-* POSIX awk, changes in awk versions: POSIX. (line 16731)
+* POSIX awk, BEGIN/END patterns: I/O And BEGIN/END. (line 7068)
+* POSIX awk, break statement and: Break Statement. (line 7566)
+* POSIX awk, changes in awk versions: POSIX. (line 16765)
* POSIX awk, character lists and: Character Lists. (line 2371)
* POSIX awk, character lists and, character classes: Character Lists.
(line 2377)
* POSIX awk, continue statement and: Continue Statement.
- (line 7611)
-* POSIX awk, CONVFMT variable and: User-modified. (line 7825)
-* POSIX awk, date utility and: Time Functions. (line 10225)
+ (line 7619)
+* POSIX awk, CONVFMT variable and: User-modified. (line 7833)
+* POSIX awk, date utility and: Time Functions. (line 10245)
* POSIX awk, field separators and <1>: Field Splitting Summary.
- (line 3541)
-* POSIX awk, field separators and: Fields. (line 3006)
-* POSIX awk, FS variable and: User-modified. (line 7851)
-* POSIX awk, function keyword in: Definition Syntax. (line 10539)
-* POSIX awk, functions and, gsub/sub: Gory Details. (line 9669)
-* POSIX awk, functions and, length: String Functions. (line 9230)
-* POSIX awk, GNU long options and: Options. (line 12006)
+ (line 3549)
+* POSIX awk, field separators and: Fields. (line 3014)
+* POSIX awk, FS variable and: User-modified. (line 7859)
+* POSIX awk, function keyword in: Definition Syntax. (line 10559)
+* POSIX awk, functions and, gsub/sub: Gory Details. (line 9689)
+* POSIX awk, functions and, length: String Functions. (line 9238)
+* POSIX awk, GNU long options and: Options. (line 12021)
* POSIX awk, interval expressions in: Regexp Operators. (line 2309)
-* POSIX awk, next/nextfile statements and: Next Statement. (line 7660)
+* POSIX awk, next/nextfile statements and: Next Statement. (line 7668)
* POSIX awk, numeric strings and: Typing and Comparison.
- (line 6273)
-* POSIX awk, OFMT variable and <1>: Conversion. (line 5759)
-* POSIX awk, OFMT variable and: OFMT. (line 4447)
+ (line 6281)
+* POSIX awk, OFMT variable and <1>: Conversion. (line 5767)
+* POSIX awk, OFMT variable and: OFMT. (line 4455)
* POSIX awk, period (.), using: Regexp Operators. (line 2225)
-* POSIX awk, printf format strings and: Format Modifiers. (line 4759)
+* POSIX awk, printf format strings and: Format Modifiers. (line 4767)
* POSIX awk, regular expressions and: Regexp Operators. (line 2329)
-* POSIX awk, timestamps and: Time Functions. (line 9967)
-* POSIX awk, | I/O operator and: Getline/Pipe. (line 4089)
-* POSIX mode: Options. (line 12141)
+* POSIX awk, timestamps and: Time Functions. (line 9987)
+* POSIX awk, | I/O operator and: Getline/Pipe. (line 4097)
+* POSIX mode: Options. (line 12175)
* POSIX, awk and: Preface. (line 569)
-* POSIX, gawk extensions not included in: POSIX/GNU. (line 16818)
-* POSIX, programs, implementing in awk: Clones. (line 14209)
-* POSIXLY_CORRECT environment variable: Options. (line 12239)
-* precedence <1>: Precedence. (line 6649)
-* precedence: Increment Ops. (line 6207)
+* POSIX, gawk extensions not included in: POSIX/GNU. (line 16852)
+* POSIX, programs, implementing in awk: Clones. (line 14243)
+* POSIXLY_CORRECT environment variable: Options. (line 12273)
+* precedence <1>: Precedence. (line 6657)
+* precedence: Increment Ops. (line 6215)
* precedence, regexp operators: Regexp Operators. (line 2324)
-* print statement: Printing. (line 4251)
+* print statement: Printing. (line 4259)
* print statement, BEGIN/END patterns and: I/O And BEGIN/END.
- (line 7060)
-* print statement, commas, omitting: Print Examples. (line 4330)
-* print statement, I/O operators in: Precedence. (line 6710)
-* print statement, line continuations and: Print Examples. (line 4375)
-* print statement, OFMT variable and: User-modified. (line 7908)
+ (line 7068)
+* print statement, commas, omitting: Print Examples. (line 4338)
+* print statement, I/O operators in: Precedence. (line 6718)
+* print statement, line continuations and: Print Examples. (line 4383)
+* print statement, OFMT variable and: User-modified. (line 7916)
* print statement, See Also redirection, of output: Redirection.
- (line 4851)
-* print statement, sprintf function and: Round Function. (line 12866)
-* printf statement <1>: Printf. (line 4457)
-* printf statement: Printing. (line 4251)
-* printf statement, columns, aligning: Print Examples. (line 4369)
+ (line 4859)
+* print statement, sprintf function and: Round Function. (line 12900)
+* printf statement <1>: Printf. (line 4465)
+* printf statement: Printing. (line 4259)
+* printf statement, columns, aligning: Print Examples. (line 4377)
* printf statement, format-control characters: Control Letters.
- (line 4519)
-* printf statement, I/O operators in: Precedence. (line 6710)
-* printf statement, modifiers: Format Modifiers. (line 4606)
+ (line 4527)
+* printf statement, I/O operators in: Precedence. (line 6718)
+* printf statement, modifiers: Format Modifiers. (line 4614)
* printf statement, positional specifiers <1>: Printf Ordering.
- (line 11183)
+ (line 11203)
* printf statement, positional specifiers: Format Modifiers.
- (line 4613)
+ (line 4621)
* printf statement, positional specifiers, mixing with regular formats: Printf Ordering.
- (line 11234)
+ (line 11254)
* printf statement, See Also redirection, of output: Redirection.
- (line 4851)
-* printf statement, sprintf function and: Round Function. (line 12866)
-* printf statement, syntax of: Basic Printf. (line 4478)
-* printing: Printing. (line 4241)
-* printing, list of options: Options. (line 12111)
-* printing, mailing labels: Labels Program. (line 15689)
-* printing, unduplicated lines of text: Uniq Program. (line 15014)
-* printing, user information: Id Program. (line 14721)
-* private variables: Library Names. (line 12512)
-* process information, files for: Special Process. (line 5078)
-* processes, two-way communications with: Two-way I/O. (line 11524)
-* processing data: Basic High Level. (line 19459)
-* PROCINFO array <1>: Group Functions. (line 13934)
-* PROCINFO array <2>: Passwd Functions. (line 13709)
-* PROCINFO array <3>: Auto-set. (line 8072)
-* PROCINFO array: Special Caveats. (line 5162)
-* profiling awk programs: Profiling. (line 11725)
-* profiling awk programs, dynamically: Profiling. (line 11898)
-* profiling gawk, See pgawk program: Profiling. (line 11725)
+ (line 4859)
+* printf statement, sprintf function and: Round Function. (line 12900)
+* printf statement, syntax of: Basic Printf. (line 4486)
+* printing: Printing. (line 4249)
+* printing, list of options: Options. (line 12145)
+* printing, mailing labels: Labels Program. (line 15723)
+* printing, unduplicated lines of text: Uniq Program. (line 15048)
+* printing, user information: Id Program. (line 14755)
+* private variables: Library Names. (line 12546)
+* process information, files for: Special Process. (line 5086)
+* processes, two-way communications with: Two-way I/O. (line 11539)
+* processing data: Basic High Level. (line 19543)
+* PROCINFO array <1>: Group Functions. (line 13968)
+* PROCINFO array <2>: Passwd Functions. (line 13743)
+* PROCINFO array <3>: Auto-set. (line 8080)
+* PROCINFO array: Special Caveats. (line 5170)
+* PROCINFO variable: Internals. (line 18951)
+* profiling awk programs: Profiling. (line 11740)
+* profiling awk programs, dynamically: Profiling. (line 11913)
+* profiling gawk, See pgawk program: Profiling. (line 11740)
* program, definition of: Getting Started. (line 1047)
-* programmers, attractiveness of: Two-way I/O. (line 11507)
+* programmers, attractiveness of: Two-way I/O. (line 11522)
* programming conventions, --non-decimal-data option: Nondecimal Data.
- (line 11495)
-* programming conventions, ARGC/ARGV variables: Auto-set. (line 7984)
-* programming conventions, exit statement: Exit Statement. (line 7759)
+ (line 11510)
+* programming conventions, ARGC/ARGV variables: Auto-set. (line 7992)
+* programming conventions, exit statement: Exit Statement. (line 7767)
* programming conventions, function parameters: Return Statement.
- (line 10783)
+ (line 10803)
* programming conventions, functions, calling: Calling Built-in.
- (line 9003)
+ (line 9011)
* programming conventions, functions, writing: Definition Syntax.
- (line 10516)
+ (line 10536)
* programming conventions, gawk internals: Internal File Ops.
- (line 19129)
+ (line 19220)
* programming conventions, nextfile statement: Nextfile Function.
- (line 12625)
+ (line 12659)
* programming conventions, private variable names: Library Names.
- (line 12524)
+ (line 12558)
* programming language, recipe for: History. (line 630)
* programming languages, data-driven vs. procedural: Getting Started.
(line 1038)
-* programming, basic steps: Basic High Level. (line 19472)
-* programming, concepts: Basic Concepts. (line 19440)
-* pwcat program: Passwd Functions. (line 13726)
+* programming, basic steps: Basic High Level. (line 19556)
+* programming, concepts: Basic Concepts. (line 19524)
+* pwcat program: Passwd Functions. (line 13760)
* question mark (?) <1>: GNU Regexp Operators.
(line 2506)
* question mark (?): Regexp Operators. (line 2285)
-* question mark (?), ?: operator: Precedence. (line 6731)
-* QUIT signal (MS-DOS): Profiling. (line 11931)
+* question mark (?), ?: operator: Precedence. (line 6739)
+* QUIT signal (MS-DOS): Profiling. (line 11946)
* quoting <1>: Comments. (line 1317)
* quoting <2>: Long. (line 1216)
* quoting: Read Terminal. (line 1165)
* quoting, rules for: Quoting. (line 1349)
* quoting, tricks for: Quoting. (line 1410)
-* Rakitzis, Byron: History Sorting. (line 15919)
-* rand function: Numeric Functions. (line 9077)
+* Rakitzis, Byron: History Sorting. (line 15953)
+* rand function: Numeric Functions. (line 9085)
* random numbers, Cliff: Cliff Random Function.
- (line 12911)
-* random numbers, rand/srand functions: Numeric Functions. (line 9077)
-* random numbers, seed of: Numeric Functions. (line 9107)
+ (line 12945)
+* random numbers, rand/srand functions: Numeric Functions. (line 9085)
+* random numbers, seed of: Numeric Functions. (line 9115)
* range expressions: Character Lists. (line 2353)
-* range patterns: Ranges. (line 6905)
-* Rankin, Pat <1>: Bugs. (line 18339)
-* Rankin, Pat <2>: Contributors. (line 17045)
-* Rankin, Pat <3>: Assignment Ops. (line 6074)
+* range patterns: Ranges. (line 6913)
+* Rankin, Pat <1>: Bugs. (line 18371)
+* Rankin, Pat <2>: Contributors. (line 17085)
+* Rankin, Pat <3>: Assignment Ops. (line 6082)
* Rankin, Pat: Acknowledgments. (line 995)
-* raw sockets: TCP/IP Networking. (line 11667)
-* readable data files, checking: File Checking. (line 13300)
-* readable.awk program: File Checking. (line 13305)
+* raw sockets: TCP/IP Networking. (line 11682)
+* readable data files, checking: File Checking. (line 13334)
+* readable.awk program: File Checking. (line 13339)
* recipe for a programming language: History. (line 630)
-* record separators <1>: User-modified. (line 7918)
+* record separators <1>: User-modified. (line 7926)
* record separators: Records. (line 2825)
* record separators, changing: Records. (line 2891)
* record separators, regular expressions as: Records. (line 2921)
-* record separators, with multiline records: Multiple Line. (line 3701)
-* records <1>: Basic High Level. (line 19524)
+* record separators, with multiline records: Multiple Line. (line 3709)
+* records <1>: Basic High Level. (line 19608)
* records: Reading Files. (line 2788)
-* records, multiline: Multiple Line. (line 3697)
-* records, printing: Print. (line 4292)
+* records, multiline: Multiple Line. (line 3705)
+* records, printing: Print. (line 4300)
* records, splitting input into: Records. (line 2817)
* records, terminating: Records. (line 2921)
-* records, treating files as: Records. (line 2992)
-* recursive functions: Definition Syntax. (line 10534)
-* redirection of input: Getline/File. (line 3971)
-* redirection of output: Redirection. (line 4843)
-* reference counting, sorting arrays: Array Sorting. (line 8938)
+* records, treating files as: Records. (line 3000)
+* recursive functions: Definition Syntax. (line 10554)
+* redirection of input: Getline/File. (line 3979)
+* redirection of output: Redirection. (line 4851)
+* reference counting, sorting arrays: Array Sorting. (line 8946)
* regexp constants <1>: Typing and Comparison.
- (line 6434)
-* regexp constants <2>: Regexp Constants. (line 5524)
+ (line 6442)
+* regexp constants <2>: Regexp Constants. (line 5532)
* regexp constants: Regexp Usage. (line 2028)
* regexp constants, /=.../, /= operator and: Assignment Ops.
- (line 6129)
+ (line 6137)
* regexp constants, as patterns: Expression Patterns.
- (line 6855)
+ (line 6863)
* regexp constants, in gawk: Using Constant Regexps.
- (line 5558)
+ (line 5566)
* regexp constants, slashes vs. quotes: Computed Regexps. (line 2677)
* regexp constants, vs. string constants: Computed Regexps. (line 2687)
* regexp, See regular expressions: Regexp. (line 1945)
+* register_deferred_variable internal function: Internals. (line 18951)
+* register_open_hook internal function: Internals. (line 18964)
* regular expressions: Regexp. (line 1945)
* regular expressions as field separators: Field Separators.
- (line 3298)
+ (line 3306)
* regular expressions, anchors in: Regexp Operators. (line 2197)
* regular expressions, as field separators: Regexp Field Splitting.
- (line 3335)
-* regular expressions, as patterns <1>: Regexp Patterns. (line 6811)
+ (line 3343)
+* regular expressions, as patterns <1>: Regexp Patterns. (line 6819)
* regular expressions, as patterns: Regexp Usage. (line 1976)
* regular expressions, as record separators: Records. (line 2921)
-* regular expressions, case sensitivity <1>: User-modified. (line 7867)
+* regular expressions, case sensitivity <1>: User-modified. (line 7875)
* regular expressions, case sensitivity: Case-sensitivity. (line 2549)
* regular expressions, computed: Computed Regexps. (line 2656)
* regular expressions, constants, See regexp constants: Regexp Usage.
@@ -23206,7 +23289,7 @@ Index
(line 2708)
* regular expressions, gawk, command-line options: GNU Regexp Operators.
(line 2517)
-* regular expressions, interval expressions and: Options. (line 12186)
+* regular expressions, interval expressions and: Options. (line 12220)
* regular expressions, leftmost longest match: Leftmost Longest.
(line 2626)
* regular expressions, operators <1>: Regexp Operators. (line 2181)
@@ -23219,808 +23302,810 @@ Index
(line 2461)
* regular expressions, operators, precedence of: Regexp Operators.
(line 2324)
-* regular expressions, searching for: Egrep Program. (line 14491)
+* regular expressions, searching for: Egrep Program. (line 14525)
* relational operators, See comparison operators: Typing and Comparison.
- (line 6269)
+ (line 6277)
* return statement, user-defined functions: Return Statement.
- (line 10750)
+ (line 10770)
* return values, close function: Close Files And Pipes.
- (line 5315)
-* rev user-defined function: Function Example. (line 10609)
-* rewind user-defined function: Rewind Function. (line 13268)
-* right angle bracket (>), > operator <1>: Precedence. (line 6703)
+ (line 5323)
+* rev user-defined function: Function Example. (line 10629)
+* rewind user-defined function: Rewind Function. (line 13302)
+* right angle bracket (>), > operator <1>: Precedence. (line 6711)
* right angle bracket (>), > operator: Typing and Comparison.
- (line 6334)
-* right angle bracket (>), > operator (I/O): Redirection. (line 4856)
-* right angle bracket (>), >= operator <1>: Precedence. (line 6703)
+ (line 6342)
+* right angle bracket (>), > operator (I/O): Redirection. (line 4864)
+* right angle bracket (>), >= operator <1>: Precedence. (line 6711)
* right angle bracket (>), >= operator: Typing and Comparison.
- (line 6334)
+ (line 6342)
* right angle bracket (>), >> operator (I/O) <1>: Precedence.
- (line 6703)
-* right angle bracket (>), >> operator (I/O): Redirection. (line 4884)
-* right shift, bitwise: Bitwise Functions. (line 10320)
-* Ritchie, Dennis: Basic Data Typing. (line 19620)
-* RLENGTH variable: Auto-set. (line 8116)
-* RLENGTH variable, match function and: String Functions. (line 9256)
-* Robbins, Arnold <1>: Future Extensions. (line 19333)
-* Robbins, Arnold <2>: Bugs. (line 18305)
-* Robbins, Arnold <3>: Contributors. (line 17101)
-* Robbins, Arnold <4>: Alarm Program. (line 15443)
-* Robbins, Arnold <5>: Passwd Functions. (line 13779)
-* Robbins, Arnold <6>: Getline/Pipe. (line 4073)
+ (line 6711)
+* right angle bracket (>), >> operator (I/O): Redirection. (line 4892)
+* right shift, bitwise: Bitwise Functions. (line 10340)
+* Ritchie, Dennis: Basic Data Typing. (line 19704)
+* RLENGTH variable: Auto-set. (line 8124)
+* RLENGTH variable, match function and: String Functions. (line 9273)
+* Robbins, Arnold <1>: Future Extensions. (line 19424)
+* Robbins, Arnold <2>: Bugs. (line 18337)
+* Robbins, Arnold <3>: Contributors. (line 17141)
+* Robbins, Arnold <4>: Alarm Program. (line 15477)
+* Robbins, Arnold <5>: Passwd Functions. (line 13813)
+* Robbins, Arnold <6>: Getline/Pipe. (line 4081)
* Robbins, Arnold: Command Line Field Separator.
- (line 3493)
-* Robbins, Bill: Getline/Pipe. (line 4073)
+ (line 3501)
+* Robbins, Bill: Getline/Pipe. (line 4081)
* Robbins, Harry: Acknowledgments. (line 1012)
* Robbins, Jean: Acknowledgments. (line 1012)
-* Robbins, Miriam <1>: Passwd Functions. (line 13779)
-* Robbins, Miriam <2>: Getline/Pipe. (line 4073)
+* Robbins, Miriam <1>: Passwd Functions. (line 13813)
+* Robbins, Miriam <2>: Getline/Pipe. (line 4081)
* Robbins, Miriam: Acknowledgments. (line 1012)
* Robinson, Will: Dynamic Extensions.
- (line 18729)
+ (line 18761)
* robot, the: Dynamic Extensions.
- (line 18729)
-* Rommel, Kai Uwe <1>: Contributors. (line 17052)
+ (line 18761)
+* Rommel, Kai Uwe <1>: Contributors. (line 17092)
* Rommel, Kai Uwe: Acknowledgments. (line 995)
-* round user-defined function: Round Function. (line 12876)
-* rounding: Round Function. (line 12866)
-* rounding numbers: Round Function. (line 12866)
-* RS variable <1>: User-modified. (line 7918)
+* round user-defined function: Round Function. (line 12910)
+* rounding: Round Function. (line 12900)
+* rounding numbers: Round Function. (line 12900)
+* RS variable <1>: User-modified. (line 7926)
* RS variable: Records. (line 2831)
-* RS variable, multiline records and: Multiple Line. (line 3708)
-* rshift function (gawk): Bitwise Functions. (line 10334)
-* RSTART variable: Auto-set. (line 8122)
-* RSTART variable, match function and: String Functions. (line 9256)
-* RT variable <1>: Auto-set. (line 8129)
-* RT variable <2>: Multiple Line. (line 3820)
+* RS variable, multiline records and: Multiple Line. (line 3716)
+* rshift function (gawk): Bitwise Functions. (line 10354)
+* RSTART variable: Auto-set. (line 8130)
+* RSTART variable, match function and: String Functions. (line 9273)
+* RT variable <1>: Auto-set. (line 8137)
+* RT variable <2>: Multiple Line. (line 3828)
* RT variable: Records. (line 2921)
-* Rubin, Paul <1>: Contributors. (line 17026)
+* Rubin, Paul <1>: Contributors. (line 17066)
* Rubin, Paul: History. (line 653)
* rule, definition of: Getting Started. (line 1047)
-* rvalues/lvalues: Assignment Ops. (line 6006)
-* scalar values: Basic Data Typing. (line 19562)
+* rvalues/lvalues: Assignment Ops. (line 6014)
+* scalar values: Basic Data Typing. (line 19646)
* Schreiber, Bert: Acknowledgments. (line 977)
* Schreiber, Rita: Acknowledgments. (line 977)
-* search paths <1>: VMS Running. (line 18070)
-* search paths: PC Using. (line 17826)
-* search paths, for source files <1>: VMS Running. (line 18070)
-* search paths, for source files <2>: Igawk Program. (line 16567)
-* search paths, for source files: AWKPATH Variable. (line 12327)
-* searching: String Functions. (line 9210)
-* searching, files for regular expressions: Egrep Program. (line 14491)
-* searching, for words: Dupword Program. (line 15395)
-* sed utility <1>: Glossary. (line 19753)
-* sed utility <2>: Simple Sed. (line 16136)
+* search paths <1>: VMS Running. (line 18102)
+* search paths: PC Using. (line 17858)
+* search paths, for source files <1>: VMS Running. (line 18102)
+* search paths, for source files <2>: Igawk Program. (line 16601)
+* search paths, for source files: AWKPATH Variable. (line 12361)
+* searching: String Functions. (line 9218)
+* searching, files for regular expressions: Egrep Program. (line 14525)
+* searching, for words: Dupword Program. (line 15429)
+* sed utility <1>: Glossary. (line 19837)
+* sed utility <2>: Simple Sed. (line 16170)
* sed utility: Field Splitting Summary.
- (line 3547)
+ (line 3555)
* semicolon (;): Statements/Lines. (line 1853)
-* semicolon (;), AWKPATH variable and: PC Using. (line 17826)
+* semicolon (;), AWKPATH variable and: PC Using. (line 17858)
* semicolon (;), separating statements in actions <1>: Statements.
- (line 7220)
+ (line 7228)
* semicolon (;), separating statements in actions: Action Overview.
- (line 7170)
-* separators, field: User-modified. (line 7842)
+ (line 7178)
+* separators, field: User-modified. (line 7850)
* separators, field, FIELDWIDTHS variable and: User-modified.
- (line 7832)
-* separators, field, POSIX and: Fields. (line 3006)
+ (line 7840)
+* separators, field, POSIX and: Fields. (line 3014)
* separators, for records: Records. (line 2825)
* separators, for records, regular expressions as: Records. (line 2921)
-* separators, for statements in actions: Action Overview. (line 7170)
-* separators, record: User-modified. (line 7918)
-* separators, subscript: User-modified. (line 7931)
-* set_value internal function: Internals. (line 18895)
-* shells, piping commands into: Redirection. (line 4973)
+* separators, for statements in actions: Action Overview. (line 7178)
+* separators, record: User-modified. (line 7926)
+* separators, subscript: User-modified. (line 7939)
+* set_value internal function: Internals. (line 18932)
+* shells, piping commands into: Redirection. (line 4981)
* shells, quoting: Using Shell Variables.
- (line 7112)
+ (line 7120)
* shells, quoting, rules for: Quoting. (line 1357)
* shells, scripts: One-shot. (line 1133)
* shells, variables: Using Shell Variables.
- (line 7106)
-* shift, bitwise: Bitwise Functions. (line 10320)
-* short-circuit operators: Boolean Ops. (line 6506)
-* side effects <1>: Increment Ops. (line 6157)
-* side effects: Concatenation. (line 5935)
+ (line 7114)
+* shift, bitwise: Bitwise Functions. (line 10340)
+* short-circuit operators: Boolean Ops. (line 6514)
+* side effects <1>: Increment Ops. (line 6165)
+* side effects: Concatenation. (line 5943)
* side effects, array indexing: Reference to Elements.
- (line 8429)
-* side effects, asort function: Array Sorting. (line 8886)
-* side effects, assignment expressions: Assignment Ops. (line 5997)
-* side effects, Boolean operators: Boolean Ops. (line 6479)
-* side effects, conditional expressions: Conditional Exp. (line 6561)
+ (line 8437)
+* side effects, asort function: Array Sorting. (line 8894)
+* side effects, assignment expressions: Assignment Ops. (line 6005)
+* side effects, Boolean operators: Boolean Ops. (line 6487)
+* side effects, conditional expressions: Conditional Exp. (line 6569)
* side effects, decrement/increment operators: Increment Ops.
- (line 6157)
-* side effects, FILENAME variable: Getline Notes. (line 4190)
-* side effects, function calls: Function Calls. (line 6627)
-* side effects, statements: Action Overview. (line 7183)
-* signals, HUP/SIGHUP: Profiling. (line 11928)
-* signals, INT/SIGINT (MS-DOS): Profiling. (line 11931)
-* signals, QUIT/SIGQUIT (MS-DOS): Profiling. (line 11931)
-* signals, USR1/SIGUSR1: Profiling. (line 11906)
-* sin function: Numeric Functions. (line 9068)
+ (line 6165)
+* side effects, FILENAME variable: Getline Notes. (line 4198)
+* side effects, function calls: Function Calls. (line 6635)
+* side effects, statements: Action Overview. (line 7191)
+* signals, HUP/SIGHUP: Profiling. (line 11943)
+* signals, INT/SIGINT (MS-DOS): Profiling. (line 11946)
+* signals, QUIT/SIGQUIT (MS-DOS): Profiling. (line 11946)
+* signals, USR1/SIGUSR1: Profiling. (line 11921)
+* sin function: Numeric Functions. (line 9076)
* single quote (') <1>: Quoting. (line 1370)
* single quote (') <2>: Long. (line 1223)
* single quote ('): One-shot. (line 1126)
* single quote ('), vs. apostrophe: Comments. (line 1317)
* single quote ('), with double quotes: Quoting. (line 1392)
* single-character fields: Single Character Fields.
- (line 3393)
-* single-precision floating-point: Basic Data Typing. (line 19582)
-* Skywalker, Luke: Undocumented. (line 12409)
-* sleep utility: Alarm Program. (line 15538)
-* sockets: TCP/IP Networking. (line 11667)
-* sort function, arrays, sorting: Array Sorting. (line 8867)
-* sort utility: Word Sorting. (line 15842)
-* sort utility, coprocesses and: Two-way I/O. (line 11585)
+ (line 3401)
+* single-precision floating-point: Basic Data Typing. (line 19666)
+* Skywalker, Luke: Undocumented. (line 12443)
+* sleep utility: Alarm Program. (line 15572)
+* sockets: TCP/IP Networking. (line 11682)
+* sort function, arrays, sorting: Array Sorting. (line 8875)
+* sort utility: Word Sorting. (line 15876)
+* sort utility, coprocesses and: Two-way I/O. (line 11600)
* sorting characters in different languages: Explaining gettext.
- (line 10984)
-* source code, awka: Other Versions. (line 18421)
-* source code, Bell Laboratories awk: Other Versions. (line 18358)
-* source code, gawk: Gawk Distribution. (line 17134)
-* source code, mawk: Other Versions. (line 18378)
-* source code, mixing: Options. (line 12193)
-* source files, search path for: Igawk Program. (line 16567)
-* sparse arrays: Array Intro. (line 8369)
-* Spencer, Henry: Glossary. (line 19753)
-* split function: String Functions. (line 9327)
-* split function, array elements, deleting: Delete. (line 8627)
-* split utility: Split Program. (line 14828)
-* split.awk program: Split Program. (line 14852)
-* sprintf function <1>: String Functions. (line 9380)
-* sprintf function: OFMT. (line 4435)
-* sprintf function, OFMT variable and: User-modified. (line 7908)
+ (line 11004)
+* source code, awka: Other Versions. (line 18453)
+* source code, Bell Laboratories awk: Other Versions. (line 18390)
+* source code, gawk: Gawk Distribution. (line 17174)
+* source code, mawk: Other Versions. (line 18410)
+* source code, mixing: Options. (line 12227)
+* source files, search path for: Igawk Program. (line 16601)
+* sparse arrays: Array Intro. (line 8377)
+* Spencer, Henry: Glossary. (line 19837)
+* split function: String Functions. (line 9344)
+* split function, array elements, deleting: Delete. (line 8635)
+* split utility: Split Program. (line 14862)
+* split.awk program: Split Program. (line 14886)
+* sprintf function <1>: String Functions. (line 9397)
+* sprintf function: OFMT. (line 4443)
+* sprintf function, OFMT variable and: User-modified. (line 7916)
* sprintf function, print/printf statements and: Round Function.
- (line 12866)
-* sqrt function: Numeric Functions. (line 9055)
+ (line 12900)
+* sqrt function: Numeric Functions. (line 9063)
* square brackets ([]): Regexp Operators. (line 2230)
-* srand function: Numeric Functions. (line 9117)
-* Stallman, Richard <1>: Glossary. (line 20025)
-* Stallman, Richard <2>: Contributors. (line 17034)
+* srand function: Numeric Functions. (line 9125)
+* Stallman, Richard <1>: Glossary. (line 20109)
+* Stallman, Richard <2>: Contributors. (line 17074)
* Stallman, Richard <3>: Acknowledgments. (line 960)
* Stallman, Richard: Manual History. (line 865)
-* standard input <1>: Special FD. (line 5011)
+* standard input <1>: Special FD. (line 5019)
* standard input: Read Terminal. (line 1146)
-* standard output: Special FD. (line 5011)
-* stat function, implementing in gawk: Sample Library. (line 18963)
-* statements, compound, control statements and: Statements. (line 7220)
-* statements, control, in actions: Statements. (line 7216)
+* standard output: Special FD. (line 5019)
+* stat function, implementing in gawk: Sample Library. (line 19054)
+* statements, compound, control statements and: Statements. (line 7228)
+* statements, control, in actions: Statements. (line 7224)
* statements, multiple: Statements/Lines. (line 1853)
-* stlen internal variable: Internals. (line 18799)
-* stptr internal variable: Internals. (line 18799)
-* stream editors <1>: Simple Sed. (line 16136)
+* stlen internal variable: Internals. (line 18836)
+* stptr internal variable: Internals. (line 18836)
+* stream editors <1>: Simple Sed. (line 16170)
* stream editors: Field Splitting Summary.
- (line 3547)
-* strftime function (gawk): Time Functions. (line 10014)
-* string constants: Scalar Constants. (line 5426)
+ (line 3555)
+* strftime function (gawk): Time Functions. (line 10034)
+* string constants: Scalar Constants. (line 5434)
* string constants, vs. regexp constants: Computed Regexps. (line 2687)
* string extraction (internationalization): String Extraction.
- (line 11157)
-* string operators: Concatenation. (line 5903)
+ (line 11177)
+* string operators: Concatenation. (line 5911)
* string-matching operators: Regexp Usage. (line 1989)
-* strings: Internals. (line 18826)
-* strings, converting: Conversion. (line 5711)
-* strings, converting, numbers to <1>: Bitwise Functions. (line 10387)
-* strings, converting, numbers to: User-modified. (line 7825)
+* strings: Internals. (line 18863)
+* strings, converting: Conversion. (line 5719)
+* strings, converting, numbers to <1>: Bitwise Functions. (line 10407)
+* strings, converting, numbers to: User-modified. (line 7833)
* strings, empty, See null strings: Records. (line 2912)
-* strings, extracting: String Extraction. (line 11157)
-* strings, for localization: Programmer i18n. (line 11039)
-* strings, length of: Scalar Constants. (line 5431)
-* strings, merging arrays into: Join Function. (line 13033)
-* strings, NODE internal type: Internals. (line 18772)
+* strings, extracting: String Extraction. (line 11177)
+* strings, for localization: Programmer i18n. (line 11059)
+* strings, length of: Scalar Constants. (line 5439)
+* strings, merging arrays into: Join Function. (line 13067)
+* strings, NODE internal type: Internals. (line 18809)
* strings, null: Regexp Field Splitting.
- (line 3371)
+ (line 3379)
* strings, numeric: Typing and Comparison.
- (line 6273)
-* strings, splitting: String Functions. (line 9341)
-* strtonum function (gawk): String Functions. (line 9388)
+ (line 6281)
+* strings, splitting: String Functions. (line 9358)
+* strtonum function (gawk): String Functions. (line 9405)
* strtonum function (gawk), --non-decimal-data option and: Nondecimal Data.
- (line 11495)
-* sub function <1>: String Functions. (line 9406)
+ (line 11510)
+* sub function <1>: String Functions. (line 9426)
* sub function: Using Constant Regexps.
- (line 5574)
-* sub function, arguments of: String Functions. (line 9463)
-* sub function, escape processing: Gory Details. (line 9622)
-* subscript separators: User-modified. (line 7931)
+ (line 5582)
+* sub function, arguments of: String Functions. (line 9483)
+* sub function, escape processing: Gory Details. (line 9642)
+* subscript separators: User-modified. (line 7939)
* subscripts in arrays, multidimensional: Multi-dimensional.
- (line 8746)
+ (line 8754)
* subscripts in arrays, multidimensional, scanning: Multi-scanning.
- (line 8832)
+ (line 8840)
* subscripts in arrays, numbers as: Numeric Array Subscripts.
- (line 8648)
+ (line 8656)
* subscripts in arrays, uninitialized variables as: Uninitialized Subscripts.
- (line 8699)
-* SUBSEP variable: User-modified. (line 7931)
+ (line 8707)
+* SUBSEP variable: User-modified. (line 7939)
* SUBSEP variable, multidimensional arrays: Multi-dimensional.
- (line 8752)
-* substr function: String Functions. (line 9550)
-* Sumner, Andrew: Other Versions. (line 18421)
-* switch statement: Switch Statement. (line 7456)
+ (line 8760)
+* substr function: String Functions. (line 9570)
+* Sumner, Andrew: Other Versions. (line 18453)
+* switch statement: Switch Statement. (line 7464)
* syntactic ambiguity: /= operator vs. /=.../ regexp constant: Assignment Ops.
- (line 6129)
-* system function: I/O Functions. (line 9852)
-* systime function (gawk): Time Functions. (line 9985)
+ (line 6137)
+* system function: I/O Functions. (line 9872)
+* systime function (gawk): Time Functions. (line 10005)
* tandem: Tandem Installation.
- (line 18246)
-* Tcl: Library Names. (line 12558)
-* TCP/IP: TCP/IP Networking. (line 11643)
-* TCP/IP, support for: Special Network. (line 5137)
-* tee utility: Tee Program. (line 14930)
-* tee.awk program: Tee Program. (line 14950)
+ (line 18278)
+* Tcl: Library Names. (line 12592)
+* TCP/IP: TCP/IP Networking. (line 11658)
+* TCP/IP, support for: Special Network. (line 5145)
+* tee utility: Tee Program. (line 14964)
+* tee.awk program: Tee Program. (line 14984)
* terminating records: Records. (line 2921)
-* testbits.awk program: Bitwise Functions. (line 10348)
-* Texinfo <1>: Adding Code. (line 18608)
+* testbits.awk program: Bitwise Functions. (line 10368)
+* Texinfo <1>: Adding Code. (line 18640)
* Texinfo <2>: Distribution contents.
- (line 17275)
-* Texinfo <3>: Extract Program. (line 15951)
-* Texinfo <4>: Dupword Program. (line 15406)
-* Texinfo <5>: Library Functions. (line 12451)
+ (line 17315)
+* Texinfo <3>: Extract Program. (line 15985)
+* Texinfo <4>: Dupword Program. (line 15440)
+* Texinfo <5>: Library Functions. (line 12485)
* Texinfo <6>: Sample Data Files. (line 1521)
* Texinfo: Conventions. (line 819)
* Texinfo, chapter beginnings in files: Regexp Operators. (line 2197)
* Texinfo, extracting programs from source files: Extract Program.
- (line 15945)
-* text, printing: Print. (line 4292)
-* text, printing, unduplicated lines of: Uniq Program. (line 15014)
+ (line 15979)
+* text, printing: Print. (line 4300)
+* text, printing, unduplicated lines of: Uniq Program. (line 15048)
* textdomain function (C library): Explaining gettext.
- (line 10922)
-* TEXTDOMAIN variable <1>: Programmer i18n. (line 11034)
-* TEXTDOMAIN variable: User-modified. (line 7937)
-* TEXTDOMAIN variable, BEGIN pattern and: Programmer i18n. (line 11083)
-* TEXTDOMAIN variable, portability and: I18N Portability. (line 11274)
+ (line 10942)
+* TEXTDOMAIN variable <1>: Programmer i18n. (line 11054)
+* TEXTDOMAIN variable: User-modified. (line 7945)
+* TEXTDOMAIN variable, BEGIN pattern and: Programmer i18n. (line 11103)
+* TEXTDOMAIN variable, portability and: I18N Portability. (line 11294)
* tilde (~), ~ operator <1>: Expression Patterns.
- (line 6843)
-* tilde (~), ~ operator <2>: Precedence. (line 6719)
+ (line 6851)
+* tilde (~), ~ operator <2>: Precedence. (line 6727)
* tilde (~), ~ operator <3>: Typing and Comparison.
- (line 6334)
-* tilde (~), ~ operator <4>: Regexp Constants. (line 5524)
+ (line 6342)
+* tilde (~), ~ operator <4>: Regexp Constants. (line 5532)
* tilde (~), ~ operator <5>: Computed Regexps. (line 2656)
* tilde (~), ~ operator <6>: Case-sensitivity. (line 2569)
* tilde (~), ~ operator: Regexp Usage. (line 1989)
-* time, alarm clock example program: Alarm Program. (line 15446)
+* time, alarm clock example program: Alarm Program. (line 15480)
* time, localization and: Explaining gettext.
- (line 11006)
+ (line 11026)
* time, managing: Gettimeofday Function.
- (line 13078)
-* time, retrieving: Time Functions. (line 9978)
-* timestamps: Time Functions. (line 9967)
-* timestamps, converting dates to: Time Functions. (line 10030)
+ (line 13112)
+* time, retrieving: Time Functions. (line 9998)
+* timestamps: Time Functions. (line 9987)
+* timestamps, converting dates to: Time Functions. (line 10050)
* timestamps, formatted: Gettimeofday Function.
- (line 13078)
-* tmp_number internal function: Internals. (line 18841)
-* tmp_string internal function: Internals. (line 18836)
-* tolower function: String Functions. (line 9592)
-* toupper function: String Functions. (line 9598)
-* tr utility: Translate Program. (line 15567)
-* translate.awk program: Translate Program. (line 15615)
-* troubleshooting, --non-decimal-data option: Options. (line 12136)
-* troubleshooting, -F option: Known Bugs. (line 12420)
+ (line 13112)
+* tmp_number internal function: Internals. (line 18878)
+* tmp_string internal function: Internals. (line 18873)
+* tolower function: String Functions. (line 9612)
+* toupper function: String Functions. (line 9618)
+* tr utility: Translate Program. (line 15601)
+* translate.awk program: Translate Program. (line 15649)
+* troubleshooting, --non-decimal-data option: Options. (line 12170)
+* troubleshooting, -F option: Known Bugs. (line 12454)
* troubleshooting, == operator: Typing and Comparison.
- (line 6369)
-* troubleshooting, awk uses FS not IFS: Field Separators. (line 3277)
+ (line 6377)
+* troubleshooting, awk uses FS not IFS: Field Separators. (line 3285)
* troubleshooting, backslash before nonspecial character: Escape Sequences.
(line 2145)
-* troubleshooting, division: Arithmetic Ops. (line 5853)
+* troubleshooting, division: Arithmetic Ops. (line 5861)
* troubleshooting, fatal errors, field widths, specifying: Constant Size.
- (line 3610)
+ (line 3618)
* troubleshooting, fatal errors, printf format strings: Format Modifiers.
- (line 4759)
-* troubleshooting, fflush function: I/O Functions. (line 9840)
-* troubleshooting, function call syntax: Function Calls. (line 6607)
+ (line 4767)
+* troubleshooting, fflush function: I/O Functions. (line 9860)
+* troubleshooting, function call syntax: Function Calls. (line 6615)
* troubleshooting, gawk <1>: Compatibility Mode.
- (line 18471)
-* troubleshooting, gawk: Known Bugs. (line 12420)
-* troubleshooting, gawk, bug reports: Bugs. (line 18285)
+ (line 18503)
+* troubleshooting, gawk: Known Bugs. (line 12454)
+* troubleshooting, gawk, bug reports: Bugs. (line 18317)
* troubleshooting, gawk, fatal errors, function arguments: Calling Built-in.
- (line 9009)
-* troubleshooting, getline function: File Checking. (line 13318)
-* troubleshooting, gsub/sub functions: String Functions. (line 9473)
-* troubleshooting, match function: String Functions. (line 9322)
+ (line 9017)
+* troubleshooting, getline function: File Checking. (line 13352)
+* troubleshooting, gsub/sub functions: String Functions. (line 9493)
+* troubleshooting, match function: String Functions. (line 9339)
* troubleshooting, print statement, omitting commas: Print Examples.
- (line 4330)
-* troubleshooting, printing: Redirection. (line 4951)
-* troubleshooting, quotes with file names: Special FD. (line 5068)
-* troubleshooting, readable data files: File Checking. (line 13300)
+ (line 4338)
+* troubleshooting, printing: Redirection. (line 4959)
+* troubleshooting, quotes with file names: Special FD. (line 5076)
+* troubleshooting, readable data files: File Checking. (line 13334)
* troubleshooting, regexp constants vs. string constants: Computed Regexps.
(line 2687)
-* troubleshooting, string concatenation: Concatenation. (line 5921)
-* troubleshooting, substr function: String Functions. (line 9568)
-* troubleshooting, system function: I/O Functions. (line 9876)
+* troubleshooting, string concatenation: Concatenation. (line 5929)
+* troubleshooting, substr function: String Functions. (line 9588)
+* troubleshooting, system function: I/O Functions. (line 9896)
* troubleshooting, typographical errors, global variables: Options.
- (line 12092)
-* true, logical: Truth Values. (line 6238)
-* Trueman, David <1>: Contributors. (line 17041)
+ (line 12107)
+* true, logical: Truth Values. (line 6246)
+* Trueman, David <1>: Contributors. (line 17081)
* Trueman, David <2>: Acknowledgments. (line 986)
* Trueman, David: History. (line 653)
-* trunc-mod operation: Arithmetic Ops. (line 5875)
-* truth values: Truth Values. (line 6238)
-* type conversion: Conversion. (line 5726)
-* type internal variable: Internals. (line 18807)
-* undefined functions: Function Caveats. (line 10720)
+* trunc-mod operation: Arithmetic Ops. (line 5883)
+* truth values: Truth Values. (line 6246)
+* type conversion: Conversion. (line 5734)
+* type internal variable: Internals. (line 18844)
+* undefined functions: Function Caveats. (line 10740)
* underscore (_), _ C macro: Explaining gettext.
- (line 10963)
+ (line 10983)
* underscore (_), in names of private variables: Library Names.
- (line 12530)
-* underscore (_), translatable string: Programmer i18n. (line 11092)
-* undocumented features: Undocumented. (line 12409)
+ (line 12564)
+* underscore (_), translatable string: Programmer i18n. (line 11112)
+* undocumented features: Undocumented. (line 12443)
* uninitialized variables, as array subscripts: Uninitialized Subscripts.
- (line 8699)
-* uniq utility: Uniq Program. (line 15014)
-* uniq.awk program: Uniq Program. (line 15073)
-* Unix: Glossary. (line 20320)
+ (line 8707)
+* uniq utility: Uniq Program. (line 15048)
+* uniq.awk program: Uniq Program. (line 15107)
+* Unix: Glossary. (line 20404)
* Unix awk, backslashes in escape sequences: Escape Sequences.
(line 2157)
* Unix awk, close function and: Close Files And Pipes.
- (line 5315)
+ (line 5323)
* Unix awk, password files, field separators and: Command Line Field Separator.
- (line 3485)
+ (line 3493)
* Unix, awk scripts and: Executable Scripts.
(line 1233)
-* unsigned integers: Basic Data Typing. (line 19577)
-* update_ERRNO internal function: Internals. (line 18901)
-* user database, reading: Passwd Functions. (line 13709)
-* user-defined, functions: User-defined. (line 10452)
-* user-defined, functions, counts: Profiling. (line 11853)
-* user-defined, variables: Variables. (line 5613)
-* user-modifiable variables: User-modified. (line 7805)
-* users, information about, printing: Id Program. (line 14721)
-* users, information about, retrieving: Passwd Functions. (line 13719)
-* USR1 signal: Profiling. (line 11906)
-* values, numeric: Basic Data Typing. (line 19562)
-* values, string: Basic Data Typing. (line 19562)
+* unsigned integers: Basic Data Typing. (line 19661)
+* update_ERRNO internal function: Internals. (line 18938)
+* update_ERRNO_saved internal function: Internals. (line 18943)
+* user database, reading: Passwd Functions. (line 13743)
+* user-defined, functions: User-defined. (line 10472)
+* user-defined, functions, counts: Profiling. (line 11868)
+* user-defined, variables: Variables. (line 5621)
+* user-modifiable variables: User-modified. (line 7813)
+* users, information about, printing: Id Program. (line 14755)
+* users, information about, retrieving: Passwd Functions. (line 13753)
+* USR1 signal: Profiling. (line 11921)
+* values, numeric: Basic Data Typing. (line 19646)
+* values, string: Basic Data Typing. (line 19646)
* variable typing: Typing and Comparison.
- (line 6269)
-* variables <1>: Basic Data Typing. (line 19555)
+ (line 6277)
+* variables <1>: Basic Data Typing. (line 19639)
* variables: Other Features. (line 1879)
* variables, assigning on command line: Assignment Options.
- (line 5663)
+ (line 5671)
* variables, built-in <1>: Built-in Variables.
- (line 7779)
-* variables, built-in: Using Variables. (line 5642)
-* variables, built-in, -v option, setting with: Options. (line 12029)
-* variables, built-in, conveying information: Auto-set. (line 7959)
-* variables, flag: Boolean Ops. (line 6516)
+ (line 7787)
+* variables, built-in: Using Variables. (line 5650)
+* variables, built-in, -v option, setting with: Options. (line 12044)
+* variables, built-in, conveying information: Auto-set. (line 7967)
+* variables, flag: Boolean Ops. (line 6524)
* variables, getline command into, using <1>: Getline/Variable/Coprocess.
- (line 4159)
+ (line 4167)
* variables, getline command into, using <2>: Getline/Variable/Pipe.
- (line 4102)
+ (line 4110)
* variables, getline command into, using <3>: Getline/Variable/File.
- (line 4004)
-* variables, getline command into, using: Getline/Variable. (line 3930)
-* variables, global, for library functions: Library Names. (line 12512)
-* variables, global, printing list of: Options. (line 12086)
-* variables, initializing: Using Variables. (line 5642)
-* variables, names of: Arrays. (line 8279)
-* variables, private: Library Names. (line 12512)
-* variables, setting: Options. (line 12021)
-* variables, shadowing: Definition Syntax. (line 10522)
-* variables, types of: Assignment Ops. (line 6014)
+ (line 4012)
+* variables, getline command into, using: Getline/Variable. (line 3938)
+* variables, global, for library functions: Library Names. (line 12546)
+* variables, global, printing list of: Options. (line 12101)
+* variables, initializing: Using Variables. (line 5650)
+* variables, names of: Arrays. (line 8287)
+* variables, private: Library Names. (line 12546)
+* variables, setting: Options. (line 12036)
+* variables, shadowing: Definition Syntax. (line 10542)
+* variables, types of: Assignment Ops. (line 6022)
* variables, types of, comparison expressions and: Typing and Comparison.
- (line 6269)
+ (line 6277)
* variables, uninitialized, as array subscripts: Uninitialized Subscripts.
- (line 8699)
-* variables, user-defined: Variables. (line 5613)
+ (line 8707)
+* variables, user-defined: Variables. (line 5621)
* vertical bar (|): Regexp Operators. (line 2243)
-* vertical bar (|), | operator (I/O) <1>: Precedence. (line 6703)
-* vertical bar (|), | operator (I/O): Getline/Pipe. (line 4043)
-* vertical bar (|), |& I/O operator (I/O): Two-way I/O. (line 11545)
-* vertical bar (|), |& operator (I/O) <1>: Precedence. (line 6703)
-* vertical bar (|), |& operator (I/O): Getline/Coprocess. (line 4129)
+* vertical bar (|), | operator (I/O) <1>: Precedence. (line 6711)
+* vertical bar (|), | operator (I/O): Getline/Pipe. (line 4051)
+* vertical bar (|), |& I/O operator (I/O): Two-way I/O. (line 11560)
+* vertical bar (|), |& operator (I/O) <1>: Precedence. (line 6711)
+* vertical bar (|), |& operator (I/O): Getline/Coprocess. (line 4137)
* vertical bar (|), |& operator (I/O), two-way communications: Portal Files.
- (line 11714)
-* vertical bar (|), || operator <1>: Precedence. (line 6728)
-* vertical bar (|), || operator: Boolean Ops. (line 6506)
-* vname internal variable: Internals. (line 18811)
-* w utility: Constant Size. (line 3610)
-* Wall, Larry: Future Extensions. (line 19333)
-* warnings, issuing: Options. (line 12116)
-* wc utility: Wc Program. (line 15230)
-* wc.awk program: Wc Program. (line 15269)
-* Weinberger, Peter <1>: Contributors. (line 17022)
+ (line 11729)
+* vertical bar (|), || operator <1>: Precedence. (line 6736)
+* vertical bar (|), || operator: Boolean Ops. (line 6514)
+* vname internal variable: Internals. (line 18848)
+* w utility: Constant Size. (line 3618)
+* Wall, Larry: Future Extensions. (line 19424)
+* warnings, issuing: Options. (line 12150)
+* wc utility: Wc Program. (line 15264)
+* wc.awk program: Wc Program. (line 15303)
+* Weinberger, Peter <1>: Contributors. (line 17062)
* Weinberger, Peter: History. (line 640)
-* while statement <1>: While Statement. (line 7291)
+* while statement <1>: While Statement. (line 7299)
* while statement: Regexp Usage. (line 1989)
-* whitespace, as field separators: Field Separators. (line 3312)
-* whitespace, functions, calling: Calling Built-in. (line 9003)
-* whitespace, newlines as: Options. (line 12148)
-* Williams, Kent: Contributors. (line 17047)
-* Woods, John: Contributors. (line 17038)
+* whitespace, as field separators: Field Separators. (line 3320)
+* whitespace, functions, calling: Calling Built-in. (line 9011)
+* whitespace, newlines as: Options. (line 12182)
+* Williams, Kent: Contributors. (line 17087)
+* Woods, John: Contributors. (line 17078)
* word boundaries, matching: GNU Regexp Operators.
(line 2485)
* word, regexp definition of: GNU Regexp Operators.
(line 2461)
* word-boundary operator (gawk): GNU Regexp Operators.
(line 2510)
-* wordfreq.awk program: Word Sorting. (line 15848)
-* words, counting: Wc Program. (line 15230)
-* words, duplicate, searching for: Dupword Program. (line 15395)
-* words, usage counts, generating: Word Sorting. (line 15794)
-* xgettext utility: String Extraction. (line 11164)
-* XOR bitwise operation: Bitwise Functions. (line 10294)
-* xor function (gawk): Bitwise Functions. (line 10329)
+* wordfreq.awk program: Word Sorting. (line 15882)
+* words, counting: Wc Program. (line 15264)
+* words, duplicate, searching for: Dupword Program. (line 15429)
+* words, usage counts, generating: Word Sorting. (line 15828)
+* xgettext utility: String Extraction. (line 11184)
+* XML: Internals. (line 18964)
+* XOR bitwise operation: Bitwise Functions. (line 10314)
+* xor function (gawk): Bitwise Functions. (line 10349)
* Zaretskii, Eli: Acknowledgments. (line 995)
* zero, negative vs. positive: Floating Point Issues.
- (line 19714)
-* zerofile.awk program: Empty Files. (line 13343)
-* Zoulas, Christos: Contributors. (line 17071)
-* {} (braces), actions and: Action Overview. (line 7170)
-* {} (braces), pgawk program: Profiling. (line 11858)
-* {} (braces), statements, grouping: Statements. (line 7220)
+ (line 19798)
+* zerofile.awk program: Empty Files. (line 13377)
+* Zoulas, Christos: Contributors. (line 17111)
+* {} (braces), actions and: Action Overview. (line 7178)
+* {} (braces), pgawk program: Profiling. (line 11873)
+* {} (braces), statements, grouping: Statements. (line 7228)
* | (vertical bar): Regexp Operators. (line 2243)
-* | (vertical bar), | operator (I/O) <1>: Precedence. (line 6703)
-* | (vertical bar), | operator (I/O) <2>: Redirection. (line 4891)
-* | (vertical bar), | operator (I/O): Getline/Pipe. (line 4043)
-* | (vertical bar), |& operator (I/O) <1>: Two-way I/O. (line 11545)
-* | (vertical bar), |& operator (I/O) <2>: Precedence. (line 6703)
-* | (vertical bar), |& operator (I/O) <3>: Redirection. (line 4936)
-* | (vertical bar), |& operator (I/O): Getline/Coprocess. (line 4129)
+* | (vertical bar), | operator (I/O) <1>: Precedence. (line 6711)
+* | (vertical bar), | operator (I/O) <2>: Redirection. (line 4899)
+* | (vertical bar), | operator (I/O): Getline/Pipe. (line 4051)
+* | (vertical bar), |& operator (I/O) <1>: Two-way I/O. (line 11560)
+* | (vertical bar), |& operator (I/O) <2>: Precedence. (line 6711)
+* | (vertical bar), |& operator (I/O) <3>: Redirection. (line 4944)
+* | (vertical bar), |& operator (I/O): Getline/Coprocess. (line 4137)
* | (vertical bar), |& operator (I/O), pipes, closing: Close Files And Pipes.
- (line 5302)
+ (line 5310)
* | (vertical bar), |& operator (I/O), two-way communications: Portal Files.
- (line 11714)
-* | (vertical bar), || operator <1>: Precedence. (line 6728)
-* | (vertical bar), || operator: Boolean Ops. (line 6506)
+ (line 11729)
+* | (vertical bar), || operator <1>: Precedence. (line 6736)
+* | (vertical bar), || operator: Boolean Ops. (line 6514)
* ~ (tilde), ~ operator <1>: Expression Patterns.
- (line 6843)
-* ~ (tilde), ~ operator <2>: Precedence. (line 6719)
+ (line 6851)
+* ~ (tilde), ~ operator <2>: Precedence. (line 6727)
* ~ (tilde), ~ operator <3>: Typing and Comparison.
- (line 6334)
-* ~ (tilde), ~ operator <4>: Regexp Constants. (line 5524)
+ (line 6342)
+* ~ (tilde), ~ operator <4>: Regexp Constants. (line 5532)
* ~ (tilde), ~ operator <5>: Computed Regexps. (line 2656)
* ~ (tilde), ~ operator: Case-sensitivity. (line 2569)

Tag Table:
-Node: Top1314
-Node: Foreword26871
-Node: Preface31192
-Ref: Preface-Footnote-134053
-Node: History34282
-Node: Names36485
-Ref: Names-Footnote-137945
-Node: This Manual38014
-Ref: This Manual-Footnote-142699
-Node: Conventions42796
-Node: Manual History44658
-Ref: Manual History-Footnote-148078
-Ref: Manual History-Footnote-248116
-Node: How To Contribute48187
-Node: Acknowledgments48785
-Node: Getting Started52552
-Node: Running gawk54916
-Node: One-shot56096
-Node: Read Terminal57312
-Ref: Read Terminal-Footnote-158958
-Node: Long59126
-Node: Executable Scripts60496
-Ref: Executable Scripts-Footnote-162380
-Ref: Executable Scripts-Footnote-262528
-Node: Comments62976
-Node: Quoting65329
-Node: Sample Data Files69809
-Node: Very Simple72829
-Node: Two Rules77419
-Node: More Complex79557
-Ref: More Complex-Footnote-182461
-Ref: More Complex-Footnote-282906
-Node: Statements/Lines82986
-Ref: Statements/Lines-Footnote-187344
-Node: Other Features87606
-Node: When88452
-Ref: When-Footnote-190678
-Node: Regexp90756
-Node: Regexp Usage92207
-Node: Escape Sequences94244
-Node: Regexp Operators99960
-Ref: Regexp Operators-Footnote-1107049
-Ref: Regexp Operators-Footnote-2107193
-Node: Character Lists107288
-Ref: table-char-classes109232
-Node: GNU Regexp Operators112756
-Node: Case-sensitivity116327
-Ref: Case-sensitivity-Footnote-1119477
-Node: Leftmost Longest119709
-Node: Computed Regexps120891
-Node: Locales124254
-Node: Reading Files126274
-Node: Records128025
-Ref: Records-Footnote-1136064
-Node: Fields136098
-Ref: Fields-Footnote-1139110
-Node: Nonconstant Fields139193
-Node: Changing Fields141385
-Node: Field Separators146631
-Node: Regexp Field Splitting150100
-Node: Single Character Fields152556
-Node: Command Line Field Separator153605
-Node: Field Splitting Summary157022
-Ref: Field Splitting Summary-Footnote-1160200
-Node: Constant Size160298
-Node: Multiple Line164754
-Ref: Multiple Line-Footnote-1170417
-Node: Getline170593
-Node: Plain Getline172652
-Node: Getline/Variable174694
-Node: Getline/File175832
-Node: Getline/Variable/File177150
-Node: Getline/Pipe178697
-Node: Getline/Variable/Pipe180753
-Node: Getline/Coprocess181854
-Node: Getline/Variable/Coprocess183085
-Node: Getline Notes183793
-Node: Getline Summary185436
-Ref: table-getline-variants185720
-Node: Printing186885
-Node: Print188514
-Node: Print Examples189834
-Node: Output Separators192614
-Node: OFMT194366
-Node: Printf195718
-Node: Basic Printf196637
-Node: Control Letters198164
-Node: Format Modifiers201384
-Node: Printf Examples207419
-Node: Redirection210118
-Node: Special Files216680
-Node: Special FD217314
-Node: Special Process220328
-Node: Special Network222560
-Node: Special Caveats223399
-Ref: Special Caveats-Footnote-1224594
-Node: Close Files And Pipes224974
-Ref: Close Files And Pipes-Footnote-1231835
-Ref: Close Files And Pipes-Footnote-2231980
-Node: Expressions232125
-Node: Constants234311
-Node: Scalar Constants234989
-Ref: Scalar Constants-Footnote-1235838
-Node: Nondecimal-numbers236017
-Node: Regexp Constants239059
-Node: Using Constant Regexps239532
-Node: Variables242609
-Node: Using Variables243265
-Node: Assignment Options244766
-Node: Conversion246640
-Ref: Conversion-Footnote-1251389
-Node: Arithmetic Ops251495
-Node: Concatenation253990
-Node: Assignment Ops256674
-Ref: table-assign-ops261623
-Node: Increment Ops263527
-Node: Truth Values267002
-Node: Typing and Comparison268049
-Ref: table-relational-ops271096
-Ref: Typing and Comparison-Footnote-1275337
-Node: Boolean Ops275479
-Node: Conditional Exp279485
-Node: Function Calls281216
-Node: Precedence284099
-Node: Patterns and Actions287520
-Node: Pattern Overview288571
-Node: Regexp Patterns290005
-Node: Expression Patterns290548
-Node: Ranges294080
-Node: BEGIN/END297154
-Node: Using BEGIN/END297904
-Ref: Using BEGIN/END-Footnote-1300622
-Node: I/O And BEGIN/END300733
-Node: Empty302990
-Node: Using Shell Variables303298
-Node: Action Overview305569
-Node: Statements307921
-Node: If Statement309774
-Node: While Statement311270
-Node: Do Statement313299
-Node: For Statement314445
-Node: Switch Statement317561
-Node: Break Statement319802
-Node: Continue Statement321850
-Node: Next Statement323748
-Node: Nextfile Statement326016
-Node: Exit Statement328592
-Node: Built-in Variables330647
-Node: User-modified331739
-Ref: User-modified-Footnote-1338979
-Node: Auto-set339038
-Ref: Auto-set-Footnote-1347375
-Node: ARGC and ARGV347577
-Node: Arrays351271
-Node: Array Intro353173
-Node: Reference to Elements357347
-Node: Assigning Elements359202
-Node: Array Example359669
-Node: Scanning an Array361385
-Node: Delete363646
-Ref: Delete-Footnote-1365998
-Node: Numeric Array Subscripts366052
-Node: Uninitialized Subscripts368230
-Node: Multi-dimensional369821
-Node: Multi-scanning372817
-Node: Array Sorting374426
-Node: Functions378063
-Node: Built-in378795
-Node: Calling Built-in379765
-Node: Numeric Functions381720
-Ref: Numeric Functions-Footnote-1385459
-Ref: Numeric Functions-Footnote-2385782
-Node: String Functions386048
-Ref: String Functions-Footnote-1405281
-Ref: String Functions-Footnote-2405407
-Ref: String Functions-Footnote-3405651
-Node: Gory Details405735
-Ref: table-sub-escapes407361
-Ref: table-sub-posix-92408696
-Ref: table-sub-proposed410035
-Ref: table-posix-2001-sub411388
-Ref: table-gensub-escapes412725
-Ref: Gory Details-Footnote-1413908
-Node: I/O Functions413956
-Ref: I/O Functions-Footnote-1420518
-Node: Time Functions420606
-Ref: Time Functions-Footnote-1431290
-Ref: Time Functions-Footnote-2431355
-Ref: Time Functions-Footnote-3431510
-Ref: Time Functions-Footnote-4431618
-Ref: Time Functions-Footnote-5431740
-Ref: Time Functions-Footnote-6431964
-Node: Bitwise Functions432223
-Ref: table-bitwise-ops432798
-Ref: Bitwise Functions-Footnote-1437020
-Node: I18N Functions437201
-Node: User-defined438924
-Node: Definition Syntax439705
-Node: Function Example444031
-Node: Function Caveats446596
-Node: Return Statement450500
-Node: Dynamic Typing453139
-Node: Internationalization453873
-Node: I18N and L10N455289
-Node: Explaining gettext455973
-Ref: Explaining gettext-Footnote-1460861
-Ref: Explaining gettext-Footnote-2461097
-Node: Programmer i18n461263
-Node: Translator i18n465480
-Node: String Extraction466267
-Ref: String Extraction-Footnote-1467211
-Node: Printf Ordering467334
-Ref: Printf Ordering-Footnote-1470086
-Node: I18N Portability470147
-Ref: I18N Portability-Footnote-1472571
-Node: I18N Example472631
-Ref: I18N Example-Footnote-1475223
-Node: Gawk I18N475292
-Node: Advanced Features476113
-Node: Nondecimal Data477507
-Node: Two-way I/O479057
-Ref: Two-way I/O-Footnote-1484506
-Node: TCP/IP Networking484580
-Node: Portal Files486991
-Node: Profiling487632
-Node: Invoking Gawk495148
-Node: Command Line496325
-Node: Options497104
-Ref: Options-Footnote-1508439
-Node: Other Arguments508461
-Node: AWKPATH Variable511121
-Ref: AWKPATH Variable-Footnote-1513878
-Node: Obsolete514135
-Node: Undocumented515129
-Node: Known Bugs515388
-Node: Library Functions515990
-Ref: Library Functions-Footnote-1518944
-Node: Library Names519112
-Ref: Library Names-Footnote-1522559
-Ref: Library Names-Footnote-2522775
-Node: General Functions522858
-Node: Nextfile Function523917
-Node: Strtonum Function528256
-Node: Assert Function531178
-Node: Round Function534464
-Node: Cliff Random Function535971
-Ref: Cliff Random Function-Footnote-1536954
-Node: Ordinal Functions537022
-Ref: Ordinal Functions-Footnote-1540070
-Node: Join Function540283
-Ref: Join Function-Footnote-1542034
-Node: Gettimeofday Function542231
-Node: Data File Management545928
-Node: Filetrans Function546560
-Node: Rewind Function549968
-Node: File Checking551405
-Node: Empty Files552453
-Node: Ignoring Assigns554660
-Node: Getopt Function556196
-Ref: Getopt Function-Footnote-1567160
-Node: Passwd Functions567358
-Ref: Passwd Functions-Footnote-1575966
-Node: Group Functions576051
-Node: Sample Programs583990
-Node: Running Examples584664
-Node: Clones585386
-Node: Cut Program586512
-Node: Egrep Program596185
-Ref: Egrep Program-Footnote-1603887
-Node: Id Program603994
-Node: Split Program607584
-Node: Tee Program611032
-Node: Uniq Program613694
-Node: Wc Program621032
-Ref: Wc Program-Footnote-1625246
-Node: Miscellaneous Programs625439
-Node: Dupword Program626435
-Node: Alarm Program628457
-Node: Translate Program632982
-Ref: Translate Program-Footnote-1637201
-Ref: Translate Program-Footnote-2637435
-Node: Labels Program637566
-Ref: Labels Program-Footnote-1640839
-Node: Word Sorting640920
-Node: History Sorting645183
-Node: Extract Program647009
-Node: Simple Sed654330
-Node: Igawk Program657364
-Ref: Igawk Program-Footnote-1671993
-Ref: Igawk Program-Footnote-2672191
-Node: Language History672326
-Node: V7/SVR3.1673710
-Node: SVR4675790
-Node: POSIX677229
-Node: BTL678736
-Node: POSIX/GNU680258
-Node: Contributors687406
-Node: Installation690849
-Node: Gawk Distribution691820
-Node: Getting692304
-Node: Extracting693530
-Node: Distribution contents694912
-Node: Unix Installation700132
-Node: Quick Installation700723
-Node: Additional Configuration Options702414
-Node: Configuration Philosophy704372
-Node: Non-Unix Installation706720
-Node: Amiga Installation707307
-Node: BeOS Installation708394
-Node: PC Installation709535
-Node: PC Binary Installation710762
-Node: PC Compiling712593
-Node: PC Dynamic717232
-Node: PC Using719578
-Node: Cygwin724172
-Ref: Cygwin-Footnote-1725164
-Node: VMS Installation725193
-Node: VMS Compilation725721
-Node: VMS Installation Details727292
-Node: VMS Running728916
-Node: VMS POSIX730505
-Node: Unsupported731776
-Node: Atari Installation732179
-Node: Atari Compiling733462
-Node: Atari Using735334
-Node: Tandem Installation738167
-Node: Bugs739832
-Node: Other Versions743095
-Ref: Other Versions-Footnote-1746696
-Node: Notes746735
-Node: Compatibility Mode747427
-Node: Additions748215
-Node: Adding Code748962
-Node: New Ports755009
-Node: Dynamic Extensions759064
-Node: Internals760080
-Node: Sample Library768299
-Node: Internal File Description768958
-Node: Internal File Ops772639
-Ref: Internal File Ops-Footnote-1777929
-Node: Using Internal File Ops778074
-Node: Future Extensions780091
-Node: Basic Concepts784355
-Node: Basic High Level785112
-Ref: Basic High Level-Footnote-1789123
-Node: Basic Data Typing789314
-Node: Floating Point Issues793716
-Ref: Floating Point Issues-Footnote-1797569
-Ref: Floating Point Issues-Footnote-2797619
-Node: Glossary797725
-Node: Copying821334
-Node: GNU Free Documentation License840460
-Node: Index862846
+Node: Top1326
+Node: Foreword26895
+Node: Preface31216
+Ref: Preface-Footnote-134077
+Node: History34306
+Node: Names36509
+Ref: Names-Footnote-137969
+Node: This Manual38038
+Ref: This Manual-Footnote-142723
+Node: Conventions42820
+Node: Manual History44682
+Ref: Manual History-Footnote-148102
+Ref: Manual History-Footnote-248140
+Node: How To Contribute48211
+Node: Acknowledgments48809
+Node: Getting Started52576
+Node: Running gawk54940
+Node: One-shot56120
+Node: Read Terminal57336
+Ref: Read Terminal-Footnote-158982
+Node: Long59150
+Node: Executable Scripts60520
+Ref: Executable Scripts-Footnote-162404
+Ref: Executable Scripts-Footnote-262552
+Node: Comments63000
+Node: Quoting65353
+Node: Sample Data Files69833
+Node: Very Simple72853
+Node: Two Rules77443
+Node: More Complex79581
+Ref: More Complex-Footnote-182489
+Ref: More Complex-Footnote-282934
+Node: Statements/Lines83014
+Ref: Statements/Lines-Footnote-187372
+Node: Other Features87634
+Node: When88480
+Ref: When-Footnote-190706
+Node: Regexp90784
+Node: Regexp Usage92235
+Node: Escape Sequences94272
+Node: Regexp Operators99988
+Ref: Regexp Operators-Footnote-1107077
+Ref: Regexp Operators-Footnote-2107221
+Node: Character Lists107316
+Ref: table-char-classes109260
+Node: GNU Regexp Operators112784
+Node: Case-sensitivity116355
+Ref: Case-sensitivity-Footnote-1119505
+Node: Leftmost Longest119737
+Node: Computed Regexps120919
+Node: Locales124282
+Node: Reading Files126302
+Node: Records128053
+Ref: Records-Footnote-1136555
+Node: Fields136589
+Ref: Fields-Footnote-1139601
+Node: Nonconstant Fields139684
+Node: Changing Fields141876
+Node: Field Separators147122
+Node: Regexp Field Splitting150591
+Node: Single Character Fields153047
+Node: Command Line Field Separator154096
+Node: Field Splitting Summary157513
+Ref: Field Splitting Summary-Footnote-1160691
+Node: Constant Size160789
+Node: Multiple Line165245
+Ref: Multiple Line-Footnote-1170908
+Node: Getline171084
+Node: Plain Getline173143
+Node: Getline/Variable175185
+Node: Getline/File176323
+Node: Getline/Variable/File177641
+Node: Getline/Pipe179188
+Node: Getline/Variable/Pipe181244
+Node: Getline/Coprocess182345
+Node: Getline/Variable/Coprocess183576
+Node: Getline Notes184284
+Node: Getline Summary185927
+Ref: table-getline-variants186211
+Node: Printing187376
+Node: Print189005
+Node: Print Examples190325
+Node: Output Separators193105
+Node: OFMT194857
+Node: Printf196209
+Node: Basic Printf197128
+Node: Control Letters198655
+Node: Format Modifiers201875
+Node: Printf Examples207914
+Node: Redirection210613
+Node: Special Files217175
+Node: Special FD217809
+Node: Special Process220823
+Node: Special Network223055
+Node: Special Caveats223894
+Ref: Special Caveats-Footnote-1225089
+Node: Close Files And Pipes225469
+Ref: Close Files And Pipes-Footnote-1232348
+Ref: Close Files And Pipes-Footnote-2232493
+Node: Expressions232638
+Node: Constants234824
+Node: Scalar Constants235502
+Ref: Scalar Constants-Footnote-1236351
+Node: Nondecimal-numbers236530
+Node: Regexp Constants239572
+Node: Using Constant Regexps240045
+Node: Variables243122
+Node: Using Variables243778
+Node: Assignment Options245279
+Node: Conversion247153
+Ref: Conversion-Footnote-1251902
+Node: Arithmetic Ops252008
+Node: Concatenation254503
+Node: Assignment Ops257187
+Ref: table-assign-ops262136
+Node: Increment Ops264040
+Node: Truth Values267515
+Node: Typing and Comparison268562
+Ref: table-relational-ops271609
+Ref: Typing and Comparison-Footnote-1275850
+Node: Boolean Ops275992
+Node: Conditional Exp279998
+Node: Function Calls281729
+Node: Precedence284612
+Node: Patterns and Actions288033
+Node: Pattern Overview289084
+Node: Regexp Patterns290518
+Node: Expression Patterns291061
+Node: Ranges294593
+Node: BEGIN/END297667
+Node: Using BEGIN/END298417
+Ref: Using BEGIN/END-Footnote-1301135
+Node: I/O And BEGIN/END301246
+Node: Empty303503
+Node: Using Shell Variables303811
+Node: Action Overview306082
+Node: Statements308434
+Node: If Statement310287
+Node: While Statement311783
+Node: Do Statement313812
+Node: For Statement314958
+Node: Switch Statement318074
+Node: Break Statement320338
+Node: Continue Statement322386
+Node: Next Statement324284
+Node: Nextfile Statement326552
+Node: Exit Statement329128
+Node: Built-in Variables331183
+Node: User-modified332275
+Ref: User-modified-Footnote-1339515
+Node: Auto-set339574
+Ref: Auto-set-Footnote-1347911
+Node: ARGC and ARGV348113
+Node: Arrays351807
+Node: Array Intro353709
+Node: Reference to Elements357883
+Node: Assigning Elements359738
+Node: Array Example360205
+Node: Scanning an Array361921
+Node: Delete364182
+Ref: Delete-Footnote-1366534
+Node: Numeric Array Subscripts366588
+Node: Uninitialized Subscripts368766
+Node: Multi-dimensional370357
+Node: Multi-scanning373353
+Node: Array Sorting374962
+Node: Functions378599
+Node: Built-in379331
+Node: Calling Built-in380301
+Node: Numeric Functions382256
+Ref: Numeric Functions-Footnote-1385995
+Ref: Numeric Functions-Footnote-2386318
+Node: String Functions386584
+Ref: String Functions-Footnote-1406443
+Ref: String Functions-Footnote-2406569
+Ref: String Functions-Footnote-3406813
+Node: Gory Details406897
+Ref: table-sub-escapes408523
+Ref: table-sub-posix-92409858
+Ref: table-sub-proposed411197
+Ref: table-posix-2001-sub412550
+Ref: table-gensub-escapes413887
+Ref: Gory Details-Footnote-1415070
+Node: I/O Functions415118
+Ref: I/O Functions-Footnote-1421680
+Node: Time Functions421768
+Ref: Time Functions-Footnote-1432452
+Ref: Time Functions-Footnote-2432517
+Ref: Time Functions-Footnote-3432672
+Ref: Time Functions-Footnote-4432780
+Ref: Time Functions-Footnote-5432902
+Ref: Time Functions-Footnote-6433126
+Node: Bitwise Functions433385
+Ref: table-bitwise-ops433960
+Ref: Bitwise Functions-Footnote-1438182
+Node: I18N Functions438363
+Node: User-defined440086
+Node: Definition Syntax440867
+Node: Function Example445193
+Node: Function Caveats447758
+Node: Return Statement451662
+Node: Dynamic Typing454301
+Node: Internationalization455035
+Node: I18N and L10N456451
+Node: Explaining gettext457135
+Ref: Explaining gettext-Footnote-1462023
+Ref: Explaining gettext-Footnote-2462259
+Node: Programmer i18n462425
+Node: Translator i18n466642
+Node: String Extraction467429
+Ref: String Extraction-Footnote-1468373
+Node: Printf Ordering468496
+Ref: Printf Ordering-Footnote-1471248
+Node: I18N Portability471309
+Ref: I18N Portability-Footnote-1473733
+Node: I18N Example473793
+Ref: I18N Example-Footnote-1476385
+Node: Gawk I18N476454
+Node: Advanced Features477033
+Node: Nondecimal Data478427
+Node: Two-way I/O479977
+Ref: Two-way I/O-Footnote-1485426
+Node: TCP/IP Networking485500
+Node: Portal Files487911
+Node: Profiling488552
+Node: Invoking Gawk496068
+Node: Command Line497245
+Node: Options498024
+Ref: Options-Footnote-1510187
+Node: Other Arguments510209
+Node: AWKPATH Variable512869
+Ref: AWKPATH Variable-Footnote-1515626
+Node: Obsolete515883
+Node: Undocumented516877
+Node: Known Bugs517136
+Node: Library Functions517738
+Ref: Library Functions-Footnote-1520692
+Node: Library Names520860
+Ref: Library Names-Footnote-1524307
+Ref: Library Names-Footnote-2524523
+Node: General Functions524606
+Node: Nextfile Function525665
+Node: Strtonum Function530004
+Node: Assert Function532926
+Node: Round Function536212
+Node: Cliff Random Function537719
+Ref: Cliff Random Function-Footnote-1538702
+Node: Ordinal Functions538770
+Ref: Ordinal Functions-Footnote-1541818
+Node: Join Function542031
+Ref: Join Function-Footnote-1543782
+Node: Gettimeofday Function543979
+Node: Data File Management547676
+Node: Filetrans Function548308
+Node: Rewind Function551716
+Node: File Checking553153
+Node: Empty Files554201
+Node: Ignoring Assigns556408
+Node: Getopt Function557944
+Ref: Getopt Function-Footnote-1568908
+Node: Passwd Functions569106
+Ref: Passwd Functions-Footnote-1577714
+Node: Group Functions577799
+Node: Sample Programs585738
+Node: Running Examples586412
+Node: Clones587134
+Node: Cut Program588260
+Node: Egrep Program597933
+Ref: Egrep Program-Footnote-1605635
+Node: Id Program605742
+Node: Split Program609332
+Node: Tee Program612780
+Node: Uniq Program615442
+Node: Wc Program622780
+Ref: Wc Program-Footnote-1626994
+Node: Miscellaneous Programs627187
+Node: Dupword Program628183
+Node: Alarm Program630205
+Node: Translate Program634730
+Ref: Translate Program-Footnote-1638949
+Ref: Translate Program-Footnote-2639183
+Node: Labels Program639314
+Ref: Labels Program-Footnote-1642587
+Node: Word Sorting642668
+Node: History Sorting646931
+Node: Extract Program648757
+Node: Simple Sed656078
+Node: Igawk Program659112
+Ref: Igawk Program-Footnote-1673741
+Ref: Igawk Program-Footnote-2673939
+Node: Language History674074
+Node: V7/SVR3.1675458
+Node: SVR4677538
+Node: POSIX678977
+Node: BTL680484
+Node: POSIX/GNU682006
+Node: Contributors689379
+Node: Installation692822
+Node: Gawk Distribution693793
+Node: Getting694277
+Node: Extracting695508
+Node: Distribution contents696890
+Node: Unix Installation701971
+Node: Quick Installation702562
+Node: Additional Configuration Options704253
+Node: Configuration Philosophy706001
+Node: Non-Unix Installation708349
+Node: Amiga Installation708936
+Node: BeOS Installation710023
+Node: PC Installation711164
+Node: PC Binary Installation712391
+Node: PC Compiling714222
+Node: PC Dynamic718742
+Node: PC Using721088
+Node: Cygwin725682
+Ref: Cygwin-Footnote-1726674
+Node: VMS Installation726703
+Node: VMS Compilation727231
+Node: VMS Installation Details728802
+Node: VMS Running730426
+Node: VMS POSIX732015
+Node: Unsupported733286
+Node: Atari Installation733689
+Node: Atari Compiling734972
+Node: Atari Using736844
+Node: Tandem Installation739677
+Node: Bugs741342
+Node: Other Versions744605
+Ref: Other Versions-Footnote-1748206
+Node: Notes748245
+Node: Compatibility Mode748937
+Node: Additions749725
+Node: Adding Code750472
+Node: New Ports756519
+Node: Dynamic Extensions760574
+Node: Internals761821
+Node: Sample Library772806
+Node: Internal File Description773465
+Node: Internal File Ops777146
+Ref: Internal File Ops-Footnote-1782436
+Node: Using Internal File Ops782581
+Node: Future Extensions784598
+Node: Basic Concepts788534
+Node: Basic High Level789291
+Ref: Basic High Level-Footnote-1793302
+Node: Basic Data Typing793493
+Node: Floating Point Issues797895
+Ref: Floating Point Issues-Footnote-1801748
+Ref: Floating Point Issues-Footnote-2801798
+Node: Glossary801904
+Node: Copying825513
+Node: GNU Free Documentation License844649
+Node: Index867040

End Tag Table
diff --git a/doc/gawk.texi b/doc/gawk.texi
index 4ba65e3f..c0b738c7 100644..100755
--- a/doc/gawk.texi
+++ b/doc/gawk.texi
@@ -20,9 +20,9 @@
@c applies to and all the info about who's publishing this edition
@c These apply across the board.
-@set UPDATE-MONTH June, 2004
+@set UPDATE-MONTH June, 2005
@set VERSION 3.1
-@set PATCHLEVEL 4
+@set PATCHLEVEL 5
@set FSF
@@ -110,7 +110,7 @@ Some comments on the layout for TeX.
@end iftex
@copying
-Copyright @copyright{} 1989, 1991, 1992, 1993, 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003 Free Software Foundation, Inc.
+Copyright @copyright{} 1989, 1991, 1992, 1993, 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005 Free Software Foundation, Inc.
@sp 2
This is Edition @value{EDITION} of @cite{@value{TITLE}: @value{SUBTITLE}},
@@ -187,8 +187,8 @@ Published by:
@sp 1
Free Software Foundation @*
-59 Temple Place --- Suite 330 @*
-Boston, MA 02111-1307 USA @*
+51 Franklin Street, Fifth Floor @*
+Boston, MA 02110-1301 USA @*
Phone: +1-617-542-5942 @*
Fax: +1-617-542-2652 @*
Email: @email{gnu@@gnu.org} @*
@@ -2465,7 +2465,7 @@ the file was last modified. Its output looks like this:
-rw-r--r-- 1 arnold user 1933 Nov 7 13:05 Makefile
-rw-r--r-- 1 arnold user 10809 Nov 7 13:03 awk.h
-rw-r--r-- 1 arnold user 983 Apr 13 12:14 awk.tab.h
--rw-r--r-- 1 arnold user 31869 Jun 15 12:20 awk.y
+-rw-r--r-- 1 arnold user 31869 Jun 15 12:20 awkgram.y
-rw-r--r-- 1 arnold user 22414 Nov 7 13:03 awk1.c
-rw-r--r-- 1 arnold user 37455 Nov 7 13:03 awk2.c
-rw-r--r-- 1 arnold user 27511 Dec 9 13:07 awk3.c
@@ -4129,6 +4129,16 @@ if the input text that could match the trailing part is fairly long.
@command{gawk} attempts to avoid this problem, but currently, there's
no guarantee that this will never happen.
+@quotation NOTE
+Remember that in @command{awk}, the @samp{^} and @samp{$} anchor
+metacharacters match the beginning and end of a @emph{string}, and not
+the beginning and end of a @emph{line}. As a result, something like
+@samp{RS = "^[[:upper:]]"} can only match at the beginning of a file.
+This is because @command{gawk} views the input file as one long string
+that happens to contain newline characters in it.
+It is thus best to avoid anchor characters in the value of @code{RS}.
+@end quotation
+
@cindex differences in @command{awk} and @command{gawk}, @code{RS}/@code{RT} variables
The use of @code{RS} as a regular expression and the @code{RT}
variable are @command{gawk} extensions; they are not available in
@@ -6320,12 +6330,12 @@ $ @kbd{LC_ALL=en_US.UTF-8 gawk -f thousands.awk} @i{Run in US Engli
@noindent
For more information about locales and internationalization issues,
-@strong{FIXME: see xxxx}.
+see @ref{Locales}.
@quotation NOTE
The @samp{'} flag is a nice feature, but its use complicates things: it
now becomes difficult to use it in command-line programs. For information
-on appropriate quoting tricks, @strong{FIXME: see XXXX}.
+on appropriate quoting tricks, see @ref{Quoting}.
@end quotation
@item @var{width}
@@ -7191,7 +7201,7 @@ In these cases, @command{gawk} sets the built-in variable
@code{ERRNO} to a string describing the problem.
In @command{gawk},
-when closing a pipe or coprocess,
+when closing a pipe or coprocess (input or output),
the return value is the exit status of the command.@footnote{
This is a full 16-bit value as returned by the @code{wait}
system call. See the system manual pages for information on
@@ -10132,11 +10142,13 @@ for more information on this version of the @code{for} loop.
@cindex @code{case} keyword
@cindex @code{default} keyword
-@strong{NOTE:} This @value{SUBSECTION} describes an experimental feature
+@quotation NOTE
+This @value{SUBSECTION} describes an experimental feature
added in @command{gawk} 3.1.3. It is @emph{not} enabled by default. To
enable it, use the @option{--enable-switch} option to @command{configure}
when @command{gawk} is being configured and built.
@xref{Additional Configuration Options}, for more information.
+@end quotation
The @code{switch} statement allows the evaluation of an expression and
the execution of statements based on a @code{case} match. Case statements
@@ -12429,6 +12441,18 @@ version of the standard. Therefore, for programs to be maximally portable,
always supply the parentheses.
@end quotation
+@cindex differences between @command{gawk} and @command{awk}
+Beginning with @command{gawk} @value{PVERSION} 3.2, when supplied an
+array argument, the @code{length} function returns the number of elements
+in the array. This is less useful than it might seem at first, as the
+array is not guaranteed to be indexed from one to the number of elements
+in it.
+If @option{--lint} is provided on the command line
+(@pxref{Options}),
+@command{gawk} warns that passing an array argument is not portable.
+If @option{--posix} is supplied, using an array argument is a fatal error
+(@pxref{Arrays}).
+
@item match(@var{string}, @var{regexp} @r{[}, @var{array}@r{]})
@cindex @code{match} function
The @code{match} function searches @var{string} for the
@@ -12645,6 +12669,9 @@ works only for decimal data, not for octal or hexadecimal.@footnote{Unless
you use the @option{--non-decimal-data} option, which isn't recommended.
@xref{Nondecimal Data}, for more information.}
+Note also that @code{strtonum} uses the current locale's decimal point
+for recognizing numbers.
+
@cindex differences in @command{awk} and @command{gawk}, @code{strtonum} function (@command{gawk})
@code{strtonum} is a @command{gawk} extension; it is not available
in compatibility mode (@pxref{Options}).
@@ -15516,14 +15543,6 @@ As of this writing, the latest version of GNU @code{gettext} is
If a translation of @command{gawk}'s messages exists,
then @command{gawk} produces usage messages, warnings,
and fatal errors in the local language.
-
-@cindex @code{--with-included-gettext} configuration option
-@cindex configuration option, @code{--with-included-gettext}
-On systems that do not use @value{PVERSION} 2 (or later) of the GNU C library, you should
-configure @command{gawk} with the @option{--with-included-gettext} option
-before compiling and installing it.
-@xref{Additional Configuration Options},
-for more information.
@c ENDOFRANGE inloc
@node Advanced Features
@@ -16444,6 +16463,29 @@ inadvertently use global variables that you meant to be local.
(This is a particularly easy mistake to make with simple variable
names like @code{i}, @code{j}, etc.)
+@item -W exec @var{file}
+@itemx --exec @var{file}
+@cindex @code{--exec} option
+@cindex @command{awk} programs, location of
+@cindex CGI, @command{awk} scripts for
+Similar to @option{-f}, reads @command{awk} program text from @var{file}.
+There are two differences. The fist is that this option also terminates option processing; anything
+else on the command line is passed on directly to the @command{awk} program.
+The second is that command line variable assignments of the form
+@samp{@var{var}=@var{value}} are disallowed.
+
+This option is particularly necessary for World Wide Web CGI applications
+that pass arguments through the URL; using this option prevents a malicious
+(or other) user from passing in options, assignments, or @command{awk} source code (via
+@option{--source}) to the CGI application. This option should be used
+with @samp{#!} scripts (@pxref{Executable Scripts}), like so:
+
+@example
+#! /usr/local/bin/gawk --exec
+
+@var{awk program here @dots{}}
+@end example
+
@item -W gen-po
@itemx --gen-po
@cindex @code{--gen-po} option
@@ -23291,6 +23333,15 @@ at compile time
POSIX compliance for @code{sub} and @code{gsub}
(@pxref{Gory Details}).
+@item
+The @option{--exec} option, for use in CGI scripts.
+(@pxref{Options}).
+
+@item
+The @code{length} function was extended to accept an array argument
+and return the number of elements in the array
+(@pxref{String Functions}).
+
@end itemize
@c XXX ADD MORE STUFF HERE
@@ -23533,8 +23584,8 @@ Their address is:
@display
Free Software Foundation
-59 Temple Place, Suite 330
-Boston, MA 02111-1307 USA
+51 Franklin Street, Fifth Floor
+Boston, MA 02110-1301 USA
Phone: +1-617-542-5942
Fax (including Japan): +1-617-542-2652
Email: @email{gnu@@gnu.org}
@@ -23714,11 +23765,8 @@ These files and subdirectories are used when configuring @command{gawk}
for various Unix systems. They are explained in
@ref{Unix Installation}.
-@item intl/*
-@itemx po/*
-The @file{intl} directory provides the GNU @code{gettext} library, which implements
-@command{gawk}'s internationalization features, while the @file{po} library
-contains message translations.
+@item po/*
+The @file{po} library contains message translations.
@item awklib/extract.awk
@itemx awklib/Makefile.am
@@ -23868,17 +23916,6 @@ Enable the recognition and execution of C-style @code{switch} statements
in @command{awk} programs
(@pxref{Switch Statement}.)
-@cindex Linux
-@cindex GNU/Linux
-@cindex @code{--with-included-gettext} configuration option
-@cindex @code{--with-included-gettext} configuration option, configuring @command{gawk} with
-@cindex configuration option, @code{--with-included-gettext}
-@item --with-included-gettext
-Use the version of the @code{gettext} library that comes with @command{gawk}.
-This option should be used on systems that do @emph{not} use @value{PVERSION} 2 (or later)
-of the GNU C library.
-All known modern GNU/Linux systems use Glibc 2. Use this option on any other system.
-
@cindex @code{--disable-lint} configuration option
@cindex configuration option, @code{--disable-lint}
@item --disable-lint
@@ -23905,10 +23942,12 @@ to fail. This option may be removed at a later date.
Disable all message-translation facilities.
This is usually not desirable, but it may bring you some slight performance
improvement.
-You should also use this option if @option{--with-included-gettext}
-doesn't work on your system.
@end table
+As of version 3.1.5, the @option{--with-included-gettext} configuration
+option is no longer available, since @command{gawk} expects the
+GNU @code{gettext} library to be installed as an external library.
+
@node Configuration Philosophy
@appendixsubsec The Configuration Process
@@ -24171,7 +24210,7 @@ $ CPPFLAGS="-D__ST_MT_ERRNO__"
$ export CPPFLAGS
$ CFLAGS="-O2 -Zomf -Zmt"
$ export CFLAGS
-$ LDFLAGS="-s -Zcrtdll -Zlinker /exepack:2 -Zlinker /pm:vio -Zstack 0x8000"
+$ LDFLAGS="-s -Zcrtdll -Zlinker /exepack:2 -Zlinker /pm:vio -Zstack 0x6000"
$ export LDFLAGS
$ RANLIB="echo"
$ export RANLIB
@@ -24186,11 +24225,13 @@ To get an FHS-compliant file hierarchy it is recommended to use the additional
@command{configure} options @option{--infodir=c:/usr/share/info}, @option{--mandir=c:/usr/share/man}
and @option{--libexecdir=c:/usr/lib}.
+@ignore
The internal @code{gettext} library tends to be problematic. It is therefore recommended
to use either an external one (@option{--without-included-gettext}) or to disable
NLS entirely (@option{--disable-nls}).
+@end ignore
-If you use GCC 2.95 or newer it is recommended to use also:
+If you use GCC 2.95 it is recommended to use also:
@example
$ LIBS="-lgcc"
@@ -24204,14 +24245,19 @@ $ CPPFLAGS="-D__ST_MT_ERRNO__"
$ export CPPFLAGS
$ CFLAGS="-O2 -Zmt"
$ export CFLAGS
-$ LDFLAGS="-s -Zstack 0x8000"
+$ LDFLAGS="-s -Zstack 0x6000"
$ LIBS="-lgcc"
$ unset RANLIB
-$ ./configure --prefix=c:/usr --without-included-gettext
+@c $ ./configure --prefix=c:/usr --without-included-gettext
+$ ./configure --prefix=c:/usr
$ make
@end example
@quotation NOTE
+Versions later than GCC 2.95, i.e., GCC 3.x using the Innotek libc were not tested.
+@end quotation
+
+@quotation NOTE
Even if the compiled @command{gawk.exe} (@code{a.out}) executable
contains a DOS header, it does @emph{not} work under DOS. To compile an executable
that runs under DOS, @code{"-DPIPES_SIMULATED"} must be added to @env{CPPFLAGS}.
@@ -24220,8 +24266,9 @@ But then some nonstandard extensions of @command{gawk} (e.g., @samp{|&}) do not
After compilation the internal tests can be performed. Enter
@samp{make check CMP="diff -a"} at your command prompt. All tests
-but the @code{pid} test are expected to work properly. The @code{pid}
-test fails because child processes are not started by @code{fork()}.
+except for the @code{pid} test are expected to work properly.
+The @code{pid} test fails because child processes are not started by
+@code{fork()}.
@samp{make install} works as expected.
@@ -24891,7 +24938,7 @@ Darrel Hankerson, @email{hankedr@@mail.auburn.edu}.
Juan Grigera, @email{juan@@biophnet.unlp.edu.ar}.
@item OS/2
-The Unix for OS/2 team, @email{gawk-maintainer@@unixos2.org}.
+Andreas Buening, @email{andreas.buening@@nexgo.de}.
@cindex Davies, Stephen
@item Tandem
@@ -25453,6 +25500,11 @@ are very much subject to change in a future @command{gawk} release.
Be aware that you may have to re-do everything, perhaps from scratch,
at some future time.
+@strong{Caution:} If you have written your own dynamic extensions,
+be sure to recompile them for each new @command{gawk} release.
+There is no guarantee of binary compatibility between different
+releases, no will there ever be such a guarantee.
+
@menu
* Internals:: A brief look at some @command{gawk} internals.
* Sample Library:: A example of new functions.
@@ -25470,7 +25522,7 @@ brief and simplistic; would-be @command{gawk} hackers are encouraged to
spend some time reading the source code before trying to write
extensions based on the material presented here. Of particular note
are the files @file{awk.h}, @file{builtin.c}, and @file{eval.c}.
-Reading @file{awk.y} in order to see how the parse tree is built
+Reading @file{awkgram.y} in order to see how the parse tree is built
would also be of use.
@cindex @code{awk.h} file (internal)
@@ -25663,6 +25715,70 @@ This function is called from within a C extension function to set
the value of @command{gawk}'s @code{ERRNO} variable, based on the current
value of the C @code{errno} variable.
It is provided as a convenience.
+
+@cindex @code{ERRNO} variable
+@cindex @code{update_ERRNO_saved} internal function
+@item void update_ERRNO_saved(int errno_saved)
+This function is called from within a C extension function to set
+the value of @command{gawk}'s @code{ERRNO} variable, based on the saved
+value of the C @code{errno} variable provided as the argument.
+It is provided as a convenience.
+
+@strong{Caution:} This function is new as of @command{gawk} 3.1.5.
+
+@cindex @code{ENVIRON} variable
+@cindex @code{PROCINFO} variable
+@cindex @code{register_deferred_variable} internal function
+@item void register_deferred_variable(const char *name, NODE *(*load_func)(void))
+This function is called to register a function to be called when a
+reference to an undefined variable with the given name is encountered.
+The callback function will never be called if the variable exists already,
+so, unless the calling code is running at program startup, it should first
+check whether a variable of the given name already exists.
+The argument function must return a pointer to a NODE containing the
+newly created variable. This function is used to implement the builtin
+@code{ENVIRON} and @code{PROCINFO} variables, so you can refer to them
+for examples.
+
+@strong{Caution:} This function is new as of @command{gawk} 3.1.5.
+
+@cindex @code{IOBUF} internal structure
+@cindex @code{iop_alloc} internal function
+@cindex @code{get_record} input method
+@cindex @code{close_func} input method
+@cindex XML
+@cindex @code{register_open_hook} internal function
+@item void register_open_hook(void *(*open_func)(IOBUF *))
+This function is called to register a function to be called whenever
+a new data file is opened, leading to the creation of an @code{IOBUF}
+structure in @code{iop_alloc}. After creating the new @code{IOBUF},
+@code{iop_alloc} will call (in reverse order of registration, so the last
+function registered is called first) each open hook until one returns
+non-NULL. If any hook returns a non-NULL value, that value is assigned
+to the @code{IOBUF}'s @code{opaque} field (which will presumably point
+to a structure containing additional state associated with the input
+processing), and no further open hooks are called.
+
+The function called will most likely want to set the @code{IOBUF}
+@code{get_record} method to indicate that future input records should
+be retrieved by calling that method instead of using the standard
+@command{gawk} input processing.
+
+And the function will also probably want to set the @code{IOBUF}
+@code{close_func} method to be called when the file is closed to clean
+up any state associated with the input.
+
+Finally, hook functions should be prepared to receive an @code{IOBUF}
+structure where the @code{fd} field is set to @code{INVALID_HANDLE},
+meaning that @command{gawk} was not able to open the file itself. In
+this case, the hook function must be able to successfully open the file
+and place a valid file descriptor there.
+
+Currently, for example, the hook function facility is used to implement
+the XML parser shared library extension. For more info, please look in
+@file{awk.h} and in @file{io.c}.
+
+@strong{Caution:} This function is new as of @command{gawk} 3.1.5.
@end table
An argument that is supposed to be an array needs to be handled with
@@ -26235,13 +26351,6 @@ in @command{gawk}.
@item Databases
It may be possible to map a GDBM/NDBM/SDBM file into an @command{awk} array.
-@item Large character sets
-It would be nice if @command{gawk} could handle UTF-8 and other
-character sets that are larger than eight bits.
-(@command{gawk} currently has partial multi-byte support, but it
-needs an expert to really think out the multi-byte issues and consult
-with the maintainer on the appropriate changes.)
-
@item More @code{lint} warnings
There are more things that could be checked for portability.
@end table
@@ -27516,7 +27625,7 @@ record or a string.
@display
Copyright @copyright{} 1989, 1991 Free Software Foundation, Inc.
-59 Temple Place, Suite 330, Boston, MA 02111, USA
+51 Franklin Street, Fifth Floor, Boston, MA 02111, USA
Everyone is permitted to copy and distribute verbatim copies
of this license document, but changing it is not allowed.
@@ -27867,7 +27976,7 @@ 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, USA.
+Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02111, USA.
@end smallexample
Also add information on how to contact you by electronic and paper mail.
@@ -27921,7 +28030,7 @@ Public License instead of this License.
@display
Copyright @copyright{} 2000,2001,2002 Free Software Foundation, Inc.
-59 Temple Place, Suite 330, Boston, MA 02111-1307, USA
+51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA
Everyone is permitted to copy and distribute verbatim copies
of this license document, but changing it is not allowed.
diff --git a/doc/gawkinet.info b/doc/gawkinet.info
index de6ce30b..3c23e3c5 100644
--- a/doc/gawkinet.info
+++ b/doc/gawkinet.info
@@ -3741,7 +3741,7 @@ GNU Free Documentation License
Version 1.2, November 2002
Copyright (C) 2000,2001,2002 Free Software Foundation, Inc.
- 59 Temple Place, Suite 330, Boston, MA 02111-1307, USA
+ 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA
Everyone is permitted to copy and distribute verbatim copies
of this license document, but changing it is not allowed.
@@ -4422,6 +4422,6 @@ Node: STOXPRED140599
Node: PROTBASE154809
Node: Links167844
Node: GNU Free Documentation License171278
-Node: Index193666
+Node: Index193671

End Tag Table
diff --git a/doc/gawkinet.texi b/doc/gawkinet.texi
index 27cf6050..9ddabc04 100644
--- a/doc/gawkinet.texi
+++ b/doc/gawkinet.texi
@@ -118,8 +118,8 @@ Published by:
@sp 1
Free Software Foundation @*
-59 Temple Place --- Suite 330 @*
-Boston, MA 02111-1307 USA @*
+51 Franklin Street, Fifth Floor @*
+Boston, MA 02110-1301 USA @*
Phone: +1-617-542-5942 @*
Fax: +1-617-542-2652 @*
Email: @email{gnu@@gnu.org} @*
@@ -4733,7 +4733,7 @@ They are presented in the order in which they appear.
@display
Copyright @copyright{} 2000,2001,2002 Free Software Foundation, Inc.
-59 Temple Place, Suite 330, Boston, MA 02111-1307, USA
+51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA
Everyone is permitted to copy and distribute verbatim copies
of this license document, but changing it is not allowed.
diff --git a/doc/macros b/doc/macros
index bdfc5c8c..112e3c86 100644
--- a/doc/macros
+++ b/doc/macros
@@ -14,7 +14,7 @@
.\"
.\" 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
+.\" Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA
.\"
.\" Generic SSC "card" macros
.\" based on lots of other macros
diff --git a/doc/setter.outline b/doc/setter.outline
index 67ade73a..37e5cbfa 100644
--- a/doc/setter.outline
+++ b/doc/setter.outline
@@ -15,7 +15,7 @@
%
% 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
+% Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA
%
%! page cut marks and stuff for Pocket References - 10-26-88 - ph
%! modified to move the cut marks onto the page
diff --git a/doc/texinfo.tex b/doc/texinfo.tex
index 9fd4df16..e0fbe635 100644
--- a/doc/texinfo.tex
+++ b/doc/texinfo.tex
@@ -3,10 +3,10 @@
% Load plain if necessary, i.e., if running under initex.
\expandafter\ifx\csname fmtname\endcsname\relax\input plain\fi
%
-\def\texinfoversion{2004-06-14.14}
+\def\texinfoversion{2005-01-30.17}
%
% Copyright (C) 1985, 1986, 1988, 1990, 1991, 1992, 1993, 1994, 1995,
-% 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004 Free Software
+% 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005 Free Software
% Foundation, Inc.
%
% This texinfo.tex file is free software; you can redistribute it and/or
@@ -21,8 +21,8 @@
%
% You should have received a copy of the GNU General Public License
% along with this texinfo.tex file; see the file COPYING. If not, write
-% to the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
-% Boston, MA 02111-1307, USA.
+% to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
+% Boston, MA 02110-1301, USA.
%
% As a special exception, when this file is read by TeX when processing
% a Texinfo source document, you may use the result without
@@ -89,10 +89,11 @@
\let\ptexhat=^
\let\ptexi=\i
\let\ptexindent=\indent
-\let\ptexnoindent=\noindent
\let\ptexinsert=\insert
\let\ptexlbrace=\{
\let\ptexless=<
+\let\ptexnewwrite\newwrite
+\let\ptexnoindent=\noindent
\let\ptexplus=+
\let\ptexrbrace=\}
\let\ptexslash=\/
@@ -608,7 +609,7 @@
% The \TeX{} logo, as in plain, but resetting the spacing so that a
% period following counts as ending a sentence. (Idea found in latex.)
%
-\edef\TeX{\TeX \spacefactor=3000 }
+\edef\TeX{\TeX \spacefactor=1000 }
% @LaTeX{} logo. Not quite the same results as the definition in
% latex.ltx, since we use a different font for the raised A; it's most
@@ -1242,13 +1243,13 @@ where each line of input produces a line of output.}
% Read toc silently, to get counts of subentries for \pdfoutline.
\def\numchapentry##1##2##3##4{%
\def\thischapnum{##2}%
- \let\thissecnum\empty
- \let\thissubsecnum\empty
+ \def\thissecnum{0}%
+ \def\thissubsecnum{0}%
}%
\def\numsecentry##1##2##3##4{%
\advancenumber{chap\thischapnum}%
\def\thissecnum{##2}%
- \let\thissubsecnum\empty
+ \def\thissubsecnum{0}%
}%
\def\numsubsecentry##1##2##3##4{%
\advancenumber{sec\thissecnum}%
@@ -1257,9 +1258,9 @@ where each line of input produces a line of output.}
\def\numsubsubsecentry##1##2##3##4{%
\advancenumber{subsec\thissubsecnum}%
}%
- \let\thischapnum\empty
- \let\thissecnum\empty
- \let\thissubsecnum\empty
+ \def\thischapnum{0}%
+ \def\thissecnum{0}%
+ \def\thissubsecnum{0}%
%
% use \def rather than \let here because we redefine \chapentry et
% al. a second time, below.
@@ -1406,7 +1407,7 @@ where each line of input produces a line of output.}
\def\rm{\fam=0 \setfontstyle{rm}}
\def\it{\fam=\itfam \setfontstyle{it}}
\def\sl{\fam=\slfam \setfontstyle{sl}}
-\def\bf{\fam=\bffam \setfontstyle{bf}}
+\def\bf{\fam=\bffam \setfontstyle{bf}}\def\bfstylename{bf}
\def\tt{\fam=\ttfam \setfontstyle{tt}}
% Texinfo sort of supports the sans serif font style, which plain TeX does not.
@@ -1468,17 +1469,10 @@ where each line of input produces a line of output.}
\def\scbshape{csc}
% Text fonts (11.2pt, magstep1).
-\newcount\mainmagstep
-\ifx\bigger\relax
- % not really supported.
- \mainmagstep=\magstep1
- \setfont\textrm\rmshape{12}{1000}
- \setfont\texttt\ttshape{12}{1000}
-\else
- \mainmagstep=\magstephalf
- \setfont\textrm\rmshape{10}{\mainmagstep}
- \setfont\texttt\ttshape{10}{\mainmagstep}
-\fi
+\def\textnominalsize{11pt}
+\edef\mainmagstep{\magstephalf}
+\setfont\textrm\rmshape{10}{\mainmagstep}
+\setfont\texttt\ttshape{10}{\mainmagstep}
\setfont\textbf\bfshape{10}{\mainmagstep}
\setfont\textit\itshape{10}{\mainmagstep}
\setfont\textsl\slshape{10}{\mainmagstep}
@@ -1495,6 +1489,7 @@ where each line of input produces a line of output.}
\def\df{\let\tentt=\deftt \let\tenbf = \defbf \let\tenttsl=\defttsl \bf}
% Fonts for indices, footnotes, small examples (9pt).
+\def\smallnominalsize{9pt}
\setfont\smallrm\rmshape{9}{1000}
\setfont\smalltt\ttshape{9}{1000}
\setfont\smallbf\bfshape{10}{900}
@@ -1507,6 +1502,7 @@ where each line of input produces a line of output.}
\font\smallsy=cmsy9
% Fonts for small examples (8pt).
+\def\smallernominalsize{8pt}
\setfont\smallerrm\rmshape{8}{1000}
\setfont\smallertt\ttshape{8}{1000}
\setfont\smallerbf\bfshape{10}{800}
@@ -1519,6 +1515,7 @@ where each line of input produces a line of output.}
\font\smallersy=cmsy8
% Fonts for title page (20.4pt):
+\def\titlenominalsize{20pt}
\setfont\titlerm\rmbshape{12}{\magstep3}
\setfont\titleit\itbshape{10}{\magstep4}
\setfont\titlesl\slbshape{10}{\magstep4}
@@ -1533,6 +1530,7 @@ where each line of input produces a line of output.}
\def\authortt{\sectt}
% Chapter (and unnumbered) fonts (17.28pt).
+\def\chapnominalsize{17pt}
\setfont\chaprm\rmbshape{12}{\magstep2}
\setfont\chapit\itbshape{10}{\magstep3}
\setfont\chapsl\slbshape{10}{\magstep3}
@@ -1545,6 +1543,7 @@ where each line of input produces a line of output.}
\font\chapsy=cmsy10 scaled \magstep3
% Section fonts (14.4pt).
+\def\secnominalsize{14pt}
\setfont\secrm\rmbshape{12}{\magstep1}
\setfont\secit\itbshape{10}{\magstep2}
\setfont\secsl\slbshape{10}{\magstep2}
@@ -1557,6 +1556,7 @@ where each line of input produces a line of output.}
\font\secsy=cmsy10 scaled \magstep2
% Subsection fonts (13.15pt).
+\def\ssecnominalsize{13pt}
\setfont\ssecrm\rmbshape{12}{\magstephalf}
\setfont\ssecit\itbshape{10}{1315}
\setfont\ssecsl\slbshape{10}{1315}
@@ -1569,6 +1569,7 @@ where each line of input produces a line of output.}
\font\ssecsy=cmsy10 scaled 1315
% Reduced fonts for @acro in text (10pt).
+\def\reducednominalsize{10pt}
\setfont\reducedrm\rmshape{10}{1000}
\setfont\reducedtt\ttshape{10}{1000}
\setfont\reducedbf\bfshape{10}{1000}
@@ -1608,6 +1609,7 @@ where each line of input produces a line of output.}
\let\tenbf=\textbf \let\tentt=\texttt \let\smallcaps=\textsc
\let\tensf=\textsf \let\teni=\texti \let\tensy=\textsy
\let\tenttsl=\textttsl
+ \def\curfontsize{text}%
\def\lsize{reduced}\def\lllsize{smaller}%
\resetmathfonts \setleading{\textleading}}
\def\titlefonts{%
@@ -1615,13 +1617,16 @@ where each line of input produces a line of output.}
\let\tenbf=\titlebf \let\tentt=\titlett \let\smallcaps=\titlesc
\let\tensf=\titlesf \let\teni=\titlei \let\tensy=\titlesy
\let\tenttsl=\titlettsl
+ \def\curfontsize{title}%
\def\lsize{chap}\def\lllsize{subsec}%
\resetmathfonts \setleading{25pt}}
\def\titlefont#1{{\titlefonts\rm #1}}
\def\chapfonts{%
\let\tenrm=\chaprm \let\tenit=\chapit \let\tensl=\chapsl
\let\tenbf=\chapbf \let\tentt=\chaptt \let\smallcaps=\chapsc
- \let\tensf=\chapsf \let\teni=\chapi \let\tensy=\chapsy \let\tenttsl=\chapttsl
+ \let\tensf=\chapsf \let\teni=\chapi \let\tensy=\chapsy
+ \let\tenttsl=\chapttsl
+ \def\curfontsize{chap}%
\def\lsize{sec}\def\lllsize{text}%
\resetmathfonts \setleading{19pt}}
\def\secfonts{%
@@ -1629,6 +1634,7 @@ where each line of input produces a line of output.}
\let\tenbf=\secbf \let\tentt=\sectt \let\smallcaps=\secsc
\let\tensf=\secsf \let\teni=\seci \let\tensy=\secsy
\let\tenttsl=\secttsl
+ \def\curfontsize{sec}%
\def\lsize{subsec}\def\lllsize{reduced}%
\resetmathfonts \setleading{16pt}}
\def\subsecfonts{%
@@ -1636,6 +1642,7 @@ where each line of input produces a line of output.}
\let\tenbf=\ssecbf \let\tentt=\ssectt \let\smallcaps=\ssecsc
\let\tensf=\ssecsf \let\teni=\sseci \let\tensy=\ssecsy
\let\tenttsl=\ssecttsl
+ \def\curfontsize{ssec}%
\def\lsize{text}\def\lllsize{small}%
\resetmathfonts \setleading{15pt}}
\let\subsubsecfonts = \subsecfonts
@@ -1644,6 +1651,7 @@ where each line of input produces a line of output.}
\let\tenbf=\reducedbf \let\tentt=\reducedtt \let\reducedcaps=\reducedsc
\let\tensf=\reducedsf \let\teni=\reducedi \let\tensy=\reducedsy
\let\tenttsl=\reducedttsl
+ \def\curfontsize{reduced}%
\def\lsize{small}\def\lllsize{smaller}%
\resetmathfonts \setleading{10.5pt}}
\def\smallfonts{%
@@ -1651,6 +1659,7 @@ where each line of input produces a line of output.}
\let\tenbf=\smallbf \let\tentt=\smalltt \let\smallcaps=\smallsc
\let\tensf=\smallsf \let\teni=\smalli \let\tensy=\smallsy
\let\tenttsl=\smallttsl
+ \def\curfontsize{small}%
\def\lsize{smaller}\def\lllsize{smaller}%
\resetmathfonts \setleading{10.5pt}}
\def\smallerfonts{%
@@ -1658,6 +1667,7 @@ where each line of input produces a line of output.}
\let\tenbf=\smallerbf \let\tentt=\smallertt \let\smallcaps=\smallersc
\let\tensf=\smallersf \let\teni=\smalleri \let\tensy=\smallersy
\let\tenttsl=\smallerttsl
+ \def\curfontsize{smaller}%
\def\lsize{smaller}\def\lllsize{smaller}%
\resetmathfonts \setleading{9.5pt}}
@@ -1715,13 +1725,18 @@ where each line of input produces a line of output.}
\def\cite#1{{\sl #1}\futurelet\next\smartitalicx}
\let\i=\smartitalic
+\let\slanted=\smartslanted
\let\var=\smartslanted
\let\dfn=\smartslanted
\let\emph=\smartitalic
+% @b, explicit bold.
\def\b#1{{\bf #1}}
\let\strong=\b
+% @sansserif, explicit sans.
+\def\sansserif#1{{\sf #1}}
+
% We can't just use \exhyphenpenalty, because that only has effect at
% the end of a paragraph. Restore normal hyphenation at the end of the
% group within which \nohyphenation is presumably called.
@@ -1929,6 +1944,10 @@ where each line of input produces a line of output.}
\def\sc#1{{\smallcaps#1}} % smallcaps font
\def\ii#1{{\it #1}} % italic font
+% @acronym for "FBI", "NATO", and the like.
+% We print this one point size smaller, since it's intended for
+% all-uppercase.
+%
\def\acronym#1{\doacronym #1,,\finish}
\def\doacronym#1,#2,#3\finish{%
{\selectfonts\lsize #1}%
@@ -1938,10 +1957,70 @@ where each line of input produces a line of output.}
\fi
}
-% @pounds{} is a sterling sign, which is in the CM italic font.
+% @abbr for "Comput. J." and the like.
+% No font change, but don't do end-of-sentence spacing.
+%
+\def\abbr#1{\doabbr #1,,\finish}
+\def\doabbr#1,#2,#3\finish{%
+ {\frenchspacing #1}%
+ \def\temp{#2}%
+ \ifx\temp\empty \else
+ \space ({\unsepspaces \ignorespaces \temp \unskip})%
+ \fi
+}
+
+% @pounds{} is a sterling sign, which Knuth put in the CM italic font.
%
\def\pounds{{\it\$}}
+% @euro{} comes from a separate font, depending on the current style.
+% We use the free feym* fonts from the eurosym package by Henrik
+% Theiling, which support regular, slanted, bold and bold slanted (and
+% "outlined" (blackboard board, sort of) versions, which we don't need).
+% It is available from http://www.ctan.org/tex-archive/fonts/eurosym.
+%
+% Although only regular is the truly official Euro symbol, we ignore
+% that. The Euro is designed to be slightly taller than the regular
+% font height.
+%
+% feymr - regular
+% feymo - slanted
+% feybr - bold
+% feybo - bold slanted
+%
+% There is no good (free) typewriter version, to my knowledge.
+% A feymr10 euro is ~7.3pt wide, while a normal cmtt10 char is ~5.25pt wide.
+% Hmm.
+%
+% Also doesn't work in math. Do we need to do math with euro symbols?
+% Hope not.
+%
+%
+\def\euro{{\eurofont e}}
+\def\eurofont{%
+ % We set the font at each command, rather than predefining it in
+ % \textfonts and the other font-switching commands, so that
+ % installations which never need the symbol don't have to have the
+ % font installed.
+ %
+ % There is only one designed size (nominal 10pt), so we always scale
+ % that to the current nominal size.
+ %
+ % By the way, simply using "at 1em" works for cmr10 and the like, but
+ % does not work for cmbx10 and other extended/shrunken fonts.
+ %
+ \def\eurosize{\csname\curfontsize nominalsize\endcsname}%
+ %
+ \ifx\curfontstyle\bfstylename
+ % bold:
+ \font\thiseurofont = \ifusingit{feybo10}{feybr10} at \eurosize
+ \else
+ % regular:
+ \font\thiseurofont = \ifusingit{feymo10}{feymr10} at \eurosize
+ \fi
+ \thiseurofont
+}
+
% @registeredsymbol - R in a circle. The font for the R should really
% be smaller yet, but lllsize is the best we can do for now.
% Adapted from the plain.tex definition of \copyright.
@@ -2265,17 +2344,13 @@ where each line of input produces a line of output.}
% \parskip glue -- logically it's part of the @item we just started.
\nobreak \vskip-\parskip
%
- % Stop a page break at the \parskip glue coming up. (Unfortunately
- % we can't prevent a possible page break at the following
- % \baselineskip glue.) However, if what follows is an environment
- % such as @example, there will be no \parskip glue; then
- % the negative vskip we just would cause the example and the item to
- % crash together. So we use this bizarre value of 10001 as a signal
- % to \aboveenvbreak to insert \parskip glue after all.
- % (Possibly there are other commands that could be followed by
- % @example which need the same treatment, but not section titles; or
- % maybe section titles are the only special case and they should be
- % penalty 10001...)
+ % Stop a page break at the \parskip glue coming up. However, if
+ % what follows is an environment such as @example, there will be no
+ % \parskip glue; then the negative vskip we just inserted would
+ % cause the example and the item to crash together. So we use this
+ % bizarre value of 10001 as a signal to \aboveenvbreak to insert
+ % \parskip glue after all. Section titles are handled this way also.
+ %
\penalty 10001
\endgroup
\itemxneedsnegativevskipfalse
@@ -2301,15 +2376,26 @@ where each line of input produces a line of output.}
% @table, @ftable, @vtable.
\envdef\table{%
\let\itemindex\gobble
- \tablex
+ \tablecheck{table}%
}
\envdef\ftable{%
\def\itemindex ##1{\doind {fn}{\code{##1}}}%
- \tablex
+ \tablecheck{ftable}%
}
\envdef\vtable{%
\def\itemindex ##1{\doind {vr}{\code{##1}}}%
- \tablex
+ \tablecheck{vtable}%
+}
+\def\tablecheck#1{%
+ \ifnum \the\catcode`\^^M=\active
+ \endgroup
+ \errmessage{This command won't work in this context; perhaps the problem is
+ that we are \inenvironment\thisenv}%
+ \def\next{\doignore{#1}}%
+ \else
+ \let\next\tablex
+ \fi
+ \next
}
\def\tablex#1{%
\def\itemindicate{#1}%
@@ -2620,7 +2706,10 @@ where each line of input produces a line of output.}
\startsavinginserts
%
% @item within a multitable starts a normal row.
- \let\item\crcr
+ % We use \def instead of \let so that if one of the multitable entries
+ % contains an @itemize, we don't choke on the \item (seen as \crcr aka
+ % \endtemplate) expanding \doitemize.
+ \def\item{\crcr}%
%
\tolerance=9500
\hbadness=9500
@@ -2705,19 +2794,17 @@ where each line of input produces a line of output.}
\global\setpercentfalse
}
-\def\setmultitablespacing{% test to see if user has set \multitablelinespace.
-% If so, do nothing. If not, give it an appropriate dimension based on
-% current baselineskip.
+\def\setmultitablespacing{%
+ \def\multistrut{\strut}% just use the standard line spacing
+ %
+ % Compute \multitablelinespace (if not defined by user) for use in
+ % \multitableparskip calculation. We used define \multistrut based on
+ % this, but (ironically) that caused the spacing to be off.
+ % See bug-texinfo report from Werner Lemberg, 31 Oct 2004 12:52:20 +0100.
\ifdim\multitablelinespace=0pt
\setbox0=\vbox{X}\global\multitablelinespace=\the\baselineskip
\global\advance\multitablelinespace by-\ht0
-%% strut to put in table in case some entry doesn't have descenders,
-%% to keep lines equally spaced
-\let\multistrut = \strut
-\else
-%% FIXME: what is \box0 supposed to be?
-\gdef\multistrut{\vrule height\multitablelinespace depth\dp0
-width0pt\relax} \fi
+\fi
%% Test to see if parskip is larger than space between lines of
%% table. If not, do nothing.
%% If so, set to same dimension as multitablelinespace.
@@ -2786,14 +2873,14 @@ width0pt\relax} \fi
\doignorecount = 0
%
% Swallow text until we reach the matching `@end #1'.
- \dodoignore {#1}%
+ \dodoignore{#1}%
}
{ \catcode`_=11 % We want to use \_STOP_ which cannot appear in texinfo source.
\obeylines %
%
\gdef\dodoignore#1{%
- % #1 contains the string `ifinfo'.
+ % #1 contains the command name as a string, e.g., `ifinfo'.
%
% Define a command to find the next `@end #1', which must be on a line
% by itself.
@@ -2947,9 +3034,8 @@ width0pt\relax} \fi
% Index generation facilities
% Define \newwrite to be identical to plain tex's \newwrite
-% except not \outer, so it can be used within \newindex.
-{\catcode`\@=11
-\gdef\newwrite{\alloc@7\write\chardef\sixt@@n}}
+% except not \outer, so it can be used within macros and \if's.
+\edef\newwrite{\makecsname{ptexnewwrite}}
% \newindex {foo} defines an index named foo.
% It automatically defines \fooindex such that
@@ -3141,6 +3227,7 @@ width0pt\relax} \fi
\definedummyword{enddots}%
\definedummyword{equiv}%
\definedummyword{error}%
+ \definedummyword{euro}%
\definedummyword{expansion}%
\definedummyword{minus}%
\definedummyword{pounds}%
@@ -3279,6 +3366,7 @@ width0pt\relax} \fi
\def\enddots{...}%
\def\equiv{==}%
\def\error{error}%
+ \def\euro{euro}%
\def\expansion{==>}%
\def\minus{-}%
\def\pounds{pounds}%
@@ -3408,17 +3496,18 @@ width0pt\relax} \fi
\dosubindwrite
%
\ifx\lastskipmacro\zeroskipmacro
- % if \lastskip was zero, perhaps the last item was a
- % penalty, and perhaps it was >=10000, e.g., a \nobreak.
- % In that case, we want to re-insert the penalty; since we
- % just inserted a non-discardable item, any following glue
- % (such as a \parskip) would be a breakpoint. For example:
+ % If \lastskip was zero, perhaps the last item was a penalty, and
+ % perhaps it was >=10000, e.g., a \nobreak. In that case, we want
+ % to re-insert the same penalty (values >10000 are used for various
+ % signals); since we just inserted a non-discardable item, any
+ % following glue (such as a \parskip) would be a breakpoint. For example:
+ %
% @deffn deffn-whatever
% @vindex index-whatever
% Description.
% would allow a break between the index-whatever whatsit
% and the "Description." paragraph.
- \ifnum\count255>9999 \nobreak \fi
+ \ifnum\count255>9999 \penalty\count255 \fi
\else
% On the other hand, if we had a nonzero \lastskip,
% this make-up glue would be preceded by a non-discardable item
@@ -3516,7 +3605,10 @@ width0pt\relax} \fi
\removelastskip
%
% We like breaks before the index initials, so insert a bonus.
- \penalty -300
+ \nobreak
+ \vskip 0pt plus 3\baselineskip
+ \penalty 0
+ \vskip 0pt plus -3\baselineskip
%
% Typeset the initial. Making this add up to a whole number of
% baselineskips increases the chance of the dots lining up from column
@@ -3526,10 +3618,9 @@ width0pt\relax} \fi
% No shrink because it confuses \balancecolumns.
\vskip 1.67\baselineskip plus .5\baselineskip
\leftline{\secbf #1}%
- \vskip .33\baselineskip plus .1\baselineskip
- %
% Do our best not to break after the initial.
\nobreak
+ \vskip .33\baselineskip plus .1\baselineskip
}}
% \entry typesets a paragraph consisting of the text (#1), dot leaders, and
@@ -4198,11 +4289,11 @@ width0pt\relax} \fi
\ifx\temptype\Ynothingkeyword
\setbox0 = \hbox{}%
\def\toctype{unnchap}%
- \def\thischapter{#1}%
+ \gdef\thischapter{#1}%
\else\ifx\temptype\Yomitfromtockeyword
\setbox0 = \hbox{}% contents like unnumbered, but no toc entry
\def\toctype{omit}%
- \xdef\thischapter{}%
+ \gdef\thischapter{}%
\else\ifx\temptype\Yappendixkeyword
\setbox0 = \hbox{\putwordAppendix{} #3\enspace}%
\def\toctype{app}%
@@ -4350,14 +4441,14 @@ width0pt\relax} \fi
% glue accumulate. (Not a breakpoint because it's preceded by a
% discardable item.)
\vskip-\parskip
- %
- % This \nobreak is purely so the last item on the list is a \penalty
- % of 10000. This is so other code, for instance \parsebodycommon, can
- % check for and avoid allowing breakpoints. Otherwise, it would
- % insert a valid breakpoint between:
+ %
+ % This is purely so the last item on the list is a known \penalty >
+ % 10000. This is so \startdefun can avoid allowing breakpoints after
+ % section headings. Otherwise, it would insert a valid breakpoint between:
+ %
% @section sec-whatever
% @deffn def-whatever
- \nobreak
+ \penalty 10001
}
@@ -4702,7 +4793,8 @@ width0pt\relax} \fi
% start of the next paragraph will insert \parskip.
%
\def\aboveenvbreak{{%
- % =10000 instead of <10000 because of a special case in \itemzzz, q.v.
+ % =10000 instead of <10000 because of a special case in \itemzzz and
+ % \sectionheading, q.v.
\ifnum \lastpenalty=10000 \else
\advance\envskipamount by \parskip
\endgraf
@@ -5063,8 +5155,7 @@ width0pt\relax} \fi
}
% @copying ... @end copying.
-% Save the text away for @insertcopying later. Many commands won't be
-% allowed in this context, but that's ok.
+% Save the text away for @insertcopying later.
%
% We save the uninterpreted tokens, rather than creating a box.
% Saving the text in a box would be much easier, but then all the
@@ -5073,62 +5164,14 @@ width0pt\relax} \fi
% file; b) letting users define the frontmatter in as flexible order as
% possible is very desirable.
%
-\def\copying{\begingroup
- % Define a command to swallow text until we reach `@end copying'.
- % \ is the escape char in this texinfo.tex file, so it is the
- % delimiter for the command; @ will be the escape char when we read
- % it, but that doesn't matter.
- \long\def\docopying##1\end copying{\gdef\copyingtext{##1}\enddocopying}%
- %
- % We must preserve ^^M's in the input file; see \insertcopying below.
- \catcode`\^^M = \active
- \docopying
-}
-
-% What we do to finish off the copying text.
-%
-\def\enddocopying{\endgroup\ignorespaces}
-
-% @insertcopying. Here we must play games with ^^M's. On the one hand,
-% we need them to delimit commands such as `@end quotation', so they
-% must be active. On the other hand, we certainly don't want every
-% end-of-line to be a \par, as would happen with the normal active
-% definition of ^^M. On the third hand, two ^^M's in a row should still
-% generate a \par.
-%
-% Our approach is to make ^^M insert a space and a penalty1 normally;
-% then it can also check if \lastpenalty=1. If it does, then manually
-% do \par.
-%
-% This messes up the normal definitions of @c[omment], so we redefine
-% it. Similarly for @ignore. (These commands are used in the gcc
-% manual for man page generation.)
-%
-% Seems pretty fragile, most line-oriented commands will presumably
-% fail, but for the limited use of getting the copying text (which
-% should be quite simple) inserted, we can hope it's ok.
-%
-{\catcode`\^^M=\active %
-\gdef\insertcopying{\begingroup %
- \parindent = 0pt % looks wrong on title page
- \def^^M{%
- \ifnum \lastpenalty=1 %
- \par %
- \else %
- \space \penalty 1 %
- \fi %
- }%
- %
- % Fix @c[omment] for catcode 13 ^^M's.
- \def\c##1^^M{\ignorespaces}%
- \let\comment = \c %
- %
- % Don't bother jumping through all the hoops that \doignore does, it
- % would be very hard since the catcodes are already set.
- \long\def\ignore##1\end ignore{\ignorespaces}%
- %
- \copyingtext %
-\endgroup}%
+\def\copying{\checkenv{}\begingroup\scanargctxt\docopying}
+\def\docopying#1@end copying{\endgroup\def\copyingtext{#1}}
+%
+\def\insertcopying{%
+ \begingroup
+ \parindent = 0pt % paragraph indentation looks wrong on title page
+ \scanexp\copyingtext
+ \endgroup
}
\message{defuns,}
@@ -5146,10 +5189,11 @@ width0pt\relax} \fi
% If there are two @def commands in a row, we'll have a \nobreak,
% which is there to keep the function description together with its
% header. But if there's nothing but headers, we need to allow a
- % break somewhere. Check for penalty 10002 (inserted by
- % \defargscommonending) instead of 10000, since the sectioning
- % commands insert a \penalty10000, and we don't want to allow a break
- % between a section heading and a defun.
+ % break somewhere. Check specifically for penalty 10002, inserted
+ % by \defargscommonending, instead of 10000, since the sectioning
+ % commands also insert a nobreak penalty, and we don't want to allow
+ % a break between a section heading and a defun.
+ %
\ifnum\lastpenalty=10002 \penalty2000 \fi
%
% Similarly, after a section heading, do not allow a break.
@@ -5473,7 +5517,7 @@ width0pt\relax} \fi
\ifx\eTeXversion\undefined
\newwrite\macscribble
\def\scantokens#1{%
- \toks0={#1\endinput}%
+ \toks0={#1}%
\immediate\openout\macscribble=\jobname.tmp
\immediate\write\macscribble{\the\toks0}%
\immediate\closeout\macscribble
@@ -5486,7 +5530,11 @@ width0pt\relax} \fi
\newlinechar`\^^M
\let\xeatspaces\eatspaces
% Undo catcode changes of \startcontents and \doprintindex
- \catcode`\@=0 \catcode`\\=\other \escapechar=`\@
+ % When called from @insertcopying or (short)caption, we need active
+ % backslash to get it printed correctly. Previously, we had
+ % \catcode`\\=\other instead. We'll see whether a problem appears
+ % with macro expansion. --kasal, 19aug04
+ \catcode`\@=0 \catcode`\\=\active \escapechar=`\@
% ... and \example
\spaceisspace
%
@@ -5498,6 +5546,11 @@ width0pt\relax} \fi
\endgroup
}
+\def\scanexp#1{%
+ \edef\temp{\noexpand\scanmacro{#1}}%
+ \temp
+}
+
\newcount\paramno % Count of parameters
\newtoks\macname % Macro name
\newif\ifrecursive % Is it recursive?
@@ -5505,13 +5558,15 @@ width0pt\relax} \fi
% \do\macro1\do\macro2...
% Utility routines.
-% This does \let #1 = #2, except with \csnames.
+% This does \let #1 = #2, with \csnames; that is,
+% \let \csname#1\endcsname = \csname#2\endcsname
+% (except of course we have to play expansion games).
+%
\def\cslet#1#2{%
-\expandafter\expandafter
-\expandafter\let
-\expandafter\expandafter
-\csname#1\endcsname
-\csname#2\endcsname}
+ \expandafter\let
+ \csname#1\expandafter\endcsname
+ \csname#2\endcsname
+}
% Trim leading and trailing spaces off a string.
% Concepts from aro-bend problem 15 (see CTAN).
@@ -5538,30 +5593,36 @@ width0pt\relax} \fi
% done by making ^^M (\endlinechar) catcode 12 when reading the macro
% body, and then making it the \newlinechar in \scanmacro.
-\def\macrobodyctxt{%
- \catcode`\~=\other
+\def\scanctxt{%
+ \catcode`\"=\other
+ \catcode`\+=\other
+ \catcode`\<=\other
+ \catcode`\>=\other
+ \catcode`\@=\other
\catcode`\^=\other
\catcode`\_=\other
\catcode`\|=\other
- \catcode`\<=\other
- \catcode`\>=\other
- \catcode`\+=\other
+ \catcode`\~=\other
+}
+
+\def\scanargctxt{%
+ \scanctxt
+ \catcode`\\=\other
+ \catcode`\^^M=\other
+}
+
+\def\macrobodyctxt{%
+ \scanctxt
\catcode`\{=\other
\catcode`\}=\other
- \catcode`\@=\other
\catcode`\^^M=\other
- \usembodybackslash}
+ \usembodybackslash
+}
\def\macroargctxt{%
- \catcode`\~=\other
- \catcode`\^=\other
- \catcode`\_=\other
- \catcode`\|=\other
- \catcode`\<=\other
- \catcode`\>=\other
- \catcode`\+=\other
- \catcode`\@=\other
- \catcode`\\=\other}
+ \scanctxt
+ \catcode`\\=\other
+}
% \mbodybackslash is the definition of \ in @macro bodies.
% It maps \foo\ => \csname macarg.foo\endcsname => #N
@@ -6367,11 +6428,14 @@ width0pt\relax} \fi
\endgroup}
-% @float FLOATTYPE,LOC ... @end float for displayed figures, tables, etc.
-% We don't actually implement floating yet, we just plop the float "here".
-% But it seemed the best name for the future.
+% @float FLOATTYPE,LABEL,LOC ... @end float for displayed figures, tables,
+% etc. We don't actually implement floating yet, we always include the
+% float "here". But it seemed the best name for the future.
%
-\envparseargdef\float{\dofloat #1,,,\finish}
+\envparseargdef\float{\eatcommaspace\eatcommaspace\dofloat#1, , ,\finish}
+
+% There may be a space before second and/or third parameter; delete it.
+\def\eatcommaspace#1, {#1,}
% #1 is the optional FLOATTYPE, the text label for this float, typically
% "Figure", "Table", "Example", etc. Can't contain commas. If omitted,
@@ -6392,6 +6456,10 @@ width0pt\relax} \fi
\let\thisshortcaption=\empty
%
% don't lose footnotes inside @float.
+ %
+ % BEWARE: when the floats start float, we have to issue warning whenever an
+ % insert appears inside a float which could possibly float. --kasal, 26may04
+ %
\startsavinginserts
%
% We can't be used inside a paragraph.
@@ -6476,7 +6544,7 @@ width0pt\relax} \fi
\fi
%
% caption text.
- \appendtomacro\captionline\thiscaption
+ \appendtomacro\captionline{\scanexp\thiscaption}%
\fi
%
% If we have anything to print, print it, with space before.
@@ -6484,6 +6552,9 @@ width0pt\relax} \fi
\ifx\captionline\empty \else
\vskip.5\parskip
\captionline
+ %
+ % Space below caption.
+ \vskip\parskip
\fi
%
% If have an xref label, write the list of floats info. Do this
@@ -6494,37 +6565,44 @@ width0pt\relax} \fi
% caption if specified, else the full caption if specified, else nothing.
{%
\atdummies \turnoffactive \otherbackslash
- \immediate\write\auxfile{@xrdef{\floatlabel-lof}{%
- \floatident
- \ifx\thisshortcaption\empty
- \ifx\thiscaption\empty \else : \thiscaption \fi
- \else
- : \thisshortcaption
- \fi
- }}%
+ % since we read the caption text in the macro world, where ^^M
+ % is turned into a normal character, we have to scan it back, so
+ % we don't write the literal three characters "^^M" into the aux file.
+ \scanexp{%
+ \xdef\noexpand\gtemp{%
+ \ifx\thisshortcaption\empty
+ \thiscaption
+ \else
+ \thisshortcaption
+ \fi
+ }%
+ }%
+ \immediate\write\auxfile{@xrdef{\floatlabel-lof}{\floatident
+ \ifx\gtemp\empty \else : \gtemp \fi}}%
}%
\fi
- %
- % Space below caption, if we printed anything.
- \ifx\printedsomething\empty \else \vskip\parskip \fi
\egroup % end of \vtop
+ %
+ % place the captured inserts
+ %
+ % BEWARE: when the floats start float, we have to issue warning whenever an
+ % insert appears inside a float which could possibly float. --kasal, 26may04
+ %
\checkinserts
}
% Append the tokens #2 to the definition of macro #1, not expanding either.
%
-\newtoks\appendtomacroAtoks
-\newtoks\appendtomacroBtoks
\def\appendtomacro#1#2{%
- \appendtomacroAtoks = \expandafter{#1}%
- \appendtomacroBtoks = {#2}%
- \edef#1{\the\appendtomacroAtoks \the\appendtomacroBtoks}%
+ \expandafter\def\expandafter#1\expandafter{#1#2}%
}
-% @caption, @shortcaption are easy.
+% @caption, @shortcaption
%
-\long\def\caption#1{\checkenv\float \def\thiscaption{#1}}
-\def\shortcaption#1{\checkenv\float \def\thisshortcaption{#1}}
+\def\caption{\docaption\thiscaption}
+\def\shortcaption{\docaption\thisshortcaption}
+\def\docaption{\checkenv\float \bgroup\scanargctxt\defcaption}
+\def\defcaption#1#2{\egroup \def#1{#2}}
% The parameter is the control sequence identifying the counter we are
% going to use. Create it if it doesn't exist and assign it to \floatno.
diff --git a/eval.c b/eval.c
index 8d441649..375dce4a 100644
--- a/eval.c
+++ b/eval.c
@@ -3,7 +3,7 @@
*/
/*
- * Copyright (C) 1986, 1988, 1989, 1991-2004 the Free Software Foundation, Inc.
+ * Copyright (C) 1986, 1988, 1989, 1991-2005 the Free Software Foundation, Inc.
*
* This file is part of GAWK, the GNU implementation of the
* AWK Programming Language.
@@ -20,7 +20,7 @@
*
* 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
+ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA
*/
#include "awk.h"
@@ -322,6 +322,9 @@ flags2str(int flagval)
{ FUNC, "FUNC" },
{ FIELD, "FIELD" },
{ INTLSTR, "INTLSTR" },
+#ifdef WSTRCUR
+ { WSTRCUR, "WSTRCUR" },
+#endif
{ 0, NULL },
};
@@ -375,7 +378,7 @@ genflags2str(int flagval, const struct flagtab *tab)
*/
static inline void
-make_scalar P((NODE *tree))
+make_scalar(NODE *tree)
{
switch (tree->type) {
case Node_var_array:
@@ -517,13 +520,13 @@ interpret(register NODE *volatile tree)
NODE *t1;
Regexp *rp;
/* see comments in match_op() code about this. */
- int kludge_need_start = FALSE;
+ int kludge_need_start = 0;
t1 = force_string(switch_value);
rp = re_update(case_stmt->lnode);
if (avoid_dfa(tree, t1->stptr, t1->stlen))
- kludge_need_start = TRUE;
+ kludge_need_start = RE_NEED_START;
match_found = (research(rp, t1->stptr, 0, t1->stlen, kludge_need_start) >= 0);
if (t1 != switch_value)
free_temp(t1);
@@ -879,6 +882,41 @@ interpret(register NODE *volatile tree)
return 1;
}
+/*
+ * calc_exp_posint --- calculate x^n for positive integral n,
+ * using exponentiation by squaring without recursion.
+ */
+
+static AWKNUM
+calc_exp_posint(AWKNUM x, long n)
+{
+ AWKNUM mult = 1;
+
+ while (n > 1) {
+ if ((n % 2) == 1)
+ mult *= x;
+ x *= x;
+ n /= 2;
+ }
+ return mult * x;
+}
+
+/* calc_exp --- calculate x1^x2 */
+
+static AWKNUM
+calc_exp(AWKNUM x1, AWKNUM x2)
+{
+ long lx;
+
+ if ((lx = x2) == x2) { /* integer exponent */
+ if (lx == 0)
+ return 1;
+ return (lx > 0) ? calc_exp_posint(x1, lx)
+ : 1.0 / calc_exp_posint(x1, -lx);
+ }
+ return (AWKNUM) pow((double) x1, (double) x2);
+}
+
/* r_tree_eval --- evaluate a subtree */
NODE *
@@ -888,7 +926,6 @@ r_tree_eval(register NODE *tree, int iscond)
register NODE **lhs;
register int di;
AWKNUM x, x1, x2;
- long lx;
#ifdef _CRAY
long lx2;
#endif
@@ -1138,6 +1175,7 @@ r_tree_eval(register NODE *tree, int iscond)
erealloc(l->stptr, char *, nlen, "interpret");
memcpy(l->stptr + l->stlen, r->stptr, r->stlen);
l->stlen += r->stlen;
+ l->stptr[l->stlen] = '\0';
} else {
char *nval;
size_t nlen = l->stlen + r->stlen + 2;
@@ -1230,19 +1268,7 @@ r_tree_eval(register NODE *tree, int iscond)
unref(t2);
switch (tree->type) {
case Node_exp:
- if ((lx = x2) == x2 && lx >= 0) { /* integer exponent */
- if (lx == 0)
- x = 1;
- else if (lx == 1)
- x = x1;
- else {
- /* doing it this way should be more precise */
- for (x = x1; --lx; )
- x *= x1;
- }
- } else
- x = pow((double) x1, (double) x2);
- return tmp_number(x);
+ return tmp_number(calc_exp(x1, x2));
case Node_times:
return tmp_number(x1 * x2);
@@ -1396,8 +1422,6 @@ op_assign(register NODE *tree)
{
AWKNUM rval, lval;
NODE **lhs;
- AWKNUM t1, t2;
- long ltemp;
NODE *tmp;
Func_ptr after_assign = NULL;
int post = FALSE;
@@ -1435,19 +1459,7 @@ op_assign(register NODE *tree)
break;
case Node_assign_exp:
- if ((ltemp = rval) == rval) { /* integer exponent */
- if (ltemp == 0)
- *lhs = make_number((AWKNUM) 1);
- else if (ltemp == 1)
- *lhs = make_number(lval);
- else {
- /* doing it this way should be more precise */
- for (t1 = t2 = lval; --ltemp; )
- t1 *= t2;
- *lhs = make_number(t1);
- }
- } else
- *lhs = make_number((AWKNUM) pow((double) lval, (double) rval));
+ *lhs = make_number(calc_exp(lval, rval));
break;
case Node_assign_times:
@@ -1457,7 +1469,10 @@ op_assign(register NODE *tree)
case Node_assign_quotient:
if (rval == (AWKNUM) 0)
fatal(_("division by zero attempted in `/='"));
+ {
#ifdef _CRAY
+ long ltemp;
+
/* special case for integer division, put in for Cray */
ltemp = rval;
if (ltemp == 0) {
@@ -1470,6 +1485,7 @@ op_assign(register NODE *tree)
else
#endif /* _CRAY */
*lhs = make_number(lval / rval);
+ }
break;
case Node_assign_mod:
@@ -1478,9 +1494,13 @@ op_assign(register NODE *tree)
#ifdef HAVE_FMOD
*lhs = make_number(fmod(lval, rval));
#else /* ! HAVE_FMOD */
+ {
+ AWKNUM t1, t2;
+
(void) modf(lval / rval, &t1);
t2 = lval - rval * t1;
*lhs = make_number(t2);
+ }
#endif /* ! HAVE_FMOD */
break;
@@ -1785,7 +1805,7 @@ func_call(NODE *tree)
}
#ifdef FUNC_TRACE
- fprintf(stderr, _("function %s called\n"), name->stptr);
+ fprintf(stderr, "function `%s' called\n", name->stptr);
#endif
push_args(f->lnode->param_cnt, arg_list, stack_ptr, name->stptr,
f->parmlist);
@@ -2059,7 +2079,7 @@ match_op(register NODE *tree)
register Regexp *rp;
int i;
int match = TRUE;
- int kludge_need_start = FALSE; /* FIXME: --- see below */
+ int kludge_need_start = 0; /* FIXME: --- see below */
if (tree->type == Node_nomatch)
match = FALSE;
@@ -2074,7 +2094,7 @@ match_op(register NODE *tree)
* FIXME:
*
* Any place where research() is called with a last parameter of
- * FALSE, we need to use the avoid_dfa test. This appears here and
+ * zero, we need to use the avoid_dfa test. This appears here and
* in the code for Node_K_switch.
*
* A new or improved dfa that distinguishes beginning/end of
@@ -2084,7 +2104,7 @@ match_op(register NODE *tree)
* The avoid_dfa() function is in re.c; it is not very smart.
*/
if (avoid_dfa(tree, t1->stptr, t1->stlen))
- kludge_need_start = TRUE;
+ kludge_need_start = RE_NEED_START;
i = research(rp, t1->stptr, 0, t1->stlen, kludge_need_start);
i = (i == -1) ^ (match == TRUE);
free_temp(t1);
@@ -2159,7 +2179,7 @@ set_BINMODE()
if (BINMODE == 0 && v->stlen != 0) {
/* arbitrary string, assume both */
BINMODE = 3;
- warning("BINMODE: arbitary string value treated as \"rw\"");
+ warning("BINMODE: arbitrary string value treated as \"rw\"");
}
} else
BINMODE = (int) force_number(BINMODE_node->var_value);
@@ -2207,7 +2227,7 @@ fmt_ok(NODE *n)
#else
static const char float_formats[] = "efgEFG";
#endif
-#if ENABLE_NLS && defined(HAVE_LOCALE_H)
+#if defined(HAVE_LOCALE_H)
static const char flags[] = " +-#'";
#else
static const char flags[] = " +-#";
@@ -2369,19 +2389,27 @@ assign_val(NODE **lhs_p, NODE *rhs)
return *lhs_p;
}
-/* update_ERRNO --- update the value of ERRNO */
+/* update_ERRNO_saved --- update the value of ERRNO based on argument */
void
-update_ERRNO()
+update_ERRNO_saved(int errcode)
{
char *cp;
- cp = strerror(errno);
+ cp = strerror(errcode);
cp = gettext(cp);
unref(ERRNO_node->var_value);
ERRNO_node->var_value = make_string(cp, strlen(cp));
}
+/* update_ERRNO --- update the value of ERRNO based on errno */
+
+void
+update_ERRNO()
+{
+ update_ERRNO_saved(errno);
+}
+
/* comp_func --- array index comparison function for qsort */
static int
diff --git a/eval_p.c b/eval_p.c
index b01bec19..143601ad 100644
--- a/eval_p.c
+++ b/eval_p.c
@@ -20,7 +20,7 @@
*
* 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
+ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA
*/
#define PROFILING 1
diff --git a/ext.c b/ext.c
index 018f90ad..b8c18fd5 100644
--- a/ext.c
+++ b/ext.c
@@ -7,7 +7,7 @@
*/
/*
- * Copyright (C) 1995 - 2001, 2003, 2004 the Free Software Foundation, Inc.
+ * Copyright (C) 1995 - 2001, 2003-2005 the Free Software Foundation, Inc.
*
* This file is part of GAWK, the GNU implementation of the
* AWK Programming Language.
@@ -24,7 +24,7 @@
*
* 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
+ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA
*/
#include "awk.h"
@@ -198,7 +198,7 @@ get_actual_argument(NODE *tree, unsigned int i, int optional, int want_array)
if (t == NULL) {
if (i >= tree->param_cnt) /* must be fatal */
- fatal(_("function `%s' defined to take no more than `%d' argument(s)"),
+ fatal(_("function `%s' defined to take no more than %d argument(s)"),
tree->param, tree->param_cnt);
if (! optional)
fatal(_("function `%s': missing argument #%d"),
diff --git a/extension/ChangeLog b/extension/ChangeLog
index 60805ec4..d62a561b 100644
--- a/extension/ChangeLog
+++ b/extension/ChangeLog
@@ -1,3 +1,13 @@
+Tue Jul 26 21:46:16 2005 Arnold D. Robbins <arnold@skeeve.com>
+
+ * Release 3.1.5: Release tar file made.
+
+Sun Jun 26 09:03:32 2005 Arnold D. Robbins <arnold@skeeve.com>
+
+ * filefuncs.c (do_stat): Check return value from readlink()
+ for error. Pass in `sizeof(buf) - 1' to leave room for trailing
+ zero byte. From: Glenn Zazulia <gnu@t1.zazu.com>.
+
Mon Aug 2 12:18:15 2004 Arnold D. Robbins <arnold@skeeve.com>
* Release 3.1.4: Release tar file made.
diff --git a/extension/arrayparm.c b/extension/arrayparm.c
index d2e18d5b..732bf4d3 100644
--- a/extension/arrayparm.c
+++ b/extension/arrayparm.c
@@ -27,7 +27,7 @@
*
* 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
+ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA
*/
#include "awk.h"
diff --git a/extension/dl.c b/extension/dl.c
index 0f1e1c5c..8737420f 100644
--- a/extension/dl.c
+++ b/extension/dl.c
@@ -23,7 +23,7 @@
*
* 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
+ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA
*/
#include "awk.h"
diff --git a/extension/filefuncs.c b/extension/filefuncs.c
index ed86875a..f719f32d 100644
--- a/extension/filefuncs.c
+++ b/extension/filefuncs.c
@@ -7,7 +7,7 @@
*/
/*
- * Copyright (C) 2001, 2004 the Free Software Foundation, Inc.
+ * Copyright (C) 2001, 2004, 2005 the Free Software Foundation, Inc.
*
* This file is part of GAWK, the GNU implementation of the
* AWK Programming Language.
@@ -24,7 +24,7 @@
*
* 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
+ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA
*/
#include "awk.h"
@@ -260,14 +260,16 @@ NODE *tree;
char buf[BUFSIZ*2];
int linksize;
- linksize = readlink(file->stptr, buf, sizeof buf);
- /* should make this smarter */
- if (linksize == sizeof(buf))
- fatal("size of symbolic link too big");
- buf[linksize] = '\0';
+ linksize = readlink(file->stptr, buf, sizeof(buf) - 1);
+ if (linksize >= 0) {
+ /* should make this smarter */
+ if (linksize >= sizeof(buf) - 1)
+ fatal("size of symbolic link too big");
+ buf[linksize] = '\0';
- aptr = assoc_lookup(array, tmp_string("linkval", 7), FALSE);
- *aptr = make_string(buf, linksize);
+ aptr = assoc_lookup(array, tmp_string("linkval", 7), FALSE);
+ *aptr = make_string(buf, linksize);
+ }
}
/* add a type field */
diff --git a/extension/fork.c b/extension/fork.c
index 8ba7d0d6..7438ba2f 100644
--- a/extension/fork.c
+++ b/extension/fork.c
@@ -22,7 +22,7 @@
*
* 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
+ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA
*/
#include "awk.h"
diff --git a/extension/ordchr.c b/extension/ordchr.c
index 4849ede8..76cddb82 100644
--- a/extension/ordchr.c
+++ b/extension/ordchr.c
@@ -25,7 +25,7 @@
*
* 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
+ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA
*/
#include "awk.h"
diff --git a/extension/readfile.c b/extension/readfile.c
index d9a01ffd..d5db8302 100644
--- a/extension/readfile.c
+++ b/extension/readfile.c
@@ -27,7 +27,7 @@
*
* 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
+ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA
*/
#include "awk.h"
diff --git a/extension/xreadlink.c b/extension/xreadlink.c
new file mode 100644
index 00000000..d56d2a6a
--- /dev/null
+++ b/extension/xreadlink.c
@@ -0,0 +1,93 @@
+/* xreadlink.c -- readlink wrapper to return the link name in malloc'd storage
+
+ Copyright (C) 2001, 2003, 2004, 2005 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; see the file COPYING.
+ If not, write to the Free Software Foundation,
+ 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. */
+
+/* Written by Jim Meyering <jim@meyering.net> */
+
+#if HAVE_CONFIG_H
+# include <config.h>
+#endif
+
+#include "xreadlink.h"
+
+#include <stdio.h>
+#include <errno.h>
+#include <limits.h>
+#include <sys/types.h>
+#include <stdlib.h>
+#if HAVE_UNISTD_H
+# include <unistd.h>
+#endif
+
+#ifndef SIZE_MAX
+# define SIZE_MAX ((size_t) -1)
+#endif
+#ifndef SSIZE_MAX
+# define SSIZE_MAX ((ssize_t) (SIZE_MAX / 2))
+#endif
+
+#define MAXSIZE (SIZE_MAX < SSIZE_MAX ? SIZE_MAX : SSIZE_MAX)
+
+#include "xalloc.h"
+
+/* Call readlink to get the symbolic link value of FILE.
+ SIZE is a hint as to how long the link is expected to be;
+ typically it is taken from st_size. It need not be correct.
+ Return a pointer to that NUL-terminated string in malloc'd storage.
+ If readlink fails, return NULL (caller may use errno to diagnose).
+ If malloc fails, or if the link value is longer than SSIZE_MAX :-),
+ give a diagnostic and exit. */
+
+char *
+xreadlink (char const *file, size_t size)
+{
+ /* The initial buffer size for the link value. A power of 2
+ detects arithmetic overflow earlier, but is not required. */
+ size_t buf_size = size < MAXSIZE ? size + 1 : MAXSIZE;
+
+ while (1)
+ {
+ char *buffer = xmalloc (buf_size);
+ ssize_t r = readlink (file, buffer, buf_size);
+ size_t link_length = r;
+
+ /* On AIX 5L v5.3 and HP-UX 11i v2 04/09, readlink returns -1
+ with errno == ERANGE if the buffer is too small. */
+ if (r < 0 && errno != ERANGE)
+ {
+ int saved_errno = errno;
+ free (buffer);
+ errno = saved_errno;
+ return NULL;
+ }
+
+ if (link_length < buf_size)
+ {
+ buffer[link_length] = 0;
+ return buffer;
+ }
+
+ free (buffer);
+ if (buf_size <= MAXSIZE / 2)
+ buf_size *= 2;
+ else if (buf_size < MAXSIZE)
+ buf_size = MAXSIZE;
+ else
+ xalloc_die ();
+ }
+}
diff --git a/extension/xreadlink.h b/extension/xreadlink.h
new file mode 100644
index 00000000..9fcf836a
--- /dev/null
+++ b/extension/xreadlink.h
@@ -0,0 +1,23 @@
+/* readlink wrapper to return the link name in malloc'd storage
+
+ Copyright (C) 2001, 2003, 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)
+ 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; see the file COPYING.
+ If not, write to the Free Software Foundation,
+ 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. */
+
+/* Written by Jim Meyering <jim@meyering.net> */
+
+#include <stddef.h>
+char *xreadlink (char const *, size_t);
diff --git a/field.c b/field.c
index a076f54a..99db3ac5 100644
--- a/field.c
+++ b/field.c
@@ -3,7 +3,7 @@
*/
/*
- * Copyright (C) 1986, 1988, 1989, 1991-2004 the Free Software Foundation, Inc.
+ * Copyright (C) 1986, 1988, 1989, 1991-2005 the Free Software Foundation, Inc.
*
* This file is part of GAWK, the GNU implementation of the
* AWK Programming Language.
@@ -20,11 +20,22 @@
*
* 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
+ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA
*/
#include "awk.h"
+/*
+ * In case that the system doesn't have isblank().
+ * Don't bother with autoconf ifdef junk, just force it.
+ * See dfa.c and regex_internal.h and regcomp.c. Bleah.
+ */
+static int
+is_blank(int c)
+{
+ return c == ' ' || c == '\t';
+}
+
typedef void (* Setfunc) P((long, char *, long, NODE *));
static long (*parse_field) P((long, char **, int, NODE *,
@@ -372,7 +383,7 @@ re_parse_field(long up_to, /* parse only up to this field number */
scan++;
field = scan;
while (scan < end
- && research(rp, scan, 0, (end - scan), TRUE) != -1
+ && research(rp, scan, 0, (end - scan), RE_NEED_START) != -1
&& nf < up_to) {
if (REEND(rp, scan) == RESTART(rp, scan)) { /* null match */
#ifdef MBS_SUPPORT
@@ -910,16 +921,38 @@ set_FIELDWIDTHS()
emalloc(FIELDWIDTHS, int *, fw_alloc * sizeof(int), "set_FIELDWIDTHS");
FIELDWIDTHS[0] = 0;
for (i = 1; ; i++) {
+ unsigned long int tmp;
if (i >= fw_alloc) {
fw_alloc *= 2;
erealloc(FIELDWIDTHS, int *, fw_alloc * sizeof(int), "set_FIELDWIDTHS");
}
- FIELDWIDTHS[i] = (int) strtoul(scan, &end, 10);
- if (end == scan)
- break;
- if (FIELDWIDTHS[i] <= 0)
- fatal(_("field %d in FIELDWIDTHS, must be > 0"), i);
+ /* Ensure that there is no leading `-' sign. Otherwise,
+ strtoul would accept it and return a bogus result. */
+ while (is_blank(*scan)) {
+ ++scan;
+ }
+ if (*scan == '-')
+ fatal(_("invalid FIELDWIDTHS value, near `%s'"),
+ scan);
+
+ /* Detect an invalid base-10 integer, a valid value that
+ is followed by something other than a blank or '\0',
+ or a value that is not in the range [1..INT_MAX]. */
+ errno = 0;
+ tmp = strtoul(scan, &end, 10);
+ if (errno != 0
+ || !(*end == '\0' || is_blank(*end))
+ || !(0 < tmp && tmp <= INT_MAX))
+ fatal(_("invalid FIELDWIDTHS value, near `%s'"),
+ scan);
+ FIELDWIDTHS[i] = tmp;
scan = end;
+ /* Skip past any trailing blanks. */
+ while (is_blank(*scan)) {
+ ++scan;
+ }
+ if (*scan == '\0')
+ break;
}
FIELDWIDTHS[i] = -1;
@@ -951,10 +984,10 @@ set_FS()
*/
if (save_fs
&& FS_node->var_value->stlen == save_fs->stlen
- && STREQN(FS_node->var_value->stptr, save_fs->stptr, save_fs->stlen)
+ && memcmp(FS_node->var_value->stptr, save_fs->stptr, save_fs->stlen) == 0
&& save_rs
&& RS_node->var_value->stlen == save_rs->stlen
- && STREQN(RS_node->var_value->stptr, save_rs->stptr, save_rs->stlen)) {
+ && memcmp(RS_node->var_value->stptr, save_rs->stptr, save_rs->stlen) == 0) {
if (FS_regexp != NULL)
FS_regexp = (IGNORECASE ? FS_re_no_case : FS_re_yes_case);
diff --git a/gawkmisc.c b/gawkmisc.c
index 3b50a880..9dc288f0 100644
--- a/gawkmisc.c
+++ b/gawkmisc.c
@@ -20,7 +20,7 @@
*
* 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
+ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA
*/
#include "awk.h"
diff --git a/getopt.c b/getopt.c
index 5336410e..207b55f4 100644
--- a/getopt.c
+++ b/getopt.c
@@ -2,7 +2,7 @@
NOTE: getopt is now part of the C library, so if you don't know what
"Keep this file name-space clean" means, talk to drepper@gnu.org
before changing it!
- Copyright (C) 1987,88,89,90,91,92,93,94,95,96,98,99,2000,2001,2002,2003
+ Copyright (C) 1987,88,89,90,91,92,93,94,95,96,98,99,2000,2001,2002,2003,2004
Free Software Foundation, Inc.
This file is part of the GNU C Library.
@@ -18,8 +18,8 @@
You should have received a copy of the GNU Lesser General Public
License along with the GNU C Library; if not, write to the Free
- Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
- 02111-1307 USA. */
+ Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+ 02110-1301 USA. */
/* This tells Alpha OSF/1 not to define a getopt prototype in <stdio.h>.
Ditto for AIX 3.2 and <stdlib.h>. */
@@ -31,14 +31,6 @@
# include <config.h>
#endif
-#if !defined __STDC__ || !__STDC__
-/* This is a separate conditional since some stdc systems
- reject `defined (const)'. */
-# ifndef const
-# define const
-# endif
-#endif
-
#include <stdio.h>
/* Comment out all this code if we are using the GNU C Library, and are not
@@ -69,26 +61,21 @@
# include <unistd.h>
#endif /* GNU C library. */
+#include <string.h>
+
#ifdef VMS
# include <unixlib.h>
-# if HAVE_STRING_H - 0
-# include <string.h>
-# endif
#endif
-#ifndef _
-/* This is for other GNU distributions with internationalized messages. */
-# if (HAVE_LIBINTL_H && ENABLE_NLS) || defined _LIBC
-# include <libintl.h>
-# ifndef _
-# define _(msgid) gettext (msgid)
-# endif
-# else
-# define _(msgid) (msgid)
-# endif
-# if defined _LIBC && defined USE_IN_LIBIO
-# include <wchar.h>
-# endif
+#ifdef _LIBC
+# include <libintl.h>
+#else
+# include "gettext.h"
+# define _(msgid) gettext (msgid)
+#endif
+
+#if defined _LIBC && defined USE_IN_LIBIO
+# include <wchar.h>
#endif
#ifndef attribute_hidden
@@ -110,6 +97,7 @@
they can distinguish the relative order of options and other arguments. */
#include "getopt.h"
+#include "getopt_int.h"
/* For communication from `getopt' to the caller.
When `getopt' finds an option that takes an argument,
@@ -134,21 +122,6 @@ char *optarg;
/* 1003.2 says this must be 1 before any call. */
int optind = 1;
-/* Formerly, initialization of getopt depended on optind==0, which
- causes problems with re-calling getopt as programs generally don't
- know that. */
-
-int __getopt_initialized attribute_hidden;
-
-/* The next char to be scanned in the option-element
- in which the last option character we returned was found.
- This allows us to pick up the scan where we left off.
-
- If this is zero, or a null string, it means resume the scan
- by advancing to the next ARGV-element. */
-
-static char *nextchar;
-
/* Callers store zero here to inhibit the error message
for unrecognized options. */
@@ -160,57 +133,12 @@ int opterr = 1;
int optopt = '?';
-/* Describe how to deal with options that follow non-option ARGV-elements.
-
- If the caller did not specify anything,
- the default is REQUIRE_ORDER if the environment variable
- POSIXLY_CORRECT is defined, PERMUTE otherwise.
+/* Keep a global copy of all internal members of getopt_data. */
- REQUIRE_ORDER means don't recognize them as options;
- stop option processing when the first non-option is seen.
- This is what Unix does.
- This mode of operation is selected by either setting the environment
- variable POSIXLY_CORRECT, or using `+' as the first character
- of the list of option characters.
+static struct _getopt_data getopt_data;
- PERMUTE is the default. We permute the contents of ARGV as we scan,
- so that eventually all the non-options are at the end. This allows options
- to be given in any order, even with programs that were not written to
- expect this.
-
- RETURN_IN_ORDER is an option available to programs that were written
- to expect options and other ARGV-elements in any order and that care about
- the ordering of the two. We describe each non-option ARGV-element
- as if it were the argument of an option with character code 1.
- Using `-' as the first character of the list of option characters
- selects this mode of operation.
-
- The special argument `--' forces an end of option-scanning regardless
- of the value of `ordering'. In the case of RETURN_IN_ORDER, only
- `--' can cause `getopt' to return -1 with `optind' != ARGC. */
-
-static enum
-{
- REQUIRE_ORDER, PERMUTE, RETURN_IN_ORDER
-} ordering;
-
-/* Value of POSIXLY_CORRECT environment variable. */
-static char *posixly_correct;
-#ifdef __GNU_LIBRARY__
-/* We want to avoid inclusion of string.h with non-GNU libraries
- because there are many ways it can cause trouble.
- On some systems, it contains special magic macros that don't work
- in GCC. */
-# include <string.h>
-# define my_index strchr
-#else
-
-# if HAVE_STRING_H
-# include <string.h>
-# else
-# include <strings.h>
-# endif
+#ifndef __GNU_LIBRARY__
/* Avoid depending on library functions or files
whose names are inconsistent. */
@@ -219,43 +147,8 @@ static char *posixly_correct;
extern char *getenv ();
#endif
-static char *
-my_index (str, chr)
- const char *str;
- int chr;
-{
- while (*str)
- {
- if (*str == chr)
- return (char *) str;
- str++;
- }
- return 0;
-}
-
-/* If using GCC, we can safely declare strlen this way.
- If not using GCC, it is ok not to declare it. */
-#ifdef __GNUC__
-/* Note that Motorola Delta 68k R3V7 comes with GCC but not stddef.h.
- That was relevant to code that was here before. */
-# if (!defined __STDC__ || !__STDC__) && !defined strlen
-/* gcc with -traditional declares the built-in strlen to return int,
- and has done so at least since version 2.4.5. -- rms. */
-extern int strlen (const char *);
-# endif /* not __STDC__ */
-#endif /* __GNUC__ */
-
#endif /* not __GNU_LIBRARY__ */
-/* Handle permutation of arguments. */
-
-/* Describe the part of ARGV that contains non-options that have
- been skipped. `first_nonopt' is the index in ARGV of the first of them;
- `last_nonopt' is the index after the last of them. */
-
-static int first_nonopt;
-static int last_nonopt;
-
#ifdef _LIBC
/* Stored original parameters.
XXX This is no good solution. We should rather copy the args so
@@ -269,14 +162,11 @@ extern char **__libc_argv;
# ifdef USE_NONOPTION_FLAGS
/* Defined in getopt_init.c */
extern char *__getopt_nonoption_flags;
-
-static int nonoption_flags_max_len;
-static int nonoption_flags_len;
# endif
# ifdef USE_NONOPTION_FLAGS
# define SWAP_FLAGS(ch1, ch2) \
- if (nonoption_flags_len > 0) \
+ if (d->__nonoption_flags_len > 0) \
{ \
char __tmp = __getopt_nonoption_flags[ch1]; \
__getopt_nonoption_flags[ch1] = __getopt_nonoption_flags[ch2]; \
@@ -298,17 +188,12 @@ static int nonoption_flags_len;
`first_nonopt' and `last_nonopt' are relocated so that they describe
the new indices of the non-options in ARGV after they are moved. */
-#if defined __STDC__ && __STDC__
-static void exchange (char **);
-#endif
-
static void
-exchange (argv)
- char **argv;
+exchange (char **argv, struct _getopt_data *d)
{
- int bottom = first_nonopt;
- int middle = last_nonopt;
- int top = optind;
+ int bottom = d->__first_nonopt;
+ int middle = d->__last_nonopt;
+ int top = d->optind;
char *tem;
/* Exchange the shorter segment with the far end of the longer segment.
@@ -320,19 +205,19 @@ exchange (argv)
/* First make sure the handling of the `__getopt_nonoption_flags'
string can work normally. Our top argument must be in the range
of the string. */
- if (nonoption_flags_len > 0 && top >= nonoption_flags_max_len)
+ if (d->__nonoption_flags_len > 0 && top >= d->__nonoption_flags_max_len)
{
/* We must extend the array. The user plays games with us and
presents new arguments. */
char *new_str = malloc (top + 1);
if (new_str == NULL)
- nonoption_flags_len = nonoption_flags_max_len = 0;
+ d->__nonoption_flags_len = d->__nonoption_flags_max_len = 0;
else
{
memset (__mempcpy (new_str, __getopt_nonoption_flags,
- nonoption_flags_max_len),
- '\0', top + 1 - nonoption_flags_max_len);
- nonoption_flags_max_len = top + 1;
+ d->__nonoption_flags_max_len),
+ '\0', top + 1 - d->__nonoption_flags_max_len);
+ d->__nonoption_flags_max_len = top + 1;
__getopt_nonoption_flags = new_str;
}
}
@@ -378,76 +263,71 @@ exchange (argv)
/* Update records for the slots the non-options now occupy. */
- first_nonopt += (optind - last_nonopt);
- last_nonopt = optind;
+ d->__first_nonopt += (d->optind - d->__last_nonopt);
+ d->__last_nonopt = d->optind;
}
/* Initialize the internal data when the first call is made. */
-#if defined __STDC__ && __STDC__
-static const char *_getopt_initialize (int, char *const *, const char *);
-#endif
static const char *
-_getopt_initialize (argc, argv, optstring)
- int argc;
- char *const *argv;
- const char *optstring;
+_getopt_initialize (int argc, char *const *argv, const char *optstring,
+ struct _getopt_data *d)
{
/* Start processing options with ARGV-element 1 (since ARGV-element 0
is the program name); the sequence of previously skipped
non-option ARGV-elements is empty. */
- first_nonopt = last_nonopt = optind;
+ d->__first_nonopt = d->__last_nonopt = d->optind;
- nextchar = NULL;
+ d->__nextchar = NULL;
- posixly_correct = getenv ("POSIXLY_CORRECT");
+ d->__posixly_correct = !!getenv ("POSIXLY_CORRECT");
/* Determine how to handle the ordering of options and nonoptions. */
if (optstring[0] == '-')
{
- ordering = RETURN_IN_ORDER;
+ d->__ordering = RETURN_IN_ORDER;
++optstring;
}
else if (optstring[0] == '+')
{
- ordering = REQUIRE_ORDER;
+ d->__ordering = REQUIRE_ORDER;
++optstring;
}
- else if (posixly_correct != NULL)
- ordering = REQUIRE_ORDER;
+ else if (d->__posixly_correct)
+ d->__ordering = REQUIRE_ORDER;
else
- ordering = PERMUTE;
+ d->__ordering = PERMUTE;
#if defined _LIBC && defined USE_NONOPTION_FLAGS
- if (posixly_correct == NULL
+ if (!d->__posixly_correct
&& argc == __libc_argc && argv == __libc_argv)
{
- if (nonoption_flags_max_len == 0)
+ if (d->__nonoption_flags_max_len == 0)
{
if (__getopt_nonoption_flags == NULL
|| __getopt_nonoption_flags[0] == '\0')
- nonoption_flags_max_len = -1;
+ d->__nonoption_flags_max_len = -1;
else
{
const char *orig_str = __getopt_nonoption_flags;
- int len = nonoption_flags_max_len = strlen (orig_str);
- if (nonoption_flags_max_len < argc)
- nonoption_flags_max_len = argc;
+ int len = d->__nonoption_flags_max_len = strlen (orig_str);
+ if (d->__nonoption_flags_max_len < argc)
+ d->__nonoption_flags_max_len = argc;
__getopt_nonoption_flags =
- (char *) malloc (nonoption_flags_max_len);
+ (char *) malloc (d->__nonoption_flags_max_len);
if (__getopt_nonoption_flags == NULL)
- nonoption_flags_max_len = -1;
+ d->__nonoption_flags_max_len = -1;
else
memset (__mempcpy (__getopt_nonoption_flags, orig_str, len),
- '\0', nonoption_flags_max_len - len);
+ '\0', d->__nonoption_flags_max_len - len);
}
}
- nonoption_flags_len = nonoption_flags_max_len;
+ d->__nonoption_flags_len = d->__nonoption_flags_max_len;
}
else
- nonoption_flags_len = 0;
+ d->__nonoption_flags_len = 0;
#endif
return optstring;
@@ -510,29 +390,25 @@ _getopt_initialize (argc, argv, optstring)
long-named options. */
int
-_getopt_internal (argc, argv, optstring, longopts, longind, long_only)
- int argc;
- char *const *argv;
- const char *optstring;
- const struct option *longopts;
- int *longind;
- int long_only;
+_getopt_internal_r (int argc, char *const *argv, const char *optstring,
+ const struct option *longopts, int *longind,
+ int long_only, struct _getopt_data *d)
{
- int print_errors = opterr;
+ int print_errors = d->opterr;
if (optstring[0] == ':')
print_errors = 0;
if (argc < 1)
return -1;
- optarg = NULL;
+ d->optarg = NULL;
- if (optind == 0 || !__getopt_initialized)
+ if (d->optind == 0 || !d->__initialized)
{
- if (optind == 0)
- optind = 1; /* Don't scan ARGV[0], the program name. */
- optstring = _getopt_initialize (argc, argv, optstring);
- __getopt_initialized = 1;
+ if (d->optind == 0)
+ d->optind = 1; /* Don't scan ARGV[0], the program name. */
+ optstring = _getopt_initialize (argc, argv, optstring, d);
+ d->__initialized = 1;
}
/* Test whether ARGV[optind] points to a non-option argument.
@@ -540,40 +416,41 @@ _getopt_internal (argc, argv, optstring, longopts, longind, long_only)
from the shell indicating it is not an option. The later information
is only used when the used in the GNU libc. */
#if defined _LIBC && defined USE_NONOPTION_FLAGS
-# define NONOPTION_P (argv[optind][0] != '-' || argv[optind][1] == '\0' \
- || (optind < nonoption_flags_len \
- && __getopt_nonoption_flags[optind] == '1'))
+# define NONOPTION_P (argv[d->optind][0] != '-' || argv[d->optind][1] == '\0' \
+ || (d->optind < d->__nonoption_flags_len \
+ && __getopt_nonoption_flags[d->optind] == '1'))
#else
-# define NONOPTION_P (argv[optind][0] != '-' || argv[optind][1] == '\0')
+# define NONOPTION_P (argv[d->optind][0] != '-' || argv[d->optind][1] == '\0')
#endif
- if (nextchar == NULL || *nextchar == '\0')
+ if (d->__nextchar == NULL || *d->__nextchar == '\0')
{
/* Advance to the next ARGV-element. */
/* Give FIRST_NONOPT & LAST_NONOPT rational values if OPTIND has been
moved back by the user (who may also have changed the arguments). */
- if (last_nonopt > optind)
- last_nonopt = optind;
- if (first_nonopt > optind)
- first_nonopt = optind;
+ if (d->__last_nonopt > d->optind)
+ d->__last_nonopt = d->optind;
+ if (d->__first_nonopt > d->optind)
+ d->__first_nonopt = d->optind;
- if (ordering == PERMUTE)
+ if (d->__ordering == PERMUTE)
{
/* If we have just processed some options following some non-options,
exchange them so that the options come first. */
- if (first_nonopt != last_nonopt && last_nonopt != optind)
- exchange ((char **) argv);
- else if (last_nonopt != optind)
- first_nonopt = optind;
+ if (d->__first_nonopt != d->__last_nonopt
+ && d->__last_nonopt != d->optind)
+ exchange ((char **) argv, d);
+ else if (d->__last_nonopt != d->optind)
+ d->__first_nonopt = d->optind;
/* Skip any additional non-options
and extend the range of non-options previously skipped. */
- while (optind < argc && NONOPTION_P)
- optind++;
- last_nonopt = optind;
+ while (d->optind < argc && NONOPTION_P)
+ d->optind++;
+ d->__last_nonopt = d->optind;
}
/* The special ARGV-element `--' means premature end of options.
@@ -581,28 +458,29 @@ _getopt_internal (argc, argv, optstring, longopts, longind, long_only)
then exchange with previous non-options as if it were an option,
then skip everything else like a non-option. */
- if (optind != argc && !strcmp (argv[optind], "--"))
+ if (d->optind != argc && !strcmp (argv[d->optind], "--"))
{
- optind++;
+ d->optind++;
- if (first_nonopt != last_nonopt && last_nonopt != optind)
- exchange ((char **) argv);
- else if (first_nonopt == last_nonopt)
- first_nonopt = optind;
- last_nonopt = argc;
+ if (d->__first_nonopt != d->__last_nonopt
+ && d->__last_nonopt != d->optind)
+ exchange ((char **) argv, d);
+ else if (d->__first_nonopt == d->__last_nonopt)
+ d->__first_nonopt = d->optind;
+ d->__last_nonopt = argc;
- optind = argc;
+ d->optind = argc;
}
/* If we have done all the ARGV-elements, stop the scan
and back over any non-options that we skipped and permuted. */
- if (optind == argc)
+ if (d->optind == argc)
{
/* Set the next-arg-index to point at the non-options
that we previously skipped, so the caller will digest them. */
- if (first_nonopt != last_nonopt)
- optind = first_nonopt;
+ if (d->__first_nonopt != d->__last_nonopt)
+ d->optind = d->__first_nonopt;
return -1;
}
@@ -611,17 +489,17 @@ _getopt_internal (argc, argv, optstring, longopts, longind, long_only)
if (NONOPTION_P)
{
- if (ordering == REQUIRE_ORDER)
+ if (d->__ordering == REQUIRE_ORDER)
return -1;
- optarg = argv[optind++];
+ d->optarg = argv[d->optind++];
return 1;
}
/* We have found another option-ARGV-element.
Skip the initial punctuation. */
- nextchar = (argv[optind] + 1
- + (longopts != NULL && argv[optind][1] == '-'));
+ d->__nextchar = (argv[d->optind] + 1
+ + (longopts != NULL && argv[d->optind][1] == '-'));
}
/* Decode the current option-ARGV-element. */
@@ -640,8 +518,9 @@ _getopt_internal (argc, argv, optstring, longopts, longind, long_only)
This distinction seems to be the most useful approach. */
if (longopts != NULL
- && (argv[optind][1] == '-'
- || (long_only && (argv[optind][2] || !my_index (optstring, argv[optind][1])))))
+ && (argv[d->optind][1] == '-'
+ || (long_only && (argv[d->optind][2]
+ || !strchr (optstring, argv[d->optind][1])))))
{
char *nameend;
const struct option *p;
@@ -651,15 +530,15 @@ _getopt_internal (argc, argv, optstring, longopts, longind, long_only)
int indfound = -1;
int option_index;
- for (nameend = nextchar; *nameend && *nameend != '='; nameend++)
+ for (nameend = d->__nextchar; *nameend && *nameend != '='; nameend++)
/* Do nothing. */ ;
/* Test all long options for either exact match
or abbreviated matches. */
for (p = longopts, option_index = 0; p->name; p++, option_index++)
- if (!strncmp (p->name, nextchar, nameend - nextchar))
+ if (!strncmp (p->name, d->__nextchar, nameend - d->__nextchar))
{
- if ((unsigned int) (nameend - nextchar)
+ if ((unsigned int) (nameend - d->__nextchar)
== (unsigned int) strlen (p->name))
{
/* Exact match found. */
@@ -690,7 +569,7 @@ _getopt_internal (argc, argv, optstring, longopts, longind, long_only)
char *buf;
if (__asprintf (&buf, _("%s: option `%s' is ambiguous\n"),
- argv[0], argv[optind]) >= 0)
+ argv[0], argv[d->optind]) >= 0)
{
_IO_flockfile (stderr);
@@ -709,25 +588,25 @@ _getopt_internal (argc, argv, optstring, longopts, longind, long_only)
}
#else
fprintf (stderr, _("%s: option `%s' is ambiguous\n"),
- argv[0], argv[optind]);
+ argv[0], argv[d->optind]);
#endif
}
- nextchar += strlen (nextchar);
- optind++;
- optopt = 0;
+ d->__nextchar += strlen (d->__nextchar);
+ d->optind++;
+ d->optopt = 0;
return '?';
}
if (pfound != NULL)
{
option_index = indfound;
- optind++;
+ d->optind++;
if (*nameend)
{
/* Don't test has_arg with >, because some C compilers don't
allow it to be used on enums. */
if (pfound->has_arg)
- optarg = nameend + 1;
+ d->optarg = nameend + 1;
else
{
if (print_errors)
@@ -737,7 +616,7 @@ _getopt_internal (argc, argv, optstring, longopts, longind, long_only)
int n;
#endif
- if (argv[optind - 1][1] == '-')
+ if (argv[d->optind - 1][1] == '-')
{
/* --option */
#if defined _LIBC && defined USE_IN_LIBIO
@@ -756,12 +635,13 @@ _getopt_internal (argc, argv, optstring, longopts, longind, long_only)
#if defined _LIBC && defined USE_IN_LIBIO
n = __asprintf (&buf, _("\
%s: option `%c%s' doesn't allow an argument\n"),
- argv[0], argv[optind - 1][0],
+ argv[0], argv[d->optind - 1][0],
pfound->name);
#else
fprintf (stderr, _("\
%s: option `%c%s' doesn't allow an argument\n"),
- argv[0], argv[optind - 1][0], pfound->name);
+ argv[0], argv[d->optind - 1][0],
+ pfound->name);
#endif
}
@@ -787,16 +667,16 @@ _getopt_internal (argc, argv, optstring, longopts, longind, long_only)
#endif
}
- nextchar += strlen (nextchar);
+ d->__nextchar += strlen (d->__nextchar);
- optopt = pfound->val;
+ d->optopt = pfound->val;
return '?';
}
}
else if (pfound->has_arg == 1)
{
- if (optind < argc)
- optarg = argv[optind++];
+ if (d->optind < argc)
+ d->optarg = argv[d->optind++];
else
{
if (print_errors)
@@ -806,7 +686,7 @@ _getopt_internal (argc, argv, optstring, longopts, longind, long_only)
if (__asprintf (&buf, _("\
%s: option `%s' requires an argument\n"),
- argv[0], argv[optind - 1]) >= 0)
+ argv[0], argv[d->optind - 1]) >= 0)
{
_IO_flockfile (stderr);
@@ -827,15 +707,15 @@ _getopt_internal (argc, argv, optstring, longopts, longind, long_only)
#else
fprintf (stderr,
_("%s: option `%s' requires an argument\n"),
- argv[0], argv[optind - 1]);
+ argv[0], argv[d->optind - 1]);
#endif
}
- nextchar += strlen (nextchar);
- optopt = pfound->val;
+ d->__nextchar += strlen (d->__nextchar);
+ d->optopt = pfound->val;
return optstring[0] == ':' ? ':' : '?';
}
}
- nextchar += strlen (nextchar);
+ d->__nextchar += strlen (d->__nextchar);
if (longind != NULL)
*longind = option_index;
if (pfound->flag)
@@ -850,8 +730,8 @@ _getopt_internal (argc, argv, optstring, longopts, longind, long_only)
or the option starts with '--' or is not a valid short
option, then it's an error.
Otherwise interpret it as a short option. */
- if (!long_only || argv[optind][1] == '-'
- || my_index (optstring, *nextchar) == NULL)
+ if (!long_only || argv[d->optind][1] == '-'
+ || strchr (optstring, *d->__nextchar) == NULL)
{
if (print_errors)
{
@@ -860,15 +740,15 @@ _getopt_internal (argc, argv, optstring, longopts, longind, long_only)
int n;
#endif
- if (argv[optind][1] == '-')
+ if (argv[d->optind][1] == '-')
{
/* --option */
#if defined _LIBC && defined USE_IN_LIBIO
n = __asprintf (&buf, _("%s: unrecognized option `--%s'\n"),
- argv[0], nextchar);
+ argv[0], d->__nextchar);
#else
fprintf (stderr, _("%s: unrecognized option `--%s'\n"),
- argv[0], nextchar);
+ argv[0], d->__nextchar);
#endif
}
else
@@ -876,10 +756,10 @@ _getopt_internal (argc, argv, optstring, longopts, longind, long_only)
/* +option or -option */
#if defined _LIBC && defined USE_IN_LIBIO
n = __asprintf (&buf, _("%s: unrecognized option `%c%s'\n"),
- argv[0], argv[optind][0], nextchar);
+ argv[0], argv[d->optind][0], d->__nextchar);
#else
fprintf (stderr, _("%s: unrecognized option `%c%s'\n"),
- argv[0], argv[optind][0], nextchar);
+ argv[0], argv[d->optind][0], d->__nextchar);
#endif
}
@@ -903,9 +783,9 @@ _getopt_internal (argc, argv, optstring, longopts, longind, long_only)
}
#endif
}
- nextchar = (char *) "";
- optind++;
- optopt = 0;
+ d->__nextchar = (char *) "";
+ d->optind++;
+ d->optopt = 0;
return '?';
}
}
@@ -913,12 +793,12 @@ _getopt_internal (argc, argv, optstring, longopts, longind, long_only)
/* Look at and handle the next short option-character. */
{
- char c = *nextchar++;
- char *temp = my_index (optstring, c);
+ char c = *d->__nextchar++;
+ char *temp = strchr (optstring, c);
/* Increment `optind' when we start to process its last character. */
- if (*nextchar == '\0')
- ++optind;
+ if (*d->__nextchar == '\0')
+ ++d->optind;
if (temp == NULL || c == ':')
{
@@ -929,7 +809,7 @@ _getopt_internal (argc, argv, optstring, longopts, longind, long_only)
int n;
#endif
- if (posixly_correct)
+ if (d->__posixly_correct)
{
/* 1003.2 specifies the format of this message. */
#if defined _LIBC && defined USE_IN_LIBIO
@@ -969,7 +849,7 @@ _getopt_internal (argc, argv, optstring, longopts, longind, long_only)
}
#endif
}
- optopt = c;
+ d->optopt = c;
return '?';
}
/* Convenience. Treat POSIX -W foo same as long option --foo */
@@ -984,14 +864,14 @@ _getopt_internal (argc, argv, optstring, longopts, longind, long_only)
int option_index;
/* This is an option that requires an argument. */
- if (*nextchar != '\0')
+ if (*d->__nextchar != '\0')
{
- optarg = nextchar;
+ d->optarg = d->__nextchar;
/* If we end this ARGV-element by taking the rest as an arg,
we must advance to the next element now. */
- optind++;
+ d->optind++;
}
- else if (optind == argc)
+ else if (d->optind == argc)
{
if (print_errors)
{
@@ -1023,7 +903,7 @@ _getopt_internal (argc, argv, optstring, longopts, longind, long_only)
argv[0], c);
#endif
}
- optopt = c;
+ d->optopt = c;
if (optstring[0] == ':')
c = ':';
else
@@ -1031,22 +911,23 @@ _getopt_internal (argc, argv, optstring, longopts, longind, long_only)
return c;
}
else
- /* We already incremented `optind' once;
+ /* We already incremented `d->optind' once;
increment it again when taking next ARGV-elt as argument. */
- optarg = argv[optind++];
+ d->optarg = argv[d->optind++];
/* optarg is now the argument, see if it's in the
table of longopts. */
- for (nextchar = nameend = optarg; *nameend && *nameend != '='; nameend++)
+ for (d->__nextchar = nameend = d->optarg; *nameend && *nameend != '=';
+ nameend++)
/* Do nothing. */ ;
/* Test all long options for either exact match
or abbreviated matches. */
for (p = longopts, option_index = 0; p->name; p++, option_index++)
- if (!strncmp (p->name, nextchar, nameend - nextchar))
+ if (!strncmp (p->name, d->__nextchar, nameend - d->__nextchar))
{
- if ((unsigned int) (nameend - nextchar) == strlen (p->name))
+ if ((unsigned int) (nameend - d->__nextchar) == strlen (p->name))
{
/* Exact match found. */
pfound = p;
@@ -1072,7 +953,7 @@ _getopt_internal (argc, argv, optstring, longopts, longind, long_only)
char *buf;
if (__asprintf (&buf, _("%s: option `-W %s' is ambiguous\n"),
- argv[0], argv[optind]) >= 0)
+ argv[0], argv[d->optind]) >= 0)
{
_IO_flockfile (stderr);
@@ -1091,11 +972,11 @@ _getopt_internal (argc, argv, optstring, longopts, longind, long_only)
}
#else
fprintf (stderr, _("%s: option `-W %s' is ambiguous\n"),
- argv[0], argv[optind]);
+ argv[0], argv[d->optind]);
#endif
}
- nextchar += strlen (nextchar);
- optind++;
+ d->__nextchar += strlen (d->__nextchar);
+ d->optind++;
return '?';
}
if (pfound != NULL)
@@ -1106,7 +987,7 @@ _getopt_internal (argc, argv, optstring, longopts, longind, long_only)
/* Don't test has_arg with >, because some C compilers don't
allow it to be used on enums. */
if (pfound->has_arg)
- optarg = nameend + 1;
+ d->optarg = nameend + 1;
else
{
if (print_errors)
@@ -1141,14 +1022,14 @@ _getopt_internal (argc, argv, optstring, longopts, longind, long_only)
#endif
}
- nextchar += strlen (nextchar);
+ d->__nextchar += strlen (d->__nextchar);
return '?';
}
}
else if (pfound->has_arg == 1)
{
- if (optind < argc)
- optarg = argv[optind++];
+ if (d->optind < argc)
+ d->optarg = argv[d->optind++];
else
{
if (print_errors)
@@ -1158,7 +1039,7 @@ _getopt_internal (argc, argv, optstring, longopts, longind, long_only)
if (__asprintf (&buf, _("\
%s: option `%s' requires an argument\n"),
- argv[0], argv[optind - 1]) >= 0)
+ argv[0], argv[d->optind - 1]) >= 0)
{
_IO_flockfile (stderr);
@@ -1179,14 +1060,14 @@ _getopt_internal (argc, argv, optstring, longopts, longind, long_only)
#else
fprintf (stderr,
_("%s: option `%s' requires an argument\n"),
- argv[0], argv[optind - 1]);
+ argv[0], argv[d->optind - 1]);
#endif
}
- nextchar += strlen (nextchar);
+ d->__nextchar += strlen (d->__nextchar);
return optstring[0] == ':' ? ':' : '?';
}
}
- nextchar += strlen (nextchar);
+ d->__nextchar += strlen (d->__nextchar);
if (longind != NULL)
*longind = option_index;
if (pfound->flag)
@@ -1196,7 +1077,7 @@ _getopt_internal (argc, argv, optstring, longopts, longind, long_only)
}
return pfound->val;
}
- nextchar = NULL;
+ d->__nextchar = NULL;
return 'W'; /* Let the application handle it. */
}
if (temp[1] == ':')
@@ -1204,26 +1085,26 @@ _getopt_internal (argc, argv, optstring, longopts, longind, long_only)
if (temp[2] == ':')
{
/* This is an option that accepts an argument optionally. */
- if (*nextchar != '\0')
+ if (*d->__nextchar != '\0')
{
- optarg = nextchar;
- optind++;
+ d->optarg = d->__nextchar;
+ d->optind++;
}
else
- optarg = NULL;
- nextchar = NULL;
+ d->optarg = NULL;
+ d->__nextchar = NULL;
}
else
{
/* This is an option that requires an argument. */
- if (*nextchar != '\0')
+ if (*d->__nextchar != '\0')
{
- optarg = nextchar;
+ d->optarg = d->__nextchar;
/* If we end this ARGV-element by taking the rest as an arg,
we must advance to the next element now. */
- optind++;
+ d->optind++;
}
- else if (optind == argc)
+ else if (d->optind == argc)
{
if (print_errors)
{
@@ -1256,7 +1137,7 @@ _getopt_internal (argc, argv, optstring, longopts, longind, long_only)
argv[0], c);
#endif
}
- optopt = c;
+ d->optopt = c;
if (optstring[0] == ':')
c = ':';
else
@@ -1265,8 +1146,8 @@ _getopt_internal (argc, argv, optstring, longopts, longind, long_only)
else
/* We already incremented `optind' once;
increment it again when taking next ARGV-elt as argument. */
- optarg = argv[optind++];
- nextchar = NULL;
+ d->optarg = argv[d->optind++];
+ d->__nextchar = NULL;
}
}
return c;
@@ -1274,10 +1155,26 @@ _getopt_internal (argc, argv, optstring, longopts, longind, long_only)
}
int
-getopt (argc, argv, optstring)
- int argc;
- char *const *argv;
- const char *optstring;
+_getopt_internal (int argc, char *const *argv, const char *optstring,
+ const struct option *longopts, int *longind, int long_only)
+{
+ int result;
+
+ getopt_data.optind = optind;
+ getopt_data.opterr = opterr;
+
+ result = _getopt_internal_r (argc, argv, optstring, longopts,
+ longind, long_only, &getopt_data);
+
+ optind = getopt_data.optind;
+ optarg = getopt_data.optarg;
+ optopt = getopt_data.optopt;
+
+ return result;
+}
+
+int
+getopt (int argc, char *const *argv, const char *optstring)
{
return _getopt_internal (argc, argv, optstring,
(const struct option *) 0,
@@ -1293,9 +1190,7 @@ getopt (argc, argv, optstring)
the above definition of `getopt'. */
int
-main (argc, argv)
- int argc;
- char **argv;
+main (int argc, char **argv)
{
int c;
int digit_optind = 0;
diff --git a/getopt.h b/getopt.h
index bf6e5538..c3d63332 100644
--- a/getopt.h
+++ b/getopt.h
@@ -1,5 +1,6 @@
/* Declarations for getopt.
- Copyright (C) 1989-1994, 1996-1999,2001,2003 Free Software Foundation, Inc.
+ Copyright (C) 1989-1994,1996-1999,2001,2003,2004
+ Free Software Foundation, Inc.
This file is part of the GNU C Library.
The GNU C Library is free software; you can redistribute it and/or
@@ -14,8 +15,8 @@
You should have received a copy of the GNU Lesser General Public
License along with the GNU C Library; if not, write to the Free
- Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
- 02111-1307 USA. */
+ Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+ 02110-1301 USA. */
#ifndef _GETOPT_H
@@ -35,7 +36,10 @@
#endif
#ifndef __THROW
-# if defined __cplusplus /* ADR: nuke this: && __GNUC_PREREQ (2,8) */
+# ifndef __GNUC_PREREQ
+# define __GNUC_PREREQ(maj, min) (0)
+# endif
+# if defined __cplusplus && __GNUC_PREREQ (2,8)
# define __THROW throw ()
# else
# define __THROW
@@ -101,11 +105,7 @@ extern int optopt;
struct option
{
-# if (defined __STDC__ && __STDC__) || defined __cplusplus
const char *name;
-# else
- char *name;
-# endif
/* has_arg can't be an enum because some compilers complain about
type mismatches in all the code that assumes it is an int. */
int has_arg;
@@ -145,18 +145,17 @@ struct option
arguments to the option '\0'. This behavior is specific to the GNU
`getopt'. */
-#if (defined __STDC__ && __STDC__) || defined __cplusplus
-# ifdef __GNU_LIBRARY__
+#ifdef __GNU_LIBRARY__
/* Many other libraries have conflicting prototypes for getopt, with
differences in the consts, in stdlib.h. To avoid compilation
errors, only prototype getopt for the GNU C library. */
extern int getopt (int ___argc, char *const *___argv, const char *__shortopts)
__THROW;
-# else /* not __GNU_LIBRARY__ */
+#else /* not __GNU_LIBRARY__ */
extern int getopt ();
-# endif /* __GNU_LIBRARY__ */
+#endif /* __GNU_LIBRARY__ */
-# ifndef __need_getopt
+#ifndef __need_getopt
extern int getopt_long (int ___argc, char *const *___argv,
const char *__shortopts,
const struct option *__longopts, int *__longind)
@@ -166,21 +165,7 @@ extern int getopt_long_only (int ___argc, char *const *___argv,
const struct option *__longopts, int *__longind)
__THROW;
-/* Internal only. Users should not call this directly. */
-extern int _getopt_internal (int ___argc, char *const *___argv,
- const char *__shortopts,
- const struct option *__longopts, int *__longind,
- int __long_only);
-# endif
-#else /* not __STDC__ */
-extern int getopt ();
-# ifndef __need_getopt
-extern int getopt_long ();
-extern int getopt_long_only ();
-
-extern int _getopt_internal ();
-# endif
-#endif /* __STDC__ */
+#endif
#ifdef __cplusplus
}
diff --git a/getopt1.c b/getopt1.c
index ad06cc7f..4985ce0d 100644
--- a/getopt1.c
+++ b/getopt1.c
@@ -1,5 +1,5 @@
/* getopt_long and getopt_long_only entry points for GNU getopt.
- Copyright (C) 1987,88,89,90,91,92,93,94,96,97,98
+ Copyright (C) 1987,88,89,90,91,92,93,94,96,97,98,2004
Free Software Foundation, Inc.
This file is part of the GNU C Library.
@@ -15,8 +15,8 @@
You should have received a copy of the GNU Lesser General Public
License along with the GNU C Library; if not, write to the Free
- Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
- 02111-1307 USA. */
+ Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+ 02110-1301 USA. */
#ifdef HAVE_CONFIG_H
#include <config.h>
@@ -27,14 +27,7 @@
#else
# include "getopt.h"
#endif
-
-#if !defined __STDC__ || !__STDC__
-/* This is a separate conditional since some stdc systems
- reject `defined (const)'. */
-#ifndef const
-#define const
-#endif
-#endif
+#include "getopt_int.h"
#include <stdio.h>
@@ -68,36 +61,41 @@
#endif
int
-getopt_long (argc, argv, options, long_options, opt_index)
- int argc;
- char *const *argv;
- const char *options;
- const struct option *long_options;
- int *opt_index;
+getopt_long (int argc, char *const *argv, const char *options,
+ const struct option *long_options, int *opt_index)
{
return _getopt_internal (argc, argv, options, long_options, opt_index, 0);
}
+int
+_getopt_long_r (int argc, char *const *argv, const char *options,
+ const struct option *long_options, int *opt_index,
+ struct _getopt_data *d)
+{
+ return _getopt_internal_r (argc, argv, options, long_options, opt_index,
+ 0, d);
+}
+
/* Like getopt_long, but '-' as well as '--' can indicate a long option.
If an option that starts with '-' (not '--') doesn't match a long option,
but does match a short option, it is parsed as a short option
instead. */
int
-getopt_long_only (argc, argv, options, long_options, opt_index)
- int argc;
- char *const *argv;
- const char *options;
- const struct option *long_options;
- int *opt_index;
+getopt_long_only (int argc, char *const *argv, const char *options,
+ const struct option *long_options, int *opt_index)
{
return _getopt_internal (argc, argv, options, long_options, opt_index, 1);
}
-# ifdef _LIBC
-libc_hidden_def (getopt_long)
-libc_hidden_def (getopt_long_only)
-# endif
+int
+_getopt_long_only_r (int argc, char *const *argv, const char *options,
+ const struct option *long_options, int *opt_index,
+ struct _getopt_data *d)
+{
+ return _getopt_internal_r (argc, argv, options, long_options, opt_index,
+ 1, d);
+}
#endif /* Not ELIDE_CODE. */
@@ -106,9 +104,7 @@ libc_hidden_def (getopt_long_only)
#include <stdio.h>
int
-main (argc, argv)
- int argc;
- char **argv;
+main (int argc, char **argv)
{
int c;
int digit_optind = 0;
diff --git a/getopt_int.h b/getopt_int.h
new file mode 100644
index 00000000..fb445b5b
--- /dev/null
+++ b/getopt_int.h
@@ -0,0 +1,130 @@
+/* Internal declarations for getopt.
+ Copyright (C) 1989-1994,1996-1999,2001,2003,2004
+ Free Software Foundation, Inc.
+ This file is part of the GNU C Library.
+
+ The GNU C Library is free software; you can redistribute it and/or
+ modify it under the terms of the GNU Lesser General Public
+ License as published by the Free Software Foundation; either
+ version 2.1 of the License, or (at your option) any later version.
+
+ The GNU C Library 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
+ Lesser General Public License for more details.
+
+ You should have received a copy of the GNU Lesser General Public
+ License along with the GNU C Library; if not, write to the Free
+ Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+ 02110-1301 USA. */
+
+#ifndef _GETOPT_INT_H
+#define _GETOPT_INT_H 1
+
+extern int _getopt_internal (int ___argc, char *const *___argv,
+ const char *__shortopts,
+ const struct option *__longopts, int *__longind,
+ int __long_only);
+
+
+/* Reentrant versions which can handle parsing multiple argument
+ vectors at the same time. */
+
+/* Data type for reentrant functions. */
+struct _getopt_data
+{
+ /* These have exactly the same meaning as the corresponding global
+ variables, except that they are used for the reentrant
+ versions of getopt. */
+ int optind;
+ int opterr;
+ int optopt;
+ char *optarg;
+
+ /* Internal members. */
+
+ /* True if the internal members have been initialized. */
+ int __initialized;
+
+ /* The next char to be scanned in the option-element
+ in which the last option character we returned was found.
+ This allows us to pick up the scan where we left off.
+
+ If this is zero, or a null string, it means resume the scan
+ by advancing to the next ARGV-element. */
+ char *__nextchar;
+
+ /* Describe how to deal with options that follow non-option ARGV-elements.
+
+ If the caller did not specify anything,
+ the default is REQUIRE_ORDER if the environment variable
+ POSIXLY_CORRECT is defined, PERMUTE otherwise.
+
+ REQUIRE_ORDER means don't recognize them as options;
+ stop option processing when the first non-option is seen.
+ This is what Unix does.
+ This mode of operation is selected by either setting the environment
+ variable POSIXLY_CORRECT, or using `+' as the first character
+ of the list of option characters.
+
+ PERMUTE is the default. We permute the contents of ARGV as we
+ scan, so that eventually all the non-options are at the end.
+ This allows options to be given in any order, even with programs
+ that were not written to expect this.
+
+ RETURN_IN_ORDER is an option available to programs that were
+ written to expect options and other ARGV-elements in any order
+ and that care about the ordering of the two. We describe each
+ non-option ARGV-element as if it were the argument of an option
+ with character code 1. Using `-' as the first character of the
+ list of option characters selects this mode of operation.
+
+ The special argument `--' forces an end of option-scanning regardless
+ of the value of `ordering'. In the case of RETURN_IN_ORDER, only
+ `--' can cause `getopt' to return -1 with `optind' != ARGC. */
+
+ enum
+ {
+ REQUIRE_ORDER, PERMUTE, RETURN_IN_ORDER
+ } __ordering;
+
+ /* If the POSIXLY_CORRECT environment variable is set. */
+ int __posixly_correct;
+
+
+ /* Handle permutation of arguments. */
+
+ /* Describe the part of ARGV that contains non-options that have
+ been skipped. `first_nonopt' is the index in ARGV of the first
+ of them; `last_nonopt' is the index after the last of them. */
+
+ int __first_nonopt;
+ int __last_nonopt;
+
+#if defined _LIBC && defined USE_NONOPTION_FLAGS
+ int __nonoption_flags_max_len;
+ int __nonoption_flags_len;
+# endif
+};
+
+/* The initializer is necessary to set OPTIND and OPTERR to their
+ default values and to clear the initialization flag. */
+#define _GETOPT_DATA_INITIALIZER { 1, 1 }
+
+extern int _getopt_internal_r (int ___argc, char *const *___argv,
+ const char *__shortopts,
+ const struct option *__longopts, int *__longind,
+ int __long_only, struct _getopt_data *__data);
+
+extern int _getopt_long_r (int ___argc, char *const *___argv,
+ const char *__shortopts,
+ const struct option *__longopts, int *__longind,
+ struct _getopt_data *__data);
+
+extern int _getopt_long_only_r (int ___argc, char *const *___argv,
+ const char *__shortopts,
+ const struct option *__longopts,
+ int *__longind,
+ struct _getopt_data *__data);
+
+#endif /* getopt_int.h */
diff --git a/gettext.h b/gettext.h
index f7f28f71..84e57c53 100644
--- a/gettext.h
+++ b/gettext.h
@@ -1,5 +1,5 @@
/* Convenience header for conditional use of GNU <libintl.h>.
- Copyright (C) 1995-1998, 2000-2002 Free Software Foundation, Inc.
+ Copyright (C) 1995-1998, 2000-2002, 2005 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
@@ -13,7 +13,7 @@
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,
+ Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301,
USA. */
#ifndef _LIBGETTEXT_H
@@ -38,7 +38,10 @@
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)
+/* ADR: Include <locale.h> even if not ENABLE_NLS so can pay attention
+ * to locale number formats, etc.
+ */
+#if defined(__sun) || defined(HAVE_LOCALE_H)
# include <locale.h>
#endif
diff --git a/hard-locale.h b/hard-locale.h
new file mode 100644
index 00000000..0f4986ba
--- /dev/null
+++ b/hard-locale.h
@@ -0,0 +1,64 @@
+/* hard-locale.h -- Same as hard-locale.c.
+ *
+ * For gawk, put this in a header file, provides source code
+ * compatibility with GNU grep for dfa.c, so that dfa.c need
+ * not be continually modified by hand.
+ */
+/* hard-locale.c -- Determine whether a locale is hard.
+ Copyright 1997, 1998, 1999 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., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. */
+
+
+/* Return nonzero if the current CATEGORY locale is hard, i.e. if you
+ can't get away with assuming traditional C or POSIX behavior. */
+static int
+hard_locale (int category)
+{
+#if ! (defined ENABLE_NLS && HAVE_SETLOCALE)
+ return 0;
+#else
+
+ int hard = 1;
+ char const *p = setlocale (category, 0);
+
+ if (p)
+ {
+# if defined __GLIBC__ && __GLIBC__ >= 2
+ if (strcmp (p, "C") == 0 || strcmp (p, "POSIX") == 0)
+ hard = 0;
+# else
+ static ptr_t xmalloc PARAMS ((size_t n));
+
+ char *locale = xmalloc (strlen (p) + 1);
+ strcpy (locale, p);
+
+ /* Temporarily set the locale to the "C" and "POSIX" locales to
+ find their names, so that we can determine whether one or the
+ other is the caller's locale. */
+ if (((p = setlocale (category, "C")) && strcmp (p, locale) == 0)
+ || ((p = setlocale (category, "POSIX")) && strcmp (p, locale) == 0))
+ hard = 0;
+
+ /* Restore the caller's locale. */
+ setlocale (category, locale);
+ free(locale);
+# endif
+ }
+
+ return hard;
+
+#endif
+}
diff --git a/install-sh b/install-sh
index e4160c99..1a835340 100755
--- a/install-sh
+++ b/install-sh
@@ -1,7 +1,7 @@
#!/bin/sh
# install - install a program, script, or datafile
-scriptversion=2004-04-01.17
+scriptversion=2005-02-02.21
# This originates from X11R5 (mit/util/scripts/install.sh), which was
# later released in X11R6 (xc/config/util/install.sh) with the
@@ -58,9 +58,6 @@ stripprog="${STRIPPROG-strip}"
rmprog="${RMPROG-rm}"
mkdirprog="${MKDIRPROG-mkdir}"
-transformbasename=
-transform_arg=
-instcmd="$mvprog"
chmodcmd="$chmodprog 0755"
chowncmd=
chgrpcmd=
@@ -70,23 +67,27 @@ mvcmd="$mvprog"
src=
dst=
dir_arg=
+dstarg=
+no_target_directory=
-usage="Usage: $0 [OPTION]... SRCFILE DSTFILE
+usage="Usage: $0 [OPTION]... [-T] SRCFILE DSTFILE
or: $0 [OPTION]... SRCFILES... DIRECTORY
- or: $0 -d DIRECTORIES...
+ or: $0 [OPTION]... -t DIRECTORY SRCFILES...
+ or: $0 [OPTION]... -d DIRECTORIES...
-In the first form, install SRCFILE to DSTFILE, removing SRCFILE by default.
-In the second, create the directory path DIR.
+In the 1st form, copy SRCFILE to DSTFILE.
+In the 2nd and 3rd, copy all SRCFILES to DIRECTORY.
+In the 4th, create DIRECTORIES.
Options:
--b=TRANSFORMBASENAME
--c copy source (using $cpprog) instead of moving (using $mvprog).
+-c (ignored)
-d create directories instead of installing files.
--g GROUP $chgrp installed files to GROUP.
--m MODE $chmod installed files to MODE.
--o USER $chown installed files to USER.
--s strip installed files (using $stripprog).
--t=TRANSFORM
+-g GROUP $chgrpprog installed files to GROUP.
+-m MODE $chmodprog installed files to MODE.
+-o USER $chownprog installed files to USER.
+-s $stripprog installed files.
+-t DIRECTORY install into DIRECTORY.
+-T report an error if DSTFILE is a directory.
--help display this help and exit.
--version display version info and exit.
@@ -96,12 +97,7 @@ Environment variables override the default commands:
while test -n "$1"; do
case $1 in
- -b=*) transformbasename=`echo $1 | sed 's/-b=//'`
- shift
- continue;;
-
- -c) instcmd=$cpprog
- shift
+ -c) shift
continue;;
-d) dir_arg=true
@@ -113,7 +109,7 @@ while test -n "$1"; do
shift
continue;;
- --help) echo "$usage"; exit 0;;
+ --help) echo "$usage"; exit $?;;
-m) chmodcmd="$chmodprog $2"
shift
@@ -129,14 +125,20 @@ while test -n "$1"; do
shift
continue;;
- -t=*) transformarg=`echo $1 | sed 's/-t=//'`
- shift
- continue;;
+ -t) dstarg=$2
+ shift
+ shift
+ continue;;
- --version) echo "$0 $scriptversion"; exit 0;;
+ -T) no_target_directory=true
+ shift
+ continue;;
+
+ --version) echo "$0 $scriptversion"; exit $?;;
*) # When -d is used, all remaining arguments are directories to create.
- test -n "$dir_arg" && break
+ # When -t is used, the destination is already specified.
+ test -n "$dir_arg$dstarg" && break
# Otherwise, the last argument is the destination. Remove it from $@.
for arg
do
@@ -174,13 +176,13 @@ do
src=
if test -d "$dst"; then
- instcmd=:
+ mkdircmd=:
chmodcmd=
else
- instcmd=$mkdirprog
+ mkdircmd=$mkdirprog
fi
else
- # Waiting for this to be detected by the "$instcmd $src $dsttmp" command
+ # Waiting for this to be detected by the "$cpprog $src $dsttmp" command
# might cause directories to be created, which would be especially bad
# if $src (and thus $dsttmp) contains '*'.
if test ! -f "$src" && test ! -d "$src"; then
@@ -202,12 +204,16 @@ do
# If destination is a directory, append the input filename; won't work
# if double slashes aren't ignored.
if test -d "$dst"; then
+ if test -n "$no_target_directory"; then
+ echo "$0: $dstarg: Is a directory" >&2
+ exit 1
+ fi
dst=$dst/`basename "$src"`
fi
fi
# This sed command emulates the dirname command.
- dstdir=`echo "$dst" | sed -e 's,[^/]*$,,;s,/$,,;s,^$,.,'`
+ dstdir=`echo "$dst" | sed -e 's,/*$,,;s,[^/]*$,,;s,/*$,,;s,^$,.,'`
# Make sure that the destination directory exists.
@@ -220,7 +226,8 @@ do
oIFS=$IFS
# Some sh's can't handle IFS=/ for some reason.
IFS='%'
- set - `echo "$dstdir" | sed -e 's@/@%@g' -e 's@^%@/@'`
+ set x `echo "$dstdir" | sed -e 's@/@%@g' -e 's@^%@/@'`
+ shift
IFS=$oIFS
pathcomp=
@@ -229,51 +236,42 @@ do
pathcomp=$pathcomp$1
shift
if test ! -d "$pathcomp"; then
- $mkdirprog "$pathcomp" || lasterr=$?
+ $mkdirprog "$pathcomp"
# mkdir can fail with a `File exist' error in case several
# install-sh are creating the directory concurrently. This
# is OK.
- test ! -d "$pathcomp" && { (exit ${lasterr-1}); exit; }
+ test -d "$pathcomp" || exit
fi
pathcomp=$pathcomp/
done
fi
if test -n "$dir_arg"; then
- $doit $instcmd "$dst" \
+ $doit $mkdircmd "$dst" \
&& { test -z "$chowncmd" || $doit $chowncmd "$dst"; } \
&& { test -z "$chgrpcmd" || $doit $chgrpcmd "$dst"; } \
&& { test -z "$stripcmd" || $doit $stripcmd "$dst"; } \
&& { test -z "$chmodcmd" || $doit $chmodcmd "$dst"; }
else
- # If we're going to rename the final executable, determine the name now.
- if test -z "$transformarg"; then
- dstfile=`basename "$dst"`
- else
- dstfile=`basename "$dst" $transformbasename \
- | sed $transformarg`$transformbasename
- fi
-
- # don't allow the sed command to completely eliminate the filename.
- test -z "$dstfile" && dstfile=`basename "$dst"`
+ dstfile=`basename "$dst"`
# Make a couple of temp file names in the proper directory.
dsttmp=$dstdir/_inst.$$_
rmtmp=$dstdir/_rm.$$_
# Trap to clean up those temp files at exit.
- trap 'status=$?; rm -f "$dsttmp" "$rmtmp" && exit $status' 0
+ trap 'ret=$?; rm -f "$dsttmp" "$rmtmp" && exit $ret' 0
trap '(exit $?); exit' 1 2 13 15
- # Move or copy the file name to the temp name
- $doit $instcmd "$src" "$dsttmp" &&
+ # Copy the file name to the temp name.
+ $doit $cpprog "$src" "$dsttmp" &&
# and set any options; do chmod last to preserve setuid bits.
#
# If any of these fail, we abort the whole thing. If we want to
# ignore errors from any of these, just make sure not to ignore
- # errors from the above "$doit $instcmd $src $dsttmp" command.
+ # errors from the above "$doit $cpprog $src $dsttmp" command.
#
{ test -z "$chowncmd" || $doit $chowncmd "$dsttmp"; } \
&& { test -z "$chgrpcmd" || $doit $chgrpcmd "$dsttmp"; } \
@@ -298,7 +296,7 @@ do
|| $doit $mvcmd -f "$dstdir/$dstfile" "$rmtmp" 2>/dev/null \
|| {
echo "$0: cannot unlink or rename $dstdir/$dstfile" >&2
- (exit 1); exit
+ (exit 1); exit 1
}
else
:
@@ -309,12 +307,12 @@ do
$doit $mvcmd "$dsttmp" "$dstdir/$dstfile"
}
}
- fi || { (exit 1); exit; }
+ fi || { (exit 1); exit 1; }
done
# The final little trick to "correctly" pass the exit status to the exit trap.
{
- (exit 0); exit
+ (exit 0); exit 0
}
# Local variables:
diff --git a/intl/ChangeLog b/intl/ChangeLog
deleted file mode 100644
index 75129192..00000000
--- a/intl/ChangeLog
+++ /dev/null
@@ -1,4 +0,0 @@
-2004-01-29 GNU <bug-gnu-gettext@gnu.org>
-
- * Version 0.14.1 released.
-
diff --git a/intl/Makefile.in b/intl/Makefile.in
deleted file mode 100644
index 05f15329..00000000
--- a/intl/Makefile.in
+++ /dev/null
@@ -1,493 +0,0 @@
-# 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 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.
-
-PACKAGE = @PACKAGE@
-VERSION = @VERSION@
-
-SHELL = /bin/sh
-
-srcdir = @srcdir@
-top_srcdir = @top_srcdir@
-top_builddir = ..
-VPATH = $(srcdir)
-
-prefix = @prefix@
-exec_prefix = @exec_prefix@
-transform = @program_transform_name@
-libdir = @libdir@
-includedir = @includedir@
-datadir = @datadir@
-localedir = $(datadir)/locale
-gettextsrcdir = $(datadir)/gettext/intl
-aliaspath = $(localedir)
-subdir = intl
-
-INSTALL = @INSTALL@
-INSTALL_DATA = @INSTALL_DATA@
-MKINSTALLDIRS = @MKINSTALLDIRS@
-mkinstalldirs = $(SHELL) $(MKINSTALLDIRS)
-
-l = @INTL_LIBTOOL_SUFFIX_PREFIX@
-
-AR = ar
-CC = @CC@
-LIBTOOL = @LIBTOOL@
-RANLIB = @RANLIB@
-YACC = @INTLBISON@ -y -d
-YFLAGS = --name-prefix=__gettext
-
-DEFS = -DLOCALEDIR=\"$(localedir)\" -DLOCALE_ALIAS_PATH=\"$(aliaspath)\" \
--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 = \
- 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 = 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=7
-LTV_REVISION=0
-LTV_AGE=4
-
-.SUFFIXES:
-.SUFFIXES: .c .y .o .lo .sin .sed
-
-.c.o:
- $(COMPILE) $<
-
-.y.c:
- $(YACC) $(YFLAGS) --output $@ $<
- rm -f $*.h
-
-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
-
-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
-
-INCLUDES = -I. -I$(srcdir) -I..
-
-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 libgnuintl.h libintl.h
-
-charset.alias: $(srcdir)/config.charset
- $(SHELL) $(srcdir)/config.charset '@host@' > t-$@
- mv t-$@ $@
-
-check: all
-
-# 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.
-# If you want to use the one which comes with this version of the
-# package, you have to use `configure --with-included-gettext'.
-install: install-exec install-data
-install-exec: all
- if { test "$(PACKAGE)" = "gettext-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 "$(PACKAGE)" = "gettext-tools" \
- && test '@USE_INCLUDED_LIBINTL@' = no; then \
- $(mkinstalldirs) $(DESTDIR)$(libdir); \
- $(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; \
- 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 \
- || orig=$(srcdir)/locale.alias; \
- temp=$(DESTDIR)$(localedir)/t-locale.alias; \
- dest=$(DESTDIR)$(localedir)/locale.alias; \
- sed -f ref-add.sed $$orig > $$temp; \
- $(INSTALL_DATA) $$temp $$dest; \
- rm -f $$temp; \
- else \
- : ; \
- fi
-install-data: all
- if test "$(PACKAGE)" = "gettext-tools"; then \
- $(mkinstalldirs) $(DESTDIR)$(gettextsrcdir); \
- $(INSTALL_DATA) VERSION $(DESTDIR)$(gettextsrcdir)/VERSION; \
- $(INSTALL_DATA) ChangeLog.inst $(DESTDIR)$(gettextsrcdir)/ChangeLog; \
- 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; \
- done; \
- else \
- : ; \
- 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-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; \
- dest=$(DESTDIR)$(libdir)/charset.alias; \
- sed -f ref-del.sed $$dest > $$temp; \
- if grep '^# Packages using this file: $$' $$temp > /dev/null; then \
- rm -f $$dest; \
- else \
- $(INSTALL_DATA) $$temp $$dest; \
- fi; \
- rm -f $$temp; \
- fi; \
- if test -f $(DESTDIR)$(localedir)/locale.alias; then \
- temp=$(DESTDIR)$(localedir)/t-locale.alias; \
- dest=$(DESTDIR)$(localedir)/locale.alias; \
- sed -f ref-del.sed $$dest > $$temp; \
- if grep '^# Packages using this file: $$' $$temp > /dev/null; then \
- rm -f $$dest; \
- else \
- $(INSTALL_DATA) $$temp $$dest; \
- fi; \
- rm -f $$temp; \
- fi; \
- else \
- : ; \
- fi
- if test "$(PACKAGE)" = "gettext-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 ps pdf html:
-
-$(OBJECTS): ../config.h libgnuintl.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)
- here=`pwd`; cd $(srcdir) && mkid -f$$here/ID $(HEADERS) $(SOURCES)
-
-
-mostlyclean:
- 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-runtime" || test "$(PACKAGE)" = "gettext-tools"; then \
- rm -f ChangeLog.inst $(DISTFILES.normal); \
- else \
- : ; \
- fi
-
-maintainer-clean: distclean
- @echo "This command is intended for maintainers to use;"
- @echo "it deletes files that may require special tools to rebuild."
-
-
-# GNU gettext needs not contain the file `VERSION' but contains some
-# other files which should not be distributed in other packages.
-distdir = ../$(PACKAGE)-$(VERSION)/$(subdir)
-dist distdir: Makefile
- if test "$(PACKAGE)" = "gettext-tools"; then \
- : ; \
- else \
- 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: $(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.
-.NOEXPORT:
diff --git a/intl/VERSION b/intl/VERSION
deleted file mode 100644
index b4b846ca..00000000
--- a/intl/VERSION
+++ /dev/null
@@ -1 +0,0 @@
-GNU gettext library from gettext-0.14.1
diff --git a/intl/bindtextdom.c b/intl/bindtextdom.c
deleted file mode 100644
index dcdc4008..00000000
--- a/intl/bindtextdom.c
+++ /dev/null
@@ -1,363 +0,0 @@
-/* Implementation of the bindtextdomain(3) function
- 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 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 <stddef.h>
-#include <stdlib.h>
-#include <string.h>
-
-#ifdef _LIBC
-# include <libintl.h>
-#else
-# include "libgnuintl.h"
-#endif
-#include "gettextP.h"
-
-#ifdef _LIBC
-/* We have to handle multi-threaded applications. */
-# include <bits/libc-lock.h>
-#else
-/* Provide dummy implementation if this is outside glibc. */
-# define __libc_rwlock_define(CLASS, NAME)
-# define __libc_rwlock_wrlock(NAME)
-# define __libc_rwlock_unlock(NAME)
-#endif
-
-/* The internal variables in the standalone libintl.a must have different
- names than the internal variables in GNU libc, otherwise programs
- using libintl.a cannot be linked statically. */
-#if !defined _LIBC
-# define _nl_default_dirname 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>. */
-#ifndef offsetof
-# define offsetof(type,ident) ((size_t)&(((type*)0)->ident))
-#endif
-
-/* @@ end of prolog @@ */
-
-/* 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 attribute_hidden)
-
-
-/* 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 BINDTEXTDOMAIN __bindtextdomain
-# define BIND_TEXTDOMAIN_CODESET __bind_textdomain_codeset
-# ifndef strdup
-# define strdup(str) __strdup (str)
-# endif
-#else
-# define BINDTEXTDOMAIN libintl_bindtextdomain
-# define BIND_TEXTDOMAIN_CODESET libintl_bind_textdomain_codeset
-#endif
-
-/* Specifies the directory name *DIRNAMEP and the output codeset *CODESETP
- to be used for the DOMAINNAME message catalog.
- If *DIRNAMEP or *CODESETP is NULL, the corresponding attribute is not
- modified, only the current value is returned.
- If DIRNAMEP or CODESETP is NULL, the corresponding attribute is neither
- modified nor returned. */
-static void
-set_binding_values (const char *domainname,
- const char **dirnamep, const char **codesetp)
-{
- struct binding *binding;
- int modified;
-
- /* Some sanity checks. */
- if (domainname == NULL || domainname[0] == '\0')
- {
- if (dirnamep)
- *dirnamep = NULL;
- if (codesetp)
- *codesetp = NULL;
- return;
- }
-
- __libc_rwlock_wrlock (_nl_state_lock);
-
- modified = 0;
-
- for (binding = _nl_domain_bindings; binding != NULL; binding = binding->next)
- {
- int compare = strcmp (domainname, binding->domainname);
- if (compare == 0)
- /* We found it! */
- break;
- if (compare < 0)
- {
- /* It is not in the list. */
- binding = NULL;
- break;
- }
- }
-
- if (binding != NULL)
- {
- if (dirnamep)
- {
- const char *dirname = *dirnamep;
-
- if (dirname == NULL)
- /* The current binding has be to returned. */
- *dirnamep = binding->dirname;
- else
- {
- /* The domain is already bound. If the new value and the old
- one are equal we simply do nothing. Otherwise replace the
- old binding. */
- char *result = binding->dirname;
- if (strcmp (dirname, result) != 0)
- {
- if (strcmp (dirname, INTUSE(_nl_default_dirname)) == 0)
- result = (char *) INTUSE(_nl_default_dirname);
- else
- {
-#if defined _LIBC || defined HAVE_STRDUP
- result = strdup (dirname);
-#else
- size_t len = strlen (dirname) + 1;
- result = (char *) malloc (len);
- if (__builtin_expect (result != NULL, 1))
- memcpy (result, dirname, len);
-#endif
- }
-
- if (__builtin_expect (result != NULL, 1))
- {
- if (binding->dirname != INTUSE(_nl_default_dirname))
- free (binding->dirname);
-
- binding->dirname = result;
- modified = 1;
- }
- }
- *dirnamep = result;
- }
- }
-
- if (codesetp)
- {
- const char *codeset = *codesetp;
-
- if (codeset == NULL)
- /* The current binding has be to returned. */
- *codesetp = binding->codeset;
- else
- {
- /* The domain is already bound. If the new value and the old
- one are equal we simply do nothing. Otherwise replace the
- old binding. */
- char *result = binding->codeset;
- if (result == NULL || strcmp (codeset, result) != 0)
- {
-#if defined _LIBC || defined HAVE_STRDUP
- result = strdup (codeset);
-#else
- size_t len = strlen (codeset) + 1;
- result = (char *) malloc (len);
- if (__builtin_expect (result != NULL, 1))
- memcpy (result, codeset, len);
-#endif
-
- if (__builtin_expect (result != NULL, 1))
- {
- if (binding->codeset != NULL)
- free (binding->codeset);
-
- binding->codeset = result;
- binding->codeset_cntr++;
- modified = 1;
- }
- }
- *codesetp = result;
- }
- }
- }
- else if ((dirnamep == NULL || *dirnamep == NULL)
- && (codesetp == NULL || *codesetp == NULL))
- {
- /* Simply return the default values. */
- if (dirnamep)
- *dirnamep = INTUSE(_nl_default_dirname);
- if (codesetp)
- *codesetp = NULL;
- }
- else
- {
- /* We have to create a new binding. */
- size_t len = strlen (domainname) + 1;
- struct binding *new_binding =
- (struct binding *) malloc (offsetof (struct binding, domainname) + len);
-
- if (__builtin_expect (new_binding == NULL, 0))
- goto failed;
-
- memcpy (new_binding->domainname, domainname, len);
-
- if (dirnamep)
- {
- const char *dirname = *dirnamep;
-
- if (dirname == NULL)
- /* The default value. */
- dirname = INTUSE(_nl_default_dirname);
- else
- {
- if (strcmp (dirname, INTUSE(_nl_default_dirname)) == 0)
- dirname = INTUSE(_nl_default_dirname);
- else
- {
- char *result;
-#if defined _LIBC || defined HAVE_STRDUP
- result = strdup (dirname);
- if (__builtin_expect (result == NULL, 0))
- goto failed_dirname;
-#else
- size_t len = strlen (dirname) + 1;
- result = (char *) malloc (len);
- if (__builtin_expect (result == NULL, 0))
- goto failed_dirname;
- memcpy (result, dirname, len);
-#endif
- dirname = result;
- }
- }
- *dirnamep = dirname;
- new_binding->dirname = (char *) dirname;
- }
- else
- /* The default value. */
- new_binding->dirname = (char *) INTUSE(_nl_default_dirname);
-
- new_binding->codeset_cntr = 0;
-
- if (codesetp)
- {
- const char *codeset = *codesetp;
-
- if (codeset != NULL)
- {
- char *result;
-
-#if defined _LIBC || defined HAVE_STRDUP
- result = strdup (codeset);
- if (__builtin_expect (result == NULL, 0))
- goto failed_codeset;
-#else
- size_t len = strlen (codeset) + 1;
- result = (char *) malloc (len);
- if (__builtin_expect (result == NULL, 0))
- goto failed_codeset;
- memcpy (result, codeset, len);
-#endif
- codeset = result;
- new_binding->codeset_cntr++;
- }
- *codesetp = codeset;
- new_binding->codeset = (char *) codeset;
- }
- else
- new_binding->codeset = NULL;
-
- /* Now enqueue it. */
- if (_nl_domain_bindings == NULL
- || strcmp (domainname, _nl_domain_bindings->domainname) < 0)
- {
- new_binding->next = _nl_domain_bindings;
- _nl_domain_bindings = new_binding;
- }
- else
- {
- binding = _nl_domain_bindings;
- while (binding->next != NULL
- && strcmp (domainname, binding->next->domainname) > 0)
- binding = binding->next;
-
- new_binding->next = binding->next;
- binding->next = new_binding;
- }
-
- modified = 1;
-
- /* Here we deal with memory allocation failures. */
- if (0)
- {
- failed_codeset:
- if (new_binding->dirname != INTUSE(_nl_default_dirname))
- free (new_binding->dirname);
- failed_dirname:
- free (new_binding);
- failed:
- if (dirnamep)
- *dirnamep = NULL;
- if (codesetp)
- *codesetp = NULL;
- }
- }
-
- /* If we modified any binding, we flush the caches. */
- if (modified)
- ++_nl_msg_cat_cntr;
-
- __libc_rwlock_unlock (_nl_state_lock);
-}
-
-/* Specify that the DOMAINNAME message catalog will be found
- in DIRNAME rather than in the system locale data base. */
-char *
-BINDTEXTDOMAIN (const char *domainname, const char *dirname)
-{
- set_binding_values (domainname, &dirname, NULL);
- return (char *) dirname;
-}
-
-/* Specify the character encoding in which the messages from the
- DOMAINNAME message catalog will be returned. */
-char *
-BIND_TEXTDOMAIN_CODESET (const char *domainname, const char *codeset)
-{
- set_binding_values (domainname, NULL, &codeset);
- return (char *) codeset;
-}
-
-#ifdef _LIBC
-/* Aliases for function names in GNU C Library. */
-weak_alias (__bindtextdomain, bindtextdomain);
-weak_alias (__bind_textdomain_codeset, bind_textdomain_codeset);
-#endif
diff --git a/intl/config.charset b/intl/config.charset
deleted file mode 100755
index 43d45fb7..00000000
--- a/intl/config.charset
+++ /dev/null
@@ -1,608 +0,0 @@
-#! /bin/sh
-# Output a system dependent table of character encoding aliases.
-#
-# Copyright (C) 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.
-#
-# The table consists of lines of the form
-# ALIAS CANONICAL
-#
-# ALIAS is the (system dependent) result of "nl_langinfo (CODESET)".
-# ALIAS is compared in a case sensitive way.
-#
-# CANONICAL is the GNU canonical name for this character encoding.
-# It must be an encoding supported by libiconv. Support by GNU libc is
-# also desirable. CANONICAL is case insensitive. Usually an upper case
-# MIME charset name is preferred.
-# The current list of GNU canonical charset names is as follows.
-#
-# name MIME? used by which systems
-# ASCII, ANSI_X3.4-1968 glibc solaris freebsd darwin
-# ISO-8859-1 Y glibc aix hpux irix osf solaris freebsd darwin
-# ISO-8859-2 Y glibc aix hpux irix osf solaris freebsd darwin
-# ISO-8859-3 Y glibc solaris
-# ISO-8859-4 Y osf solaris freebsd darwin
-# ISO-8859-5 Y glibc aix hpux irix osf solaris freebsd darwin
-# ISO-8859-6 Y glibc aix hpux solaris
-# ISO-8859-7 Y glibc aix hpux irix osf solaris
-# ISO-8859-8 Y glibc aix hpux osf solaris
-# ISO-8859-9 Y glibc aix hpux irix osf solaris
-# ISO-8859-13 glibc
-# ISO-8859-14 glibc
-# ISO-8859-15 glibc aix osf solaris freebsd
-# KOI8-R Y glibc solaris freebsd darwin
-# KOI8-U Y glibc freebsd darwin
-# KOI8-T glibc
-# CP437 dos
-# CP775 dos
-# CP850 aix osf dos
-# CP852 dos
-# CP855 dos
-# CP856 aix
-# CP857 dos
-# CP861 dos
-# CP862 dos
-# CP864 dos
-# CP865 dos
-# CP866 freebsd darwin dos
-# CP869 dos
-# CP874 woe32 dos
-# CP922 aix
-# CP932 aix woe32 dos
-# CP943 aix
-# CP949 osf woe32 dos
-# CP950 woe32 dos
-# CP1046 aix
-# CP1124 aix
-# CP1125 dos
-# CP1129 aix
-# CP1250 woe32
-# CP1251 glibc solaris darwin woe32
-# CP1252 aix woe32
-# CP1253 woe32
-# CP1254 woe32
-# CP1255 glibc woe32
-# CP1256 woe32
-# CP1257 woe32
-# GB2312 Y glibc aix hpux irix solaris freebsd darwin
-# EUC-JP Y glibc aix hpux irix osf solaris freebsd darwin
-# EUC-KR Y glibc aix hpux irix osf solaris freebsd darwin
-# EUC-TW glibc aix hpux irix osf solaris
-# BIG5 Y glibc aix hpux osf solaris freebsd darwin
-# BIG5-HKSCS glibc solaris
-# GBK glibc aix osf solaris woe32 dos
-# GB18030 glibc solaris
-# SHIFT_JIS Y hpux osf solaris freebsd darwin
-# JOHAB glibc solaris woe32
-# TIS-620 glibc aix hpux osf solaris
-# VISCII Y glibc
-# TCVN5712-1 glibc
-# GEORGIAN-PS glibc
-# HP-ROMAN8 hpux
-# HP-ARABIC8 hpux
-# HP-GREEK8 hpux
-# HP-HEBREW8 hpux
-# HP-TURKISH8 hpux
-# HP-KANA8 hpux
-# DEC-KANJI osf
-# DEC-HANYU osf
-# UTF-8 Y glibc aix hpux osf solaris
-#
-# Note: Names which are not marked as being a MIME name should not be used in
-# Internet protocols for information interchange (mail, news, etc.).
-#
-# Note: ASCII and ANSI_X3.4-1968 are synonymous canonical names. Applications
-# must understand both names and treat them as equivalent.
-#
-# The first argument passed to this file is the canonical host specification,
-# CPU_TYPE-MANUFACTURER-OPERATING_SYSTEM
-# or
-# CPU_TYPE-MANUFACTURER-KERNEL-OPERATING_SYSTEM
-
-host="$1"
-os=`echo "$host" | sed -e 's/^[^-]*-[^-]*-\(.*\)$/\1/'`
-echo "# This file contains a table of character encoding aliases,"
-echo "# suitable for operating system '${os}'."
-echo "# It was automatically generated from config.charset."
-# List of references, updated during installation:
-echo "# Packages using this file: "
-case "$os" in
- linux-gnulibc1*)
- # Linux libc5 doesn't have nl_langinfo(CODESET); therefore
- # localcharset.c falls back to using the full locale name
- # from the environment variables.
- echo "C ASCII"
- echo "POSIX ASCII"
- for l in af af_ZA ca ca_ES da da_DK de de_AT de_BE de_CH de_DE de_LU \
- en en_AU en_BW en_CA en_DK en_GB en_IE en_NZ en_US en_ZA \
- en_ZW es es_AR es_BO es_CL es_CO es_DO es_EC es_ES es_GT \
- es_HN es_MX es_PA es_PE es_PY es_SV es_US es_UY es_VE et \
- et_EE eu eu_ES fi fi_FI fo fo_FO fr fr_BE fr_CA fr_CH fr_FR \
- fr_LU ga ga_IE gl gl_ES id id_ID in in_ID is is_IS it it_CH \
- it_IT kl kl_GL nl nl_BE nl_NL no no_NO pt pt_BR pt_PT sv \
- sv_FI sv_SE; do
- echo "$l ISO-8859-1"
- echo "$l.iso-8859-1 ISO-8859-1"
- echo "$l.iso-8859-15 ISO-8859-15"
- echo "$l.iso-8859-15@euro ISO-8859-15"
- echo "$l@euro ISO-8859-15"
- echo "$l.cp-437 CP437"
- echo "$l.cp-850 CP850"
- echo "$l.cp-1252 CP1252"
- echo "$l.cp-1252@euro CP1252"
- #echo "$l.atari-st ATARI-ST" # not a commonly used encoding
- echo "$l.utf-8 UTF-8"
- echo "$l.utf-8@euro UTF-8"
- done
- for l in cs cs_CZ hr hr_HR hu hu_HU pl pl_PL ro ro_RO sk sk_SK sl \
- sl_SI sr sr_CS sr_YU; do
- echo "$l ISO-8859-2"
- echo "$l.iso-8859-2 ISO-8859-2"
- echo "$l.cp-852 CP852"
- echo "$l.cp-1250 CP1250"
- echo "$l.utf-8 UTF-8"
- done
- for l in mk mk_MK ru ru_RU; do
- echo "$l ISO-8859-5"
- echo "$l.iso-8859-5 ISO-8859-5"
- echo "$l.koi8-r KOI8-R"
- echo "$l.cp-866 CP866"
- echo "$l.cp-1251 CP1251"
- echo "$l.utf-8 UTF-8"
- done
- for l in ar ar_SA; do
- echo "$l ISO-8859-6"
- echo "$l.iso-8859-6 ISO-8859-6"
- echo "$l.cp-864 CP864"
- #echo "$l.cp-868 CP868" # not a commonly used encoding
- echo "$l.cp-1256 CP1256"
- echo "$l.utf-8 UTF-8"
- done
- for l in el el_GR gr gr_GR; do
- echo "$l ISO-8859-7"
- echo "$l.iso-8859-7 ISO-8859-7"
- echo "$l.cp-869 CP869"
- echo "$l.cp-1253 CP1253"
- echo "$l.cp-1253@euro CP1253"
- echo "$l.utf-8 UTF-8"
- echo "$l.utf-8@euro UTF-8"
- done
- for l in he he_IL iw iw_IL; do
- echo "$l ISO-8859-8"
- echo "$l.iso-8859-8 ISO-8859-8"
- echo "$l.cp-862 CP862"
- echo "$l.cp-1255 CP1255"
- echo "$l.utf-8 UTF-8"
- done
- for l in tr tr_TR; do
- echo "$l ISO-8859-9"
- echo "$l.iso-8859-9 ISO-8859-9"
- echo "$l.cp-857 CP857"
- echo "$l.cp-1254 CP1254"
- echo "$l.utf-8 UTF-8"
- done
- for l in lt lt_LT lv lv_LV; do
- #echo "$l BALTIC" # not a commonly used encoding, wrong encoding name
- echo "$l ISO-8859-13"
- done
- for l in ru_UA uk uk_UA; do
- echo "$l KOI8-U"
- done
- for l in zh zh_CN; do
- #echo "$l GB_2312-80" # not a commonly used encoding, wrong encoding name
- echo "$l GB2312"
- done
- for l in ja ja_JP ja_JP.EUC; do
- echo "$l EUC-JP"
- done
- for l in ko ko_KR; do
- echo "$l EUC-KR"
- done
- for l in th th_TH; do
- echo "$l TIS-620"
- done
- for l in fa fa_IR; do
- #echo "$l ISIRI-3342" # a broken encoding
- echo "$l.utf-8 UTF-8"
- done
- ;;
- linux* | *-gnu*)
- # With glibc-2.1 or newer, we don't need any canonicalization,
- # because glibc has iconv and both glibc and libiconv support all
- # GNU canonical names directly. Therefore, the Makefile does not
- # need to install the alias file at all.
- # The following applies only to glibc-2.0.x and older libcs.
- echo "ISO_646.IRV:1983 ASCII"
- ;;
- aix*)
- echo "ISO8859-1 ISO-8859-1"
- echo "ISO8859-2 ISO-8859-2"
- echo "ISO8859-5 ISO-8859-5"
- echo "ISO8859-6 ISO-8859-6"
- echo "ISO8859-7 ISO-8859-7"
- echo "ISO8859-8 ISO-8859-8"
- echo "ISO8859-9 ISO-8859-9"
- echo "ISO8859-15 ISO-8859-15"
- echo "IBM-850 CP850"
- echo "IBM-856 CP856"
- echo "IBM-921 ISO-8859-13"
- echo "IBM-922 CP922"
- echo "IBM-932 CP932"
- echo "IBM-943 CP943"
- echo "IBM-1046 CP1046"
- echo "IBM-1124 CP1124"
- echo "IBM-1129 CP1129"
- echo "IBM-1252 CP1252"
- echo "IBM-eucCN GB2312"
- echo "IBM-eucJP EUC-JP"
- echo "IBM-eucKR EUC-KR"
- echo "IBM-eucTW EUC-TW"
- echo "big5 BIG5"
- echo "GBK GBK"
- echo "TIS-620 TIS-620"
- echo "UTF-8 UTF-8"
- ;;
- hpux*)
- echo "iso88591 ISO-8859-1"
- echo "iso88592 ISO-8859-2"
- echo "iso88595 ISO-8859-5"
- echo "iso88596 ISO-8859-6"
- echo "iso88597 ISO-8859-7"
- echo "iso88598 ISO-8859-8"
- echo "iso88599 ISO-8859-9"
- echo "iso885915 ISO-8859-15"
- echo "roman8 HP-ROMAN8"
- echo "arabic8 HP-ARABIC8"
- echo "greek8 HP-GREEK8"
- echo "hebrew8 HP-HEBREW8"
- echo "turkish8 HP-TURKISH8"
- echo "kana8 HP-KANA8"
- echo "tis620 TIS-620"
- echo "big5 BIG5"
- echo "eucJP EUC-JP"
- echo "eucKR EUC-KR"
- echo "eucTW EUC-TW"
- echo "hp15CN GB2312"
- #echo "ccdc ?" # what is this?
- echo "SJIS SHIFT_JIS"
- echo "utf8 UTF-8"
- ;;
- irix*)
- echo "ISO8859-1 ISO-8859-1"
- echo "ISO8859-2 ISO-8859-2"
- echo "ISO8859-5 ISO-8859-5"
- echo "ISO8859-7 ISO-8859-7"
- echo "ISO8859-9 ISO-8859-9"
- echo "eucCN GB2312"
- echo "eucJP EUC-JP"
- echo "eucKR EUC-KR"
- echo "eucTW EUC-TW"
- ;;
- osf*)
- echo "ISO8859-1 ISO-8859-1"
- echo "ISO8859-2 ISO-8859-2"
- echo "ISO8859-4 ISO-8859-4"
- echo "ISO8859-5 ISO-8859-5"
- echo "ISO8859-7 ISO-8859-7"
- echo "ISO8859-8 ISO-8859-8"
- echo "ISO8859-9 ISO-8859-9"
- echo "ISO8859-15 ISO-8859-15"
- echo "cp850 CP850"
- echo "big5 BIG5"
- echo "dechanyu DEC-HANYU"
- echo "dechanzi GB2312"
- echo "deckanji DEC-KANJI"
- echo "deckorean EUC-KR"
- echo "eucJP EUC-JP"
- echo "eucKR EUC-KR"
- echo "eucTW EUC-TW"
- echo "GBK GBK"
- echo "KSC5601 CP949"
- echo "sdeckanji EUC-JP"
- echo "SJIS SHIFT_JIS"
- echo "TACTIS TIS-620"
- echo "UTF-8 UTF-8"
- ;;
- solaris*)
- echo "646 ASCII"
- echo "ISO8859-1 ISO-8859-1"
- echo "ISO8859-2 ISO-8859-2"
- echo "ISO8859-3 ISO-8859-3"
- echo "ISO8859-4 ISO-8859-4"
- echo "ISO8859-5 ISO-8859-5"
- echo "ISO8859-6 ISO-8859-6"
- echo "ISO8859-7 ISO-8859-7"
- echo "ISO8859-8 ISO-8859-8"
- echo "ISO8859-9 ISO-8859-9"
- echo "ISO8859-15 ISO-8859-15"
- echo "koi8-r KOI8-R"
- echo "ansi-1251 CP1251"
- echo "BIG5 BIG5"
- echo "Big5-HKSCS BIG5-HKSCS"
- echo "gb2312 GB2312"
- echo "GBK GBK"
- echo "GB18030 GB18030"
- echo "cns11643 EUC-TW"
- echo "5601 EUC-KR"
- echo "ko_KR.johap92 JOHAB"
- echo "eucJP EUC-JP"
- echo "PCK SHIFT_JIS"
- echo "TIS620.2533 TIS-620"
- #echo "sun_eu_greek ?" # what is this?
- echo "UTF-8 UTF-8"
- ;;
- freebsd* | os2*)
- # FreeBSD 4.2 doesn't have nl_langinfo(CODESET); therefore
- # localcharset.c falls back to using the full locale name
- # from the environment variables.
- # Likewise for OS/2. OS/2 has XFree86 just like FreeBSD. Just
- # reuse FreeBSD's locale data for OS/2.
- echo "C ASCII"
- echo "US-ASCII ASCII"
- for l in la_LN lt_LN; do
- echo "$l.ASCII ASCII"
- done
- for l in da_DK de_AT de_CH de_DE en_AU en_CA en_GB en_US es_ES \
- fi_FI fr_BE fr_CA fr_CH fr_FR is_IS it_CH it_IT la_LN \
- lt_LN nl_BE nl_NL no_NO pt_PT sv_SE; do
- echo "$l.ISO_8859-1 ISO-8859-1"
- echo "$l.DIS_8859-15 ISO-8859-15"
- done
- for l in cs_CZ hr_HR hu_HU la_LN lt_LN pl_PL sl_SI; do
- echo "$l.ISO_8859-2 ISO-8859-2"
- done
- for l in la_LN lt_LT; do
- echo "$l.ISO_8859-4 ISO-8859-4"
- done
- for l in ru_RU ru_SU; do
- echo "$l.KOI8-R KOI8-R"
- echo "$l.ISO_8859-5 ISO-8859-5"
- echo "$l.CP866 CP866"
- done
- echo "uk_UA.KOI8-U KOI8-U"
- echo "zh_TW.BIG5 BIG5"
- echo "zh_TW.Big5 BIG5"
- echo "zh_CN.EUC GB2312"
- echo "ja_JP.EUC EUC-JP"
- echo "ja_JP.SJIS SHIFT_JIS"
- echo "ja_JP.Shift_JIS SHIFT_JIS"
- echo "ko_KR.EUC EUC-KR"
- ;;
- netbsd*)
- echo "646 ASCII"
- echo "ISO8859-1 ISO-8859-1"
- echo "ISO8859-2 ISO-8859-2"
- echo "ISO8859-4 ISO-8859-4"
- echo "ISO8859-5 ISO-8859-5"
- echo "ISO8859-15 ISO-8859-15"
- echo "eucCN GB2312"
- echo "eucJP EUC-JP"
- echo "eucKR EUC-KR"
- echo "eucTW EUC-TW"
- echo "BIG5 BIG5"
- echo "SJIS SHIFT_JIS"
- ;;
- darwin*)
- # Darwin 6.8 doesn't have nl_langinfo(CODESET); therefore
- # localcharset.c falls back to using the full locale name
- # from the environment variables.
- echo "C ASCII"
- for l in en_AU en_CA en_GB en_US la_LN; do
- echo "$l.US-ASCII ASCII"
- done
- for l in da_DK de_AT de_CH de_DE en_AU en_CA en_GB en_US es_ES \
- fi_FI fr_BE fr_CA fr_CH fr_FR is_IS it_CH it_IT nl_BE \
- nl_NL no_NO pt_PT sv_SE; do
- echo "$l ISO-8859-1"
- echo "$l.ISO8859-1 ISO-8859-1"
- echo "$l.ISO8859-15 ISO-8859-15"
- done
- for l in la_LN; do
- echo "$l.ISO8859-1 ISO-8859-1"
- echo "$l.ISO8859-15 ISO-8859-15"
- done
- for l in cs_CZ hr_HR hu_HU la_LN pl_PL sl_SI; do
- echo "$l.ISO8859-2 ISO-8859-2"
- done
- for l in la_LN lt_LT; do
- echo "$l.ISO8859-4 ISO-8859-4"
- done
- for l in ru_RU; do
- echo "$l.KOI8-R KOI8-R"
- echo "$l.ISO8859-5 ISO-8859-5"
- echo "$l.CP866 CP866"
- done
- for l in bg_BG; do
- echo "$l.CP1251 CP1251"
- done
- echo "uk_UA.KOI8-U KOI8-U"
- echo "zh_TW.BIG5 BIG5"
- echo "zh_TW.Big5 BIG5"
- echo "zh_CN.EUC GB2312"
- echo "ja_JP.EUC EUC-JP"
- echo "ja_JP.SJIS SHIFT_JIS"
- echo "ko_KR.EUC EUC-KR"
- ;;
- beos*)
- # BeOS has a single locale, and it has UTF-8 encoding.
- echo "* UTF-8"
- ;;
- msdosdjgpp*)
- # DJGPP 2.03 doesn't have nl_langinfo(CODESET); therefore
- # localcharset.c falls back to using the full locale name
- # from the environment variables.
- echo "#"
- echo "# The encodings given here may not all be correct."
- echo "# If you find that the encoding given for your language and"
- echo "# country is not the one your DOS machine actually uses, just"
- echo "# correct it in this file, and send a mail to"
- echo "# Juan Manuel Guerrero <st001906@hrz1.hrz.tu-darmstadt.de>"
- echo "# and Bruno Haible <bruno@clisp.org>."
- echo "#"
- echo "C ASCII"
- # ISO-8859-1 languages
- echo "ca CP850"
- echo "ca_ES CP850"
- echo "da CP865" # not CP850 ??
- echo "da_DK CP865" # not CP850 ??
- echo "de CP850"
- echo "de_AT CP850"
- echo "de_CH CP850"
- echo "de_DE CP850"
- echo "en CP850"
- echo "en_AU CP850" # not CP437 ??
- echo "en_CA CP850"
- echo "en_GB CP850"
- echo "en_NZ CP437"
- echo "en_US CP437"
- echo "en_ZA CP850" # not CP437 ??
- echo "es CP850"
- echo "es_AR CP850"
- echo "es_BO CP850"
- echo "es_CL CP850"
- echo "es_CO CP850"
- echo "es_CR CP850"
- echo "es_CU CP850"
- echo "es_DO CP850"
- echo "es_EC CP850"
- echo "es_ES CP850"
- echo "es_GT CP850"
- echo "es_HN CP850"
- echo "es_MX CP850"
- echo "es_NI CP850"
- echo "es_PA CP850"
- echo "es_PY CP850"
- echo "es_PE CP850"
- echo "es_SV CP850"
- echo "es_UY CP850"
- echo "es_VE CP850"
- echo "et CP850"
- echo "et_EE CP850"
- echo "eu CP850"
- echo "eu_ES CP850"
- echo "fi CP850"
- echo "fi_FI CP850"
- echo "fr CP850"
- echo "fr_BE CP850"
- echo "fr_CA CP850"
- echo "fr_CH CP850"
- echo "fr_FR CP850"
- echo "ga CP850"
- echo "ga_IE CP850"
- echo "gd CP850"
- echo "gd_GB CP850"
- echo "gl CP850"
- echo "gl_ES CP850"
- echo "id CP850" # not CP437 ??
- echo "id_ID CP850" # not CP437 ??
- echo "is CP861" # not CP850 ??
- echo "is_IS CP861" # not CP850 ??
- echo "it CP850"
- echo "it_CH CP850"
- echo "it_IT CP850"
- echo "lt CP775"
- echo "lt_LT CP775"
- echo "lv CP775"
- echo "lv_LV CP775"
- echo "nb CP865" # not CP850 ??
- echo "nb_NO CP865" # not CP850 ??
- echo "nl CP850"
- echo "nl_BE CP850"
- echo "nl_NL CP850"
- echo "nn CP865" # not CP850 ??
- echo "nn_NO CP865" # not CP850 ??
- echo "no CP865" # not CP850 ??
- echo "no_NO CP865" # not CP850 ??
- echo "pt CP850"
- echo "pt_BR CP850"
- echo "pt_PT CP850"
- echo "sv CP850"
- echo "sv_SE CP850"
- # ISO-8859-2 languages
- echo "cs CP852"
- echo "cs_CZ CP852"
- echo "hr CP852"
- echo "hr_HR CP852"
- echo "hu CP852"
- echo "hu_HU CP852"
- echo "pl CP852"
- echo "pl_PL CP852"
- echo "ro CP852"
- echo "ro_RO CP852"
- echo "sk CP852"
- echo "sk_SK CP852"
- echo "sl CP852"
- echo "sl_SI CP852"
- echo "sq CP852"
- echo "sq_AL CP852"
- echo "sr CP852" # CP852 or CP866 or CP855 ??
- echo "sr_CS CP852" # CP852 or CP866 or CP855 ??
- echo "sr_YU CP852" # CP852 or CP866 or CP855 ??
- # ISO-8859-3 languages
- echo "mt CP850"
- echo "mt_MT CP850"
- # ISO-8859-5 languages
- echo "be CP866"
- echo "be_BE CP866"
- echo "bg CP866" # not CP855 ??
- echo "bg_BG CP866" # not CP855 ??
- echo "mk CP866" # not CP855 ??
- echo "mk_MK CP866" # not CP855 ??
- echo "ru CP866"
- echo "ru_RU CP866"
- echo "uk CP1125"
- echo "uk_UA CP1125"
- # ISO-8859-6 languages
- echo "ar CP864"
- echo "ar_AE CP864"
- echo "ar_DZ CP864"
- echo "ar_EG CP864"
- echo "ar_IQ CP864"
- echo "ar_IR CP864"
- echo "ar_JO CP864"
- echo "ar_KW CP864"
- echo "ar_MA CP864"
- echo "ar_OM CP864"
- echo "ar_QA CP864"
- echo "ar_SA CP864"
- echo "ar_SY CP864"
- # ISO-8859-7 languages
- echo "el CP869"
- echo "el_GR CP869"
- # ISO-8859-8 languages
- echo "he CP862"
- echo "he_IL CP862"
- # ISO-8859-9 languages
- echo "tr CP857"
- echo "tr_TR CP857"
- # Japanese
- echo "ja CP932"
- echo "ja_JP CP932"
- # Chinese
- echo "zh_CN GBK"
- echo "zh_TW CP950" # not CP938 ??
- # Korean
- echo "kr CP949" # not CP934 ??
- echo "kr_KR CP949" # not CP934 ??
- # Thai
- echo "th CP874"
- echo "th_TH CP874"
- # Other
- echo "eo CP850"
- echo "eo_EO CP850"
- ;;
-esac
diff --git a/intl/dcgettext.c b/intl/dcgettext.c
deleted file mode 100644
index 850acdee..00000000
--- a/intl/dcgettext.c
+++ /dev/null
@@ -1,56 +0,0 @@
-/* Implementation of the dcgettext(3) function.
- 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 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 "gettextP.h"
-#ifdef _LIBC
-# include <libintl.h>
-#else
-# include "libgnuintl.h"
-#endif
-
-/* @@ end of prolog @@ */
-
-/* Names for the libintl functions are a problem. They must not clash
- with existing names and they should follow ANSI C. But this source
- code is also used in GNU C Library where the names have a __
- prefix. So we have to make a difference here. */
-#ifdef _LIBC
-# define DCGETTEXT __dcgettext
-# define DCIGETTEXT __dcigettext
-#else
-# define DCGETTEXT libintl_dcgettext
-# define DCIGETTEXT libintl_dcigettext
-#endif
-
-/* Look up MSGID in the DOMAINNAME message catalog for the current CATEGORY
- locale. */
-char *
-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 --git a/intl/dcigettext.c b/intl/dcigettext.c
deleted file mode 100644
index 35238e2c..00000000
--- a/intl/dcigettext.c
+++ /dev/null
@@ -1,1219 +0,0 @@
-/* Implementation of the internal dcigettext function.
- 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 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 <string.h> to provide a prototype for mempcpy().
- This must come before <config.h> because <config.h> may include
- <features.h>, and once <features.h> has been included, it's too late. */
-#ifndef _GNU_SOURCE
-# define _GNU_SOURCE 1
-#endif
-
-#ifdef HAVE_CONFIG_H
-# include <config.h>
-#endif
-
-#include <sys/types.h>
-
-#ifdef __GNUC__
-# define alloca __builtin_alloca
-# define HAVE_ALLOCA 1
-#else
-# 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 <errno.h>
-#ifndef errno
-extern int errno;
-#endif
-#ifndef __set_errno
-# define __set_errno(val) errno = (val)
-#endif
-
-#include <stddef.h>
-#include <stdlib.h>
-#include <string.h>
-
-#if defined HAVE_UNISTD_H || defined _LIBC
-# include <unistd.h>
-#endif
-
-#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
-# include "libgnuintl.h"
-#endif
-#include "hash-string.h"
-
-/* Thread safetyness. */
-#ifdef _LIBC
-# include <bits/libc-lock.h>
-#else
-/* Provide dummy implementation if this is outside glibc. */
-# define __libc_lock_define_initialized(CLASS, NAME)
-# define __libc_lock_lock(NAME)
-# define __libc_lock_unlock(NAME)
-# define __libc_rwlock_define_initialized(CLASS, NAME)
-# define __libc_rwlock_rdlock(NAME)
-# define __libc_rwlock_unlock(NAME)
-#endif
-
-/* Alignment of types. */
-#if defined __GNUC__ && __GNUC__ >= 2
-# define alignof(TYPE) __alignof__ (TYPE)
-#else
-# define alignof(TYPE) \
- ((int) &((struct { char dummy1; TYPE dummy2; } *) 0)->dummy2)
-#endif
-
-/* The internal variables in the standalone libintl.a must have different
- names than the internal variables in GNU libc, otherwise programs
- using libintl.a cannot be linked statically. */
-#if !defined _LIBC
-# define _nl_default_default_domain 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>. */
-#ifndef offsetof
-# define offsetof(type,ident) ((size_t)&(((type*)0)->ident))
-#endif
-
-/* @@ end of prolog @@ */
-
-#ifdef _LIBC
-/* Rename the non ANSI C functions. This is required by the standard
- because some ANSI C functions will require linking with this object
- file and the name space must not be polluted. */
-# define getcwd __getcwd
-# ifndef stpcpy
-# define stpcpy __stpcpy
-# endif
-# define tfind __tfind
-#else
-# if !defined HAVE_GETCWD
-char *getwd ();
-# define getcwd(buf, max) getwd (buf)
-# else
-# if VMS
-# define getcwd(buf, max) (getcwd) (buf, max, 0)
-# else
-char *getcwd ();
-# endif
-# endif
-# ifndef HAVE_STPCPY
-static char *stpcpy (char *dest, const char *src);
-# endif
-# ifndef HAVE_MEMPCPY
-static void *mempcpy (void *dest, const void *src, size_t n);
-# endif
-#endif
-
-/* Amount to increase buffer size by in each try. */
-#define PATH_INCR 32
-
-/* The following is from pathmax.h. */
-/* Non-POSIX BSD systems might have gcc's limits.h, which doesn't define
- PATH_MAX but might cause redefinition warnings when sys/param.h is
- later included (as on MORE/BSD 4.3). */
-#if defined _POSIX_VERSION || (defined HAVE_LIMITS_H && !defined __GNUC__)
-# include <limits.h>
-#endif
-
-#ifndef _POSIX_PATH_MAX
-# define _POSIX_PATH_MAX 255
-#endif
-
-#if !defined PATH_MAX && defined _PC_PATH_MAX
-# define PATH_MAX (pathconf ("/", _PC_PATH_MAX) < 1 ? 1024 : pathconf ("/", _PC_PATH_MAX))
-#endif
-
-/* Don't include sys/param.h if it already has been. */
-#if defined HAVE_SYS_PARAM_H && !defined PATH_MAX && !defined MAXPATHLEN
-# include <sys/param.h>
-#endif
-
-#if !defined PATH_MAX && defined MAXPATHLEN
-# define PATH_MAX MAXPATHLEN
-#endif
-
-#ifndef PATH_MAX
-# define PATH_MAX _POSIX_PATH_MAX
-#endif
-
-/* Pathname support.
- ISSLASH(C) tests whether C is a directory separator character.
- IS_ABSOLUTE_PATH(P) tests whether P is an absolute path. If it is not,
- it may be concatenated to a directory pathname.
- IS_PATH_WITH_DIR(P) tests whether P contains a directory specification.
- */
-#if defined _WIN32 || defined __WIN32__ || defined __EMX__ || defined __DJGPP__
- /* Win32, OS/2, DOS */
-# define ISSLASH(C) ((C) == '/' || (C) == '\\')
-# define HAS_DEVICE(P) \
- ((((P)[0] >= 'A' && (P)[0] <= 'Z') || ((P)[0] >= 'a' && (P)[0] <= 'z')) \
- && (P)[1] == ':')
-# define IS_ABSOLUTE_PATH(P) (ISSLASH ((P)[0]) || HAS_DEVICE (P))
-# define IS_PATH_WITH_DIR(P) \
- (strchr (P, '/') != NULL || strchr (P, '\\') != NULL || HAS_DEVICE (P))
-#else
- /* Unix */
-# define ISSLASH(C) ((C) == '/')
-# define IS_ABSOLUTE_PATH(P) ISSLASH ((P)[0])
-# define IS_PATH_WITH_DIR(P) (strchr (P, '/') != NULL)
-#endif
-
-/* This is the type used for the search tree where known translations
- are stored. */
-struct known_translation_t
-{
- /* Domain in which to search. */
- char *domainname;
-
- /* The category. */
- int category;
-
- /* State of the catalog counter at the point the string was found. */
- int counter;
-
- /* Catalog where the string was found. */
- struct loaded_l10nfile *domain;
-
- /* And finally the translation. */
- const char *translation;
- size_t translation_length;
-
- /* Pointer to the string in question. */
- char msgid[ZERO];
-};
-
-/* Root of the search tree with known translations. We can use this
- only if the system provides the `tsearch' function family. */
-#if defined HAVE_TSEARCH || defined _LIBC
-# include <search.h>
-
-static void *root;
-
-# ifdef _LIBC
-# define tsearch __tsearch
-# endif
-
-/* Function to compare two entries in the table of known translations. */
-static int
-transcmp (const void *p1, const void *p2)
-{
- const struct known_translation_t *s1;
- const struct known_translation_t *s2;
- int result;
-
- s1 = (const struct known_translation_t *) p1;
- s2 = (const struct known_translation_t *) p2;
-
- result = strcmp (s1->msgid, s2->msgid);
- if (result == 0)
- {
- result = strcmp (s1->domainname, s2->domainname);
- if (result == 0)
- /* We compare the category last (though this is the cheapest
- operation) since it is hopefully always the same (namely
- LC_MESSAGES). */
- result = s1->category - s2->category;
- }
-
- return result;
-}
-#endif
-
-#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[] attribute_hidden = "messages";
-
-/* Value used as the default domain for gettext(3). */
-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 (struct loaded_l10nfile *domain,
- unsigned long int n,
- const char *translation, size_t translation_len)
- internal_function;
-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
-struct block_list
-{
- void *address;
- struct block_list *next;
-};
-# define ADD_BLOCK(list, addr) \
- do { \
- struct block_list *newp = (struct block_list *) malloc (sizeof (*newp)); \
- /* If we cannot get a free block we cannot add the new element to \
- the list. */ \
- if (newp != NULL) { \
- newp->address = (addr); \
- newp->next = (list); \
- (list) = newp; \
- } \
- } while (0)
-# define FREE_BLOCKS(list) \
- do { \
- while (list != NULL) { \
- struct block_list *old = list; \
- list = list->next; \
- free (old->address); \
- free (old); \
- } \
- } while (0)
-# undef alloca
-# define alloca(size) (malloc (size))
-# define freea(p) free (p)
-#endif /* have alloca */
-
-
-#ifdef _LIBC
-/* List of blocks allocated for translations. */
-typedef struct transmem_list
-{
- struct transmem_list *next;
- char data[ZERO];
-} transmem_block_t;
-static struct transmem_list *transmem_list;
-#else
-typedef unsigned char transmem_block_t;
-#endif
-
-
-/* Names for the libintl functions are a problem. They must not clash
- with existing names and they should follow ANSI C. But this source
- code is also used in GNU C Library where the names have a __
- prefix. So we have to make a difference here. */
-#ifdef _LIBC
-# define DCIGETTEXT __dcigettext
-#else
-# define DCIGETTEXT libintl_dcigettext
-#endif
-
-/* Lock variable to protect the global data in the gettext implementation. */
-#ifdef _LIBC
-__libc_rwlock_define_initialized (, _nl_state_lock attribute_hidden)
-#endif
-
-/* Checking whether the binaries runs SUID must be done and glibc provides
- easier methods therefore we make a difference here. */
-#ifdef _LIBC
-# define ENABLE_SECURE __libc_enable_secure
-# define DETERMINE_SECURE
-#else
-# ifndef HAVE_GETUID
-# define getuid() 0
-# endif
-# ifndef HAVE_GETGID
-# define getgid() 0
-# endif
-# ifndef HAVE_GETEUID
-# define geteuid() getuid()
-# endif
-# ifndef HAVE_GETEGID
-# define getegid() getgid()
-# endif
-static int enable_secure;
-# define ENABLE_SECURE (enable_secure == 1)
-# define DETERMINE_SECURE \
- if (enable_secure == 0) \
- { \
- if (getuid () != geteuid () || getgid () != getegid ()) \
- enable_secure = 1; \
- else \
- enable_secure = -1; \
- }
-#endif
-
-/* 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 (const char *domainname, const char *msgid1, const char *msgid2,
- int plural, unsigned long int n, int category)
-{
-#ifndef HAVE_ALLOCA
- struct block_list *block_list = NULL;
-#endif
- struct loaded_l10nfile *domain;
- struct binding *binding;
- const char *categoryname;
- const char *categoryvalue;
- char *dirname, *xdomainname;
- char *single_locale;
- char *retval;
- size_t retlen;
- int saved_errno;
-#if defined HAVE_TSEARCH || defined _LIBC
- struct known_translation_t *search;
- struct known_translation_t **foundp = NULL;
- size_t msgid_len;
-#endif
- size_t domainname_len;
-
- /* If no real MSGID is given return NULL. */
- if (msgid1 == NULL)
- return NULL;
-
-#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
- CATEGORY is not LC_MESSAGES this might not make much sense but the
- definition left this undefined. */
- if (domainname == NULL)
- domainname = _nl_current_default_domain;
-
- /* 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;
-
- /* Try to find the translation among those which we found at
- some time. */
- search = (struct known_translation_t *)
- alloca (offsetof (struct known_translation_t, msgid) + msgid_len);
- memcpy (search->msgid, msgid1, msgid_len);
- search->domainname = (char *) domainname;
- search->category = category;
-
- foundp = (struct known_translation_t **) tfind (search, &root, transcmp);
- freea (search);
- if (foundp != NULL && (*foundp)->counter == _nl_msg_cat_cntr)
- {
- /* Now deal with plural. */
- if (plural)
- retval = plural_lookup ((*foundp)->domain, n, (*foundp)->translation,
- (*foundp)->translation_length);
- else
- retval = (char *) (*foundp)->translation;
-
- __libc_rwlock_unlock (_nl_state_lock);
- return retval;
- }
-#endif
-
- /* Preserve the `errno' value. */
- saved_errno = errno;
-
- /* See whether this is a SUID binary or not. */
- DETERMINE_SECURE;
-
- /* First find matching binding. */
- for (binding = _nl_domain_bindings; binding != NULL; binding = binding->next)
- {
- int compare = strcmp (domainname, binding->domainname);
- if (compare == 0)
- /* We found it! */
- break;
- if (compare < 0)
- {
- /* It is not in the list. */
- binding = NULL;
- break;
- }
- }
-
- if (binding == NULL)
- dirname = (char *) INTUSE(_nl_default_dirname);
- else if (IS_ABSOLUTE_PATH (binding->dirname))
- dirname = binding->dirname;
- else
- {
- /* We have a relative path. Make it absolute now. */
- size_t dirname_len = strlen (binding->dirname) + 1;
- size_t path_max;
- char *ret;
-
- path_max = (unsigned int) PATH_MAX;
- path_max += 2; /* The getcwd docs say to do this. */
-
- for (;;)
- {
- dirname = (char *) alloca (path_max + dirname_len);
- ADD_BLOCK (block_list, dirname);
-
- __set_errno (0);
- ret = getcwd (dirname, path_max);
- if (ret != NULL || errno != ERANGE)
- break;
-
- path_max += path_max / 2;
- path_max += PATH_INCR;
- }
-
- if (ret == NULL)
- /* We cannot get the current working directory. Don't signal an
- error but simply return the default string. */
- goto return_untranslated;
-
- stpcpy (stpcpy (strchr (dirname, '\0'), "/"), binding->dirname);
- }
-
- /* Now determine the symbolic name of CATEGORY and its value. */
- categoryname = category_to_name (category);
- categoryvalue = guess_category_value (category, categoryname);
-
- domainname_len = strlen (domainname);
- xdomainname = (char *) alloca (strlen (categoryname)
- + domainname_len + 5);
- ADD_BLOCK (block_list, xdomainname);
-
- stpcpy (mempcpy (stpcpy (stpcpy (xdomainname, categoryname), "/"),
- domainname, domainname_len),
- ".mo");
-
- /* Creating working area. */
- single_locale = (char *) alloca (strlen (categoryvalue) + 1);
- ADD_BLOCK (block_list, single_locale);
-
-
- /* Search for the given string. This is a loop because we perhaps
- got an ordered list of languages to consider for the translation. */
- while (1)
- {
- /* Make CATEGORYVALUE point to the next element of the list. */
- while (categoryvalue[0] != '\0' && categoryvalue[0] == ':')
- ++categoryvalue;
- if (categoryvalue[0] == '\0')
- {
- /* The whole contents of CATEGORYVALUE has been searched but
- no valid entry has been found. We solve this situation
- by implicitly appending a "C" entry, i.e. no translation
- will take place. */
- single_locale[0] = 'C';
- single_locale[1] = '\0';
- }
- else
- {
- char *cp = single_locale;
- while (categoryvalue[0] != '\0' && categoryvalue[0] != ':')
- *cp++ = *categoryvalue++;
- *cp = '\0';
-
- /* When this is a SUID binary we must not allow accessing files
- outside the dedicated directories. */
- if (ENABLE_SECURE && IS_PATH_WITH_DIR (single_locale))
- /* Ingore this entry. */
- continue;
- }
-
- /* If the current locale value is C (or POSIX) we don't load a
- domain. Return the MSGID. */
- if (strcmp (single_locale, "C") == 0
- || strcmp (single_locale, "POSIX") == 0)
- break;
-
- /* Find structure describing the message catalog matching the
- DOMAINNAME and CATEGORY. */
- domain = _nl_find_domain (dirname, single_locale, xdomainname, binding);
-
- if (domain != NULL)
- {
- retval = _nl_find_msg (domain, binding, msgid1, &retlen);
-
- if (retval == NULL)
- {
- int cnt;
-
- for (cnt = 0; domain->successor[cnt] != NULL; ++cnt)
- {
- retval = _nl_find_msg (domain->successor[cnt], binding,
- msgid1, &retlen);
-
- if (retval != NULL)
- {
- domain = domain->successor[cnt];
- break;
- }
- }
- }
-
- if (retval != NULL)
- {
- /* Found the translation of MSGID1 in domain DOMAIN:
- starting at RETVAL, RETLEN bytes. */
- FREE_BLOCKS (block_list);
-#if defined HAVE_TSEARCH || defined _LIBC
- if (foundp == NULL)
- {
- /* Create a new entry and add it to the search tree. */
- struct known_translation_t *newp;
-
- newp = (struct known_translation_t *)
- malloc (offsetof (struct known_translation_t, msgid)
- + msgid_len + domainname_len + 1);
- if (newp != NULL)
- {
- newp->domainname =
- mempcpy (newp->msgid, msgid1, msgid_len);
- memcpy (newp->domainname, domainname, domainname_len + 1);
- newp->category = category;
- newp->counter = _nl_msg_cat_cntr;
- newp->domain = domain;
- newp->translation = retval;
- newp->translation_length = retlen;
-
- /* Insert the entry in the search tree. */
- foundp = (struct known_translation_t **)
- tsearch (newp, &root, transcmp);
- if (foundp == NULL
- || __builtin_expect (*foundp != newp, 0))
- /* The insert failed. */
- free (newp);
- }
- }
- else
- {
- /* We can update the existing entry. */
- (*foundp)->counter = _nl_msg_cat_cntr;
- (*foundp)->domain = domain;
- (*foundp)->translation = retval;
- (*foundp)->translation_length = retlen;
- }
-#endif
- __set_errno (saved_errno);
-
- /* Now deal with plural. */
- if (plural)
- retval = plural_lookup (domain, n, retval, retlen);
-
- __libc_rwlock_unlock (_nl_state_lock);
- return retval;
- }
- }
- }
-
- 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 (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, 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_tab != NULL)
- {
- /* Use the hashing table. */
- nls_uint32 len = strlen (msgid);
- nls_uint32 hash_val = hash_string (msgid);
- nls_uint32 idx = hash_val % domain->hash_size;
- nls_uint32 incr = 1 + (hash_val % (domain->hash_size - 2));
-
- while (1)
- {
- nls_uint32 nstr =
- W (domain->must_swap_hash_tab, domain->hash_tab[idx]);
-
- if (nstr == 0)
- /* Hash table entry is empty. */
- return NULL;
-
- 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 (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;
- goto found;
- }
-
- if (idx >= domain->hash_size - incr)
- idx -= domain->hash_size - incr;
- else
- idx += incr;
- }
- /* NOTREACHED */
- }
- else
- {
- /* Try the default method: binary search in the sorted array of
- messages. */
- size_t top, bottom;
-
- bottom = 0;
- top = nstrings;
- while (bottom < top)
- {
- int cmp_val;
-
- act = (bottom + top) / 2;
- cmp_val = strcmp (msgid, (domain->data
- + W (domain->must_swap,
- domain->orig_tab[act].offset)));
- if (cmp_val < 0)
- top = act;
- else if (cmp_val > 0)
- bottom = act + 1;
- else
- goto found;
- }
- /* No translation was found. */
- return NULL;
- }
-
- found:
- /* The translation was found at index ACT. If we have to convert the
- string to use a different character set, this is the time. */
- 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
-# else
-# if HAVE_ICONV
- domain->conv != (iconv_t) -1
-# endif
-# endif
- )
- {
- /* We are supposed to do a conversion. First allocate an
- appropriate table with the same structure as the table
- of translations in the file, where we can put the pointers
- to the converted strings in.
- There is a slight complication with plural entries. They
- are represented by consecutive NUL terminated strings. We
- handle this case by converting RESULTLEN bytes, including
- NULs. */
-
- if (domain->conv_tab == NULL
- && ((domain->conv_tab =
- (char **) calloc (nstrings + domain->n_sysdep_strings,
- sizeof (char *)))
- == NULL))
- /* Mark that we didn't succeed allocating a table. */
- domain->conv_tab = (char **) -1;
-
- if (__builtin_expect (domain->conv_tab == (char **) -1, 0))
- /* Nothing we can do, no more memory. */
- goto converted;
-
- if (domain->conv_tab[act] == NULL)
- {
- /* We haven't used this string so far, so it is not
- translated yet. Do this now. */
- /* We use a bit more efficient memory handling.
- We allocate always larger blocks which get used over
- time. This is faster than many small allocations. */
- __libc_lock_define_initialized (static, lock)
-# define INITIAL_BLOCK_SIZE 4080
- static unsigned char *freemem;
- static size_t freemem_size;
-
- const unsigned char *inbuf;
- unsigned char *outbuf;
- int malloc_count;
-# ifndef _LIBC
- transmem_block_t *transmem_list = NULL;
-# endif
-
- __libc_lock_lock (lock);
-
- inbuf = (const unsigned char *) result;
- outbuf = freemem + sizeof (size_t);
-
- malloc_count = 0;
- while (1)
- {
- transmem_block_t *newmem;
-# ifdef _LIBC
- size_t non_reversible;
- int res;
-
- if (freemem_size < sizeof (size_t))
- goto resize_freemem;
-
- res = __gconv (domain->conv,
- &inbuf, inbuf + resultlen,
- &outbuf,
- outbuf + freemem_size - sizeof (size_t),
- &non_reversible);
-
- if (res == __GCONV_OK || res == __GCONV_EMPTY_INPUT)
- break;
-
- if (res != __GCONV_FULL_OUTPUT)
- {
- __libc_lock_unlock (lock);
- goto converted;
- }
-
- inbuf = result;
-# else
-# if HAVE_ICONV
- const char *inptr = (const char *) inbuf;
- size_t inleft = resultlen;
- char *outptr = (char *) outbuf;
- size_t outleft;
-
- if (freemem_size < sizeof (size_t))
- goto resize_freemem;
-
- outleft = freemem_size - sizeof (size_t);
- if (iconv (domain->conv,
- (ICONV_CONST char **) &inptr, &inleft,
- &outptr, &outleft)
- != (size_t) (-1))
- {
- outbuf = (unsigned char *) outptr;
- break;
- }
- if (errno != E2BIG)
- {
- __libc_lock_unlock (lock);
- goto converted;
- }
-# endif
-# endif
-
- resize_freemem:
- /* We must allocate a new buffer or resize the old one. */
- if (malloc_count > 0)
- {
- ++malloc_count;
- freemem_size = malloc_count * INITIAL_BLOCK_SIZE;
- newmem = (transmem_block_t *) realloc (transmem_list,
- freemem_size);
-# ifdef _LIBC
- if (newmem != NULL)
- transmem_list = transmem_list->next;
- else
- {
- struct transmem_list *old = transmem_list;
-
- transmem_list = transmem_list->next;
- free (old);
- }
-# endif
- }
- else
- {
- malloc_count = 1;
- freemem_size = INITIAL_BLOCK_SIZE;
- newmem = (transmem_block_t *) malloc (freemem_size);
- }
- if (__builtin_expect (newmem == NULL, 0))
- {
- freemem = NULL;
- freemem_size = 0;
- __libc_lock_unlock (lock);
- goto converted;
- }
-
-# ifdef _LIBC
- /* Add the block to the list of blocks we have to free
- at some point. */
- newmem->next = transmem_list;
- transmem_list = newmem;
-
- freemem = newmem->data;
- freemem_size -= offsetof (struct transmem_list, data);
-# else
- transmem_list = newmem;
- freemem = newmem;
-# endif
-
- outbuf = freemem + sizeof (size_t);
- }
-
- /* We have now in our buffer a converted string. Put this
- into the table of conversions. */
- *(size_t *) freemem = outbuf - freemem - sizeof (size_t);
- domain->conv_tab[act] = (char *) freemem;
- /* Shrink freemem, but keep it aligned. */
- freemem_size -= outbuf - freemem;
- freemem = outbuf;
- freemem += freemem_size & (alignof (size_t) - 1);
- freemem_size = freemem_size & ~ (alignof (size_t) - 1);
-
- __libc_lock_unlock (lock);
- }
-
- /* Now domain->conv_tab[act] contains the translation of all
- the plural variants. */
- result = domain->conv_tab[act] + sizeof (size_t);
- resultlen = *(size_t *) domain->conv_tab[act];
- }
-
- converted:
- /* The result string is converted. */
-
-#endif /* _LIBC || HAVE_ICONV */
-
- *lengthp = resultlen;
- return result;
-}
-
-
-/* Look up a plural variant. */
-static char *
-internal_function
-plural_lookup (struct loaded_l10nfile *domain, unsigned long int n,
- const char *translation, size_t translation_len)
-{
- struct loaded_domain *domaindata = (struct loaded_domain *) domain->data;
- unsigned long int index;
- const char *p;
-
- index = plural_eval (domaindata->plural, n);
- if (index >= domaindata->nplurals)
- /* This should never happen. It means the plural expression and the
- given maximum value do not match. */
- index = 0;
-
- /* Skip INDEX strings at TRANSLATION. */
- p = translation;
- while (index-- > 0)
- {
-#ifdef _LIBC
- p = __rawmemchr (p, '\0');
-#else
- p = strchr (p, '\0');
-#endif
- /* And skip over the NUL byte. */
- p++;
-
- if (p >= translation + translation_len)
- /* This should never happen. It means the plural expression
- evaluated to a value larger than the number of variants
- available for MSGID1. */
- return (char *) translation;
- }
- return (char *) p;
-}
-
-#ifndef _LIBC
-/* Return string representation of locale CATEGORY. */
-static const char *
-internal_function
-category_to_name (int category)
-{
- const char *retval;
-
- switch (category)
- {
-#ifdef LC_COLLATE
- case LC_COLLATE:
- retval = "LC_COLLATE";
- break;
-#endif
-#ifdef LC_CTYPE
- case LC_CTYPE:
- retval = "LC_CTYPE";
- break;
-#endif
-#ifdef LC_MONETARY
- case LC_MONETARY:
- retval = "LC_MONETARY";
- break;
-#endif
-#ifdef LC_NUMERIC
- case LC_NUMERIC:
- retval = "LC_NUMERIC";
- break;
-#endif
-#ifdef LC_TIME
- case LC_TIME:
- retval = "LC_TIME";
- break;
-#endif
-#ifdef LC_MESSAGES
- case LC_MESSAGES:
- retval = "LC_MESSAGES";
- break;
-#endif
-#ifdef LC_RESPONSE
- case LC_RESPONSE:
- retval = "LC_RESPONSE";
- break;
-#endif
-#ifdef LC_ALL
- case LC_ALL:
- /* This might not make sense but is perhaps better than any other
- value. */
- retval = "LC_ALL";
- break;
-#endif
- default:
- /* If you have a better idea for a default value let me know. */
- retval = "LC_XXX";
- }
-
- return retval;
-}
-#endif
-
-/* Guess value of current locale from value of the environment variables. */
-static const char *
-internal_function
-guess_category_value (int category, const char *categoryname)
-{
- const char *language;
- const char *retval;
-
- /* The highest priority value is the `LANGUAGE' environment
- variable. But we don't use the value if the currently selected
- locale is the C locale. This is a GNU extension. */
- language = getenv ("LANGUAGE");
- if (language != NULL && language[0] == '\0')
- language = NULL;
-
- /* We have to proceed with the POSIX methods of looking to `LC_ALL',
- `LC_xxx', and `LANG'. On some systems this can be done by the
- `setlocale' function itself. */
-#ifdef _LIBC
- retval = __current_locale_name (category);
-#else
- 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;
-}
-
-/* @@ begin of epilog @@ */
-
-/* We don't want libintl.a to depend on any other library. So we
- avoid the non-standard function stpcpy. In GNU C Library this
- function is available, though. Also allow the symbol HAVE_STPCPY
- to be defined. */
-#if !_LIBC && !HAVE_STPCPY
-static char *
-stpcpy (char *dest, const char *src)
-{
- while ((*dest++ = *src++) != '\0')
- /* Do nothing. */ ;
- return dest - 1;
-}
-#endif
-
-#if !_LIBC && !HAVE_MEMPCPY
-static void *
-mempcpy (void *dest, const void *src, size_t n)
-{
- return (void *) ((char *) memcpy (dest, src, n) + n);
-}
-#endif
-
-
-#ifdef _LIBC
-/* If we want to free all resources we have to do some work at
- program's end. */
-libc_freeres_fn (free_mem)
-{
- void *old;
-
- while (_nl_domain_bindings != NULL)
- {
- struct binding *oldp = _nl_domain_bindings;
- _nl_domain_bindings = _nl_domain_bindings->next;
- if (oldp->dirname != INTUSE(_nl_default_dirname))
- /* Yes, this is a pointer comparison. */
- free (oldp->dirname);
- free (oldp->codeset);
- free (oldp);
- }
-
- if (_nl_current_default_domain != _nl_default_default_domain)
- /* Yes, again a pointer comparison. */
- free ((char *) _nl_current_default_domain);
-
- /* Remove the search tree with the known translations. */
- __tdestroy (root, free);
- root = NULL;
-
- while (transmem_list != NULL)
- {
- old = transmem_list;
- transmem_list = transmem_list->next;
- free (old);
- }
-}
-#endif
diff --git a/intl/dcngettext.c b/intl/dcngettext.c
deleted file mode 100644
index 48a3e09e..00000000
--- a/intl/dcngettext.c
+++ /dev/null
@@ -1,57 +0,0 @@
-/* Implementation of the dcngettext(3) function.
- 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 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 "gettextP.h"
-#ifdef _LIBC
-# include <libintl.h>
-#else
-# include "libgnuintl.h"
-#endif
-
-/* @@ end of prolog @@ */
-
-/* Names for the libintl functions are a problem. They must not clash
- with existing names and they should follow ANSI C. But this source
- code is also used in GNU C Library where the names have a __
- prefix. So we have to make a difference here. */
-#ifdef _LIBC
-# define DCNGETTEXT __dcngettext
-# define DCIGETTEXT __dcigettext
-#else
-# define DCNGETTEXT libintl_dcngettext
-# define DCIGETTEXT libintl_dcigettext
-#endif
-
-/* Look up MSGID in the DOMAINNAME message catalog for the current CATEGORY
- locale. */
-char *
-DCNGETTEXT (const char *domainname,
- const char *msgid1, const char *msgid2, unsigned long int n,
- int category)
-{
- return DCIGETTEXT (domainname, msgid1, msgid2, 1, n, category);
-}
-
-#ifdef _LIBC
-/* Alias for function name in GNU C Library. */
-weak_alias (__dcngettext, dcngettext);
-#endif
diff --git a/intl/dgettext.c b/intl/dgettext.c
deleted file mode 100644
index b64b0f5d..00000000
--- a/intl/dgettext.c
+++ /dev/null
@@ -1,58 +0,0 @@
-/* Implementation of the dgettext(3) function.
- 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. */
-
-#ifdef HAVE_CONFIG_H
-# include <config.h>
-#endif
-
-#include "gettextP.h"
-
-#include <locale.h>
-
-#ifdef _LIBC
-# include <libintl.h>
-#else
-# include "libgnuintl.h"
-#endif
-
-/* @@ end of prolog @@ */
-
-/* Names for the libintl functions are a problem. They must not clash
- with existing names and they should follow ANSI C. But this source
- code is also used in GNU C Library where the names have a __
- prefix. So we have to make a difference here. */
-#ifdef _LIBC
-# define DGETTEXT __dgettext
-# define DCGETTEXT INTUSE(__dcgettext)
-#else
-# 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 (const char *domainname, const char *msgid)
-{
- return DCGETTEXT (domainname, msgid, LC_MESSAGES);
-}
-
-#ifdef _LIBC
-/* Alias for function name in GNU C Library. */
-weak_alias (__dgettext, dgettext);
-#endif
diff --git a/intl/dngettext.c b/intl/dngettext.c
deleted file mode 100644
index 7815637f..00000000
--- a/intl/dngettext.c
+++ /dev/null
@@ -1,59 +0,0 @@
-/* Implementation of the dngettext(3) function.
- 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. */
-
-#ifdef HAVE_CONFIG_H
-# include <config.h>
-#endif
-
-#include "gettextP.h"
-
-#include <locale.h>
-
-#ifdef _LIBC
-# include <libintl.h>
-#else
-# include "libgnuintl.h"
-#endif
-
-/* @@ end of prolog @@ */
-
-/* Names for the libintl functions are a problem. They must not clash
- with existing names and they should follow ANSI C. But this source
- code is also used in GNU C Library where the names have a __
- prefix. So we have to make a difference here. */
-#ifdef _LIBC
-# define DNGETTEXT __dngettext
-# define DCNGETTEXT __dcngettext
-#else
-# define DNGETTEXT 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 (const char *domainname,
- const char *msgid1, const char *msgid2, unsigned long int n)
-{
- return DCNGETTEXT (domainname, msgid1, msgid2, n, LC_MESSAGES);
-}
-
-#ifdef _LIBC
-/* Alias for function name in GNU C Library. */
-weak_alias (__dngettext, dngettext);
-#endif
diff --git a/intl/eval-plural.h b/intl/eval-plural.h
deleted file mode 100644
index 01bd5af5..00000000
--- a/intl/eval-plural.h
+++ /dev/null
@@ -1,108 +0,0 @@
-/* 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 --git a/intl/explodename.c b/intl/explodename.c
deleted file mode 100644
index 52c25e72..00000000
--- a/intl/explodename.c
+++ /dev/null
@@ -1,185 +0,0 @@
-/* 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 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 <stdlib.h>
-#include <string.h>
-#include <sys/types.h>
-
-#include "loadinfo.h"
-
-/* On some strange systems still no definition of NULL is found. Sigh! */
-#ifndef NULL
-# if defined __STDC__ && __STDC__
-# define NULL ((void *) 0)
-# else
-# define NULL 0
-# endif
-#endif
-
-/* @@ end of prolog @@ */
-
-char *
-_nl_find_language (const char *name)
-{
- while (name[0] != '\0' && name[0] != '_' && name[0] != '@'
- && name[0] != '+' && name[0] != ',')
- ++name;
-
- return (char *) name;
-}
-
-
-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)
-{
- enum { undecided, xpg, cen } syntax;
- char *cp;
- int mask;
-
- *modifier = NULL;
- *territory = NULL;
- *codeset = NULL;
- *normalized_codeset = NULL;
- *special = NULL;
- *sponsor = NULL;
- *revision = NULL;
-
- /* Now we determine the single parts of the locale name. First
- look for the language. Termination symbols are `_' and `@' if
- we use XPG4 style, and `_', `+', and `,' if we use CEN syntax. */
- mask = 0;
- syntax = undecided;
- *language = cp = name;
- cp = _nl_find_language (*language);
-
- if (*language == cp)
- /* This does not make sense: language has to be specified. Use
- this entry as it is without exploding. Perhaps it is an alias. */
- cp = strchr (*language, '\0');
- else if (cp[0] == '_')
- {
- /* Next is the territory. */
- cp[0] = '\0';
- *territory = ++cp;
-
- while (cp[0] != '\0' && cp[0] != '.' && cp[0] != '@'
- && cp[0] != '+' && cp[0] != ',' && cp[0] != '_')
- ++cp;
-
- mask |= TERRITORY;
-
- if (cp[0] == '.')
- {
- /* Next is the codeset. */
- syntax = xpg;
- cp[0] = '\0';
- *codeset = ++cp;
-
- while (cp[0] != '\0' && cp[0] != '@')
- ++cp;
-
- mask |= XPG_CODESET;
-
- if (*codeset != cp && (*codeset)[0] != '\0')
- {
- *normalized_codeset = _nl_normalize_codeset (*codeset,
- cp - *codeset);
- if (strcmp (*codeset, *normalized_codeset) == 0)
- free ((char *) *normalized_codeset);
- else
- mask |= XPG_NORM_CODESET;
- }
- }
- }
-
- if (cp[0] == '@' || (syntax != xpg && cp[0] == '+'))
- {
- /* Next is the modifier. */
- syntax = cp[0] == '@' ? xpg : cen;
- cp[0] = '\0';
- *modifier = ++cp;
-
- while (syntax == cen && cp[0] != '\0' && cp[0] != '+'
- && cp[0] != ',' && cp[0] != '_')
- ++cp;
-
- mask |= XPG_MODIFIER | CEN_AUDIENCE;
- }
-
- if (syntax != xpg && (cp[0] == '+' || cp[0] == ',' || cp[0] == '_'))
- {
- syntax = cen;
-
- if (cp[0] == '+')
- {
- /* Next is special application (CEN syntax). */
- cp[0] = '\0';
- *special = ++cp;
-
- while (cp[0] != '\0' && cp[0] != ',' && cp[0] != '_')
- ++cp;
-
- mask |= CEN_SPECIAL;
- }
-
- if (cp[0] == ',')
- {
- /* Next is sponsor (CEN syntax). */
- cp[0] = '\0';
- *sponsor = ++cp;
-
- while (cp[0] != '\0' && cp[0] != '_')
- ++cp;
-
- mask |= CEN_SPONSOR;
- }
-
- if (cp[0] == '_')
- {
- /* Next is revision (CEN syntax). */
- cp[0] = '\0';
- *revision = ++cp;
-
- mask |= CEN_REVISION;
- }
- }
-
- /* For CEN syntax values it might be important to have the
- separator character in the file name, not for XPG syntax. */
- if (syntax == xpg)
- {
- if (*territory != NULL && (*territory)[0] == '\0')
- mask &= ~TERRITORY;
-
- if (*codeset != NULL && (*codeset)[0] == '\0')
- mask &= ~XPG_CODESET;
-
- if (*modifier != NULL && (*modifier)[0] == '\0')
- mask &= ~XPG_MODIFIER;
- }
-
- return mask;
-}
diff --git a/intl/finddomain.c b/intl/finddomain.c
deleted file mode 100644
index 4992a8c9..00000000
--- a/intl/finddomain.c
+++ /dev/null
@@ -1,192 +0,0 @@
-/* Handle list of needed message catalogs
- 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 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 <stdio.h>
-#include <sys/types.h>
-#include <stdlib.h>
-#include <string.h>
-
-#if defined HAVE_UNISTD_H || defined _LIBC
-# include <unistd.h>
-#endif
-
-#include "gettextP.h"
-#ifdef _LIBC
-# include <libintl.h>
-#else
-# include "libgnuintl.h"
-#endif
-
-/* @@ end of prolog @@ */
-/* List of already loaded domains. */
-static struct loaded_l10nfile *_nl_loaded_domains;
-
-
-/* Return a data structure describing the message catalog described by
- the DOMAINNAME and CATEGORY parameters with respect to the currently
- established bindings. */
-struct loaded_l10nfile *
-internal_function
-_nl_find_domain (const char *dirname, char *locale,
- const char *domainname, struct binding *domainbinding)
-{
- struct loaded_l10nfile *retval;
- 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;
- const char *alias_value;
- int mask;
-
- /* LOCALE can consist of up to four recognized parts for the XPG syntax:
-
- language[_territory[.codeset]][@modifier]
-
- and six parts for the CEN syntax:
-
- language[_territory][+audience][+special][,[sponsor][_revision]]
-
- Beside the first part all of them are allowed to be missing. If
- the full specified locale is not found, the less specific one are
- looked for. The various parts will be stripped off according to
- the following order:
- (1) revision
- (2) sponsor
- (3) special
- (4) codeset
- (5) normalized codeset
- (6) territory
- (7) audience/modifier
- */
-
- /* If we have already tested for this locale entry there has to
- 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, 0);
- if (retval != NULL)
- {
- /* We know something about this locale. */
- int cnt;
-
- if (retval->decided == 0)
- _nl_load_domain (retval, domainbinding);
-
- if (retval->data != NULL)
- return retval;
-
- for (cnt = 0; retval->successor[cnt] != NULL; ++cnt)
- {
- if (retval->successor[cnt]->decided == 0)
- _nl_load_domain (retval->successor[cnt], domainbinding);
-
- if (retval->successor[cnt]->data != NULL)
- break;
- }
- return cnt >= 0 ? retval : NULL;
- /* NOTREACHED */
- }
-
- /* See whether the locale value is an alias. If yes its value
- *overwrites* the alias name. No test for the original value is
- done. */
- alias_value = _nl_expand_alias (locale);
- if (alias_value != NULL)
- {
-#if defined _LIBC || defined HAVE_STRDUP
- locale = strdup (alias_value);
- if (locale == NULL)
- return NULL;
-#else
- size_t len = strlen (alias_value) + 1;
- locale = (char *) malloc (len);
- if (locale == NULL)
- return NULL;
-
- memcpy (locale, alias_value, len);
-#endif
- }
-
- /* Now we determine the single parts of the locale name. First
- look for the language. Termination symbols are `_' and `@' if
- we use XPG4 style, and `_', `+', and `,' if we use CEN syntax. */
- mask = _nl_explode_name (locale, &language, &modifier, &territory,
- &codeset, &normalized_codeset, &special,
- &sponsor, &revision);
-
- /* Create all possible locale entries which might be interested in
- generalization. */
- retval = _nl_make_l10nflist (&_nl_loaded_domains, dirname,
- strlen (dirname) + 1, mask, language, territory,
- codeset, normalized_codeset, modifier, special,
- sponsor, revision, domainname, 1);
- if (retval == NULL)
- /* This means we are out of core. */
- return NULL;
-
- if (retval->decided == 0)
- _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], domainbinding);
- if (retval->successor[cnt]->data != NULL)
- break;
- }
- }
-
- /* The room for an alias was dynamically allocated. Free it now. */
- if (alias_value != NULL)
- free (locale);
-
- /* The space for normalized_codeset is dynamically allocated. Free it. */
- if (mask & XPG_NORM_CODESET)
- free ((void *) normalized_codeset);
-
- return retval;
-}
-
-
-#ifdef _LIBC
-libc_freeres_fn (free_mem)
-{
- struct loaded_l10nfile *runp = _nl_loaded_domains;
-
- while (runp != NULL)
- {
- struct loaded_l10nfile *here = runp;
- if (runp->data != NULL)
- _nl_unload_domain ((struct loaded_domain *) runp->data);
- runp = runp->next;
- free ((char *) here->filename);
- free (here);
- }
-}
-#endif
diff --git a/intl/gettext.c b/intl/gettext.c
deleted file mode 100644
index 92c42faa..00000000
--- a/intl/gettext.c
+++ /dev/null
@@ -1,63 +0,0 @@
-/* Implementation of gettext(3) function.
- 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. */
-
-#ifdef HAVE_CONFIG_H
-# include <config.h>
-#endif
-
-#ifdef _LIBC
-# define __need_NULL
-# include <stddef.h>
-#else
-# include <stdlib.h> /* Just for NULL. */
-#endif
-
-#include "gettextP.h"
-#ifdef _LIBC
-# include <libintl.h>
-#else
-# include "libgnuintl.h"
-#endif
-
-/* @@ end of prolog @@ */
-
-/* Names for the libintl functions are a problem. They must not clash
- with existing names and they should follow ANSI C. But this source
- code is also used in GNU C Library where the names have a __
- prefix. So we have to make a difference here. */
-#ifdef _LIBC
-# define GETTEXT __gettext
-# define DCGETTEXT INTUSE(__dcgettext)
-#else
-# 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 (const char *msgid)
-{
- return DCGETTEXT (NULL, msgid, LC_MESSAGES);
-}
-
-#ifdef _LIBC
-/* Alias for function name in GNU C Library. */
-weak_alias (__gettext, gettext);
-#endif
diff --git a/intl/gettextP.h b/intl/gettextP.h
deleted file mode 100644
index 4d66c3de..00000000
--- a/intl/gettextP.h
+++ /dev/null
@@ -1,215 +0,0 @@
-/* Header describing internals of libintl library.
- 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 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 _GETTEXTP_H
-#define _GETTEXTP_H
-
-#include <stddef.h> /* Get size_t. */
-
-#ifdef _LIBC
-# include "../iconv/gconv_int.h"
-#else
-# if HAVE_ICONV
-# include <iconv.h>
-# endif
-#endif
-
-#include "loadinfo.h"
-
-#include "gmo.h" /* Get nls_uint32. */
-
-/* @@ end of prolog @@ */
-
-#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
-# define __builtin_expect(expr, val) (expr)
-#endif
-
-#ifndef W
-# define W(flag, data) ((flag) ? SWAP (data) : (data))
-#endif
-
-
-#ifdef _LIBC
-# include <byteswap.h>
-# define SWAP(i) bswap_32 (i)
-#else
-static inline nls_uint32
-SWAP (i)
- nls_uint32 i;
-{
- return (i << 24) | ((i & 0xff00) << 8) | ((i >> 8) & 0xff00) | (i >> 24);
-}
-#endif
-
-
-/* In-memory representation of system dependent string. */
-struct sysdep_string_desc
-{
- /* 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;
- /* 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;
- /* 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
-# if HAVE_ICONV
- iconv_t conv;
-# endif
-#endif
- char **conv_tab;
-
- struct expression *plural;
- unsigned long int nplurals;
-};
-
-/* We want to allocate a string at the end of the struct. But ISO C
- doesn't allow zero sized arrays. */
-#ifdef __GNUC__
-# define ZERO 0
-#else
-# define ZERO 1
-#endif
-
-/* A set of settings bound to a message domain. Used to store settings
- from bindtextdomain() and bind_textdomain_codeset(). */
-struct binding
-{
- struct binding *next;
- char *dirname;
- int codeset_cntr; /* Incremented each time codeset changes. */
- char *codeset;
- char domainname[ZERO];
-};
-
-/* A counter which is incremented each time some previous translations
- become invalid.
- This variable is part of the external ABI of the GNU libintl. */
-extern int _nl_msg_cat_cntr;
-
-#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 (struct loaded_l10nfile *__domain,
- struct binding *__domainbinding)
- internal_function;
-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;
-
-char *_nl_find_msg (struct loaded_l10nfile *domain_file,
- struct binding *domainbinding, const char *msgid,
- size_t *lengthp)
- internal_function;
-
-#ifdef _LIBC
-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
-/* 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 @@ */
-
-#endif /* gettextP.h */
diff --git a/intl/gmo.h b/intl/gmo.h
deleted file mode 100644
index e7c9cc14..00000000
--- a/intl/gmo.h
+++ /dev/null
@@ -1,149 +0,0 @@
-/* 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 --git a/intl/hash-string.h b/intl/hash-string.h
deleted file mode 100644
index 093e3b1c..00000000
--- a/intl/hash-string.h
+++ /dev/null
@@ -1,48 +0,0 @@
-/* Description of GNU message catalog format: string hashing function.
- 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 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. */
-
-/* @@ end of prolog @@ */
-
-/* We assume to have `unsigned long int' value with at least 32 bits. */
-#define HASHWORDBITS 32
-
-
-/* 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 inline unsigned long int
-hash_string (const char *str_param)
-{
- unsigned long int hval, g;
- const char *str = str_param;
-
- /* Compute the hash value for the given string. */
- hval = 0;
- while (*str != '\0')
- {
- hval <<= 4;
- hval += (unsigned char) *str++;
- g = hval & ((unsigned long int) 0xf << (HASHWORDBITS - 4));
- if (g != 0)
- {
- hval ^= g >> (HASHWORDBITS - 8);
- hval ^= g;
- }
- }
- return hval;
-}
diff --git a/intl/intl-compat.c b/intl/intl-compat.c
deleted file mode 100644
index 96f9d955..00000000
--- a/intl/intl-compat.c
+++ /dev/null
@@ -1,131 +0,0 @@
-/* intl-compat.c - Stub functions to call gettext functions from GNU gettext
- Library.
- 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 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 "gettextP.h"
-
-/* @@ end of prolog @@ */
-
-/* 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
-#undef dgettext
-#undef dcgettext
-#undef ngettext
-#undef dngettext
-#undef dcngettext
-#undef textdomain
-#undef bindtextdomain
-#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 (const char *msgid)
-{
- return libintl_gettext (msgid);
-}
-
-
-DLL_EXPORTED
-char *
-dgettext (const char *domainname, const char *msgid)
-{
- return libintl_dgettext (domainname, msgid);
-}
-
-
-DLL_EXPORTED
-char *
-dcgettext (const char *domainname, const char *msgid, int category)
-{
- return libintl_dcgettext (domainname, msgid, category);
-}
-
-
-DLL_EXPORTED
-char *
-ngettext (const char *msgid1, const char *msgid2, unsigned long int n)
-{
- return libintl_ngettext (msgid1, msgid2, n);
-}
-
-
-DLL_EXPORTED
-char *
-dngettext (const char *domainname,
- const char *msgid1, const char *msgid2, unsigned long int n)
-{
- return libintl_dngettext (domainname, msgid1, msgid2, n);
-}
-
-
-DLL_EXPORTED
-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);
-}
-
-
-DLL_EXPORTED
-char *
-textdomain (const char *domainname)
-{
- return libintl_textdomain (domainname);
-}
-
-
-DLL_EXPORTED
-char *
-bindtextdomain (const char *domainname, const char *dirname)
-{
- return libintl_bindtextdomain (domainname, dirname);
-}
-
-
-DLL_EXPORTED
-char *
-bind_textdomain_codeset (const char *domainname, const char *codeset)
-{
- return libintl_bind_textdomain_codeset (domainname, codeset);
-}
diff --git a/intl/l10nflist.c b/intl/l10nflist.c
deleted file mode 100644
index eb995aaf..00000000
--- a/intl/l10nflist.c
+++ /dev/null
@@ -1,421 +0,0 @@
-/* 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 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 <string.h> to provide a prototype for stpcpy().
- This must come before <config.h> because <config.h> may include
- <features.h>, and once <features.h> has been included, it's too late. */
-#ifndef _GNU_SOURCE
-# define _GNU_SOURCE 1
-#endif
-
-#ifdef HAVE_CONFIG_H
-# include <config.h>
-#endif
-
-#include <string.h>
-
-#if defined _LIBC || defined HAVE_ARGZ_H
-# include <argz.h>
-#endif
-#include <ctype.h>
-#include <sys/types.h>
-#include <stdlib.h>
-
-#include "loadinfo.h"
-
-/* On some strange systems still no definition of NULL is found. Sigh! */
-#ifndef NULL
-# if defined __STDC__ && __STDC__
-# define NULL ((void *) 0)
-# else
-# define NULL 0
-# endif
-#endif
-
-/* @@ end of prolog @@ */
-
-#ifdef _LIBC
-/* Rename the non ANSI C functions. This is required by the standard
- because some ANSI C functions will require linking with this object
- file and the name space must not be polluted. */
-# ifndef stpcpy
-# define stpcpy(dest, src) __stpcpy(dest, src)
-# endif
-#else
-# ifndef HAVE_STPCPY
-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__ (const char *argz, size_t len)
-{
- size_t count = 0;
- while (len > 0)
- {
- size_t part_len = strlen (argz);
- argz += part_len + 1;
- len -= part_len + 1;
- count++;
- }
- return count;
-}
-# 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__ (char *argz, size_t len, int sep)
-{
- while (len > 0)
- {
- size_t part_len = strlen (argz);
- argz += part_len;
- len -= part_len + 1;
- if (len > 0)
- *argz++ = sep;
- }
-}
-# 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__ (char *argz, size_t argz_len, const char *entry)
-{
- if (entry)
- {
- if (entry < argz + argz_len)
- entry = strchr (entry, '\0') + 1;
-
- return entry >= argz + argz_len ? NULL : (char *) entry;
- }
- else
- if (argz_len > 0)
- return argz;
- else
- return 0;
-}
-# undef __argz_next
-# define __argz_next(argz, len, entry) argz_next__ (argz, len, entry)
-#endif /* !_LIBC && !HAVE___ARGZ_NEXT */
-
-
-/* Return number of bits set in X. */
-static inline int
-pop (int x)
-{
- /* We assume that no more than 16 bits are used. */
- x = ((x & ~0x5555) >> 1) + (x & 0x5555);
- x = ((x & ~0x3333) >> 2) + (x & 0x3333);
- x = ((x >> 4) + x) & 0x0f0f;
- x = ((x >> 8) + x) & 0xff;
-
- return x;
-}
-
-
-struct loaded_l10nfile *
-_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 **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)
- + ((mask & TERRITORY) != 0
- ? strlen (territory) + 1 : 0)
- + ((mask & XPG_CODESET) != 0
- ? strlen (codeset) + 1 : 0)
- + ((mask & XPG_NORM_CODESET) != 0
- ? strlen (normalized_codeset) + 1 : 0)
- + (((mask & XPG_MODIFIER) != 0
- || (mask & CEN_AUDIENCE) != 0)
- ? strlen (modifier) + 1 : 0)
- + ((mask & CEN_SPECIAL) != 0
- ? strlen (special) + 1 : 0)
- + (((mask & CEN_SPONSOR) != 0
- || (mask & CEN_REVISION) != 0)
- ? (1 + ((mask & CEN_SPONSOR) != 0
- ? strlen (sponsor) : 0)
- + ((mask & CEN_REVISION) != 0
- ? strlen (revision) + 1 : 0)) : 0)
- + 1 + strlen (filename) + 1);
-
- if (abs_filename == NULL)
- return NULL;
-
- /* Construct file name. */
- 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)
- {
- *cp++ = '_';
- cp = stpcpy (cp, territory);
- }
- if ((mask & XPG_CODESET) != 0)
- {
- *cp++ = '.';
- cp = stpcpy (cp, codeset);
- }
- if ((mask & XPG_NORM_CODESET) != 0)
- {
- *cp++ = '.';
- cp = stpcpy (cp, normalized_codeset);
- }
- if ((mask & (XPG_MODIFIER | CEN_AUDIENCE)) != 0)
- {
- /* This component can be part of both syntaces but has different
- leading characters. For CEN we use `+', else `@'. */
- *cp++ = (mask & CEN_AUDIENCE) != 0 ? '+' : '@';
- cp = stpcpy (cp, modifier);
- }
- if ((mask & CEN_SPECIAL) != 0)
- {
- *cp++ = '+';
- cp = stpcpy (cp, special);
- }
- if ((mask & (CEN_SPONSOR | CEN_REVISION)) != 0)
- {
- *cp++ = ',';
- if ((mask & CEN_SPONSOR) != 0)
- cp = stpcpy (cp, sponsor);
- if ((mask & CEN_REVISION) != 0)
- {
- *cp++ = '_';
- cp = stpcpy (cp, revision);
- }
- }
-
- *cp++ = '/';
- stpcpy (cp, filename);
-
- /* Look in list of already loaded domains whether it is already
- available. */
- lastp = l10nfile_list;
- for (retval = *l10nfile_list; retval != NULL; retval = retval->next)
- if (retval->filename != NULL)
- {
- int compare = strcmp (retval->filename, abs_filename);
- if (compare == 0)
- /* We found it! */
- break;
- if (compare < 0)
- {
- /* It's not in the list. */
- retval = NULL;
- break;
- }
-
- lastp = &retval->next;
- }
-
- if (retval != NULL || do_allocate == 0)
- {
- free (abs_filename);
- return retval;
- }
-
- 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;
-
- /* 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;
-
- retval->next = *lastp;
- *lastp = retval;
-
- entries = 0;
- /* 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))
- {
- if (dirlist_count > 1)
- {
- /* Iterate over all elements of the DIRLIST. */
- char *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, dirlist, dirlist_len,
- cnt, language, territory, codeset,
- normalized_codeset, modifier, special,
- sponsor, revision, filename, 1);
- }
- retval->successor[entries] = NULL;
-
- return retval;
-}
-
-/* Normalize codeset name. There is no standard for the codeset
- names. Normalization allows the user to use any of the common
- names. The return value is dynamically allocated and has to be
- freed by the caller. */
-const char *
-_nl_normalize_codeset (const char *codeset, size_t name_len)
-{
- int len = 0;
- int only_digit = 1;
- char *retval;
- char *wp;
- size_t cnt;
-
- for (cnt = 0; cnt < name_len; ++cnt)
- if (isalnum ((unsigned char) codeset[cnt]))
- {
- ++len;
-
- if (isalpha ((unsigned char) codeset[cnt]))
- only_digit = 0;
- }
-
- retval = (char *) malloc ((only_digit ? 3 : 0) + len + 1);
-
- if (retval != NULL)
- {
- if (only_digit)
- wp = stpcpy (retval, "iso");
- else
- wp = retval;
-
- for (cnt = 0; cnt < name_len; ++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';
- }
-
- return (const char *) retval;
-}
-
-
-/* @@ begin of epilog @@ */
-
-/* We don't want libintl.a to depend on any other library. So we
- avoid the non-standard function stpcpy. In GNU C Library this
- function is available, though. Also allow the symbol HAVE_STPCPY
- to be defined. */
-#if !_LIBC && !HAVE_STPCPY
-static char *
-stpcpy (char *dest, const char *src)
-{
- while ((*dest++ = *src++) != '\0')
- /* Do nothing. */ ;
- return dest - 1;
-}
-#endif
diff --git a/intl/libgnuintl.h.in b/intl/libgnuintl.h.in
deleted file mode 100644
index 3be7eb99..00000000
--- a/intl/libgnuintl.h.in
+++ /dev/null
@@ -1,383 +0,0 @@
-/* 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 --git a/intl/loadinfo.h b/intl/loadinfo.h
deleted file mode 100644
index 65e5ebd1..00000000
--- a/intl/loadinfo.h
+++ /dev/null
@@ -1,145 +0,0 @@
-/* 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 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 _LOADINFO_H
-#define _LOADINFO_H 1
-
-/* 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
-#endif
-
-/* Tell the compiler when a conditional or integer expression is
- almost always true or almost always false. */
-#ifndef HAVE_BUILTIN_EXPECT
-# define __builtin_expect(expr, val) (expr)
-#endif
-
-/* Separator in PATH like lists of pathnames. */
-#if defined _WIN32 || defined __WIN32__ || defined __EMX__ || defined __DJGPP__
- /* Win32, OS/2, DOS */
-# define PATH_SEPARATOR ';'
-#else
- /* Unix */
-# define PATH_SEPARATOR ':'
-#endif
-
-/* Encoding of locale name parts. */
-#define CEN_REVISION 1
-#define CEN_SPONSOR 2
-#define CEN_SPECIAL 4
-#define XPG_NORM_CODESET 8
-#define XPG_CODESET 16
-#define TERRITORY 32
-#define CEN_AUDIENCE 64
-#define XPG_MODIFIER 128
-
-#define CEN_SPECIFIC (CEN_REVISION|CEN_SPONSOR|CEN_SPECIAL|CEN_AUDIENCE)
-#define XPG_SPECIFIC (XPG_CODESET|XPG_NORM_CODESET|XPG_MODIFIER)
-
-
-struct loaded_l10nfile
-{
- const char *filename;
- int decided;
-
- const void *data;
-
- struct loaded_l10nfile *next;
- struct loaded_l10nfile *successor[1];
-};
-
-
-/* Normalize codeset name. There is no standard for the codeset
- names. Normalization allows the user to use any of the common
- names. The return value is dynamically allocated and has to be
- freed by the caller. */
-extern const char *_nl_normalize_codeset (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 (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);
-
-/* 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);
-
-/* 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 --git a/intl/loadmsgcat.c b/intl/loadmsgcat.c
deleted file mode 100644
index 99c51b4c..00000000
--- a/intl/loadmsgcat.c
+++ /dev/null
@@ -1,1420 +0,0 @@
-/* Load needed message catalogs.
- 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. */
-
-/* Tell glibc's <string.h> to provide a prototype for mempcpy().
- This must come before <config.h> because <config.h> may include
- <features.h>, and once <features.h> has been included, it's too late. */
-#ifndef _GNU_SOURCE
-# define _GNU_SOURCE 1
-#endif
-
-#ifdef HAVE_CONFIG_H
-# include <config.h>
-#endif
-
-#include <ctype.h>
-#include <errno.h>
-#include <fcntl.h>
-#include <sys/types.h>
-#include <sys/stat.h>
-
-#ifdef __GNUC__
-# undef alloca
-# 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 <stdlib.h>
-#include <string.h>
-
-#if defined HAVE_UNISTD_H || defined _LIBC
-# include <unistd.h>
-#endif
-
-#ifdef _LIBC
-# include <langinfo.h>
-# include <locale.h>
-#endif
-
-#if (defined HAVE_MMAP && defined HAVE_MUNMAP && !defined DISALLOW_MMAP) \
- || (defined _LIBC && defined _POSIX_MAPPED_FILES)
-# include <sys/mman.h>
-# undef HAVE_MMAP
-# define HAVE_MMAP 1
-#else
-# undef HAVE_MMAP
-#endif
-
-#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
-/* Rename the non ISO C functions. This is required by the standard
- because some ISO C functions will require linking with this object
- file and the name space must not be polluted. */
-# define open __open
-# define close __close
-# define read __read
-# define mmap __mmap
-# define munmap __munmap
-#endif
-
-/* For those losing systems which don't have `alloca' we have to add
- some additional code emulating it. */
-#ifdef HAVE_ALLOCA
-# define freea(p) /* nothing */
-#else
-# define alloca(n) malloc (n)
-# define freea(p) free (p)
-#endif
-
-/* For systems that distinguish between text and binary I/O.
- O_BINARY is usually declared in <fcntl.h>. */
-#if !defined O_BINARY && defined _O_BINARY
- /* For MSC-compatible compilers. */
-# define O_BINARY _O_BINARY
-# define O_TEXT _O_TEXT
-#endif
-#ifdef __BEOS__
- /* BeOS 5 has O_BINARY and O_TEXT, but they have no effect. */
-# undef O_BINARY
-# undef O_TEXT
-#endif
-/* On reasonable systems, binary I/O is the default. */
-#ifndef O_BINARY
-# define O_BINARY 0
-#endif
-
-
-/* We need a sign, whether a new catalog was loaded, which can be associated
- with all translations. This is important if the translations are
- cached by one of GCC's features. */
-int _nl_msg_cat_cntr;
-
-
-/* Expand a system dependent string segment. Return NULL if unsupported. */
-static const char *
-get_sysdep_segment_value (const char *name)
-{
- /* 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')
- {
- 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;
-}
-
-/* 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;
-
- /* Get the header entry. */
- nullentry = _nl_find_msg (domain_file, domainbinding, "", &nullentrylen);
-
- if (nullentry != NULL)
- {
-#if defined _LIBC || HAVE_ICONV
- const char *charsetstr;
-
- charsetstr = strstr (nullentry, "charset=");
- if (charsetstr != NULL)
- {
- size_t len;
- char *charset;
- const char *outcharset;
-
- charsetstr += strlen ("charset=");
- len = strcspn (charsetstr, " \t\n");
-
- charset = (char *) alloca (len + 1);
-# if defined _LIBC || HAVE_MEMPCPY
- *((char *) mempcpy (charset, charsetstr, len)) = '\0';
-# else
- memcpy (charset, charsetstr, len);
- charset[len] = '\0';
-# endif
-
- /* The output charset should normally be determined by the
- locale. But sometimes the locale is not used or not correctly
- set up, so we provide a possibility for the user to override
- this. Moreover, the value specified through
- bind_textdomain_codeset overrides both. */
- if (domainbinding != NULL && domainbinding->codeset != NULL)
- outcharset = domainbinding->codeset;
- else
- {
- outcharset = getenv ("OUTPUT_CHARSET");
- if (outcharset == NULL || outcharset[0] == '\0')
- {
-# ifdef _LIBC
- outcharset = _NL_CURRENT (LC_CTYPE, 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;
-}
-
-/* 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 (struct loaded_l10nfile *domain_file,
- struct binding *domainbinding)
-{
- int fd;
- size_t size;
-#ifdef _LIBC
- struct stat64 st;
-#else
- struct stat st;
-#endif
- struct mo_file_header *data = (struct mo_file_header *) -1;
- int use_mmap = 0;
- struct loaded_domain *domain;
- 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
- syntax. */
- if (domain_file->filename == NULL)
- return;
-
- /* Try to open the addressed file. */
- fd = open (domain_file->filename, O_RDONLY | O_BINARY);
- if (fd == -1)
- return;
-
- /* We must know about the size of the file. */
- if (
-#ifdef _LIBC
- __builtin_expect (fstat64 (fd, &st) != 0, 0)
-#else
- __builtin_expect (fstat (fd, &st) != 0, 0)
-#endif
- || __builtin_expect ((size = (size_t) st.st_size) != st.st_size, 0)
- || __builtin_expect (size < sizeof (struct mo_file_header), 0))
- {
- /* Something went wrong. */
- close (fd);
- return;
- }
-
-#ifdef HAVE_MMAP
- /* Now we are ready to load the file. If mmap() is available we try
- this first. If not available or it failed we try to load it. */
- data = (struct mo_file_header *) mmap (NULL, size, PROT_READ,
- MAP_PRIVATE, fd, 0);
-
- if (__builtin_expect (data != (struct mo_file_header *) -1, 1))
- {
- /* mmap() call was successful. */
- close (fd);
- use_mmap = 1;
- }
-#endif
-
- /* If the data is not yet available (i.e. mmap'ed) we try to load
- it manually. */
- if (data == (struct mo_file_header *) -1)
- {
- size_t to_read;
- char *read_ptr;
-
- data = (struct mo_file_header *) malloc (size);
- if (data == NULL)
- return;
-
- to_read = size;
- read_ptr = (char *) data;
- do
- {
- long int nb = (long int) read (fd, read_ptr, to_read);
- if (nb <= 0)
- {
-#ifdef EINTR
- if (nb == -1 && errno == EINTR)
- continue;
-#endif
- close (fd);
- return;
- }
- read_ptr += nb;
- to_read -= nb;
- }
- while (to_read > 0);
-
- close (fd);
- }
-
- /* Using the magic number we can test whether it really is a message
- catalog file. */
- if (__builtin_expect (data->magic != _MAGIC && data->magic != _MAGIC_SWAPPED,
- 0))
- {
- /* The magic number is wrong: not a message catalog file. */
-#ifdef HAVE_MMAP
- if (use_mmap)
- munmap ((caddr_t) data, size);
- else
-#endif
- free (data);
- return;
- }
-
- domain = (struct loaded_domain *) malloc (sizeof (struct loaded_domain));
- if (domain == NULL)
- return;
- domain_file->data = domain;
-
- domain->data = (char *) data;
- 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. */
- 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 = (const struct string_desc *)
- ((char *) data + W (domain->must_swap, data->orig_tab_offset));
- 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 =
- (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);
- else
-#endif
- free (data);
- free (domain);
- domain_file->data = NULL;
- return;
- }
-
- /* 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. */
- EXTRACT_PLURAL_EXPRESSION (nullentry, &domain->plural, &domain->nplurals);
-}
-
-
-#ifdef _LIBC
-void
-internal_function
-_nl_unload_domain (struct loaded_domain *domain)
-{
- if (domain->plural != &__gettext_germanic_plural)
- __gettext_free_exp (domain->plural);
-
- _nl_free_domain_conv (domain);
-
- if (domain->malloced)
- free (domain->malloced);
-
-# ifdef _POSIX_MAPPED_FILES
- if (domain->use_mmap)
- munmap ((caddr_t) domain->data, domain->mmap_size);
- else
-# endif /* _POSIX_MAPPED_FILES */
- free ((void *) domain->data);
-
- free (domain);
-}
-#endif
diff --git a/intl/localcharset.c b/intl/localcharset.c
deleted file mode 100644
index 4865f103..00000000
--- a/intl/localcharset.c
+++ /dev/null
@@ -1,398 +0,0 @@
-/* Determine a canonical name for the current locale's character encoding.
-
- 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. */
-
-/* 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
-
-#include <stdio.h>
-#if HAVE_STRING_H
-# include <string.h>
-#else
-# include <strings.h>
-#endif
-#if HAVE_STDLIB_H
-# include <stdlib.h>
-#endif
-
-#if defined _WIN32 || defined __WIN32__
-# undef WIN32 /* avoid warning on mingw32 */
-# define WIN32
-#endif
-
-#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
-# if HAVE_SETLOCALE
-# include <locale.h>
-# endif
-# endif
-#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 '/'
-#endif
-
-#ifndef ISSLASH
-# 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
- 'charset_aliases' simultaneously, both will produce the same value,
- and everything will be ok if the two assignments to 'charset_aliases'
- are atomic. But I don't know what will happen if the two assignments mix. */
-#if __STDC__ != 1
-# define volatile /* empty */
-#endif
-/* Pointer to the contents of the charset.alias file, if it has already been
- read, else NULL. Its format is:
- ALIAS_1 '\0' CANONICAL_1 '\0' ... ALIAS_n '\0' CANONICAL_n '\0' '\0' */
-static const char * volatile charset_aliases;
-
-/* Return a pointer to the contents of the charset.alias file. */
-static const char *
-get_charset_aliases ()
-{
- const char *cp;
-
- cp = charset_aliases;
- if (cp == NULL)
- {
-#if !(defined VMS || defined WIN32)
- FILE *fp;
- const char *dir = relocate (LIBDIR);
- const char *base = "charset.alias";
- char *file_name;
-
- /* Concatenate dir and base into freshly allocated file_name. */
- {
- size_t dir_len = strlen (dir);
- size_t base_len = strlen (base);
- int add_slash = (dir_len > 0 && !ISSLASH (dir[dir_len - 1]));
- file_name = (char *) malloc (dir_len + add_slash + base_len + 1);
- if (file_name != NULL)
- {
- memcpy (file_name, dir, dir_len);
- if (add_slash)
- file_name[dir_len] = DIRECTORY_SEPARATOR;
- memcpy (file_name + dir_len + add_slash, base, base_len + 1);
- }
- }
-
- if (file_name == NULL || (fp = fopen (file_name, "r")) == NULL)
- /* Out of memory or file not found, treat it as empty. */
- cp = "";
- else
- {
- /* Parse the file's contents. */
- int c;
- char buf1[50+1];
- char buf2[50+1];
- char *res_ptr = NULL;
- size_t res_size = 0;
- size_t l1, l2;
-
- for (;;)
- {
- c = getc (fp);
- if (c == EOF)
- break;
- if (c == '\n' || c == ' ' || c == '\t')
- continue;
- if (c == '#')
- {
- /* Skip comment, to end of line. */
- do
- c = getc (fp);
- while (!(c == EOF || c == '\n'));
- if (c == EOF)
- break;
- continue;
- }
- ungetc (c, fp);
- if (fscanf (fp, "%50s %50s", buf1, buf2) < 2)
- break;
- l1 = strlen (buf1);
- l2 = strlen (buf2);
- if (res_size == 0)
- {
- res_size = l1 + 1 + l2 + 1;
- res_ptr = (char *) malloc (res_size + 1);
- }
- else
- {
- res_size += l1 + 1 + l2 + 1;
- res_ptr = (char *) realloc (res_ptr, res_size + 1);
- }
- if (res_ptr == NULL)
- {
- /* Out of memory. */
- res_size = 0;
- break;
- }
- strcpy (res_ptr + res_size - (l2 + 1) - (l1 + 1), buf1);
- strcpy (res_ptr + res_size - (l2 + 1), buf2);
- }
- fclose (fp);
- if (res_size == 0)
- cp = "";
- else
- {
- *(res_ptr + res_size) = '\0';
- cp = res_ptr;
- }
- }
-
- if (file_name != NULL)
- free (file_name);
-
-#else
-
-# 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"
- "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;
- }
-
- return cp;
-}
-
-/* Determine the current locale's character encoding, and canonicalize it
- into one of the canonical names listed in config.charset.
- The result must not be freed; it is statically allocated.
- If the canonical name cannot be determined, the result is a non-canonical
- name. */
-
-#ifdef STATIC
-STATIC
-#endif
-const char *
-locale_charset ()
-{
- const char *codeset;
- const char *aliases;
-
-#if !(defined WIN32 || defined OS2)
-
-# if HAVE_LANGINFO_CODESET
-
- /* Most systems support nl_langinfo (CODESET) nowadays. */
- codeset = nl_langinfo (CODESET);
-
-# else
-
- /* On old systems which lack it, use setlocale or getenv. */
- const char *locale = NULL;
-
- /* But most old systems don't have a complete set of locales. Some
- (like SunOS 4 or DJGPP) have only the C locale. Therefore we don't
- use setlocale here; it would return "C" when it doesn't support the
- locale name the user has set. */
-# if HAVE_SETLOCALE && 0
- locale = setlocale (LC_CTYPE, NULL);
-# endif
- if (locale == NULL || locale[0] == '\0')
- {
- locale = getenv ("LC_ALL");
- if (locale == NULL || locale[0] == '\0')
- {
- locale = getenv ("LC_CTYPE");
- if (locale == NULL || locale[0] == '\0')
- locale = getenv ("LANG");
- }
- }
-
- /* On some old systems, one used to set locale = "iso8859_1". On others,
- you set it to "language_COUNTRY.charset". In any case, we resolve it
- through the charset.alias file. */
- codeset = locale;
-
-# endif
-
-#elif defined WIN32
-
- static char buf[2 + 10 + 1];
-
- /* 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)
- /* The canonical name cannot be determined. */
- codeset = "";
-
- /* Resolve alias. */
- for (aliases = get_charset_aliases ();
- *aliases != '\0';
- aliases += strlen (aliases) + 1, aliases += strlen (aliases) + 1)
- if (strcmp (codeset, aliases) == 0
- || (aliases[0] == '*' && aliases[1] == '\0'))
- {
- codeset = aliases + strlen (aliases) + 1;
- break;
- }
-
- /* 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 --git a/intl/localcharset.h b/intl/localcharset.h
deleted file mode 100644
index 3b137e73..00000000
--- a/intl/localcharset.h
+++ /dev/null
@@ -1,42 +0,0 @@
-/* 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 --git a/intl/locale.alias b/intl/locale.alias
deleted file mode 100644
index bd6bb256..00000000
--- a/intl/locale.alias
+++ /dev/null
@@ -1,78 +0,0 @@
-# Locale name alias data base.
-# 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 Library General Public License as published
-# by the Free Software Foundation; either version 2, or (at your option)
-# any later version.
-#
-# This program is distributed in the hope that it will be useful,
-# but WITHOUT ANY WARRANTY; without even the implied warranty of
-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
-# Library General Public License for more details.
-#
-# You should have received a copy of the GNU Library General Public
-# License along with this program; if not, write to the Free Software
-# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307,
-# USA.
-
-# The format of this file is the same as for the corresponding file of
-# the X Window System, which normally can be found in
-# /usr/lib/X11/locale/locale.alias
-# A single line contains two fields: an alias and a substitution value.
-# All entries are case independent.
-
-# Note: This file is far from being complete. If you have a value for
-# your own site which you think might be useful for others too, share
-# it with the rest of us. Send it using the `glibcbug' script to
-# bugs@gnu.org.
-
-# Packages using this file:
-
-bokmal nb_NO.ISO-8859-1
-bokmål nb_NO.ISO-8859-1
-catalan ca_ES.ISO-8859-1
-croatian hr_HR.ISO-8859-2
-czech cs_CZ.ISO-8859-2
-danish da_DK.ISO-8859-1
-dansk da_DK.ISO-8859-1
-deutsch de_DE.ISO-8859-1
-dutch nl_NL.ISO-8859-1
-eesti et_EE.ISO-8859-1
-estonian et_EE.ISO-8859-1
-finnish fi_FI.ISO-8859-1
-français fr_FR.ISO-8859-1
-french fr_FR.ISO-8859-1
-galego gl_ES.ISO-8859-1
-galician gl_ES.ISO-8859-1
-german de_DE.ISO-8859-1
-greek el_GR.ISO-8859-7
-hebrew he_IL.ISO-8859-8
-hrvatski hr_HR.ISO-8859-2
-hungarian hu_HU.ISO-8859-2
-icelandic is_IS.ISO-8859-1
-italian it_IT.ISO-8859-1
-japanese ja_JP.eucJP
-japanese.euc ja_JP.eucJP
-ja_JP ja_JP.eucJP
-ja_JP.ujis ja_JP.eucJP
-japanese.sjis ja_JP.SJIS
-korean ko_KR.eucKR
-korean.euc ko_KR.eucKR
-ko_KR ko_KR.eucKR
-lithuanian lt_LT.ISO-8859-13
-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
-romanian ro_RO.ISO-8859-2
-russian ru_RU.ISO-8859-5
-slovak sk_SK.ISO-8859-2
-slovene sl_SI.ISO-8859-2
-slovenian sl_SI.ISO-8859-2
-spanish es_ES.ISO-8859-1
-swedish sv_SE.ISO-8859-1
-thai th_TH.TIS-620
-turkish tr_TR.ISO-8859-9
diff --git a/intl/localealias.c b/intl/localealias.c
deleted file mode 100644
index 2eaf8813..00000000
--- a/intl/localealias.c
+++ /dev/null
@@ -1,414 +0,0 @@
-/* Handle aliases for locale names.
- 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 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 <string.h> to provide a prototype for mempcpy().
- This must come before <config.h> because <config.h> may include
- <features.h>, and once <features.h> has been included, it's too late. */
-#ifndef _GNU_SOURCE
-# define _GNU_SOURCE 1
-#endif
-
-#ifdef HAVE_CONFIG_H
-# include <config.h>
-#endif
-
-#include <ctype.h>
-#include <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
-# 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 <stdlib.h>
-#include <string.h>
-
-#include "gettextP.h"
-
-#if ENABLE_RELOCATABLE
-# include "relocatable.h"
-#else
-# define relocate(pathname) (pathname)
-#endif
-
-/* @@ end of prolog @@ */
-
-#ifdef _LIBC
-/* Rename the non ANSI C functions. This is required by the standard
- because some ANSI C functions will require linking with this object
- file and the name space must not be polluted. */
-# define strcasecmp __strcasecmp
-
-# ifndef mempcpy
-# 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>
-
-__libc_lock_define_initialized (static, lock);
-#endif
-
-#ifndef internal_function
-# 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
-# define freea(p) /* nothing */
-#else
-# define alloca(n) malloc (n)
-# define freea(p) free (p)
-#endif
-
-#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 || HAVE_DECL_FEOF_UNLOCKED
-# undef feof
-# define feof(s) feof_unlocked (s)
-#endif
-
-
-struct alias_map
-{
- const char *alias;
- const char *value;
-};
-
-
-#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;
-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 (const char *fname, int fname_len)
- internal_function;
-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 (const char *name)
-{
- static const char *locale_alias_path;
- struct alias_map *retval;
- const char *result = NULL;
- size_t added;
-
-#ifdef _LIBC
- __libc_lock_lock (lock);
-#endif
-
- if (locale_alias_path == NULL)
- locale_alias_path = LOCALE_ALIAS_PATH;
-
- do
- {
- struct alias_map item;
-
- item.alias = name;
-
- if (nmap > 0)
- retval = (struct alias_map *) bsearch (&item, map, nmap,
- sizeof (struct alias_map),
- (int (*) (const void *,
- const void *)
- ) alias_compare);
- else
- retval = NULL;
-
- /* We really found an alias. Return the value. */
- if (retval != NULL)
- {
- result = retval->value;
- break;
- }
-
- /* Perhaps we can find another alias file. */
- added = 0;
- while (added == 0 && locale_alias_path[0] != '\0')
- {
- const char *start;
-
- while (locale_alias_path[0] == PATH_SEPARATOR)
- ++locale_alias_path;
- start = locale_alias_path;
-
- while (locale_alias_path[0] != '\0'
- && locale_alias_path[0] != PATH_SEPARATOR)
- ++locale_alias_path;
-
- if (start < locale_alias_path)
- added = read_alias_file (start, locale_alias_path - start);
- }
- }
- while (added != 0);
-
-#ifdef _LIBC
- __libc_lock_unlock (lock);
-#endif
-
- return result;
-}
-
-
-static size_t
-internal_function
-read_alias_file (const char *fname, int fname_len)
-{
- FILE *fp;
- char *full_fname;
- size_t added;
- static const char aliasfile[] = "/locale.alias";
-
- full_fname = (char *) alloca (fname_len + sizeof aliasfile);
-#ifdef HAVE_MEMPCPY
- mempcpy (mempcpy (full_fname, fname, fname_len),
- aliasfile, sizeof aliasfile);
-#else
- memcpy (full_fname, fname, fname_len);
- memcpy (&full_fname[fname_len], aliasfile, sizeof aliasfile);
-#endif
-
- 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))
- {
- /* 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
- 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)
- /* EOF reached. */
- break;
-
- cp = buf;
- /* Ignore leading white space. */
- 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 ((unsigned char) cp[0]))
- ++cp;
- /* Terminate alias name. */
- if (cp[0] != '\0')
- *cp++ = '\0';
-
- /* Now look for the beginning of the value. */
- while (isspace ((unsigned char) cp[0]))
- ++cp;
-
- if (cp[0] != '\0')
- {
- size_t alias_len;
- size_t value_len;
-
- value = cp++;
- while (cp[0] != '\0' && !isspace ((unsigned char) cp[0]))
- ++cp;
- /* Terminate value. */
- if (cp[0] == '\n')
- {
- /* This has to be done to make the following test
- for the end of line possible. We are looking for
- the terminating '\n' which do not overwrite here. */
- *cp++ = '\0';
- *cp = '\n';
- }
- else if (cp[0] != '\0')
- *cp++ = '\0';
-
- if (nmap >= maxmap)
- if (__builtin_expect (extend_alias_table (), 0))
- return added;
-
- alias_len = strlen (alias) + 1;
- value_len = strlen (value) + 1;
-
- if (string_space_act + alias_len + value_len > string_space_max)
- {
- /* Increase size of memory pool. */
- size_t new_size = (string_space_max
- + (alias_len + value_len > 1024
- ? alias_len + value_len : 1024));
- char *new_pool = (char *) realloc (string_space, new_size);
- if (new_pool == NULL)
- return added;
-
- if (__builtin_expect (string_space != new_pool, 0))
- {
- size_t i;
-
- for (i = 0; i < nmap; i++)
- {
- map[i].alias += new_pool - string_space;
- map[i].value += new_pool - string_space;
- }
- }
-
- string_space = new_pool;
- string_space_max = new_size;
- }
-
- map[nmap].alias = memcpy (&string_space[string_space_act],
- alias, alias_len);
- string_space_act += alias_len;
-
- map[nmap].value = memcpy (&string_space[string_space_act],
- value, value_len);
- string_space_act += value_len;
-
- ++nmap;
- ++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
- errors. --drepper */
- fclose (fp);
-
- if (added > 0)
- qsort (map, nmap, sizeof (struct alias_map),
- (int (*) (const void *, const void *)) alias_compare);
-
- return added;
-}
-
-
-static int
-extend_alias_table ()
-{
- size_t new_size;
- struct alias_map *new_map;
-
- new_size = maxmap == 0 ? 100 : 2 * maxmap;
- new_map = (struct alias_map *) realloc (map, (new_size
- * sizeof (struct alias_map)));
- if (new_map == NULL)
- /* Simply don't extend: we don't have any more core. */
- return -1;
-
- map = new_map;
- maxmap = new_size;
- return 0;
-}
-
-
-static int
-alias_compare (const struct alias_map *map1, const struct alias_map *map2)
-{
-#if defined _LIBC || defined HAVE_STRCASECMP
- return strcasecmp (map1->alias, map2->alias);
-#else
- const unsigned char *p1 = (const unsigned char *) map1->alias;
- const unsigned char *p2 = (const unsigned char *) map2->alias;
- unsigned char c1, c2;
-
- if (p1 == p2)
- return 0;
-
- do
- {
- /* I know this seems to be odd but the tolower() function in
- some systems libc cannot handle nonalpha characters. */
- c1 = isupper (*p1) ? tolower (*p1) : *p1;
- c2 = isupper (*p2) ? tolower (*p2) : *p2;
- if (c1 == '\0')
- break;
- ++p1;
- ++p2;
- }
- while (c1 == c2);
-
- return c1 - c2;
-#endif
-}
diff --git a/intl/localename.c b/intl/localename.c
deleted file mode 100644
index 5662e54f..00000000
--- a/intl/localename.c
+++ /dev/null
@@ -1,1142 +0,0 @@
-/* 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 --git a/intl/log.c b/intl/log.c
deleted file mode 100644
index cb6076e8..00000000
--- a/intl/log.c
+++ /dev/null
@@ -1,98 +0,0 @@
-/* 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 --git a/intl/ngettext.c b/intl/ngettext.c
deleted file mode 100644
index e73e00c4..00000000
--- a/intl/ngettext.c
+++ /dev/null
@@ -1,65 +0,0 @@
-/* Implementation of ngettext(3) function.
- 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. */
-
-#ifdef HAVE_CONFIG_H
-# include <config.h>
-#endif
-
-#ifdef _LIBC
-# define __need_NULL
-# include <stddef.h>
-#else
-# include <stdlib.h> /* Just for NULL. */
-#endif
-
-#include "gettextP.h"
-#ifdef _LIBC
-# include <libintl.h>
-#else
-# include "libgnuintl.h"
-#endif
-
-#include <locale.h>
-
-/* @@ end of prolog @@ */
-
-/* Names for the libintl functions are a problem. They must not clash
- with existing names and they should follow ANSI C. But this source
- code is also used in GNU C Library where the names have a __
- prefix. So we have to make a difference here. */
-#ifdef _LIBC
-# define NGETTEXT __ngettext
-# define DCNGETTEXT __dcngettext
-#else
-# define NGETTEXT 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 (const char *msgid1, const char *msgid2, unsigned long int n)
-{
- return DCNGETTEXT (NULL, msgid1, msgid2, n, LC_MESSAGES);
-}
-
-#ifdef _LIBC
-/* Alias for function name in GNU C Library. */
-weak_alias (__ngettext, ngettext);
-#endif
diff --git a/intl/os2compat.c b/intl/os2compat.c
deleted file mode 100644
index c8dc33e7..00000000
--- a/intl/os2compat.c
+++ /dev/null
@@ -1,98 +0,0 @@
-/* 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 --git a/intl/os2compat.h b/intl/os2compat.h
deleted file mode 100644
index 4f74e8c0..00000000
--- a/intl/os2compat.h
+++ /dev/null
@@ -1,46 +0,0 @@
-/* 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 --git a/intl/osdep.c b/intl/osdep.c
deleted file mode 100644
index b3725983..00000000
--- a/intl/osdep.c
+++ /dev/null
@@ -1,24 +0,0 @@
-/* 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 --git a/intl/plural-exp.c b/intl/plural-exp.c
deleted file mode 100644
index 8c04e642..00000000
--- a/intl/plural-exp.c
+++ /dev/null
@@ -1,154 +0,0 @@
-/* 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 --git a/intl/plural-exp.h b/intl/plural-exp.h
deleted file mode 100644
index 49e2c5bf..00000000
--- a/intl/plural-exp.h
+++ /dev/null
@@ -1,118 +0,0 @@
-/* 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 --git a/intl/plural.c b/intl/plural.c
deleted file mode 100644
index 72494f9e..00000000
--- a/intl/plural.c
+++ /dev/null
@@ -1,1490 +0,0 @@
-/* A Bison parser, made from plural.y
- by GNU bison 1.35. */
-
-#define YYBISON 1 /* Identify Bison output. */
-
-#define yyparse __gettextparse
-#define yylex __gettextlex
-#define yyerror __gettexterror
-#define yylval __gettextlval
-#define yychar __gettextchar
-#define yydebug __gettextdebug
-#define yynerrs __gettextnerrs
-# define EQUOP2 257
-# define CMPOP2 258
-# define ADDOP2 259
-# define MULOP2 260
-# define NUMBER 261
-
-#line 1 "plural.y"
-
-/* Expression parsing for plural form selection.
- Copyright (C) 2000-2001, 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. */
-
-/* The bison generated parser uses alloca. AIX 3 forces us to put this
- declaration at the beginning of the file. The declaration in bison's
- skeleton file comes too late. This must come before <config.h>
- because <config.h> may include arbitrary system headers. */
-#if defined _AIX && !defined __GNUC__
- #pragma alloca
-#endif
-
-#ifdef HAVE_CONFIG_H
-# include <config.h>
-#endif
-
-#include <stddef.h>
-#include <stdlib.h>
-#include "plural-exp.h"
-
-/* 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 49 "plural.y"
-#ifndef YYSTYPE
-typedef union {
- unsigned long int num;
- enum operator op;
- struct expression *exp;
-} yystype;
-# define YYSTYPE yystype
-# define YYSTYPE_IS_TRIVIAL 1
-#endif
-#line 55 "plural.y"
-
-/* Prototypes for local functions. */
-static int yylex (YYSTYPE *lval, const char **pexp);
-static void yyerror (const char *str);
-
-/* Allocation of expressions. */
-
-static struct expression *
-new_exp (int nargs, enum operator op, struct expression * const *args)
-{
- int i;
- struct expression *newp;
-
- /* If any of the argument could not be malloc'ed, just return NULL. */
- for (i = nargs - 1; i >= 0; i--)
- if (args[i] == NULL)
- goto fail;
-
- /* Allocate a new expression. */
- newp = (struct expression *) malloc (sizeof (*newp));
- if (newp != NULL)
- {
- newp->nargs = nargs;
- newp->operation = op;
- for (i = nargs - 1; i >= 0; i--)
- newp->val.args[i] = args[i];
- return newp;
- }
-
- fail:
- for (i = nargs - 1; i >= 0; i--)
- FREE_EXPRESSION (args[i]);
-
- return NULL;
-}
-
-static inline struct expression *
-new_exp_0 (enum operator op)
-{
- return new_exp (0, op, NULL);
-}
-
-static inline struct expression *
-new_exp_1 (enum operator op, struct expression *right)
-{
- struct expression *args[1];
-
- args[0] = right;
- return new_exp (1, op, args);
-}
-
-static struct expression *
-new_exp_2 (enum operator op, struct expression *left, struct expression *right)
-{
- struct expression *args[2];
-
- args[0] = left;
- args[1] = right;
- return new_exp (2, op, args);
-}
-
-static inline struct expression *
-new_exp_3 (enum operator op, struct expression *bexp,
- struct expression *tbranch, struct expression *fbranch)
-{
- struct expression *args[3];
-
- args[0] = bexp;
- args[1] = tbranch;
- args[2] = fbranch;
- return new_exp (3, op, args);
-}
-
-#ifndef YYDEBUG
-# define YYDEBUG 0
-#endif
-
-
-
-#define YYFINAL 27
-#define YYFLAG -32768
-#define YYNTBASE 16
-
-/* YYTRANSLATE(YYLEX) -- Bison token number corresponding to YYLEX. */
-#define YYTRANSLATE(x) ((unsigned)(x) <= 261 ? yytranslate[x] : 18)
-
-/* 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
-static const short yyprhs[] =
-{
- 0, 0, 2, 8, 12, 16, 20, 24, 28, 32,
- 35, 37, 39
-};
-static const short yyrhs[] =
-{
- 17, 0, 17, 3, 17, 12, 17, 0, 17, 4,
- 17, 0, 17, 5, 17, 0, 17, 6, 17, 0,
- 17, 7, 17, 0, 17, 8, 17, 0, 17, 9,
- 17, 0, 10, 17, 0, 13, 0, 11, 0, 14,
- 17, 15, 0
-};
-
-#endif
-
-#if YYDEBUG
-/* 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) || defined YYERROR_VERBOSE
-
-/* 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
-
-/* 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
-};
-
-/* 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
-};
-
-/* 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 yypact[] =
-{
- -9, -9,-32768,-32768, -9, 34,-32768, 11, -9, -9,
- -9, -9, -9, -9, -9,-32768, 24, 39, 43, 16,
- 26, -3,-32768, -9, 34, 21, 53,-32768
-};
-
-static const short yypgoto[] =
-{
- -32768, -1
-};
-
-
-#define YYLAST 53
-
-
-static const short yytable[] =
-{
- 6, 1, 2, 7, 3, 4, 14, 16, 17, 18,
- 19, 20, 21, 22, 8, 9, 10, 11, 12, 13,
- 14, 26, 24, 12, 13, 14, 15, 8, 9, 10,
- 11, 12, 13, 14, 13, 14, 23, 8, 9, 10,
- 11, 12, 13, 14, 10, 11, 12, 13, 14, 11,
- 12, 13, 14, 27
-};
-
-static const short yycheck[] =
-{
- 1, 10, 11, 4, 13, 14, 9, 8, 9, 10,
- 11, 12, 13, 14, 3, 4, 5, 6, 7, 8,
- 9, 0, 23, 7, 8, 9, 15, 3, 4, 5,
- 6, 7, 8, 9, 8, 9, 12, 3, 4, 5,
- 6, 7, 8, 9, 5, 6, 7, 8, 9, 6,
- 7, 8, 9, 0
-};
-#define YYPURE 1
-
-/* -*-C-*- Note some compilers choke on comments on `#line' lines. */
-#line 3 "/usr/local/share/bison/bison.simple"
-
-/* Skeleton output parser for bison,
-
- 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
- the Free Software Foundation; either version 2, or (at your option)
- any later version.
-
- This program is distributed in the hope that it will be useful,
- but WITHOUT ANY WARRANTY; without even the implied warranty of
- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- GNU General Public License for more details.
-
- You should have received a copy of the GNU General Public License
- along with this program; if not, write to the Free Software
- Foundation, Inc., 59 Temple Place - Suite 330,
- Boston, MA 02111-1307, USA. */
-
-/* As a special exception, when this file is copied by Bison into a
- Bison output file, you may use that output file without restriction.
- This special exception was added by the Free Software Foundation
- in version 1.24 of Bison. */
-
-/* This is the parser code that is written into each bison parser when
- the %semantic_parser declaration is not specified in the grammar.
- It was written by Richard Stallman by simplifying the hairy parser
- used when %semantic_parser is specified. */
-
-/* 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)
-
-#endif
-
-
-#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)
-#define YYEMPTY -2
-#define YYEOF 0
-#define YYACCEPT goto yyacceptlab
-#define YYABORT goto yyabortlab
-#define YYERROR goto yyerrlab1
-/* Like YYERROR except do call yyerror. This remains here temporarily
- to ease the transition to the new meaning of YYERROR, for GCC.
- Once GCC version 2 has supplanted version 1, this can go. */
-#define YYFAIL goto yyerrlab
-#define YYRECOVERING() (!!yyerrstatus)
-#define YYBACKUP(Token, Value) \
-do \
- if (yychar == YYEMPTY && yylen == 1) \
- { \
- yychar = (Token); \
- yylval = (Value); \
- yychar1 = YYTRANSLATE (yychar); \
- YYPOPSTACK; \
- goto yybackup; \
- } \
- else \
- { \
- yyerror ("syntax error: cannot back up"); \
- YYERROR; \
- } \
-while (0)
-
-#define YYTERROR 1
-#define YYERRCODE 256
-
-
-/* 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
-
-
-/* YYLEX -- calling `yylex' with the right arguments. */
-
-#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 */
-
-
-/* Enable debugging if requested. */
-#if YYDEBUG
-
-# ifndef YYFPRINTF
-# include <stdio.h> /* INFRINGES ON USER NAME SPACE */
-# define YYFPRINTF fprintf
-# endif
-
-# 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
-#endif
-
-/* 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
-#endif
-
-#ifndef YYMAXDEPTH
-# define YYMAXDEPTH 10000
-#endif
-
-#ifdef YYERROR_VERBOSE
-
-# 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 const char *yys = yystr;
-
- while (*yys++ != '\0')
- continue;
-
- return yys - yystr - 1;
-}
-# endif
-# endif
-
-# 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 *yyd = yydest;
- register const char *yys = yysrc;
-
- while ((*yyd++ = *yys++) != '\0')
- continue;
-
- return yyd - 1;
-}
-# endif
-# endif
-#endif
-
-#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 *.
- It should actually point to an object.
- Grammar actions can access the variable by casting it
- to the proper pointer type. */
-
-#ifdef 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
-int yyparse (void *);
-# 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_PARAM_DECL
-{
- /* If reentrant, generate the variables here. */
-#if YYPURE
- YY_DECL_VARIABLES
-#endif /* !YYPURE */
-
- register int yystate;
- register int yyn;
- int yyresult;
- /* Number of tokens to shift before error messages enabled. */
- int yyerrstatus;
- /* Lookahead token as an internal (translated) token number. */
- int yychar1 = 0;
-
- /* Three stacks and their tools:
- `yyss': related to states,
- `yyvs': related to semantic values,
- `yyls': related to locations.
-
- Refer to the stacks thru separate pointers, to allow yyoverflow
- to reallocate them elsewhere. */
-
- /* 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
-
-#if YYLSP_NEEDED
-# define YYPOPSTACK (yyvsp--, yyssp--, yylsp--)
-#else
-# define YYPOPSTACK (yyvsp--, yyssp--)
-#endif
-
- YYSIZE_T yystacksize = YYINITDEPTH;
-
-
- /* 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;
-
- YYDPRINTF ((stderr, "Starting parse\n"));
-
- yystate = 0;
- yyerrstatus = 0;
- yynerrs = 0;
- yychar = YYEMPTY; /* Cause a token to be read. */
-
- /* Initialize stack pointers.
- Waste one element of value and location stack
- so that they stay on the same level as the state stack.
- The wasted elements are never initialized. */
-
- yyssp = yyss;
- yyvsp = yyvs;
-#if YYLSP_NEEDED
- yylsp = yyls;
-#endif
- goto yysetstate;
-
-/*------------------------------------------------------------.
-| 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++;
-
- yysetstate:
- *yyssp = yystate;
-
- if (yyssp >= yyss + yystacksize - 1)
- {
- /* Get the current used size of the three stacks, in elements. */
- YYSIZE_T yysize = yyssp - yyss + 1;
-
-#ifdef yyoverflow
- {
- /* 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;
-
- /* 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)
- goto yyoverflowlab;
- yystacksize *= 2;
- if (yystacksize > YYMAXDEPTH)
- yystacksize = YYMAXDEPTH;
-
- {
- 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 + yysize - 1;
- yyvsp = yyvs + yysize - 1;
-#if YYLSP_NEEDED
- yylsp = yyls + yysize - 1;
-#endif
-
- YYDPRINTF ((stderr, "Stack size increased to %lu\n",
- (unsigned long int) yystacksize));
-
- if (yyssp >= yyss + yystacksize - 1)
- YYABORT;
- }
-
- YYDPRINTF ((stderr, "Entering state %d\n", yystate));
-
- goto yybackup;
-
-
-/*-----------.
-| yybackup. |
-`-----------*/
-yybackup:
-
-/* Do appropriate processing given the current state. */
-/* Read a lookahead token if we need one and don't already have one. */
-/* yyresume: */
-
- /* First try to decide what to do without reference to lookahead token. */
-
- yyn = yypact[yystate];
- if (yyn == YYFLAG)
- goto yydefault;
-
- /* Not known => get a lookahead token if don't already have one. */
-
- /* yychar is either YYEMPTY or YYEOF
- or a valid token in external form. */
-
- if (yychar == YYEMPTY)
- {
- YYDPRINTF ((stderr, "Reading a token: "));
- yychar = YYLEX;
- }
-
- /* Convert token to internal form (in yychar1) for indexing tables with */
-
- if (yychar <= 0) /* This means end of input. */
- {
- yychar1 = 0;
- yychar = YYEOF; /* Don't call YYLEX any more */
-
- YYDPRINTF ((stderr, "Now at end of input.\n"));
- }
- else
- {
- yychar1 = YYTRANSLATE (yychar);
-
-#if YYDEBUG
- /* We have to keep this `#if YYDEBUG', since we use variables
- which are defined only if `YYDEBUG' is set. */
- if (yydebug)
- {
- 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
- YYFPRINTF (stderr, ")\n");
- }
-#endif
- }
-
- yyn += yychar1;
- if (yyn < 0 || yyn > YYLAST || yycheck[yyn] != yychar1)
- goto yydefault;
-
- yyn = yytable[yyn];
-
- /* yyn is what to do for this token type in this state.
- Negative => reduce, -yyn is rule number.
- Positive => shift, yyn is new state.
- New state is final state => don't bother to shift,
- just return success.
- 0, or most negative number => error. */
-
- if (yyn < 0)
- {
- if (yyn == YYFLAG)
- goto yyerrlab;
- yyn = -yyn;
- goto yyreduce;
- }
- else if (yyn == 0)
- goto yyerrlab;
-
- if (yyn == YYFINAL)
- YYACCEPT;
-
- /* Shift the lookahead token. */
- 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;
-#if YYLSP_NEEDED
- *++yylsp = yylloc;
-#endif
-
- /* Count tokens shifted since error; after three, turn off error
- status. */
- if (yyerrstatus)
- yyerrstatus--;
-
- yystate = yyn;
- goto yynewstate;
-
-
-/*-----------------------------------------------------------.
-| yydefault -- do the default action for the current state. |
-`-----------------------------------------------------------*/
-yydefault:
- yyn = yydefact[yystate];
- if (yyn == 0)
- goto yyerrlab;
- goto yyreduce;
-
-
-/*-----------------------------.
-| yyreduce -- Do a reduction. |
-`-----------------------------*/
-yyreduce:
- /* yyn is the number of a rule to reduce with. */
- yylen = yyr2[yyn];
-
- /* 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 yyi;
-
- YYFPRINTF (stderr, "Reducing via rule %d (line %d), ",
- yyn, yyrline[yyn]);
-
- /* Print the symbols being reduced, and their result. */
- 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 151 "plural.y"
-{
- if (yyvsp[0].exp == NULL)
- YYABORT;
- ((struct parse_args *) arg)->res = yyvsp[0].exp;
- }
- break;
-case 2:
-#line 159 "plural.y"
-{
- yyval.exp = new_exp_3 (qmop, yyvsp[-4].exp, yyvsp[-2].exp, yyvsp[0].exp);
- }
- break;
-case 3:
-#line 163 "plural.y"
-{
- yyval.exp = new_exp_2 (lor, yyvsp[-2].exp, yyvsp[0].exp);
- }
- break;
-case 4:
-#line 167 "plural.y"
-{
- yyval.exp = new_exp_2 (land, yyvsp[-2].exp, yyvsp[0].exp);
- }
- break;
-case 5:
-#line 171 "plural.y"
-{
- yyval.exp = new_exp_2 (yyvsp[-1].op, yyvsp[-2].exp, yyvsp[0].exp);
- }
- break;
-case 6:
-#line 175 "plural.y"
-{
- yyval.exp = new_exp_2 (yyvsp[-1].op, yyvsp[-2].exp, yyvsp[0].exp);
- }
- break;
-case 7:
-#line 179 "plural.y"
-{
- yyval.exp = new_exp_2 (yyvsp[-1].op, yyvsp[-2].exp, yyvsp[0].exp);
- }
- break;
-case 8:
-#line 183 "plural.y"
-{
- yyval.exp = new_exp_2 (yyvsp[-1].op, yyvsp[-2].exp, yyvsp[0].exp);
- }
- break;
-case 9:
-#line 187 "plural.y"
-{
- yyval.exp = new_exp_1 (lnot, yyvsp[0].exp);
- }
- break;
-case 10:
-#line 191 "plural.y"
-{
- yyval.exp = new_exp_0 (var);
- }
- break;
-case 11:
-#line 195 "plural.y"
-{
- if ((yyval.exp = new_exp_0 (num)) != NULL)
- yyval.exp->val.num = yyvsp[0].num;
- }
- break;
-case 12:
-#line 200 "plural.y"
-{
- yyval.exp = yyvsp[-1].exp;
- }
- break;
-}
-
-#line 705 "/usr/local/share/bison/bison.simple"
-
-
- yyvsp -= yylen;
- yyssp -= yylen;
-#if YYLSP_NEEDED
- yylsp -= yylen;
-#endif
-
-#if YYDEBUG
- if (yydebug)
- {
- short *yyssp1 = yyss - 1;
- YYFPRINTF (stderr, "state stack now");
- while (yyssp1 != yyssp)
- YYFPRINTF (stderr, " %d", *++yyssp1);
- YYFPRINTF (stderr, "\n");
- }
-#endif
-
- *++yyvsp = yyval;
-#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. */
-
- yyn = yyr1[yyn];
-
- yystate = yypgoto[yyn - YYNTBASE] + *yyssp;
- if (yystate >= 0 && yystate <= YYLAST && yycheck[yystate] == *yyssp)
- yystate = yytable[yystate];
- else
- yystate = yydefgoto[yyn - YYNTBASE];
-
- goto yynewstate;
-
-
-/*------------------------------------.
-| yyerrlab -- here on detecting error |
-`------------------------------------*/
-yyerrlab:
- /* If not already recovering from an error, report this error. */
- if (!yyerrstatus)
- {
- ++yynerrs;
-
-#ifdef YYERROR_VERBOSE
- yyn = yypact[yystate];
-
- if (yyn > YYFLAG && yyn < YYLAST)
- {
- YYSIZE_T yysize = 0;
- char *yymsg;
- int yyx, yycount;
-
- 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)
- {
- char *yyp = yystpcpy (yymsg, "parse error, unexpected ");
- yyp = yystpcpy (yyp, yytname[YYTRANSLATE (yychar)]);
-
- if (yycount < 5)
- {
- yycount = 0;
- for (yyx = yyn < 0 ? -yyn : 0;
- yyx < (int) (sizeof (yytname) / sizeof (char *));
- yyx++)
- if (yycheck[yyx + yyn] == yyx)
- {
- const char *yyq = ! yycount ? ", expecting " : " or ";
- yyp = yystpcpy (yyp, yyq);
- yyp = yystpcpy (yyp, yytname[yyx]);
- yycount++;
- }
- }
- yyerror (yymsg);
- YYSTACK_FREE (yymsg);
- }
- else
- yyerror ("parse error; also virtual memory exhausted");
- }
- else
-#endif /* defined (YYERROR_VERBOSE) */
- yyerror ("parse error");
- }
- goto yyerrlab1;
-
-
-/*--------------------------------------------------.
-| 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. */
-
- /* return failure if at end of input */
- if (yychar == YYEOF)
- YYABORT;
- YYDPRINTF ((stderr, "Discarding token %d (%s).\n",
- yychar, yytname[yychar1]));
- yychar = YYEMPTY;
- }
-
- /* Else will try to reuse lookahead token after shifting the error
- token. */
-
- yyerrstatus = 3; /* Each real token shifted decrements this */
-
- goto yyerrhandle;
-
-
-/*-------------------------------------------------------------------.
-| yyerrdefault -- current state does not do anything special for the |
-| error token. |
-`-------------------------------------------------------------------*/
-yyerrdefault:
-#if 0
- /* This is wrong; only states that explicitly want error tokens
- should shift them. */
-
- /* 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 |
-`---------------------------------------------------------------*/
-yyerrpop:
- if (yyssp == yyss)
- YYABORT;
- yyvsp--;
- yystate = *--yyssp;
-#if YYLSP_NEEDED
- yylsp--;
-#endif
-
-#if YYDEBUG
- if (yydebug)
- {
- 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;
-
- yyn += YYTERROR;
- if (yyn < 0 || yyn > YYLAST || yycheck[yyn] != YYTERROR)
- goto yyerrdefault;
-
- yyn = yytable[yyn];
- if (yyn < 0)
- {
- if (yyn == YYFLAG)
- goto yyerrpop;
- yyn = -yyn;
- goto yyreduce;
- }
- else if (yyn == 0)
- goto yyerrpop;
-
- if (yyn == YYFINAL)
- YYACCEPT;
-
- YYDPRINTF ((stderr, "Shifting error token, "));
-
- *++yyvsp = yylval;
-#if YYLSP_NEEDED
- *++yylsp = yylloc;
-#endif
-
- yystate = yyn;
- goto yynewstate;
-
-
-/*-------------------------------------.
-| 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 yyresult;
-}
-#line 205 "plural.y"
-
-
-void
-internal_function
-FREE_EXPRESSION (struct expression *exp)
-{
- if (exp == NULL)
- return;
-
- /* Handle the recursive case. */
- switch (exp->nargs)
- {
- case 3:
- FREE_EXPRESSION (exp->val.args[2]);
- /* FALLTHROUGH */
- case 2:
- FREE_EXPRESSION (exp->val.args[1]);
- /* FALLTHROUGH */
- case 1:
- FREE_EXPRESSION (exp->val.args[0]);
- /* FALLTHROUGH */
- default:
- break;
- }
-
- free (exp);
-}
-
-
-static int
-yylex (YYSTYPE *lval, const char **pexp)
-{
- const char *exp = *pexp;
- int result;
-
- while (1)
- {
- if (exp[0] == '\0')
- {
- *pexp = exp;
- return YYEOF;
- }
-
- if (exp[0] != ' ' && exp[0] != '\t')
- break;
-
- ++exp;
- }
-
- result = *exp++;
- switch (result)
- {
- case '0': case '1': case '2': case '3': case '4':
- case '5': case '6': case '7': case '8': case '9':
- {
- unsigned long int n = result - '0';
- while (exp[0] >= '0' && exp[0] <= '9')
- {
- n *= 10;
- n += exp[0] - '0';
- ++exp;
- }
- lval->num = n;
- result = NUMBER;
- }
- break;
-
- case '=':
- if (exp[0] == '=')
- {
- ++exp;
- lval->op = equal;
- result = EQUOP2;
- }
- else
- result = YYERRCODE;
- break;
-
- case '!':
- if (exp[0] == '=')
- {
- ++exp;
- lval->op = not_equal;
- result = EQUOP2;
- }
- break;
-
- case '&':
- case '|':
- if (exp[0] == result)
- ++exp;
- else
- result = YYERRCODE;
- break;
-
- case '<':
- if (exp[0] == '=')
- {
- ++exp;
- lval->op = less_or_equal;
- }
- else
- lval->op = less_than;
- result = CMPOP2;
- break;
-
- case '>':
- if (exp[0] == '=')
- {
- ++exp;
- lval->op = greater_or_equal;
- }
- else
- lval->op = greater_than;
- result = CMPOP2;
- break;
-
- case '*':
- lval->op = mult;
- result = MULOP2;
- break;
-
- case '/':
- lval->op = divide;
- result = MULOP2;
- break;
-
- case '%':
- lval->op = module;
- result = MULOP2;
- break;
-
- case '+':
- lval->op = plus;
- result = ADDOP2;
- break;
-
- case '-':
- lval->op = minus;
- result = ADDOP2;
- break;
-
- case 'n':
- case '?':
- case ':':
- case '(':
- case ')':
- /* Nothing, just return the character. */
- break;
-
- case ';':
- case '\n':
- case '\0':
- /* Be safe and let the user call this function again. */
- --exp;
- result = YYEOF;
- break;
-
- default:
- result = YYERRCODE;
-#if YYDEBUG != 0
- --exp;
-#endif
- break;
- }
-
- *pexp = exp;
-
- return result;
-}
-
-
-static void
-yyerror (const char *str)
-{
- /* Do nothing. We don't print error messages here. */
-}
diff --git a/intl/plural.y b/intl/plural.y
deleted file mode 100644
index 4d33bd7c..00000000
--- a/intl/plural.y
+++ /dev/null
@@ -1,381 +0,0 @@
-%{
-/* 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. */
-
-/* The bison generated parser uses alloca. AIX 3 forces us to put this
- declaration at the beginning of the file. The declaration in bison's
- skeleton file comes too late. This must come before <config.h>
- because <config.h> may include arbitrary system headers. */
-#if defined _AIX && !defined __GNUC__
- #pragma alloca
-#endif
-
-#ifdef HAVE_CONFIG_H
-# include <config.h>
-#endif
-
-#include <stddef.h>
-#include <stdlib.h>
-#include "plural-exp.h"
-
-/* 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 7
-
-%union {
- unsigned long int num;
- enum operator op;
- struct expression *exp;
-}
-
-%{
-/* Prototypes for local functions. */
-static int yylex (YYSTYPE *lval, const char **pexp);
-static void yyerror (const char *str);
-
-/* Allocation of expressions. */
-
-static struct expression *
-new_exp (int nargs, enum operator op, struct expression * const *args)
-{
- int i;
- struct expression *newp;
-
- /* If any of the argument could not be malloc'ed, just return NULL. */
- for (i = nargs - 1; i >= 0; i--)
- if (args[i] == NULL)
- goto fail;
-
- /* Allocate a new expression. */
- newp = (struct expression *) malloc (sizeof (*newp));
- if (newp != NULL)
- {
- newp->nargs = nargs;
- newp->operation = op;
- for (i = nargs - 1; i >= 0; i--)
- newp->val.args[i] = args[i];
- return newp;
- }
-
- fail:
- for (i = nargs - 1; i >= 0; i--)
- FREE_EXPRESSION (args[i]);
-
- return NULL;
-}
-
-static inline struct expression *
-new_exp_0 (enum operator op)
-{
- return new_exp (0, op, NULL);
-}
-
-static inline struct expression *
-new_exp_1 (enum operator op, struct expression *right)
-{
- struct expression *args[1];
-
- args[0] = right;
- return new_exp (1, op, args);
-}
-
-static struct expression *
-new_exp_2 (enum operator op, struct expression *left, struct expression *right)
-{
- struct expression *args[2];
-
- args[0] = left;
- args[1] = right;
- return new_exp (2, op, args);
-}
-
-static inline struct expression *
-new_exp_3 (enum operator op, struct expression *bexp,
- struct expression *tbranch, struct expression *fbranch)
-{
- struct expression *args[3];
-
- args[0] = bexp;
- args[1] = tbranch;
- args[2] = fbranch;
- return new_exp (3, op, args);
-}
-
-%}
-
-/* This declares that all operators have the same associativity and the
- precedence order as in C. See [Harbison, Steele: C, A Reference Manual].
- There is no unary minus and no bitwise operators.
- Operators with the same syntactic behaviour have been merged into a single
- token, to save space in the array generated by bison. */
-%right '?' /* ? */
-%left '|' /* || */
-%left '&' /* && */
-%left EQUOP2 /* == != */
-%left CMPOP2 /* < > <= >= */
-%left ADDOP2 /* + - */
-%left MULOP2 /* * / % */
-%right '!' /* ! */
-
-%token <op> EQUOP2 CMPOP2 ADDOP2 MULOP2
-%token <num> NUMBER
-%type <exp> exp
-
-%%
-
-start: exp
- {
- if ($1 == NULL)
- YYABORT;
- ((struct parse_args *) arg)->res = $1;
- }
- ;
-
-exp: exp '?' exp ':' exp
- {
- $$ = new_exp_3 (qmop, $1, $3, $5);
- }
- | exp '|' exp
- {
- $$ = new_exp_2 (lor, $1, $3);
- }
- | exp '&' exp
- {
- $$ = new_exp_2 (land, $1, $3);
- }
- | exp EQUOP2 exp
- {
- $$ = new_exp_2 ($2, $1, $3);
- }
- | exp CMPOP2 exp
- {
- $$ = new_exp_2 ($2, $1, $3);
- }
- | exp ADDOP2 exp
- {
- $$ = new_exp_2 ($2, $1, $3);
- }
- | exp MULOP2 exp
- {
- $$ = new_exp_2 ($2, $1, $3);
- }
- | '!' exp
- {
- $$ = new_exp_1 (lnot, $2);
- }
- | 'n'
- {
- $$ = new_exp_0 (var);
- }
- | NUMBER
- {
- if (($$ = new_exp_0 (num)) != NULL)
- $$->val.num = $1;
- }
- | '(' exp ')'
- {
- $$ = $2;
- }
- ;
-
-%%
-
-void
-internal_function
-FREE_EXPRESSION (struct expression *exp)
-{
- if (exp == NULL)
- return;
-
- /* Handle the recursive case. */
- switch (exp->nargs)
- {
- case 3:
- FREE_EXPRESSION (exp->val.args[2]);
- /* FALLTHROUGH */
- case 2:
- FREE_EXPRESSION (exp->val.args[1]);
- /* FALLTHROUGH */
- case 1:
- FREE_EXPRESSION (exp->val.args[0]);
- /* FALLTHROUGH */
- default:
- break;
- }
-
- free (exp);
-}
-
-
-static int
-yylex (YYSTYPE *lval, const char **pexp)
-{
- const char *exp = *pexp;
- int result;
-
- while (1)
- {
- if (exp[0] == '\0')
- {
- *pexp = exp;
- return YYEOF;
- }
-
- if (exp[0] != ' ' && exp[0] != '\t')
- break;
-
- ++exp;
- }
-
- result = *exp++;
- switch (result)
- {
- case '0': case '1': case '2': case '3': case '4':
- case '5': case '6': case '7': case '8': case '9':
- {
- unsigned long int n = result - '0';
- while (exp[0] >= '0' && exp[0] <= '9')
- {
- n *= 10;
- n += exp[0] - '0';
- ++exp;
- }
- lval->num = n;
- result = NUMBER;
- }
- break;
-
- case '=':
- if (exp[0] == '=')
- {
- ++exp;
- lval->op = equal;
- result = EQUOP2;
- }
- else
- result = YYERRCODE;
- break;
-
- case '!':
- if (exp[0] == '=')
- {
- ++exp;
- lval->op = not_equal;
- result = EQUOP2;
- }
- break;
-
- case '&':
- case '|':
- if (exp[0] == result)
- ++exp;
- else
- result = YYERRCODE;
- break;
-
- case '<':
- if (exp[0] == '=')
- {
- ++exp;
- lval->op = less_or_equal;
- }
- else
- lval->op = less_than;
- result = CMPOP2;
- break;
-
- case '>':
- if (exp[0] == '=')
- {
- ++exp;
- lval->op = greater_or_equal;
- }
- else
- lval->op = greater_than;
- result = CMPOP2;
- break;
-
- case '*':
- lval->op = mult;
- result = MULOP2;
- break;
-
- case '/':
- lval->op = divide;
- result = MULOP2;
- break;
-
- case '%':
- lval->op = module;
- result = MULOP2;
- break;
-
- case '+':
- lval->op = plus;
- result = ADDOP2;
- break;
-
- case '-':
- lval->op = minus;
- result = ADDOP2;
- break;
-
- case 'n':
- case '?':
- case ':':
- case '(':
- case ')':
- /* Nothing, just return the character. */
- break;
-
- case ';':
- case '\n':
- case '\0':
- /* Be safe and let the user call this function again. */
- --exp;
- result = YYEOF;
- break;
-
- default:
- result = YYERRCODE;
-#if YYDEBUG != 0
- --exp;
-#endif
- break;
- }
-
- *pexp = exp;
-
- return result;
-}
-
-
-static void
-yyerror (const char *str)
-{
- /* Do nothing. We don't print error messages here. */
-}
diff --git a/intl/printf-args.c b/intl/printf-args.c
deleted file mode 100644
index f6f3219e..00000000
--- a/intl/printf-args.c
+++ /dev/null
@@ -1,119 +0,0 @@
-/* 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 --git a/intl/printf-args.h b/intl/printf-args.h
deleted file mode 100644
index f11e64c0..00000000
--- a/intl/printf-args.h
+++ /dev/null
@@ -1,137 +0,0 @@
-/* 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 --git a/intl/printf-parse.c b/intl/printf-parse.c
deleted file mode 100644
index d19f903d..00000000
--- a/intl/printf-parse.c
+++ /dev/null
@@ -1,537 +0,0 @@
-/* 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 --git a/intl/printf-parse.h b/intl/printf-parse.h
deleted file mode 100644
index 8aec50e2..00000000
--- a/intl/printf-parse.h
+++ /dev/null
@@ -1,75 +0,0 @@
-/* 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 --git a/intl/printf.c b/intl/printf.c
deleted file mode 100644
index 878646c2..00000000
--- a/intl/printf.c
+++ /dev/null
@@ -1,371 +0,0 @@
-/* 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 --git a/intl/ref-add.sin b/intl/ref-add.sin
deleted file mode 100644
index 167374e3..00000000
--- a/intl/ref-add.sin
+++ /dev/null
@@ -1,31 +0,0 @@
-# Add this package to a list of references stored in a text file.
-#
-# Copyright (C) 2000 Free Software Foundation, Inc.
-#
-# This program is free software; you can redistribute it and/or modify it
-# under the terms of the GNU Library General Public License as published
-# by the Free Software Foundation; either version 2, or (at your option)
-# any later version.
-#
-# This program is distributed in the hope that it will be useful,
-# but WITHOUT ANY WARRANTY; without even the implied warranty of
-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
-# Library General Public License for more details.
-#
-# You should have received a copy of the GNU Library General Public
-# License along with this program; if not, write to the Free Software
-# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307,
-# USA.
-#
-# Written by Bruno Haible <haible@clisp.cons.org>.
-#
-/^# Packages using this file: / {
- s/# Packages using this file://
- ta
- :a
- s/ @PACKAGE@ / @PACKAGE@ /
- tb
- s/ $/ @PACKAGE@ /
- :b
- s/^/# Packages using this file:/
-}
diff --git a/intl/ref-del.sin b/intl/ref-del.sin
deleted file mode 100644
index 613cf37f..00000000
--- a/intl/ref-del.sin
+++ /dev/null
@@ -1,26 +0,0 @@
-# Remove this package from a list of references stored in a text file.
-#
-# Copyright (C) 2000 Free Software Foundation, Inc.
-#
-# This program is free software; you can redistribute it and/or modify it
-# under the terms of the GNU Library General Public License as published
-# by the Free Software Foundation; either version 2, or (at your option)
-# any later version.
-#
-# This program is distributed in the hope that it will be useful,
-# but WITHOUT ANY WARRANTY; without even the implied warranty of
-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
-# Library General Public License for more details.
-#
-# You should have received a copy of the GNU Library General Public
-# License along with this program; if not, write to the Free Software
-# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307,
-# USA.
-#
-# Written by Bruno Haible <haible@clisp.cons.org>.
-#
-/^# Packages using this file: / {
- s/# Packages using this file://
- s/ @PACKAGE@ / /
- s/^/# Packages using this file:/
-}
diff --git a/intl/relocatable.c b/intl/relocatable.c
deleted file mode 100644
index bf7c7085..00000000
--- a/intl/relocatable.c
+++ /dev/null
@@ -1,449 +0,0 @@
-/* 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 --git a/intl/relocatable.h b/intl/relocatable.h
deleted file mode 100644
index 48c5b71e..00000000
--- a/intl/relocatable.h
+++ /dev/null
@@ -1,77 +0,0 @@
-/* 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 --git a/intl/textdomain.c b/intl/textdomain.c
deleted file mode 100644
index 8745a843..00000000
--- a/intl/textdomain.c
+++ /dev/null
@@ -1,141 +0,0 @@
-/* Implementation of the textdomain(3) function.
- 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 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 <stdlib.h>
-#include <string.h>
-
-#ifdef _LIBC
-# include <libintl.h>
-#else
-# include "libgnuintl.h"
-#endif
-#include "gettextP.h"
-
-#ifdef _LIBC
-/* We have to handle multi-threaded applications. */
-# include <bits/libc-lock.h>
-#else
-/* Provide dummy implementation if this is outside glibc. */
-# define __libc_rwlock_define(CLASS, NAME)
-# define __libc_rwlock_wrlock(NAME)
-# define __libc_rwlock_unlock(NAME)
-#endif
-
-/* The internal variables in the standalone libintl.a must have different
- names than the internal variables in GNU libc, otherwise programs
- using libintl.a cannot be linked statically. */
-#if !defined _LIBC
-# define _nl_default_default_domain 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[] attribute_hidden;
-
-/* Default text domain in which entries for gettext(3) are to be found. */
-extern const char *_nl_current_default_domain attribute_hidden;
-
-
-/* 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 TEXTDOMAIN __textdomain
-# ifndef strdup
-# define strdup(str) __strdup (str)
-# endif
-#else
-# define TEXTDOMAIN libintl_textdomain
-#endif
-
-/* Lock variable to protect the global data in the gettext implementation. */
-__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 (const char *domainname)
-{
- char *new_domain;
- char *old_domain;
-
- /* A NULL pointer requests the current setting. */
- if (domainname == NULL)
- return (char *) _nl_current_default_domain;
-
- __libc_rwlock_wrlock (_nl_state_lock);
-
- old_domain = (char *) _nl_current_default_domain;
-
- /* If domain name is the null string set to default domain "messages". */
- if (domainname[0] == '\0'
- || strcmp (domainname, _nl_default_default_domain) == 0)
- {
- _nl_current_default_domain = _nl_default_default_domain;
- new_domain = (char *) _nl_current_default_domain;
- }
- else if (strcmp (domainname, old_domain) == 0)
- /* This can happen and people will use it to signal that some
- environment variable changed. */
- new_domain = old_domain;
- else
- {
- /* If the following malloc fails `_nl_current_default_domain'
- will be NULL. This value will be returned and so signals we
- are out of core. */
-#if defined _LIBC || defined HAVE_STRDUP
- new_domain = strdup (domainname);
-#else
- size_t len = strlen (domainname) + 1;
- new_domain = (char *) malloc (len);
- if (new_domain != NULL)
- memcpy (new_domain, domainname, len);
-#endif
-
- if (new_domain != NULL)
- _nl_current_default_domain = new_domain;
- }
-
- /* We use this possibility to signal a change of the loaded catalogs
- since this is most likely the case and there is no other easy we
- to do it. Do it only when the call was successful. */
- if (new_domain != NULL)
- {
- ++_nl_msg_cat_cntr;
-
- if (old_domain != new_domain && old_domain != _nl_default_default_domain)
- free (old_domain);
- }
-
- __libc_rwlock_unlock (_nl_state_lock);
-
- return new_domain;
-}
-
-#ifdef _LIBC
-/* Alias for function name in GNU C Library. */
-weak_alias (__textdomain, textdomain);
-#endif
diff --git a/intl/vasnprintf.c b/intl/vasnprintf.c
deleted file mode 100644
index 8a62282d..00000000
--- a/intl/vasnprintf.c
+++ /dev/null
@@ -1,887 +0,0 @@
-/* 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 --git a/intl/vasnprintf.h b/intl/vasnprintf.h
deleted file mode 100644
index 65f1bc13..00000000
--- a/intl/vasnprintf.h
+++ /dev/null
@@ -1,61 +0,0 @@
-/* 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 --git a/intl/vasnwprintf.h b/intl/vasnwprintf.h
deleted file mode 100644
index d3cef4cb..00000000
--- a/intl/vasnwprintf.h
+++ /dev/null
@@ -1,46 +0,0 @@
-/* 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 --git a/intl/wprintf-parse.h b/intl/wprintf-parse.h
deleted file mode 100644
index 24a2cfc2..00000000
--- a/intl/wprintf-parse.h
+++ /dev/null
@@ -1,75 +0,0 @@
-/* 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 --git a/intl/xsize.h b/intl/xsize.h
deleted file mode 100644
index 362e24b7..00000000
--- a/intl/xsize.h
+++ /dev/null
@@ -1,109 +0,0 @@
-/* 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 --git a/io.c b/io.c
index b8bab6d5..964c9284 100644
--- a/io.c
+++ b/io.c
@@ -3,7 +3,7 @@
*/
/*
- * Copyright (C) 1986, 1988, 1989, 1991-2004 the Free Software Foundation, Inc.
+ * Copyright (C) 1986, 1988, 1989, 1991-2005 the Free Software Foundation, Inc.
*
* This file is part of GAWK, the GNU implementation of the
* AWK Programming Language.
@@ -20,7 +20,7 @@
*
* 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
+ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA
*/
#include "awk.h"
@@ -199,8 +199,7 @@ extern NODE **fields_arr;
static jmp_buf filebuf; /* for do_nextfile() */
-#if defined(MSDOS) || defined(OS2) || defined(WIN32) \
- || defined(__EMX__) || defined(__CYGWIN__)
+#if defined(MSDOS) || defined(OS2) || defined(WIN32) || defined(__EMX__) || defined(__CYGWIN__)
/* binmode --- convert BINMODE to string for fopen */
static const char *
@@ -384,6 +383,7 @@ iop_close(IOBUF *iop)
}
/* Don't close standard files or else crufty code elsewhere will lose */
+ /* FIXME: *DO* close it. Just reopen on an invalid handle. */
if (iop->fd == fileno(stdin)
|| iop->fd == fileno(stdout)
|| iop->fd == fileno(stderr))
@@ -391,6 +391,9 @@ iop_close(IOBUF *iop)
else
ret = close(iop->fd);
+ if (iop->close_func != NULL)
+ (*iop->close_func)(iop);
+
if (ret == -1)
warning(_("close of fd %d (`%s') failed (%s)"), iop->fd,
iop->name, strerror(errno));
@@ -575,7 +578,7 @@ redirect(NODE *tree, int *errflg)
/* now check for a match */
if (strlen(rp->value) == tmp->stlen
- && STREQN(rp->value, str, tmp->stlen)
+ && memcmp(rp->value, str, tmp->stlen) == 0
&& ((rp->flag & ~(RED_NOBUF|RED_EOF|RED_PTY)) == tflag
|| (outflag != 0
&& (rp->flag & (RED_FILE|RED_WRITE)) == outflag))) {
@@ -586,7 +589,7 @@ redirect(NODE *tree, int *errflg)
if (do_lint && rpflag != newflag)
lintwarn(
_("unnecessary mixing of `>' and `>>' for file `%.*s'"),
- tmp->stlen, rp->value);
+ (int) tmp->stlen, rp->value);
break;
}
@@ -602,7 +605,7 @@ redirect(NODE *tree, int *errflg)
rp->flag = tflag;
rp->fp = NULL;
rp->iop = NULL;
- rp->pid = 0; /* unlikely that we're worried about init */
+ rp->pid = -1;
rp->status = 0;
/* maintain list in most-recently-used first order */
if (red_head != NULL)
@@ -763,7 +766,7 @@ getredirect(const char *str, int len)
struct redirect *rp;
for (rp = red_head; rp != NULL; rp = rp->next)
- if (strlen(rp->value) == len && STREQN(rp->value, str, len))
+ if (strlen(rp->value) == len && memcmp(rp->value, str, len) == 0)
return rp;
return NULL;
@@ -793,7 +796,7 @@ close_one()
if (rp->fp == NULL || rp->fp == stderr || rp->fp == stdout)
continue;
- if ((rp->flag & RED_FILE) != 0) {
+ if ((rp->flag & (RED_FILE|RED_WRITE)) == (RED_FILE|RED_WRITE)) {
rp->flag |= RED_USED;
errno = 0;
if (/* do_lint && */ fclose(rp->fp) != 0)
@@ -834,7 +837,7 @@ do_close(NODE *tree)
for (rp = red_head; rp != NULL; rp = rp->next) {
if (strlen(rp->value) == tmp->stlen
- && STREQN(rp->value, tmp->stptr, tmp->stlen))
+ && memcmp(rp->value, tmp->stptr, tmp->stlen) == 0)
break;
}
@@ -843,7 +846,7 @@ do_close(NODE *tree)
if (do_lint)
lintwarn(_("close: `%.*s' is not an open file, pipe or co-process"),
- tmp->stlen, tmp->stptr);
+ (int) tmp->stlen, tmp->stptr);
/* update ERRNO manually, using errno = ENOENT is a stretch. */
cp = _("close of redirection that was never opened");
@@ -949,7 +952,8 @@ close_redir(register struct redirect *rp, int exitwarn, two_way_close_type how)
/* SVR4 awk checks and warns about status of close */
if (status != 0) {
- char *s = strerror(errno);
+ int save_errno = errno;
+ char *s = strerror(save_errno);
/*
* Too many people have complained about this.
@@ -966,7 +970,7 @@ close_redir(register struct redirect *rp, int exitwarn, two_way_close_type how)
if (! do_traditional) {
/* set ERRNO too so that program can get at it */
- update_ERRNO();
+ update_ERRNO_saved(save_errno);
}
}
@@ -1049,7 +1053,7 @@ flush_io()
/* close_io --- close all open files, called when exiting */
int
-close_io()
+close_io(int *stdio_problem)
{
register struct redirect *rp;
register struct redirect *next;
@@ -1071,13 +1075,16 @@ close_io()
* on stdout and stderr. Since we don't really need to close
* them, we just flush them, and do that across the board.
*/
+ *stdio_problem = FALSE;
if (fflush(stdout)) {
warning(_("error writing standard output (%s)"), strerror(errno));
status++;
+ *stdio_problem = TRUE;
}
if (fflush(stderr)) {
warning(_("error writing standard error (%s)"), strerror(errno));
status++;
+ *stdio_problem = TRUE;
}
return status;
}
@@ -1202,7 +1209,7 @@ socketopen(enum inet_prot type, int localport, int remoteport, const char *remot
} else { /* remote host is ANY => create a server */
if (type == INET_TCP) {
int clientsocket_fd = INVALID_HANDLE;
- int namelen = sizeof(remote_addr);
+ socklen_t namelen = sizeof(remote_addr);
if (listen(socket_fd, 1) >= 0
&& (clientsocket_fd = accept(socket_fd,
@@ -1215,10 +1222,10 @@ socketopen(enum inet_prot type, int localport, int remoteport, const char *remot
socket_fd = INVALID_HANDLE;
}
} else if (type == INET_UDP) {
+#ifdef MSG_PEEK
char buf[10];
- int readle;
+ socklen_t readle;
-#ifdef MSG_PEEK
if (recvfrom(socket_fd, buf, 1, MSG_PEEK,
(struct sockaddr *) & remote_addr,
& readle) < 1
@@ -1433,7 +1440,7 @@ spec_setup(IOBUF *iop, int len, int allocate)
iop->end = iop->buf + len;
iop->dataend = iop->end;
iop->fd = -1;
- iop->flag = IOP_IS_INTERNAL;
+ iop->flag = IOP_IS_INTERNAL | IOP_AT_START;
}
/* specfdopen --- open an fd special file */
@@ -1586,11 +1593,19 @@ strictopen:
if (openfd != INVALID_HANDLE) {
if (os_isdir(openfd))
fatal(_("file `%s' is a directory"), name);
-
- if (openfd > fileno(stderr))
- os_close_on_exec(openfd, name, "file", "");
}
- return iop_alloc(openfd, name, iop);
+ /*
+ * At this point, fd could still be INVALID_HANDLE.
+ * We pass it to `iop_alloc' anyway, in case an open hook
+ * can manage to open the file.
+ */
+ iop = iop_alloc(openfd, name, iop);
+ if (iop != NULL) {
+ if (iop->fd > fileno(stderr))
+ os_close_on_exec(iop->fd, name, "file", "");
+ } else if (openfd != INVALID_HANDLE) /* have an fd, but IOP is null */
+ (void) close(openfd); /* avoid fd leak */
+ return iop;
}
/* two_way_open --- open a two way communications channel */
@@ -2024,7 +2039,6 @@ wait_any(int interesting) /* pid of interest, if any */
int pid;
int status = 0;
struct redirect *redp;
- extern int errno;
hstat = signal(SIGHUP, SIG_IGN);
istat = signal(SIGINT, SIG_IGN);
@@ -2205,7 +2219,6 @@ static struct pipeinfo {
static IOBUF *
gawk_popen(const char *cmd, struct redirect *rp)
{
- extern char *strdup P((const char *));
int current;
char *name;
static char cmdbuf[256];
@@ -2218,7 +2231,8 @@ gawk_popen(const char *cmd, struct redirect *rp)
if ((current = open(name, O_RDONLY)) == INVALID_HANDLE)
return NULL;
pipes[current].name = name;
- pipes[current].command = strdup(cmd);
+ emalloc(pipes[current].command, char *, strlen(cmd)+1, "gawk_popen");
+ strcpy(pipes[current].command, cmd);
os_close_on_exec(current, cmd, "pipe", "from");
rp->iop = iop_alloc(current, name, NULL);
if (rp->iop == NULL)
@@ -2273,7 +2287,7 @@ do_getline(NODE *tree)
rp = redirect(tree->rnode, &redir_error);
if (rp == NULL && redir_error) { /* failed redirect */
if (! do_traditional)
- update_ERRNO();
+ update_ERRNO_saved(redir_error);
return tmp_number((AWKNUM) -1.0);
}
@@ -2284,8 +2298,8 @@ do_getline(NODE *tree)
errcode = 0;
cnt = get_a_record(&s, iop, &errcode);
if (errcode != 0) {
- if (! do_traditional)
- update_ERRNO();
+ if (! do_traditional && (errcode != -1))
+ update_ERRNO_saved(errcode);
return tmp_number((AWKNUM) -1.0);
}
@@ -2439,35 +2453,65 @@ fatal(const char *s)
}
#endif
+/* open hooks, mainly for use by extension functions */
+
+static struct open_hook {
+ struct open_hook *next;
+ void *(*open_func)(IOBUF *);
+} *open_hooks;
+
+/* register_open_hook --- add an open hook to the list */
+
+void
+register_open_hook(void *(*open_func)(IOBUF *))
+{
+ struct open_hook *oh;
+
+ emalloc(oh, struct open_hook *, sizeof(*oh), "register_open_hook");
+ oh->open_func = open_func;
+ oh->next = open_hooks;
+ open_hooks = oh;
+}
+
/* iop_alloc --- allocate an IOBUF structure for an open fd */
static IOBUF *
iop_alloc(int fd, const char *name, IOBUF *iop)
{
- struct stat sbuf;
+ struct stat sbuf;
+ struct open_hook *oh;
- if (fd == INVALID_HANDLE)
- return NULL;
- if (iop == NULL)
- emalloc(iop, IOBUF *, sizeof(IOBUF), "iop_alloc");
+ if (iop == NULL)
+ emalloc(iop, IOBUF *, sizeof(IOBUF), "iop_alloc");
memset(iop, '\0', sizeof(IOBUF));
- iop->flag = 0;
- if (isatty(fd))
- iop->flag |= IOP_IS_TTY;
- iop->readsize = iop->size = optimal_bufsize(fd, & sbuf);
- iop->sbuf = sbuf;
- if (do_lint && S_ISREG(sbuf.st_mode) && sbuf.st_size == 0)
- lintwarn(_("data file `%s' is empty"), name);
- errno = 0;
- iop->fd = fd;
- iop->count = iop->scanoff = 0;
- iop->name = name;
- emalloc(iop->buf, char *, iop->size += 2, "iop_alloc");
- iop->off = iop->buf;
- iop->dataend = NULL;
- iop->end = iop->buf + iop->size;
iop->flag = 0;
- return iop;
+ iop->fd = fd;
+ iop->name = name;
+
+ /* walk through open hooks, stop at first one that responds */
+ for (oh = open_hooks; oh != NULL; oh = oh->next) {
+ if ((iop->opaque = (*oh->open_func)(iop)) != NULL)
+ break;
+ }
+
+ if (iop->fd == INVALID_HANDLE) {
+ free(iop);
+ return NULL;
+ }
+ if (isatty(iop->fd))
+ iop->flag |= IOP_IS_TTY;
+ iop->readsize = iop->size = optimal_bufsize(iop->fd, & sbuf);
+ iop->sbuf = sbuf;
+ if (do_lint && S_ISREG(sbuf.st_mode) && sbuf.st_size == 0)
+ lintwarn(_("data file `%s' is empty"), name);
+ errno = 0;
+ iop->count = iop->scanoff = 0;
+ emalloc(iop->buf, char *, iop->size += 2, "iop_alloc");
+ iop->off = iop->buf;
+ iop->dataend = NULL;
+ iop->end = iop->buf + iop->size;
+ iop->flag |= IOP_AT_START;
+ return iop;
}
#define set_RT_to_null() \
@@ -2661,6 +2705,7 @@ rsrescan(IOBUF *iop, struct recmatch *recm, SCANSTATE *state)
register char *bp;
size_t restart = 0, reend = 0;
Regexp *RSre = RS_regexp;
+ int regex_flags = RE_NEED_START;
memset(recm, '\0', sizeof(struct recmatch));
recm->start = iop->off;
@@ -2669,9 +2714,11 @@ rsrescan(IOBUF *iop, struct recmatch *recm, SCANSTATE *state)
if (*state == INDATA)
bp += iop->scanoff;
+ if ((iop->flag & IOP_AT_START) == 0)
+ regex_flags |= RE_NO_BOL;
again:
/* case 1, no match */
- if (research(RSre, bp, 0, iop->dataend - bp, TRUE) == -1) {
+ if (research(RSre, bp, 0, iop->dataend - bp, regex_flags) == -1) {
/* set len, in case this all there is. */
recm->len = iop->dataend - iop->off;
return NOTERM;
@@ -2854,6 +2901,9 @@ get_a_record(char **out, /* pointer to pointer to data */
if (at_eof(iop) && no_data_left(iop))
return EOF;
+ if (iop->get_record != NULL)
+ return (*iop->get_record)(out, iop, errcode);
+
/* <fill initial buffer>= */
if (has_no_data(iop) || no_data_left(iop)) {
iop->count = read(iop->fd, iop->buf, iop->readsize);
@@ -2883,6 +2933,8 @@ get_a_record(char **out, /* pointer to pointer to data */
ret = (*matchrec)(iop, & recm, & state);
+ iop->flag &= ~IOP_AT_START;
+
if (ret == REC_OK)
break;
@@ -3022,7 +3074,7 @@ set_RS()
*/
if (save_rs
&& RS_node->var_value->stlen == save_rs->stlen
- && STREQN(RS_node->var_value->stptr, save_rs->stptr, save_rs->stlen)) {
+ && memcmp(RS_node->var_value->stptr, save_rs->stptr, save_rs->stlen) == 0) {
/*
* It could be that just IGNORECASE changed. If so,
* update the regex and then do the same for FS.
@@ -3118,6 +3170,8 @@ iopflags2str(int flag)
{ IOP_NO_FREE, "IOP_NO_FREE" },
{ IOP_NOFREE_OBJ, "IOP_NOFREE_OBJ" },
{ IOP_AT_EOF, "IOP_AT_EOF" },
+ { IOP_CLOSED, "IOP_CLOSED" },
+ { IOP_AT_START, "IOP_AT_START" },
{ 0, NULL }
};
diff --git a/m4/ChangeLog b/m4/ChangeLog
index 9cc5f161..60dfe21c 100644
--- a/m4/ChangeLog
+++ b/m4/ChangeLog
@@ -1,3 +1,21 @@
+Tue Jul 26 21:46:16 2005 Arnold D. Robbins <arnold@skeeve.com>
+
+ * Release 3.1.5: Release tar file made.
+
+Wed Jul 6 17:05:32 2005 Arnold D. Robbins <arnold@skeeve.com>
+
+ * gettext.m4: Per Bruno Haible, revert the change for the test
+ for locale.h from Sergey Poznyakoff.
+
+Wed Jun 8 20:45:17 2005 Sergey Poznyakoff <gray@Mirddin.farlep.net>
+
+ * gettext.m4: Move test for locale.h and LC_MESSAGES in AM_GNU_GETTEXT.
+ Makes things work when the library is external.
+
+Mon May 30 21:31:43 2005 Arnold D. Robbins <arnold@skeeve.com>
+
+ * intmax_t.m4: Updated macro for intmax_t from Jim Meyering.
+
Mon Aug 2 12:18:15 2004 Arnold D. Robbins <arnold@skeeve.com>
* Release 3.1.4: Release tar file made.
diff --git a/m4/arch.m4 b/m4/arch.m4
index 778cd110..622068c9 100644
--- a/m4/arch.m4
+++ b/m4/arch.m4
@@ -18,7 +18,7 @@ dnl GNU General Public License for more details.
dnl
dnl You should have received a copy of the GNU General Public License
dnl along with this program; if not, write to the Free Software
-dnl Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA
+dnl Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA
dnl
dnl Check for AIX and add _XOPEN_SOURCE_EXTENDED
diff --git a/m4/codeset.m4 b/m4/codeset.m4
index 59535ebc..a6e67ec4 100644
--- a/m4/codeset.m4
+++ b/m4/codeset.m4
@@ -1,10 +1,8 @@
# 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 This file is free software; the Free Software Foundation
+dnl gives unlimited permission to copy and/or distribute it,
+dnl with or without modifications, as long as this notice is preserved.
dnl From Bruno Haible.
diff --git a/m4/gettext.m4 b/m4/gettext.m4
index a374f03f..624a8078 100644
--- a/m4/gettext.m4
+++ b/m4/gettext.m4
@@ -1,10 +1,8 @@
-# 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.
+# gettext.m4 serial 37 (gettext-0.14.4)
+dnl Copyright (C) 1995-2005 Free Software Foundation, Inc.
+dnl This file is free software; the Free Software Foundation
+dnl gives unlimited permission to copy and/or distribute it,
+dnl with or without modifications, as long as this notice is preserved.
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
@@ -65,8 +63,8 @@ AC_DEFUN([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], []))
+ 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, [
@@ -92,6 +90,9 @@ AC_DEFUN([AM_GNU_GETTEXT],
AC_REQUIRE([AM_ICONV_LINKFLAGS_BODY])
])
+ dnl Sometimes, on MacOS X, libintl requires linking with CoreFoundation.
+ gt_INTL_MACOSX
+
dnl Set USE_NLS.
AM_NLS
@@ -138,7 +139,7 @@ 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],
+return * gettext ("")]ifelse([$2], [need-ngettext], [ + * ngettext ("", "", 0)], [])[ + _nl_msg_cat_cntr + *_nl_domain_bindings],
gt_cv_func_gnugettext_libc=yes,
gt_cv_func_gnugettext_libc=no)])
@@ -172,9 +173,9 @@ extern
#ifdef __cplusplus
"C"
#endif
-const char *_nl_expand_alias ();],
+const char *_nl_expand_alias (const char *);],
[bindtextdomain ("", "");
-return (int) gettext ("")]ifelse([$2], [need-ngettext], [ + (int) ngettext ("", "", 0)], [])[ + _nl_msg_cat_cntr + *_nl_expand_alias (0)],
+return * gettext ("")]ifelse([$2], [need-ngettext], [ + * ngettext ("", "", 0)], [])[ + _nl_msg_cat_cntr + *_nl_expand_alias ("")],
gt_cv_func_gnugettext_libintl=yes,
gt_cv_func_gnugettext_libintl=no)
dnl Now see whether libintl exists and depends on libiconv.
@@ -193,9 +194,9 @@ extern
#ifdef __cplusplus
"C"
#endif
-const char *_nl_expand_alias ();],
+const char *_nl_expand_alias (const char *);],
[bindtextdomain ("", "");
-return (int) gettext ("")]ifelse([$2], [need-ngettext], [ + (int) ngettext ("", "", 0)], [])[ + _nl_msg_cat_cntr + *_nl_expand_alias (0)],
+return * gettext ("")]ifelse([$2], [need-ngettext], [ + * ngettext ("", "", 0)], [])[ + _nl_msg_cat_cntr + *_nl_expand_alias ("")],
[LIBINTL="$LIBINTL $LIBICONV"
LTLIBINTL="$LTLIBINTL $LTLIBICONV"
gt_cv_func_gnugettext_libintl=yes
@@ -238,6 +239,7 @@ return (int) gettext ("")]ifelse([$2], [need-ngettext], [ + (int) ngettext ("",
LIBS=`echo " $LIBS " | sed -e 's/ -lintl / /' -e 's/^ //' -e 's/ $//'`
fi
+ CATOBJEXT=
if test "$gt_use_preinstalled_gnugettext" = "yes" \
|| test "$nls_cv_use_gnu_gettext" = "yes"; then
dnl Mark actions to use GNU gettext tools.
@@ -245,6 +247,15 @@ return (int) gettext ("")]ifelse([$2], [need-ngettext], [ + (int) ngettext ("",
fi
])
+ if test -n "$INTL_MACOSX_LIBS"; then
+ if test "$gt_use_preinstalled_gnugettext" = "yes" \
+ || test "$nls_cv_use_gnu_gettext" = "yes"; then
+ dnl Some extra flags are needed during linking.
+ LIBINTL="$LIBINTL $INTL_MACOSX_LIBS"
+ LTLIBINTL="$LTLIBINTL $INTL_MACOSX_LIBS"
+ fi
+ fi
+
if test "$gt_use_preinstalled_gnugettext" = "yes" \
|| test "$nls_cv_use_gnu_gettext" = "yes"; then
AC_DEFINE(ENABLE_NLS, 1,
@@ -320,6 +331,7 @@ return (int) gettext ("")]ifelse([$2], [need-ngettext], [ + (int) ngettext ("",
AC_SUBST(GENCAT)
dnl For backward compatibility. Some Makefiles may be using this.
+ INTLOBJS=
if test "$USE_INCLUDED_LIBINTL" = yes; then
INTLOBJS="\$(GETTOBJS)"
fi
@@ -350,6 +362,7 @@ AC_DEFUN([AM_INTL_SUBDIR],
AC_REQUIRE([AM_MKINSTALLDIRS])dnl
AC_REQUIRE([AC_PROG_CC])dnl
AC_REQUIRE([AC_CANONICAL_HOST])dnl
+ AC_REQUIRE([gt_GLIBC2])dnl
AC_REQUIRE([AC_PROG_RANLIB])dnl
AC_REQUIRE([AC_ISC_POSIX])dnl
AC_REQUIRE([AC_HEADER_STDC])dnl
@@ -358,22 +371,23 @@ AC_DEFUN([AM_INTL_SUBDIR],
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([gl_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([gl_AC_HEADER_INTTYPES_H])
+ AC_REQUIRE([gl_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([gl_GLIBC21])dnl
AC_REQUIRE([gt_INTDIV0])dnl
- AC_REQUIRE([jm_AC_TYPE_UINTMAX_T])dnl
+ AC_REQUIRE([gl_AC_TYPE_UINTMAX_T])dnl
AC_REQUIRE([gt_HEADER_INTTYPES_H])dnl
AC_REQUIRE([gt_INTTYPES_PRI])dnl
AC_REQUIRE([gl_XSIZE])dnl
+ AC_REQUIRE([gt_INTL_MACOSX])dnl
AC_CHECK_TYPE([ptrdiff_t], ,
[AC_DEFINE([ptrdiff_t], [long],
@@ -427,7 +441,11 @@ __fsetlocking])
AM_ICONV
AM_LANGINFO_CODESET
if test $ac_cv_header_locale_h = yes; then
- AM_LC_MESSAGES
+ gt_LC_MESSAGES
+ fi
+
+ if test -n "$INTL_MACOSX_LIBS"; then
+ CPPFLAGS="$CPPFLAGS -I/System/Library/Frameworks/CoreFoundation.framework/Headers"
fi
dnl intl/plural.c is generated from intl/plural.y. It requires bison,
@@ -463,6 +481,50 @@ changequote([,])dnl
])
+dnl Checks for special options needed on MacOS X.
+dnl Defines INTL_MACOSX_LIBS.
+AC_DEFUN([gt_INTL_MACOSX],
+[
+ dnl Check for API introduced in MacOS X 10.2.
+ AC_CACHE_CHECK([for CFPreferencesCopyAppValue],
+ gt_cv_func_CFPreferencesCopyAppValue,
+ [gt_save_CPPFLAGS="$CPPFLAGS"
+ CPPFLAGS="$CPPFLAGS -I/System/Library/Frameworks/CoreFoundation.framework/Headers"
+ gt_save_LIBS="$LIBS"
+ LIBS="$LIBS -framework CoreFoundation"
+ AC_TRY_LINK([#include <CFPreferences.h>],
+ [CFPreferencesCopyAppValue(NULL, NULL)],
+ [gt_cv_func_CFPreferencesCopyAppValue=yes],
+ [gt_cv_func_CFPreferencesCopyAppValue=no])
+ CPPFLAGS="$gt_save_CPPFLAGS"
+ LIBS="$gt_save_LIBS"])
+ if test $gt_cv_func_CFPreferencesCopyAppValue = yes; then
+ AC_DEFINE([HAVE_CFPREFERENCESCOPYAPPVALUE], 1,
+ [Define to 1 if you have the MacOS X function CFPreferencesCopyAppValue in the CoreFoundation framework.])
+ fi
+ dnl Check for API introduced in MacOS X 10.3.
+ AC_CACHE_CHECK([for CFLocaleCopyCurrent], gt_cv_func_CFLocaleCopyCurrent,
+ [gt_save_CPPFLAGS="$CPPFLAGS"
+ CPPFLAGS="$CPPFLAGS -I/System/Library/Frameworks/CoreFoundation.framework/Headers"
+ gt_save_LIBS="$LIBS"
+ LIBS="$LIBS -framework CoreFoundation"
+ AC_TRY_LINK([#include <CFLocale.h>], [CFLocaleCopyCurrent();],
+ [gt_cv_func_CFLocaleCopyCurrent=yes],
+ [gt_cv_func_CFLocaleCopyCurrent=no])
+ CPPFLAGS="$gt_save_CPPFLAGS"
+ LIBS="$gt_save_LIBS"])
+ if test $gt_cv_func_CFLocaleCopyCurrent = yes; then
+ AC_DEFINE([HAVE_CFLOCALECOPYCURRENT], 1,
+ [Define to 1 if you have the MacOS X function CFLocaleCopyCurrent in the CoreFoundation framework.])
+ fi
+ INTL_MACOSX_LIBS=
+ if test $gt_cv_func_CFPreferencesCopyAppValue = yes || test $gt_cv_func_CFLocaleCopyCurrent = yes; then
+ INTL_MACOSX_LIBS="-Wl,-framework -Wl,CoreFoundation"
+ fi
+ AC_SUBST([INTL_MACOSX_LIBS])
+])
+
+
dnl gt_CHECK_DECL(FUNC, INCLUDES)
dnl Check whether a function is declared.
AC_DEFUN([gt_CHECK_DECL],
diff --git a/m4/glibc2.m4 b/m4/glibc2.m4
new file mode 100644
index 00000000..e8f5bfe6
--- /dev/null
+++ b/m4/glibc2.m4
@@ -0,0 +1,30 @@
+# glibc2.m4 serial 1
+dnl Copyright (C) 2000-2002, 2004 Free Software Foundation, Inc.
+dnl This file is free software; the Free Software Foundation
+dnl gives unlimited permission to copy and/or distribute it,
+dnl with or without modifications, as long as this notice is preserved.
+
+# Test for the GNU C Library, version 2.0 or newer.
+# From Bruno Haible.
+
+AC_DEFUN([gt_GLIBC2],
+ [
+ AC_CACHE_CHECK(whether we are using the GNU C Library 2 or newer,
+ ac_cv_gnu_library_2,
+ [AC_EGREP_CPP([Lucky GNU user],
+ [
+#include <features.h>
+#ifdef __GNU_LIBRARY__
+ #if (__GLIBC__ >= 2)
+ Lucky GNU user
+ #endif
+#endif
+ ],
+ ac_cv_gnu_library_2=yes,
+ ac_cv_gnu_library_2=no)
+ ]
+ )
+ AC_SUBST(GLIBC2)
+ GLIBC2="$ac_cv_gnu_library_2"
+ ]
+)
diff --git a/m4/glibc21.m4 b/m4/glibc21.m4
index 9c9f3db3..d95fd986 100644
--- a/m4/glibc21.m4
+++ b/m4/glibc21.m4
@@ -1,15 +1,13 @@
-# 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.
+# glibc21.m4 serial 3
+dnl Copyright (C) 2000-2002, 2004 Free Software Foundation, Inc.
+dnl This file is free software; the Free Software Foundation
+dnl gives unlimited permission to copy and/or distribute it,
+dnl with or without modifications, as long as this notice is preserved.
# Test for the GNU C Library, version 2.1 or newer.
# From Bruno Haible.
-AC_DEFUN([jm_GLIBC21],
+AC_DEFUN([gl_GLIBC21],
[
AC_CACHE_CHECK(whether we are using the GNU C Library 2.1 or newer,
ac_cv_gnu_library_2_1,
diff --git a/m4/iconv.m4 b/m4/iconv.m4
index c5f35798..654c4158 100644
--- a/m4/iconv.m4
+++ b/m4/iconv.m4
@@ -1,10 +1,8 @@
# 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 This file is free software; the Free Software Foundation
+dnl gives unlimited permission to copy and/or distribute it,
+dnl with or without modifications, as long as this notice is preserved.
dnl From Bruno Haible.
diff --git a/m4/intdiv0.m4 b/m4/intdiv0.m4
index 55dddcf1..b8d78176 100644
--- a/m4/intdiv0.m4
+++ b/m4/intdiv0.m4
@@ -1,10 +1,8 @@
# 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 This file is free software; the Free Software Foundation
+dnl gives unlimited permission to copy and/or distribute it,
+dnl with or without modifications, as long as this notice is preserved.
dnl From Bruno Haible.
diff --git a/m4/intmax.m4 b/m4/intmax.m4
index dfb08ccc..d99c999f 100644
--- a/m4/intmax.m4
+++ b/m4/intmax.m4
@@ -1,10 +1,8 @@
-# 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.
+# intmax.m4 serial 2 (gettext-0.14.2)
+dnl Copyright (C) 2002-2005 Free Software Foundation, Inc.
+dnl This file is free software; the Free Software Foundation
+dnl gives unlimited permission to copy and/or distribute it,
+dnl with or without modifications, as long as this notice is preserved.
dnl From Bruno Haible.
dnl Test whether the system has the 'intmax_t' type, but don't attempt to
@@ -12,11 +10,11 @@ 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_REQUIRE([gl_AC_HEADER_INTTYPES_H])
+ AC_REQUIRE([gl_AC_HEADER_STDINT_H])
AC_CACHE_CHECK(for intmax_t, gt_cv_c_intmax_t,
[AC_TRY_COMPILE([
-#include <stddef.h>
+#include <stddef.h>
#include <stdlib.h>
#if HAVE_STDINT_H_WITH_UINTMAX
#include <stdint.h>
diff --git a/m4/intmax_t.m4 b/m4/intmax_t.m4
index 9571814f..b9cb27ff 100644
--- a/m4/intmax_t.m4
+++ b/m4/intmax_t.m4
@@ -6,15 +6,23 @@ AC_PREREQ(2.52)
# Define intmax_t to long or long long if <inttypes.h> doesn't define.
-AC_DEFUN([jm_AC_TYPE_INTMAX_T],
+AC_DEFUN([gl_AC_TYPE_INTMAX_T],
[
- AC_REQUIRE([jm_AC_TYPE_LONG_LONG])
- AC_CHECK_TYPE(intmax_t, ,
- [test $ac_cv_type_long_long = yes \
- && ac_type='long long' \
- || ac_type='long'
- AC_DEFINE_UNQUOTED(intmax_t, $ac_type,
- [Define to widest signed type if <inttypes.h> doesn't define.])])
+ dnl For simplicity, we assume that a header file defines 'intmax_t' if and
+ dnl only if it defines 'uintmax_t'.
+ AC_REQUIRE([gl_AC_HEADER_INTTYPES_H])
+ AC_REQUIRE([gl_AC_HEADER_STDINT_H])
+ if test $gl_cv_header_inttypes_h = no && test $gl_cv_header_stdint_h = no; then
+ AC_REQUIRE([gl_AC_TYPE_LONG_LONG])
+ test $ac_cv_type_long_long = yes \
+ && ac_type='long long' \
+ || ac_type='long'
+ AC_DEFINE_UNQUOTED(intmax_t, $ac_type,
+ [Define to long or long long if <inttypes.h> and <stdint.h> don't define.])
+ else
+ AC_DEFINE(HAVE_INTMAX_T, 1,
+ [Define if you have the 'intmax_t' type in <stdint.h> or <inttypes.h>.])
+ fi
])
# Define uintmax_t to unsigned long or unsigned long long
diff --git a/m4/inttypes-pri.m4 b/m4/inttypes-pri.m4
index fd007c31..4d56a9ad 100644
--- a/m4/inttypes-pri.m4
+++ b/m4/inttypes-pri.m4
@@ -1,10 +1,8 @@
# 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 This file is free software; the Free Software Foundation
+dnl gives unlimited permission to copy and/or distribute it,
+dnl with or without modifications, as long as this notice is preserved.
dnl From Bruno Haible.
diff --git a/m4/inttypes.m4 b/m4/inttypes.m4
index ab370ffe..779bcea0 100644
--- a/m4/inttypes.m4
+++ b/m4/inttypes.m4
@@ -1,10 +1,8 @@
# 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 This file is free software; the Free Software Foundation
+dnl gives unlimited permission to copy and/or distribute it,
+dnl with or without modifications, as long as this notice is preserved.
dnl From Paul Eggert.
diff --git a/m4/inttypes_h.m4 b/m4/inttypes_h.m4
index f342eba3..a5d075d9 100644
--- a/m4/inttypes_h.m4
+++ b/m4/inttypes_h.m4
@@ -1,26 +1,24 @@
-# 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.
+# inttypes_h.m4 serial 6
+dnl Copyright (C) 1997-2004 Free Software Foundation, Inc.
+dnl This file is free software; the Free Software Foundation
+dnl gives unlimited permission to copy and/or distribute it,
+dnl with or without modifications, as long as this notice is preserved.
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_DEFUN([gl_AC_HEADER_INTTYPES_H],
[
- AC_CACHE_CHECK([for inttypes.h], jm_ac_cv_header_inttypes_h,
+ AC_CACHE_CHECK([for inttypes.h], gl_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
+ gl_cv_header_inttypes_h=yes,
+ gl_cv_header_inttypes_h=no)])
+ if test $gl_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. ])
diff --git a/m4/isc-posix.m4 b/m4/isc-posix.m4
index 1319dd1c..74dc8f26 100644
--- a/m4/isc-posix.m4
+++ b/m4/isc-posix.m4
@@ -1,10 +1,8 @@
# 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.
+dnl This file is free software; the Free Software Foundation
+dnl gives unlimited permission to copy and/or distribute it,
+dnl with or without modifications, as long as this notice is preserved.
# This file is not needed with autoconf-2.53 and newer. Remove it in 2005.
diff --git a/m4/lcmessage.m4 b/m4/lcmessage.m4
index ffd4008b..19aa77e4 100644
--- a/m4/lcmessage.m4
+++ b/m4/lcmessage.m4
@@ -1,10 +1,8 @@
-# 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.
+# lcmessage.m4 serial 4 (gettext-0.14.2)
+dnl Copyright (C) 1995-2002, 2004-2005 Free Software Foundation, Inc.
+dnl This file is free software; the Free Software Foundation
+dnl gives unlimited permission to copy and/or distribute it,
+dnl with or without modifications, as long as this notice is preserved.
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
@@ -20,12 +18,12 @@ dnl Ulrich Drepper <drepper@cygnus.com>, 1995.
# Check whether LC_MESSAGES is available in <locale.h>.
-AC_DEFUN([AM_LC_MESSAGES],
+AC_DEFUN([gt_LC_MESSAGES],
[
- AC_CACHE_CHECK([for LC_MESSAGES], am_cv_val_LC_MESSAGES,
+ AC_CACHE_CHECK([for LC_MESSAGES], gt_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
+ gt_cv_val_LC_MESSAGES=yes, gt_cv_val_LC_MESSAGES=no)])
+ if test $gt_cv_val_LC_MESSAGES = yes; then
AC_DEFINE(HAVE_LC_MESSAGES, 1,
[Define if your <locale.h> file defines LC_MESSAGES.])
fi
diff --git a/m4/lib-ld.m4 b/m4/lib-ld.m4
index 38aeaec1..96c4e2c3 100644
--- a/m4/lib-ld.m4
+++ b/m4/lib-ld.m4
@@ -1,10 +1,8 @@
# 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 This file is free software; the Free Software Foundation
+dnl gives unlimited permission to copy and/or distribute it,
+dnl with or without modifications, as long as this notice is preserved.
dnl Subroutines of libtool.m4,
dnl with replacements s/AC_/AC_LIB/ and s/lt_cv/acl_cv/ to avoid collision
diff --git a/m4/lib-link.m4 b/m4/lib-link.m4
index eeb200d2..ea0b0c4e 100644
--- a/m4/lib-link.m4
+++ b/m4/lib-link.m4
@@ -1,13 +1,13 @@
-# 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.
+# lib-link.m4 serial 6 (gettext-0.14.3)
+dnl Copyright (C) 2001-2005 Free Software Foundation, Inc.
+dnl This file is free software; the Free Software Foundation
+dnl gives unlimited permission to copy and/or distribute it,
+dnl with or without modifications, as long as this notice is preserved.
dnl From Bruno Haible.
+AC_PREREQ(2.50)
+
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
@@ -95,6 +95,8 @@ dnl libext, shlibext, hardcode_libdir_flag_spec, hardcode_libdir_separator,
dnl hardcode_direct, hardcode_minus_L.
AC_DEFUN([AC_LIB_RPATH],
[
+ dnl Tell automake >= 1.10 to complain if config.rpath is missing.
+ m4_ifdef([AC_REQUIRE_AUX_FILE], [AC_REQUIRE_AUX_FILE([config.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
@@ -350,7 +352,7 @@ AC_DEFUN([AC_LIB_LINKFLAGS_BODY],
if test "X$additional_includedir" = "X/usr/local/include"; then
if test -n "$GCC"; then
case $host_os in
- linux*) haveit=yes;;
+ linux* | gnu* | k*bsd*-gnu) haveit=yes;;
esac
fi
fi
@@ -399,7 +401,7 @@ AC_DEFUN([AC_LIB_LINKFLAGS_BODY],
if test "X$additional_libdir" = "X/usr/local/lib"; then
if test -n "$GCC"; then
case $host_os in
- linux*) haveit=yes;;
+ linux* | gnu* | k*bsd*-gnu) haveit=yes;;
esac
fi
fi
diff --git a/m4/lib-prefix.m4 b/m4/lib-prefix.m4
index 8aff5a9d..0d895ca6 100644
--- a/m4/lib-prefix.m4
+++ b/m4/lib-prefix.m4
@@ -1,10 +1,8 @@
-# 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.
+# lib-prefix.m4 serial 4 (gettext-0.14.2)
+dnl Copyright (C) 2001-2005 Free Software Foundation, Inc.
+dnl This file is free software; the Free Software Foundation
+dnl gives unlimited permission to copy and/or distribute it,
+dnl with or without modifications, as long as this notice is preserved.
dnl From Bruno Haible.
@@ -71,7 +69,7 @@ AC_DEFUN([AC_LIB_PREFIX],
if test "X$additional_includedir" = "X/usr/local/include"; then
if test -n "$GCC"; then
case $host_os in
- linux*) haveit=yes;;
+ linux* | gnu* | k*bsd*-gnu) haveit=yes;;
esac
fi
fi
diff --git a/m4/longdouble.m4 b/m4/longdouble.m4
index 1333d2f5..40cd7ce0 100644
--- a/m4/longdouble.m4
+++ b/m4/longdouble.m4
@@ -1,10 +1,8 @@
# 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 This file is free software; the Free Software Foundation
+dnl gives unlimited permission to copy and/or distribute it,
+dnl with or without modifications, as long as this notice is preserved.
dnl From Bruno Haible.
dnl Test whether the compiler supports the 'long double' type.
diff --git a/m4/longlong.m4 b/m4/longlong.m4
index d7d7350b..7b399e01 100644
--- a/m4/longlong.m4
+++ b/m4/longlong.m4
@@ -1,16 +1,14 @@
-# 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.
+# longlong.m4 serial 5
+dnl Copyright (C) 1999-2004 Free Software Foundation, Inc.
+dnl This file is free software; the Free Software Foundation
+dnl gives unlimited permission to copy and/or distribute it,
+dnl with or without modifications, as long as this notice is preserved.
dnl From Paul Eggert.
# Define HAVE_LONG_LONG if 'long long' works.
-AC_DEFUN([jm_AC_TYPE_LONG_LONG],
+AC_DEFUN([gl_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;],
diff --git a/m4/nls.m4 b/m4/nls.m4
index 36bc4931..2082c3b2 100644
--- a/m4/nls.m4
+++ b/m4/nls.m4
@@ -1,10 +1,8 @@
-# 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.
+# nls.m4 serial 2 (gettext-0.14.3)
+dnl Copyright (C) 1995-2003, 2005 Free Software Foundation, Inc.
+dnl This file is free software; the Free Software Foundation
+dnl gives unlimited permission to copy and/or distribute it,
+dnl with or without modifications, as long as this notice is preserved.
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
@@ -19,6 +17,8 @@ dnl Authors:
dnl Ulrich Drepper <drepper@cygnus.com>, 1995-2000.
dnl Bruno Haible <haible@clisp.cons.org>, 2000-2003.
+AC_PREREQ(2.50)
+
AC_DEFUN([AM_NLS],
[
AC_MSG_CHECKING([whether NLS is requested])
@@ -32,6 +32,8 @@ AC_DEFUN([AM_NLS],
AC_DEFUN([AM_MKINSTALLDIRS],
[
+ dnl Tell automake >= 1.10 to complain if mkinstalldirs is missing.
+ m4_ifdef([AC_REQUIRE_AUX_FILE], [AC_REQUIRE_AUX_FILE([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.
diff --git a/m4/po.m4 b/m4/po.m4
index e1619988..f2795eea 100644
--- a/m4/po.m4
+++ b/m4/po.m4
@@ -1,10 +1,8 @@
-# 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.
+# po.m4 serial 7 (gettext-0.14.3)
+dnl Copyright (C) 1995-2005 Free Software Foundation, Inc.
+dnl This file is free software; the Free Software Foundation
+dnl gives unlimited permission to copy and/or distribute it,
+dnl with or without modifications, as long as this notice is preserved.
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
@@ -19,6 +17,8 @@ dnl Authors:
dnl Ulrich Drepper <drepper@cygnus.com>, 1995-2000.
dnl Bruno Haible <haible@clisp.cons.org>, 2000-2003.
+AC_PREREQ(2.50)
+
dnl Checks for all prerequisites of the po subdirectory.
AC_DEFUN([AM_PO_SUBDIRS],
[
@@ -34,7 +34,7 @@ AC_DEFUN([AM_PO_SUBDIRS],
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 &&
+ [$ac_dir/$ac_word --statistics /dev/null >&]AS_MESSAGE_LOG_FD[ 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)
@@ -43,7 +43,7 @@ AC_DEFUN([AM_PO_SUBDIRS],
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 &&
+ [$ac_dir/$ac_word --omit-header --copyright-holder= --msgid-bugs-address= /dev/null >&]AS_MESSAGE_LOG_FD[ 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.
@@ -51,7 +51,7 @@ AC_DEFUN([AM_PO_SUBDIRS],
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], :)
+ [$ac_dir/$ac_word --update -q /dev/null /dev/null >&]AS_MESSAGE_LOG_FD[ 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.
@@ -106,6 +106,9 @@ AC_DEFUN([AM_PO_SUBDIRS],
/*) top_srcdir="$ac_given_srcdir" ;;
*) top_srcdir="$ac_dots$ac_given_srcdir" ;;
esac
+ # Treat a directory as a PO directory if and only if it has a
+ # POTFILES.in file. This allows packages to have multiple PO
+ # directories under different names or in different locations.
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"
@@ -119,7 +122,7 @@ AC_DEFUN([AM_PO_SUBDIRS],
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"`
+ ALL_LINGUAS_=`sed -e "/^#/d" -e "s/#.*//" "$ac_given_srcdir/$ac_dir/LINGUAS"`
# Hide the ALL_LINGUAS assigment from automake.
eval 'ALL_LINGUAS''=$ALL_LINGUAS_'
POMAKEFILEDEPS="$POMAKEFILEDEPS LINGUAS"
@@ -298,7 +301,7 @@ changequote([,])dnl
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"`
+ ALL_LINGUAS_=`sed -e "/^#/d" -e "s/#.*//" "$ac_given_srcdir/$ac_dir/LINGUAS"`
POMAKEFILEDEPS="$POMAKEFILEDEPS LINGUAS"
else
# Set ALL_LINGUAS to the value of the Makefile variable LINGUAS.
@@ -348,7 +351,7 @@ changequote([,])dnl
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'`
+ frobbedlang=`echo $lang | sed -e 's/_/-/g' -e 's/^sr-CS/sr-SP/' -e 's/@latin$/-Latn/' -e 's/@cyrillic$/-Cyrl/' -e 's/^sr-SP$/sr-SP-Latn/' -e 's/^uz-UZ$/uz-UZ-Latn/'`
RESOURCESDLLFILES="$RESOURCESDLLFILES $srcdirpre$frobbedlang/\$(DOMAIN).resources.dll"
done
# CATALOGS depends on both $ac_dir and the user's LINGUAS
@@ -389,7 +392,7 @@ changequote([,])dnl
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'`
+ frobbedlang=`echo $lang | sed -e 's/_/-/g' -e 's/^sr-CS/sr-SP/' -e 's/@latin$/-Latn/' -e 's/@cyrillic$/-Cyrl/' -e 's/^sr-SP$/sr-SP-Latn/' -e 's/^uz-UZ$/uz-UZ-Latn/'`
CSHARPCATALOGS="$CSHARPCATALOGS $frobbedlang/\$(DOMAIN).resources.dll"
done
fi
@@ -409,7 +412,7 @@ EOF
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'`
+ frobbedlang=`echo $lang | sed -e 's/_/-/g' -e 's/^sr-CS/sr-SP/' -e 's/@latin$/-Latn/' -e 's/@cyrillic$/-Cyrl/' -e 's/^sr-SP$/sr-SP-Latn/' -e 's/^uz-UZ$/uz-UZ-Latn/'`
cat >> "$ac_file.tmp" <<EOF
$frobbedlang/\$(DOMAIN).resources.dll: $lang.po
@echo "\$(MSGFMT) -c --csharp -d \$(srcdir) -l $lang $srcdirpre$lang.po -r \$(DOMAIN)"; \
diff --git a/m4/printf-posix.m4 b/m4/printf-posix.m4
index 186ba6a6..af10170a 100644
--- a/m4/printf-posix.m4
+++ b/m4/printf-posix.m4
@@ -1,10 +1,8 @@
# 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 This file is free software; the Free Software Foundation
+dnl gives unlimited permission to copy and/or distribute it,
+dnl with or without modifications, as long as this notice is preserved.
dnl From Bruno Haible.
dnl Test whether the printf() function supports POSIX/XSI format strings with
diff --git a/m4/progtest.m4 b/m4/progtest.m4
index 8fe527ce..a56365cd 100644
--- a/m4/progtest.m4
+++ b/m4/progtest.m4
@@ -1,10 +1,8 @@
-# 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.
+# progtest.m4 serial 4 (gettext-0.14.2)
+dnl Copyright (C) 1996-2003, 2005 Free Software Foundation, Inc.
+dnl This file is free software; the Free Software Foundation
+dnl gives unlimited permission to copy and/or distribute it,
+dnl with or without modifications, as long as this notice is preserved.
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
@@ -18,6 +16,8 @@ dnl They are *not* in the public domain.
dnl Authors:
dnl Ulrich Drepper <drepper@cygnus.com>, 1996.
+AC_PREREQ(2.50)
+
# Search path for a program which passes the given test.
dnl AM_PATH_PROG_WITH_TEST(VARIABLE, PROG-TO-CHECK-FOR,
@@ -67,6 +67,7 @@ AC_CACHE_VAL(ac_cv_path_$1,
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
+ echo "$as_me: trying $ac_dir/$ac_word..." >&AS_MESSAGE_LOG_FD
if [$3]; then
ac_cv_path_$1="$ac_dir/$ac_word$ac_exec_ext"
break 2
diff --git a/m4/signed.m4 b/m4/signed.m4
index dc1f54f1..048f5936 100644
--- a/m4/signed.m4
+++ b/m4/signed.m4
@@ -1,10 +1,8 @@
# 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 This file is free software; the Free Software Foundation
+dnl gives unlimited permission to copy and/or distribute it,
+dnl with or without modifications, as long as this notice is preserved.
dnl From Bruno Haible.
diff --git a/m4/size_max.m4 b/m4/size_max.m4
index 5762fc33..4fe81c7b 100644
--- a/m4/size_max.m4
+++ b/m4/size_max.m4
@@ -1,10 +1,8 @@
# 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 This file is free software; the Free Software Foundation
+dnl gives unlimited permission to copy and/or distribute it,
+dnl with or without modifications, as long as this notice is preserved.
dnl From Bruno Haible.
diff --git a/m4/socket.m4 b/m4/socket.m4
index be894247..8e77cfed 100644
--- a/m4/socket.m4
+++ b/m4/socket.m4
@@ -18,7 +18,7 @@ dnl GNU General Public License for more details.
dnl
dnl You should have received a copy of the GNU General Public License
dnl along with this program; if not, write to the Free Software
-dnl Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA
+dnl Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA
dnl
dnl Find the socket libraries
diff --git a/m4/stdint_h.m4 b/m4/stdint_h.m4
index 32ba7ae7..3355f35a 100644
--- a/m4/stdint_h.m4
+++ b/m4/stdint_h.m4
@@ -1,26 +1,24 @@
-# 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.
+# stdint_h.m4 serial 5
+dnl Copyright (C) 1997-2004 Free Software Foundation, Inc.
+dnl This file is free software; the Free Software Foundation
+dnl gives unlimited permission to copy and/or distribute it,
+dnl with or without modifications, as long as this notice is preserved.
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_DEFUN([gl_AC_HEADER_STDINT_H],
[
- AC_CACHE_CHECK([for stdint.h], jm_ac_cv_header_stdint_h,
+ AC_CACHE_CHECK([for stdint.h], gl_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
+ gl_cv_header_stdint_h=yes,
+ gl_cv_header_stdint_h=no)])
+ if test $gl_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. ])
diff --git a/m4/strtod.m4 b/m4/strtod.m4
index 16dd33bf..f097bbba 100644
--- a/m4/strtod.m4
+++ b/m4/strtod.m4
@@ -18,7 +18,7 @@ dnl GNU General Public License for more details.
dnl
dnl You should have received a copy of the GNU General Public License
dnl along with this program; if not, write to the Free Software
-dnl Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA
+dnl Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA
dnl Check for strtod with C89 semantics
diff --git a/m4/uintmax_t.m4 b/m4/uintmax_t.m4
index b5f28d44..bf83ed74 100644
--- a/m4/uintmax_t.m4
+++ b/m4/uintmax_t.m4
@@ -1,10 +1,8 @@
-# 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.
+# uintmax_t.m4 serial 9
+dnl Copyright (C) 1997-2004 Free Software Foundation, Inc.
+dnl This file is free software; the Free Software Foundation
+dnl gives unlimited permission to copy and/or distribute it,
+dnl with or without modifications, as long as this notice is preserved.
dnl From Paul Eggert.
@@ -13,12 +11,12 @@ 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_DEFUN([gl_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])
+ AC_REQUIRE([gl_AC_HEADER_INTTYPES_H])
+ AC_REQUIRE([gl_AC_HEADER_STDINT_H])
+ if test $gl_cv_header_inttypes_h = no && test $gl_cv_header_stdint_h = no; then
+ AC_REQUIRE([gl_AC_TYPE_UNSIGNED_LONG_LONG])
test $ac_cv_type_unsigned_long_long = yes \
&& ac_type='unsigned long long' \
|| ac_type='unsigned long'
diff --git a/m4/ulonglong.m4 b/m4/ulonglong.m4
index 1da8b809..dee10ccc 100644
--- a/m4/ulonglong.m4
+++ b/m4/ulonglong.m4
@@ -1,16 +1,14 @@
-# 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.
+# ulonglong.m4 serial 4
+dnl Copyright (C) 1999-2004 Free Software Foundation, Inc.
+dnl This file is free software; the Free Software Foundation
+dnl gives unlimited permission to copy and/or distribute it,
+dnl with or without modifications, as long as this notice is preserved.
dnl From Paul Eggert.
# Define HAVE_UNSIGNED_LONG_LONG if 'unsigned long long' works.
-AC_DEFUN([jm_AC_TYPE_UNSIGNED_LONG_LONG],
+AC_DEFUN([gl_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;],
diff --git a/m4/wchar_t.m4 b/m4/wchar_t.m4
index d8fd1ec5..cde2129a 100644
--- a/m4/wchar_t.m4
+++ b/m4/wchar_t.m4
@@ -1,10 +1,8 @@
# 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 This file is free software; the Free Software Foundation
+dnl gives unlimited permission to copy and/or distribute it,
+dnl with or without modifications, as long as this notice is preserved.
dnl From Bruno Haible.
dnl Test whether <stddef.h> has the 'wchar_t' type.
diff --git a/m4/wint_t.m4 b/m4/wint_t.m4
index 3d8d2159..b8fff9c8 100644
--- a/m4/wint_t.m4
+++ b/m4/wint_t.m4
@@ -1,10 +1,8 @@
# 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 This file is free software; the Free Software Foundation
+dnl gives unlimited permission to copy and/or distribute it,
+dnl with or without modifications, as long as this notice is preserved.
dnl From Bruno Haible.
dnl Test whether <wchar.h> has the 'wint_t' type.
diff --git a/m4/xsize.m4 b/m4/xsize.m4
index 9b7cf9b4..85bb721e 100644
--- a/m4/xsize.m4
+++ b/m4/xsize.m4
@@ -1,14 +1,13 @@
-# 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.
+# xsize.m4 serial 3
+dnl Copyright (C) 2003-2004 Free Software Foundation, Inc.
+dnl This file is free software; the Free Software Foundation
+dnl gives unlimited permission to copy and/or distribute it,
+dnl with or without modifications, as long as this notice is preserved.
AC_DEFUN([gl_XSIZE],
[
dnl Prerequisites of lib/xsize.h.
AC_REQUIRE([gl_SIZE_MAX])
+ AC_REQUIRE([AC_C_INLINE])
AC_CHECK_HEADERS(stdint.h)
])
diff --git a/main.c b/main.c
index 87a22958..847ae54e 100644
--- a/main.c
+++ b/main.c
@@ -3,7 +3,7 @@
*/
/*
- * Copyright (C) 1986, 1988, 1989, 1991-2004 the Free Software Foundation, Inc.
+ * Copyright (C) 1986, 1988, 1989, 1991-2005 the Free Software Foundation, Inc.
*
* This file is part of GAWK, the GNU implementation of the
* AWK Programming Language.
@@ -20,9 +20,12 @@
*
* 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
+ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA
*/
+/* FIX THIS BEFORE EVERY RELEASE: */
+#define UPDATE_YEAR 2005
+
#include "awk.h"
#include "getopt.h"
@@ -44,6 +47,8 @@ static void copyleft P((void)) ATTRIBUTE_NORETURN;
static void cmdline_fs P((char *str));
static void init_args P((int argc0, int argc, char *argv0, char **argv));
static void init_vars P((void));
+static NODE *load_environ P((void));
+static NODE *load_procinfo P((void));
static void add_src P((struct src **data, long *num, long *alloc, enum srctype stype, char *val));
static RETSIGTYPE catchsig P((int sig)) ATTRIBUTE_NORETURN;
static void nostalgia P((void)) ATTRIBUTE_NORETURN;
@@ -82,9 +87,9 @@ int errcount = 0; /* error counter, used by yyerror() */
NODE *Nnull_string; /* The global null string */
-#if ENABLE_NLS && defined(HAVE_LOCALE_H)
+#if defined(HAVE_LOCALE_H)
struct lconv loc; /* current locale */
-#endif /* ENABLE_NLS && defined(HAVE_LOCALE_H) */
+#endif /* defined(HAVE_LOCALE_H) */
/* The name the program was invoked under, for error messages */
const char *myname;
@@ -113,6 +118,8 @@ static struct src *preassigns = NULL; /* requested via -v or -F */
static long numassigns = -1; /* how many of them */
static long allocassigns; /* for how many is allocated */
+static int disallow_var_assigns = FALSE; /* true for --exec */
+
#define preassigns_add(stype, val) \
add_src(&preassigns, &numassigns, &allocassigns, stype, val)
@@ -135,7 +142,9 @@ int in_begin_rule = FALSE; /* we're in a BEGIN rule */
int in_end_rule = FALSE; /* we're in a END rule */
int whiny_users = FALSE; /* do things that whiny users want */
#ifdef MBS_SUPPORT
-int gawk_mb_cur_max = 1; /* MB_CUR_MAX value, see comment in main() */
+int gawk_mb_cur_max; /* MB_CUR_MAX value, see comment in main() */
+#else
+const int gawk_mb_cur_max = 1;
#endif
int output_is_tty = FALSE; /* control flushing of output */
@@ -181,6 +190,7 @@ static const struct option optab[] = {
{ "version", no_argument, NULL, 'V' },
{ "usage", no_argument, NULL, 'u' },
{ "help", no_argument, NULL, 'u' },
+ { "exec", required_argument, NULL, 'S' },
#ifdef GAWKDEBUG
{ "parsedebug", no_argument, NULL, 'D' },
#endif
@@ -207,6 +217,7 @@ main(int argc, char **argv)
extern int opterr;
extern char *optarg;
int i;
+ int stdio_problem = FALSE;
/* do these checks early */
if (getenv("TIDYMEM") != NULL)
@@ -226,7 +237,7 @@ main(int argc, char **argv)
#if defined(LC_COLLATE)
setlocale(LC_COLLATE, "");
#endif
-#if HAVE_LC_MESSAGES && defined(LC_MESSAGES)
+#if defined(LC_MESSAGES)
setlocale(LC_MESSAGES, "");
#endif
#if defined(LC_NUMERIC)
@@ -249,6 +260,7 @@ main(int argc, char **argv)
* this value once makes a speed difference.
*/
gawk_mb_cur_max = MB_CUR_MAX;
+ /* Without MBS_SUPPORT, gawk_mb_cur_max is 1. */
#endif
(void) bindtextdomain(PACKAGE, LOCALEDIR);
@@ -292,6 +304,9 @@ main(int argc, char **argv)
preassigns_add(PRE_ASSIGN_FS, optarg);
break;
+ case 'S':
+ disallow_var_assigns = TRUE;
+ /* fall through */
case 'f':
/*
* a la MKS awk, allow multiple -f options.
@@ -436,6 +451,8 @@ main(int argc, char **argv)
let getopt print error message for us */
break;
}
+ if (c == 'S') /* --exec ends option processing */
+ break;
}
out:
@@ -532,6 +549,15 @@ out:
init_args(optind, argc, (char *) myname, argv);
(void) tokexpand();
+#if defined(LC_NUMERIC)
+ /*
+ * FRAGILE! CAREFUL!
+ * Pre-initing the variables with arg_assign() can change the
+ * locale. Force it to C before parsing the program.
+ */
+ setlocale(LC_NUMERIC, "C");
+#endif
+
/* Read in the program */
if (yyparse() != 0 || errcount != 0)
exit(1);
@@ -555,7 +581,7 @@ out:
setlocale(LC_NUMERIC, "");
#endif
-#if ENABLE_NLS && defined(HAVE_LOCALE_H)
+#if defined(HAVE_LOCALE_H)
loc = *localeconv(); /* Make a local copy of locale numeric info */
#endif
@@ -572,7 +598,23 @@ out:
(void) interpret(end_block);
}
in_end_rule = FALSE;
- if (close_io() != 0 && ! exiting && exit_val == 0)
+ /*
+ * This used to be:
+ *
+ * if (close_io() != 0 && ! exiting && exit_val == 0)
+ * exit_val = 1;
+ *
+ * Other awks don't care about problems closing open files
+ * and pipes, in that it doesn't affect their exit status.
+ * So we no longer do either.
+ */
+ (void) close_io(& stdio_problem);
+ /*
+ * However, we do want to exit non-zero if there was a problem
+ * with stdout/stderr, so we reinstate a slightly different
+ * version of the above:
+ */
+ if (stdio_problem && ! exiting && exit_val == 0)
exit_val = 1;
if (do_profiling) {
@@ -636,6 +678,7 @@ usage(int exitval, FILE *fp)
fputs(_("\t-W copyleft\t\t--copyleft\n"), fp);
fputs(_("\t-W copyright\t\t--copyright\n"), fp);
fputs(_("\t-W dump-variables[=file]\t--dump-variables[=file]\n"), fp);
+ fputs(_("\t-W exec=file\t\t--exec=file\n"), fp);
fputs(_("\t-W gen-po\t\t--gen-po\n"), fp);
fputs(_("\t-W help\t\t\t--help\n"), fp);
fputs(_("\t-W lint[=fatal]\t\t--lint[=fatal]\n"), fp);
@@ -670,8 +713,11 @@ By default it reads standard input and writes standard output.\n\n"), fp);
fflush(fp);
- if (ferror(fp))
+ if (ferror(fp)) {
+ if (fp == stdout)
+ warning(_("error writing standard output (%s)"), strerror(errno));
exit(1);
+ }
exit(exitval);
}
@@ -698,16 +744,18 @@ GNU General Public License for more details.\n\
static const char blurb_part3[] =
N_("You should have received a copy of the GNU General Public License\n\
along with this program; if not, write to the Free Software\n\
-Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.\n");
+Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.\n");
/* multiple blurbs are needed for some brain dead compilers. */
- printf(_(blurb_part1), 2003); /* Last update year */
+ printf(_(blurb_part1), UPDATE_YEAR); /* Last update year */
fputs(_(blurb_part2), stdout);
fputs(_(blurb_part3), stdout);
fflush(stdout);
- if (ferror(stdout))
+ if (ferror(stdout)) {
+ warning(_("error writing standard output (%s)"), strerror(errno));
exit(1);
+ }
exit(0);
}
@@ -816,11 +864,16 @@ init_vars()
if (vp->assign)
(*(vp->assign))();
}
+
+ /* Set up deferred variables (loaded only when accessed). */
+ if (! do_traditional)
+ register_deferred_variable("PROCINFO", load_procinfo);
+ register_deferred_variable("ENVIRON", load_environ);
}
/* load_environ --- populate the ENVIRON array */
-NODE *
+static NODE *
load_environ()
{
#if ! defined(TANDEM)
@@ -867,7 +920,7 @@ load_environ()
/* load_procinfo --- populate the PROCINFO array */
-NODE *
+static NODE *
load_procinfo()
{
int i;
@@ -952,6 +1005,9 @@ arg_assign(char *arg, int initing)
NODE *it;
NODE **lhs;
+ if (! initing && disallow_var_assigns)
+ return FALSE; /* --exec */
+
cp = strchr(arg, '=');
if (cp == NULL) {
@@ -1066,6 +1122,7 @@ init_fds()
struct stat sbuf;
int fd;
int newfd;
+ char const *const opposite_mode[] = {"w", "r", "r"};
/* maybe no stderr, don't bother with error mesg */
for (fd = 0; fd <= 2; fd++) {
@@ -1074,7 +1131,7 @@ init_fds()
if (do_lint)
lintwarn(_("no pre-opened fd %d"), fd);
#endif
- newfd = devopen("/dev/null", "r+");
+ newfd = devopen("/dev/null", opposite_mode[fd]);
/* turn off some compiler warnings "set but not used" */
newfd += 0;
#ifdef MAKE_A_HEROIC_EFFORT
diff --git a/mbsupport.h b/mbsupport.h
index 78a27ed8..941db32f 100644
--- a/mbsupport.h
+++ b/mbsupport.h
@@ -3,7 +3,7 @@
*/
/*
- * Copyright (C) 2004 the Free Software Foundation, Inc.
+ * Copyright (C) 2004, 2005 the Free Software Foundation, Inc.
*
* This file is part of GAWK, the GNU implementation of the
* AWK Programming Language.
@@ -20,11 +20,11 @@
*
* 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
+ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA
*/
/*
- * This file is needed because we test for 1i8n support in 3 different
+ * This file is needed because we test for i18n support in 3 different
* places, and we want a consistent definition in all of them. Following
* the ``Don't Repeat Yourself'' principle from "The Pragmatic Programmer",
* we centralize the tests here.
@@ -46,6 +46,11 @@
&& defined(HAVE_WCTYPE) \
&& defined(HAVE_WCTYPE_H) \
&& defined(HAVE_WCTYPE_T) \
+ && defined(HAVE_WINT_T) \
+ && defined(HAVE_ISWLOWER) \
+ && defined(HAVE_ISWUPPER) \
+ && defined(HAVE_TOWLOWER) \
+ && defined(HAVE_TOWUPPER) \
&& (defined(HAVE_STDLIB_H) && defined(MB_CUR_MAX)) \
/* We can handle multibyte strings. */
# define MBS_SUPPORT 1
diff --git a/missing b/missing
index e7ef83a1..feec7f08 100755
--- a/missing
+++ b/missing
@@ -1,9 +1,9 @@
#! /bin/sh
# Common stub for a few missing GNU programs while installing.
-scriptversion=2003-09-02.23
+scriptversion=2005-02-08.22
-# Copyright (C) 1996, 1997, 1999, 2000, 2002, 2003
+# Copyright (C) 1996, 1997, 1999, 2000, 2002, 2003, 2004, 2005
# Free Software Foundation, Inc.
# Originally by Fran,cois Pinard <pinard@iro.umontreal.ca>, 1996.
@@ -19,8 +19,8 @@ scriptversion=2003-09-02.23
# 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.
+# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+# 02110-1301, USA.
# As a special exception to the GNU General Public License, if you
# distribute this file as part of a program that contains a
@@ -60,11 +60,6 @@ case "$1" in
msg="probably too old"
fi
;;
-esac
-
-# If it does not exist, or fails to run (possibly an outdated version),
-# try to emulate it.
-case "$1" in
-h|--h|--he|--hel|--help)
echo "\
@@ -92,10 +87,12 @@ Supported PROGRAM values:
yacc create \`y.tab.[ch]', if possible, from existing .[ch]
Send bug reports to <bug-automake@gnu.org>."
+ exit $?
;;
-v|--v|--ve|--ver|--vers|--versi|--versio|--version)
echo "missing $scriptversion (GNU Automake)"
+ exit $?
;;
-*)
@@ -104,12 +101,42 @@ Send bug reports to <bug-automake@gnu.org>."
exit 1
;;
- aclocal*)
+esac
+
+# Now exit if we have it, but it failed. Also exit now if we
+# don't have it and --version was passed (most likely to detect
+# the program).
+case "$1" in
+ lex|yacc)
+ # Not GNU programs, they don't have --version.
+ ;;
+
+ tar)
+ if test -n "$run"; then
+ echo 1>&2 "ERROR: \`tar' requires --run"
+ exit 1
+ elif test "x$2" = "x--version" || test "x$2" = "x--help"; then
+ exit 1
+ fi
+ ;;
+
+ *)
if test -z "$run" && ($1 --version) > /dev/null 2>&1; then
# We have it, but it failed.
exit 1
+ elif test "x$2" = "x--version" || test "x$2" = "x--help"; then
+ # Could not run --version or --help. This is probably someone
+ # running `$TOOL --version' or `$TOOL --help' to check whether
+ # $TOOL exists and not knowing $TOOL uses missing.
+ exit 1
fi
+ ;;
+esac
+# If it does not exist, or fails to run (possibly an outdated version),
+# try to emulate it.
+case "$1" in
+ aclocal*)
echo 1>&2 "\
WARNING: \`$1' is $msg. You should only need it if
you modified \`acinclude.m4' or \`${configure_ac}'. You might want
@@ -119,11 +146,6 @@ WARNING: \`$1' is $msg. You should only need it if
;;
autoconf)
- if test -z "$run" && ($1 --version) > /dev/null 2>&1; then
- # We have it, but it failed.
- exit 1
- fi
-
echo 1>&2 "\
WARNING: \`$1' is $msg. You should only need it if
you modified \`${configure_ac}'. You might want to install the
@@ -133,11 +155,6 @@ WARNING: \`$1' is $msg. You should only need it if
;;
autoheader)
- if test -z "$run" && ($1 --version) > /dev/null 2>&1; then
- # We have it, but it failed.
- exit 1
- fi
-
echo 1>&2 "\
WARNING: \`$1' is $msg. You should only need it if
you modified \`acconfig.h' or \`${configure_ac}'. You might want
@@ -157,11 +174,6 @@ WARNING: \`$1' is $msg. You should only need it if
;;
automake*)
- if test -z "$run" && ($1 --version) > /dev/null 2>&1; then
- # We have it, but it failed.
- exit 1
- fi
-
echo 1>&2 "\
WARNING: \`$1' is $msg. You should only need it if
you modified \`Makefile.am', \`acinclude.m4' or \`${configure_ac}'.
@@ -173,11 +185,6 @@ WARNING: \`$1' is $msg. You should only need it if
;;
autom4te)
- if test -z "$run" && ($1 --version) > /dev/null 2>&1; then
- # We have it, but it failed.
- exit 1
- fi
-
echo 1>&2 "\
WARNING: \`$1' is needed, but is $msg.
You might have modified some files without having the
@@ -254,11 +261,6 @@ WARNING: \`$1' is $msg. You should only need it if
;;
help2man)
- if test -z "$run" && ($1 --version) > /dev/null 2>&1; then
- # We have it, but it failed.
- exit 1
- fi
-
echo 1>&2 "\
WARNING: \`$1' is $msg. You should only need it if
you modified a dependency of a manual page. You may need the
@@ -279,11 +281,6 @@ WARNING: \`$1' is $msg. You should only need it if
;;
makeinfo)
- if test -z "$run" && (makeinfo --version) > /dev/null 2>&1; then
- # We have makeinfo, but it failed.
- exit 1
- fi
-
echo 1>&2 "\
WARNING: \`$1' is $msg. You should only need it if
you modified a \`.texi' or \`.texinfo' file, or any other file
@@ -291,20 +288,20 @@ WARNING: \`$1' is $msg. You should only need it if
call might also be the consequence of using a buggy \`make' (AIX,
DU, IRIX). You might want to install the \`Texinfo' package or
the \`GNU make' package. Grab either from any GNU archive site."
+ # The file to touch is that specified with -o ...
file=`echo "$*" | sed -n 's/.*-o \([^ ]*\).*/\1/p'`
if test -z "$file"; then
- file=`echo "$*" | sed 's/.* \([^ ]*\) *$/\1/'`
- file=`sed -n '/^@setfilename/ { s/.* \([^ ]*\) *$/\1/; p; q; }' $file`
+ # ... or it is the one specified with @setfilename ...
+ infile=`echo "$*" | sed 's/.* \([^ ]*\) *$/\1/'`
+ file=`sed -n '/^@setfilename/ { s/.* \([^ ]*\) *$/\1/; p; q; }' $infile`
+ # ... or it is derived from the source name (dir/f.texi becomes f.info)
+ test -z "$file" && file=`echo "$infile" | sed 's,.*/,,;s,.[^.]*$,,'`.info
fi
touch $file
;;
tar)
shift
- if test -n "$run"; then
- echo 1>&2 "ERROR: \`tar' requires --run"
- exit 1
- fi
# We have already tried tar in the generic part.
# Look for gnutar/gtar before invocation to avoid ugly error
diff --git a/missing_d/COPYING.LIB b/missing_d/COPYING.LIB
index 161a3d1d..778d0bb5 100644
--- a/missing_d/COPYING.LIB
+++ b/missing_d/COPYING.LIB
@@ -2,7 +2,7 @@
Version 2, June 1991
Copyright (C) 1991 Free Software Foundation, Inc.
- 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA
+ 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA
Everyone is permitted to copy and distribute verbatim copies
of this license document, but changing it is not allowed.
@@ -464,8 +464,8 @@ convey the exclusion of warranty; and each file should have at least the
You should have received a copy of the GNU Library General Public
License along with this library; if not, write to the Free
- Software Foundation, Inc., 59 Temple Place - Suite 330, Boston,
- MA 02111-1307, USA
+ Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston,
+ MA 02110-1301, USA
Also add information on how to contact you by electronic and paper mail.
diff --git a/missing_d/ChangeLog b/missing_d/ChangeLog
index c0d38c19..72c2f71e 100644
--- a/missing_d/ChangeLog
+++ b/missing_d/ChangeLog
@@ -1,3 +1,13 @@
+Tue Jul 26 21:46:16 2005 Arnold D. Robbins <arnold@skeeve.com>
+
+ * Release 3.1.5: Release tar file made.
+
+Tue Jul 26 21:27:46 2005 Arnold D. Robbins <arnold@skeeve.com>
+
+ * strtod.c (gawk_strtod) [ENABLE_NLS]: Removed from conditional
+ paralleling change to main.c.
+ * stroul.c (strtoul): Same.
+
Mon Aug 2 12:18:15 2004 Arnold D. Robbins <arnold@skeeve.com>
* Release 3.1.4: Release tar file made.
diff --git a/missing_d/mktime.c b/missing_d/mktime.c
index fab599d8..217dfafb 100644
--- a/missing_d/mktime.c
+++ b/missing_d/mktime.c
@@ -14,8 +14,8 @@
You should have received a copy of the GNU Library General Public
License along with the GNU C Library; see the file COPYING.LIB. If not,
- write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
- Boston, MA 02111-1307, USA. */
+ write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
+ Boston, MA 02110-1301, USA. */
/* Define this to have a standalone program to test this implementation of
mktime. */
diff --git a/missing_d/strerror.c b/missing_d/strerror.c
index 6a725995..f3e8c28c 100644
--- a/missing_d/strerror.c
+++ b/missing_d/strerror.c
@@ -14,7 +14,7 @@
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. */
+ Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. */
#if 0
#include <stdio.h>
diff --git a/missing_d/strftime.c b/missing_d/strftime.c
index c1e1a1e2..69a0c517 100644
--- a/missing_d/strftime.c
+++ b/missing_d/strftime.c
@@ -14,8 +14,8 @@
You should have received a copy of the GNU Lesser General Public
License along with the GNU C Library; if not, write to the Free
- Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
- 02111-1307 USA. */
+ Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+ 02110-1301 USA. */
#ifdef HAVE_CONFIG_H
# include <config.h>
diff --git a/missing_d/strtod.c b/missing_d/strtod.c
index fc97b8d8..5ebc8c6e 100644
--- a/missing_d/strtod.c
+++ b/missing_d/strtod.c
@@ -69,7 +69,7 @@ register const char **ptr;
}
if (
-#if ENABLE_NLS && defined(HAVE_LOCALE_H)
+#if defined(HAVE_LOCALE_H)
loc.decimal_point != NULL
? *s == loc.decimal_point[0]
: *s == '.'
diff --git a/missing_d/strtoul.c b/missing_d/strtoul.c
index ccabfbeb..d2655750 100644
--- a/missing_d/strtoul.c
+++ b/missing_d/strtoul.c
@@ -93,7 +93,7 @@ int base;
*/
for (; *nptr != '\0'; nptr++) {
c = *nptr;
-#if ENABLE_NLS && defined(HAVE_LOCALE_H)
+#if defined(HAVE_LOCALE_H)
if (base == 10
&& loc.thousands_sep != NULL
&& loc.thousands_sep[0] != '\0'
diff --git a/missing_d/system.c b/missing_d/system.c
index 11db9925..7d1a4ee4 100644
--- a/missing_d/system.c
+++ b/missing_d/system.c
@@ -14,7 +14,7 @@
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. */
+ Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. */
extern void fatal();
diff --git a/msg.c b/msg.c
index 672d0867..1584f910 100644
--- a/msg.c
+++ b/msg.c
@@ -20,7 +20,7 @@
*
* 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
+ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA
*/
#include "awk.h"
diff --git a/node.c b/node.c
index 4ef76e32..b49a1506 100644
--- a/node.c
+++ b/node.c
@@ -3,7 +3,7 @@
*/
/*
- * Copyright (C) 1986, 1988, 1989, 1991-2001, 2003, 2004 the Free Software Foundation, Inc.
+ * Copyright (C) 1986, 1988, 1989, 1991-2001, 2003-2005 the Free Software Foundation, Inc.
*
* This file is part of GAWK, the GNU implementation of the
* AWK Programming Language.
@@ -20,7 +20,7 @@
*
* 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
+ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA
*/
#include "awk.h"
@@ -50,8 +50,9 @@ r_force_number(register NODE *n)
/* all the conditionals are an attempt to avoid the expensive strtod */
+ /* Note: only set NUMCUR if we actually convert some digits */
+
n->numbr = 0.0;
- n->flags |= NUMCUR;
if (n->stlen == 0) {
if (0 && do_lint)
@@ -84,6 +85,7 @@ r_force_number(register NODE *n)
if (ISDIGIT(*cp)) {
n->numbr = (AWKNUM)(*cp - '0');
n->flags |= newflags;
+ n->flags |= NUMCUR;
} else if (0 && do_lint)
lintwarn(_("can't convert string to float"));
return n->numbr;
@@ -91,8 +93,9 @@ r_force_number(register NODE *n)
if (do_non_decimal_data) {
errno = 0;
- if (! do_traditional && isnondecimal(cp)) {
+ if (! do_traditional && isnondecimal(cp, TRUE)) {
n->numbr = nondec2awknum(cp, cpend - cp);
+ n->flags |= NUMCUR;
goto finish;
}
}
@@ -110,6 +113,7 @@ finish:
/* the >= should be ==, but for SunOS 3.5 strtod() */
if (errno == 0 && ptr >= cpend) {
n->flags |= newflags;
+ n->flags |= NUMCUR;
} else {
if (0 && do_lint && ptr < cpend)
lintwarn(_("can't convert string to float"));
@@ -212,6 +216,15 @@ format_val(const char *format, int index, register NODE *s)
no_malloc:
s->stref = 1;
s->flags |= STRCUR;
+#if defined MBS_SUPPORT
+ if ((s->flags & WSTRCUR) != 0) {
+ assert(s->wstptr != NULL);
+ free(s->wstptr);
+ s->wstptr = NULL;
+ s->wstlen = 0;
+ s->flags &= ~WSTRCUR;
+ }
+#endif
return s;
}
@@ -274,11 +287,23 @@ r_dupnode(NODE *n)
*r = *n;
r->flags &= ~(PERM|TEMP|FIELD);
r->flags |= MALLOC;
+#if defined MBS_SUPPORT
+ r->wstptr = NULL;
+#endif /* defined MBS_SUPPORT */
if (n->type == Node_val && (n->flags & STRCUR) != 0) {
r->stref = 1;
emalloc(r->stptr, char *, r->stlen + 2, "dupnode");
memcpy(r->stptr, n->stptr, r->stlen);
r->stptr[r->stlen] = '\0';
+#if defined MBS_SUPPORT
+ if ((n->flags & WSTRCUR) != 0) {
+ r->wstlen = n->wstlen;
+ emalloc(r->wstptr, wchar_t *, sizeof(wchar_t) * (r->wstlen + 2), "dupnode");
+ memcpy(r->wstptr, n->wstptr, r->wstlen * sizeof(wchar_t));
+ r->wstptr[r->wstlen] = L'\0';
+ r->flags |= WSTRCUR;
+ }
+#endif /* defined MBS_SUPPORT */
} else if (n->type == Node_ahash && (n->flags & MALLOC) != 0) {
r->ahname_ref = 1;
emalloc(r->ahname_str, char *, r->ahname_len + 2, "dupnode");
@@ -319,7 +344,12 @@ mk_number(AWKNUM x, unsigned int flags)
r->stref = 1;
r->stptr = NULL;
r->stlen = 0;
-#endif
+#if defined MBS_SUPPORT
+ r->wstptr = NULL;
+ r->wstlen = 0;
+ r->flags &= ~WSTRCUR;
+#endif /* MBS_SUPPORT */
+#endif /* GAWKDEBUG */
return r;
}
@@ -333,6 +363,10 @@ make_str_node(char *s, unsigned long len, int flags)
getnode(r);
r->type = Node_val;
r->flags = (STRING|STRCUR|MALLOC);
+#if defined MBS_SUPPORT
+ r->wstptr = NULL;
+ r->wstlen = 0;
+#endif
if (flags & ALREADY_MALLOCED)
r->stptr = s;
else {
@@ -346,9 +380,32 @@ make_str_node(char *s, unsigned long len, int flags)
register char *ptm;
register int c;
register const char *end;
+#ifdef MBS_SUPPORT
+ mbstate_t cur_state;
+
+ memset(& cur_state, 0, sizeof(cur_state));
+#endif
end = &(r->stptr[len]);
for (pf = ptm = r->stptr; pf < end;) {
+#ifdef MBS_SUPPORT
+ /*
+ * Keep multibyte characters together. This avoids
+ * problems if a subsequent byte of a multibyte
+ * character happens to be a backslash.
+ */
+ if (gawk_mb_cur_max > 1) {
+ int mblen = mbrlen(pf, end-pf, &cur_state);
+
+ if (mblen > 1) {
+ int i;
+
+ for (i = 0; i < mblen; i++)
+ *ptm++ = *pf++;
+ continue;
+ }
+ }
+#endif
c = *pf++;
if (c == '\\') {
c = parse_escape(&pf);
@@ -398,11 +455,8 @@ more_nodes()
/* get more nodes and initialize list */
emalloc(nextfree, NODE *, NODECHUNK * sizeof(NODE), "more_nodes");
+ memset(nextfree, 0, NODECHUNK * sizeof(NODE));
for (np = nextfree; np <= &nextfree[NODECHUNK - 1]; np++) {
- np->flags = 0;
-#ifndef NO_PROFILING
- np->exec_count = 0;
-#endif
np->nextp = np + 1;
}
--np;
@@ -456,6 +510,15 @@ unref(register NODE *tmp)
return;
}
free(tmp->stptr);
+#if defined MBS_SUPPORT
+ if (tmp->wstptr != NULL) {
+ assert((tmp->flags & WSTRCUR) != 0);
+ free(tmp->wstptr);
+ }
+ tmp->flags &= ~WSTRCUR;
+ tmp->wstptr = NULL;
+ tmp->wstlen = 0;
+#endif
}
freenode(tmp);
return;
@@ -584,3 +647,203 @@ parse_escape(const char **string_ptr)
return c;
}
}
+
+/* isnondecimal --- return true if number is not a decimal number */
+
+int
+isnondecimal(const char *str, int use_locale)
+{
+ int dec_point = '.';
+#if defined(HAVE_LOCALE_H)
+ /*
+ * loc.decimal_point may not have been initialized yet,
+ * so double check it before using it.
+ */
+ if (use_locale && loc.decimal_point != NULL && loc.decimal_point[0] != '\0')
+ dec_point = loc.decimal_point[0]; /* XXX --- assumes one char */
+#endif
+
+ if (str[0] != '0')
+ return FALSE;
+
+ /* leading 0x or 0X */
+ if (str[1] == 'x' || str[1] == 'X')
+ return TRUE;
+
+ /*
+ * Numbers with '.', 'e', or 'E' are decimal.
+ * Have to check so that things like 00.34 are handled right.
+ *
+ * These beasts can have trailing whitespace. Deal with that too.
+ */
+ for (; *str != '\0'; str++) {
+ if (*str == 'e' || *str == 'E' || *str == dec_point)
+ return FALSE;
+ else if (! ISDIGIT(*str))
+ break;
+ }
+
+ return TRUE;
+}
+
+#if defined MBS_SUPPORT
+/* str2wstr --- convert a multibyte string to a wide string */
+
+NODE *
+str2wstr(NODE *n, size_t **ptr)
+{
+ size_t i, count, src_count;
+ char *sp;
+ mbstate_t mbs;
+ wchar_t wc, *wsp;
+
+ assert((n->flags & (STRING|STRCUR)) != 0);
+
+ if ((n->flags & WSTRCUR) != 0) {
+ if (ptr == NULL)
+ return n;
+ /* otherwise
+ fall through and recompute to fill in the array */
+ }
+
+ if (n->wstptr != NULL) {
+ free(n->wstptr);
+ n->wstptr = NULL;
+ n->wstlen = 0;
+ }
+
+ /*
+ * After consideration and consultation, this
+ * code trades space for time. We allocate
+ * an array of wchar_t that is n->stlen long.
+ * This is needed in the worst case anyway, where
+ * each input bytes maps to one wchar_t. The
+ * advantage is that we only have to convert the string
+ * once, instead of twice, once to find out how many
+ * wide characters, and then again to actually fill
+ * the info in. If there's a lot left over, we can
+ * realloc the wide string down in size.
+ */
+
+ emalloc(n->wstptr, wchar_t *, sizeof(wchar_t) * (n->stlen + 2), "str2wstr");
+ wsp = n->wstptr;
+
+ /*
+ * For use by do_match, create and fill in an array.
+ * For each byte `i' in n->stptr (the original string),
+ * a[i] is equal to `j', where `j' is the corresponding wchar_t
+ * in the converted wide string.
+ *
+ * Create the array.
+ */
+ if (ptr != NULL) {
+ emalloc(*ptr, size_t *, sizeof(size_t) * n->stlen, "str2wstr");
+ memset(*ptr, 0, sizeof(size_t) * n->stlen);
+ }
+
+ sp = n->stptr;
+ src_count = n->stlen;
+ memset(& mbs, 0, sizeof(mbs));
+ for (i = 0; src_count > 0; i++) {
+ count = mbrtowc(& wc, sp, src_count, & mbs);
+ switch (count) {
+ case (size_t) -2:
+ case (size_t) -1:
+ case 0:
+ goto done;
+
+ default:
+ *wsp++ = wc;
+ src_count -= count;
+ while (count--) {
+ if (ptr != NULL)
+ (*ptr)[sp - n->stptr] = i;
+ sp++;
+ }
+ break;
+ }
+ }
+
+done:
+ *wsp = L'\0';
+ n->wstlen = i;
+ n->flags |= WSTRCUR;
+#define ARBITRARY_AMOUNT_TO_GIVE_BACK 100
+ if (n->stlen - n->wstlen > ARBITRARY_AMOUNT_TO_GIVE_BACK)
+ erealloc(n->wstptr, wchar_t *, sizeof(wchar_t) * (n->wstlen + 2), "str2wstr");
+
+ return n;
+}
+
+#if 0
+static void
+dump_wstr(FILE *fp, const wchar_t *str, size_t len)
+{
+ if (str == NULL || len == 0)
+ return;
+
+ for (; len--; str++)
+ putc((int) *str, fp);
+}
+#endif
+
+/* wstrstr --- walk haystack, looking for needle, wide char version */
+
+const wchar_t *
+wstrstr(const wchar_t *haystack, size_t hs_len,
+ const wchar_t *needle, size_t needle_len)
+{
+ size_t i;
+
+ if (haystack == NULL || needle == NULL || needle_len > hs_len)
+ return NULL;
+
+ for (i = 0; i < hs_len; i++) {
+ if (haystack[i] == needle[0]
+ && i+needle_len-1 < hs_len
+ && haystack[i+needle_len-1] == needle[needle_len-1]) {
+ /* first & last chars match, check string */
+ if (memcmp(haystack+i, needle, sizeof(wchar_t) * needle_len) == 0) {
+ return haystack + i;
+ }
+ }
+ }
+
+ return NULL;
+}
+
+/* wcasestrstr --- walk haystack, nocase look for needle, wide char version */
+
+const wchar_t *
+wcasestrstr(const wchar_t *haystack, size_t hs_len,
+ const wchar_t *needle, size_t needle_len)
+{
+ size_t i, j;
+
+ if (haystack == NULL || needle == NULL || needle_len > hs_len)
+ return NULL;
+
+ for (i = 0; i < hs_len; i++) {
+ if (towlower(haystack[i]) == towlower(needle[0])
+ && i+needle_len-1 < hs_len
+ && towlower(haystack[i+needle_len-1]) == towlower(needle[needle_len-1])) {
+ /* first & last chars match, check string */
+ const wchar_t *start;
+
+ start = haystack+i;
+ for (j = 0; j < needle_len; j++, start++) {
+ wchar_t h, n;
+
+ h = towlower(*start);
+ n = towlower(needle[j]);
+ if (h != n)
+ goto out;
+ }
+ return haystack + i;
+ }
+out: ;
+ }
+
+ return NULL;
+}
+#endif /* defined MBS_SUPPORT */
diff --git a/pc/ChangeLog b/pc/ChangeLog
index 545a2945..e62fad7c 100644
--- a/pc/ChangeLog
+++ b/pc/ChangeLog
@@ -1,3 +1,32 @@
+Tue Jul 26 21:46:16 2005 Arnold D. Robbins <arnold@skeeve.com>
+
+ * Release 3.1.5: Release tar file made.
+
+Sun Jun 26 09:31:35 2005 Scott Deifik <scottd@amgen.com>
+
+ * Makefile: Decrease stack size for MSC.
+ * Makefile.tst (Maketests): Syncronized with what's happening in
+ the main dist.
+
+Thu Apr 28 23:08:51 2005 Scott Deifik <scottd@amgen.com>
+
+ * config.h, Makefile.tst: Synced to main distribution.
+
+Wed Feb 16 10:20:18 2005 Scott Deifik <scottd@amgen.com>
+
+ * Makefile: Decrease stack size for MSC.
+ * Makefile.tst: Syncronized with what's happening in the main dist.
+ * config.h: Improved for DJGPP.
+
+Wed Feb 9 14:38:38 2005 Scott Deifik <scottd@amgen.com>
+
+ * Makefile, Makefile.tst: Syncronized with what's happening
+ in the main dist.
+
+Thu Feb 3 14:57:28 2005 Scott Deifik <scottd@amgen.com>
+
+ * config.h (SIZEOF_UNSIGNED_INT, SIZEOF_UNSIGNED_LONG): Add definitions.
+
Mon Aug 2 12:18:15 2004 Arnold D. Robbins <arnold@skeeve.com>
* Release 3.1.4: Release tar file made.
diff --git a/pc/Makefile b/pc/Makefile
index 22b04cc7..ad14baaf 100644
--- a/pc/Makefile
+++ b/pc/Makefile
@@ -214,7 +214,7 @@ MSCCL = -FPi
#MSCCL = -FPc
# If the stack gets much smaller than 3000, the "longwrds" test fails.
-LMSC = link $(LF) $(LNKRSP) $(STDARGV)/NOE,$@,,/NOD:llibce $(MSCLIB)$(LF2)/STACK:0x3299,nul
+LMSC = link $(LF) $(LNKRSP) $(STDARGV)/NOE,$@,,/NOD:llibce $(MSCLIB)$(LF2)/STACK:0x2eb0,nul
# CLMSC-linking works when building under OS/2
diff --git a/pc/Makefile.tst b/pc/Makefile.tst
index df712d5d..8c32dd80 100644
--- a/pc/Makefile.tst
+++ b/pc/Makefile.tst
@@ -1,1415 +1,1479 @@
-# Makefile for GNU Awk test suite.
-#
-# Copyright (C) 1988-2004 the Free Software Foundation, Inc.
-#
-# This file is part of GAWK, the GNU implementation of the
-# AWK Programming Language.
-#
-# GAWK 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 of the License, or
-# (at your option) any later version.
-#
-# GAWK 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
-
-# ============================================================================
-# MS-DOS & OS/2 Notes: READ THEM!
-# ============================================================================
-
-# As of version 2.91, efforts to make this makefile run in MS-DOS and OS/2
-# have started in earnest. The following steps need to be followed in order
-# to run this makefile:
-#
-# 1. The first thing that you will need to do is to convert all of the
-# files ending in ".ok" in the test directory, all of the files ending
-# in ".good" (or ".goo") in the test/reg directory, and mmap8k.in from
-# having a linefeed to having carriage return/linefeed at the end of each
-# line. There are various public domain UNIX to DOS converters and any
-# should work. Alternatively, you can use diff instead of cmp--most
-# versions of diff don't care about how the lines end.
-#
-# 2. You will need an sh-compatible shell. Please refer to the "README.pc"
-# file in the README_d directory for information about obtaining a copy.
-# You will also need various UNIX utilities. At a minimum, you will
-# need: rm, tr, cmp (or diff, see above), cat, wc, and sh.
-# You should also have a UNIX-compatible date program.
-#
-# The makefile has only been tested with dmake 3.8 and DJGPP Make 3.74 or
-# later. After making all of these changes, typing "dmake bigtest extra"
-# or "make bigtest extra" (with DJGPP Make) should run successfully.
-
-# The Bash shell (compiled with djgpp) works very well with the
-# MSC & djgpp-compiled gawks. It is currently the recommended shell to use
-# for testing, along with DJGPP make. See README.pc for
-# more information on OS/2 and DOS shells.
-
-# You will almost certainly need to change some of the values (MACROS)
-# defined on the next few lines.
-
-# This won't work unless you have "sh" and set SHELL equal to it (Make 3.74
-# or later which comes with DJGPP will work with SHELL=/bin/sh if you have
-# sh.exe anywhere on your PATH).
-#SHELL = e:\bin\sh.exe
-SHELL = /bin/sh
-
-# Point to gawk
-AWK = ../gawk.exe
-# Also point to gawk but for DOS commands needing backslashes. We need
-# the forward slash version too or 'arrayparam' fails.
-AWK2 = '..\gawk.exe'
-AWKPROG = ../gawk.exe
-
-# Set your cmp command here (you can use most versions of diff instead of cmp
-# if you don't want to convert the .ok files to the DOS CR/LF format).
-# This is also an issue for the "mmap8k" test. If it fails, make sure that
-# mmap8k.in has CR/LFs or that you've used diff.
-#
-# The following comment is for users of OSs which support long file names
-# (such as Windows 95) for all versions of gawk (both 16 & 32-bit).
-# If you use a shell which doesn't support long filenames, temporary files
-# created by this makefile will be truncated by your shell. "_argarra" is an
-# example of this. If $(CMP) is a DJGPP-compiled program, then it will fail
-# because it looks for the long filename (eg. _argarray). To fix this, you
-# need to set LFN=n in your shell's environment.
-# NOTE: Setting LFN in the makefile most probably won't help you because LFN
-# needs to be an environment variable.
-#CMP = cmp
-# See the comment above for why you might want to set CMP to "env LFN=n diff"
-#CMP = env LFN=n diff
-CMP = diff
-#CMP = diff -c
-#CMP = gcmp
-
-# Set your "cp" and "mkdir" commands here. Note: DOS's copy must take forward
-# slashes.
-#CP = cp
-#CP = : && command -c copy
-CP = command.com /c copy
-
-#MKDIR = mkdir
-#MKDIR = gmkdir
-#MKDIR = : && command -c mkdir
-MKDIR = command.com /c mkdir
-
-# Set your unix-style date function here
-#DATE = date
-DATE = gdate
-
-# MS-DOS and OS/2 use ; as a PATH delimiter
-PATH_SEPARATOR = ;
-
-# ============================================================================
-# You shouldn't need to modify anything below this line.
-# ============================================================================
-
-srcdir = .
-
-# try to keep these sorted
-BASIC_TESTS = addcomma anchgsub argarray arrayparm arrayref arrymem1 \
- arrayprm2 arrayprm3 arryref2 arryref3 arryref4 arryref5 arynasty \
- arynocls aryprm1 aryprm2 aryprm3 aryprm4 aryprm5 aryprm6 aryprm7 \
- aryprm8 arysubnm asgext awkpath back89 backgsub childin clobber \
- clsflnam compare compare2 concat1 concat2 concat3 convfmt datanonl defref \
- delarprm delarpm2 delfunc dynlj eofsplit exitval1 fldchg fldchgnf fmttest fnamedat \
- fnarray fnarray2 fnarydel fnaryscl fnasgnm fnmisc fnparydl \
- fordel forsimp fsbs fsrs fstabplus funsemnl funsmnam funstack getline \
- getline2 getline3 getlnbuf getnr2tb getnr2tm gsubasgn gsubtest \
- gsubtst2 gsubtst3 gsubtst4 gsubtst5 hsprint inputred intest \
- intprec leaddig leadnl litoct longsub longwrds manglprm math membug1 \
- messages minusstr mmap8k nasty nasty2 negexp nested nfldstr \
- nfneg nfset nlfldsep nlinstr nlstrina noeffect nofmtch noloop1 \
- noloop2 nonl noparms nors nulrsend numindex numsubstr octsub ofmt \
- ofmtbig ofmtfidl ofmts onlynl opasnidx opasnslf paramdup paramtyp \
- parseme pcntplus prdupval prec printf0 printf1 prmarscl prmreuse \
- prt1eval prtoeval psx96sub rand rebt8b1 rebt8b2 redfilnm regeq \
- reindops reparse resplit rs rsnul1nl rsnulbig rsnulbig2 rstest1 \
- rstest2 rstest3 rstest4 rstest5 rswhite scalar sclforin sclifin \
- sortempty splitargv splitarr splitdef splitvar splitwht sprintfc \
- strcat1 strtod subamp subsepnm subslash substr swaplns synerr1 tradanch \
- tweakfld uninit2 uninit3 uninit4 uninitialized unterm zeroe0 zeroflag
-
-UNIX_TESTS = fflush getlnhd pid pipeio1 pipeio2 poundbang space strftlng
-GAWK_EXT_TESTS = argtest asort asorti backw badargs clos1way fieldwdth fsfwfs \
- gensub gnuops2 gnureops icasefs icasers igncdym igncfs ignrcase \
- ignrcas2 lint match1 match2 manyfiles nondec posix procinfs \
- printfbad1 regx8bit rebuf reint shadow sort1 strtonum strftime whiny
-
-EXTRA_TESTS = regtest inftest
-INET_TESTS = inetechu inetecht inetdayu inetdayt
-
-# List of the tests which should be run with --lint option:
-NEED_LINT = defref noeffect nofmtch shadow uninit2 uninit3 uninit4 uninitialized
-
-# List of the files that appear in manual tests or are for reserve testing:
-GENTESTS_UNUSED = Makefile.in gtlnbufv.awk printfloat.awk switch2.awk
-
-# Message stuff is to make it a little easier to follow.
-# Make the pass-fail last and dependent on others to avoid
-# spurious errors if `make -j' in effect.
-check: msg \
- printlang \
- basic-msg-start basic basic-msg-end \
- unix-msg-start unix-tests unix-msg-end \
- extend-msg-start gawk-extensions extend-msg-end \
- pass-fail
-
-basic: $(BASIC_TESTS)
-
-unix-tests: $(UNIX_TESTS)
-
-gawk-extensions: $(GAWK_EXT_TESTS)
-
-#extra: $(EXTRA_TESTS) inet
-extra: $(EXTRA_TESTS) inetmesg
-
-inet: inetmesg $(INET_TESTS)
-
-msg::
- @echo ''
- @echo 'Any output from "cmp" is bad news, although some differences'
- @echo 'in floating point values are probably benign -- in particular,'
- @echo 'some systems may omit a leading zero and the floating point'
- @echo 'precision may lead to slightly different output in a few cases.'
-
-printlang::
- @$(AWK) -f $(srcdir)/printlang.awk
-
-basic-msg-start:
- @echo "======== Starting basic tests ========"
-
-basic-msg-end:
- @echo "======== Done with basic tests ========"
-
-unix-msg-start:
- @echo "======== Starting Unix tests ========"
-
-unix-msg-end:
- @echo "======== Done with Unix tests ========"
-
-extend-msg-start:
- @echo "======== Starting gawk extension tests ========"
-
-extend-msg-end:
- @echo "======== Done with gawk extension tests ========"
-
-# This test is a PITA because increasingly, /tmp is getting
-# mounted noexec. So, we'll test it locally. Sigh.
-#
-# More PITA; some systems have medium short limits on #! paths,
-# so this can still fail
-poundbang::
- @echo $@
- @sed "s;/tmp/gawk;`pwd`/$(AWKPROG);" < $(srcdir)/poundbang.awk > ./_pbd.awk
- @chmod +x ./_pbd.awk
- @if ./_pbd.awk $(srcdir)/poundbang.awk > _`basename $@` ; \
- then : ; \
- else \
- sed "s;/tmp/gawk;../$(AWKPROG);" < $(srcdir)/poundbang.awk > ./_pbd.awk ; \
- chmod +x ./_pbd.awk ; \
- LC_ALL=$${GAWKLOCALE:-C} LANG=$${GAWKLOCALE:-C} ./_pbd.awk $(srcdir)/poundbang.awk > _`basename $@`; \
- fi
- @-$(CMP) $(srcdir)/poundbang.awk _`basename $@` && rm -f _`basename $@` _pbd.awk
-
-messages::
- @echo $@
- @$(AWK) -f $(srcdir)/messages.awk >out2 2>out3
- @-$(CMP) $(srcdir)/out1.ok out1 && $(CMP) $(srcdir)/out2.ok out2 && $(CMP) $(srcdir)/out3.ok out3 && rm -f out1 out2 out3
-
-argarray::
- @echo $@
- @case $(srcdir) in \
- .) : ;; \
- *) cp $(srcdir)/argarray.in . ;; \
- esac
- @TEST=test echo just a test | $(AWK) -f $(srcdir)/argarray.awk ./argarray.in - >_$@
- @case $(srcdir) in \
- .) : ;; \
- *) rm -f ./argarray.in ;; \
- esac
- @-$(CMP) $(srcdir)/argarray.ok _$@ && rm -f _$@
-
-regtest::
- @echo 'Some of the output from regtest is very system specific, do not'
- @echo 'be distressed if your output differs from that distributed.'
- @echo 'Manual inspection is called for.'
- AWK=`pwd`/$(AWK) $(srcdir)/regtest.sh
-
-manyfiles::
- @echo manyfiles
- @rm -rf junk
- @mkdir junk
- @$(AWK) 'BEGIN { for (i = 1; i <= 300; i++) print i, i}' >_$@
- @$(AWK) -f $(srcdir)/manyfiles.awk _$@ _$@
- @wc -l junk/* | $(AWK) '$$1 != 2' | wc -l | sed "s/ *//g" > _$@
- @rm -rf junk ; $(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
-
-compare::
- @echo $@
- @$(AWK) -f $(srcdir)/compare.awk 0 1 $(srcdir)/compare.in >_$@
- @-$(CMP) $(srcdir)/compare.ok _$@ && rm -f _$@
-
-inftest::
- @echo $@
- @echo This test is very machine specific...
- @echo This sometimes seems to cause problems for MSC gawk, so do not
- @echo run it.
-# @$(AWK) -f $(srcdir)/inftest.awk | sed "s/inf/Inf/g" >_$@
-# @-$(CMP) $(srcdir)/inftest.ok _$@ && rm -f _$@
-
-getline2::
- @echo $@
- @$(AWK) -f $(srcdir)/getline2.awk $(srcdir)/getline2.awk $(srcdir)/getline2.awk >_$@
- @-$(CMP) $(srcdir)/getline2.ok _$@ && rm -f _$@
-
-awkpath::
- @echo $@
- @AWKPATH="$(srcdir)$(PATH_SEPARATOR)$(srcdir)/lib" $(AWK) -f awkpath.awk >_$@
- @-$(CMP) $(srcdir)/awkpath.ok _$@ && rm -f _$@
-
-argtest::
- @echo $@
- @$(AWK) -f $(srcdir)/argtest.awk -x -y abc >_$@
- @-$(CMP) $(srcdir)/argtest.ok _$@ && rm -f _$@
-
-badargs::
- @echo $@
- @-$(AWK) -f 2>&1 | grep -v patchlevel >_$@
- @-$(CMP) $(srcdir)/badargs.ok _$@ && rm -f _$@
-
-nonl::
- @echo $@
- @-AWKPATH=$(srcdir) $(AWK) --lint -f nonl.awk /dev/null >_$@ 2>&1
- @-$(CMP) $(srcdir)/nonl.ok _$@ && rm -f _$@
-
-strftime::
- @echo This test could fail on slow machines or on a minute boundary,
- @echo so if it does, double check the actual results:
- @echo $@
-# @GAWK_LOCALE=C; export GAWK_LOCALE; \
-# TZ=GMT0; export TZ; \
-# (LC_ALL=C date) | $(AWK) -v OUTPUT=_$@ -f $(srcdir)/strftime.awk
- @GAWK_LOCALE=C; export GAWK_LOCALE; \
- TZ=GMT0; export TZ; \
- (LC_ALL=C $(DATE)) | $(AWK) -v OUTPUT=_$@ -f $(srcdir)/strftime.awk
- @-$(CMP) strftime.ok _$@ && rm -f _$@ strftime.ok || exit 0
-
-litoct::
- @echo $@
- @echo ab | $(AWK) --traditional -f $(srcdir)/litoct.awk >_$@
- @-$(CMP) $(srcdir)/litoct.ok _$@ && rm -f _$@
-
-fflush::
- @echo $@
- @$(srcdir)/fflush.sh >_$@
- @-$(CMP) $(srcdir)/fflush.ok _$@ && rm -f _$@
-
-tweakfld::
- @echo $@
- @$(AWK) -f $(srcdir)/tweakfld.awk $(srcdir)/tweakfld.in >_$@
- @rm -f errors.cleanup
- @-$(CMP) $(srcdir)/tweakfld.ok _$@ && rm -f _$@
-
-mmap8k::
- @echo $@
- @$(AWK) '{ print }' $(srcdir)/mmap8k.in >_$@
- @-$(CMP) $(srcdir)/mmap8k.in _$@ && rm -f _$@
-
-tradanch::
- @echo $@
- @$(AWK) --traditional -f $(srcdir)/tradanch.awk $(srcdir)/tradanch.in >_$@
- @-$(CMP) $(srcdir)/tradanch.ok _$@ && rm -f _$@
-
-# AIX /bin/sh exec's the last command in a list, therefore issue a ":"
-# command so that pid.sh is fork'ed as a child before being exec'ed.
-pid::
- @echo pid
- @AWKPATH=$(srcdir) AWK=$(AWKPROG) $(SHELL) $(srcdir)/pid.sh $$$$ > _`basename $@` ; :
- @-$(CMP) $(srcdir)/pid.ok _`basename $@` && rm -f _`basename $@` _`basename $@`.in
-
-strftlng::
- @echo $@
- @TZ=UTC; export TZ; $(AWK) -f $(srcdir)/strftlng.awk >_$@
- @if $(CMP) -s $(srcdir)/strftlng.ok _$@ ; then : ; else \
- TZ=UTC0; export TZ; $(AWK) -f $(srcdir)/strftlng.awk >_$@ ; \
- fi
- @-$(CMP) $(srcdir)/strftlng.ok _$@ && rm -f _$@
-
-nors::
- @echo $@
- @echo A B C D E | tr -d '\12\15' | $(AWK) '{ print $$NF }' - $(srcdir)/nors.in > _$@
- @-$(CMP) $(srcdir)/nors.ok _$@ && rm -f _$@
-
-reint::
- @echo $@
- @$(AWK) --re-interval -f $(srcdir)/reint.awk $(srcdir)/reint.in >_$@
- @-$(CMP) $(srcdir)/reint.ok _$@ && rm -f _$@
-
-pipeio1::
- @echo $@
- @$(AWK) -f $(srcdir)/pipeio1.awk >_$@
- @rm -f test1 test2
- @-$(CMP) $(srcdir)/pipeio1.ok _$@ && rm -f _$@
-
-pipeio2::
- @echo $@
- @$(AWK) -v SRCDIR=$(srcdir) -f $(srcdir)/pipeio2.awk >_$@
- @-$(CMP) $(srcdir)/pipeio2.ok _$@ && rm -f _$@
-
-clobber::
- @echo $@
- @$(AWK) -f $(srcdir)/clobber.awk >_$@
- @-$(CMP) $(srcdir)/clobber.ok seq && $(CMP) $(srcdir)/clobber.ok _$@ && rm -f _$@
- @rm -f seq
-
-arynocls::
- @echo $@
- @-AWKPATH=$(srcdir) $(AWK) -v INPUT=$(srcdir)/arynocls.in -f arynocls.awk >_$@
- @-$(CMP) $(srcdir)/arynocls.ok _$@ && rm -f _$@
-
-getlnbuf::
- @echo $@
- @-AWKPATH=$(srcdir) $(AWK) -f getlnbuf.awk $(srcdir)/getlnbuf.in > _$@
- @-AWKPATH=$(srcdir) $(AWK) -f gtlnbufv.awk $(srcdir)/getlnbuf.in > _2$@
- @-$(CMP) $(srcdir)/getlnbuf.ok _$@ && $(CMP) $(srcdir)/getlnbuf.ok _2$@ && rm -f _$@ _2$@
-
-inetmesg::
- @echo These tests only work if your system supports the services
- @echo "'discard'" at port 9 and "'daytimed'" at port 13. Check your
- @echo file /etc/services and do "'netstat -a'".
-
-inetechu::
- @echo This test is for establishing UDP connections
- @$(AWK) 'BEGIN {print "" |& "/inet/udp/0/127.0.0.1/9"}'
-
-inetecht::
- @echo This test is for establishing TCP connections
- @$(AWK) 'BEGIN {print "" |& "/inet/tcp/0/127.0.0.1/9"}'
-
-inetdayu::
- @echo This test is for bidirectional UDP transmission
- @$(AWK) 'BEGIN { print "" |& "/inet/udp/0/127.0.0.1/13"; \
- "/inet/udp/0/127.0.0.1/13" |& getline; print $0}'
-
-inetdayt::
- @echo This test is for bidirectional TCP transmission
- @$(AWK) 'BEGIN { print "" |& "/inet/tcp/0/127.0.0.1/13"; \
- "/inet/tcp/0/127.0.0.1/13" |& getline; print $0}'
-
-redfilnm::
- @echo $@
- @$(AWK) -f $(srcdir)/redfilnm.awk srcdir=$(srcdir) $(srcdir)/redfilnm.in >_$@
- @-$(CMP) $(srcdir)/redfilnm.ok _$@ && rm -f _$@
-
-leaddig::
- @echo $@
- @$(AWK) -v x=2E -f $(srcdir)/leaddig.awk >_$@
- @-$(CMP) $(srcdir)/leaddig.ok _$@ && rm -f _$@
-
-gsubtst3::
- @echo $@
- @$(AWK) --re-interval -f $(srcdir)/$@.awk $(srcdir)/$@.in >_$@
- @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
-
-space::
- @echo $@
- @$(AWK) -f ' ' $(srcdir)/space.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
- @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
-
-printf0::
- @echo $@
- @$(AWK) --posix -f $(srcdir)/$@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
- @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
-
-rsnulbig::
- @echo $@
- @ : Suppose that block size for pipe is at most 128kB:
- @$(AWK) 'BEGIN { for (i = 1; i <= 128*64+1; i++) print "abcdefgh123456\n" }' 2>&1 | \
- $(AWK) 'BEGIN { RS = ""; ORS = "\n\n" }; { print }' 2>&1 | \
- $(AWK) '/^[^a]/; END{ print NR }' >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
- @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
-
-rsnulbig2::
- @echo $@
- @$(AWK) 'BEGIN { ORS = ""; n = "\n"; for (i = 1; i <= 10; i++) n = (n n); \
- for (i = 1; i <= 128; i++) print n; print "abc\n" }' 2>&1 | \
- $(AWK) 'BEGIN { RS = ""; ORS = "\n\n" };{ print }' 2>&1 | \
- $(AWK) '/^[^a]/; END { print NR }' >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
- @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
-
-whiny::
- @echo $@
- @WHINY_USERS=1 $(AWK) -f $(srcdir)/$@.awk $(srcdir)/$@.in >_$@
- @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
-
-ignrcas2::
- @echo $@
- @GAWK_LOCALE=en_US ; export GAWK_LOCALE ; \
- $(AWK) -f $(srcdir)/$@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >> _$@
- @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
-
-subamp::
- @echo $@
- @GAWK_LOCALE=en_US.UTF-8 ; export GAWK_LOCALE ; \
- $(AWK) -f $(srcdir)/$@.awk $(srcdir)/$@.in >_$@ 2>&1 || echo EXIT CODE: $$? >> _$@
- @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
-
-# This test makes sure gawk exits with a zero code.
-# Thus, unconditionally generate the exit code.
-exitval1::
- @echo $@
- @$(AWK) -f $(srcdir)/exitval1.awk >_$@ 2>&1; echo EXIT CODE: $$? >>_$@
- @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
-Gt-dummy:
-# file Maketests, generated from Makefile.am by the Gentests program
-addcomma:
- @echo addcomma
- @AWKPATH=$(srcdir) $(AWK) -f $@.awk < $(srcdir)/$@.in >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
- @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
-
-anchgsub:
- @echo anchgsub
- @AWKPATH=$(srcdir) $(AWK) -f $@.awk < $(srcdir)/$@.in >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
- @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
-
-arrayparm:
- @echo arrayparm
- @AWKPATH=$(srcdir) $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
- @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
-
-arrayref:
- @echo arrayref
- @AWKPATH=$(srcdir) $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
- @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
-
-arrymem1:
- @echo arrymem1
- @AWKPATH=$(srcdir) $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
- @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
-
-arrayprm2:
- @echo arrayprm2
- @AWKPATH=$(srcdir) $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
- @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
-
-arrayprm3:
- @echo arrayprm3
- @AWKPATH=$(srcdir) $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
- @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
-
-arryref2:
- @echo arryref2
- @AWKPATH=$(srcdir) $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
- @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
-
-arryref3:
- @echo arryref3
- @AWKPATH=$(srcdir) $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
- @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
-
-arryref4:
- @echo arryref4
- @AWKPATH=$(srcdir) $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
- @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
-
-arryref5:
- @echo arryref5
- @AWKPATH=$(srcdir) $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
- @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
-
-arynasty:
- @echo arynasty
- @AWKPATH=$(srcdir) $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
- @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
-
-aryprm1:
- @echo aryprm1
- @AWKPATH=$(srcdir) $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
- @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
-
-aryprm2:
- @echo aryprm2
- @AWKPATH=$(srcdir) $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
- @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
-
-aryprm3:
- @echo aryprm3
- @AWKPATH=$(srcdir) $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
- @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
-
-aryprm4:
- @echo aryprm4
- @AWKPATH=$(srcdir) $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
- @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
-
-aryprm5:
- @echo aryprm5
- @AWKPATH=$(srcdir) $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
- @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
-
-aryprm6:
- @echo aryprm6
- @AWKPATH=$(srcdir) $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
- @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
-
-aryprm7:
- @echo aryprm7
- @AWKPATH=$(srcdir) $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
- @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
-
-aryprm8:
- @echo aryprm8
- @AWKPATH=$(srcdir) $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
- @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
-
-arysubnm:
- @echo arysubnm
- @AWKPATH=$(srcdir) $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
- @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
-
-asgext:
- @echo asgext
- @AWKPATH=$(srcdir) $(AWK) -f $@.awk < $(srcdir)/$@.in >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
- @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
-
-back89:
- @echo back89
- @AWKPATH=$(srcdir) $(AWK) -f $@.awk < $(srcdir)/$@.in >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
- @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
-
-backgsub:
- @echo backgsub
- @AWKPATH=$(srcdir) $(AWK) -f $@.awk < $(srcdir)/$@.in >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
- @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
-
-childin:
- @echo childin
- @AWKPATH=$(srcdir) $(AWK) -f $@.awk < $(srcdir)/$@.in >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
- @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
-
-clsflnam:
- @echo clsflnam
- @AWKPATH=$(srcdir) $(AWK) -f $@.awk < $(srcdir)/$@.in >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
- @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
-
-compare2:
- @echo compare2
- @AWKPATH=$(srcdir) $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
- @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
-
-concat1:
- @echo concat1
- @AWKPATH=$(srcdir) $(AWK) -f $@.awk < $(srcdir)/$@.in >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
- @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
-
-concat2:
- @echo concat2
- @AWKPATH=$(srcdir) $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
- @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
-
-concat3:
- @echo concat3
- @AWKPATH=$(srcdir) $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
- @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
-
-convfmt:
- @echo convfmt
- @AWKPATH=$(srcdir) $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
- @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
-
-datanonl:
- @echo datanonl
- @AWKPATH=$(srcdir) $(AWK) -f $@.awk < $(srcdir)/$@.in >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
- @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
-
-defref:
- @echo defref
- @AWKPATH=$(srcdir) $(AWK) -f $@.awk --lint >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
- @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
-
-delarprm:
- @echo delarprm
- @AWKPATH=$(srcdir) $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
- @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
-
-delarpm2:
- @echo delarpm2
- @AWKPATH=$(srcdir) $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
- @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
-
-delfunc:
- @echo delfunc
- @AWKPATH=$(srcdir) $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
- @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
-
-dynlj:
- @echo dynlj
- @AWKPATH=$(srcdir) $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
- @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
-
-eofsplit:
- @echo eofsplit
- @AWKPATH=$(srcdir) $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
- @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
-
-fldchg:
- @echo fldchg
- @AWKPATH=$(srcdir) $(AWK) -f $@.awk < $(srcdir)/$@.in >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
- @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
-
-fldchgnf:
- @echo fldchgnf
- @AWKPATH=$(srcdir) $(AWK) -f $@.awk < $(srcdir)/$@.in >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
- @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
-
-fmttest:
- @echo fmttest
- @AWKPATH=$(srcdir) $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
- @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
-
-fnamedat:
- @echo fnamedat
- @AWKPATH=$(srcdir) $(AWK) -f $@.awk < $(srcdir)/$@.in >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
- @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
-
-fnarray:
- @echo fnarray
- @AWKPATH=$(srcdir) $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
- @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
-
-fnarray2:
- @echo fnarray2
- @AWKPATH=$(srcdir) $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
- @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
-
-fnarydel:
- @echo fnarydel
- @AWKPATH=$(srcdir) $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
- @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
-
-fnaryscl:
- @echo fnaryscl
- @AWKPATH=$(srcdir) $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
- @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
-
-fnasgnm:
- @echo fnasgnm
- @AWKPATH=$(srcdir) $(AWK) -f $@.awk < $(srcdir)/$@.in >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
- @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
-
-fnmisc:
- @echo fnmisc
- @AWKPATH=$(srcdir) $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
- @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
-
-fnparydl:
- @echo fnparydl
- @AWKPATH=$(srcdir) $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
- @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
-
-fordel:
- @echo fordel
- @AWKPATH=$(srcdir) $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
- @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
-
-forsimp:
- @echo forsimp
- @AWKPATH=$(srcdir) $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
- @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
-
-fsbs:
- @echo fsbs
- @AWKPATH=$(srcdir) $(AWK) -f $@.awk < $(srcdir)/$@.in >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
- @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
-
-fsrs:
- @echo fsrs
- @AWKPATH=$(srcdir) $(AWK) -f $@.awk < $(srcdir)/$@.in >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
- @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
-
-fstabplus:
- @echo fstabplus
- @AWKPATH=$(srcdir) $(AWK) -f $@.awk < $(srcdir)/$@.in >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
- @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
-
-funsemnl:
- @echo funsemnl
- @AWKPATH=$(srcdir) $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
- @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
-
-funsmnam:
- @echo funsmnam
- @AWKPATH=$(srcdir) $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
- @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
-
-funstack:
- @echo funstack
- @AWKPATH=$(srcdir) $(AWK) -f $@.awk < $(srcdir)/$@.in >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
- @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
-
-getline:
- @echo getline
- @AWKPATH=$(srcdir) $(AWK) -f $@.awk < $(srcdir)/$@.in >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
- @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
-
-getline3:
- @echo getline3
- @AWKPATH=$(srcdir) $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
- @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
-
-getnr2tb:
- @echo getnr2tb
- @AWKPATH=$(srcdir) $(AWK) -f $@.awk < $(srcdir)/$@.in >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
- @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
-
-getnr2tm:
- @echo getnr2tm
- @AWKPATH=$(srcdir) $(AWK) -f $@.awk < $(srcdir)/$@.in >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
- @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
-
-gsubasgn:
- @echo gsubasgn
- @AWKPATH=$(srcdir) $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
- @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
-
-gsubtest:
- @echo gsubtest
- @AWKPATH=$(srcdir) $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
- @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
-
-gsubtst2:
- @echo gsubtst2
- @AWKPATH=$(srcdir) $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
- @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
-
-gsubtst4:
- @echo gsubtst4
- @AWKPATH=$(srcdir) $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
- @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
-
-gsubtst5:
- @echo gsubtst5
- @AWKPATH=$(srcdir) $(AWK) -f $@.awk < $(srcdir)/$@.in >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
- @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
-
-hsprint:
- @echo hsprint
- @AWKPATH=$(srcdir) $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
- @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
-
-inputred:
- @echo inputred
- @AWKPATH=$(srcdir) $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
- @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
-
-intest:
- @echo intest
- @AWKPATH=$(srcdir) $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
- @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
-
-intprec:
- @echo intprec
- @AWKPATH=$(srcdir) $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
- @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
-
-leadnl:
- @echo leadnl
- @AWKPATH=$(srcdir) $(AWK) -f $@.awk < $(srcdir)/$@.in >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
- @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
-
-longsub:
- @echo longsub
- @AWKPATH=$(srcdir) $(AWK) -f $@.awk < $(srcdir)/$@.in >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
- @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
-
-longwrds:
- @echo longwrds
- @AWKPATH=$(srcdir) $(AWK) -f $@.awk < $(srcdir)/$@.in >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
- @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
-
-manglprm:
- @echo manglprm
- @AWKPATH=$(srcdir) $(AWK) -f $@.awk < $(srcdir)/$@.in >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
- @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
-
-math:
- @echo math
- @AWKPATH=$(srcdir) $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
- @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
-
-membug1:
- @echo membug1
- @AWKPATH=$(srcdir) $(AWK) -f $@.awk < $(srcdir)/$@.in >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
- @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
-
-minusstr:
- @echo minusstr
- @AWKPATH=$(srcdir) $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
- @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
-
-nasty:
- @echo nasty
- @AWKPATH=$(srcdir) $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
- @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
-
-nasty2:
- @echo nasty2
- @AWKPATH=$(srcdir) $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
- @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
-
-negexp:
- @echo negexp
- @AWKPATH=$(srcdir) $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
- @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
-
-nested:
- @echo nested
- @AWKPATH=$(srcdir) $(AWK) -f $@.awk < $(srcdir)/$@.in >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
- @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
-
-nfldstr:
- @echo nfldstr
- @AWKPATH=$(srcdir) $(AWK) -f $@.awk < $(srcdir)/$@.in >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
- @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
-
-nfneg:
- @echo nfneg
- @AWKPATH=$(srcdir) $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
- @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
-
-nfset:
- @echo nfset
- @AWKPATH=$(srcdir) $(AWK) -f $@.awk < $(srcdir)/$@.in >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
- @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
-
-nlfldsep:
- @echo nlfldsep
- @AWKPATH=$(srcdir) $(AWK) -f $@.awk < $(srcdir)/$@.in >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
- @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
-
-nlinstr:
- @echo nlinstr
- @AWKPATH=$(srcdir) $(AWK) -f $@.awk < $(srcdir)/$@.in >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
- @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
-
-nlstrina:
- @echo nlstrina
- @AWKPATH=$(srcdir) $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
- @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
-
-noeffect:
- @echo noeffect
- @AWKPATH=$(srcdir) $(AWK) -f $@.awk --lint >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
- @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
-
-nofmtch:
- @echo nofmtch
- @AWKPATH=$(srcdir) $(AWK) -f $@.awk --lint >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
- @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
-
-noloop1:
- @echo noloop1
- @AWKPATH=$(srcdir) $(AWK) -f $@.awk < $(srcdir)/$@.in >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
- @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
-
-noloop2:
- @echo noloop2
- @AWKPATH=$(srcdir) $(AWK) -f $@.awk < $(srcdir)/$@.in >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
- @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
-
-noparms:
- @echo noparms
- @AWKPATH=$(srcdir) $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
- @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
-
-nulrsend:
- @echo nulrsend
- @AWKPATH=$(srcdir) $(AWK) -f $@.awk < $(srcdir)/$@.in >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
- @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
-
-numindex:
- @echo numindex
- @AWKPATH=$(srcdir) $(AWK) -f $@.awk < $(srcdir)/$@.in >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
- @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
-
-numsubstr:
- @echo numsubstr
- @AWKPATH=$(srcdir) $(AWK) -f $@.awk < $(srcdir)/$@.in >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
- @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
-
-octsub:
- @echo octsub
- @AWKPATH=$(srcdir) $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
- @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
-
-ofmt:
- @echo ofmt
- @AWKPATH=$(srcdir) $(AWK) -f $@.awk < $(srcdir)/$@.in >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
- @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
-
-ofmtbig:
- @echo ofmtbig
- @AWKPATH=$(srcdir) $(AWK) -f $@.awk < $(srcdir)/$@.in >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
- @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
-
-ofmtfidl:
- @echo ofmtfidl
- @AWKPATH=$(srcdir) $(AWK) -f $@.awk < $(srcdir)/$@.in >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
- @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
-
-ofmts:
- @echo ofmts
- @AWKPATH=$(srcdir) $(AWK) -f $@.awk < $(srcdir)/$@.in >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
- @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
-
-onlynl:
- @echo onlynl
- @AWKPATH=$(srcdir) $(AWK) -f $@.awk < $(srcdir)/$@.in >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
- @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
-
-opasnidx:
- @echo opasnidx
- @AWKPATH=$(srcdir) $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
- @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
-
-opasnslf:
- @echo opasnslf
- @AWKPATH=$(srcdir) $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
- @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
-
-paramdup:
- @echo paramdup
- @AWKPATH=$(srcdir) $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
- @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
-
-paramtyp:
- @echo paramtyp
- @AWKPATH=$(srcdir) $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
- @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
-
-parseme:
- @echo parseme
- @AWKPATH=$(srcdir) $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
- @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
-
-pcntplus:
- @echo pcntplus
- @AWKPATH=$(srcdir) $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
- @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
-
-prdupval:
- @echo prdupval
- @AWKPATH=$(srcdir) $(AWK) -f $@.awk < $(srcdir)/$@.in >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
- @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
-
-prec:
- @echo prec
- @AWKPATH=$(srcdir) $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
- @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
-
-printf1:
- @echo printf1
- @AWKPATH=$(srcdir) $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
- @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
-
-prmarscl:
- @echo prmarscl
- @AWKPATH=$(srcdir) $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
- @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
-
-prmreuse:
- @echo prmreuse
- @AWKPATH=$(srcdir) $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
- @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
-
-prt1eval:
- @echo prt1eval
- @AWKPATH=$(srcdir) $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
- @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
-
-prtoeval:
- @echo prtoeval
- @AWKPATH=$(srcdir) $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
- @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
-
-psx96sub:
- @echo psx96sub
- @AWKPATH=$(srcdir) $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
- @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
-
-rand:
- @echo rand
- @AWKPATH=$(srcdir) $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
- @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
-
-rebt8b1:
- @echo rebt8b1
- @AWKPATH=$(srcdir) $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
- @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
-
-rebt8b2:
- @echo rebt8b2
- @AWKPATH=$(srcdir) $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
- @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
-
-regeq:
- @echo regeq
- @AWKPATH=$(srcdir) $(AWK) -f $@.awk < $(srcdir)/$@.in >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
- @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
-
-reindops:
- @echo reindops
- @AWKPATH=$(srcdir) $(AWK) -f $@.awk < $(srcdir)/$@.in >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
- @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
-
-reparse:
- @echo reparse
- @AWKPATH=$(srcdir) $(AWK) -f $@.awk < $(srcdir)/$@.in >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
- @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
-
-resplit:
- @echo resplit
- @AWKPATH=$(srcdir) $(AWK) -f $@.awk < $(srcdir)/$@.in >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
- @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
-
-rs:
- @echo rs
- @AWKPATH=$(srcdir) $(AWK) -f $@.awk < $(srcdir)/$@.in >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
- @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
-
-rsnul1nl:
- @echo rsnul1nl
- @AWKPATH=$(srcdir) $(AWK) -f $@.awk < $(srcdir)/$@.in >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
- @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
-
-rstest1:
- @echo rstest1
- @AWKPATH=$(srcdir) $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
- @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
-
-rstest2:
- @echo rstest2
- @AWKPATH=$(srcdir) $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
- @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
-
-rstest3:
- @echo rstest3
- @AWKPATH=$(srcdir) $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
- @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
-
-rstest4:
- @echo rstest4
- @AWKPATH=$(srcdir) $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
- @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
-
-rstest5:
- @echo rstest5
- @AWKPATH=$(srcdir) $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
- @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
-
-rswhite:
- @echo rswhite
- @AWKPATH=$(srcdir) $(AWK) -f $@.awk < $(srcdir)/$@.in >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
- @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
-
-scalar:
- @echo scalar
- @AWKPATH=$(srcdir) $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
- @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
-
-sclforin:
- @echo sclforin
- @AWKPATH=$(srcdir) $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
- @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
-
-sclifin:
- @echo sclifin
- @AWKPATH=$(srcdir) $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
- @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
-
-sortempty:
- @echo sortempty
- @AWKPATH=$(srcdir) $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
- @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
-
-splitargv:
- @echo splitargv
- @AWKPATH=$(srcdir) $(AWK) -f $@.awk < $(srcdir)/$@.in >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
- @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
-
-splitarr:
- @echo splitarr
- @AWKPATH=$(srcdir) $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
- @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
-
-splitdef:
- @echo splitdef
- @AWKPATH=$(srcdir) $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
- @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
-
-splitvar:
- @echo splitvar
- @AWKPATH=$(srcdir) $(AWK) -f $@.awk < $(srcdir)/$@.in >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
- @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
-
-splitwht:
- @echo splitwht
- @AWKPATH=$(srcdir) $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
- @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
-
-sprintfc:
- @echo sprintfc
- @AWKPATH=$(srcdir) $(AWK) -f $@.awk < $(srcdir)/$@.in >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
- @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
-
-strcat1:
- @echo strcat1
- @AWKPATH=$(srcdir) $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
- @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
-
-strtod:
- @echo strtod
- @AWKPATH=$(srcdir) $(AWK) -f $@.awk < $(srcdir)/$@.in >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
- @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
-
-subsepnm:
- @echo subsepnm
- @AWKPATH=$(srcdir) $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
- @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
-
-subslash:
- @echo subslash
- @AWKPATH=$(srcdir) $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
- @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
-
-substr:
- @echo substr
- @AWKPATH=$(srcdir) $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
- @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
-
-swaplns:
- @echo swaplns
- @AWKPATH=$(srcdir) $(AWK) -f $@.awk < $(srcdir)/$@.in >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
- @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
-
-synerr1:
- @echo synerr1
- @AWKPATH=$(srcdir) $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
- @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
-
-uninit2:
- @echo uninit2
- @AWKPATH=$(srcdir) $(AWK) -f $@.awk --lint >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
- @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
-
-uninit3:
- @echo uninit3
- @AWKPATH=$(srcdir) $(AWK) -f $@.awk --lint >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
- @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
-
-uninit4:
- @echo uninit4
- @AWKPATH=$(srcdir) $(AWK) -f $@.awk --lint >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
- @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
-
-uninitialized:
- @echo uninitialized
- @AWKPATH=$(srcdir) $(AWK) -f $@.awk --lint >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
- @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
-
-unterm:
- @echo unterm
- @AWKPATH=$(srcdir) $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
- @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
-
-zeroe0:
- @echo zeroe0
- @AWKPATH=$(srcdir) $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
- @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
-
-zeroflag:
- @echo zeroflag
- @AWKPATH=$(srcdir) $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
- @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
-
-getlnhd:
- @echo getlnhd
- @AWKPATH=$(srcdir) $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
- @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
-
-asort:
- @echo asort
- @AWKPATH=$(srcdir) $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
- @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
-
-asorti:
- @echo asorti
- @AWKPATH=$(srcdir) $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
- @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
-
-backw:
- @echo backw
- @AWKPATH=$(srcdir) $(AWK) -f $@.awk < $(srcdir)/$@.in >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
- @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
-
-clos1way:
- @echo clos1way
- @AWKPATH=$(srcdir) $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
- @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
-
-fieldwdth:
- @echo fieldwdth
- @AWKPATH=$(srcdir) $(AWK) -f $@.awk < $(srcdir)/$@.in >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
- @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
-
-fsfwfs:
- @echo fsfwfs
- @AWKPATH=$(srcdir) $(AWK) -f $@.awk < $(srcdir)/$@.in >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
- @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
-
-gensub:
- @echo gensub
- @AWKPATH=$(srcdir) $(AWK) -f $@.awk < $(srcdir)/$@.in >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
- @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
-
-gnuops2:
- @echo gnuops2
- @AWKPATH=$(srcdir) $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
- @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
-
-gnureops:
- @echo gnureops
- @AWKPATH=$(srcdir) $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
- @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
-
-icasefs:
- @echo icasefs
- @AWKPATH=$(srcdir) $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
- @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
-
-icasers:
- @echo icasers
- @AWKPATH=$(srcdir) $(AWK) -f $@.awk < $(srcdir)/$@.in >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
- @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
-
-igncdym:
- @echo igncdym
- @AWKPATH=$(srcdir) $(AWK) -f $@.awk < $(srcdir)/$@.in >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
- @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
-
-igncfs:
- @echo igncfs
- @AWKPATH=$(srcdir) $(AWK) -f $@.awk < $(srcdir)/$@.in >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
- @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
-
-ignrcase:
- @echo ignrcase
- @AWKPATH=$(srcdir) $(AWK) -f $@.awk < $(srcdir)/$@.in >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
- @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
-
-lint:
- @echo lint
- @AWKPATH=$(srcdir) $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
- @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
-
-match1:
- @echo match1
- @AWKPATH=$(srcdir) $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
- @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
-
-match2:
- @echo match2
- @AWKPATH=$(srcdir) $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
- @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
-
-nondec:
- @echo nondec
- @AWKPATH=$(srcdir) $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
- @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
-
-posix:
- @echo posix
- @AWKPATH=$(srcdir) $(AWK) -f $@.awk < $(srcdir)/$@.in >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
- @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
-
-procinfs:
- @echo procinfs
- @AWKPATH=$(srcdir) $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
- @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
-
-printfbad1:
- @echo printfbad1
- @AWKPATH=$(srcdir) $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
- @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
-
-regx8bit:
- @echo regx8bit
- @AWKPATH=$(srcdir) $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
- @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
-
-rebuf:
- @echo rebuf
- @AWKPATH=$(srcdir) $(AWK) -f $@.awk < $(srcdir)/$@.in >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
- @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
-
-shadow:
- @echo shadow
- @AWKPATH=$(srcdir) $(AWK) -f $@.awk --lint >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
- @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
-
-sort1:
- @echo sort1
- @AWKPATH=$(srcdir) $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
- @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
-
-strtonum:
- @echo strtonum
- @AWKPATH=$(srcdir) $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
- @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
-
-# end of file Maketests
-
-# Targets generated for other tests:
-
-$(srcdir)/Maketests: $(srcdir)/Makefile.am $(srcdir)/Gentests
- $(AWK) -f $(srcdir)/Gentests "$<" *.awk *.in > $(srcdir)/Maketests
-
-clean:
- rm -fr _* core core.* junk out1 out2 out3 strftime.ok test1 test2 seq *~
-
-# An attempt to print something that can be grepped for in build logs
-pass-fail:
- @COUNT=`ls _* 2>/dev/null | wc -l` ; \
- if test $$COUNT = 0 ; \
- then echo ALL TESTS PASSED ; \
- else echo $$COUNT TESTS FAILED ; \
- fi
-
-# This target for my convenience to look at all the results
-diffout:
- for i in _* ; \
- do \
- echo ============== $$i ============= ; \
- diff -c $(srcdir)/$${i#_}.ok $$i ; \
- done | more
-
-# This target is for testing with electric fence.
-efence:
- for i in $$(ls _* | sed 's;_\(.*\);\1;') ; \
- do \
- bad=$$(wc -l < _$$i) \
- ok=$$(wc -l < $$i.ok) ; \
- if (( $$bad == $$ok + 2 )) ; \
- then \
- rm _$$i ; \
- fi ; \
- done
-# 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.
-.NOEXPORT:
+# Makefile for GNU Awk test suite.
+#
+# Copyright (C) 1988-2004 the Free Software Foundation, Inc.
+#
+# This file is part of GAWK, the GNU implementation of the
+# AWK Programming Language.
+#
+# GAWK 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 of the License, or
+# (at your option) any later version.
+#
+# GAWK 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., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA
+
+# ============================================================================
+# MS-DOS & OS/2 Notes: READ THEM!
+# ============================================================================
+
+# As of version 2.91, efforts to make this makefile run in MS-DOS and OS/2
+# have started in earnest. The following steps need to be followed in order
+# to run this makefile:
+#
+# 1. The first thing that you will need to do is to convert all of the
+# files ending in ".ok" in the test directory, all of the files ending
+# in ".good" (or ".goo") in the test/reg directory, and mmap8k.in from
+# having a linefeed to having carriage return/linefeed at the end of each
+# line. There are various public domain UNIX to DOS converters and any
+# should work. Alternatively, you can use diff instead of cmp--most
+# versions of diff don't care about how the lines end.
+#
+# 2. You will need an sh-compatible shell. Please refer to the "README.pc"
+# file in the README_d directory for information about obtaining a copy.
+# You will also need various UNIX utilities. At a minimum, you will
+# need: rm, tr, cmp (or diff, see above), cat, wc, and sh.
+# You should also have a UNIX-compatible date program.
+#
+# The makefile has only been tested with dmake 3.8 and DJGPP Make 3.74 or
+# later. After making all of these changes, typing "dmake bigtest extra"
+# or "make bigtest extra" (with DJGPP Make) should run successfully.
+
+# The Bash shell (compiled with djgpp) works very well with the
+# MSC & djgpp-compiled gawks. It is currently the recommended shell to use
+# for testing, along with DJGPP make. See README.pc for
+# more information on OS/2 and DOS shells.
+
+# You will almost certainly need to change some of the values (MACROS)
+# defined on the next few lines.
+
+# This won't work unless you have "sh" and set SHELL equal to it (Make 3.74
+# or later which comes with DJGPP will work with SHELL=/bin/sh if you have
+# sh.exe anywhere on your PATH).
+#SHELL = e:\bin\sh.exe
+SHELL = /bin/sh
+
+# Point to gawk
+AWK = ../gawk.exe
+# Also point to gawk but for DOS commands needing backslashes. We need
+# the forward slash version too or 'arrayparam' fails.
+AWK2 = '..\gawk.exe'
+AWKPROG = ../gawk.exe
+
+# Set your cmp command here (you can use most versions of diff instead of cmp
+# if you don't want to convert the .ok files to the DOS CR/LF format).
+# This is also an issue for the "mmap8k" test. If it fails, make sure that
+# mmap8k.in has CR/LFs or that you've used diff.
+#
+# The following comment is for users of OSs which support long file names
+# (such as Windows 95) for all versions of gawk (both 16 & 32-bit).
+# If you use a shell which doesn't support long filenames, temporary files
+# created by this makefile will be truncated by your shell. "_argarra" is an
+# example of this. If $(CMP) is a DJGPP-compiled program, then it will fail
+# because it looks for the long filename (eg. _argarray). To fix this, you
+# need to set LFN=n in your shell's environment.
+# NOTE: Setting LFN in the makefile most probably won't help you because LFN
+# needs to be an environment variable.
+#CMP = cmp
+# See the comment above for why you might want to set CMP to "env LFN=n diff"
+#CMP = env LFN=n diff
+CMP = diff
+#CMP = diff -c
+#CMP = gcmp
+
+# Set your "cp" and "mkdir" commands here. Note: DOS's copy must take forward
+# slashes.
+#CP = cp
+#CP = : && command -c copy
+CP = command.com /c copy
+
+#MKDIR = mkdir
+#MKDIR = gmkdir
+#MKDIR = : && command -c mkdir
+MKDIR = command.com /c mkdir
+
+# Set your unix-style date function here
+#DATE = date
+DATE = gdate
+
+# MS-DOS and OS/2 use ; as a PATH delimiter
+PATH_SEPARATOR = ;
+
+# ============================================================================
+# You shouldn't need to modify anything below this line.
+# ============================================================================
+
+srcdir = .
+
+# Get rid of core files when cleaning
+CLEANFILES = core core.*
+
+# try to keep these sorted
+BASIC_TESTS = addcomma anchgsub argarray arrayparm arrayref arrymem1 \
+ arrayprm2 arrayprm3 arryref2 arryref3 arryref4 arryref5 arynasty \
+ arynocls aryprm1 aryprm2 aryprm3 aryprm4 aryprm5 aryprm6 aryprm7 \
+ aryprm8 arysubnm asgext awkpath back89 backgsub childin clobber \
+ clsflnam compare compare2 concat1 concat2 concat3 convfmt datanonl defref \
+ delarprm delarpm2 delfunc dynlj eofsplit exitval1 exitval2 fldchg fldchgnf fmttest fnamedat \
+ fnarray fnarray2 fnarydel fnaryscl fnasgnm fnmisc fnparydl \
+ fordel forsimp fsbs fsspcoln fsrs fstabplus funsemnl funsmnam funstack getline \
+ getline2 getline3 getlnbuf getnr2tb getnr2tm gsubasgn gsubtest \
+ gsubtst2 gsubtst3 gsubtst4 gsubtst5 hex hsprint inputred intest \
+ intprec iobug1 leaddig leadnl litoct longsub longwrds manglprm math membug1 \
+ messages minusstr mmap8k nasty nasty2 negexp nested nfldstr \
+ nfneg nfset nlfldsep nlinstr nlstrina noeffect nofmtch noloop1 \
+ noloop2 nonl noparms nors nulrsend numindex numsubstr octsub ofmt \
+ ofmtbig ofmtfidl ofmts onlynl opasnidx opasnslf paramdup paramtyp \
+ parseme pcntplus prdupval prec printf0 printf1 prmarscl prmreuse \
+ prt1eval prtoeval psx96sub rand rebt8b1 rebt8b2 redfilnm regeq \
+ reindops reparse resplit rs rsnul1nl rsnulbig rsnulbig2 rstest1 \
+ rstest2 rstest3 rstest4 rstest5 rswhite scalar sclforin sclifin \
+ sortempty splitargv splitarr splitdef splitvar splitwht sprintfc \
+ strcat1 strtod subamp subsepnm subslash substr swaplns synerr1 tradanch \
+ tweakfld uninit2 uninit3 uninit4 uninitialized unterm wjposer1 \
+ zeroe0 zeroflag
+
+UNIX_TESTS = fflush getlnhd pid pipeio1 pipeio2 poundbang space strftlng
+GAWK_EXT_TESTS = argtest asort asorti backw badargs clos1way fieldwdth fsfwfs \
+ gensub gensub2 gnuops2 gnuops3 gnureops icasefs icasers igncdym igncfs ignrcase \
+ ignrcas2 lint match1 match2 manyfiles nondec posix procinfs \
+ printfbad1 regx8bit rebuf reint rsstart1 rsstart2 rsstart3 \
+ rstest6 shadow sort1 strtonum strftime whiny
+
+EXTRA_TESTS = regtest inftest
+INET_TESTS = inetechu inetecht inetdayu inetdayt
+
+# List of the tests which should be run with --lint option:
+NEED_LINT = defref noeffect nofmtch shadow uninit2 uninit3 uninit4 uninitialized
+
+# List of the files that appear in manual tests or are for reserve testing:
+GENTESTS_UNUSED = Makefile.in gtlnbufv.awk printfloat.awk switch2.awk
+
+# Message stuff is to make it a little easier to follow.
+# Make the pass-fail last and dependent on others to avoid
+# spurious errors if `make -j' in effect.
+check: msg \
+ printlang \
+ basic-msg-start basic basic-msg-end \
+ unix-msg-start unix-tests unix-msg-end \
+ extend-msg-start gawk-extensions extend-msg-end \
+ pass-fail
+
+basic: $(BASIC_TESTS)
+
+unix-tests: $(UNIX_TESTS)
+
+gawk-extensions: $(GAWK_EXT_TESTS)
+
+#extra: $(EXTRA_TESTS) inet
+extra: $(EXTRA_TESTS) inetmesg
+
+inet: inetmesg $(INET_TESTS)
+
+msg::
+ @echo ''
+ @echo 'Any output from "cmp" is bad news, although some differences'
+ @echo 'in floating point values are probably benign -- in particular,'
+ @echo 'some systems may omit a leading zero and the floating point'
+ @echo 'precision may lead to slightly different output in a few cases.'
+
+printlang::
+ @$(AWK) -f $(srcdir)/printlang.awk
+
+basic-msg-start:
+ @echo "======== Starting basic tests ========"
+
+basic-msg-end:
+ @echo "======== Done with basic tests ========"
+
+unix-msg-start:
+ @echo "======== Starting Unix tests ========"
+
+unix-msg-end:
+ @echo "======== Done with Unix tests ========"
+
+extend-msg-start:
+ @echo "======== Starting gawk extension tests ========"
+
+extend-msg-end:
+ @echo "======== Done with gawk extension tests ========"
+
+# This test is a PITA because increasingly, /tmp is getting
+# mounted noexec. So, we'll test it locally. Sigh.
+#
+# More PITA; some systems have medium short limits on #! paths,
+# so this can still fail
+poundbang::
+ @echo $@
+ @sed "s;/tmp/gawk;`pwd`/$(AWKPROG);" < $(srcdir)/poundbang.awk > ./_pbd.awk
+ @chmod +x ./_pbd.awk
+ @if ./_pbd.awk $(srcdir)/poundbang.awk > _`basename $@` ; \
+ then : ; \
+ else \
+ sed "s;/tmp/gawk;../$(AWKPROG);" < $(srcdir)/poundbang.awk > ./_pbd.awk ; \
+ chmod +x ./_pbd.awk ; \
+ LC_ALL=$${GAWKLOCALE:-C} LANG=$${GAWKLOCALE:-C} ./_pbd.awk $(srcdir)/poundbang.awk > _`basename $@`; \
+ fi
+ @-$(CMP) $(srcdir)/poundbang.awk _`basename $@` && rm -f _`basename $@` _pbd.awk
+
+messages::
+ @echo $@
+ @$(AWK) -f $(srcdir)/messages.awk >out2 2>out3
+ @-$(CMP) $(srcdir)/out1.ok out1 && $(CMP) $(srcdir)/out2.ok out2 && $(CMP) $(srcdir)/out3.ok out3 && rm -f out1 out2 out3
+
+argarray::
+ @echo $@
+ @case $(srcdir) in \
+ .) : ;; \
+ *) cp $(srcdir)/argarray.in . ;; \
+ esac
+ @TEST=test echo just a test | $(AWK) -f $(srcdir)/argarray.awk ./argarray.in - >_$@
+ @case $(srcdir) in \
+ .) : ;; \
+ *) rm -f ./argarray.in ;; \
+ esac
+ @-$(CMP) $(srcdir)/argarray.ok _$@ && rm -f _$@
+
+regtest::
+ @echo 'Some of the output from regtest is very system specific, do not'
+ @echo 'be distressed if your output differs from that distributed.'
+ @echo 'Manual inspection is called for.'
+ AWK=`pwd`/$(AWK) $(srcdir)/regtest.sh
+
+manyfiles::
+ @echo manyfiles
+ @rm -rf junk
+ @mkdir junk
+ @$(AWK) 'BEGIN { for (i = 1; i <= 300; i++) print i, i}' >_$@
+ @$(AWK) -f $(srcdir)/manyfiles.awk _$@ _$@
+ @wc -l junk/* | $(AWK) '$$1 != 2' | wc -l | sed "s/ *//g" > _$@
+ @rm -rf junk ; $(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
+
+compare::
+ @echo $@
+ @$(AWK) -f $(srcdir)/compare.awk 0 1 $(srcdir)/compare.in >_$@
+ @-$(CMP) $(srcdir)/compare.ok _$@ && rm -f _$@
+
+inftest::
+ @echo $@
+ @echo This test is very machine specific...
+ @echo This sometimes seems to cause problems for MSC gawk, so do not
+ @echo run it.
+# @$(AWK) -f $(srcdir)/inftest.awk | sed "s/inf/Inf/g" >_$@
+# @-$(CMP) $(srcdir)/inftest.ok _$@ && rm -f _$@
+
+getline2::
+ @echo $@
+ @$(AWK) -f $(srcdir)/getline2.awk $(srcdir)/getline2.awk $(srcdir)/getline2.awk >_$@
+ @-$(CMP) $(srcdir)/getline2.ok _$@ && rm -f _$@
+
+awkpath::
+ @echo $@
+ @AWKPATH="$(srcdir)$(PATH_SEPARATOR)$(srcdir)/lib" $(AWK) -f awkpath.awk >_$@
+ @-$(CMP) $(srcdir)/awkpath.ok _$@ && rm -f _$@
+
+argtest::
+ @echo $@
+ @$(AWK) -f $(srcdir)/argtest.awk -x -y abc >_$@
+ @-$(CMP) $(srcdir)/argtest.ok _$@ && rm -f _$@
+
+badargs::
+ @echo $@
+ @-$(AWK) -f 2>&1 | grep -v patchlevel >_$@
+ @-$(CMP) $(srcdir)/badargs.ok _$@ && rm -f _$@
+
+nonl::
+ @echo $@
+ @-AWKPATH=$(srcdir) $(AWK) --lint -f nonl.awk /dev/null >_$@ 2>&1
+ @-$(CMP) $(srcdir)/nonl.ok _$@ && rm -f _$@
+
+strftime::
+ @echo This test could fail on slow machines or on a minute boundary,
+ @echo so if it does, double check the actual results:
+ @echo $@
+# @GAWKLOCALE=C; export GAWKLOCALE; \
+# TZ=GMT0; export TZ; \
+# (LC_ALL=C date) | $(AWK) -v OUTPUT=_$@ -f $(srcdir)/strftime.awk
+ @GAWKLOCALE=C; export GAWKLOCALE; \
+ TZ=GMT0; export TZ; \
+ (LC_ALL=C $(DATE)) | $(AWK) -v OUTPUT=_$@ -f $(srcdir)/strftime.awk
+ @-$(CMP) strftime.ok _$@ && rm -f _$@ strftime.ok || exit 0
+
+litoct::
+ @echo $@
+ @echo ab | $(AWK) --traditional -f $(srcdir)/litoct.awk >_$@
+ @-$(CMP) $(srcdir)/litoct.ok _$@ && rm -f _$@
+
+fflush::
+ @echo $@
+ @$(srcdir)/fflush.sh >_$@
+ @-$(CMP) $(srcdir)/fflush.ok _$@ && rm -f _$@
+
+tweakfld::
+ @echo $@
+ @$(AWK) -f $(srcdir)/tweakfld.awk $(srcdir)/tweakfld.in >_$@
+ @rm -f errors.cleanup
+ @-$(CMP) $(srcdir)/tweakfld.ok _$@ && rm -f _$@
+
+mmap8k::
+ @echo $@
+ @$(AWK) '{ print }' $(srcdir)/mmap8k.in >_$@
+ @-$(CMP) $(srcdir)/mmap8k.in _$@ && rm -f _$@
+
+tradanch::
+ @echo $@
+ @$(AWK) --traditional -f $(srcdir)/tradanch.awk $(srcdir)/tradanch.in >_$@
+ @-$(CMP) $(srcdir)/tradanch.ok _$@ && rm -f _$@
+
+# AIX /bin/sh exec's the last command in a list, therefore issue a ":"
+# command so that pid.sh is fork'ed as a child before being exec'ed.
+pid::
+ @echo pid
+ @echo Expect pid to fail with DJGPP.
+ @AWKPATH=$(srcdir) AWK=$(AWKPROG) $(SHELL) $(srcdir)/pid.sh $$$$ > _`basename $@` ; :
+ @-$(CMP) $(srcdir)/pid.ok _`basename $@` && rm -f _`basename $@` _`basename $@`.in
+
+strftlng::
+ @echo $@
+ @TZ=UTC; export TZ; $(AWK) -f $(srcdir)/strftlng.awk >_$@
+ @if $(CMP) $(srcdir)/strftlng.ok _$@ >/dev/null 2>&1 ; then : ; else \
+ TZ=UTC0; export TZ; $(AWK) -f $(srcdir)/strftlng.awk >_$@ ; \
+ fi
+ @-$(CMP) $(srcdir)/strftlng.ok _$@ && rm -f _$@
+
+nors::
+ @echo $@
+ @echo A B C D E | tr -d '\12\15' | $(AWK) '{ print $$NF }' - $(srcdir)/nors.in > _$@
+ @-$(CMP) $(srcdir)/nors.ok _$@ && rm -f _$@
+
+reint::
+ @echo $@
+ @$(AWK) --re-interval -f $(srcdir)/reint.awk $(srcdir)/reint.in >_$@
+ @-$(CMP) $(srcdir)/reint.ok _$@ && rm -f _$@
+
+pipeio1::
+ @echo $@
+ @$(AWK) -f $(srcdir)/pipeio1.awk >_$@
+ @rm -f test1 test2
+ @-$(CMP) $(srcdir)/pipeio1.ok _$@ && rm -f _$@
+
+pipeio2::
+ @echo $@
+ @$(AWK) -v SRCDIR=$(srcdir) -f $(srcdir)/pipeio2.awk >_$@
+ @-$(CMP) $(srcdir)/pipeio2.ok _$@ && rm -f _$@
+
+clobber::
+ @echo $@
+ @$(AWK) -f $(srcdir)/clobber.awk >_$@
+ @-$(CMP) $(srcdir)/clobber.ok seq && $(CMP) $(srcdir)/clobber.ok _$@ && rm -f _$@
+ @rm -f seq
+
+arynocls::
+ @echo $@
+ @-AWKPATH=$(srcdir) $(AWK) -v INPUT=$(srcdir)/arynocls.in -f arynocls.awk >_$@
+ @-$(CMP) $(srcdir)/arynocls.ok _$@ && rm -f _$@
+
+getlnbuf::
+ @echo $@
+ @-AWKPATH=$(srcdir) $(AWK) -f getlnbuf.awk $(srcdir)/getlnbuf.in > _$@
+ @-AWKPATH=$(srcdir) $(AWK) -f gtlnbufv.awk $(srcdir)/getlnbuf.in > _2$@
+ @-$(CMP) $(srcdir)/getlnbuf.ok _$@ && $(CMP) $(srcdir)/getlnbuf.ok _2$@ && rm -f _$@ _2$@
+
+inetmesg::
+ @echo These tests only work if your system supports the services
+ @echo "'discard'" at port 9 and "'daytimed'" at port 13. Check your
+ @echo file /etc/services and do "'netstat -a'".
+
+inetechu::
+ @echo This test is for establishing UDP connections
+ @$(AWK) 'BEGIN {print "" |& "/inet/udp/0/127.0.0.1/9"}'
+
+inetecht::
+ @echo This test is for establishing TCP connections
+ @$(AWK) 'BEGIN {print "" |& "/inet/tcp/0/127.0.0.1/9"}'
+
+inetdayu::
+ @echo This test is for bidirectional UDP transmission
+ @$(AWK) 'BEGIN { print "" |& "/inet/udp/0/127.0.0.1/13"; \
+ "/inet/udp/0/127.0.0.1/13" |& getline; print $0}'
+
+inetdayt::
+ @echo This test is for bidirectional TCP transmission
+ @$(AWK) 'BEGIN { print "" |& "/inet/tcp/0/127.0.0.1/13"; \
+ "/inet/tcp/0/127.0.0.1/13" |& getline; print $0}'
+
+redfilnm::
+ @echo $@
+ @$(AWK) -f $(srcdir)/redfilnm.awk srcdir=$(srcdir) $(srcdir)/redfilnm.in >_$@
+ @-$(CMP) $(srcdir)/redfilnm.ok _$@ && rm -f _$@
+
+leaddig::
+ @echo $@
+ @$(AWK) -v x=2E -f $(srcdir)/leaddig.awk >_$@
+ @-$(CMP) $(srcdir)/leaddig.ok _$@ && rm -f _$@
+
+gsubtst3::
+ @echo $@
+ @$(AWK) --re-interval -f $(srcdir)/$@.awk $(srcdir)/$@.in >_$@
+ @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
+
+space::
+ @echo $@
+ @echo Expect space to fail with DJGPP.
+ @$(AWK) -f ' ' $(srcdir)/space.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
+ @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
+
+printf0::
+ @echo $@
+ @$(AWK) --posix -f $(srcdir)/$@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
+ @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
+
+rsnulbig::
+ @echo $@
+ @ : Suppose that block size for pipe is at most 128kB:
+ @$(AWK) 'BEGIN { for (i = 1; i <= 128*64+1; i++) print "abcdefgh123456\n" }' 2>&1 | \
+ $(AWK) 'BEGIN { RS = ""; ORS = "\n\n" }; { print }' 2>&1 | \
+ $(AWK) '/^[^a]/; END{ print NR }' >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
+ @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
+
+rsnulbig2::
+ @echo $@
+ @$(AWK) 'BEGIN { ORS = ""; n = "\n"; for (i = 1; i <= 10; i++) n = (n n); \
+ for (i = 1; i <= 128; i++) print n; print "abc\n" }' 2>&1 | \
+ $(AWK) 'BEGIN { RS = ""; ORS = "\n\n" };{ print }' 2>&1 | \
+ $(AWK) '/^[^a]/; END { print NR }' >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
+ @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
+
+whiny::
+ @echo $@
+ @WHINY_USERS=1 $(AWK) -f $(srcdir)/$@.awk $(srcdir)/$@.in >_$@
+ @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
+
+ignrcas2::
+ @echo $@
+ @GAWKLOCALE=en_US ; export GAWKLOCALE ; \
+ $(AWK) -f $(srcdir)/$@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >> _$@
+ @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
+
+subamp::
+ @echo $@
+ @GAWKLOCALE=en_US.UTF-8 ; export GAWKLOCALE ; \
+ $(AWK) -f $(srcdir)/$@.awk $(srcdir)/$@.in >_$@ 2>&1 || echo EXIT CODE: $$? >> _$@
+ @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
+
+# This test makes sure gawk exits with a zero code.
+# Thus, unconditionally generate the exit code.
+exitval1::
+ @echo $@
+ @$(AWK) -f $(srcdir)/exitval1.awk >_$@ 2>&1; echo EXIT CODE: $$? >>_$@
+ @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
+
+fsspcoln::
+ @echo $@
+ @$(AWK) -f $(srcdir)/$@.awk 'FS=[ :]+' $(srcdir)/$@.in >_$@
+ @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
+
+rsstart1::
+ @echo $@
+ @$(AWK) -f $(srcdir)/$@.awk $(srcdir)/rsstart1.in >_$@
+ @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
+
+rsstart2::
+ @echo $@
+ @$(AWK) -f $(srcdir)/$@.awk $(srcdir)/rsstart1.in >_$@
+ @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
+
+rsstart3::
+ @echo $@
+ @head $(srcdir)/rsstart1.in | $(AWK) -f $(srcdir)/rsstart2.awk >_$@
+ @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
+Gt-dummy:
+# file Maketests, generated from Makefile.am by the Gentests program
+addcomma:
+ @echo addcomma
+ @AWKPATH=$(srcdir) $(AWK) -f $@.awk < $(srcdir)/$@.in >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
+ @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
+
+anchgsub:
+ @echo anchgsub
+ @AWKPATH=$(srcdir) $(AWK) -f $@.awk < $(srcdir)/$@.in >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
+ @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
+
+arrayparm:
+ @echo arrayparm
+ @AWKPATH=$(srcdir) $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
+ @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
+
+arrayref:
+ @echo arrayref
+ @AWKPATH=$(srcdir) $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
+ @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
+
+arrymem1:
+ @echo arrymem1
+ @AWKPATH=$(srcdir) $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
+ @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
+
+arrayprm2:
+ @echo arrayprm2
+ @AWKPATH=$(srcdir) $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
+ @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
+
+arrayprm3:
+ @echo arrayprm3
+ @AWKPATH=$(srcdir) $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
+ @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
+
+arryref2:
+ @echo arryref2
+ @AWKPATH=$(srcdir) $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
+ @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
+
+arryref3:
+ @echo arryref3
+ @AWKPATH=$(srcdir) $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
+ @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
+
+arryref4:
+ @echo arryref4
+ @AWKPATH=$(srcdir) $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
+ @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
+
+arryref5:
+ @echo arryref5
+ @AWKPATH=$(srcdir) $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
+ @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
+
+arynasty:
+ @echo arynasty
+ @AWKPATH=$(srcdir) $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
+ @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
+
+aryprm1:
+ @echo aryprm1
+ @AWKPATH=$(srcdir) $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
+ @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
+
+aryprm2:
+ @echo aryprm2
+ @AWKPATH=$(srcdir) $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
+ @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
+
+aryprm3:
+ @echo aryprm3
+ @AWKPATH=$(srcdir) $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
+ @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
+
+aryprm4:
+ @echo aryprm4
+ @AWKPATH=$(srcdir) $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
+ @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
+
+aryprm5:
+ @echo aryprm5
+ @AWKPATH=$(srcdir) $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
+ @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
+
+aryprm6:
+ @echo aryprm6
+ @AWKPATH=$(srcdir) $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
+ @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
+
+aryprm7:
+ @echo aryprm7
+ @AWKPATH=$(srcdir) $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
+ @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
+
+aryprm8:
+ @echo aryprm8
+ @AWKPATH=$(srcdir) $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
+ @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
+
+arysubnm:
+ @echo arysubnm
+ @AWKPATH=$(srcdir) $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
+ @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
+
+asgext:
+ @echo asgext
+ @AWKPATH=$(srcdir) $(AWK) -f $@.awk < $(srcdir)/$@.in >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
+ @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
+
+back89:
+ @echo back89
+ @AWKPATH=$(srcdir) $(AWK) -f $@.awk < $(srcdir)/$@.in >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
+ @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
+
+backgsub:
+ @echo backgsub
+ @AWKPATH=$(srcdir) $(AWK) -f $@.awk < $(srcdir)/$@.in >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
+ @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
+
+childin:
+ @echo childin
+ @AWKPATH=$(srcdir) $(AWK) -f $@.awk < $(srcdir)/$@.in >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
+ @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
+
+clsflnam:
+ @echo clsflnam
+ @AWKPATH=$(srcdir) $(AWK) -f $@.awk < $(srcdir)/$@.in >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
+ @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
+
+compare2:
+ @echo compare2
+ @AWKPATH=$(srcdir) $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
+ @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
+
+concat1:
+ @echo concat1
+ @AWKPATH=$(srcdir) $(AWK) -f $@.awk < $(srcdir)/$@.in >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
+ @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
+
+concat2:
+ @echo concat2
+ @AWKPATH=$(srcdir) $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
+ @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
+
+concat3:
+ @echo concat3
+ @AWKPATH=$(srcdir) $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
+ @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
+
+convfmt:
+ @echo convfmt
+ @AWKPATH=$(srcdir) $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
+ @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
+
+datanonl:
+ @echo datanonl
+ @AWKPATH=$(srcdir) $(AWK) -f $@.awk < $(srcdir)/$@.in >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
+ @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
+
+defref:
+ @echo defref
+ @AWKPATH=$(srcdir) $(AWK) -f $@.awk --lint >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
+ @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
+
+delarprm:
+ @echo delarprm
+ @AWKPATH=$(srcdir) $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
+ @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
+
+delarpm2:
+ @echo delarpm2
+ @AWKPATH=$(srcdir) $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
+ @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
+
+delfunc:
+ @echo delfunc
+ @AWKPATH=$(srcdir) $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
+ @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
+
+dynlj:
+ @echo dynlj
+ @AWKPATH=$(srcdir) $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
+ @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
+
+eofsplit:
+ @echo eofsplit
+ @AWKPATH=$(srcdir) $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
+ @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
+
+exitval2:
+ @echo exitval2
+ @AWKPATH=$(srcdir) $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
+ @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
+
+fldchg:
+ @echo fldchg
+ @AWKPATH=$(srcdir) $(AWK) -f $@.awk < $(srcdir)/$@.in >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
+ @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
+
+fldchgnf:
+ @echo fldchgnf
+ @AWKPATH=$(srcdir) $(AWK) -f $@.awk < $(srcdir)/$@.in >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
+ @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
+
+fmttest:
+ @echo fmttest
+ @AWKPATH=$(srcdir) $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
+ @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
+
+fnamedat:
+ @echo fnamedat
+ @AWKPATH=$(srcdir) $(AWK) -f $@.awk < $(srcdir)/$@.in >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
+ @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
+
+fnarray:
+ @echo fnarray
+ @AWKPATH=$(srcdir) $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
+ @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
+
+fnarray2:
+ @echo fnarray2
+ @AWKPATH=$(srcdir) $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
+ @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
+
+fnarydel:
+ @echo fnarydel
+ @AWKPATH=$(srcdir) $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
+ @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
+
+fnaryscl:
+ @echo fnaryscl
+ @AWKPATH=$(srcdir) $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
+ @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
+
+fnasgnm:
+ @echo fnasgnm
+ @AWKPATH=$(srcdir) $(AWK) -f $@.awk < $(srcdir)/$@.in >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
+ @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
+
+fnmisc:
+ @echo fnmisc
+ @AWKPATH=$(srcdir) $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
+ @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
+
+fnparydl:
+ @echo fnparydl
+ @AWKPATH=$(srcdir) $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
+ @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
+
+fordel:
+ @echo fordel
+ @AWKPATH=$(srcdir) $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
+ @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
+
+forsimp:
+ @echo forsimp
+ @AWKPATH=$(srcdir) $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
+ @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
+
+fsbs:
+ @echo fsbs
+ @AWKPATH=$(srcdir) $(AWK) -f $@.awk < $(srcdir)/$@.in >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
+ @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
+
+fsrs:
+ @echo fsrs
+ @AWKPATH=$(srcdir) $(AWK) -f $@.awk < $(srcdir)/$@.in >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
+ @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
+
+fstabplus:
+ @echo fstabplus
+ @AWKPATH=$(srcdir) $(AWK) -f $@.awk < $(srcdir)/$@.in >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
+ @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
+
+funsemnl:
+ @echo funsemnl
+ @AWKPATH=$(srcdir) $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
+ @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
+
+funsmnam:
+ @echo funsmnam
+ @AWKPATH=$(srcdir) $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
+ @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
+
+funstack:
+ @echo funstack
+ @AWKPATH=$(srcdir) $(AWK) -f $@.awk < $(srcdir)/$@.in >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
+ @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
+
+getline:
+ @echo getline
+ @AWKPATH=$(srcdir) $(AWK) -f $@.awk < $(srcdir)/$@.in >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
+ @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
+
+getline3:
+ @echo getline3
+ @AWKPATH=$(srcdir) $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
+ @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
+
+getnr2tb:
+ @echo getnr2tb
+ @AWKPATH=$(srcdir) $(AWK) -f $@.awk < $(srcdir)/$@.in >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
+ @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
+
+getnr2tm:
+ @echo getnr2tm
+ @AWKPATH=$(srcdir) $(AWK) -f $@.awk < $(srcdir)/$@.in >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
+ @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
+
+gsubasgn:
+ @echo gsubasgn
+ @AWKPATH=$(srcdir) $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
+ @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
+
+gsubtest:
+ @echo gsubtest
+ @AWKPATH=$(srcdir) $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
+ @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
+
+gsubtst2:
+ @echo gsubtst2
+ @AWKPATH=$(srcdir) $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
+ @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
+
+gsubtst4:
+ @echo gsubtst4
+ @AWKPATH=$(srcdir) $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
+ @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
+
+gsubtst5:
+ @echo gsubtst5
+ @AWKPATH=$(srcdir) $(AWK) -f $@.awk < $(srcdir)/$@.in >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
+ @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
+
+hex:
+ @echo hex
+ @AWKPATH=$(srcdir) $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
+ @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
+
+hsprint:
+ @echo hsprint
+ @AWKPATH=$(srcdir) $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
+ @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
+
+inputred:
+ @echo inputred
+ @AWKPATH=$(srcdir) $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
+ @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
+
+intest:
+ @echo intest
+ @AWKPATH=$(srcdir) $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
+ @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
+
+intprec:
+ @echo intprec
+ @AWKPATH=$(srcdir) $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
+ @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
+
+iobug1:
+ @echo iobug1
+ @AWKPATH=$(srcdir) $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
+ @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
+
+leadnl:
+ @echo leadnl
+ @AWKPATH=$(srcdir) $(AWK) -f $@.awk < $(srcdir)/$@.in >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
+ @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
+
+longsub:
+ @echo longsub
+ @AWKPATH=$(srcdir) $(AWK) -f $@.awk < $(srcdir)/$@.in >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
+ @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
+
+longwrds:
+ @echo longwrds
+ @AWKPATH=$(srcdir) $(AWK) -f $@.awk < $(srcdir)/$@.in >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
+ @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
+
+manglprm:
+ @echo manglprm
+ @AWKPATH=$(srcdir) $(AWK) -f $@.awk < $(srcdir)/$@.in >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
+ @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
+
+math:
+ @echo math
+ @AWKPATH=$(srcdir) $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
+ @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
+
+membug1:
+ @echo membug1
+ @AWKPATH=$(srcdir) $(AWK) -f $@.awk < $(srcdir)/$@.in >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
+ @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
+
+minusstr:
+ @echo minusstr
+ @AWKPATH=$(srcdir) $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
+ @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
+
+nasty:
+ @echo nasty
+ @AWKPATH=$(srcdir) $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
+ @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
+
+nasty2:
+ @echo nasty2
+ @AWKPATH=$(srcdir) $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
+ @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
+
+negexp:
+ @echo negexp
+ @AWKPATH=$(srcdir) $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
+ @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
+
+nested:
+ @echo nested
+ @AWKPATH=$(srcdir) $(AWK) -f $@.awk < $(srcdir)/$@.in >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
+ @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
+
+nfldstr:
+ @echo nfldstr
+ @AWKPATH=$(srcdir) $(AWK) -f $@.awk < $(srcdir)/$@.in >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
+ @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
+
+nfneg:
+ @echo nfneg
+ @AWKPATH=$(srcdir) $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
+ @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
+
+nfset:
+ @echo nfset
+ @AWKPATH=$(srcdir) $(AWK) -f $@.awk < $(srcdir)/$@.in >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
+ @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
+
+nlfldsep:
+ @echo nlfldsep
+ @AWKPATH=$(srcdir) $(AWK) -f $@.awk < $(srcdir)/$@.in >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
+ @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
+
+nlinstr:
+ @echo nlinstr
+ @AWKPATH=$(srcdir) $(AWK) -f $@.awk < $(srcdir)/$@.in >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
+ @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
+
+nlstrina:
+ @echo nlstrina
+ @AWKPATH=$(srcdir) $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
+ @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
+
+noeffect:
+ @echo noeffect
+ @AWKPATH=$(srcdir) $(AWK) -f $@.awk --lint >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
+ @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
+
+nofmtch:
+ @echo nofmtch
+ @AWKPATH=$(srcdir) $(AWK) -f $@.awk --lint >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
+ @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
+
+noloop1:
+ @echo noloop1
+ @AWKPATH=$(srcdir) $(AWK) -f $@.awk < $(srcdir)/$@.in >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
+ @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
+
+noloop2:
+ @echo noloop2
+ @AWKPATH=$(srcdir) $(AWK) -f $@.awk < $(srcdir)/$@.in >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
+ @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
+
+noparms:
+ @echo noparms
+ @AWKPATH=$(srcdir) $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
+ @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
+
+nulrsend:
+ @echo nulrsend
+ @AWKPATH=$(srcdir) $(AWK) -f $@.awk < $(srcdir)/$@.in >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
+ @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
+
+numindex:
+ @echo numindex
+ @AWKPATH=$(srcdir) $(AWK) -f $@.awk < $(srcdir)/$@.in >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
+ @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
+
+numsubstr:
+ @echo numsubstr
+ @AWKPATH=$(srcdir) $(AWK) -f $@.awk < $(srcdir)/$@.in >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
+ @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
+
+octsub:
+ @echo octsub
+ @AWKPATH=$(srcdir) $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
+ @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
+
+ofmt:
+ @echo ofmt
+ @AWKPATH=$(srcdir) $(AWK) -f $@.awk < $(srcdir)/$@.in >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
+ @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
+
+ofmtbig:
+ @echo ofmtbig
+ @AWKPATH=$(srcdir) $(AWK) -f $@.awk < $(srcdir)/$@.in >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
+ @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
+
+ofmtfidl:
+ @echo ofmtfidl
+ @AWKPATH=$(srcdir) $(AWK) -f $@.awk < $(srcdir)/$@.in >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
+ @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
+
+ofmts:
+ @echo ofmts
+ @AWKPATH=$(srcdir) $(AWK) -f $@.awk < $(srcdir)/$@.in >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
+ @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
+
+onlynl:
+ @echo onlynl
+ @AWKPATH=$(srcdir) $(AWK) -f $@.awk < $(srcdir)/$@.in >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
+ @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
+
+opasnidx:
+ @echo opasnidx
+ @AWKPATH=$(srcdir) $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
+ @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
+
+opasnslf:
+ @echo opasnslf
+ @AWKPATH=$(srcdir) $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
+ @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
+
+paramdup:
+ @echo paramdup
+ @AWKPATH=$(srcdir) $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
+ @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
+
+paramtyp:
+ @echo paramtyp
+ @AWKPATH=$(srcdir) $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
+ @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
+
+parseme:
+ @echo parseme
+ @AWKPATH=$(srcdir) $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
+ @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
+
+pcntplus:
+ @echo pcntplus
+ @AWKPATH=$(srcdir) $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
+ @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
+
+prdupval:
+ @echo prdupval
+ @AWKPATH=$(srcdir) $(AWK) -f $@.awk < $(srcdir)/$@.in >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
+ @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
+
+prec:
+ @echo prec
+ @AWKPATH=$(srcdir) $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
+ @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
+
+printf1:
+ @echo printf1
+ @AWKPATH=$(srcdir) $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
+ @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
+
+prmarscl:
+ @echo prmarscl
+ @AWKPATH=$(srcdir) $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
+ @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
+
+prmreuse:
+ @echo prmreuse
+ @AWKPATH=$(srcdir) $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
+ @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
+
+prt1eval:
+ @echo prt1eval
+ @AWKPATH=$(srcdir) $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
+ @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
+
+prtoeval:
+ @echo prtoeval
+ @AWKPATH=$(srcdir) $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
+ @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
+
+psx96sub:
+ @echo psx96sub
+ @AWKPATH=$(srcdir) $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
+ @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
+
+rand:
+ @echo rand
+ @AWKPATH=$(srcdir) $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
+ @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
+
+rebt8b1:
+ @echo rebt8b1
+ @AWKPATH=$(srcdir) $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
+ @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
+
+rebt8b2:
+ @echo rebt8b2
+ @AWKPATH=$(srcdir) $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
+ @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
+
+regeq:
+ @echo regeq
+ @AWKPATH=$(srcdir) $(AWK) -f $@.awk < $(srcdir)/$@.in >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
+ @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
+
+reindops:
+ @echo reindops
+ @AWKPATH=$(srcdir) $(AWK) -f $@.awk < $(srcdir)/$@.in >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
+ @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
+
+reparse:
+ @echo reparse
+ @AWKPATH=$(srcdir) $(AWK) -f $@.awk < $(srcdir)/$@.in >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
+ @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
+
+resplit:
+ @echo resplit
+ @AWKPATH=$(srcdir) $(AWK) -f $@.awk < $(srcdir)/$@.in >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
+ @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
+
+rs:
+ @echo rs
+ @AWKPATH=$(srcdir) $(AWK) -f $@.awk < $(srcdir)/$@.in >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
+ @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
+
+rsnul1nl:
+ @echo rsnul1nl
+ @AWKPATH=$(srcdir) $(AWK) -f $@.awk < $(srcdir)/$@.in >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
+ @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
+
+rstest1:
+ @echo rstest1
+ @AWKPATH=$(srcdir) $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
+ @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
+
+rstest2:
+ @echo rstest2
+ @AWKPATH=$(srcdir) $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
+ @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
+
+rstest3:
+ @echo rstest3
+ @AWKPATH=$(srcdir) $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
+ @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
+
+rstest4:
+ @echo rstest4
+ @AWKPATH=$(srcdir) $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
+ @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
+
+rstest5:
+ @echo rstest5
+ @AWKPATH=$(srcdir) $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
+ @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
+
+rswhite:
+ @echo rswhite
+ @AWKPATH=$(srcdir) $(AWK) -f $@.awk < $(srcdir)/$@.in >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
+ @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
+
+scalar:
+ @echo scalar
+ @AWKPATH=$(srcdir) $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
+ @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
+
+sclforin:
+ @echo sclforin
+ @AWKPATH=$(srcdir) $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
+ @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
+
+sclifin:
+ @echo sclifin
+ @AWKPATH=$(srcdir) $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
+ @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
+
+sortempty:
+ @echo sortempty
+ @AWKPATH=$(srcdir) $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
+ @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
+
+splitargv:
+ @echo splitargv
+ @AWKPATH=$(srcdir) $(AWK) -f $@.awk < $(srcdir)/$@.in >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
+ @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
+
+splitarr:
+ @echo splitarr
+ @AWKPATH=$(srcdir) $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
+ @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
+
+splitdef:
+ @echo splitdef
+ @AWKPATH=$(srcdir) $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
+ @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
+
+splitvar:
+ @echo splitvar
+ @AWKPATH=$(srcdir) $(AWK) -f $@.awk < $(srcdir)/$@.in >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
+ @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
+
+splitwht:
+ @echo splitwht
+ @AWKPATH=$(srcdir) $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
+ @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
+
+sprintfc:
+ @echo sprintfc
+ @AWKPATH=$(srcdir) $(AWK) -f $@.awk < $(srcdir)/$@.in >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
+ @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
+
+strcat1:
+ @echo strcat1
+ @AWKPATH=$(srcdir) $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
+ @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
+
+strtod:
+ @echo strtod
+ @echo Expect strtod to fail with DJGPP.
+ @AWKPATH=$(srcdir) $(AWK) -f $@.awk < $(srcdir)/$@.in >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
+ @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
+
+subsepnm:
+ @echo subsepnm
+ @AWKPATH=$(srcdir) $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
+ @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
+
+subslash:
+ @echo subslash
+ @AWKPATH=$(srcdir) $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
+ @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
+
+substr:
+ @echo substr
+ @AWKPATH=$(srcdir) $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
+ @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
+
+swaplns:
+ @echo swaplns
+ @AWKPATH=$(srcdir) $(AWK) -f $@.awk < $(srcdir)/$@.in >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
+ @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
+
+synerr1:
+ @echo synerr1
+ @AWKPATH=$(srcdir) $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
+ @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
+
+uninit2:
+ @echo uninit2
+ @AWKPATH=$(srcdir) $(AWK) -f $@.awk --lint >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
+ @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
+
+uninit3:
+ @echo uninit3
+ @AWKPATH=$(srcdir) $(AWK) -f $@.awk --lint >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
+ @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
+
+uninit4:
+ @echo uninit4
+ @AWKPATH=$(srcdir) $(AWK) -f $@.awk --lint >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
+ @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
+
+uninitialized:
+ @echo uninitialized
+ @AWKPATH=$(srcdir) $(AWK) -f $@.awk --lint >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
+ @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
+
+unterm:
+ @echo unterm
+ @AWKPATH=$(srcdir) $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
+ @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
+
+wjposer1:
+ @echo wjposer1
+ @AWKPATH=$(srcdir) $(AWK) -f $@.awk < $(srcdir)/$@.in >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
+ @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
+
+zeroe0:
+ @echo zeroe0
+ @AWKPATH=$(srcdir) $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
+ @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
+
+zeroflag:
+ @echo zeroflag
+ @AWKPATH=$(srcdir) $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
+ @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
+
+getlnhd:
+ @echo getlnhd
+ @AWKPATH=$(srcdir) $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
+ @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
+
+asort:
+ @echo asort
+ @AWKPATH=$(srcdir) $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
+ @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
+
+asorti:
+ @echo asorti
+ @AWKPATH=$(srcdir) $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
+ @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
+
+backw:
+ @echo backw
+ @AWKPATH=$(srcdir) $(AWK) -f $@.awk < $(srcdir)/$@.in >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
+ @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
+
+clos1way:
+ @echo clos1way
+ @echo Expect clos1way to fail with DJGPP.
+ @AWKPATH=$(srcdir) $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
+ @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
+
+fieldwdth:
+ @echo fieldwdth
+ @AWKPATH=$(srcdir) $(AWK) -f $@.awk < $(srcdir)/$@.in >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
+ @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
+
+fsfwfs:
+ @echo fsfwfs
+ @AWKPATH=$(srcdir) $(AWK) -f $@.awk < $(srcdir)/$@.in >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
+ @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
+
+gensub:
+ @echo gensub
+ @AWKPATH=$(srcdir) $(AWK) -f $@.awk < $(srcdir)/$@.in >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
+ @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
+
+gensub2:
+ @echo gensub2
+ @AWKPATH=$(srcdir) $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
+ @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
+
+gnuops2:
+ @echo gnuops2
+ @AWKPATH=$(srcdir) $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
+ @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
+
+gnuops3:
+ @echo gnuops3
+ @AWKPATH=$(srcdir) $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
+ @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
+
+gnureops:
+ @echo gnureops
+ @AWKPATH=$(srcdir) $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
+ @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
+
+icasefs:
+ @echo icasefs
+ @AWKPATH=$(srcdir) $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
+ @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
+
+icasers:
+ @echo icasers
+ @AWKPATH=$(srcdir) $(AWK) -f $@.awk < $(srcdir)/$@.in >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
+ @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
+
+igncdym:
+ @echo igncdym
+ @AWKPATH=$(srcdir) $(AWK) -f $@.awk < $(srcdir)/$@.in >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
+ @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
+
+igncfs:
+ @echo igncfs
+ @AWKPATH=$(srcdir) $(AWK) -f $@.awk < $(srcdir)/$@.in >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
+ @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
+
+ignrcase:
+ @echo ignrcase
+ @AWKPATH=$(srcdir) $(AWK) -f $@.awk < $(srcdir)/$@.in >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
+ @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
+
+lint:
+ @echo lint
+ @AWKPATH=$(srcdir) $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
+ @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
+
+match1:
+ @echo match1
+ @AWKPATH=$(srcdir) $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
+ @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
+
+match2:
+ @echo match2
+ @AWKPATH=$(srcdir) $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
+ @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
+
+nondec:
+ @echo nondec
+ @AWKPATH=$(srcdir) $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
+ @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
+
+posix:
+ @echo posix
+ @AWKPATH=$(srcdir) $(AWK) -f $@.awk < $(srcdir)/$@.in >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
+ @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
+
+procinfs:
+ @echo procinfs
+ @AWKPATH=$(srcdir) $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
+ @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
+
+printfbad1:
+ @echo printfbad1
+ @AWKPATH=$(srcdir) $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
+ @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
+
+regx8bit:
+ @echo regx8bit
+ @AWKPATH=$(srcdir) $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
+ @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
+
+rebuf:
+ @echo rebuf
+ @AWKPATH=$(srcdir) $(AWK) -f $@.awk < $(srcdir)/$@.in >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
+ @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
+
+rstest6:
+ @echo rstest6
+ @AWKPATH=$(srcdir) $(AWK) -f $@.awk < $(srcdir)/$@.in >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
+ @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
+
+shadow:
+ @echo shadow
+ @AWKPATH=$(srcdir) $(AWK) -f $@.awk --lint >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
+ @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
+
+sort1:
+ @echo sort1
+ @AWKPATH=$(srcdir) $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
+ @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
+
+strtonum:
+ @echo strtonum
+ @AWKPATH=$(srcdir) $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
+ @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
+
+# end of file Maketests
+
+# Targets generated for other tests:
+
+$(srcdir)/Maketests: $(srcdir)/Makefile.am $(srcdir)/Gentests
+ $(AWK) -f $(srcdir)/Gentests "$(srcdir)/Makefile.am" *.awk *.in > $(srcdir)/Maketests
+
+clean:
+ rm -fr _* core core.* junk out1 out2 out3 strftime.ok test1 test2 seq *~
+
+# An attempt to print something that can be grepped for in build logs
+pass-fail:
+ @COUNT=`ls _* 2>/dev/null | wc -l` ; \
+ if test $$COUNT = 0 ; \
+ then echo ALL TESTS PASSED ; \
+ else echo $$COUNT TESTS FAILED ; \
+ fi
+
+# This target for my convenience to look at all the results
+diffout:
+ for i in _* ; \
+ do \
+ echo ============== $$i ============= ; \
+ diff -c $(srcdir)/$${i#_}.ok $$i ; \
+ done | more
+
+# This target is for testing with electric fence.
+efence:
+ for i in $$(ls _* | sed 's;_\(.*\);\1;') ; \
+ do \
+ bad=$$(wc -l < _$$i) \
+ ok=$$(wc -l < $$i.ok) ; \
+ if (( $$bad == $$ok + 2 )) ; \
+ then \
+ rm _$$i ; \
+ fi ; \
+ done
+# 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.
+.NOEXPORT:
diff --git a/pc/config.h b/pc/config.h
index 047417c0..4f07d8a5 100644
--- a/pc/config.h
+++ b/pc/config.h
@@ -5,7 +5,7 @@
*/
/*
- * Copyright (C) 1995-2004 the Free Software Foundation, Inc.
+ * Copyright (C) 1995-2005 the Free Software Foundation, Inc.
*
* This file is part of GAWK, the GNU implementation of the
* AWK Programming Language.
@@ -22,7 +22,7 @@
*
* 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
+ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA
*/
@@ -230,7 +230,7 @@
/* #undef HAVE_LIBINTL_H */
/* Define if you have the <limits.h> header file. */
-/* #undef HAVE_LIMITS_H */
+#define HAVE_LIMITS_H 1
/* Define if you have the <locale.h> header file. */
/* #undef HAVE_LOCALE_H */
@@ -272,10 +272,17 @@
/* #undef HAVE_SYS_SOCKET_H */
/* Define if you have the <sys/time.h> header file. */
-/* #undef HAVE_SYS_TIME_H */
+#if defined(DJGPP)
+# define HAVE_SYS_TIME_H 1
+#endif
+
+/* Define to 1 if you have the <sys/types.h> header file. */
+#define HAVE_SYS_TYPES_H 1
/* Define if you have the <unistd.h> header file. */
-#define HAVE_UNISTD_H 1
+#if defined(DJGPP)
+# define HAVE_UNISTD_H 1
+#endif
/* Define if you have the i library (-li). */
/* #undef HAVE_LIBI */
@@ -322,6 +329,23 @@
/* Define as 1 if you have catgets and don't want to use GNU gettext. */
/* #undef HAVE_CATGETS */
+/* The size of `unsigned int' & `unsigned long', as computed by sizeof. */
+#if defined(DJGPP) || defined(_MSC_VER)
+# include <limits.h>
+#endif
+
+#if UINT_MAX == 65536
+# define SIZEOF_UNSIGNED_INT 2
+#endif
+
+#if UINT_MAX == 4294967295U
+# define SIZEOF_UNSIGNED_INT 4
+#endif
+
+#if ULONG_MAX == 4294967295UL
+# define SIZEOF_UNSIGNED_LONG 4
+#endif
+
/* Library search path */
#define DEFPATH ".;c:/lib/awk;c:/gnu/lib/awk"
diff --git a/pc/dlfcn.c b/pc/dlfcn.c
index f0cee556..accfa8ef 100644
--- a/pc/dlfcn.c
+++ b/pc/dlfcn.c
@@ -20,7 +20,7 @@
*
* 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
+ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA
*/
#include <dlfcn.h>
diff --git a/pc/dlfcn.h b/pc/dlfcn.h
index b337c303..f2149055 100644
--- a/pc/dlfcn.h
+++ b/pc/dlfcn.h
@@ -20,7 +20,7 @@
*
* 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
+ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA
*/
#ifndef _DLFCN_H
diff --git a/pc/gawkmisc.pc b/pc/gawkmisc.pc
index 6f81c144..5164edb1 100644
--- a/pc/gawkmisc.pc
+++ b/pc/gawkmisc.pc
@@ -20,7 +20,7 @@
*
* 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
+ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA
*/
char quote = '\'';
diff --git a/po/ChangeLog b/po/ChangeLog
index f99acbef..cf83ebb3 100644
--- a/po/ChangeLog
+++ b/po/ChangeLog
@@ -1,3 +1,7 @@
+Tue Jul 26 21:46:16 2005 Arnold D. Robbins <arnold@skeeve.com>
+
+ * Release 3.1.5: Release tar file made.
+
Mon Aug 2 12:18:15 2004 Arnold D. Robbins <arnold@skeeve.com>
* Release 3.1.4: Release tar file made.
@@ -38,7 +42,7 @@ Mon Dec 2 11:49:59 2002 Arnold D. Robbins <arnold@skeeve.com>
Thu Sep 19 11:00:00 2002 Arnold D. Robbins <arnold@skeeve.com>
- * Updatedated to gettext 0.11.5.
+ * Updated to gettext 0.11.5.
Mon Jun 17 18:26:23 2002 Arnold D. Robbins <arnold@skeeve.com>
diff --git a/po/LINGUAS b/po/LINGUAS
index 8bcb1636..64e24192 100644
--- a/po/LINGUAS
+++ b/po/LINGUAS
@@ -11,3 +11,7 @@ ca
pl
ja
ro
+nl
+rw
+ga
+vi
diff --git a/po/Makefile.in.in b/po/Makefile.in.in
index 53efc5e1..1f5cc285 100644
--- a/po/Makefile.in.in
+++ b/po/Makefile.in.in
@@ -1,5 +1,5 @@
# Makefile for PO directory in any package using GNU gettext.
-# Copyright (C) 1995-1997, 2000-2004 by Ulrich Drepper <drepper@gnu.ai.mit.edu>
+# Copyright (C) 1995-1997, 2000-2005 by Ulrich Drepper <drepper@gnu.ai.mit.edu>
#
# 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
@@ -8,10 +8,11 @@
# 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
+# Origin: gettext-0.14.4
PACKAGE = @PACKAGE@
VERSION = @VERSION@
+PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@
SHELL = /bin/sh
@SET_MAKE@
@@ -46,7 +47,7 @@ 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 \
+DISTFILES = $(DISTFILES.common) Makevars POTFILES.in \
$(POFILES) $(GMOFILES) \
$(DISTFILES.extra1) $(DISTFILES.extra2) $(DISTFILES.extra3)
@@ -79,6 +80,12 @@ all: all-@USE_NLS@
all-yes: stamp-po
all-no:
+# $(srcdir)/$(DOMAIN).pot is only created when needed. When xgettext finds no
+# internationalized messages, no $(srcdir)/$(DOMAIN).pot is created (because
+# we don't want to bother translators with empty POT files). We assume that
+# LINGUAS is empty in this case, i.e. $(POFILES) and $(GMOFILES) are empty.
+# In this case, stamp-po is a nop (i.e. a phony target).
+
# 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,
@@ -88,10 +95,13 @@ all-no:
# $(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
+ test ! -f $(srcdir)/$(DOMAIN).pot || \
+ test -z "$(GMOFILES)" || $(MAKE) $(GMOFILES)
+ @test ! -f $(srcdir)/$(DOMAIN).pot || { \
+ 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
@@ -100,11 +110,16 @@ stamp-po: $(srcdir)/$(DOMAIN).pot
# 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
+ if test -n '$(MSGID_BUGS_ADDRESS)' || test '$(PACKAGE_BUGREPORT)' = '@'PACKAGE_BUGREPORT'@'; then \
+ msgid_bugs_address='$(MSGID_BUGS_ADDRESS)'; \
+ else \
+ msgid_bugs_address='$(PACKAGE_BUGREPORT)'; \
+ fi; \
$(XGETTEXT) --default-domain=$(DOMAIN) --directory=$(top_srcdir) \
--add-comments=TRANSLATORS: $(XGETTEXT_OPTIONS) \
--files-from=$(srcdir)/POTFILES.in \
--copyright-holder='$(COPYRIGHT_HOLDER)' \
- --msgid-bugs-address='$(MSGID_BUGS_ADDRESS)'
+ --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 && \
@@ -289,11 +304,14 @@ dist distdir:
$(MAKE) update-po
@$(MAKE) dist2
# This is a separate target because 'update-po' must be executed before.
-dist2: $(DISTFILES)
+dist2: stamp-po $(DISTFILES)
dists="$(DISTFILES)"; \
if test "$(PACKAGE)" = "gettext-tools"; then \
dists="$$dists Makevars.template"; \
fi; \
+ if test -f $(srcdir)/$(DOMAIN).pot; then \
+ dists="$$dists $(DOMAIN).pot stamp-po"; \
+ fi; \
if test -f $(srcdir)/ChangeLog; then \
dists="$$dists ChangeLog"; \
fi; \
@@ -305,9 +323,9 @@ dist2: $(DISTFILES)
if test -f $(srcdir)/LINGUAS; then dists="$$dists LINGUAS"; fi; \
for file in $$dists; do \
if test -f $$file; then \
- cp -p $$file $(distdir); \
+ cp -p $$file $(distdir) || exit 1; \
else \
- cp -p $(srcdir)/$$file $(distdir); \
+ cp -p $(srcdir)/$$file $(distdir) || exit 1; \
fi; \
done
@@ -354,7 +372,7 @@ $(DUMMYPOFILES):
update-gmo: Makefile $(GMOFILES)
@:
-Makefile: Makefile.in.in $(top_builddir)/config.status @POMAKEFILEDEPS@
+Makefile: Makefile.in.in Makevars $(top_builddir)/config.status @POMAKEFILEDEPS@
cd $(top_builddir) \
&& CONFIG_FILES=$(subdir)/$@.in CONFIG_HEADERS= \
$(SHELL) ./config.status
diff --git a/po/ca.gmo b/po/ca.gmo
index 9dc12416..5bdbdd2a 100644
--- a/po/ca.gmo
+++ b/po/ca.gmo
Binary files differ
diff --git a/po/ca.po b/po/ca.po
index d34daa2a..c196a2ac 100644
--- a/po/ca.po
+++ b/po/ca.po
@@ -6,7 +6,7 @@ msgid ""
msgstr ""
"Project-Id-Version: gawk 3.1.31\n"
"Report-Msgid-Bugs-To: arnold@skeeve.com\n"
-"POT-Creation-Date: 2004-07-15 13:02+0300\n"
+"POT-Creation-Date: 2005-07-06 17:20+0300\n"
"PO-Revision-Date: 2003-05-07 21:13+0100\n"
"Last-Translator: Antoni Bella Perez <bella5@teleline.es>\n"
"Language-Team: Catalan <ca@dodds.net>\n"
@@ -90,287 +90,304 @@ msgstr "Els blocs FINAL han de tindre una part d'acció"
msgid "`%s' is a built-in function, it cannot be redefined"
msgstr "«%s» és una funció interna, no pot ser redefinida"
-#: awkgram.y:314
+#: awkgram.y:313
+#, fuzzy
+msgid "regexp constant `//' looks like a C++ comment, but is not"
+msgstr ""
+"la constant d'expressió regular «/%s/» sembla un comentari en C, perà no ho "
+"és"
+
+#: awkgram.y:316
#, c-format
msgid "regexp constant `/%s/' looks like a C comment, but is not"
msgstr ""
"la constant d'expressió regular «/%s/» sembla un comentari en C, perà no ho "
"és"
-#: awkgram.y:341 awkgram.y:619
+#: awkgram.y:343 awkgram.y:623
msgid "statement may have no effect"
msgstr "la declaració podria no tindre efecte"
-#: awkgram.y:436 awkgram.y:456
+#: awkgram.y:440 awkgram.y:460
#, fuzzy, c-format
msgid "`%s' used in %s action"
msgstr "«next» és usat dintre de l'acció BEGIN o END"
-#: awkgram.y:449 awkgram.y:452
+#: awkgram.y:453 awkgram.y:456
msgid "`nextfile' is a gawk extension"
msgstr "«nextfile» és una extensió de gawk"
-#: awkgram.y:466
+#: awkgram.y:470
msgid "`return' used outside function context"
msgstr "«return» és usat fora del context d'una funció"
-#: awkgram.y:508
+#: awkgram.y:512
msgid "plain `print' in BEGIN or END rule should probably be `print \"\"'"
msgstr ""
"el «print» simple en la regla BEGIN o END probablement ha de ser «print \"\"»"
-#: awkgram.y:521 awkgram.y:528
+#: awkgram.y:525 awkgram.y:532
msgid "`delete array' is a gawk extension"
msgstr "«delete array» és una extensió de gawk"
-#: awkgram.y:536 awkgram.y:543
+#: awkgram.y:540 awkgram.y:547
#, fuzzy
msgid "`delete(array)' is a non-portable tawk extension"
msgstr "«delete array» és una extensió de gawk"
-#: awkgram.y:587
+#: awkgram.y:591
#, c-format
msgid "duplicate case values in switch body: %s"
msgstr ""
-#: awkgram.y:597
+#: awkgram.y:601
msgid "Duplicate `default' detected in switch body"
msgstr ""
-#: awkgram.y:686
+#: awkgram.y:690
msgid "multistage two-way pipelines don't work"
msgstr "les canonades bidireccionals multi-etapes no funcionen"
-#: awkgram.y:777
+#: awkgram.y:781
msgid "regular expression on right of assignment"
msgstr "expressió regular a la dreta d'una assignació"
-#: awkgram.y:800
+#: awkgram.y:804
msgid "regular expression on left of `~' or `!~' operator"
msgstr "expressió regular a l'esquerra de l'operador «~» o «!~»"
-#: awkgram.y:808
+#: awkgram.y:812
msgid "regular expression on right of comparison"
msgstr "expressió regular a la derta de la comparació"
-#: awkgram.y:875
+#: awkgram.y:879
msgid "non-redirected `getline' undefined inside END action"
msgstr "«getline» no redirigit sense definir dintre de l'acció FINAL"
-#: awkgram.y:902
+#: awkgram.y:906
msgid "call of `length' without parentheses is not portable"
msgstr "la crida de «length» sense parèntesis no és portable"
-#: awkgram.y:905
+#: awkgram.y:909
msgid "call of `length' without parentheses is deprecated by POSIX"
msgstr "la crida de «length» sense parèntesis està desaprovada per POSIX"
-#: awkgram.y:958
+#: awkgram.y:962
msgid "use of non-array as array"
msgstr ""
-#: awkgram.y:960
+#: awkgram.y:964
msgid "invalid subscript expression"
msgstr "expressió de subscript no vàlida"
-#: awkgram.y:1158
+#: awkgram.y:1171
#, fuzzy
msgid "unexpected newline or end of string"
msgstr "nova línia inesperada"
-#: awkgram.y:1254
+#: awkgram.y:1267
msgid "empty program text on command line"
msgstr "el text del programa en la línia de comandaments està buit"
-#: awkgram.y:1307
+#: awkgram.y:1320
#, c-format
msgid "can't open source file `%s' for reading (%s)"
msgstr "no es pot obrir el fitxer font «%s» per a lectura (%s)"
-#: awkgram.y:1384
+#: awkgram.y:1397
#, c-format
msgid "can't read sourcefile `%s' (%s)"
msgstr "no es pot llegir el fitxer font «%s» (%s)"
-#: awkgram.y:1392
+#: awkgram.y:1405
#, c-format
msgid "source file `%s' is empty"
msgstr "el fitxer font «%s» està buit"
-#: awkgram.y:1590 awkgram.y:1700 awkgram.y:1718 awkgram.y:2068 awkgram.y:2153
+#: awkgram.y:1596 awkgram.y:1718 awkgram.y:1736 awkgram.y:2107 awkgram.y:2194
msgid "source file does not end in newline"
msgstr "el fitxer font no finalitza amb un retorn de carro"
-#: awkgram.y:1654
+#: awkgram.y:1658
msgid "unterminated regexp ends with `\\' at end of file"
msgstr "expressió regular sense finalitzar acaba amb «\\» al final del fitxer"
-#: awkgram.y:1674
+#: awkgram.y:1682
+#, c-format
+msgid "%s: %d: tawk regex modifier `/.../%c' doesn't work in gawk"
+msgstr ""
+
+#: awkgram.y:1686
+#, c-format
+msgid "tawk regex modifier `/.../%c' doesn't work in gawk"
+msgstr ""
+
+#: awkgram.y:1693
msgid "unterminated regexp"
msgstr "expressió regular sense finalitzar"
-#: awkgram.y:1677
+#: awkgram.y:1696
msgid "unterminated regexp at end of file"
msgstr "expressió regular sense finalitzar al final del fitxer"
-#: awkgram.y:1744
+#: awkgram.y:1762
msgid "use of `\\ #...' line continuation is not portable"
msgstr "l'ús de «\\ #...» com a continuació de línia no és portable"
-#: awkgram.y:1756
+#: awkgram.y:1774
msgid "backslash not last character on line"
msgstr "la barra invertida no és l'últim caràcter en la línia"
-#: awkgram.y:1801
+#: awkgram.y:1819
msgid "POSIX does not allow operator `**='"
msgstr "POSIX no permet l'operador «**=»"
-#: awkgram.y:1803
+#: awkgram.y:1821
msgid "old awk does not support operator `**='"
msgstr "l'antic awk no suporta l'operador «**=»"
-#: awkgram.y:1812
+#: awkgram.y:1830
msgid "POSIX does not allow operator `**'"
msgstr "POSIX no permet l'operador «**»"
-#: awkgram.y:1814
+#: awkgram.y:1832
msgid "old awk does not support operator `**'"
msgstr "l'antic awk no suporta l'operador «**=»"
-#: awkgram.y:1845
+#: awkgram.y:1863
msgid "operator `^=' is not supported in old awk"
msgstr "l'operador «^=» no està suportat en l'antic awk"
-#: awkgram.y:1853
+#: awkgram.y:1871
msgid "operator `^' is not supported in old awk"
msgstr "l'operador «^» no està suportat en l'antic awk"
-#: awkgram.y:1937 awkgram.y:1954
+#: awkgram.y:1955 awkgram.y:1970
msgid "unterminated string"
msgstr "cadena sense finalitzar"
-#: awkgram.y:2114
+#: awkgram.y:2155
#, c-format
msgid "invalid char '%c' in expression"
msgstr "caràcter «%c» no vàlid en l'expressió"
-#: awkgram.y:2162
+#: awkgram.y:2203
#, c-format
msgid "`%s' is a gawk extension"
msgstr "«%s» és una extensió de gawk"
-#: awkgram.y:2165
+#: awkgram.y:2206
#, c-format
msgid "`%s' is a Bell Labs extension"
msgstr "«%s» és una extensió de Bell Labs"
-#: awkgram.y:2168
+#: awkgram.y:2209
#, c-format
msgid "POSIX does not allow `%s'"
msgstr "POSIX no permet «%s»"
-#: awkgram.y:2172
+#: awkgram.y:2213
#, c-format
msgid "`%s' is not supported in old awk"
msgstr "«%s» no està suportat en l'antic awk"
-#: awkgram.y:2198
+#: awkgram.y:2239
msgid "`goto' considered harmful!\n"
msgstr "«goto» se considera nefast!\n"
-#: awkgram.y:2260
+#: awkgram.y:2301
#, c-format
msgid "%d is invalid as number of arguments for %s"
msgstr "%d no és vàlid com a nombre d'arguments per a %s"
-#: awkgram.y:2279 awkgram.y:2282
+#: awkgram.y:2320 awkgram.y:2323
msgid "match: third argument is a gawk extension"
msgstr "match: el tercer argument és una extensió de gawk"
-#: awkgram.y:2295
+#: awkgram.y:2336
#, c-format
msgid "%s: string literal as last arg of substitute has no effect"
msgstr "%s: la cadena literal com a últim argument de substitució no té efecte"
-#: awkgram.y:2298
+#: awkgram.y:2339
#, fuzzy, c-format
msgid "%s third parameter is not a changeable object"
msgstr "sub: el tercer argument no és un objecte intercanviable"
-#: awkgram.y:2325 awkgram.y:2328
+#: awkgram.y:2366 awkgram.y:2369
msgid "close: second argument is a gawk extension"
msgstr "close: el segon argument és una extensió de gawk"
-#: awkgram.y:2338
+#: awkgram.y:2379
msgid "use of dcgettext(_\"...\") is incorrect: remove leading underscore"
msgstr ""
"l'ús de dcgettext(_\"...\") no és correcte: elimineu el guió baix inicial"
-#: awkgram.y:2353
+#: awkgram.y:2394
#, fuzzy
msgid "use of dcngettext(_\"...\") is incorrect: remove leading underscore"
msgstr ""
"l'ús de dcgettext(_\"...\") no és correcte: elimineu el guió baix inicial"
-#: awkgram.y:2424
+#: awkgram.y:2465
#, c-format
msgid "function `%s': parameter #%d, `%s', duplicates parameter #%d"
msgstr "funció «%s»: paràmetre #%d, «%s», duplica al paràmetre #%d"
-#: awkgram.y:2457
+#: awkgram.y:2498
#, c-format
msgid "function `%s': parameter `%s' shadows global variable"
msgstr "funció «%s»: paràmetre «%s» ofusca la variable global"
-#: awkgram.y:2569
+#: awkgram.y:2610
#, c-format
msgid "could not open `%s' for writing (%s)"
msgstr "no es pot obrir «%s» per a escriptura (%s)"
-#: awkgram.y:2570 profile.c:93
+#: awkgram.y:2611 profile.c:93
msgid "sending profile to standard error"
msgstr "enviant el perfil a l'eixida d'error estàndard"
-#: awkgram.y:2602
+#: awkgram.y:2643
#, c-format
msgid "%s: close failed (%s)"
msgstr "%s: tancament erroni (%s)"
-#: awkgram.y:2723
+#: awkgram.y:2764
msgid "shadow_funcs() called twice!"
msgstr "shadow_funcs() crida dos vegades!"
-#: awkgram.y:2750
+#: awkgram.y:2791
msgid "there were shadowed variables."
msgstr ""
-#: awkgram.y:2823
+#: awkgram.y:2864
#, c-format
msgid "function `%s': can't use function name as parameter name"
msgstr "funció «%s»: no pot usar el nom de la funció com a paràmetre"
-#: awkgram.y:2833
+#: awkgram.y:2874
#, c-format
msgid "function name `%s' previously defined"
msgstr "nom de la funció «%s» definida prèviament"
-#: awkgram.y:2984 awkgram.y:2990
+#: awkgram.y:3025 awkgram.y:3031
#, c-format
msgid "function `%s' called but never defined"
msgstr "es crida a la funció «%s» però no s'ha definit"
-#: awkgram.y:2993
+#: awkgram.y:3034
#, c-format
msgid "function `%s' defined but never called"
msgstr "es defineix la funció «%s» però no s'ha cridat mai"
-#: awkgram.y:3020
+#: awkgram.y:3061
#, c-format
msgid "regexp constant for parameter #%d yields boolean value"
msgstr ""
"l'expressió regular constant per al paràmetre #%d condueix a un valor booleà"
-#: awkgram.y:3033
+#: awkgram.y:3105
#, fuzzy, c-format
msgid ""
"function `%s' called with space between name and `(',\n"
@@ -379,197 +396,202 @@ msgstr ""
"s'ha cridat a la funció «%s» amb espai entre el nom i el «(»,\n"
"%s"
-#: builtin.c:149
+#: builtin.c:145
#, c-format
msgid "%s to \"%s\" failed (%s)"
msgstr "%s a \"%s\" ha fallat (%s)"
-#: builtin.c:150
+#: builtin.c:146
msgid "standard output"
msgstr "eixida estàndard"
-#: builtin.c:151
+#: builtin.c:147
msgid "reason unknown"
msgstr "motiu desconegut"
-#: builtin.c:164
+#: builtin.c:160
msgid "exp: received non-numeric argument"
msgstr "exp: s'ha rebut un argument que no és un número"
-#: builtin.c:170
+#: builtin.c:166
#, c-format
msgid "exp: argument %g is out of range"
msgstr "exp: l'argument %g està fora de rang"
-#: builtin.c:228
+#: builtin.c:224
#, c-format
msgid "fflush: cannot flush: pipe `%s' opened for reading, not writing"
msgstr ""
"fflush: no es pot netejar: la canonada «%s» s'ha obert per a lectura, no per "
"a escriptura"
-#: builtin.c:231
+#: builtin.c:227
#, c-format
msgid "fflush: cannot flush: file `%s' opened for reading, not writing"
msgstr ""
"fflush: no es pot netejar: el fitxer «%s» s'ha obert per a lectura, no per a "
"escriptura"
-#: builtin.c:243
+#: builtin.c:239
#, c-format
msgid "fflush: `%s' is not an open file, pipe or co-process"
msgstr "fflush: «%s» no és un fitxer obert, canonada o co-procés"
-#: builtin.c:338
+#: builtin.c:332
msgid "index: received non-string first argument"
msgstr "índex: el primer argument rebut no és una cadena"
-#: builtin.c:340
+#: builtin.c:334
msgid "index: received non-string second argument"
msgstr "índex: el segon argument rebut no és una cadena"
-#: builtin.c:454
+#: builtin.c:449
msgid "int: received non-numeric argument"
msgstr "int: s'ha rebut un argument no numèric"
-#: builtin.c:471
+#: builtin.c:472
+#, fuzzy
+msgid "`length(array)' is a gawk extension"
+msgstr "«delete array» és una extensió de gawk"
+
+#: builtin.c:481
msgid "length: received non-string argument"
msgstr "length: s'ha rebut un argument que no és una cadena"
-#: builtin.c:487
+#: builtin.c:506
msgid "log: received non-numeric argument"
msgstr "log: s'ha rebut un argument no numèric"
-#: builtin.c:490
+#: builtin.c:509
#, c-format
msgid "log: received negative argument %g"
msgstr "log: s'ha rebut l'argument negatiu %g"
-#: builtin.c:654 builtin.c:657
+#: builtin.c:673 builtin.c:676
msgid "must use `count$' on all formats or none"
msgstr ""
-#: builtin.c:759
+#: builtin.c:778
msgid "`$' is not permitted in awk formats"
msgstr "no es permeten «$» en els formats awk"
-#: builtin.c:765
+#: builtin.c:784
msgid "arg count with `$' must be > 0"
msgstr "el compte d'arguments amb «$» ha de ser > 0"
-#: builtin.c:767
+#: builtin.c:786
#, fuzzy, c-format
msgid "arg count %ld greater than total number of supplied arguments"
msgstr ""
"el comte d'arguments %d és major que el nombre total d'arguments "
"proporcionats"
-#: builtin.c:769
+#: builtin.c:788
msgid "`$' not permitted after period in format"
msgstr "no es permet «$» després d'un punt en el format"
-#: builtin.c:782
+#: builtin.c:801
msgid "no `$' supplied for positional field width or precision"
msgstr "no es proporciona «$» per a l'ample o precisió del camp de posició"
-#: builtin.c:848
+#: builtin.c:867
msgid "`l' is meaningless in awk formats; ignored"
msgstr "«l» manca de significat en els formats awk; serà ignorat"
-#: builtin.c:852
+#: builtin.c:871
msgid "`l' is not permitted in POSIX awk formats"
msgstr "«l» no està permés en els formats POSIX de awk"
-#: builtin.c:863
+#: builtin.c:882
msgid "`L' is meaningless in awk formats; ignored"
msgstr "«L» manca de significat en els formats awk; serà ignorat"
-#: builtin.c:867
+#: builtin.c:886
msgid "`L' is not permitted in POSIX awk formats"
msgstr "«L» no està permés en els formats POSIX de awk"
-#: builtin.c:878
+#: builtin.c:897
msgid "`h' is meaningless in awk formats; ignored"
msgstr "«h» manca de significat en els formats awk; serà ignorat"
-#: builtin.c:882
+#: builtin.c:901
msgid "`h' is not permitted in POSIX awk formats"
msgstr "«h» no està permés en els formats POSIX de awk"
-#: builtin.c:1111
+#: builtin.c:1132
#, c-format
msgid "[s]printf: value %g is out of range for `%%%c' format"
msgstr ""
-#: builtin.c:1171
+#: builtin.c:1198
msgid "not enough arguments to satisfy format string"
msgstr "no hi ha prou arguments per a satisfer el format d'una cadena"
-#: builtin.c:1173
+#: builtin.c:1200
msgid "^ ran out for this one"
msgstr "^ desbordament per a aquest"
-#: builtin.c:1178
+#: builtin.c:1205
msgid "[s]printf: format specifier does not have control letter"
msgstr "[s]printf: l'especificador de format no conté lletra de control"
-#: builtin.c:1181
+#: builtin.c:1208
msgid "too many arguments supplied for format string"
msgstr "s'han proporcionat masses arguments per a la cadena de format"
-#: builtin.c:1247 builtin.c:1250
+#: builtin.c:1274 builtin.c:1277
msgid "printf: no arguments"
msgstr "printf: sense arguments"
-#: builtin.c:1274
+#: builtin.c:1301
msgid "sqrt: received non-numeric argument"
msgstr "sqrt: s'ha rebut un argument no numèric"
-#: builtin.c:1278
+#: builtin.c:1305
#, c-format
msgid "sqrt: called with negative argument %g"
msgstr "sqrt: cridat amb l'argument negatiu %g"
-#: builtin.c:1301
+#: builtin.c:1329
#, c-format
msgid "substr: start index %g is invalid, using 1"
msgstr "substr: l'índex d'inici %g no és vàlid, usant 1"
-#: builtin.c:1306
+#: builtin.c:1334
#, c-format
msgid "substr: non-integer start index %g will be truncated"
msgstr "substr: l'índex d'inici no enter %g serà truncat"
-#: builtin.c:1325
+#: builtin.c:1353
#, fuzzy, c-format
msgid "substr: length %g is not >= 1"
msgstr "substr: la longitud %g és <= 0"
-#: builtin.c:1327
+#: builtin.c:1355
#, fuzzy, c-format
msgid "substr: length %g is not >= 0"
msgstr "substr: la longitud %g és <= 0"
-#: builtin.c:1334
+#: builtin.c:1362
#, c-format
msgid "substr: non-integer length %g will be truncated"
msgstr "substr: la longitud sobre un nombre no enter %g serà truncada"
-#: builtin.c:1339
+#: builtin.c:1367
#, c-format
msgid "substr: length %g too big for string indexing, truncating to %g"
msgstr ""
-#: builtin.c:1351
+#: builtin.c:1379
msgid "substr: source string is zero length"
msgstr "substr: la cadena font és de longitud zero"
-#: builtin.c:1357
+#: builtin.c:1395
#, fuzzy, c-format
msgid "substr: start index %g is past end of string"
msgstr "substr: l'índex d'inici %d sobrepassa l'acabament de la cadena"
-#: builtin.c:1365
+#: builtin.c:1403
#, fuzzy, c-format
msgid ""
"substr: length %g at start index %g exceeds length of first argument (%lu)"
@@ -577,196 +599,196 @@ msgstr ""
"substr: la longitud %d a l'índex d'inici %d excedeix la longitud del 1er "
"argument (%d)"
-#: builtin.c:1400
+#: builtin.c:1478
#, fuzzy
msgid "strftime: received non-string first argument"
msgstr "strftime: el primer argument rebut no és una cadena"
-#: builtin.c:1406
+#: builtin.c:1484
msgid "strftime: received empty format string"
msgstr "strftime: s'ha rebut una cadena de format buida"
-#: builtin.c:1415
+#: builtin.c:1493
#, fuzzy
msgid "strftime: received non-numeric second argument"
msgstr "strftime: el segon argument rebut no és numèric"
-#: builtin.c:1478
+#: builtin.c:1556
msgid "mktime: received non-string argument"
msgstr "mktime: s'ha rebut un argument que no és una cadena"
-#: builtin.c:1523
+#: builtin.c:1601
#, fuzzy
msgid "system: received non-string argument"
msgstr "system: s'ha rebut un argument que no és una cadena"
-#: builtin.c:1644 eval.c:2019
+#: builtin.c:1722 eval.c:2039
#, fuzzy, c-format
msgid "reference to uninitialized field `$%d'"
msgstr "referència a una variable sense inicialitzar «%s»"
-#: builtin.c:1671
+#: builtin.c:1827
#, fuzzy
msgid "tolower: received non-string argument"
msgstr "tolower: s'ha rebut un argument que no és una cadena"
-#: builtin.c:1720
+#: builtin.c:1857
#, fuzzy
msgid "toupper: received non-string argument"
msgstr "toupper: s'ha rebut un argument que no és una cadena"
-#: builtin.c:1765
+#: builtin.c:1890
msgid "atan2: received non-numeric first argument"
msgstr "atan2: el primer argument rebut no és numèric"
-#: builtin.c:1767
+#: builtin.c:1892
msgid "atan2: received non-numeric second argument"
msgstr "atan2: el segon argument rebut no és numèric"
-#: builtin.c:1786
+#: builtin.c:1911
msgid "sin: received non-numeric argument"
msgstr "sin: s'ha rebut un argument que no és numèric"
-#: builtin.c:1802
+#: builtin.c:1927
msgid "cos: received non-numeric argument"
msgstr "cos: s'ha rebut un argument que no és numèric"
-#: builtin.c:1852
+#: builtin.c:1977
msgid "srand: received non-numeric argument"
msgstr "srand: s'ha rebut un argument que no és numèric"
-#: builtin.c:1887
+#: builtin.c:2012
msgid "match: third argument is not an array"
msgstr "match: el tercer argument no és una matriu"
-#: builtin.c:2414
+#: builtin.c:2555
msgid "gensub: third argument of 0 treated as 1"
msgstr "gensub: el tercer argument de 0 és tractat com a 1"
-#: builtin.c:2572
+#: builtin.c:2715
msgid "lshift: received non-numeric first argument"
msgstr "lshift: el primer argument rebut no és numèric"
-#: builtin.c:2574
+#: builtin.c:2717
#, fuzzy
msgid "lshift: received non-numeric second argument"
msgstr "strftime: el segon argument rebut no és numèric"
-#: builtin.c:2580
+#: builtin.c:2723
#, c-format
msgid "lshift(%lf, %lf): negative values will give strange results"
msgstr "lshift(%lf, %lf): els valors negatius donaran resultats estranys"
-#: builtin.c:2582
+#: builtin.c:2725
#, c-format
msgid "lshift(%lf, %lf): fractional values will be truncated"
msgstr "lshift(%lf, %lf): els valors fraccionaris sernn truncats"
-#: builtin.c:2584
+#: builtin.c:2727
#, c-format
msgid "lshift(%lf, %lf): too large shift value will give strange results"
msgstr ""
"lshift(%lf, %lf): un valor de desplaçament massa gran donarà resultats "
"estranys"
-#: builtin.c:2610
+#: builtin.c:2753
msgid "rshift: received non-numeric first argument"
msgstr "rshift: el primer argument rebut no és numèric"
-#: builtin.c:2612
+#: builtin.c:2755
#, fuzzy
msgid "rshift: received non-numeric second argument"
msgstr "strftime: el segon argument rebut no és numèric"
-#: builtin.c:2618
+#: builtin.c:2761
#, c-format
msgid "rshift(%lf, %lf): negative values will give strange results"
msgstr "rshift(%lf, %lf): els valors negatius donaran resultats estranys"
-#: builtin.c:2620
+#: builtin.c:2763
#, c-format
msgid "rshift(%lf, %lf): fractional values will be truncated"
msgstr "rshift(%lf, %lf): els valors fraccionaris seran truncats"
-#: builtin.c:2622
+#: builtin.c:2765
#, c-format
msgid "rshift(%lf, %lf): too large shift value will give strange results"
msgstr ""
"rshift(%lf, %lf): un valor de desplaçament massa gran donarà resultats "
"estranys"
-#: builtin.c:2648
+#: builtin.c:2791
msgid "and: received non-numeric first argument"
msgstr "and: el primer argument rebut no és numèric"
-#: builtin.c:2650
+#: builtin.c:2793
#, fuzzy
msgid "and: received non-numeric second argument"
msgstr "atan2: el segon argument rebut no és numèric"
-#: builtin.c:2656
+#: builtin.c:2799
#, c-format
msgid "and(%lf, %lf): negative values will give strange results"
msgstr "and(%lf, %lf): els valors negatius donaran resultats estranys"
-#: builtin.c:2658
+#: builtin.c:2801
#, c-format
msgid "and(%lf, %lf): fractional values will be truncated"
msgstr "and(%lf, %lf): els valors fraccionaris seran truncats"
-#: builtin.c:2684
+#: builtin.c:2827
msgid "or: received non-numeric first argument"
msgstr "or: el primer argument rebut no és numèric"
-#: builtin.c:2686
+#: builtin.c:2829
#, fuzzy
msgid "or: received non-numeric second argument"
msgstr "atan2: el segon argument rebut no és numèric"
-#: builtin.c:2692
+#: builtin.c:2835
#, c-format
msgid "or(%lf, %lf): negative values will give strange results"
msgstr "or(%lf, %lf): els valors negatius donaran resultats estranys"
-#: builtin.c:2694
+#: builtin.c:2837
#, c-format
msgid "or(%lf, %lf): fractional values will be truncated"
msgstr "or(%lf, %lf): els valors fraccionaris seran truncats"
-#: builtin.c:2720
+#: builtin.c:2863
msgid "xor: received non-numeric first argument"
msgstr "xor: el primer argument rebut no és numèric"
-#: builtin.c:2722
+#: builtin.c:2865
#, fuzzy
msgid "xor: received non-numeric second argument"
msgstr "atan2: el segon argument rebut no és numèric"
-#: builtin.c:2728
+#: builtin.c:2871
#, c-format
msgid "xor(%lf, %lf): negative values will give strange results"
msgstr "xor(%lf, %lf): els valors negatius donaran resultats estranys"
-#: builtin.c:2730
+#: builtin.c:2873
#, c-format
msgid "xor(%lf, %lf): fractional values will be truncated"
msgstr "xor(%lf, %lf): els valors fraccionaris seran truncats"
-#: builtin.c:2754
+#: builtin.c:2897
msgid "compl: received non-numeric argument"
msgstr "compl: s'ha rebut un argument que no és numèric"
-#: builtin.c:2760
+#: builtin.c:2903
#, c-format
msgid "compl(%lf): negative value will give strange results"
msgstr "compl(%lf): el valor negatiu donarà resultats estranys"
-#: builtin.c:2762
+#: builtin.c:2905
#, c-format
msgid "compl(%lf): fractional value will be truncated"
msgstr "compl(%lf): el valor fraccionari serà truncat"
-#: builtin.c:2935
+#: builtin.c:3078
#, c-format
msgid "dcgettext: `%s' is not a valid locale category"
msgstr "dcgettext: «%s» no és una categoria local vàlida"
@@ -776,74 +798,74 @@ msgstr "dcgettext: «%s» no és una categoria local vàlida"
msgid "unknown nodetype %d"
msgstr "tipo de node %d desconegut"
-#: eval.c:350
+#: eval.c:353
msgid "buffer overflow in genflags2str"
msgstr "desbordament del cau temporal en genflags2str"
-#: eval.c:382 eval.c:388 profile.c:837
+#: eval.c:385 eval.c:391 profile.c:838
#, c-format
msgid "attempt to use array `%s' in a scalar context"
msgstr "s'ha intentat usar la matriu «%s» en un context escalar"
-#: eval.c:730
+#: eval.c:733
#, fuzzy, c-format
msgid "for loop: array `%s' changed size from %ld to %ld during loop execution"
msgstr ""
"bucle for: la matriu «%s» ha canviat de mida de %d a %d durant l'execució "
"del bucle"
-#: eval.c:751
+#: eval.c:754
msgid "`break' outside a loop is not portable"
msgstr "«break» a fora d'un bucle no és portable"
-#: eval.c:755
+#: eval.c:758
msgid "`break' outside a loop is not allowed"
msgstr "no es permet «break» a fora d'un bucle"
-#: eval.c:772
+#: eval.c:775
msgid "`continue' outside a loop is not portable"
msgstr "«continue» fora d'un bucle no és portable"
-#: eval.c:776
+#: eval.c:779
msgid "`continue' outside a loop is not allowed"
msgstr "no es permet «continue» a fora d'un bucle"
-#: eval.c:810
+#: eval.c:813
msgid "`next' cannot be called from a BEGIN rule"
msgstr "«next» no es pot cridar des d'una regla BEGIN"
-#: eval.c:812
+#: eval.c:815
msgid "`next' cannot be called from an END rule"
msgstr "«next» no es pot cridar des d'una regla FINAL"
-#: eval.c:821
+#: eval.c:824
msgid "`nextfile' cannot be called from a BEGIN rule"
msgstr "«nextfile» no es pot cridar des d'una regla BEGIN"
-#: eval.c:823
+#: eval.c:826
msgid "`nextfile' cannot be called from an END rule"
msgstr "«nextfile» no es pot cridar des d'una regla FINAL"
-#: eval.c:872
+#: eval.c:875
msgid "statement has no effect"
msgstr "la sentència no té efecte"
-#: eval.c:915 eval.c:1873
+#: eval.c:952 eval.c:1893
#, c-format
msgid "can't use function name `%s' as variable or array"
msgstr "no es pot usar el nom de la funció «%s» com a variable o matriu"
-#: eval.c:922 eval.c:928
+#: eval.c:959 eval.c:965
#, c-format
msgid "reference to uninitialized argument `%s'"
msgstr "referència a un argument sense inicialitzar «%s»"
-#: eval.c:937 eval.c:1882
+#: eval.c:974 eval.c:1902
#, c-format
msgid "reference to uninitialized variable `%s'"
msgstr "referència a una variable sense inicialitzar «%s»"
-#: eval.c:1083
+#: eval.c:1120
msgid ""
"concatenation: side effects in one expression have changed the length of "
"another!"
@@ -851,49 +873,44 @@ msgstr ""
"concatenació: els efectes colaterals en una expressió han canviat la "
"longitud d'una altra!"
-#: eval.c:1162
+#: eval.c:1200
msgid "assignment used in conditional context"
msgstr "assignació usada en un context condicional"
-#: eval.c:1252
+#: eval.c:1278
msgid "division by zero attempted"
msgstr "s'ha intentat una divisió per zero"
-#: eval.c:1267
+#: eval.c:1293
#, c-format
msgid "division by zero attempted in `%%'"
msgstr "s'ha intentat una divisió per zero en «%%»"
-#: eval.c:1282 profile.c:713
+#: eval.c:1308 profile.c:714
#, c-format
msgid "illegal type (%s) in tree_eval"
msgstr "tipus il·legal (%s) en tree_eval"
-#: eval.c:1459
+#: eval.c:1471
msgid "division by zero attempted in `/='"
msgstr "s'ha intentat una divisió per zero en «/=»"
-#: eval.c:1477
+#: eval.c:1493
#, c-format
msgid "division by zero attempted in `%%='"
msgstr "s'ha intentat una divisió per zero en «%%=»"
-#: eval.c:1738
+#: eval.c:1758
#, c-format
msgid "function `%s' called with more arguments than declared"
msgstr "s'ha cridat a la funció «%s» amb més arguments dels declarats"
-#: eval.c:1782
+#: eval.c:1802
#, c-format
msgid "function `%s' not defined"
msgstr "la funció «%s» no està definida"
-#: eval.c:1788
-#, c-format
-msgid "function %s called\n"
-msgstr "s'ha cridat a la funció %s\n"
-
-#: eval.c:1845
+#: eval.c:1865
#, c-format
msgid ""
"\n"
@@ -904,43 +921,43 @@ msgstr ""
"\t# Pila de Crides a les Funcions:\n"
"\n"
-#: eval.c:1848
+#: eval.c:1868
#, c-format
msgid "\t# -- main --\n"
msgstr "\t# -- principal --\n"
-#: eval.c:2003
+#: eval.c:2023
msgid "attempt to field reference from non-numeric value"
msgstr "s'ha intentat una referència de camp a partir d'un valor no numèric"
-#: eval.c:2005
+#: eval.c:2025
msgid "attempt to reference from null string"
msgstr "s'ha intentat una referència a partir d'una cadena nul·la"
-#: eval.c:2011
+#: eval.c:2031
#, c-format
msgid "attempt to access field %d"
msgstr "s'ha intentat accedir al camp %d"
-#: eval.c:2032 eval.c:2039 profile.c:934
+#: eval.c:2052 eval.c:2059 profile.c:935
msgid "assignment is not allowed to result of builtin function"
msgstr ""
"no es permet l'assignació per a obtindre un resultat d'una funció interna"
-#: eval.c:2103
+#: eval.c:2123
msgid "`IGNORECASE' is a gawk extension"
msgstr "«IGNORECASE» és una extensió de gawk"
-#: eval.c:2133
+#: eval.c:2153
msgid "`BINMODE' is a gawk extension"
msgstr "«BINMODE» és una extensió de gawk"
-#: eval.c:2255
+#: eval.c:2275
#, c-format
msgid "bad `%sFMT' specification `%s'"
msgstr "«%sFMT» especificació errònia «%s»"
-#: eval.c:2333
+#: eval.c:2353
msgid "turning off `--lint' due to assignment to `LINT'"
msgstr "desactivant «--lint» degut a una assignació a «LINT»"
@@ -988,9 +1005,9 @@ msgid "extension: function name `%s' previously defined"
msgstr "nom de la funció «%s» definida prèviament"
#: ext.c:201
-#, c-format
-msgid "function `%s' defined to take no more than `%d' argument(s)"
-msgstr ""
+#, fuzzy, c-format
+msgid "function `%s' defined to take no more than %d argument(s)"
+msgstr "es defineix la funció «%s» però no s'ha cridat mai"
#: ext.c:204
#, fuzzy, c-format
@@ -1011,561 +1028,566 @@ msgstr ""
msgid "Operation Not Supported"
msgstr "Operació No Suportada"
-#: field.c:315
+#: field.c:326
msgid "NF set to negative value"
msgstr "NF s'inicialitza sobre un valor negatiu"
-#: field.c:808
+#: field.c:819
msgid "split: second argument is not an array"
msgstr "split: el segon argument no és una matriu"
-#: field.c:842
+#: field.c:853
msgid "split: null string for third arg is a gawk extension"
msgstr "split: la cadena nul·la per al tercer argument és una extensió de gawk"
-#: field.c:894
+#: field.c:905
msgid "`FIELDWIDTHS' is a gawk extension"
msgstr "«FIELDWIDTHS» és una extensió de gawk"
-#: field.c:921
+#: field.c:935 field.c:946
#, c-format
-msgid "field %d in FIELDWIDTHS, must be > 0"
-msgstr "el camp %d en FIELDWIDTHS, hauria de ser > 0"
+msgid "invalid FIELDWIDTHS value, near `%s'"
+msgstr ""
-#: field.c:994
+#: field.c:1027
msgid "null string for `FS' is a gawk extension"
msgstr "la cadena nul·la per a «FS» és una extensió de gawk"
-#: getopt.c:692 getopt.c:711
+#: getopt.c:571 getopt.c:590
#, c-format
msgid "%s: option `%s' is ambiguous\n"
msgstr "%s: l'opció «%s» és ambigua\n"
-#: getopt.c:744 getopt.c:748
+#: getopt.c:623 getopt.c:627
#, c-format
msgid "%s: option `--%s' doesn't allow an argument\n"
msgstr "%s: l'opció «--%s» no admet cap argument\n"
-#: getopt.c:757 getopt.c:762
+#: getopt.c:636 getopt.c:641
#, c-format
msgid "%s: option `%c%s' doesn't allow an argument\n"
msgstr "%s: l'opció «%c%s» no admet cap argument\n"
-#: getopt.c:807 getopt.c:829 getopt.c:1159 getopt.c:1181
+#: getopt.c:687 getopt.c:709 getopt.c:1040 getopt.c:1062
#, c-format
msgid "%s: option `%s' requires an argument\n"
msgstr "%s: l'opció «%s» requereix un argument\n"
-#: getopt.c:867 getopt.c:870
+#: getopt.c:747 getopt.c:750
#, c-format
msgid "%s: unrecognized option `--%s'\n"
msgstr "%s: no es reconeix l'opció «--%s»\n"
-#: getopt.c:878 getopt.c:881
+#: getopt.c:758 getopt.c:761
#, c-format
msgid "%s: unrecognized option `%c%s'\n"
msgstr "%s: no es reconeix l'opció «%c%s»\n"
-#: getopt.c:936 getopt.c:939
+#: getopt.c:816 getopt.c:819
#, c-format
msgid "%s: illegal option -- %c\n"
msgstr "%s: opció il·legal -- %c\n"
-#: getopt.c:945 getopt.c:948
+#: getopt.c:825 getopt.c:828
#, c-format
msgid "%s: invalid option -- %c\n"
msgstr "%s: opció no vàlida -- %c\n"
-#: getopt.c:1003 getopt.c:1022 getopt.c:1234 getopt.c:1255 main.c:433
+#: getopt.c:883 getopt.c:902 getopt.c:1115 getopt.c:1136 main.c:448
#, c-format
msgid "%s: option requires an argument -- %c\n"
msgstr "%s: l'opció requereix un argument -- %c\n"
-#: getopt.c:1074 getopt.c:1093
+#: getopt.c:955 getopt.c:974
#, c-format
msgid "%s: option `-W %s' is ambiguous\n"
msgstr "%s: l'opció «-W %s» és ambigua\n"
-#: getopt.c:1117 getopt.c:1138
+#: getopt.c:998 getopt.c:1019
#, c-format
msgid "%s: option `-W %s' doesn't allow an argument\n"
msgstr "%s: l'opció «-W %s» no admet cap argument\n"
-#: io.c:308
+#: io.c:307
#, c-format
msgid "cannot open file `%s' for reading (%s)"
msgstr "no es pot obrir el fitxer «%s» per a lectura (%s)"
-#: io.c:395
+#: io.c:398
#, c-format
msgid "close of fd %d (`%s') failed (%s)"
msgstr "la finalització del descriptor fd %d («%s») ha fallat (%s)"
-#: io.c:533
+#: io.c:536
#, c-format
msgid "invalid tree type %s in redirect()"
msgstr "tipus d'arbre %s no vàlid dintre de redirect()"
-#: io.c:539
+#: io.c:542
#, c-format
msgid "expression in `%s' redirection only has numeric value"
msgstr "l'expressió en la redirecció «%s» solt té un valor numèric"
-#: io.c:545
+#: io.c:548
#, c-format
msgid "expression for `%s' redirection has null string value"
msgstr "l'expressió per a la redirecció «%s» té un valor de cadena nul·la"
-#: io.c:550
+#: io.c:553
#, c-format
msgid "filename `%s' for `%s' redirection may be result of logical expression"
msgstr ""
"el fitxer «%s» per a la redirecció «%s» pot ser resultat d'una expressió "
"lògica"
-#: io.c:588
+#: io.c:591
#, c-format
msgid "unnecessary mixing of `>' and `>>' for file `%.*s'"
msgstr "mescla innecessària de «>» i «>>» per al fitxer «%.*s»"
-#: io.c:640
+#: io.c:643
#, c-format
msgid "can't open pipe `%s' for output (%s)"
msgstr "no es pot obrir la canonada «%s» per a l'eixida (%s)"
-#: io.c:649
+#: io.c:652
#, c-format
msgid "can't open pipe `%s' for input (%s)"
msgstr "no es pot obrir la canonada «%s» per a l'entrada (%s)"
-#: io.c:662
+#: io.c:665
#, c-format
msgid "can't open two way socket `%s' for input/output (%s)"
msgstr ""
"no es pot obrir un socket bidireccional «%s» per a les entrades/eixides (%s)"
-#: io.c:666
+#: io.c:669
#, c-format
msgid "can't open two way pipe `%s' for input/output (%s)"
msgstr ""
"no es pot obrir una canonada bidireccional «%s» per a les entrades/eixides (%"
"s)"
-#: io.c:742
+#: io.c:745
#, c-format
msgid "can't redirect from `%s' (%s)"
msgstr "no es pot redirigir des de «%s» (%s)"
-#: io.c:745
+#: io.c:748
#, c-format
msgid "can't redirect to `%s' (%s)"
msgstr "no es pot redirigir cap a «%s» (%s)"
-#: io.c:784
+#: io.c:787
msgid ""
"reached system limit for open files: starting to multiplex file descriptors"
msgstr ""
"s'ha arribat al límit del sistema per a fitxers oberts: es començarà a "
"multiplexar els descriptors de fitxer"
-#: io.c:800
+#: io.c:803
#, c-format
msgid "close of `%s' failed (%s)."
msgstr "la finalització de «%s» ha fallat (%s)"
-#: io.c:808
+#: io.c:811
msgid "too many pipes or input files open"
msgstr "masses canonades o fitxers d'entrada oberts"
-#: io.c:831
+#: io.c:834
msgid "close: second argument must be `to' or `from'"
msgstr "close: el segon argument hauria de ser «to» o «from»"
-#: io.c:845
+#: io.c:848
#, c-format
msgid "close: `%.*s' is not an open file, pipe or co-process"
msgstr "close: «%.*s» no és un fitxer obert, canonada o co-procés"
-#: io.c:849
+#: io.c:852
msgid "close of redirection that was never opened"
msgstr "finalització d'una redirecció que no s'ha obert"
-#: io.c:945
+#: io.c:948
#, c-format
msgid "close: redirection `%s' not opened with `|&', second argument ignored"
msgstr ""
"close: la redirecció «%s» no s'obre amb «|&», s'ignora el segon argument"
-#: io.c:960
+#: io.c:964
#, c-format
msgid "failure status (%d) on pipe close of `%s' (%s)"
msgstr "estaus de falla (%d) en la finalització de la canonada «%s» (%s)"
-#: io.c:963
+#: io.c:967
#, c-format
msgid "failure status (%d) on file close of `%s' (%s)"
msgstr "estatus de falla (%d) en la finalització del fitxer «%s» (%s)"
-#: io.c:983
+#: io.c:987
#, c-format
msgid "no explicit close of socket `%s' provided"
msgstr "no s'aporta la finalització explícita del socket «%s»"
-#: io.c:986
+#: io.c:990
#, c-format
msgid "no explicit close of co-process `%s' provided"
msgstr "no s'aporta la finalització explícita del co-procés «%s»"
-#: io.c:989
+#: io.c:993
#, c-format
msgid "no explicit close of pipe `%s' provided"
msgstr "no s'aporta la finalització explícita de la canonada «%s»"
-#: io.c:992
+#: io.c:996
#, c-format
msgid "no explicit close of file `%s' provided"
msgstr "no s'aporta la finalització explícita del fitxer «%s»"
-#: io.c:1021 io.c:1075
+#: io.c:1025 io.c:1080 main.c:718 main.c:756
#, c-format
msgid "error writing standard output (%s)"
msgstr "error a l'escriure en l'eixida estàndard (%s)"
-#: io.c:1025 io.c:1079
+#: io.c:1029 io.c:1085
#, c-format
msgid "error writing standard error (%s)"
msgstr "error a l'escriure en l'eixida d'error estàndard (%s)"
-#: io.c:1033
+#: io.c:1037
#, c-format
msgid "pipe flush of `%s' failed (%s)."
msgstr "la neteja de la canonada de «%sx» ha fallat (%s)."
-#: io.c:1036
+#: io.c:1040
#, c-format
msgid "co-process flush of pipe to `%s' failed (%s)."
msgstr "la neteja de la canonada per al co-procés de «%sx» ha fallat (%s)."
-#: io.c:1039
+#: io.c:1043
#, c-format
msgid "file flush of `%s' failed (%s)."
msgstr "la neteja del fitxer «%sx» ha fallat (%s)."
-#: io.c:1198
+#: io.c:1205
msgid "/inet/raw client not ready yet, sorry"
msgstr "el client /inet/raw encara no està a punt, ho sento"
-#: io.c:1200 io.c:1237
+#: io.c:1207 io.c:1244
msgid "only root may use `/inet/raw'."
msgstr "sols el root pot usar «/inet/raw»."
-#: io.c:1235
+#: io.c:1242
msgid "/inet/raw server not ready yet, sorry"
msgstr "el servidor /inet/raw encara no està a punt, ho sento"
-#: io.c:1325
+#: io.c:1332
#, c-format
msgid "no (known) protocol supplied in special filename `%s'"
msgstr "no s'aporta cap protocol (conegut) en el nom del fitxer especial «%s»"
-#: io.c:1343
+#: io.c:1350
#, c-format
msgid "special file name `%s' is incomplete"
msgstr "el nom del fitxer especial «%s» està incomplet"
-#: io.c:1355
+#: io.c:1362
#, c-format
msgid "local port invalid in `%s'"
msgstr "port local no vàlid en «%s»"
-#: io.c:1367
+#: io.c:1374
msgid "must supply a remote hostname to `/inet'"
msgstr "s'ha de subministrar un nom de sistema remot a «/inet»"
-#: io.c:1382
+#: io.c:1389
msgid "must supply a remote port to `/inet'"
msgstr "s'ha de subministrar un port remot a «/inet»"
-#: io.c:1388
+#: io.c:1395
#, c-format
msgid "remote port invalid in `%s'"
msgstr "port remot no vàlid en «%s»"
-#: io.c:1398
+#: io.c:1405
msgid "TCP/IP communications are not supported"
msgstr "les comunicacions TCP/IP no estan suportades"
-#: io.c:1407 io.c:1588
+#: io.c:1414 io.c:1595
#, c-format
msgid "file `%s' is a directory"
msgstr "el fitxer «%s» és un directori"
-#: io.c:1477
+#: io.c:1484
#, c-format
msgid "use `PROCINFO[\"%s\"]' instead of `%s'"
msgstr "useu «PROCINFO[\"%s\"]» en comptes de «%s»"
-#: io.c:1509
+#: io.c:1516
msgid "use `PROCINFO[...]' instead of `/dev/user'"
msgstr "useu «PROCINFO[...]» en comptes de «/dev/user»"
-#: io.c:1574 io.c:1748
+#: io.c:1581 io.c:1763
#, c-format
msgid "could not open `%s', mode `%s'"
msgstr "no es pot obrir «%s», mode «%s»"
-#: io.c:1799
+#: io.c:1814
#, fuzzy, c-format
msgid "close of master pty failed (%s)"
msgstr "ha fallat la finalització de la canonada (%s)"
-#: io.c:1801 io.c:1953 io.c:2105
+#: io.c:1816 io.c:1968 io.c:2119
#, c-format
msgid "close of stdout in child failed (%s)"
msgstr ""
"ha fallat la finalització de l'eixida estàndard en els processos fills (%s)"
-#: io.c:1804
+#: io.c:1819
#, fuzzy, c-format
msgid "moving slave pty to stdout in child failed (dup: %s)"
msgstr ""
"ha fallat la redirecció cap a l'eixida estàndard dels processos fills (dup: %"
"s)"
-#: io.c:1806 io.c:1958
+#: io.c:1821 io.c:1973
#, c-format
msgid "close of stdin in child failed (%s)"
msgstr ""
"ha fallat la finalització de l'entrada estàndard en els processos fills (%s)"
-#: io.c:1809
+#: io.c:1824
#, fuzzy, c-format
msgid "moving slave pty to stdin in child failed (dup: %s)"
msgstr ""
"ha fallat la redirecció cap a l'entrada estàndard dels processos fills (dup: "
"%s)"
-#: io.c:1811 io.c:1830
+#: io.c:1826 io.c:1845
#, fuzzy, c-format
msgid "close of slave pty failed (%s)"
msgstr "ha fallat la finalització de la canonada (%s)"
-#: io.c:1904 io.c:1956 io.c:2086 io.c:2108
+#: io.c:1919 io.c:1971 io.c:2100 io.c:2122
#, c-format
msgid "moving pipe to stdout in child failed (dup: %s)"
msgstr ""
"ha fallat la redirecció cap a l'eixida estàndard dels processos fills (dup: %"
"s)"
-#: io.c:1908 io.c:1961
+#: io.c:1923 io.c:1976
#, c-format
msgid "moving pipe to stdin in child failed (dup: %s)"
msgstr ""
"ha fallat la redirecció cap a l'entrada estàndard dels processos fills (dup: "
"%s)"
-#: io.c:1925 io.c:2099
+#: io.c:1940 io.c:2113
msgid "restoring stdout in parent process failed\n"
msgstr "ha fallat la restauració de l'eixida estàndard en el procés pare\n"
-#: io.c:1930
+#: io.c:1945
msgid "restoring stdin in parent process failed\n"
msgstr "ha fallat la restauració de l'entrada estàndard en el procés pare\n"
-#: io.c:1964 io.c:2110 io.c:2121
+#: io.c:1979 io.c:2124 io.c:2135
#, c-format
msgid "close of pipe failed (%s)"
msgstr "ha fallat la finalització de la canonada (%s)"
-#: io.c:2009
+#: io.c:2024
msgid "`|&' not supported"
msgstr "«|&» no està suportat"
-#: io.c:2076
+#: io.c:2090
#, c-format
msgid "cannot open pipe `%s' (%s)"
msgstr "no es pot obrir la canonada «%s» (%s)"
-#: io.c:2117
+#: io.c:2131
#, c-format
msgid "cannot create child process for `%s' (fork: %s)"
msgstr "no es pot crear el procés fill per a «%s» (fork: %s)"
-#: io.c:2460
+#: io.c:2506
#, c-format
msgid "data file `%s' is empty"
msgstr "el fitxer de dades «%s» està buit"
-#: io.c:2503 io.c:2511
+#: io.c:2547 io.c:2555
msgid "could not allocate more input memory"
msgstr ""
-#: io.c:2869 io.c:2932
+#: io.c:2919 io.c:2984
#, c-format
msgid "error reading input file `%s': %s"
msgstr "error en llegir el fitxer d'entrada «%s»: %s"
-#: io.c:3057
+#: io.c:3109
msgid "multicharacter value of `RS' is a gawk extension"
msgstr "el valor multicaràcter de «RS» és una extensió de gawk"
-#: main.c:323
+#: main.c:338
msgid "`-m[fr]' option irrelevant in gawk"
msgstr "l'opción «-m[fr]» és irrellevant en gawk"
-#: main.c:325
+#: main.c:340
msgid "-m option usage: `-m[fr] nnn'"
msgstr "ús de l'opció -m: «-m[fr] nnn»"
-#: main.c:342
+#: main.c:357
#, c-format
msgid "%s: option `-W %s' unrecognized, ignored\n"
msgstr "%s: no es reconeix l'opció «-W %s», serà ignorada\n"
-#: main.c:379
+#: main.c:394
msgid "empty argument to `--source' ignored"
msgstr "s'igonarà l'argument buit per a l'opció «--source»"
-#: main.c:450
+#: main.c:467
msgid "environment variable `POSIXLY_CORRECT' set: turning on `--posix'"
msgstr ""
"la variable d'entorn «POSIXLY_CORRECT» està establerta: usant «--posix»"
-#: main.c:455
+#: main.c:472
msgid "`--posix' overrides `--traditional'"
msgstr "«--posix» solapa a «--traditional»"
-#: main.c:466
+#: main.c:483
msgid "`--posix'/`--traditional' overrides `--non-decimal-data'"
msgstr "«--posix» i «--traditional» solapen a «--non-decimal-data»"
-#: main.c:470
+#: main.c:487
#, fuzzy, c-format
msgid "running %s setuid root may be a security problem"
msgstr "executar %s com a setuid root pot ser un problema de seguretat"
-#: main.c:511
+#: main.c:528
#, fuzzy, c-format
msgid "can't set binary mode on stdin (%s)"
msgstr "no es pot establir el mode en l'entrada estàndard (%s)"
-#: main.c:514
+#: main.c:531
#, fuzzy, c-format
msgid "can't set binary mode on stdout (%s)"
msgstr "no es pot establir el mode en l'eixida estàndard (%s)"
-#: main.c:516
+#: main.c:533
#, fuzzy, c-format
msgid "can't set binary mode on stderr (%s)"
msgstr "no es pot establir el mode en l'eixida d'error estàndard (%s)"
-#: main.c:546
+#: main.c:572
msgid "no program text at all!"
msgstr "no hi ha cap text per al programa!"
-#: main.c:623
+#: main.c:665
#, c-format
msgid "Usage: %s [POSIX or GNU style options] -f progfile [--] file ...\n"
msgstr "Ús: %s [opcions d'estil POSIX o GNU] -f fitx_prog [--] fitxer ...\n"
-#: main.c:625
+#: main.c:667
#, c-format
msgid "Usage: %s [POSIX or GNU style options] [--] %cprogram%c file ...\n"
msgstr "Ús: %s [opcions d'estil POSIX o GNU] [--] %cprograma%c fitxer ...\n"
-#: main.c:630
+#: main.c:672
msgid "POSIX options:\t\tGNU long options:\n"
msgstr "Opcions POSIX:\t\tOpcions llargues GNU:\n"
-#: main.c:631
+#: main.c:673
msgid "\t-f progfile\t\t--file=progfile\n"
msgstr "\t-f fitx_prog\t\t--file=fitx_prog\n"
-#: main.c:632
+#: main.c:674
msgid "\t-F fs\t\t\t--field-separator=fs\n"
msgstr "\t-F fs\t\t\t--field-separator=fs (fs=sep_camp)\n"
-#: main.c:633
+#: main.c:675
msgid "\t-v var=val\t\t--assign=var=val\n"
msgstr "\t-v var=valor\t\t--assign=var=valor\n"
-#: main.c:634
+#: main.c:676
msgid "\t-m[fr] val\n"
msgstr "\t-m[fr] valor\n"
-#: main.c:635
+#: main.c:677
msgid "\t-W compat\t\t--compat\n"
msgstr "\t-W compat\t\t--compat\n"
-#: main.c:636
+#: main.c:678
msgid "\t-W copyleft\t\t--copyleft\n"
msgstr "\t-W copyleft\t\t--copyleft\n"
-#: main.c:637
+#: main.c:679
msgid "\t-W copyright\t\t--copyright\n"
msgstr "\t-W copyright\t\t--copyright\n"
-#: main.c:638
+#: main.c:680
msgid "\t-W dump-variables[=file]\t--dump-variables[=file]\n"
msgstr "\t-W dump-variables[=fitxer] --dump-variables[=fitxer]\n"
-#: main.c:639
+#: main.c:681
+#, fuzzy
+msgid "\t-W exec=file\t\t--exec=file\n"
+msgstr "\t-W profile[=fitxer]\t--profile[=fitxer]\n"
+
+#: main.c:682
msgid "\t-W gen-po\t\t--gen-po\n"
msgstr "\t-W gen-po\t\t--gen-po\n"
-#: main.c:640
+#: main.c:683
msgid "\t-W help\t\t\t--help\n"
msgstr "\t-W help\t\t\t--help\n"
-#: main.c:641
+#: main.c:684
msgid "\t-W lint[=fatal]\t\t--lint[=fatal]\n"
msgstr "\t-W lint[=fatal]\t\t--lint[=fatal]\n"
-#: main.c:642
+#: main.c:685
msgid "\t-W lint-old\t\t--lint-old\n"
msgstr "\t-W lint-old\t\t--lint-old\n"
-#: main.c:643
+#: main.c:686
msgid "\t-W non-decimal-data\t--non-decimal-data\n"
msgstr "\t-W non-decimal-data\t--non-decimal-data\n"
-#: main.c:645
+#: main.c:688
msgid "\t-W nostalgia\t\t--nostalgia\n"
msgstr "\t-W nostalgia\t\t--nostalgia\n"
-#: main.c:648
+#: main.c:691
msgid "\t-W parsedebug\t\t--parsedebug\n"
msgstr "\t-W parsedebug\t\t--parsedebug\n"
-#: main.c:650
+#: main.c:693
msgid "\t-W profile[=file]\t--profile[=file]\n"
msgstr "\t-W profile[=fitxer]\t--profile[=fitxer]\n"
-#: main.c:651
+#: main.c:694
msgid "\t-W posix\t\t--posix\n"
msgstr "\t-W posix\t\t--posix\n"
-#: main.c:652
+#: main.c:695
msgid "\t-W re-interval\t\t--re-interval\n"
msgstr "\t-W re-interval\t\t--re-interval\n"
-#: main.c:653
+#: main.c:696
msgid "\t-W source=program-text\t--source=program-text\n"
msgstr "\t-W source=text_prog\t--source=text_prog\n"
-#: main.c:654
+#: main.c:697
msgid "\t-W traditional\t\t--traditional\n"
msgstr "\t-W traditional\t\t--traditional\n"
-#: main.c:655
+#: main.c:698
msgid "\t-W usage\t\t--usage\n"
msgstr "\t-W usage\t\t--usage\n"
-#: main.c:656
+#: main.c:699
msgid "\t-W version\t\t--version\n"
msgstr "\t-W version\t\t--version\n"
-#: main.c:660
+#: main.c:703
#, fuzzy
msgid ""
"\n"
@@ -1574,21 +1596,21 @@ msgid ""
"\n"
msgstr "a la secció «Reporting Problems and Bugs» de la versió impresa.\n"
-#: main.c:664
+#: main.c:707
msgid ""
"gawk is a pattern scanning and processing language.\n"
"By default it reads standard input and writes standard output.\n"
"\n"
msgstr ""
-#: main.c:668
+#: main.c:711
msgid ""
"Examples:\n"
"\tgawk '{ sum += $1 }; END { print sum }' file\n"
"\tgawk -F: '{ print $1 }' /etc/passwd\n"
msgstr ""
-#: main.c:685
+#: main.c:731
#, c-format
msgid ""
"Copyright (C) 1989, 1991-%d Free Software Foundation.\n"
@@ -1607,7 +1629,7 @@ msgstr ""
"Llicència, o (a la vostra elecció) qualsevol versió posterior.\n"
"\n"
-#: main.c:693
+#: main.c:739
msgid ""
"This program is distributed in the hope that it will be useful,\n"
"but WITHOUT ANY WARRANTY; without even the implied warranty of\n"
@@ -1621,56 +1643,58 @@ msgstr ""
"Per a més detalls consulteu la Llicència Pública General de GNU.\n"
"\n"
-#: main.c:699
+#: main.c:745
msgid ""
"You should have received a copy of the GNU General Public License\n"
"along with this program; if not, write to the Free Software\n"
-"Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.\n"
+"Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, "
+"USA.\n"
msgstr ""
"Junt amb aquest programa hauríeu d'haber rebut una còpia de la Llicència\n"
"Pública General de GNU; si no és així, escriviu a la Free Software\n"
-"Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.\n"
+"Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, "
+"USA.\n"
-#: main.c:733
+#: main.c:781
msgid "-Ft does not set FS to tab in POSIX awk"
msgstr "-Ft no permet inicialitzar FS a un tabulador en la versió POSIX de awk"
-#: main.c:962
+#: main.c:1018
#, c-format
msgid ""
"%s: `%s' argument to `-v' not in `var=value' form\n"
"\n"
msgstr ""
-#: main.c:982
+#: main.c:1038
#, c-format
msgid "`%s' is not a legal variable name"
msgstr ""
-#: main.c:985
+#: main.c:1041
#, c-format
msgid "`%s' is not a variable name, looking for file `%s=%s'"
msgstr ""
-#: main.c:1018
+#: main.c:1074
msgid "floating point exception"
msgstr "excepció de coma flotant"
-#: main.c:1025
+#: main.c:1081
msgid "fatal error: internal error"
msgstr "error fatal: error intern"
-#: main.c:1075
+#: main.c:1132
#, c-format
msgid "no pre-opened fd %d"
msgstr "no s'ha pre-obert el descriptor fd per a %d"
-#: main.c:1082
+#: main.c:1139
#, c-format
msgid "could not pre-open /dev/null for fd %d"
msgstr "no es pot pre-obrir /dev/null per al descriptor fd %d"
-#: main.c:1105 main.c:1114
+#: main.c:1162 main.c:1171
#, c-format
msgid "could not find groups: %s"
msgstr "no es poden trobar els grups: %s"
@@ -1692,23 +1716,23 @@ msgstr "Error: "
msgid "fatal: "
msgstr "Fatal: "
-#: node.c:58 node.c:65 node.c:74 node.c:88 node.c:115
+#: node.c:59 node.c:66 node.c:75 node.c:90 node.c:119
msgid "can't convert string to float"
msgstr "no es pot convertir la cadena a coma flotant"
-#: node.c:357
+#: node.c:414
msgid "backslash at end of string"
msgstr "barra invertida al final de la cadena"
-#: node.c:541
+#: node.c:604
msgid "POSIX does not allow `\\x' escapes"
msgstr "POSIX no permet seqüències d'escapada «\\x»"
-#: node.c:547
+#: node.c:610
msgid "no hex digits in `\\x' escape sequence"
msgstr "no hi ha dígits hexadecimals en la seqüència d'escapada «\\x»"
-#: node.c:581
+#: node.c:644
#, c-format
msgid "escape sequence `\\%c' treated as plain `%c'"
msgstr "la seqüència d'escapada «\\%c» és tractada com a una simple «%c»"
@@ -1728,21 +1752,21 @@ msgstr "no es pot obrir «%s» per a escriptura: %s"
msgid "internal error: %s with null vname"
msgstr "error intern: Node_var amb vname nul"
-#: profile.c:530
+#: profile.c:531
msgid "# treated internally as `delete'"
msgstr ""
-#: profile.c:1167
+#: profile.c:1168
#, c-format
msgid "# this is a dynamically loaded extension function"
msgstr ""
-#: profile.c:1198
+#: profile.c:1199
#, c-format
msgid "\t# gawk profile, created %s\n"
msgstr "\t# perfil gawk, creat %s\n"
-#: profile.c:1201
+#: profile.c:1202
#, c-format
msgid ""
"\t# BEGIN block(s)\n"
@@ -1751,7 +1775,7 @@ msgstr ""
"\t# Bloc(s) INICI\n"
"\n"
-#: profile.c:1211
+#: profile.c:1212
#, c-format
msgid ""
"\t# Rule(s)\n"
@@ -1760,7 +1784,7 @@ msgstr ""
"\t# Regla(es)\n"
"\n"
-#: profile.c:1217
+#: profile.c:1218
#, c-format
msgid ""
"\t# END block(s)\n"
@@ -1769,7 +1793,7 @@ msgstr ""
"\t# Bloc(s) FINAL\n"
"\n"
-#: profile.c:1237
+#: profile.c:1238
#, c-format
msgid ""
"\n"
@@ -1778,83 +1802,89 @@ msgstr ""
"\n"
"\t# Funcions, llistades alfabèticament\n"
-#: profile.c:1452
+#: profile.c:1453
#, c-format
msgid "unexpected type %s in prec_level"
msgstr "tipus %s inesperat en prec_level"
-#: regcomp.c:150
+#: regcomp.c:160
msgid "Success"
msgstr "Èxit"
-#: regcomp.c:153
+#: regcomp.c:163
msgid "No match"
msgstr "No hi ha concordança"
-#: regcomp.c:156
+#: regcomp.c:166
msgid "Invalid regular expression"
msgstr "Expressió regular no vàlida"
-#: regcomp.c:159
+#: regcomp.c:169
msgid "Invalid collation character"
msgstr "Caràcter de comparació no vàlid"
-#: regcomp.c:162
+#: regcomp.c:172
msgid "Invalid character class name"
msgstr "Nom de classe de caràcters no vàlid"
-#: regcomp.c:165
+#: regcomp.c:175
msgid "Trailing backslash"
msgstr "Barra invertida extra al final"
-#: regcomp.c:168
+#: regcomp.c:178
msgid "Invalid back reference"
msgstr "Referència cap enradera no vàlida"
-#: regcomp.c:171
+#: regcomp.c:181
msgid "Unmatched [ or [^"
msgstr "[ o [^ desemparellats"
-#: regcomp.c:174
+#: regcomp.c:184
msgid "Unmatched ( or \\("
msgstr "( o \\( desemparellats"
-#: regcomp.c:177
+#: regcomp.c:187
msgid "Unmatched \\{"
msgstr "\\{ desemparellat"
-#: regcomp.c:180
+#: regcomp.c:190
msgid "Invalid content of \\{\\}"
msgstr "Contingut no vàlid de \\{\\}"
-#: regcomp.c:183
+#: regcomp.c:193
msgid "Invalid range end"
msgstr "Final de rang no vàlid"
-#: regcomp.c:186
+#: regcomp.c:196
msgid "Memory exhausted"
msgstr "Memòria exhaurida"
-#: regcomp.c:189
+#: regcomp.c:199
msgid "Invalid preceding regular expression"
msgstr "Expressió regular precedent no vàlida"
-#: regcomp.c:192
+#: regcomp.c:202
msgid "Premature end of regular expression"
msgstr "Fí prematura de l'expressió regular"
-#: regcomp.c:195
+#: regcomp.c:205
msgid "Regular expression too big"
msgstr "L'expressió regular és massa gran"
-#: regcomp.c:198
+#: regcomp.c:208
msgid "Unmatched ) or \\)"
msgstr ") o \\) desemparellats"
-#: regcomp.c:668
+#: regcomp.c:688
msgid "No previous regular expression"
msgstr "No hi ha una expressió regular prèvia"
+#~ msgid "function %s called\n"
+#~ msgstr "s'ha cridat a la funció %s\n"
+
+#~ msgid "field %d in FIELDWIDTHS, must be > 0"
+#~ msgstr "el camp %d en FIELDWIDTHS, hauria de ser > 0"
+
#, fuzzy
#~ msgid "or used as a variable or an array"
#~ msgstr "no es pot usar el nom de la funció «%s» com a variable o matriu"
diff --git a/po/da.gmo b/po/da.gmo
index e5d3a141..d5792903 100644
--- a/po/da.gmo
+++ b/po/da.gmo
Binary files differ
diff --git a/po/da.po b/po/da.po
index 484ee46c..64063fbc 100644
--- a/po/da.po
+++ b/po/da.po
@@ -6,7 +6,7 @@ msgid ""
msgstr ""
"Project-Id-Version: gawk 3.1.31\n"
"Report-Msgid-Bugs-To: arnold@skeeve.com\n"
-"POT-Creation-Date: 2004-07-15 13:02+0300\n"
+"POT-Creation-Date: 2005-07-06 17:20+0300\n"
"PO-Revision-Date: 2002-11-09 10:09+0100\n"
"Last-Translator: Keld Simonsen <keld@dkuug.dk>\n"
"Language-Team: Danish <dansk@klid.dk>\n"
@@ -89,287 +89,302 @@ msgstr "END-blok skal have en handlingsdel"
msgid "`%s' is a built-in function, it cannot be redefined"
msgstr "\"%s\" er en indbygget funktion, den kan ikke omdefineres"
-#: awkgram.y:314
+#: awkgram.y:313
+#, fuzzy
+msgid "regexp constant `//' looks like a C++ comment, but is not"
+msgstr "regexp-konstanten \"/%s/\" ser ud som en C-kommentar, men er det ikke"
+
+#: awkgram.y:316
#, c-format
msgid "regexp constant `/%s/' looks like a C comment, but is not"
msgstr "regexp-konstanten \"/%s/\" ser ud som en C-kommentar, men er det ikke"
-#: awkgram.y:341 awkgram.y:619
+#: awkgram.y:343 awkgram.y:623
msgid "statement may have no effect"
msgstr "kommandoen har måske ikke nogen effekt"
-#: awkgram.y:436 awkgram.y:456
+#: awkgram.y:440 awkgram.y:460
#, fuzzy, c-format
msgid "`%s' used in %s action"
msgstr "\"next\" brugt i BEGIN- eller END-handling"
-#: awkgram.y:449 awkgram.y:452
+#: awkgram.y:453 awkgram.y:456
msgid "`nextfile' is a gawk extension"
msgstr "\"nextfile\" er en gawk-udvidelse"
-#: awkgram.y:466
+#: awkgram.y:470
msgid "`return' used outside function context"
msgstr "\"return\" brugt uden for funktion"
-#: awkgram.y:508
+#: awkgram.y:512
msgid "plain `print' in BEGIN or END rule should probably be `print \"\"'"
msgstr ""
"alenestående \"print\" i BEGIN eller END-regel bør muligvis være 'print \"\"'"
-#: awkgram.y:521 awkgram.y:528
+#: awkgram.y:525 awkgram.y:532
msgid "`delete array' is a gawk extension"
msgstr "\"delete array\" er en gawk-udvidelse"
-#: awkgram.y:536 awkgram.y:543
+#: awkgram.y:540 awkgram.y:547
#, fuzzy
msgid "`delete(array)' is a non-portable tawk extension"
msgstr "\"delete array\" er en gawk-udvidelse"
-#: awkgram.y:587
+#: awkgram.y:591
#, c-format
msgid "duplicate case values in switch body: %s"
msgstr ""
-#: awkgram.y:597
+#: awkgram.y:601
msgid "Duplicate `default' detected in switch body"
msgstr ""
-#: awkgram.y:686
+#: awkgram.y:690
msgid "multistage two-way pipelines don't work"
msgstr "flertrins dobbeltrettede datakanaler fungerer ikke"
-#: awkgram.y:777
+#: awkgram.y:781
msgid "regular expression on right of assignment"
msgstr "regulært udtryk i højreleddet af en tildeling"
-#: awkgram.y:800
+#: awkgram.y:804
msgid "regular expression on left of `~' or `!~' operator"
msgstr "regulært udtryk på venstre side af en \"~\"- eller \"!~\"-operator"
-#: awkgram.y:808
+#: awkgram.y:812
msgid "regular expression on right of comparison"
msgstr "regulært udtryk i højreleddet af en sammenligning"
-#: awkgram.y:875
+#: awkgram.y:879
msgid "non-redirected `getline' undefined inside END action"
msgstr "ikke-omdirigeret \"getline\" udefineret inde i END-handling"
-#: awkgram.y:902
+#: awkgram.y:906
msgid "call of `length' without parentheses is not portable"
msgstr "kald af \"length\" uden parenteser er ikke portabelt"
-#: awkgram.y:905
+#: awkgram.y:909
msgid "call of `length' without parentheses is deprecated by POSIX"
msgstr "kald af \"length\" uden parenteser er forældet ifølge POSIX"
-#: awkgram.y:958
+#: awkgram.y:962
msgid "use of non-array as array"
msgstr ""
-#: awkgram.y:960
+#: awkgram.y:964
msgid "invalid subscript expression"
msgstr "ugyldig indeksudtryk"
-#: awkgram.y:1158
+#: awkgram.y:1171
#, fuzzy
msgid "unexpected newline or end of string"
msgstr "uventet nylinjetegn"
-#: awkgram.y:1254
+#: awkgram.y:1267
msgid "empty program text on command line"
msgstr "tom programtekst på kommandolinjen"
-#: awkgram.y:1307
+#: awkgram.y:1320
#, c-format
msgid "can't open source file `%s' for reading (%s)"
msgstr "kan ikke åbne kildefilen \"%s\" for læsning (%s)"
-#: awkgram.y:1384
+#: awkgram.y:1397
#, c-format
msgid "can't read sourcefile `%s' (%s)"
msgstr "kan ikke læse kildefilen \"%s\" (%s)"
-#: awkgram.y:1392
+#: awkgram.y:1405
#, c-format
msgid "source file `%s' is empty"
msgstr "kildefilen \"%s\" er tom"
-#: awkgram.y:1590 awkgram.y:1700 awkgram.y:1718 awkgram.y:2068 awkgram.y:2153
+#: awkgram.y:1596 awkgram.y:1718 awkgram.y:1736 awkgram.y:2107 awkgram.y:2194
msgid "source file does not end in newline"
msgstr "kildefilen slutter ikke med en ny linje"
-#: awkgram.y:1654
+#: awkgram.y:1658
msgid "unterminated regexp ends with `\\' at end of file"
msgstr "uafsluttet regulært udtryk slutter med \"\\\" i slutningen af filen"
-#: awkgram.y:1674
+#: awkgram.y:1682
+#, c-format
+msgid "%s: %d: tawk regex modifier `/.../%c' doesn't work in gawk"
+msgstr ""
+
+#: awkgram.y:1686
+#, c-format
+msgid "tawk regex modifier `/.../%c' doesn't work in gawk"
+msgstr ""
+
+#: awkgram.y:1693
msgid "unterminated regexp"
msgstr "uafsluttet regulært udtryk"
-#: awkgram.y:1677
+#: awkgram.y:1696
msgid "unterminated regexp at end of file"
msgstr "uafsluttet regulært udtryk i slutningen af filen"
-#: awkgram.y:1744
+#: awkgram.y:1762
msgid "use of `\\ #...' line continuation is not portable"
msgstr "Brug af \"\\ #...\" for linjefortsættelse er ikke portabelt"
-#: awkgram.y:1756
+#: awkgram.y:1774
msgid "backslash not last character on line"
msgstr "sidste tegn på linjen er ikke en omvendt skråstreg"
-#: awkgram.y:1801
+#: awkgram.y:1819
msgid "POSIX does not allow operator `**='"
msgstr "POSIX tillader ikke operatoren \"**=\""
-#: awkgram.y:1803
+#: awkgram.y:1821
msgid "old awk does not support operator `**='"
msgstr "gamle awk understøtter ikke operatoren \"**=\""
-#: awkgram.y:1812
+#: awkgram.y:1830
msgid "POSIX does not allow operator `**'"
msgstr "POSIX tillader ikke operatoren \"**\""
-#: awkgram.y:1814
+#: awkgram.y:1832
msgid "old awk does not support operator `**'"
msgstr "gamle awk understøtter ikke operatoren \"**\""
-#: awkgram.y:1845
+#: awkgram.y:1863
msgid "operator `^=' is not supported in old awk"
msgstr "operatoren \"^=\" understøttes ikke i gamle awk"
-#: awkgram.y:1853
+#: awkgram.y:1871
msgid "operator `^' is not supported in old awk"
msgstr "operatoren \"^\" understøttes ikke i gamle awk"
-#: awkgram.y:1937 awkgram.y:1954
+#: awkgram.y:1955 awkgram.y:1970
msgid "unterminated string"
msgstr "uafsluttet streng"
-#: awkgram.y:2114
+#: awkgram.y:2155
#, c-format
msgid "invalid char '%c' in expression"
msgstr "ugyldigt tegn \"%c\" i udtryk"
-#: awkgram.y:2162
+#: awkgram.y:2203
#, c-format
msgid "`%s' is a gawk extension"
msgstr "\"%s\" er en gawk-udvidelse"
-#: awkgram.y:2165
+#: awkgram.y:2206
#, c-format
msgid "`%s' is a Bell Labs extension"
msgstr "\"%s\" er en Bell Labs-udvidelse"
-#: awkgram.y:2168
+#: awkgram.y:2209
#, c-format
msgid "POSIX does not allow `%s'"
msgstr "POSIX tillader ikke \"%s\""
-#: awkgram.y:2172
+#: awkgram.y:2213
#, c-format
msgid "`%s' is not supported in old awk"
msgstr "\"%s\" understøttes ikke i gamle awk"
-#: awkgram.y:2198
+#: awkgram.y:2239
msgid "`goto' considered harmful!\n"
msgstr "\"goto\" anses for skadlig!\n"
-#: awkgram.y:2260
+#: awkgram.y:2301
#, c-format
msgid "%d is invalid as number of arguments for %s"
msgstr "%d er et ugyldigt antal argumenter for %s"
-#: awkgram.y:2279 awkgram.y:2282
+#: awkgram.y:2320 awkgram.y:2323
msgid "match: third argument is a gawk extension"
msgstr "match: tredje argument er en gawk-udvidelse"
-#: awkgram.y:2295
+#: awkgram.y:2336
#, c-format
msgid "%s: string literal as last arg of substitute has no effect"
msgstr ""
"%s: bogstavelig streng som sidste argument til erstatning har ingen effekt"
-#: awkgram.y:2298
+#: awkgram.y:2339
#, fuzzy, c-format
msgid "%s third parameter is not a changeable object"
msgstr "sub: tredje argument er ikke et ændringsbart objekt"
-#: awkgram.y:2325 awkgram.y:2328
+#: awkgram.y:2366 awkgram.y:2369
msgid "close: second argument is a gawk extension"
msgstr "close: andet argument er en gawk-udvidelse"
-#: awkgram.y:2338
+#: awkgram.y:2379
msgid "use of dcgettext(_\"...\") is incorrect: remove leading underscore"
msgstr ""
"brug af dcgettext(_\"...\") er fejlagtigt: fjern det indledende "
"understregningstegn"
-#: awkgram.y:2353
+#: awkgram.y:2394
#, fuzzy
msgid "use of dcngettext(_\"...\") is incorrect: remove leading underscore"
msgstr ""
"brug af dcgettext(_\"...\") er fejlagtigt: fjern det indledende "
"understregningstegn"
-#: awkgram.y:2424
+#: awkgram.y:2465
#, c-format
msgid "function `%s': parameter #%d, `%s', duplicates parameter #%d"
msgstr "funktionen \"%s\": parameter %d, \"%s\", er samme som parameter %d"
-#: awkgram.y:2457
+#: awkgram.y:2498
#, c-format
msgid "function `%s': parameter `%s' shadows global variable"
msgstr "funktionen \"%s\": parameteren \"%s\" overskygger en global variabel"
-#: awkgram.y:2569
+#: awkgram.y:2610
#, c-format
msgid "could not open `%s' for writing (%s)"
msgstr "kunne ikke åbne \"%s\" for skrivning (%s)"
-#: awkgram.y:2570 profile.c:93
+#: awkgram.y:2611 profile.c:93
msgid "sending profile to standard error"
msgstr "sender profilen til standard fejl"
-#: awkgram.y:2602
+#: awkgram.y:2643
#, c-format
msgid "%s: close failed (%s)"
msgstr "%s: mislykkedes at lukke (%s)"
-#: awkgram.y:2723
+#: awkgram.y:2764
msgid "shadow_funcs() called twice!"
msgstr "shadow_funcs() kaldt to gange!"
-#: awkgram.y:2750
+#: awkgram.y:2791
msgid "there were shadowed variables."
msgstr ""
-#: awkgram.y:2823
+#: awkgram.y:2864
#, c-format
msgid "function `%s': can't use function name as parameter name"
msgstr "funktionen \"%s\": kan ikke bruge funktionsnavn som parameternavn"
-#: awkgram.y:2833
+#: awkgram.y:2874
#, c-format
msgid "function name `%s' previously defined"
msgstr "funktionsnavnet \"%s\" er allerede defineret"
-#: awkgram.y:2984 awkgram.y:2990
+#: awkgram.y:3025 awkgram.y:3031
#, c-format
msgid "function `%s' called but never defined"
msgstr "funktionen \"%s\" kaldt, men aldrig defineret"
-#: awkgram.y:2993
+#: awkgram.y:3034
#, c-format
msgid "function `%s' defined but never called"
msgstr "funktionen \"%s\" defineret, men aldrig kaldt"
-#: awkgram.y:3020
+#: awkgram.y:3061
#, c-format
msgid "regexp constant for parameter #%d yields boolean value"
msgstr "konstant regulært udtryk for parameter %d giver en boolesk værdi"
-#: awkgram.y:3033
+#: awkgram.y:3105
#, fuzzy, c-format
msgid ""
"function `%s' called with space between name and `(',\n"
@@ -378,192 +393,197 @@ msgstr ""
"funktionen \"%s\" kaldt med blanktegn mellem navnet og \"(\",\n"
"%s"
-#: builtin.c:149
+#: builtin.c:145
#, c-format
msgid "%s to \"%s\" failed (%s)"
msgstr "%s til \"%s\" mislykkedes (%s)"
-#: builtin.c:150
+#: builtin.c:146
msgid "standard output"
msgstr "standard ud"
-#: builtin.c:151
+#: builtin.c:147
msgid "reason unknown"
msgstr "ukendt årsag"
-#: builtin.c:164
+#: builtin.c:160
msgid "exp: received non-numeric argument"
msgstr "exp: fik et ikke-numerisk argument"
-#: builtin.c:170
+#: builtin.c:166
#, c-format
msgid "exp: argument %g is out of range"
msgstr "exp: argumentet %g er uden for tilladt område"
-#: builtin.c:228
+#: builtin.c:224
#, c-format
msgid "fflush: cannot flush: pipe `%s' opened for reading, not writing"
msgstr ""
"fflush: kan ikke spole: datakanalen \"%s\" åbnet for læsning, ikke skrivning"
-#: builtin.c:231
+#: builtin.c:227
#, c-format
msgid "fflush: cannot flush: file `%s' opened for reading, not writing"
msgstr "fflush: kan ikke spole: filen \"%s\" åbnet for læsning, ikke skrivning"
-#: builtin.c:243
+#: builtin.c:239
#, c-format
msgid "fflush: `%s' is not an open file, pipe or co-process"
msgstr "fflush: \"%s\" er ikke en åben fil, datakanal eller ko proces"
-#: builtin.c:338
+#: builtin.c:332
msgid "index: received non-string first argument"
msgstr "indeks: første argument er ikke en streng"
-#: builtin.c:340
+#: builtin.c:334
msgid "index: received non-string second argument"
msgstr "indeks: andet argument er ikke en streng"
-#: builtin.c:454
+#: builtin.c:449
msgid "int: received non-numeric argument"
msgstr "int: fik et ikke-numerisk argument"
-#: builtin.c:471
+#: builtin.c:472
+#, fuzzy
+msgid "`length(array)' is a gawk extension"
+msgstr "\"delete array\" er en gawk-udvidelse"
+
+#: builtin.c:481
msgid "length: received non-string argument"
msgstr "length: fik et argument som ikke er en streng"
-#: builtin.c:487
+#: builtin.c:506
msgid "log: received non-numeric argument"
msgstr "log: fik et ikke-numerisk argument"
-#: builtin.c:490
+#: builtin.c:509
#, c-format
msgid "log: received negative argument %g"
msgstr "log: fik et negativt argument %g"
-#: builtin.c:654 builtin.c:657
+#: builtin.c:673 builtin.c:676
msgid "must use `count$' on all formats or none"
msgstr ""
-#: builtin.c:759
+#: builtin.c:778
msgid "`$' is not permitted in awk formats"
msgstr "\"$\" tillades ikke i awkformat"
-#: builtin.c:765
+#: builtin.c:784
msgid "arg count with `$' must be > 0"
msgstr "argumentantallet med \"$\" skal være > 0"
-#: builtin.c:767
+#: builtin.c:786
#, fuzzy, c-format
msgid "arg count %ld greater than total number of supplied arguments"
msgstr "argumentantallet %d er større end antal givne argumenter"
-#: builtin.c:769
+#: builtin.c:788
msgid "`$' not permitted after period in format"
msgstr "\"$\" tillades ikke efter et punktum i formatet"
-#: builtin.c:782
+#: builtin.c:801
msgid "no `$' supplied for positional field width or precision"
msgstr "intet \"$\" angivet for positionsangivet feltbredde eller præcision"
-#: builtin.c:848
+#: builtin.c:867
msgid "`l' is meaningless in awk formats; ignored"
msgstr "\"l\" er meningsløst i awk-formater, ignoreret"
-#: builtin.c:852
+#: builtin.c:871
msgid "`l' is not permitted in POSIX awk formats"
msgstr "\"l\" tillades ikke i POSIX awk-formater"
-#: builtin.c:863
+#: builtin.c:882
msgid "`L' is meaningless in awk formats; ignored"
msgstr "\"L\" er meningsløst i awk-formater, ignoreret"
-#: builtin.c:867
+#: builtin.c:886
msgid "`L' is not permitted in POSIX awk formats"
msgstr "\"L\" tillades ikke i POSIX awk-formater"
-#: builtin.c:878
+#: builtin.c:897
msgid "`h' is meaningless in awk formats; ignored"
msgstr "\"h\" er meningsløst i awk-formater, ignoreret"
-#: builtin.c:882
+#: builtin.c:901
msgid "`h' is not permitted in POSIX awk formats"
msgstr "\"h\" tillades ikke i POSIX awk-formater"
-#: builtin.c:1111
+#: builtin.c:1132
#, c-format
msgid "[s]printf: value %g is out of range for `%%%c' format"
msgstr ""
-#: builtin.c:1171
+#: builtin.c:1198
msgid "not enough arguments to satisfy format string"
msgstr "for få argumenter til formatstrengen"
-#: builtin.c:1173
+#: builtin.c:1200
msgid "^ ran out for this one"
msgstr "^ sluttede her"
-#: builtin.c:1178
+#: builtin.c:1205
msgid "[s]printf: format specifier does not have control letter"
msgstr "[s]printf: formatspecifiereren har intet kommandobogstav"
-#: builtin.c:1181
+#: builtin.c:1208
msgid "too many arguments supplied for format string"
msgstr "for mange argumenter til formatstrengen"
-#: builtin.c:1247 builtin.c:1250
+#: builtin.c:1274 builtin.c:1277
msgid "printf: no arguments"
msgstr "printf: ingen argumenter"
-#: builtin.c:1274
+#: builtin.c:1301
msgid "sqrt: received non-numeric argument"
msgstr "sqrt: fik ikke-numerisk argument"
-#: builtin.c:1278
+#: builtin.c:1305
#, c-format
msgid "sqrt: called with negative argument %g"
msgstr "sqrt: kaldt med negativt argument %g"
-#: builtin.c:1301
+#: builtin.c:1329
#, c-format
msgid "substr: start index %g is invalid, using 1"
msgstr "substr: startindeks %g er ugyldigt, bruger 1"
-#: builtin.c:1306
+#: builtin.c:1334
#, c-format
msgid "substr: non-integer start index %g will be truncated"
msgstr "substr: startindeks %g som ikke er et heltal bliver trunkeret"
-#: builtin.c:1325
+#: builtin.c:1353
#, fuzzy, c-format
msgid "substr: length %g is not >= 1"
msgstr "substr: længden %g er <= 0"
-#: builtin.c:1327
+#: builtin.c:1355
#, fuzzy, c-format
msgid "substr: length %g is not >= 0"
msgstr "substr: længden %g er <= 0"
-#: builtin.c:1334
+#: builtin.c:1362
#, c-format
msgid "substr: non-integer length %g will be truncated"
msgstr "substr: længden %g som ikke er et heltal bliver trunkeret"
-#: builtin.c:1339
+#: builtin.c:1367
#, c-format
msgid "substr: length %g too big for string indexing, truncating to %g"
msgstr ""
-#: builtin.c:1351
+#: builtin.c:1379
msgid "substr: source string is zero length"
msgstr "substr: kildestrengen er tom"
-#: builtin.c:1357
+#: builtin.c:1395
#, fuzzy, c-format
msgid "substr: start index %g is past end of string"
msgstr "substr: startindeks %d er forbi slutningen på strengen"
-#: builtin.c:1365
+#: builtin.c:1403
#, fuzzy, c-format
msgid ""
"substr: length %g at start index %g exceeds length of first argument (%lu)"
@@ -571,194 +591,194 @@ msgstr ""
"substr: længden %d ved startindeks %d overskrider længden af første argument "
"(%d)"
-#: builtin.c:1400
+#: builtin.c:1478
#, fuzzy
msgid "strftime: received non-string first argument"
msgstr "strftime: fik et første argument som ikke er en streng"
-#: builtin.c:1406
+#: builtin.c:1484
msgid "strftime: received empty format string"
msgstr "strftime: fik en tom formatstreng"
-#: builtin.c:1415
+#: builtin.c:1493
#, fuzzy
msgid "strftime: received non-numeric second argument"
msgstr "strftime: fik et ikke-numerisk andet argument"
-#: builtin.c:1478
+#: builtin.c:1556
msgid "mktime: received non-string argument"
msgstr "mktime: fik et argument som ikke er en streng"
-#: builtin.c:1523
+#: builtin.c:1601
#, fuzzy
msgid "system: received non-string argument"
msgstr "system: fik et argument som ikke er en streng"
-#: builtin.c:1644 eval.c:2019
+#: builtin.c:1722 eval.c:2039
#, fuzzy, c-format
msgid "reference to uninitialized field `$%d'"
msgstr "reference til ikke-initieret variabel \"%s\""
-#: builtin.c:1671
+#: builtin.c:1827
#, fuzzy
msgid "tolower: received non-string argument"
msgstr "tolower: fik et argument som ikke er en streng"
-#: builtin.c:1720
+#: builtin.c:1857
#, fuzzy
msgid "toupper: received non-string argument"
msgstr "toupper: fik et argument som ikke er en streng"
-#: builtin.c:1765
+#: builtin.c:1890
msgid "atan2: received non-numeric first argument"
msgstr "atan2: fik et ikke-numerisk første argument"
-#: builtin.c:1767
+#: builtin.c:1892
msgid "atan2: received non-numeric second argument"
msgstr "atan2: fik et ikke-numerisk andet argument"
-#: builtin.c:1786
+#: builtin.c:1911
msgid "sin: received non-numeric argument"
msgstr "sin: fik et ikke-numerisk argument"
-#: builtin.c:1802
+#: builtin.c:1927
msgid "cos: received non-numeric argument"
msgstr "cos: fik et ikke-numerisk argument"
-#: builtin.c:1852
+#: builtin.c:1977
msgid "srand: received non-numeric argument"
msgstr "srand: fik et ikke-numerisk argument"
-#: builtin.c:1887
+#: builtin.c:2012
msgid "match: third argument is not an array"
msgstr "match: tredje argument er ikke en vektor"
-#: builtin.c:2414
+#: builtin.c:2555
msgid "gensub: third argument of 0 treated as 1"
msgstr "gensub: Nullet i tredje argument behandlet som et ét-tal"
-#: builtin.c:2572
+#: builtin.c:2715
msgid "lshift: received non-numeric first argument"
msgstr "lshift: fik et ikke-numerisk første argument"
-#: builtin.c:2574
+#: builtin.c:2717
#, fuzzy
msgid "lshift: received non-numeric second argument"
msgstr "strftime: fik et ikke-numerisk andet argument"
-#: builtin.c:2580
+#: builtin.c:2723
#, c-format
msgid "lshift(%lf, %lf): negative values will give strange results"
msgstr "lshift(%lf, %lf): negative værdier vil give mærkelige resultater"
-#: builtin.c:2582
+#: builtin.c:2725
#, c-format
msgid "lshift(%lf, %lf): fractional values will be truncated"
msgstr "lshift(%lf, %lf): flydendetalsværdier vil blive trunkeret"
-#: builtin.c:2584
+#: builtin.c:2727
#, c-format
msgid "lshift(%lf, %lf): too large shift value will give strange results"
msgstr ""
"lshift(%lf, %lf): for store skifteværdier vil give mærkelige resultater"
-#: builtin.c:2610
+#: builtin.c:2753
msgid "rshift: received non-numeric first argument"
msgstr "rshift: fik et ikke-numerisk første argument"
-#: builtin.c:2612
+#: builtin.c:2755
#, fuzzy
msgid "rshift: received non-numeric second argument"
msgstr "strftime: fik et ikke-numerisk andet argument"
-#: builtin.c:2618
+#: builtin.c:2761
#, c-format
msgid "rshift(%lf, %lf): negative values will give strange results"
msgstr "rshift(%lf, %lf): negative værdier vil give mærkelige resultater"
-#: builtin.c:2620
+#: builtin.c:2763
#, c-format
msgid "rshift(%lf, %lf): fractional values will be truncated"
msgstr "rshift(%lf, %lf): flydendetalsværdier vil blive trunkeret"
-#: builtin.c:2622
+#: builtin.c:2765
#, c-format
msgid "rshift(%lf, %lf): too large shift value will give strange results"
msgstr ""
"rshift(%lf, %lf): for store skifteværdier vil give mærkelige resultater"
-#: builtin.c:2648
+#: builtin.c:2791
msgid "and: received non-numeric first argument"
msgstr "and: fik et ikke-numerisk første argument"
-#: builtin.c:2650
+#: builtin.c:2793
#, fuzzy
msgid "and: received non-numeric second argument"
msgstr "atan2: fik et ikke-numerisk andet argument"
-#: builtin.c:2656
+#: builtin.c:2799
#, c-format
msgid "and(%lf, %lf): negative values will give strange results"
msgstr "and(%lf, %lf): negative værdier vil give mærkelige resultater"
-#: builtin.c:2658
+#: builtin.c:2801
#, c-format
msgid "and(%lf, %lf): fractional values will be truncated"
msgstr "and(%lf, %lf): flydendetalsværdier vil blive trunkeret"
-#: builtin.c:2684
+#: builtin.c:2827
msgid "or: received non-numeric first argument"
msgstr "or: fik et ikke-numerisk første argument"
-#: builtin.c:2686
+#: builtin.c:2829
#, fuzzy
msgid "or: received non-numeric second argument"
msgstr "atan2: fik et ikke-numerisk andet argument"
-#: builtin.c:2692
+#: builtin.c:2835
#, c-format
msgid "or(%lf, %lf): negative values will give strange results"
msgstr "or(%lf, %lf): negative værdier vil give mærkelige resultater"
-#: builtin.c:2694
+#: builtin.c:2837
#, c-format
msgid "or(%lf, %lf): fractional values will be truncated"
msgstr "or(%lf, %lf): flydendetalsværdier vil blive trunkeret"
-#: builtin.c:2720
+#: builtin.c:2863
msgid "xor: received non-numeric first argument"
msgstr "xor: fik et ikke-numerisk første argument"
-#: builtin.c:2722
+#: builtin.c:2865
#, fuzzy
msgid "xor: received non-numeric second argument"
msgstr "atan2: fik et ikke-numerisk andet argument"
-#: builtin.c:2728
+#: builtin.c:2871
#, c-format
msgid "xor(%lf, %lf): negative values will give strange results"
msgstr "xor(%lf, %lf): negative værdier vil give mærkelige resultater"
-#: builtin.c:2730
+#: builtin.c:2873
#, c-format
msgid "xor(%lf, %lf): fractional values will be truncated"
msgstr "xor(%lf, %lf): flydendetalsværdier vil blive trunkeret"
-#: builtin.c:2754
+#: builtin.c:2897
msgid "compl: received non-numeric argument"
msgstr "compl: fik et ikke-numerisk argument"
-#: builtin.c:2760
+#: builtin.c:2903
#, c-format
msgid "compl(%lf): negative value will give strange results"
msgstr "compl(%lf): negative værdier vil give mærkelige resultater"
-#: builtin.c:2762
+#: builtin.c:2905
#, c-format
msgid "compl(%lf): fractional value will be truncated"
msgstr "compl(%lf): flydendetalsværdier vil blive trunkeret"
-#: builtin.c:2935
+#: builtin.c:3078
#, c-format
msgid "dcgettext: `%s' is not a valid locale category"
msgstr "dcgettext: \"%s\" er ikke en gyldig lokalekategori"
@@ -768,123 +788,118 @@ msgstr "dcgettext: \"%s\" er ikke en gyldig lokalekategori"
msgid "unknown nodetype %d"
msgstr "ukendt nodetype %d"
-#: eval.c:350
+#: eval.c:353
msgid "buffer overflow in genflags2str"
msgstr "bufferoverløb i genflags2str"
-#: eval.c:382 eval.c:388 profile.c:837
+#: eval.c:385 eval.c:391 profile.c:838
#, c-format
msgid "attempt to use array `%s' in a scalar context"
msgstr "forsøg på at bruge vektoren \"%s\" i skalarsammenhæng"
-#: eval.c:730
+#: eval.c:733
#, fuzzy, c-format
msgid "for loop: array `%s' changed size from %ld to %ld during loop execution"
msgstr ""
"for-løkke: vektoren \"%s\" ændrede størrelse fra %d til %d under løkke-"
"udførelsen"
-#: eval.c:751
+#: eval.c:754
msgid "`break' outside a loop is not portable"
msgstr "\"break\" uden for en løkke er ikke portabelt"
-#: eval.c:755
+#: eval.c:758
msgid "`break' outside a loop is not allowed"
msgstr "\"break\" uden for en løkke er ikke tilladt"
-#: eval.c:772
+#: eval.c:775
msgid "`continue' outside a loop is not portable"
msgstr "\"continue\" uden for en løkke er ikke portabelt"
-#: eval.c:776
+#: eval.c:779
msgid "`continue' outside a loop is not allowed"
msgstr "\"continue\" uden for en løkke er ikke tilladt"
-#: eval.c:810
+#: eval.c:813
msgid "`next' cannot be called from a BEGIN rule"
msgstr "\"next\" kan ikke kaldes fra en BEGIN-regel"
-#: eval.c:812
+#: eval.c:815
msgid "`next' cannot be called from an END rule"
msgstr "\"next\" kan ikke kaldes fra en END-regel"
-#: eval.c:821
+#: eval.c:824
msgid "`nextfile' cannot be called from a BEGIN rule"
msgstr "\"nextfile\" kan ikke kaldes fra en BEGIN-regel"
-#: eval.c:823
+#: eval.c:826
msgid "`nextfile' cannot be called from an END rule"
msgstr "\"nextfile\" kan ikke kaldes fra en END-regel"
-#: eval.c:872
+#: eval.c:875
msgid "statement has no effect"
msgstr "kommandoen har ingen effekt"
-#: eval.c:915 eval.c:1873
+#: eval.c:952 eval.c:1893
#, c-format
msgid "can't use function name `%s' as variable or array"
msgstr "kan ikke bruge funktionsnavnet \"%s\" som variabel eller vektor"
-#: eval.c:922 eval.c:928
+#: eval.c:959 eval.c:965
#, c-format
msgid "reference to uninitialized argument `%s'"
msgstr "reference til ikke-initieret argument \"%s\""
-#: eval.c:937 eval.c:1882
+#: eval.c:974 eval.c:1902
#, c-format
msgid "reference to uninitialized variable `%s'"
msgstr "reference til ikke-initieret variabel \"%s\""
-#: eval.c:1083
+#: eval.c:1120
msgid ""
"concatenation: side effects in one expression have changed the length of "
"another!"
msgstr ""
"concatenation: sideeffekter i et udtryk har ændret længden af et andet!"
-#: eval.c:1162
+#: eval.c:1200
msgid "assignment used in conditional context"
msgstr "tildeling brugt i sammenligningsammenhæng"
-#: eval.c:1252
+#: eval.c:1278
msgid "division by zero attempted"
msgstr "forsøgte at dividere med nul"
-#: eval.c:1267
+#: eval.c:1293
#, c-format
msgid "division by zero attempted in `%%'"
msgstr "forsøgte at dividere med nul i \"%%\""
-#: eval.c:1282 profile.c:713
+#: eval.c:1308 profile.c:714
#, c-format
msgid "illegal type (%s) in tree_eval"
msgstr "ikke tilladt type (%s) i tree_eval"
-#: eval.c:1459
+#: eval.c:1471
msgid "division by zero attempted in `/='"
msgstr "forsøgte at dividere med nul i \"/=\""
-#: eval.c:1477
+#: eval.c:1493
#, c-format
msgid "division by zero attempted in `%%='"
msgstr "forsøgte at dividere med nul i \"%%=\""
-#: eval.c:1738
+#: eval.c:1758
#, c-format
msgid "function `%s' called with more arguments than declared"
msgstr "funktionen \"%s\" kaldt med flere argumenter end deklareret"
-#: eval.c:1782
+#: eval.c:1802
#, c-format
msgid "function `%s' not defined"
msgstr "funktionen \"%s\" er ikke defineret"
-#: eval.c:1788
-#, c-format
-msgid "function %s called\n"
-msgstr "funktionen %s kaldt\n"
-
-#: eval.c:1845
+#: eval.c:1865
#, c-format
msgid ""
"\n"
@@ -895,42 +910,42 @@ msgstr ""
"\t# Funktionskaldsstak:\n"
"\n"
-#: eval.c:1848
+#: eval.c:1868
#, c-format
msgid "\t# -- main --\n"
msgstr "\t# -- main --\n"
-#: eval.c:2003
+#: eval.c:2023
msgid "attempt to field reference from non-numeric value"
msgstr "forsøg på at feltreferere fra ikke-numerisk værdi"
-#: eval.c:2005
+#: eval.c:2025
msgid "attempt to reference from null string"
msgstr "forsøg på at referere fra tom streng"
-#: eval.c:2011
+#: eval.c:2031
#, c-format
msgid "attempt to access field %d"
msgstr "forsøg på at få adgang til felt nummer %d"
-#: eval.c:2032 eval.c:2039 profile.c:934
+#: eval.c:2052 eval.c:2059 profile.c:935
msgid "assignment is not allowed to result of builtin function"
msgstr "tildeling er ikke tilladt til resultatet fra en indbygget funktion"
-#: eval.c:2103
+#: eval.c:2123
msgid "`IGNORECASE' is a gawk extension"
msgstr "\"IGNORECASE\" er en gawk-udvidelse"
-#: eval.c:2133
+#: eval.c:2153
msgid "`BINMODE' is a gawk extension"
msgstr "\"BINMODE\" er en gawk-udvidelse"
-#: eval.c:2255
+#: eval.c:2275
#, c-format
msgid "bad `%sFMT' specification `%s'"
msgstr "fejlagtig \"%sFMT\"-specifikation \"%s\""
-#: eval.c:2333
+#: eval.c:2353
msgid "turning off `--lint' due to assignment to `LINT'"
msgstr "deaktiverer \"--lint\" på grund af en tildeling til \"LINT\""
@@ -978,9 +993,9 @@ msgid "extension: function name `%s' previously defined"
msgstr "funktionsnavnet \"%s\" er allerede defineret"
#: ext.c:201
-#, c-format
-msgid "function `%s' defined to take no more than `%d' argument(s)"
-msgstr ""
+#, fuzzy, c-format
+msgid "function `%s' defined to take no more than %d argument(s)"
+msgstr "funktionen \"%s\" defineret, men aldrig kaldt"
#: ext.c:204
#, fuzzy, c-format
@@ -1001,548 +1016,553 @@ msgstr ""
msgid "Operation Not Supported"
msgstr "Operationen understøttes ikke"
-#: field.c:315
+#: field.c:326
msgid "NF set to negative value"
msgstr "NF sat til en negativ værdi"
-#: field.c:808
+#: field.c:819
msgid "split: second argument is not an array"
msgstr "split: andet argument er ikke en vektor"
-#: field.c:842
+#: field.c:853
msgid "split: null string for third arg is a gawk extension"
msgstr "split: tom streng som tredje argument er en gawk-udvidelse"
-#: field.c:894
+#: field.c:905
msgid "`FIELDWIDTHS' is a gawk extension"
msgstr "\"FIELDWIDTHS\" er en gawk-udvidelse"
-#: field.c:921
+#: field.c:935 field.c:946
#, c-format
-msgid "field %d in FIELDWIDTHS, must be > 0"
-msgstr "felt %d i FIELDWIDTHS skal være > 0"
+msgid "invalid FIELDWIDTHS value, near `%s'"
+msgstr ""
-#: field.c:994
+#: field.c:1027
msgid "null string for `FS' is a gawk extension"
msgstr "tom streng som \"FS\" er en gawk-udvidelse"
-#: getopt.c:692 getopt.c:711
+#: getopt.c:571 getopt.c:590
#, c-format
msgid "%s: option `%s' is ambiguous\n"
msgstr "%s: flaget \"%s\" er flertydigt\n"
-#: getopt.c:744 getopt.c:748
+#: getopt.c:623 getopt.c:627
#, c-format
msgid "%s: option `--%s' doesn't allow an argument\n"
msgstr "%s: flaget \"--%s\" tillader ikke noget argument\n"
-#: getopt.c:757 getopt.c:762
+#: getopt.c:636 getopt.c:641
#, c-format
msgid "%s: option `%c%s' doesn't allow an argument\n"
msgstr "%s: flaget \"%c%s\" tillader ikke noget argument\n"
-#: getopt.c:807 getopt.c:829 getopt.c:1159 getopt.c:1181
+#: getopt.c:687 getopt.c:709 getopt.c:1040 getopt.c:1062
#, c-format
msgid "%s: option `%s' requires an argument\n"
msgstr "%s: flaget \"%s\" kræver et argument\n"
-#: getopt.c:867 getopt.c:870
+#: getopt.c:747 getopt.c:750
#, c-format
msgid "%s: unrecognized option `--%s'\n"
msgstr "%s: ukendt flag \"--%s\"\n"
-#: getopt.c:878 getopt.c:881
+#: getopt.c:758 getopt.c:761
#, c-format
msgid "%s: unrecognized option `%c%s'\n"
msgstr "%s: ukendt flag \"%c%s\"\n"
-#: getopt.c:936 getopt.c:939
+#: getopt.c:816 getopt.c:819
#, c-format
msgid "%s: illegal option -- %c\n"
msgstr "%s: ikke tilladt flag -- %c\n"
-#: getopt.c:945 getopt.c:948
+#: getopt.c:825 getopt.c:828
#, c-format
msgid "%s: invalid option -- %c\n"
msgstr "%s: ugyldig flag -- %c\n"
-#: getopt.c:1003 getopt.c:1022 getopt.c:1234 getopt.c:1255 main.c:433
+#: getopt.c:883 getopt.c:902 getopt.c:1115 getopt.c:1136 main.c:448
#, c-format
msgid "%s: option requires an argument -- %c\n"
msgstr "%s: flaget kræver et argument -- %c\n"
-#: getopt.c:1074 getopt.c:1093
+#: getopt.c:955 getopt.c:974
#, c-format
msgid "%s: option `-W %s' is ambiguous\n"
msgstr "%s: flaget \"-W %s\" er flertydigt\n"
-#: getopt.c:1117 getopt.c:1138
+#: getopt.c:998 getopt.c:1019
#, c-format
msgid "%s: option `-W %s' doesn't allow an argument\n"
msgstr "%s: flaget \"-W %s\" tillader ikke noget argument\n"
-#: io.c:308
+#: io.c:307
#, c-format
msgid "cannot open file `%s' for reading (%s)"
msgstr "kan ikke åbne filen \"%s\" for læsning (%s)"
-#: io.c:395
+#: io.c:398
#, c-format
msgid "close of fd %d (`%s') failed (%s)"
msgstr "lukning af fd %d (\"%s\") mislykkedes (%s)"
-#: io.c:533
+#: io.c:536
#, c-format
msgid "invalid tree type %s in redirect()"
msgstr "ugyldig trætype %s i redirect()"
-#: io.c:539
+#: io.c:542
#, c-format
msgid "expression in `%s' redirection only has numeric value"
msgstr "udtrykket i \"%s\"-omdirigering har kun numerisk værdi"
-#: io.c:545
+#: io.c:548
#, c-format
msgid "expression for `%s' redirection has null string value"
msgstr "udtrykket for \"%s\"-omdirigering har en tom streng som værdi"
-#: io.c:550
+#: io.c:553
#, c-format
msgid "filename `%s' for `%s' redirection may be result of logical expression"
msgstr ""
"filnavnet \"%s\" for \"%s\"-omdirigering kan være resultatet af et logisk "
"udtryk"
-#: io.c:588
+#: io.c:591
#, c-format
msgid "unnecessary mixing of `>' and `>>' for file `%.*s'"
msgstr "unødig blanding af \">\" og \">>\" for filen \"%.*s\""
-#: io.c:640
+#: io.c:643
#, c-format
msgid "can't open pipe `%s' for output (%s)"
msgstr "kan ikke åbne røret \"%s\" for udskrivning (%s)"
-#: io.c:649
+#: io.c:652
#, c-format
msgid "can't open pipe `%s' for input (%s)"
msgstr "kan ikke åbne røret \"%s\" for indtastning (%s)"
-#: io.c:662
+#: io.c:665
#, c-format
msgid "can't open two way socket `%s' for input/output (%s)"
msgstr "kan ikke åbne tovejssoklen \"%s\" for ind-/uddata (%s)"
-#: io.c:666
+#: io.c:669
#, c-format
msgid "can't open two way pipe `%s' for input/output (%s)"
msgstr "kan ikke åbne tovejsrøret \"%s\" for ind-/uddata (%s)"
-#: io.c:742
+#: io.c:745
#, c-format
msgid "can't redirect from `%s' (%s)"
msgstr "kan ikke omdirigere fra \"%s\" (%s)"
-#: io.c:745
+#: io.c:748
#, c-format
msgid "can't redirect to `%s' (%s)"
msgstr "kan ikke omdirigere til \"%s\" (%s)"
-#: io.c:784
+#: io.c:787
msgid ""
"reached system limit for open files: starting to multiplex file descriptors"
msgstr ""
"nåede systembegrænsningen for åbne filer: begynder at multiplekse "
"fildeskriptorer"
-#: io.c:800
+#: io.c:803
#, c-format
msgid "close of `%s' failed (%s)."
msgstr "lukning af \"%s\" mislykkedes (%s)"
-#: io.c:808
+#: io.c:811
msgid "too many pipes or input files open"
msgstr "for mange rør eller inddatafiler åbne"
-#: io.c:831
+#: io.c:834
msgid "close: second argument must be `to' or `from'"
msgstr "close: andet argument skal være \"to\" eller \"from\""
-#: io.c:845
+#: io.c:848
#, c-format
msgid "close: `%.*s' is not an open file, pipe or co-process"
msgstr "close: \"%.*s\" er ikke en åben fil, datakanal eller ko-proces"
-#: io.c:849
+#: io.c:852
msgid "close of redirection that was never opened"
msgstr "lukning af omdirigering som aldrig åbnedes"
-#: io.c:945
+#: io.c:948
#, c-format
msgid "close: redirection `%s' not opened with `|&', second argument ignored"
msgstr ""
"close: omdirigeringen \"%s\" åbnedes ikke med \"|&\", andet argument "
"ignoreret"
-#: io.c:960
+#: io.c:964
#, c-format
msgid "failure status (%d) on pipe close of `%s' (%s)"
msgstr "fejlstatus (%d) fra rørlukning af \"%s\" (%s)"
-#: io.c:963
+#: io.c:967
#, c-format
msgid "failure status (%d) on file close of `%s' (%s)"
msgstr "fejlstatus (%d) fra fillukning af \"%s\" (%s)"
-#: io.c:983
+#: io.c:987
#, c-format
msgid "no explicit close of socket `%s' provided"
msgstr "ingen eksplicit lukning af soklen \"%s\" angivet"
-#: io.c:986
+#: io.c:990
#, c-format
msgid "no explicit close of co-process `%s' provided"
msgstr "ingen eksplicit lukning af ko-processen \"%s\" angivet"
-#: io.c:989
+#: io.c:993
#, c-format
msgid "no explicit close of pipe `%s' provided"
msgstr "ingen eksplicit lukning af røret \"%s\" angivet"
-#: io.c:992
+#: io.c:996
#, c-format
msgid "no explicit close of file `%s' provided"
msgstr "ingen eksplicit lukning af filen \"%s\" angivet"
-#: io.c:1021 io.c:1075
+#: io.c:1025 io.c:1080 main.c:718 main.c:756
#, c-format
msgid "error writing standard output (%s)"
msgstr "fejl ved skrivning til standard ud (%s)"
-#: io.c:1025 io.c:1079
+#: io.c:1029 io.c:1085
#, c-format
msgid "error writing standard error (%s)"
msgstr "fejl ved skrivning til standard fejl (%s)"
-#: io.c:1033
+#: io.c:1037
#, c-format
msgid "pipe flush of `%s' failed (%s)."
msgstr "rørspuling af \"%s\" mislykkedes (%s)"
-#: io.c:1036
+#: io.c:1040
#, c-format
msgid "co-process flush of pipe to `%s' failed (%s)."
msgstr "ko-processpuling af røret til \"%s\" mislykkedes (%s)"
-#: io.c:1039
+#: io.c:1043
#, c-format
msgid "file flush of `%s' failed (%s)."
msgstr "filspuling af \"%s\" mislykkedes (%s)"
-#: io.c:1198
+#: io.c:1205
msgid "/inet/raw client not ready yet, sorry"
msgstr "/inet/raw-klient er desværre ikke klar endnu"
-#: io.c:1200 io.c:1237
+#: io.c:1207 io.c:1244
msgid "only root may use `/inet/raw'."
msgstr "kun root kan bruge \"/inet/raw\"."
-#: io.c:1235
+#: io.c:1242
msgid "/inet/raw server not ready yet, sorry"
msgstr "/inet/raw-server er desværre ikke klar endnu"
-#: io.c:1325
+#: io.c:1332
#, c-format
msgid "no (known) protocol supplied in special filename `%s'"
msgstr "ingen (kendt) protokol opgivet i special-filnavn \"%s\""
-#: io.c:1343
+#: io.c:1350
#, c-format
msgid "special file name `%s' is incomplete"
msgstr "special-filnavn \"%s\" er ufuldstændigt"
-#: io.c:1355
+#: io.c:1362
#, c-format
msgid "local port invalid in `%s'"
msgstr "lokal port ugyldig i \"%s\""
-#: io.c:1367
+#: io.c:1374
msgid "must supply a remote hostname to `/inet'"
msgstr "skal angive et fjernmaskinenavn til \"/inet\""
-#: io.c:1382
+#: io.c:1389
msgid "must supply a remote port to `/inet'"
msgstr "skal angive en fjernport til \"/inet\""
-#: io.c:1388
+#: io.c:1395
#, c-format
msgid "remote port invalid in `%s'"
msgstr "fjernporten ugyldig i \"%s\""
-#: io.c:1398
+#: io.c:1405
msgid "TCP/IP communications are not supported"
msgstr "TCP/IP-kommunikation understøttes ikke"
-#: io.c:1407 io.c:1588
+#: io.c:1414 io.c:1595
#, c-format
msgid "file `%s' is a directory"
msgstr "filen \"%s\" er et katalog"
-#: io.c:1477
+#: io.c:1484
#, c-format
msgid "use `PROCINFO[\"%s\"]' instead of `%s'"
msgstr "brug \"PROCINFO[\"%s\"]\" i stedet for \"%s\""
-#: io.c:1509
+#: io.c:1516
msgid "use `PROCINFO[...]' instead of `/dev/user'"
msgstr "brug \"PROCINFO[...]\" i stedet for \"dev/user\""
-#: io.c:1574 io.c:1748
+#: io.c:1581 io.c:1763
#, c-format
msgid "could not open `%s', mode `%s'"
msgstr "kunne ikke åbne \"%s\", tilstand \"%s\""
-#: io.c:1799
+#: io.c:1814
#, fuzzy, c-format
msgid "close of master pty failed (%s)"
msgstr "lukning af røret mislykkedes (%s)"
-#: io.c:1801 io.c:1953 io.c:2105
+#: io.c:1816 io.c:1968 io.c:2119
#, c-format
msgid "close of stdout in child failed (%s)"
msgstr "lukning af standard ud i barnet mislykkedes (%s)"
-#: io.c:1804
+#: io.c:1819
#, fuzzy, c-format
msgid "moving slave pty to stdout in child failed (dup: %s)"
msgstr "flytning af rør til standard ud i barnet mislykkedes (dup: %s)"
-#: io.c:1806 io.c:1958
+#: io.c:1821 io.c:1973
#, c-format
msgid "close of stdin in child failed (%s)"
msgstr "lukning af standard ind i barnet mislykkedes (%s)"
-#: io.c:1809
+#: io.c:1824
#, fuzzy, c-format
msgid "moving slave pty to stdin in child failed (dup: %s)"
msgstr "flytning af rør til standard ind i barnet mislykkedes (dup: %s)"
-#: io.c:1811 io.c:1830
+#: io.c:1826 io.c:1845
#, fuzzy, c-format
msgid "close of slave pty failed (%s)"
msgstr "lukning af røret mislykkedes (%s)"
-#: io.c:1904 io.c:1956 io.c:2086 io.c:2108
+#: io.c:1919 io.c:1971 io.c:2100 io.c:2122
#, c-format
msgid "moving pipe to stdout in child failed (dup: %s)"
msgstr "flytning af rør til standard ud i barnet mislykkedes (dup: %s)"
-#: io.c:1908 io.c:1961
+#: io.c:1923 io.c:1976
#, c-format
msgid "moving pipe to stdin in child failed (dup: %s)"
msgstr "flytning af rør til standard ind i barnet mislykkedes (dup: %s)"
-#: io.c:1925 io.c:2099
+#: io.c:1940 io.c:2113
msgid "restoring stdout in parent process failed\n"
msgstr "genskabelse af standard ud i forælderprocessen mislykkedes\n"
-#: io.c:1930
+#: io.c:1945
msgid "restoring stdin in parent process failed\n"
msgstr "genskabelse af standard ind i forælderprocessen mislykkedes\n"
-#: io.c:1964 io.c:2110 io.c:2121
+#: io.c:1979 io.c:2124 io.c:2135
#, c-format
msgid "close of pipe failed (%s)"
msgstr "lukning af røret mislykkedes (%s)"
-#: io.c:2009
+#: io.c:2024
msgid "`|&' not supported"
msgstr "\"|&\" understøttes ikke"
-#: io.c:2076
+#: io.c:2090
#, c-format
msgid "cannot open pipe `%s' (%s)"
msgstr "kan ikke åbne røret \"%s\" (%s)"
-#: io.c:2117
+#: io.c:2131
#, c-format
msgid "cannot create child process for `%s' (fork: %s)"
msgstr "kan ikke oprette barneproces for \"%s\" (fork: %s)"
-#: io.c:2460
+#: io.c:2506
#, c-format
msgid "data file `%s' is empty"
msgstr "datafilen \"%s\" er tom"
-#: io.c:2503 io.c:2511
+#: io.c:2547 io.c:2555
msgid "could not allocate more input memory"
msgstr ""
-#: io.c:2869 io.c:2932
+#: io.c:2919 io.c:2984
#, c-format
msgid "error reading input file `%s': %s"
msgstr "fejl ved læsning af inddatafilen \"%s\": %s"
-#: io.c:3057
+#: io.c:3109
msgid "multicharacter value of `RS' is a gawk extension"
msgstr "flertegnsværdien af \"RS\" er en gawk-udvidelse"
-#: main.c:323
+#: main.c:338
msgid "`-m[fr]' option irrelevant in gawk"
msgstr "\"-m[fr]\"-flaget er irrelevant i gawk"
-#: main.c:325
+#: main.c:340
msgid "-m option usage: `-m[fr] nnn'"
msgstr "-m-flagets brug: \"-m[fr] nnn\""
-#: main.c:342
+#: main.c:357
#, c-format
msgid "%s: option `-W %s' unrecognized, ignored\n"
msgstr "%s: flaget \"-W %s\" ukendt, ignoreret\n"
-#: main.c:379
+#: main.c:394
msgid "empty argument to `--source' ignored"
msgstr "tomt argument til \"--source\" ignoreret"
-#: main.c:450
+#: main.c:467
msgid "environment variable `POSIXLY_CORRECT' set: turning on `--posix'"
msgstr "miljøvariablen \"POSIXLY_CORRECT\" sat: aktiverer \"--posix\""
-#: main.c:455
+#: main.c:472
msgid "`--posix' overrides `--traditional'"
msgstr "\"--posix\" tilsidesætter \"--traditional\""
-#: main.c:466
+#: main.c:483
msgid "`--posix'/`--traditional' overrides `--non-decimal-data'"
msgstr "\"--posix\"/\"--traditional\" tilsidesætter \"--non-decimal-data\""
-#: main.c:470
+#: main.c:487
#, fuzzy, c-format
msgid "running %s setuid root may be a security problem"
msgstr "at køre %s setuid root kan være et sikkerhedsproblem"
-#: main.c:511
+#: main.c:528
#, fuzzy, c-format
msgid "can't set binary mode on stdin (%s)"
msgstr "kan ikke sætte tilstand på standard ind (%s)"
-#: main.c:514
+#: main.c:531
#, fuzzy, c-format
msgid "can't set binary mode on stdout (%s)"
msgstr "kan ikke sætte tilstand på standard ud (%s)"
-#: main.c:516
+#: main.c:533
#, fuzzy, c-format
msgid "can't set binary mode on stderr (%s)"
msgstr "kan ikke sætte tilstand på standard fejl (%s)"
-#: main.c:546
+#: main.c:572
msgid "no program text at all!"
msgstr "ingen programtekst overhovedet!"
-#: main.c:623
+#: main.c:665
#, c-format
msgid "Usage: %s [POSIX or GNU style options] -f progfile [--] file ...\n"
msgstr "Brug: %s [POSIX- eller GNU-stilflag] -f progfil [--] fil ...\n"
-#: main.c:625
+#: main.c:667
#, c-format
msgid "Usage: %s [POSIX or GNU style options] [--] %cprogram%c file ...\n"
msgstr "Brug: %s [POSIX- eller GNU-stilflag] %cprogram%c fil ...\n"
-#: main.c:630
+#: main.c:672
msgid "POSIX options:\t\tGNU long options:\n"
msgstr "POSIX-flag:\t\tGNU lange flag:\n"
-#: main.c:631
+#: main.c:673
msgid "\t-f progfile\t\t--file=progfile\n"
msgstr "\t-f progfil\t\t--file=progfil\n"
-#: main.c:632
+#: main.c:674
msgid "\t-F fs\t\t\t--field-separator=fs\n"
msgstr "\t-F fs\t\t\t--field-separator=fs\n"
-#: main.c:633
+#: main.c:675
msgid "\t-v var=val\t\t--assign=var=val\n"
msgstr "\t-v var=værdi\t\t--assign=var=værdi\n"
-#: main.c:634
+#: main.c:676
msgid "\t-m[fr] val\n"
msgstr "\t-m[fr] værdi\n"
-#: main.c:635
+#: main.c:677
msgid "\t-W compat\t\t--compat\n"
msgstr "\t-W compat\t\t--compat\n"
-#: main.c:636
+#: main.c:678
msgid "\t-W copyleft\t\t--copyleft\n"
msgstr "\t-W copyleft\t\t--copyleft\n"
-#: main.c:637
+#: main.c:679
msgid "\t-W copyright\t\t--copyright\n"
msgstr "\t-W copyright\t\t--copyright\n"
-#: main.c:638
+#: main.c:680
msgid "\t-W dump-variables[=file]\t--dump-variables[=file]\n"
msgstr "\t-W dump-variables[=fil]\t--dump-variables[=fil]\n"
-#: main.c:639
+#: main.c:681
+#, fuzzy
+msgid "\t-W exec=file\t\t--exec=file\n"
+msgstr "\t-W profile[=fil]\t--profile[=fil]\n"
+
+#: main.c:682
msgid "\t-W gen-po\t\t--gen-po\n"
msgstr "\t-W gen-po\t\t--gen-po\n"
-#: main.c:640
+#: main.c:683
msgid "\t-W help\t\t\t--help\n"
msgstr "\t-W help\t\t\t--help\n"
-#: main.c:641
+#: main.c:684
msgid "\t-W lint[=fatal]\t\t--lint[=fatal]\n"
msgstr "\t-W lint[=fatal]\t\t--lint[=fatal]\n"
-#: main.c:642
+#: main.c:685
msgid "\t-W lint-old\t\t--lint-old\n"
msgstr "\t-W lint-old\t\t--lint-old\n"
-#: main.c:643
+#: main.c:686
msgid "\t-W non-decimal-data\t--non-decimal-data\n"
msgstr "\t-W non-decimal-data\t--non-decimal-data\n"
-#: main.c:645
+#: main.c:688
msgid "\t-W nostalgia\t\t--nostalgia\n"
msgstr "\t-W nostalgia\t\t--nostalgia\n"
-#: main.c:648
+#: main.c:691
msgid "\t-W parsedebug\t\t--parsedebug\n"
msgstr "\t-W parsedebug\t\t--parsedebug\n"
-#: main.c:650
+#: main.c:693
msgid "\t-W profile[=file]\t--profile[=file]\n"
msgstr "\t-W profile[=fil]\t--profile[=fil]\n"
-#: main.c:651
+#: main.c:694
msgid "\t-W posix\t\t--posix\n"
msgstr "\t-W posix\t\t--posix\n"
-#: main.c:652
+#: main.c:695
msgid "\t-W re-interval\t\t--re-interval\n"
msgstr "\t-W re-interval\t\t--re-interval\n"
-#: main.c:653
+#: main.c:696
msgid "\t-W source=program-text\t--source=program-text\n"
msgstr "\t-W source=programtekst\t--source=programtekst\n"
-#: main.c:654
+#: main.c:697
msgid "\t-W traditional\t\t--traditional\n"
msgstr "\t-W traditional\t\t--traditional\n"
-#: main.c:655
+#: main.c:698
msgid "\t-W usage\t\t--usage\n"
msgstr "\t-W usage\t\t--usage\n"
-#: main.c:656
+#: main.c:699
msgid "\t-W version\t\t--version\n"
msgstr "\t-W version\t\t--version\n"
-#: main.c:660
+#: main.c:703
#, fuzzy
msgid ""
"\n"
@@ -1553,21 +1573,21 @@ msgstr ""
"sektionen \"Reporting Problems and Bugs\" i den trykte version.\n"
"Rapportér synpunkter på oversættelsen til <dansk@klid.dk>.\n"
-#: main.c:664
+#: main.c:707
msgid ""
"gawk is a pattern scanning and processing language.\n"
"By default it reads standard input and writes standard output.\n"
"\n"
msgstr ""
-#: main.c:668
+#: main.c:711
msgid ""
"Examples:\n"
"\tgawk '{ sum += $1 }; END { print sum }' file\n"
"\tgawk -F: '{ print $1 }' /etc/passwd\n"
msgstr ""
-#: main.c:685
+#: main.c:731
#, c-format
msgid ""
"Copyright (C) 1989, 1991-%d Free Software Foundation.\n"
@@ -1586,7 +1606,7 @@ msgstr ""
"enhver senere version.\n"
"\n"
-#: main.c:693
+#: main.c:739
msgid ""
"This program is distributed in the hope that it will be useful,\n"
"but WITHOUT ANY WARRANTY; without even the implied warranty of\n"
@@ -1600,56 +1620,57 @@ msgstr ""
"General Public License for yderligere information.\n"
"\n"
-#: main.c:699
+#: main.c:745
msgid ""
"You should have received a copy of the GNU General Public License\n"
"along with this program; if not, write to the Free Software\n"
-"Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.\n"
+"Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, "
+"USA.\n"
msgstr ""
"Du bør have fået en kopi af GNU General Public License sammen\n"
"med dette program. Hvis ikke, så skriv til Free Software Foundation,\n"
-"Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.\n"
+"Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.\n"
-#: main.c:733
+#: main.c:781
msgid "-Ft does not set FS to tab in POSIX awk"
msgstr "-Ft sætter ikke FS til tab i POSIX-awk"
-#: main.c:962
+#: main.c:1018
#, c-format
msgid ""
"%s: `%s' argument to `-v' not in `var=value' form\n"
"\n"
msgstr ""
-#: main.c:982
+#: main.c:1038
#, c-format
msgid "`%s' is not a legal variable name"
msgstr ""
-#: main.c:985
+#: main.c:1041
#, c-format
msgid "`%s' is not a variable name, looking for file `%s=%s'"
msgstr ""
-#: main.c:1018
+#: main.c:1074
msgid "floating point exception"
msgstr "flydendetalsundtagelse"
-#: main.c:1025
+#: main.c:1081
msgid "fatal error: internal error"
msgstr "fatal fejl: intern fejl"
-#: main.c:1075
+#: main.c:1132
#, c-format
msgid "no pre-opened fd %d"
msgstr "ingen for-åbnet fd %d"
-#: main.c:1082
+#: main.c:1139
#, c-format
msgid "could not pre-open /dev/null for fd %d"
msgstr "kunne ikke for-åbne /dev/null for fd %d"
-#: main.c:1105 main.c:1114
+#: main.c:1162 main.c:1171
#, c-format
msgid "could not find groups: %s"
msgstr "kunne ikke finde grupper: %s"
@@ -1671,23 +1692,23 @@ msgstr "fejl: "
msgid "fatal: "
msgstr "fatal: "
-#: node.c:58 node.c:65 node.c:74 node.c:88 node.c:115
+#: node.c:59 node.c:66 node.c:75 node.c:90 node.c:119
msgid "can't convert string to float"
msgstr "kan ikke konvertere en streng til flydende tal"
-#: node.c:357
+#: node.c:414
msgid "backslash at end of string"
msgstr "omvendt skråstreg i slutningen af strengen"
-#: node.c:541
+#: node.c:604
msgid "POSIX does not allow `\\x' escapes"
msgstr "POSIX tillader ikke \"\\x\"-kontrolsekvenser"
-#: node.c:547
+#: node.c:610
msgid "no hex digits in `\\x' escape sequence"
msgstr "ingen heksadecimale cifre i \"\\x\"-kontrolsekvenser"
-#: node.c:581
+#: node.c:644
#, c-format
msgid "escape sequence `\\%c' treated as plain `%c'"
msgstr "kontrolsekvensen \"\\%c\" behandlet som kun \"%c\""
@@ -1707,21 +1728,21 @@ msgstr "kunne ikke åbne \"%s\" for skrivning: %s"
msgid "internal error: %s with null vname"
msgstr "intern fejl: Node_var med null vname"
-#: profile.c:530
+#: profile.c:531
msgid "# treated internally as `delete'"
msgstr ""
-#: profile.c:1167
+#: profile.c:1168
#, c-format
msgid "# this is a dynamically loaded extension function"
msgstr ""
-#: profile.c:1198
+#: profile.c:1199
#, c-format
msgid "\t# gawk profile, created %s\n"
msgstr "\t# gawkprofil, oprettet %s\n"
-#: profile.c:1201
+#: profile.c:1202
#, c-format
msgid ""
"\t# BEGIN block(s)\n"
@@ -1730,7 +1751,7 @@ msgstr ""
"\t# BEGIN-blok\n"
"\n"
-#: profile.c:1211
+#: profile.c:1212
#, c-format
msgid ""
"\t# Rule(s)\n"
@@ -1739,7 +1760,7 @@ msgstr ""
"\t# Regel/regler\n"
"\n"
-#: profile.c:1217
+#: profile.c:1218
#, c-format
msgid ""
"\t# END block(s)\n"
@@ -1748,7 +1769,7 @@ msgstr ""
"\t# END-blok\n"
"\n"
-#: profile.c:1237
+#: profile.c:1238
#, c-format
msgid ""
"\n"
@@ -1757,83 +1778,89 @@ msgstr ""
"\n"
"\t# Funktioner, listede alfabetisk\n"
-#: profile.c:1452
+#: profile.c:1453
#, c-format
msgid "unexpected type %s in prec_level"
msgstr "uventet type %s i prec_level"
-#: regcomp.c:150
+#: regcomp.c:160
msgid "Success"
msgstr "Lykkedes"
-#: regcomp.c:153
+#: regcomp.c:163
msgid "No match"
msgstr "Mislykkedes"
-#: regcomp.c:156
+#: regcomp.c:166
msgid "Invalid regular expression"
msgstr "Ugyldigt regulært udtryk"
-#: regcomp.c:159
+#: regcomp.c:169
msgid "Invalid collation character"
msgstr "Ugyldigt kollationeringstegn"
-#: regcomp.c:162
+#: regcomp.c:172
msgid "Invalid character class name"
msgstr "Ugyldigt tegnklassenavn"
-#: regcomp.c:165
+#: regcomp.c:175
msgid "Trailing backslash"
msgstr "Efterfølgende omvendt skråstreg"
-#: regcomp.c:168
+#: regcomp.c:178
msgid "Invalid back reference"
msgstr "Ugyldig bagudreference"
-#: regcomp.c:171
+#: regcomp.c:181
msgid "Unmatched [ or [^"
msgstr "Ubalanceret [ eller [^"
-#: regcomp.c:174
+#: regcomp.c:184
msgid "Unmatched ( or \\("
msgstr "Ubalanceret ( eller \\("
-#: regcomp.c:177
+#: regcomp.c:187
msgid "Unmatched \\{"
msgstr "Ubalanceret \\{"
-#: regcomp.c:180
+#: regcomp.c:190
msgid "Invalid content of \\{\\}"
msgstr "Ugyldigt indhold i \\{\\}"
-#: regcomp.c:183
+#: regcomp.c:193
msgid "Invalid range end"
msgstr "Ugyldig intervalslutning"
-#: regcomp.c:186
+#: regcomp.c:196
msgid "Memory exhausted"
msgstr "Hukommelsen opbrugt"
-#: regcomp.c:189
+#: regcomp.c:199
msgid "Invalid preceding regular expression"
msgstr "Ugyldigt foregående regulært udtryk"
-#: regcomp.c:192
+#: regcomp.c:202
msgid "Premature end of regular expression"
msgstr "For tidligt slut på regulært udtryk"
-#: regcomp.c:195
+#: regcomp.c:205
msgid "Regular expression too big"
msgstr "Regulært udtryk for stort"
-#: regcomp.c:198
+#: regcomp.c:208
msgid "Unmatched ) or \\)"
msgstr "Ubalanceret ) eller \\)"
-#: regcomp.c:668
+#: regcomp.c:688
msgid "No previous regular expression"
msgstr "Intet foregående regulært udtryk"
+#~ msgid "function %s called\n"
+#~ msgstr "funktionen %s kaldt\n"
+
+#~ msgid "field %d in FIELDWIDTHS, must be > 0"
+#~ msgstr "felt %d i FIELDWIDTHS skal være > 0"
+
#, fuzzy
#~ msgid "or used as a variable or an array"
#~ msgstr "kan ikke bruge funktionsnavnet \"%s\" som variabel eller vektor"
diff --git a/po/de.gmo b/po/de.gmo
index e053b72e..30dd45d8 100644
--- a/po/de.gmo
+++ b/po/de.gmo
Binary files differ
diff --git a/po/de.po b/po/de.po
index d0fad61f..503bcfbc 100644
--- a/po/de.po
+++ b/po/de.po
@@ -6,7 +6,7 @@ msgid ""
msgstr ""
"Project-Id-Version: gawk 3.1.0\n"
"Report-Msgid-Bugs-To: arnold@skeeve.com\n"
-"POT-Creation-Date: 2004-07-15 13:02+0300\n"
+"POT-Creation-Date: 2005-07-06 17:20+0300\n"
"PO-Revision-Date: 2002-04-03 18:55+02:00\n"
"Last-Translator: Christian Kirsch <ck@held.mind.de>\n"
"Language-Team: German <de@li.org>\n"
@@ -89,292 +89,309 @@ msgstr "END-Blöcke müssen einen Aktionsteil haben."
msgid "`%s' is a built-in function, it cannot be redefined"
msgstr "'%s' ist eine eingebaute Funktion und kann nicht umdefiniert werden."
-#: awkgram.y:314
+#: awkgram.y:313
+#, fuzzy
+msgid "regexp constant `//' looks like a C++ comment, but is not"
+msgstr ""
+"Konstanter Regulärer Ausdruck '/%s' sieht wie ein C-Kommentar aus, ist aber "
+"keiner."
+
+#: awkgram.y:316
#, c-format
msgid "regexp constant `/%s/' looks like a C comment, but is not"
msgstr ""
"Konstanter Regulärer Ausdruck '/%s' sieht wie ein C-Kommentar aus, ist aber "
"keiner."
-#: awkgram.y:341 awkgram.y:619
+#: awkgram.y:343 awkgram.y:623
msgid "statement may have no effect"
msgstr "Statement möglicherweise ohne Effekt."
-#: awkgram.y:436 awkgram.y:456
+#: awkgram.y:440 awkgram.y:460
#, fuzzy, c-format
msgid "`%s' used in %s action"
msgstr "'next' in BEGIN- oder END-Aktion benutzt."
-#: awkgram.y:449 awkgram.y:452
+#: awkgram.y:453 awkgram.y:456
msgid "`nextfile' is a gawk extension"
msgstr "'nextfile' ist eine gawk-Erweiterung."
-#: awkgram.y:466
+#: awkgram.y:470
msgid "`return' used outside function context"
msgstr "'return' außerhalb einer Funktion benutzt."
-#: awkgram.y:508
+#: awkgram.y:512
msgid "plain `print' in BEGIN or END rule should probably be `print \"\"'"
msgstr ""
"Einfaches 'print' in BEGIN- oder END-Regel soll vermutlich 'print \"\"' sein."
-#: awkgram.y:521 awkgram.y:528
+#: awkgram.y:525 awkgram.y:532
msgid "`delete array' is a gawk extension"
msgstr "'delete array' ist eine gawk-Erweiterung."
-#: awkgram.y:536 awkgram.y:543
+#: awkgram.y:540 awkgram.y:547
#, fuzzy
msgid "`delete(array)' is a non-portable tawk extension"
msgstr "'delete array' ist eine gawk-Erweiterung."
-#: awkgram.y:587
+#: awkgram.y:591
#, c-format
msgid "duplicate case values in switch body: %s"
msgstr ""
-#: awkgram.y:597
+#: awkgram.y:601
msgid "Duplicate `default' detected in switch body"
msgstr ""
-#: awkgram.y:686
+#: awkgram.y:690
msgid "multistage two-way pipelines don't work"
msgstr "'multistage' Zweiwege-Pipes funktionieren nicht."
-#: awkgram.y:777
+#: awkgram.y:781
msgid "regular expression on right of assignment"
msgstr "Regulärer Ausdruck auf der rechten Seite einer Zuweisung."
-#: awkgram.y:800
+#: awkgram.y:804
msgid "regular expression on left of `~' or `!~' operator"
msgstr "Regulärer Ausdruck links vom '~'- oder '!~'-Operator."
-#: awkgram.y:808
+#: awkgram.y:812
msgid "regular expression on right of comparison"
msgstr "Regulärer Ausdruck rechts von einem Vergleich."
-#: awkgram.y:875
+#: awkgram.y:879
msgid "non-redirected `getline' undefined inside END action"
msgstr ""
"Nicht-umgelenktes 'getline' ist innerhalb der END-Aktion nicht definiert."
-#: awkgram.y:902
+#: awkgram.y:906
msgid "call of `length' without parentheses is not portable"
msgstr "Aufruf von 'length' ohne Klammern ist nicht portabel."
-#: awkgram.y:905
+#: awkgram.y:909
msgid "call of `length' without parentheses is deprecated by POSIX"
msgstr "Aufruf von 'length' ohne Klammern ist in POSIX-Mode veraltet."
-#: awkgram.y:958
+#: awkgram.y:962
msgid "use of non-array as array"
msgstr ""
-#: awkgram.y:960
+#: awkgram.y:964
msgid "invalid subscript expression"
msgstr "Ungültiger Index-Ausdruck."
-#: awkgram.y:1158
+#: awkgram.y:1171
#, fuzzy
msgid "unexpected newline or end of string"
msgstr "Unerwartetes Zeilenende"
-#: awkgram.y:1254
+#: awkgram.y:1267
msgid "empty program text on command line"
msgstr "Kein Programmtext auf der Kommandozeile."
-#: awkgram.y:1307
+#: awkgram.y:1320
#, c-format
msgid "can't open source file `%s' for reading (%s)"
msgstr "Kann Quelldatei '%s' nicht zum Lesen öffnen (%s)."
-#: awkgram.y:1384
+#: awkgram.y:1397
#, c-format
msgid "can't read sourcefile `%s' (%s)"
msgstr "Kann Quelldatei '%s' nicht lesen (%s)."
-#: awkgram.y:1392
+#: awkgram.y:1405
#, c-format
msgid "source file `%s' is empty"
msgstr "Quelldatei '%s' ist leer."
-#: awkgram.y:1590 awkgram.y:1700 awkgram.y:1718 awkgram.y:2068 awkgram.y:2153
+#: awkgram.y:1596 awkgram.y:1718 awkgram.y:1736 awkgram.y:2107 awkgram.y:2194
msgid "source file does not end in newline"
msgstr "Quelldatei hört nicht mit Zeilenende auf."
-#: awkgram.y:1654
+#: awkgram.y:1658
msgid "unterminated regexp ends with `\\' at end of file"
msgstr ""
"Nicht-beendeter Regulärer Ausdruck (hört mit '\\' auf) am Ende der Datei."
-#: awkgram.y:1674
+#: awkgram.y:1682
+#, c-format
+msgid "%s: %d: tawk regex modifier `/.../%c' doesn't work in gawk"
+msgstr ""
+
+#: awkgram.y:1686
+#, c-format
+msgid "tawk regex modifier `/.../%c' doesn't work in gawk"
+msgstr ""
+
+#: awkgram.y:1693
msgid "unterminated regexp"
msgstr "Nicht-beendeter Regulärer Ausdruck"
-#: awkgram.y:1677
+#: awkgram.y:1696
msgid "unterminated regexp at end of file"
msgstr "Nicht-beendeter Regulärer Ausdruck am Dateiende."
-#: awkgram.y:1744
+#: awkgram.y:1762
msgid "use of `\\ #...' line continuation is not portable"
msgstr ""
"Die Verwendung von '\\#...' zur Fortsetzung von Zeilen ist nicht portabel."
-#: awkgram.y:1756
+#: awkgram.y:1774
msgid "backslash not last character on line"
msgstr "Backslash ist nicht letztes Zeichen auf der Zeile."
-#: awkgram.y:1801
+#: awkgram.y:1819
msgid "POSIX does not allow operator `**='"
msgstr "POSIX erlaubt den Operator '**=' nicht."
-#: awkgram.y:1803
+#: awkgram.y:1821
msgid "old awk does not support operator `**='"
msgstr "Das alte awk erlaubt den Operator '**=' nicht."
-#: awkgram.y:1812
+#: awkgram.y:1830
msgid "POSIX does not allow operator `**'"
msgstr "POSIX erlaubt den Operator '**' nicht."
-#: awkgram.y:1814
+#: awkgram.y:1832
msgid "old awk does not support operator `**'"
msgstr "Das alte awk erlaubt den Operator '**' nicht."
-#: awkgram.y:1845
+#: awkgram.y:1863
msgid "operator `^=' is not supported in old awk"
msgstr "Das alte awk kennt den Operator '^=' nicht."
-#: awkgram.y:1853
+#: awkgram.y:1871
msgid "operator `^' is not supported in old awk"
msgstr "Das alte awk kennt den Operator '^' nicht."
-#: awkgram.y:1937 awkgram.y:1954
+#: awkgram.y:1955 awkgram.y:1970
msgid "unterminated string"
msgstr "Nicht-beendeter String"
-#: awkgram.y:2114
+#: awkgram.y:2155
#, c-format
msgid "invalid char '%c' in expression"
msgstr "Ungültiges Zeichen '%c' in einem Ausdruck."
-#: awkgram.y:2162
+#: awkgram.y:2203
#, c-format
msgid "`%s' is a gawk extension"
msgstr "'%s' ist eine gawk-Erweiterung"
-#: awkgram.y:2165
+#: awkgram.y:2206
#, c-format
msgid "`%s' is a Bell Labs extension"
msgstr "'%s' ist eine Erweiterung der Bell Labs."
-#: awkgram.y:2168
+#: awkgram.y:2209
#, c-format
msgid "POSIX does not allow `%s'"
msgstr "POSIX gestattet '%s' nicht."
-#: awkgram.y:2172
+#: awkgram.y:2213
#, c-format
msgid "`%s' is not supported in old awk"
msgstr "Das alte awk gestattet '%s' nicht."
-#: awkgram.y:2198
+#: awkgram.y:2239
msgid "`goto' considered harmful!\n"
msgstr "'goto' gilt als schlechter Stil!\n"
-#: awkgram.y:2260
+#: awkgram.y:2301
#, c-format
msgid "%d is invalid as number of arguments for %s"
msgstr "Unzulässige Argumentzahl %d für %s."
-#: awkgram.y:2279 awkgram.y:2282
+#: awkgram.y:2320 awkgram.y:2323
msgid "match: third argument is a gawk extension"
msgstr "match: Das dritte Argument ist eine gawk-Erweiterung."
-#: awkgram.y:2295
+#: awkgram.y:2336
#, c-format
msgid "%s: string literal as last arg of substitute has no effect"
msgstr "%s: Ein String als letztes Argument von substitute hat keinen Effekt."
-#: awkgram.y:2298
+#: awkgram.y:2339
#, fuzzy, c-format
msgid "%s third parameter is not a changeable object"
msgstr "Der dritte Parameter von sub ist ein unveränderliches Objekt."
-#: awkgram.y:2325 awkgram.y:2328
+#: awkgram.y:2366 awkgram.y:2369
msgid "close: second argument is a gawk extension"
msgstr "close: Das zweite Argument ist eine gawk-Erweiterung."
-#: awkgram.y:2338
+#: awkgram.y:2379
msgid "use of dcgettext(_\"...\") is incorrect: remove leading underscore"
msgstr ""
"Fehlerhafte Verwendung von dcgettext(_\"...\"): \n"
"Entfernen Sie den führenden Unterstrich."
-#: awkgram.y:2353
+#: awkgram.y:2394
#, fuzzy
msgid "use of dcngettext(_\"...\") is incorrect: remove leading underscore"
msgstr ""
"Fehlerhafte Verwendung von dcgettext(_\"...\"): \n"
"Entfernen Sie den führenden Unterstrich."
-#: awkgram.y:2424
+#: awkgram.y:2465
#, c-format
msgid "function `%s': parameter #%d, `%s', duplicates parameter #%d"
msgstr "Funktion '%s': Parameter #%d, '%s' wiederholt Parameter #%d."
-#: awkgram.y:2457
+#: awkgram.y:2498
#, c-format
msgid "function `%s': parameter `%s' shadows global variable"
msgstr "Funktion '%s': Parameter '%s' verdeckt eine globale Variable."
-#: awkgram.y:2569
+#: awkgram.y:2610
#, c-format
msgid "could not open `%s' for writing (%s)"
msgstr "Kann '%s' nicht zum Schreiben öffnen (%s)."
-#: awkgram.y:2570 profile.c:93
+#: awkgram.y:2611 profile.c:93
msgid "sending profile to standard error"
msgstr "Schicke Profile auf Stadard-Fehlerausgabe."
-#: awkgram.y:2602
+#: awkgram.y:2643
#, c-format
msgid "%s: close failed (%s)"
msgstr "%s: close gescheitert (%s)."
-#: awkgram.y:2723
+#: awkgram.y:2764
msgid "shadow_funcs() called twice!"
msgstr "shadow_funcs() zweimal aufgerufen!"
-#: awkgram.y:2750
+#: awkgram.y:2791
msgid "there were shadowed variables."
msgstr ""
-#: awkgram.y:2823
+#: awkgram.y:2864
#, c-format
msgid "function `%s': can't use function name as parameter name"
msgstr "Funktion '%s': Kann Funktionsnamen nicht als Parameternamen benutzen."
-#: awkgram.y:2833
+#: awkgram.y:2874
#, c-format
msgid "function name `%s' previously defined"
msgstr "Funktion '%s' ist bereits definiert."
-#: awkgram.y:2984 awkgram.y:2990
+#: awkgram.y:3025 awkgram.y:3031
#, c-format
msgid "function `%s' called but never defined"
msgstr "Aufgerufene funktion '%s' ist nirgends definiert."
-#: awkgram.y:2993
+#: awkgram.y:3034
#, c-format
msgid "function `%s' defined but never called"
msgstr "Funktion '%s' wird nirgends aufgerufen."
-#: awkgram.y:3020
+#: awkgram.y:3061
#, c-format
msgid "regexp constant for parameter #%d yields boolean value"
msgstr ""
"Konstanter Regulärer Ausdruck für Parameter #%d ergibt einen logischen Wert."
-#: awkgram.y:3033
+#: awkgram.y:3105
#, fuzzy, c-format
msgid ""
"function `%s' called with space between name and `(',\n"
@@ -383,196 +400,201 @@ msgstr ""
"Funktion '%s' mit Leerzeichen zwischen Name und '(' aufgerufen, \n"
"%s"
-#: builtin.c:149
+#: builtin.c:145
#, c-format
msgid "%s to \"%s\" failed (%s)"
msgstr "%s to \"%s\" fehlgeschlagen (%s)"
-#: builtin.c:150
+#: builtin.c:146
msgid "standard output"
msgstr "Standardausgabe"
-#: builtin.c:151
+#: builtin.c:147
msgid "reason unknown"
msgstr "Unbekannte Ursache"
-#: builtin.c:164
+#: builtin.c:160
msgid "exp: received non-numeric argument"
msgstr "exp: Argument ist keine Zahl."
-#: builtin.c:170
+#: builtin.c:166
#, c-format
msgid "exp: argument %g is out of range"
msgstr "exp: Argument %g außerhalb des gültigen Zahlenbereichs."
-#: builtin.c:228
+#: builtin.c:224
#, c-format
msgid "fflush: cannot flush: pipe `%s' opened for reading, not writing"
msgstr ""
"fflush: Leeren der Puffer nicht möglich, Pipe »%s« ist nur zum Lesen "
"geöffnet."
-#: builtin.c:231
+#: builtin.c:227
#, c-format
msgid "fflush: cannot flush: file `%s' opened for reading, not writing"
msgstr ""
"fflush: Leeren der Puffer nicht möglich, Datei »%s« ist nur zum Lesen "
"geöffnet."
-#: builtin.c:243
+#: builtin.c:239
#, c-format
msgid "fflush: `%s' is not an open file, pipe or co-process"
msgstr "fflush: »%s« ist keine geöffnete Datei, Pipe oder Prozess."
-#: builtin.c:338
+#: builtin.c:332
msgid "index: received non-string first argument"
msgstr "index: Erstes Argument ist kein String."
-#: builtin.c:340
+#: builtin.c:334
msgid "index: received non-string second argument"
msgstr "index: Zweites Argument ist kein string."
-#: builtin.c:454
+#: builtin.c:449
msgid "int: received non-numeric argument"
msgstr "Argument ist keine Zahl."
-#: builtin.c:471
+#: builtin.c:472
+#, fuzzy
+msgid "`length(array)' is a gawk extension"
+msgstr "'delete array' ist eine gawk-Erweiterung."
+
+#: builtin.c:481
msgid "length: received non-string argument"
msgstr "length: Argument ist kein String."
-#: builtin.c:487
+#: builtin.c:506
msgid "log: received non-numeric argument"
msgstr "log: Argument ist keine Zahl."
-#: builtin.c:490
+#: builtin.c:509
#, c-format
msgid "log: received negative argument %g"
msgstr "log: Negatives Argument %g."
-#: builtin.c:654 builtin.c:657
+#: builtin.c:673 builtin.c:676
msgid "must use `count$' on all formats or none"
msgstr ""
-#: builtin.c:759
+#: builtin.c:778
msgid "`$' is not permitted in awk formats"
msgstr "»$« ist in awk-Formaten nicht zulässig."
-#: builtin.c:765
+#: builtin.c:784
msgid "arg count with `$' must be > 0"
msgstr "Argumentnummer bei »$« muss > 0 sein."
-#: builtin.c:767
+#: builtin.c:786
#, fuzzy, c-format
msgid "arg count %ld greater than total number of supplied arguments"
msgstr "Argumentnummer %d ist größer als Anzahl angegebener Argumente."
-#: builtin.c:769
+#: builtin.c:788
msgid "`$' not permitted after period in format"
msgstr "»$« nach Punkt in Formatangabe nicht zulässig."
-#: builtin.c:782
+#: builtin.c:801
msgid "no `$' supplied for positional field width or precision"
msgstr "»$« fehlt in positionsabhängiger Feldbreite oder Genauigkeit."
#
-#: builtin.c:848
+#: builtin.c:867
msgid "`l' is meaningless in awk formats; ignored"
msgstr "»l« ist in awk-Formaten bedeutungslos, ignoriert."
-#: builtin.c:852
+#: builtin.c:871
msgid "`l' is not permitted in POSIX awk formats"
msgstr "»l« in POSIX-awk-Formaten nicht zulässig."
-#: builtin.c:863
+#: builtin.c:882
msgid "`L' is meaningless in awk formats; ignored"
msgstr "»L« ist in awk-Formaten bedeutungslos, ignoriert."
-#: builtin.c:867
+#: builtin.c:886
msgid "`L' is not permitted in POSIX awk formats"
msgstr "»L« in POSIX-awk-Formaten nicht zulässig."
-#: builtin.c:878
+#: builtin.c:897
msgid "`h' is meaningless in awk formats; ignored"
msgstr "»h« ist in awk-Formaten bedeutungslos, ignoriert."
-#: builtin.c:882
+#: builtin.c:901
msgid "`h' is not permitted in POSIX awk formats"
msgstr "»h« in POSIX-awk-Formaten nicht zulässig.<"
-#: builtin.c:1111
+#: builtin.c:1132
#, c-format
msgid "[s]printf: value %g is out of range for `%%%c' format"
msgstr ""
-#: builtin.c:1171
+#: builtin.c:1198
msgid "not enough arguments to satisfy format string"
msgstr "Nicht genügend Argumente für Formatangabe."
-#: builtin.c:1173
+#: builtin.c:1200
msgid "^ ran out for this one"
msgstr "^ ran out for this one"
-#: builtin.c:1178
+#: builtin.c:1205
msgid "[s]printf: format specifier does not have control letter"
msgstr "[s]printf: Format-Specifier hat keinen Controlcode."
-#: builtin.c:1181
+#: builtin.c:1208
msgid "too many arguments supplied for format string"
msgstr "Zu viele Argumente für Formatstring."
-#: builtin.c:1247 builtin.c:1250
+#: builtin.c:1274 builtin.c:1277
msgid "printf: no arguments"
msgstr "printf: Keine Argumente"
-#: builtin.c:1274
+#: builtin.c:1301
msgid "sqrt: received non-numeric argument"
msgstr "sqrt: Argument ist keine Zahl."
-#: builtin.c:1278
+#: builtin.c:1305
#, c-format
msgid "sqrt: called with negative argument %g"
msgstr "sqrt: Argument %g ist negativ."
-#: builtin.c:1301
+#: builtin.c:1329
#, c-format
msgid "substr: start index %g is invalid, using 1"
msgstr "substr: Start-Index %g ist ungültig, 1 wird benutzt."
-#: builtin.c:1306
+#: builtin.c:1334
#, c-format
msgid "substr: non-integer start index %g will be truncated"
msgstr "substr: Start-Wert %g wird abgeschnitten."
-#: builtin.c:1325
+#: builtin.c:1353
#, fuzzy, c-format
msgid "substr: length %g is not >= 1"
msgstr "substr: Länge %g ist kleiner oder gleich 0."
-#: builtin.c:1327
+#: builtin.c:1355
#, fuzzy, c-format
msgid "substr: length %g is not >= 0"
msgstr "substr: Länge %g ist kleiner oder gleich 0."
-#: builtin.c:1334
+#: builtin.c:1362
#, c-format
msgid "substr: non-integer length %g will be truncated"
msgstr "substr: Länge %g wird abgeschnitten."
-#: builtin.c:1339
+#: builtin.c:1367
#, c-format
msgid "substr: length %g too big for string indexing, truncating to %g"
msgstr ""
-#: builtin.c:1351
+#: builtin.c:1379
msgid "substr: source string is zero length"
msgstr "substr: String ist leer."
-#: builtin.c:1357
+#: builtin.c:1395
#, fuzzy, c-format
msgid "substr: start index %g is past end of string"
msgstr "substr: Start-Wert %d liegt hinter dem Ende des Strings."
-#: builtin.c:1365
+#: builtin.c:1403
#, fuzzy, c-format
msgid ""
"substr: length %g at start index %g exceeds length of first argument (%lu)"
@@ -580,196 +602,196 @@ msgstr ""
"substr: Länge %d am Start-Wert %d überschreitet Länge des ersten Arguments (%"
"d)."
-#: builtin.c:1400
+#: builtin.c:1478
#, fuzzy
msgid "strftime: received non-string first argument"
msgstr "strftime: Erstes Argument ist kein String."
-#: builtin.c:1406
+#: builtin.c:1484
msgid "strftime: received empty format string"
msgstr "strftime: Format-String ist leer."
-#: builtin.c:1415
+#: builtin.c:1493
#, fuzzy
msgid "strftime: received non-numeric second argument"
msgstr "strftime. Zweites Argument ist keine Zahl."
-#: builtin.c:1478
+#: builtin.c:1556
msgid "mktime: received non-string argument"
msgstr "mktime: Argument ist kein String."
-#: builtin.c:1523
+#: builtin.c:1601
#, fuzzy
msgid "system: received non-string argument"
msgstr "system: Argument ist kein String."
-#: builtin.c:1644 eval.c:2019
+#: builtin.c:1722 eval.c:2039
#, fuzzy, c-format
msgid "reference to uninitialized field `$%d'"
msgstr "Referenz auf die nicht-initialisierte Variable '%s'."
-#: builtin.c:1671
+#: builtin.c:1827
#, fuzzy
msgid "tolower: received non-string argument"
msgstr "tolower: Argument ist kein String."
-#: builtin.c:1720
+#: builtin.c:1857
#, fuzzy
msgid "toupper: received non-string argument"
msgstr "toupper: Argument ist kein String."
-#: builtin.c:1765
+#: builtin.c:1890
msgid "atan2: received non-numeric first argument"
msgstr "atan2: Erstes Argument ist keine Zahl."
-#: builtin.c:1767
+#: builtin.c:1892
msgid "atan2: received non-numeric second argument"
msgstr "atan2: Zweites Argument ist keine Zahl."
-#: builtin.c:1786
+#: builtin.c:1911
msgid "sin: received non-numeric argument"
msgstr "sin: Argument istk eine Zahl."
-#: builtin.c:1802
+#: builtin.c:1927
msgid "cos: received non-numeric argument"
msgstr "cos: Argument ist keine Zahl."
-#: builtin.c:1852
+#: builtin.c:1977
msgid "srand: received non-numeric argument"
msgstr "srand: Argument ist keine Zahl."
-#: builtin.c:1887
+#: builtin.c:2012
msgid "match: third argument is not an array"
msgstr "match: Drittes Argument ist kein Array."
-#: builtin.c:2414
+#: builtin.c:2555
msgid "gensub: third argument of 0 treated as 1"
msgstr "gensub: Drittes Argument 0 als 1 interpretiert"
-#: builtin.c:2572
+#: builtin.c:2715
msgid "lshift: received non-numeric first argument"
msgstr "lshift: Erstes Argument ist keine Zahl."
-#: builtin.c:2574
+#: builtin.c:2717
#, fuzzy
msgid "lshift: received non-numeric second argument"
msgstr "strftime. Zweites Argument ist keine Zahl."
-#: builtin.c:2580
+#: builtin.c:2723
#, c-format
msgid "lshift(%lf, %lf): negative values will give strange results"
msgstr ""
"lshift(%lf, %lf): Negative Werte werden merkwürdige Ergebnisse liefern."
-#: builtin.c:2582
+#: builtin.c:2725
#, c-format
msgid "lshift(%lf, %lf): fractional values will be truncated"
msgstr "lshift(%lf, %lf): Dezimalteil wird abgeschnitten."
-#: builtin.c:2584
+#: builtin.c:2727
#, c-format
msgid "lshift(%lf, %lf): too large shift value will give strange results"
msgstr ""
"lshift(%lf, %lf): Zu große Shift-Werte werden merkwürdige Ergebnisse liefern."
-#: builtin.c:2610
+#: builtin.c:2753
msgid "rshift: received non-numeric first argument"
msgstr "rshift: Erstes Argument ist keine Zahl."
-#: builtin.c:2612
+#: builtin.c:2755
#, fuzzy
msgid "rshift: received non-numeric second argument"
msgstr "strftime. Zweites Argument ist keine Zahl."
-#: builtin.c:2618
+#: builtin.c:2761
#, c-format
msgid "rshift(%lf, %lf): negative values will give strange results"
msgstr ""
"rshift (%lf, %lf): Negative Werte werden merkwürdige Ergebnisse liefern."
-#: builtin.c:2620
+#: builtin.c:2763
#, c-format
msgid "rshift(%lf, %lf): fractional values will be truncated"
msgstr "rshift(%lf, %lf): Dezimalteil wird abgeschnitten."
-#: builtin.c:2622
+#: builtin.c:2765
#, c-format
msgid "rshift(%lf, %lf): too large shift value will give strange results"
msgstr ""
"rshift(%lf, %lf): Zu große Shift-Werte werden merkwürdige Ergebnisse liefern."
-#: builtin.c:2648
+#: builtin.c:2791
msgid "and: received non-numeric first argument"
msgstr "and: Erstes Argument ist keine Zahl."
-#: builtin.c:2650
+#: builtin.c:2793
#, fuzzy
msgid "and: received non-numeric second argument"
msgstr "atan2: Zweites Argument ist keine Zahl."
-#: builtin.c:2656
+#: builtin.c:2799
#, c-format
msgid "and(%lf, %lf): negative values will give strange results"
msgstr "and(%lf, %lf): Negative Werte werden merkwürdige Ergebnisse liefern."
-#: builtin.c:2658
+#: builtin.c:2801
#, c-format
msgid "and(%lf, %lf): fractional values will be truncated"
msgstr "and(%lf, %lf): Dezimalteil wird abgeschnitten."
-#: builtin.c:2684
+#: builtin.c:2827
msgid "or: received non-numeric first argument"
msgstr "or: Erstes Argument ist keine Zahl."
-#: builtin.c:2686
+#: builtin.c:2829
#, fuzzy
msgid "or: received non-numeric second argument"
msgstr "atan2: Zweites Argument ist keine Zahl."
-#: builtin.c:2692
+#: builtin.c:2835
#, c-format
msgid "or(%lf, %lf): negative values will give strange results"
msgstr "or(%lf, %lf): Negative Werte werden merkwürdige Ergebnisse liefern."
-#: builtin.c:2694
+#: builtin.c:2837
#, c-format
msgid "or(%lf, %lf): fractional values will be truncated"
msgstr "or(%lf, %lf): Dezimalteil wird abgeschnitten."
-#: builtin.c:2720
+#: builtin.c:2863
msgid "xor: received non-numeric first argument"
msgstr "xor: Erstes Argument ist keine Zahl."
-#: builtin.c:2722
+#: builtin.c:2865
#, fuzzy
msgid "xor: received non-numeric second argument"
msgstr "atan2: Zweites Argument ist keine Zahl."
-#: builtin.c:2728
+#: builtin.c:2871
#, c-format
msgid "xor(%lf, %lf): negative values will give strange results"
msgstr "xor(%lf, %lf: Negative Werte werden merkwürdige Ergebnisse liefern."
-#: builtin.c:2730
+#: builtin.c:2873
#, c-format
msgid "xor(%lf, %lf): fractional values will be truncated"
msgstr "xor(%lf, %lf): Dezimalteil wird abgeschnitten."
-#: builtin.c:2754
+#: builtin.c:2897
msgid "compl: received non-numeric argument"
msgstr "compl: Erstes Argument ist keine Zahl."
-#: builtin.c:2760
+#: builtin.c:2903
#, c-format
msgid "compl(%lf): negative value will give strange results"
msgstr "compl(%lf): Negativer Wert wird merkwürdige Ergebnisse liefern."
-#: builtin.c:2762
+#: builtin.c:2905
#, c-format
msgid "compl(%lf): fractional value will be truncated"
msgstr "compl(%lf): Dezimalteil wird abgeschnitten."
-#: builtin.c:2935
+#: builtin.c:3078
#, c-format
msgid "dcgettext: `%s' is not a valid locale category"
msgstr "dcgettext: '%s' ist keine gültige Locale-Kategorie."
@@ -779,73 +801,73 @@ msgstr "dcgettext: '%s' ist keine gültige Locale-Kategorie."
msgid "unknown nodetype %d"
msgstr "Unbekannter Knotentyp %d"
-#: eval.c:350
+#: eval.c:353
msgid "buffer overflow in genflags2str"
msgstr "Pufferüberlauf in genflags2str."
-#: eval.c:382 eval.c:388 profile.c:837
+#: eval.c:385 eval.c:391 profile.c:838
#, c-format
msgid "attempt to use array `%s' in a scalar context"
msgstr "Versuch, das Array '%s' in Skalarkontext zu verwenden."
-#: eval.c:730
+#: eval.c:733
#, fuzzy, c-format
msgid "for loop: array `%s' changed size from %ld to %ld during loop execution"
msgstr ""
"for-Schleife: Array '%s' ändert Größse von %d zu %d innerhalb der Schleife."
-#: eval.c:751
+#: eval.c:754
msgid "`break' outside a loop is not portable"
msgstr "'break' außerhalb einer Schleife ist nicht portabel."
-#: eval.c:755
+#: eval.c:758
msgid "`break' outside a loop is not allowed"
msgstr "'break' außerhalb einer Schleife ist nicht zulässig."
-#: eval.c:772
+#: eval.c:775
msgid "`continue' outside a loop is not portable"
msgstr "'continue' außerhalb einer Schleife ist nicht portabel."
-#: eval.c:776
+#: eval.c:779
msgid "`continue' outside a loop is not allowed"
msgstr "'continue' außerhalb einer Schleife ist nicht zulässig."
-#: eval.c:810
+#: eval.c:813
msgid "`next' cannot be called from a BEGIN rule"
msgstr "'next' kann nicht in einer BEGIN-Regel benutzt werden."
-#: eval.c:812
+#: eval.c:815
msgid "`next' cannot be called from an END rule"
msgstr "'next' kann nicht in einer END-Regel benutzt werden."
-#: eval.c:821
+#: eval.c:824
msgid "`nextfile' cannot be called from a BEGIN rule"
msgstr "'nextfile' kann nicht in einer BEGIN-Regel benutzt werden."
-#: eval.c:823
+#: eval.c:826
msgid "`nextfile' cannot be called from an END rule"
msgstr "'nextfile' kann nicht in einer END-Regel benutzt werden."
-#: eval.c:872
+#: eval.c:875
msgid "statement has no effect"
msgstr "Anweisung hat keinen Effekt."
-#: eval.c:915 eval.c:1873
+#: eval.c:952 eval.c:1893
#, c-format
msgid "can't use function name `%s' as variable or array"
msgstr "Kann Funktion '%s' nicht als Variable oder Array verwenden."
-#: eval.c:922 eval.c:928
+#: eval.c:959 eval.c:965
#, c-format
msgid "reference to uninitialized argument `%s'"
msgstr "Referenz auf nicht-initialisiertes Argument '%s'."
-#: eval.c:937 eval.c:1882
+#: eval.c:974 eval.c:1902
#, c-format
msgid "reference to uninitialized variable `%s'"
msgstr "Referenz auf die nicht-initialisierte Variable '%s'."
-#: eval.c:1083
+#: eval.c:1120
msgid ""
"concatenation: side effects in one expression have changed the length of "
"another!"
@@ -853,49 +875,44 @@ msgstr ""
"Konkatenierung: Seiteneffekte in einem Ausdruck haben die Länge des anderen\n"
"geändert!"
-#: eval.c:1162
+#: eval.c:1200
msgid "assignment used in conditional context"
msgstr "Zuweisung in einer Bedingung."
-#: eval.c:1252
+#: eval.c:1278
msgid "division by zero attempted"
msgstr "Division durch Null versucht."
-#: eval.c:1267
+#: eval.c:1293
#, c-format
msgid "division by zero attempted in `%%'"
msgstr "Division durch Null versucht in '%%'."
-#: eval.c:1282 profile.c:713
+#: eval.c:1308 profile.c:714
#, c-format
msgid "illegal type (%s) in tree_eval"
msgstr "Illegaler Typ (%s) in tree_eval"
-#: eval.c:1459
+#: eval.c:1471
msgid "division by zero attempted in `/='"
msgstr "Division durch Null versucht in '/='."
-#: eval.c:1477
+#: eval.c:1493
#, c-format
msgid "division by zero attempted in `%%='"
msgstr "Division durch Null versucht in '%%='."
-#: eval.c:1738
+#: eval.c:1758
#, c-format
msgid "function `%s' called with more arguments than declared"
msgstr "Funktion '%s' mit zu vielen Argumenten aufgerufen."
-#: eval.c:1782
+#: eval.c:1802
#, c-format
msgid "function `%s' not defined"
msgstr "Funktion '%s' ist nicht definiert."
-#: eval.c:1788
-#, c-format
-msgid "function %s called\n"
-msgstr "Funktion %s aufgerufen\n"
-
-#: eval.c:1845
+#: eval.c:1865
#, c-format
msgid ""
"\n"
@@ -906,43 +923,43 @@ msgstr ""
"\t# Funktion Aufruf-Stack\n"
"\n"
-#: eval.c:1848
+#: eval.c:1868
#, c-format
msgid "\t# -- main --\n"
msgstr "\t# -- main --\n"
-#: eval.c:2003
+#: eval.c:2023
msgid "attempt to field reference from non-numeric value"
msgstr "Nicht-numerischer Wert für Feldreferenz verwendet."
-#: eval.c:2005
+#: eval.c:2025
msgid "attempt to reference from null string"
msgstr "Referenz von einem Null-String"
-#: eval.c:2011
+#: eval.c:2031
#, c-format
msgid "attempt to access field %d"
msgstr "Versuch des Zugriffs auf Feld %d."
-#: eval.c:2032 eval.c:2039 profile.c:934
+#: eval.c:2052 eval.c:2059 profile.c:935
msgid "assignment is not allowed to result of builtin function"
msgstr ""
"Zuweisungen an das Ergebnis einer eingebauten Funktion sind nicht erlaubt."
-#: eval.c:2103
+#: eval.c:2123
msgid "`IGNORECASE' is a gawk extension"
msgstr "'IGNORECASE' ist eine gawk-Erweiterung"
-#: eval.c:2133
+#: eval.c:2153
msgid "`BINMODE' is a gawk extension"
msgstr "'BINMODE' ist eine gawk-Erweiterung."
-#: eval.c:2255
+#: eval.c:2275
#, c-format
msgid "bad `%sFMT' specification `%s'"
msgstr "Falsche '%sFMT'-Angabe '%s'"
-#: eval.c:2333
+#: eval.c:2353
msgid "turning off `--lint' due to assignment to `LINT'"
msgstr "'--lint' wird abgeschaltet, da 'LINT' gesetzt ist."
@@ -990,9 +1007,9 @@ msgid "extension: function name `%s' previously defined"
msgstr "Funktion '%s' ist bereits definiert."
#: ext.c:201
-#, c-format
-msgid "function `%s' defined to take no more than `%d' argument(s)"
-msgstr ""
+#, fuzzy, c-format
+msgid "function `%s' defined to take no more than %d argument(s)"
+msgstr "Funktion '%s' wird nirgends aufgerufen."
#: ext.c:204
#, fuzzy, c-format
@@ -1013,549 +1030,554 @@ msgstr ""
msgid "Operation Not Supported"
msgstr "Operation nicht möglich."
-#: field.c:315
+#: field.c:326
msgid "NF set to negative value"
msgstr ""
-#: field.c:808
+#: field.c:819
msgid "split: second argument is not an array"
msgstr "split: Zweites Argument ist kein Array."
-#: field.c:842
+#: field.c:853
msgid "split: null string for third arg is a gawk extension"
msgstr "split: Null-String als drittes Argument ist eine gawk-Erweiterung."
-#: field.c:894
+#: field.c:905
msgid "`FIELDWIDTHS' is a gawk extension"
msgstr "'FIELDWIDTHS' ist eine gawk-Erweiterung."
-#: field.c:921
+#: field.c:935 field.c:946
#, c-format
-msgid "field %d in FIELDWIDTHS, must be > 0"
-msgstr "Feld %d in FIELDWIDTHS muss > 0 sein."
+msgid "invalid FIELDWIDTHS value, near `%s'"
+msgstr ""
-#: field.c:994
+#: field.c:1027
msgid "null string for `FS' is a gawk extension"
msgstr "Null-String für 'FS' ist eine gawk-Erweiterung."
-#: getopt.c:692 getopt.c:711
+#: getopt.c:571 getopt.c:590
#, c-format
msgid "%s: option `%s' is ambiguous\n"
msgstr "%s: Option '%s' ist mehrdeutig.\n"
-#: getopt.c:744 getopt.c:748
+#: getopt.c:623 getopt.c:627
#, c-format
msgid "%s: option `--%s' doesn't allow an argument\n"
msgstr "%s: Option '--%s' erlaubt kein Argument.\n"
-#: getopt.c:757 getopt.c:762
+#: getopt.c:636 getopt.c:641
#, c-format
msgid "%s: option `%c%s' doesn't allow an argument\n"
msgstr "%s: Option '%c%s\" erlaubt kein Argument.\n"
-#: getopt.c:807 getopt.c:829 getopt.c:1159 getopt.c:1181
+#: getopt.c:687 getopt.c:709 getopt.c:1040 getopt.c:1062
#, c-format
msgid "%s: option `%s' requires an argument\n"
msgstr "%s: Option '%s' erfordert ein Argument.\n"
-#: getopt.c:867 getopt.c:870
+#: getopt.c:747 getopt.c:750
#, c-format
msgid "%s: unrecognized option `--%s'\n"
msgstr "%s: Unbekannte Option '--%s'.\n"
-#: getopt.c:878 getopt.c:881
+#: getopt.c:758 getopt.c:761
#, c-format
msgid "%s: unrecognized option `%c%s'\n"
msgstr "%s: Unbekannte Option '%c%s'.\n"
-#: getopt.c:936 getopt.c:939
+#: getopt.c:816 getopt.c:819
#, c-format
msgid "%s: illegal option -- %c\n"
msgstr "%s: Illegale Option -- %c.\n"
-#: getopt.c:945 getopt.c:948
+#: getopt.c:825 getopt.c:828
#, c-format
msgid "%s: invalid option -- %c\n"
msgstr "%s: Ungültige Option -- %c.\n"
-#: getopt.c:1003 getopt.c:1022 getopt.c:1234 getopt.c:1255 main.c:433
+#: getopt.c:883 getopt.c:902 getopt.c:1115 getopt.c:1136 main.c:448
#, c-format
msgid "%s: option requires an argument -- %c\n"
msgstr "%s Option erfordert ein Argument -- %c.\n"
-#: getopt.c:1074 getopt.c:1093
+#: getopt.c:955 getopt.c:974
#, c-format
msgid "%s: option `-W %s' is ambiguous\n"
msgstr "%s: Option '-W %s' ist mehrdeutig.\n"
-#: getopt.c:1117 getopt.c:1138
+#: getopt.c:998 getopt.c:1019
#, c-format
msgid "%s: option `-W %s' doesn't allow an argument\n"
msgstr "%s. Option '-W %s' erlaubt kein Argument.\n"
-#: io.c:308
+#: io.c:307
#, c-format
msgid "cannot open file `%s' for reading (%s)"
msgstr "Kann Datei '%s' nicht zum Lesen öffnen (%s)."
-#: io.c:395
+#: io.c:398
#, c-format
msgid "close of fd %d (`%s') failed (%s)"
msgstr "Schließen von Dateideskriptor %d ('%s') gescheitert (%s)."
-#: io.c:533
+#: io.c:536
#, c-format
msgid "invalid tree type %s in redirect()"
msgstr "Ungültiger Tree-Typ %s in redirect()."
-#: io.c:539
+#: io.c:542
#, c-format
msgid "expression in `%s' redirection only has numeric value"
msgstr "Ausdruck in '%s' Umlenkung hat nur einen numerischen Wert."
-#: io.c:545
+#: io.c:548
#, c-format
msgid "expression for `%s' redirection has null string value"
msgstr "Ausdruck für '%s' Umlenkung ist ein leerer String."
-#: io.c:550
+#: io.c:553
#, c-format
msgid "filename `%s' for `%s' redirection may be result of logical expression"
msgstr ""
"Dateiname '%s' für '%s' Umlenkung kann Ergebnis eines logischen Ausdrucks "
"sein."
-#: io.c:588
+#: io.c:591
#, c-format
msgid "unnecessary mixing of `>' and `>>' for file `%.*s'"
msgstr "Unnötige Kombination von '>' und '>>' für Datei '%.*s'."
-#: io.c:640
+#: io.c:643
#, c-format
msgid "can't open pipe `%s' for output (%s)"
msgstr "Kann Pipe '%s' nicht für Ausgabe öffnen (%s)."
-#: io.c:649
+#: io.c:652
#, c-format
msgid "can't open pipe `%s' for input (%s)"
msgstr "Kann Pipe '%s' nicht für Eingabe öffnen (%s)."
-#: io.c:662
+#: io.c:665
#, c-format
msgid "can't open two way socket `%s' for input/output (%s)"
msgstr "Kann bidirektionalen Socket '%s' nicht für Ein-/Ausgabe öffnen (%s)."
-#: io.c:666
+#: io.c:669
#, c-format
msgid "can't open two way pipe `%s' for input/output (%s)"
msgstr "Kann bidirektionale Pipe '%s' nicht für Ein-/Ausgabe öffnen (%s)."
-#: io.c:742
+#: io.c:745
#, c-format
msgid "can't redirect from `%s' (%s)"
msgstr "Kann nicht von '%s' umlenken (%s)."
-#: io.c:745
+#: io.c:748
#, c-format
msgid "can't redirect to `%s' (%s)"
msgstr "Kann nicht auf '%s' umlenken (%s)."
-#: io.c:784
+#: io.c:787
msgid ""
"reached system limit for open files: starting to multiplex file descriptors"
msgstr ""
"Systemgrenze offener Dateien erreicht; beginne mit Multiplexing von "
"Dateideskriptoren."
-#: io.c:800
+#: io.c:803
#, c-format
msgid "close of `%s' failed (%s)."
msgstr "Schließen von '%s' gescheitert (%s)."
-#: io.c:808
+#: io.c:811
msgid "too many pipes or input files open"
msgstr "Zu viele Pipes oder Eingabedateien offen."
-#: io.c:831
+#: io.c:834
msgid "close: second argument must be `to' or `from'"
msgstr "close: Zweites Argument muss 'to' oder 'from' sein."
-#: io.c:845
+#: io.c:848
#, c-format
msgid "close: `%.*s' is not an open file, pipe or co-process"
msgstr "close: '%.*s' ist keine offene Datei, Pipe oder Ko-Prozess."
-#: io.c:849
+#: io.c:852
msgid "close of redirection that was never opened"
msgstr "'close' für eine Umlenkung, die nie geöffnet wurde."
-#: io.c:945
+#: io.c:948
#, c-format
msgid "close: redirection `%s' not opened with `|&', second argument ignored"
msgstr ""
"close: Umlenkung '%s' nicht mit '[&' geöffnet, zweites Argument wird "
"ignoriert."
-#: io.c:960
+#: io.c:964
#, c-format
msgid "failure status (%d) on pipe close of `%s' (%s)"
msgstr "Fehlerstatus (%d) beim Schließen der Pipe '%s' (%s)."
-#: io.c:963
+#: io.c:967
#, c-format
msgid "failure status (%d) on file close of `%s' (%s)"
msgstr "Fehlerstatus (%d) beim Schließen de rDatei '%s' (%s)."
-#: io.c:983
+#: io.c:987
#, c-format
msgid "no explicit close of socket `%s' provided"
msgstr "Das explizite des Sockets '%s' fehlt."
-#: io.c:986
+#: io.c:990
#, c-format
msgid "no explicit close of co-process `%s' provided"
msgstr "Das explizite Schließen des Ko-Prozesses '%s' fehlt."
-#: io.c:989
+#: io.c:993
#, c-format
msgid "no explicit close of pipe `%s' provided"
msgstr "Das explizite Schließen der Pipe '%s' fehlt."
-#: io.c:992
+#: io.c:996
#, c-format
msgid "no explicit close of file `%s' provided"
msgstr "Das explizite Schließen der Datei '%s' fehlt."
-#: io.c:1021 io.c:1075
+#: io.c:1025 io.c:1080 main.c:718 main.c:756
#, c-format
msgid "error writing standard output (%s)"
msgstr "Fehler beim Schreiben auf stdout (%s)."
-#: io.c:1025 io.c:1079
+#: io.c:1029 io.c:1085
#, c-format
msgid "error writing standard error (%s)"
msgstr "Fehler beim Schreiben auf stderr (%s)."
-#: io.c:1033
+#: io.c:1037
#, c-format
msgid "pipe flush of `%s' failed (%s)."
msgstr "Leeren der Pipe '%s' gescheitert (%s)."
-#: io.c:1036
+#: io.c:1040
#, c-format
msgid "co-process flush of pipe to `%s' failed (%s)."
msgstr "Ko-Prozess: Leeren der Pipe zu '%s' gescheitert (%s)."
-#: io.c:1039
+#: io.c:1043
#, c-format
msgid "file flush of `%s' failed (%s)."
msgstr "Flush der Datei '%s' gescheitert (%s)."
-#: io.c:1198
+#: io.c:1205
msgid "/inet/raw client not ready yet, sorry"
msgstr "/inet/raw Client noch nicht fertig."
-#: io.c:1200 io.c:1237
+#: io.c:1207 io.c:1244
msgid "only root may use `/inet/raw'."
msgstr "Nur root darf '/inet/raw' benutzen"
-#: io.c:1235
+#: io.c:1242
msgid "/inet/raw server not ready yet, sorry"
msgstr "'/inet/raw'-Server noch nicht fertig."
-#: io.c:1325
+#: io.c:1332
#, c-format
msgid "no (known) protocol supplied in special filename `%s'"
msgstr "Kein bekanntes Protokoll in Dateinamen '%s' angegeben."
-#: io.c:1343
+#: io.c:1350
#, c-format
msgid "special file name `%s' is incomplete"
msgstr "Dateiname '%s' ist unvollständig."
-#: io.c:1355
+#: io.c:1362
#, c-format
msgid "local port invalid in `%s'"
msgstr "Lokaler Port in '%s' ist ungültig."
-#: io.c:1367
+#: io.c:1374
msgid "must supply a remote hostname to `/inet'"
msgstr "Sie müssen einen Rechnernamen in '/inet' angeben."
-#: io.c:1382
+#: io.c:1389
msgid "must supply a remote port to `/inet'"
msgstr "Sie müssen einen Port in '/inet' angeben."
-#: io.c:1388
+#: io.c:1395
#, c-format
msgid "remote port invalid in `%s'"
msgstr "Port-Angabe in '%s' ist ungültig."
-#: io.c:1398
+#: io.c:1405
msgid "TCP/IP communications are not supported"
msgstr "TCP/IP-Verbindungen sind nicht möglich."
-#: io.c:1407 io.c:1588
+#: io.c:1414 io.c:1595
#, c-format
msgid "file `%s' is a directory"
msgstr "Datei '%s' ist ein Verzeichnis."
-#: io.c:1477
+#: io.c:1484
#, c-format
msgid "use `PROCINFO[\"%s\"]' instead of `%s'"
msgstr "Benutzen Sie 'PROCINFO[\"%s\"]' statt '%s'"
-#: io.c:1509
+#: io.c:1516
msgid "use `PROCINFO[...]' instead of `/dev/user'"
msgstr "Benutzen Sie 'PROCINFO[...] statt '/dev/user'."
-#: io.c:1574 io.c:1748
+#: io.c:1581 io.c:1763
#, c-format
msgid "could not open `%s', mode `%s'"
msgstr "Konnte '%s' nicht öffnen, Mode '%s'."
-#: io.c:1799
+#: io.c:1814
#, fuzzy, c-format
msgid "close of master pty failed (%s)"
msgstr "Schließen der Pipe gescheitert (%s)."
-#: io.c:1801 io.c:1953 io.c:2105
+#: io.c:1816 io.c:1968 io.c:2119
#, c-format
msgid "close of stdout in child failed (%s)"
msgstr "Schließen von stdout in Kindprozess gescheitert (%s)."
-#: io.c:1804
+#: io.c:1819
#, fuzzy, c-format
msgid "moving slave pty to stdout in child failed (dup: %s)"
msgstr "Verschieben der Pipe zu stdout in Kindprozess gescheitert (dup: %s)."
-#: io.c:1806 io.c:1958
+#: io.c:1821 io.c:1973
#, c-format
msgid "close of stdin in child failed (%s)"
msgstr "Schließen von stdin im Kindprozess gescheitert (%s)."
-#: io.c:1809
+#: io.c:1824
#, fuzzy, c-format
msgid "moving slave pty to stdin in child failed (dup: %s)"
msgstr "Verschieben der Pipe zu stdin in Kindprozess gescheitert (dup: %s)."
-#: io.c:1811 io.c:1830
+#: io.c:1826 io.c:1845
#, fuzzy, c-format
msgid "close of slave pty failed (%s)"
msgstr "Schließen der Pipe gescheitert (%s)."
-#: io.c:1904 io.c:1956 io.c:2086 io.c:2108
+#: io.c:1919 io.c:1971 io.c:2100 io.c:2122
#, c-format
msgid "moving pipe to stdout in child failed (dup: %s)"
msgstr "Verschieben der Pipe zu stdout in Kindprozess gescheitert (dup: %s)."
-#: io.c:1908 io.c:1961
+#: io.c:1923 io.c:1976
#, c-format
msgid "moving pipe to stdin in child failed (dup: %s)"
msgstr "Verschieben der Pipe zu stdin in Kindprozess gescheitert (dup: %s)."
-#: io.c:1925 io.c:2099
+#: io.c:1940 io.c:2113
msgid "restoring stdout in parent process failed\n"
msgstr ""
-#: io.c:1930
+#: io.c:1945
msgid "restoring stdin in parent process failed\n"
msgstr ""
-#: io.c:1964 io.c:2110 io.c:2121
+#: io.c:1979 io.c:2124 io.c:2135
#, c-format
msgid "close of pipe failed (%s)"
msgstr "Schließen der Pipe gescheitert (%s)."
-#: io.c:2009
+#: io.c:2024
msgid "`|&' not supported"
msgstr "'|&' nicht möglich."
-#: io.c:2076
+#: io.c:2090
#, c-format
msgid "cannot open pipe `%s' (%s)"
msgstr "Kann Pipe '%s' nicht öffnen (%s)."
-#: io.c:2117
+#: io.c:2131
#, c-format
msgid "cannot create child process for `%s' (fork: %s)"
msgstr "Kann Kindprozess für '%s' nicht erzeugen (fork: %s)."
-#: io.c:2460
+#: io.c:2506
#, c-format
msgid "data file `%s' is empty"
msgstr "Datei '%s' ist leer."
-#: io.c:2503 io.c:2511
+#: io.c:2547 io.c:2555
msgid "could not allocate more input memory"
msgstr ""
-#: io.c:2869 io.c:2932
+#: io.c:2919 io.c:2984
#, c-format
msgid "error reading input file `%s': %s"
msgstr "Fehler beim Lesen der Eingabedatei '%s': %s."
-#: io.c:3057
+#: io.c:3109
msgid "multicharacter value of `RS' is a gawk extension"
msgstr "Multicharacter-Wert von 'RS' ist eine gawk-Erweiterung."
-#: main.c:323
+#: main.c:338
msgid "`-m[fr]' option irrelevant in gawk"
msgstr "Option '-m[fr]' ist in gawk bedeutungslos."
-#: main.c:325
+#: main.c:340
msgid "-m option usage: `-m[fr] nnn'"
msgstr "Anwendung der Option -m: '-m[fr] nnn'"
-#: main.c:342
+#: main.c:357
#, c-format
msgid "%s: option `-W %s' unrecognized, ignored\n"
msgstr "%s: Option '-W %s' unbekannt, ignoriert.\n"
-#: main.c:379
+#: main.c:394
msgid "empty argument to `--source' ignored"
msgstr "Leeres Argument für '--source' ignoriert."
-#: main.c:450
+#: main.c:467
msgid "environment variable `POSIXLY_CORRECT' set: turning on `--posix'"
msgstr ""
"Umgebungsvariable 'POSIXLY_CORRECT' ist gesetzt: '--posix' angeschaltet."
-#: main.c:455
+#: main.c:472
msgid "`--posix' overrides `--traditional'"
msgstr "'--posix' hat Vorrang vor '--traditional'"
-#: main.c:466
+#: main.c:483
msgid "`--posix'/`--traditional' overrides `--non-decimal-data'"
msgstr "'--posix' /'--traditional' hat Vorrang vor '--non-decimal-data'."
-#: main.c:470
+#: main.c:487
#, fuzzy, c-format
msgid "running %s setuid root may be a security problem"
msgstr "%s als setuid root auszuführen, kann zu Sicherheitsproblemen führen."
-#: main.c:511
+#: main.c:528
#, fuzzy, c-format
msgid "can't set binary mode on stdin (%s)"
msgstr "Kann Mode für stdin nicht setzen (%s)."
-#: main.c:514
+#: main.c:531
#, fuzzy, c-format
msgid "can't set binary mode on stdout (%s)"
msgstr "Kann Mode für stdout nicht setzen (%s)."
-#: main.c:516
+#: main.c:533
#, fuzzy, c-format
msgid "can't set binary mode on stderr (%s)"
msgstr "Kann Mode für stderr nicht setzen (%s)."
-#: main.c:546
+#: main.c:572
msgid "no program text at all!"
msgstr "Kein Programmtext."
-#: main.c:623
+#: main.c:665
#, c-format
msgid "Usage: %s [POSIX or GNU style options] -f progfile [--] file ...\n"
msgstr "Anwendung: %s [POSIX- oder GNU-Optionen] -f PROGRAM [--] Datei ...\n"
-#: main.c:625
+#: main.c:667
#, c-format
msgid "Usage: %s [POSIX or GNU style options] [--] %cprogram%c file ...\n"
msgstr "Anwendung: %s [POSIX- oder GNU-Optionen] -- %cPROGRAM%c Datei ...\n"
-#: main.c:630
+#: main.c:672
msgid "POSIX options:\t\tGNU long options:\n"
msgstr "POSIX-Optionen\t\tGNU-Optionen (lang):\n"
-#: main.c:631
+#: main.c:673
msgid "\t-f progfile\t\t--file=progfile\n"
msgstr "\t-f PROGRAM\t\t--file=PROGRAM\n"
-#: main.c:632
+#: main.c:674
msgid "\t-F fs\t\t\t--field-separator=fs\n"
msgstr "\t-F Feldtrenner\t\t\t--field-separator=Feldtrenner\n"
-#: main.c:633
+#: main.c:675
msgid "\t-v var=val\t\t--assign=var=val\n"
msgstr "\t-v var=Wert\t\t--assign=var=Wert\n"
-#: main.c:634
+#: main.c:676
msgid "\t-m[fr] val\n"
msgstr "\t-m[fr] Wert\n"
-#: main.c:635
+#: main.c:677
msgid "\t-W compat\t\t--compat\n"
msgstr "\t-W compat\t\t--compat\n"
-#: main.c:636
+#: main.c:678
msgid "\t-W copyleft\t\t--copyleft\n"
msgstr "\t-W copyleft\t\t--copyleft\n"
-#: main.c:637
+#: main.c:679
msgid "\t-W copyright\t\t--copyright\n"
msgstr "\t-W copyright\t\t--copyright\n"
-#: main.c:638
+#: main.c:680
msgid "\t-W dump-variables[=file]\t--dump-variables[=file]\n"
msgstr "\t-W dump-variables[=Datei]\t--dump-variables[=Datei]\n"
-#: main.c:639
+#: main.c:681
+#, fuzzy
+msgid "\t-W exec=file\t\t--exec=file\n"
+msgstr "\t-W profile[=Datei]\t--profile[=Datei]\n"
+
+#: main.c:682
msgid "\t-W gen-po\t\t--gen-po\n"
msgstr "\t-W gen-po\t\t--gen-po\n"
-#: main.c:640
+#: main.c:683
msgid "\t-W help\t\t\t--help\n"
msgstr "\t-W help\t\t\t--help\n"
-#: main.c:641
+#: main.c:684
msgid "\t-W lint[=fatal]\t\t--lint[=fatal]\n"
msgstr "\t-W lint[=fatal]\t\t--lint[=fatal]\n"
-#: main.c:642
+#: main.c:685
msgid "\t-W lint-old\t\t--lint-old\n"
msgstr "\t-W lint-old\t\t--lint-old\n"
-#: main.c:643
+#: main.c:686
msgid "\t-W non-decimal-data\t--non-decimal-data\n"
msgstr "\t-W non-decimal-data\t--non-decimal-data\n"
-#: main.c:645
+#: main.c:688
msgid "\t-W nostalgia\t\t--nostalgia\n"
msgstr "\t-W nostalgia\t\t--nostalgia\n"
-#: main.c:648
+#: main.c:691
msgid "\t-W parsedebug\t\t--parsedebug\n"
msgstr "\t-W parsedebug\t\t--parsedebug\n"
-#: main.c:650
+#: main.c:693
msgid "\t-W profile[=file]\t--profile[=file]\n"
msgstr "\t-W profile[=Datei]\t--profile[=Datei]\n"
-#: main.c:651
+#: main.c:694
msgid "\t-W posix\t\t--posix\n"
msgstr "\t-W posix\t\t--posix\n"
-#: main.c:652
+#: main.c:695
msgid "\t-W re-interval\t\t--re-interval\n"
msgstr "\t-W re-interval\t\t--re-interval\n"
-#: main.c:653
+#: main.c:696
msgid "\t-W source=program-text\t--source=program-text\n"
msgstr "\t-W source=Programmtext\t--source=Programmtext\n"
-#: main.c:654
+#: main.c:697
msgid "\t-W traditional\t\t--traditional\n"
msgstr "\t-W traditional\t\t--traditional\n"
-#: main.c:655
+#: main.c:698
msgid "\t-W usage\t\t--usage\n"
msgstr "\t-W usage\t\t--usage\n"
-#: main.c:656
+#: main.c:699
msgid "\t-W version\t\t--version\n"
msgstr "\t-W version\t\t--version\n"
-#: main.c:660
+#: main.c:703
#, fuzzy
msgid ""
"\n"
@@ -1566,21 +1588,21 @@ msgstr ""
"den Sie im Kapitel 'Reporting Problems and Bugs' in der \n"
"gedruckten Version finden.\n"
-#: main.c:664
+#: main.c:707
msgid ""
"gawk is a pattern scanning and processing language.\n"
"By default it reads standard input and writes standard output.\n"
"\n"
msgstr ""
-#: main.c:668
+#: main.c:711
msgid ""
"Examples:\n"
"\tgawk '{ sum += $1 }; END { print sum }' file\n"
"\tgawk -F: '{ print $1 }' /etc/passwd\n"
msgstr ""
-#: main.c:685
+#: main.c:731
#, fuzzy, c-format
msgid ""
"Copyright (C) 1989, 1991-%d Free Software Foundation.\n"
@@ -1600,7 +1622,7 @@ msgstr ""
"spätere Version.\n"
"\n"
-#: main.c:693
+#: main.c:739
msgid ""
"This program is distributed in the hope that it will be useful,\n"
"but WITHOUT ANY WARRANTY; without even the implied warranty of\n"
@@ -1614,57 +1636,58 @@ msgstr ""
"GNU General Public License for more details.\n"
"\n"
-#: main.c:699
+#: main.c:745
msgid ""
"You should have received a copy of the GNU General Public License\n"
"along with this program; if not, write to the Free Software\n"
-"Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.\n"
+"Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, "
+"USA.\n"
msgstr ""
"Sie sollten eine Kopie der GNU General Publice License zusammen mit\n"
"diesem Programm erhalten haben. Wenn nicht, schreiben Sie an die Free \n"
-"Software Foundation, Inc., 59 Temple Place - Suite 330, Boston MA 02111-"
+"Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston MA 02111-"
"1307, USA.\n"
-#: main.c:733
+#: main.c:781
msgid "-Ft does not set FS to tab in POSIX awk"
msgstr "-Ft setzt FS im POSIX-awk nicht auf Tab."
-#: main.c:962
+#: main.c:1018
#, c-format
msgid ""
"%s: `%s' argument to `-v' not in `var=value' form\n"
"\n"
msgstr ""
-#: main.c:982
+#: main.c:1038
#, c-format
msgid "`%s' is not a legal variable name"
msgstr ""
-#: main.c:985
+#: main.c:1041
#, c-format
msgid "`%s' is not a variable name, looking for file `%s=%s'"
msgstr ""
-#: main.c:1018
+#: main.c:1074
msgid "floating point exception"
msgstr "Floating point exception"
-#: main.c:1025
+#: main.c:1081
msgid "fatal error: internal error"
msgstr "Fataler Fehler: interner Fehler"
-#: main.c:1075
+#: main.c:1132
#, c-format
msgid "no pre-opened fd %d"
msgstr "Kein geöffneter Dateideskriptor %d"
-#: main.c:1082
+#: main.c:1139
#, c-format
msgid "could not pre-open /dev/null for fd %d"
msgstr "Konnte /dev/null nicht für Dateideskriptor %d öffnen."
-#: main.c:1105 main.c:1114
+#: main.c:1162 main.c:1171
#, c-format
msgid "could not find groups: %s"
msgstr "Konnte Gruppen nicht finden: %s"
@@ -1686,23 +1709,23 @@ msgstr "Fehler: "
msgid "fatal: "
msgstr "Fatal: "
-#: node.c:58 node.c:65 node.c:74 node.c:88 node.c:115
+#: node.c:59 node.c:66 node.c:75 node.c:90 node.c:119
msgid "can't convert string to float"
msgstr "Kann String nicht in Gleitkommazahl konvertieren."
-#: node.c:357
+#: node.c:414
msgid "backslash at end of string"
msgstr "Backslash am String-Ende."
-#: node.c:541
+#: node.c:604
msgid "POSIX does not allow `\\x' escapes"
msgstr "POSIX erlabut keine '\\x'-Escapes."
-#: node.c:547
+#: node.c:610
msgid "no hex digits in `\\x' escape sequence"
msgstr "Keine Hex-Ziffern in '\\x'-Escape."
-#: node.c:581
+#: node.c:644
#, c-format
msgid "escape sequence `\\%c' treated as plain `%c'"
msgstr "Escape-Sequenz '\\%c' als '%c' behandelt."
@@ -1722,21 +1745,21 @@ msgstr "Konnte '%s' nicht zum Schreiben öffnen: %s"
msgid "internal error: %s with null vname"
msgstr "Interner Fehler: Node_var with null vname."
-#: profile.c:530
+#: profile.c:531
msgid "# treated internally as `delete'"
msgstr ""
-#: profile.c:1167
+#: profile.c:1168
#, c-format
msgid "# this is a dynamically loaded extension function"
msgstr ""
-#: profile.c:1198
+#: profile.c:1199
#, c-format
msgid "\t# gawk profile, created %s\n"
msgstr "\t# gawk-Profil, erzeugt %s\n"
-#: profile.c:1201
+#: profile.c:1202
#, c-format
msgid ""
"\t# BEGIN block(s)\n"
@@ -1745,7 +1768,7 @@ msgstr ""
"\t# BEGIN block(s)\n"
"\n"
-#: profile.c:1211
+#: profile.c:1212
#, c-format
msgid ""
"\t# Rule(s)\n"
@@ -1754,7 +1777,7 @@ msgstr ""
"\t# Rule(s)\n"
"\n"
-#: profile.c:1217
+#: profile.c:1218
#, c-format
msgid ""
"\t# END block(s)\n"
@@ -1763,7 +1786,7 @@ msgstr ""
"\t# END block(s)\n"
"\n"
-#: profile.c:1237
+#: profile.c:1238
#, c-format
msgid ""
"\n"
@@ -1772,83 +1795,89 @@ msgstr ""
"\n"
"\t# Functionen, alphabetisch sortiert\n"
-#: profile.c:1452
+#: profile.c:1453
#, c-format
msgid "unexpected type %s in prec_level"
msgstr "Unerwarteter Typ %s in prec_level."
-#: regcomp.c:150
+#: regcomp.c:160
msgid "Success"
msgstr "Erfolg"
-#: regcomp.c:153
+#: regcomp.c:163
msgid "No match"
msgstr "Kein Treffer"
-#: regcomp.c:156
+#: regcomp.c:166
msgid "Invalid regular expression"
msgstr "Ungültiger Regulärer Ausdruck."
-#: regcomp.c:159
+#: regcomp.c:169
msgid "Invalid collation character"
msgstr "Ungültiges Zeichen."
-#: regcomp.c:162
+#: regcomp.c:172
msgid "Invalid character class name"
msgstr "Ungültier Name für Zeichenklasse."
-#: regcomp.c:165
+#: regcomp.c:175
msgid "Trailing backslash"
msgstr "Angehängter Backslash"
-#: regcomp.c:168
+#: regcomp.c:178
msgid "Invalid back reference"
msgstr "Ungültige Referenze"
-#: regcomp.c:171
+#: regcomp.c:181
msgid "Unmatched [ or [^"
msgstr "[ oder [^ nicht geschlossen"
-#: regcomp.c:174
+#: regcomp.c:184
msgid "Unmatched ( or \\("
msgstr "( oder \\( nicht geschlossen"
-#: regcomp.c:177
+#: regcomp.c:187
msgid "Unmatched \\{"
msgstr "\\{ nicht geschlossen"
-#: regcomp.c:180
+#: regcomp.c:190
msgid "Invalid content of \\{\\}"
msgstr "Ungültiger Inhalt von \\{\\}"
-#: regcomp.c:183
+#: regcomp.c:193
msgid "Invalid range end"
msgstr "Ungültiges Bereichsende"
-#: regcomp.c:186
+#: regcomp.c:196
msgid "Memory exhausted"
msgstr "Kein Speicher mehr."
-#: regcomp.c:189
+#: regcomp.c:199
msgid "Invalid preceding regular expression"
msgstr "Vorangehender Regulärer Ausdruck ist ungültig."
-#: regcomp.c:192
+#: regcomp.c:202
msgid "Premature end of regular expression"
msgstr "Vorzeitiges Ende des Regulären Ausdrucks."
-#: regcomp.c:195
+#: regcomp.c:205
msgid "Regular expression too big"
msgstr "Regulärer Ausdruck zu groß."
-#: regcomp.c:198
+#: regcomp.c:208
msgid "Unmatched ) or \\)"
msgstr ") oder \\) nicht geöffnet"
-#: regcomp.c:668
+#: regcomp.c:688
msgid "No previous regular expression"
msgstr "Kein vorangehender Regulärer Ausdruck."
+#~ msgid "function %s called\n"
+#~ msgstr "Funktion %s aufgerufen\n"
+
+#~ msgid "field %d in FIELDWIDTHS, must be > 0"
+#~ msgstr "Feld %d in FIELDWIDTHS muss > 0 sein."
+
#, fuzzy
#~ msgid "or used as a variable or an array"
#~ msgstr "Kann Funktion '%s' nicht als Variable oder Array verwenden."
diff --git a/po/es.gmo b/po/es.gmo
index c9a474ae..21a6e620 100644
--- a/po/es.gmo
+++ b/po/es.gmo
Binary files differ
diff --git a/po/es.po b/po/es.po
index e6f9bc9b..0f1ad9f4 100644
--- a/po/es.po
+++ b/po/es.po
@@ -1,13 +1,13 @@
-# Mensajes en español para gawk-3.1.2g.
-# Copyright (C) 2001, 2002, 2003 Free Software Foundation, Inc.
-# Cristian Othón Martínez Vera <cfuga@itam.mx>, 2001, 2002, 2003.
+# Mensajes en español para gawk-3.1.4l.
+# Copyright (C) 2001, 2002, 2003, 2004, 2005 Free Software Foundation, Inc.
+# Cristian Othón Martínez Vera <cfuga@itam.mx>, 2001, 2002, 2003, 2004, 2005.
#
msgid ""
msgstr ""
-"Project-Id-Version: gawk 3.1.2g\n"
+"Project-Id-Version: gawk 3.1.4l\n"
"Report-Msgid-Bugs-To: arnold@skeeve.com\n"
-"POT-Creation-Date: 2004-07-15 13:02+0300\n"
-"PO-Revision-Date: 2003-06-29 14:53-0500\n"
+"POT-Creation-Date: 2005-07-06 17:20+0300\n"
+"PO-Revision-Date: 2005-06-27 09:20-0500\n"
"Last-Translator: Cristian Othón Martínez Vera <cfuga@itam.mx>\n"
"Language-Team: Spanish <es@li.org>\n"
"MIME-Version: 1.0\n"
@@ -15,7 +15,7 @@ msgstr ""
"Content-Transfer-Encoding: 8bit\n"
#: array.c:112
-#, fuzzy, c-format
+#, c-format
msgid "attempt to use function `%s' as an array"
msgstr "se intentó usar la función `%s' como una matriz"
@@ -88,488 +88,512 @@ msgstr "cada regla debe tener un patrón o una parte de acción"
msgid "`%s' is a built-in function, it cannot be redefined"
msgstr "`%s' es una función interna, no se puede redefinir"
-#: awkgram.y:314
+#: awkgram.y:313
+msgid "regexp constant `//' looks like a C++ comment, but is not"
+msgstr ""
+"la constante de expresión regular `//' parece un comentario de C++, pero no "
+"lo es"
+
+#: awkgram.y:316
#, c-format
msgid "regexp constant `/%s/' looks like a C comment, but is not"
msgstr ""
"la constante de expresión regular `/%s/' parece un comentario de C, pero no "
"lo es"
-#: awkgram.y:341 awkgram.y:619
+#: awkgram.y:343 awkgram.y:623
msgid "statement may have no effect"
msgstr "la sentencia puede no tener efecto"
-#: awkgram.y:436 awkgram.y:456
+#: awkgram.y:440 awkgram.y:460
#, c-format
msgid "`%s' used in %s action"
msgstr "se usó `%s' en la acción %s"
-#: awkgram.y:449 awkgram.y:452
+#: awkgram.y:453 awkgram.y:456
msgid "`nextfile' is a gawk extension"
msgstr "`nextfile' es una extensión de gawk"
-#: awkgram.y:466
+#: awkgram.y:470
msgid "`return' used outside function context"
msgstr "se usó `return' fuera del contexto de la función"
-#: awkgram.y:508
+#: awkgram.y:512
msgid "plain `print' in BEGIN or END rule should probably be `print \"\"'"
msgstr ""
"el `print' simple en la regla BEGIN o END probablemente debe ser `print \"\"'"
-#: awkgram.y:521 awkgram.y:528
+#: awkgram.y:525 awkgram.y:532
msgid "`delete array' is a gawk extension"
msgstr "`delete array' es una extensión de gawk"
-#: awkgram.y:536 awkgram.y:543
+#: awkgram.y:540 awkgram.y:547
msgid "`delete(array)' is a non-portable tawk extension"
msgstr "`delete(array)' es una extensión de gawk que no es transportable"
-#: awkgram.y:587
+#: awkgram.y:591
#, c-format
msgid "duplicate case values in switch body: %s"
msgstr "valores case duplicados en el cuerpo de un switch: %s"
-#: awkgram.y:597
+#: awkgram.y:601
msgid "Duplicate `default' detected in switch body"
msgstr "Se detectó un `default' duplicado en el cuerpo de un switch"
-#: awkgram.y:686
+#: awkgram.y:690
msgid "multistage two-way pipelines don't work"
msgstr "las líneas de trabajo de dos vías multiestado no funcionan"
-#: awkgram.y:777
+#: awkgram.y:781
msgid "regular expression on right of assignment"
msgstr "expresión regular del lado derecho de una asignación"
-#: awkgram.y:800
+#: awkgram.y:804
msgid "regular expression on left of `~' or `!~' operator"
msgstr "expresión regular a la izquierda del operador `~' o `!~'"
-#: awkgram.y:808
+#: awkgram.y:812
msgid "regular expression on right of comparison"
msgstr "expresión regular a la derecha de una comparación"
-#: awkgram.y:875
+#: awkgram.y:879
msgid "non-redirected `getline' undefined inside END action"
msgstr "`getline' no redirigido indefinido dentro de la acción de END"
-#: awkgram.y:902
+#: awkgram.y:906
msgid "call of `length' without parentheses is not portable"
msgstr "la llamada de `length' sin paréntesis no es transportable"
-#: awkgram.y:905
+#: awkgram.y:909
msgid "call of `length' without parentheses is deprecated by POSIX"
msgstr "la llamada de `length' sin paréntesis está obsoleta por POSIX"
-#: awkgram.y:958
+#: awkgram.y:962
msgid "use of non-array as array"
msgstr "uso de una matriz que no es matriz"
-#: awkgram.y:960
+#: awkgram.y:964
msgid "invalid subscript expression"
msgstr "expresión de subíndice inválida"
-#: awkgram.y:1158
+#: awkgram.y:1171
msgid "unexpected newline or end of string"
msgstr "nueva línea o fin de la cadena inesperados"
-#: awkgram.y:1254
+#: awkgram.y:1267
msgid "empty program text on command line"
msgstr "texto de programa vacío en la linea de comando"
-#: awkgram.y:1307
+#: awkgram.y:1320
#, c-format
msgid "can't open source file `%s' for reading (%s)"
msgstr "no se puede abrir el fichero fuente `%s' para lectura (%s)"
-#: awkgram.y:1384
+#: awkgram.y:1397
#, c-format
msgid "can't read sourcefile `%s' (%s)"
msgstr "no se puede leer el fichero fuente `%s' (%s)"
-#: awkgram.y:1392
+#: awkgram.y:1405
#, c-format
msgid "source file `%s' is empty"
msgstr "el fichero fuente `%s' está vacío"
-#: awkgram.y:1590 awkgram.y:1700 awkgram.y:1718 awkgram.y:2068 awkgram.y:2153
+#: awkgram.y:1596 awkgram.y:1718 awkgram.y:1736 awkgram.y:2107 awkgram.y:2194
msgid "source file does not end in newline"
msgstr "el fichero fuente no termina con línea nueva"
-#: awkgram.y:1654
+#: awkgram.y:1658
msgid "unterminated regexp ends with `\\' at end of file"
msgstr "expresión regular sin terminar termina con `\\` al final del fichero"
-#: awkgram.y:1674
+#: awkgram.y:1682
+#, c-format
+msgid "%s: %d: tawk regex modifier `/.../%c' doesn't work in gawk"
+msgstr ""
+"%s: %d: el modificador de expresión regular `/.../%c` de tawk no funciona en "
+"gawk"
+
+#: awkgram.y:1686
+#, c-format
+msgid "tawk regex modifier `/.../%c' doesn't work in gawk"
+msgstr ""
+"el modificador de expresión regular `/.../%c` de tawk no funciona en gawk"
+
+#: awkgram.y:1693
msgid "unterminated regexp"
msgstr "expresión regular sin terminar"
-#: awkgram.y:1677
+#: awkgram.y:1696
msgid "unterminated regexp at end of file"
msgstr "expresión regular sin terminar al final del fichero"
-#: awkgram.y:1744
+#: awkgram.y:1762
msgid "use of `\\ #...' line continuation is not portable"
msgstr "el uso de la continuación de línea `\\ #...' no es transportable"
-#: awkgram.y:1756
+#: awkgram.y:1774
msgid "backslash not last character on line"
msgstr "la barra invertida no es el último caracter en la línea"
-#: awkgram.y:1801
+#: awkgram.y:1819
msgid "POSIX does not allow operator `**='"
msgstr "POSIX no permite el operador `**='"
-#: awkgram.y:1803
+#: awkgram.y:1821
msgid "old awk does not support operator `**='"
msgstr "el awk antiguo no da soporte al operador `**='"
-#: awkgram.y:1812
+#: awkgram.y:1830
msgid "POSIX does not allow operator `**'"
msgstr "POSIX no permite el operador `**'"
-#: awkgram.y:1814
+#: awkgram.y:1832
msgid "old awk does not support operator `**'"
msgstr "el awk antiguo no da soporte al operador `**='"
-#: awkgram.y:1845
+#: awkgram.y:1863
msgid "operator `^=' is not supported in old awk"
msgstr "el operador `^=' no tiene soporte en el awk antiguo"
-#: awkgram.y:1853
+#: awkgram.y:1871
msgid "operator `^' is not supported in old awk"
msgstr "el operador `^' no tiene soporte en el awk antiguo"
-#: awkgram.y:1937 awkgram.y:1954
+#: awkgram.y:1955 awkgram.y:1970
msgid "unterminated string"
msgstr "cadena sin terminar"
-#: awkgram.y:2114
+#: awkgram.y:2155
#, c-format
msgid "invalid char '%c' in expression"
msgstr "caracter '%c' inválido en la expresión"
-#: awkgram.y:2162
+#: awkgram.y:2203
#, c-format
msgid "`%s' is a gawk extension"
msgstr "`%s' es una extensión de gawk"
-#: awkgram.y:2165
+#: awkgram.y:2206
#, c-format
msgid "`%s' is a Bell Labs extension"
msgstr "`%s' es una extensión de Bell Labs"
-#: awkgram.y:2168
+#: awkgram.y:2209
#, c-format
msgid "POSIX does not allow `%s'"
msgstr "POSIX no permite `%s'"
-#: awkgram.y:2172
+#: awkgram.y:2213
#, c-format
msgid "`%s' is not supported in old awk"
msgstr "`%s' no tiene soporte en el awk antiguo"
-#: awkgram.y:2198
+#: awkgram.y:2239
msgid "`goto' considered harmful!\n"
msgstr "¡`goto' se considera dañino!\n"
-#: awkgram.y:2260
+#: awkgram.y:2301
#, c-format
msgid "%d is invalid as number of arguments for %s"
msgstr "%d es inválido como número de argumentos para %s"
-#: awkgram.y:2279 awkgram.y:2282
+#: awkgram.y:2320 awkgram.y:2323
msgid "match: third argument is a gawk extension"
msgstr "match: el tercer argumento es una extensión de gawk"
-#: awkgram.y:2295
+#: awkgram.y:2336
#, c-format
msgid "%s: string literal as last arg of substitute has no effect"
msgstr ""
"%s: la literal de cadena como último argumento de substitute no tiene efecto"
-#: awkgram.y:2298
+#: awkgram.y:2339
#, c-format
msgid "%s third parameter is not a changeable object"
msgstr "el tercer argumento de %s no es un objecto que se puede cambiar"
-#: awkgram.y:2325 awkgram.y:2328
+#: awkgram.y:2366 awkgram.y:2369
msgid "close: second argument is a gawk extension"
msgstr "close: el segundo argumento es una extensión de gawk"
-#: awkgram.y:2338
+#: awkgram.y:2379
msgid "use of dcgettext(_\"...\") is incorrect: remove leading underscore"
msgstr ""
"el uso de dcgettext(_\"...\") es incorrecto: quite el subrayado inicial"
-#: awkgram.y:2353
+#: awkgram.y:2394
msgid "use of dcngettext(_\"...\") is incorrect: remove leading underscore"
msgstr ""
"el uso de dcngettext(_\"...\") es incorrecto: quite el subrayado inicial"
-#: awkgram.y:2424
+#: awkgram.y:2465
#, c-format
msgid "function `%s': parameter #%d, `%s', duplicates parameter #%d"
msgstr "función `%s': parámetro #%d, `%s', duplica el parámetro #%d"
-#: awkgram.y:2457
+#: awkgram.y:2498
#, c-format
msgid "function `%s': parameter `%s' shadows global variable"
msgstr "función `%s': parámetro `%s' obscurece la variable global"
-#: awkgram.y:2569
+#: awkgram.y:2610
#, c-format
msgid "could not open `%s' for writing (%s)"
msgstr "no se puede abrir `%s' para escritura (%s)"
-#: awkgram.y:2570 profile.c:93
+#: awkgram.y:2611 profile.c:93
msgid "sending profile to standard error"
msgstr "enviando perfil a la salida estándar de error"
-#: awkgram.y:2602
+#: awkgram.y:2643
#, c-format
msgid "%s: close failed (%s)"
msgstr "%s: falló close (%s)"
-#: awkgram.y:2723
+#: awkgram.y:2764
msgid "shadow_funcs() called twice!"
msgstr "¡shadow_funcs() llamada dos veces!"
-#: awkgram.y:2750
+#: awkgram.y:2791
msgid "there were shadowed variables."
msgstr "hay variables opacadas."
-#: awkgram.y:2823
+#: awkgram.y:2864
#, c-format
msgid "function `%s': can't use function name as parameter name"
msgstr ""
"función `%s': no se puede usar un nombre de función como nombre de parámetro"
-#: awkgram.y:2833
+#: awkgram.y:2874
#, c-format
msgid "function name `%s' previously defined"
msgstr "el nombre de función `%s' se definió previamente"
-#: awkgram.y:2984 awkgram.y:2990
+#: awkgram.y:3025 awkgram.y:3031
#, c-format
msgid "function `%s' called but never defined"
msgstr "se llamó a la función `%s' pero nunca se definió"
-#: awkgram.y:2993
+#: awkgram.y:3034
#, c-format
msgid "function `%s' defined but never called"
msgstr "la función `%s' está definida pero nunca se llamó"
-#: awkgram.y:3020
+#: awkgram.y:3061
#, c-format
msgid "regexp constant for parameter #%d yields boolean value"
msgstr ""
"la constante de expresión regular para el parámetro #%d da un valor booleano"
-#: awkgram.y:3033
-#, fuzzy, c-format
+#: awkgram.y:3105
+#, c-format
msgid ""
"function `%s' called with space between name and `(',\n"
"or used as a variable or an array"
msgstr ""
"se llamó la función `%s' con espacio entre el nombre y el `(',\n"
-"%s"
+"o se usó como una variable o una matriz"
-#: builtin.c:149
+#: builtin.c:145
#, c-format
msgid "%s to \"%s\" failed (%s)"
msgstr "falló %s a \"%s\" (%s)"
-#: builtin.c:150
+#: builtin.c:146
msgid "standard output"
msgstr "salida estándar"
-#: builtin.c:151
+#: builtin.c:147
msgid "reason unknown"
msgstr "razón desconocida"
-#: builtin.c:164
+#: builtin.c:160
msgid "exp: received non-numeric argument"
msgstr "exp: se recibió un argumento que no es un número"
-#: builtin.c:170
+#: builtin.c:166
#, c-format
msgid "exp: argument %g is out of range"
msgstr "exp: el argumento %g está fuera de rango"
-#: builtin.c:228
+#: builtin.c:224
#, c-format
msgid "fflush: cannot flush: pipe `%s' opened for reading, not writing"
msgstr ""
"fflush: no se puede limpiar: se abrió la tubería `%s' para lectura, no para "
"escritura"
-#: builtin.c:231
+#: builtin.c:227
#, c-format
msgid "fflush: cannot flush: file `%s' opened for reading, not writing"
msgstr ""
"fflush: no se puede limpiar: se abrió el fichero `%s' para lectura, no para "
"escritura"
-#: builtin.c:243
+#: builtin.c:239
#, c-format
msgid "fflush: `%s' is not an open file, pipe or co-process"
msgstr "fflush: `%s' no es un fichero abierto, tubería o co-proceso"
-#: builtin.c:338
+#: builtin.c:332
msgid "index: received non-string first argument"
msgstr "index: el primer argumento recibido no es una cadena"
-#: builtin.c:340
+#: builtin.c:334
msgid "index: received non-string second argument"
msgstr "index: el segundo argumento recibido no es una cadena"
-#: builtin.c:454
+#: builtin.c:449
msgid "int: received non-numeric argument"
msgstr "int: se recibió un argumento que no es un número"
-#: builtin.c:471
+#: builtin.c:472
+#, fuzzy
+msgid "`length(array)' is a gawk extension"
+msgstr "`delete array' es una extensión de gawk"
+
+#: builtin.c:481
msgid "length: received non-string argument"
msgstr "length: se recibió un argumento que no es una cadena"
-#: builtin.c:487
+#: builtin.c:506
msgid "log: received non-numeric argument"
msgstr "log: se recibió un argumento que no es un número"
-#: builtin.c:490
+#: builtin.c:509
#, c-format
msgid "log: received negative argument %g"
msgstr "log: se recibió el argumento negativo %g"
-#: builtin.c:654 builtin.c:657
+#: builtin.c:673 builtin.c:676
msgid "must use `count$' on all formats or none"
msgstr "se debe utilizar `count$' en todos los formatos o en ninguno"
-#: builtin.c:759
+#: builtin.c:778
msgid "`$' is not permitted in awk formats"
msgstr "no se permite `$' en los formatos de awk"
-#: builtin.c:765
+#: builtin.c:784
msgid "arg count with `$' must be > 0"
msgstr "la cuenta de argumentos con `$' debe ser > 0"
-#: builtin.c:767
+#: builtin.c:786
#, c-format
msgid "arg count %ld greater than total number of supplied arguments"
msgstr ""
"la cuenta de argumentos %ld es mayor que el número total de argumentos "
"proporcionados"
-#: builtin.c:769
+#: builtin.c:788
msgid "`$' not permitted after period in format"
msgstr "no se permite `$' después de un punto en el formato"
-#: builtin.c:782
+#: builtin.c:801
msgid "no `$' supplied for positional field width or precision"
msgstr ""
"no se proporciona `$' para el ancho o la precisión del campo posicional"
-#: builtin.c:848
+#: builtin.c:867
msgid "`l' is meaningless in awk formats; ignored"
msgstr "`l' no tiene significado en los formatos de awk; ignorado"
-#: builtin.c:852
+#: builtin.c:871
msgid "`l' is not permitted in POSIX awk formats"
msgstr "no se permite `l' en los formatos POSIX de awk"
-#: builtin.c:863
+#: builtin.c:882
msgid "`L' is meaningless in awk formats; ignored"
msgstr "`L' no tiene significado en los formatos de awk; ignorado"
-#: builtin.c:867
+#: builtin.c:886
msgid "`L' is not permitted in POSIX awk formats"
msgstr "no se permite `L' en los formatos POSIX de awk"
-#: builtin.c:878
+#: builtin.c:897
msgid "`h' is meaningless in awk formats; ignored"
msgstr "`h' no tiene significado en los formatos de awk; ignorado"
-#: builtin.c:882
+#: builtin.c:901
msgid "`h' is not permitted in POSIX awk formats"
msgstr "no se permite `h' en los formatos POSIX de awk"
-#: builtin.c:1111
+#: builtin.c:1132
#, c-format
msgid "[s]printf: value %g is out of range for `%%%c' format"
msgstr "[s]printf: el valor %g está fuera del rango del formato `%%%c'"
-#: builtin.c:1171
+#: builtin.c:1198
msgid "not enough arguments to satisfy format string"
msgstr "no hay suficientes argumentos para satisfacer a la cadena de formato"
-#: builtin.c:1173
+#: builtin.c:1200
msgid "^ ran out for this one"
msgstr "se acabó ^ para éste"
-#: builtin.c:1178
+#: builtin.c:1205
msgid "[s]printf: format specifier does not have control letter"
msgstr "[s]printf: el especificador de formato no tiene letras de control"
-#: builtin.c:1181
+#: builtin.c:1208
msgid "too many arguments supplied for format string"
msgstr "se proporcionaron demasiados argumentos para la cadena de formato"
-#: builtin.c:1247 builtin.c:1250
+#: builtin.c:1274 builtin.c:1277
msgid "printf: no arguments"
msgstr "printf: sin argumentos"
-#: builtin.c:1274
+#: builtin.c:1301
msgid "sqrt: received non-numeric argument"
msgstr "sqrt: se recibió un argumento que no es un número"
-#: builtin.c:1278
+#: builtin.c:1305
#, c-format
msgid "sqrt: called with negative argument %g"
msgstr "sqrt: llamado con el argumento negativo %g"
-#: builtin.c:1301
+#: builtin.c:1329
#, c-format
msgid "substr: start index %g is invalid, using 1"
msgstr "substr: el índice de inicio %g es inválido, usando 1"
-#: builtin.c:1306
+#: builtin.c:1334
#, c-format
msgid "substr: non-integer start index %g will be truncated"
msgstr "substr: el índice de inicio no entero %g será truncado"
-#: builtin.c:1325
-#, fuzzy, c-format
+#: builtin.c:1353
+#, c-format
msgid "substr: length %g is not >= 1"
-msgstr "substr: la longitud %g es <= 0"
+msgstr "substr: la longitud %g no es >= 1"
-#: builtin.c:1327
-#, fuzzy, c-format
+#: builtin.c:1355
+#, c-format
msgid "substr: length %g is not >= 0"
-msgstr "substr: la longitud %g es <= 0"
+msgstr "substr: la longitud %g no es >= 0"
-#: builtin.c:1334
+#: builtin.c:1362
#, c-format
msgid "substr: non-integer length %g will be truncated"
msgstr "substr: la longitud no entera %g será truncada"
-#: builtin.c:1339
+#: builtin.c:1367
#, c-format
msgid "substr: length %g too big for string indexing, truncating to %g"
msgstr ""
"substr: la longitud %g es demasiado grande para ser índice de cadena, se "
"trunca a %g"
-#: builtin.c:1351
+#: builtin.c:1379
msgid "substr: source string is zero length"
msgstr "substr: la cadena de origen es de longitud cero"
-#: builtin.c:1357
+#: builtin.c:1395
#, c-format
msgid "substr: start index %g is past end of string"
msgstr "substr: el índice de inicio %g está después del fin de la cadena"
-#: builtin.c:1365
+#: builtin.c:1403
#, c-format
msgid ""
"substr: length %g at start index %g exceeds length of first argument (%lu)"
@@ -577,192 +601,186 @@ msgstr ""
"substr: la cadena %g en el índice de inicio %g excede la longitud del primer "
"argumento (%lu)"
-#: builtin.c:1400
+#: builtin.c:1478
msgid "strftime: received non-string first argument"
-msgstr "strftime: el primer argumento que se recibió no es una cadena"
+msgstr "strftime: el primer argumento recibido no es una cadena"
-#: builtin.c:1406
+#: builtin.c:1484
msgid "strftime: received empty format string"
msgstr "strftime: se recibió una cadena de formato vacía"
-#: builtin.c:1415
+#: builtin.c:1493
msgid "strftime: received non-numeric second argument"
-msgstr "strftime: el segundo argumento que se recibió no es un número"
+msgstr "strftime: el segundo argumento recibido no es un número"
-#: builtin.c:1478
+#: builtin.c:1556
msgid "mktime: received non-string argument"
msgstr "mktime: se recibió un argumento que no es una cadena"
-#: builtin.c:1523
+#: builtin.c:1601
msgid "system: received non-string argument"
msgstr "system: se recibió un argumento que no es una cadena"
-#: builtin.c:1644 eval.c:2019
+#: builtin.c:1722 eval.c:2039
#, c-format
msgid "reference to uninitialized field `$%d'"
msgstr "referencia al campo sin inicializar `$%d'"
-#: builtin.c:1671
+#: builtin.c:1827
msgid "tolower: received non-string argument"
msgstr "tolower: se recibió un argumento que no es una cadena"
-#: builtin.c:1720
+#: builtin.c:1857
msgid "toupper: received non-string argument"
msgstr "toupper: se recibió un argumento que no es una cadena"
-#: builtin.c:1765
+#: builtin.c:1890
msgid "atan2: received non-numeric first argument"
msgstr "atan2: el primer argumento recibido no es un número"
-#: builtin.c:1767
+#: builtin.c:1892
msgid "atan2: received non-numeric second argument"
msgstr "atan2: el segundo argumento recibido no es un número"
-#: builtin.c:1786
+#: builtin.c:1911
msgid "sin: received non-numeric argument"
msgstr "sin: se recibió un argumento que no es un número"
-#: builtin.c:1802
+#: builtin.c:1927
msgid "cos: received non-numeric argument"
msgstr "cos: se recibió un argumento que no es un número"
-#: builtin.c:1852
+#: builtin.c:1977
msgid "srand: received non-numeric argument"
msgstr "srand: se recibió un argumento que no es un número"
-#: builtin.c:1887
+#: builtin.c:2012
msgid "match: third argument is not an array"
msgstr "match: el tercer argumento no es una matriz"
-#: builtin.c:2414
-#, fuzzy
+#: builtin.c:2555
msgid "gensub: third argument of 0 treated as 1"
msgstr "gensub: el tercer argumento de 0 se trata como 1"
-#: builtin.c:2572
+#: builtin.c:2715
msgid "lshift: received non-numeric first argument"
msgstr "lshift: el primer argumento recibido no es un número"
-#: builtin.c:2574
-#, fuzzy
+#: builtin.c:2717
msgid "lshift: received non-numeric second argument"
-msgstr "strftime: el segundo argumento que se recibió no es un número"
+msgstr "lshift: el segundo argumento recibido no es un número"
-#: builtin.c:2580
+#: builtin.c:2723
#, c-format
msgid "lshift(%lf, %lf): negative values will give strange results"
msgstr "lshift(%lf, %lf): los valores negativos darán resultados extraños"
-#: builtin.c:2582
+#: builtin.c:2725
#, c-format
msgid "lshift(%lf, %lf): fractional values will be truncated"
msgstr "lshift(%lf, %lf): los valores fraccionarios serán truncados"
-#: builtin.c:2584
+#: builtin.c:2727
#, c-format
msgid "lshift(%lf, %lf): too large shift value will give strange results"
msgstr ""
"lshift(%lf, %lf): un valor de desplazamiento muy grande dará resultados "
"extraños"
-#: builtin.c:2610
+#: builtin.c:2753
msgid "rshift: received non-numeric first argument"
msgstr "rshift: el primer argumento recibido no es un número"
-#: builtin.c:2612
-#, fuzzy
+#: builtin.c:2755
msgid "rshift: received non-numeric second argument"
-msgstr "strftime: el segundo argumento que se recibió no es un número"
+msgstr "rshift: el segundo argumento recibido no es un número"
-#: builtin.c:2618
+#: builtin.c:2761
#, c-format
msgid "rshift(%lf, %lf): negative values will give strange results"
msgstr "rshift(%lf, %lf): los valores negativos darán resultados extraños"
-#: builtin.c:2620
+#: builtin.c:2763
#, c-format
msgid "rshift(%lf, %lf): fractional values will be truncated"
msgstr "rshift(%lf, %lf): los valores fraccionarios serán truncados"
-#: builtin.c:2622
+#: builtin.c:2765
#, c-format
msgid "rshift(%lf, %lf): too large shift value will give strange results"
msgstr ""
"rshift(%lf, %lf): un valor de desplazamiento muy grande dará resultados "
"extraños"
-#: builtin.c:2648
+#: builtin.c:2791
msgid "and: received non-numeric first argument"
msgstr "and: el primer argumento recibido no es un número"
-#: builtin.c:2650
-#, fuzzy
+#: builtin.c:2793
msgid "and: received non-numeric second argument"
-msgstr "atan2: el segundo argumento recibido no es un número"
+msgstr "and: el segundo argumento recibido no es un número"
-#: builtin.c:2656
+#: builtin.c:2799
#, c-format
msgid "and(%lf, %lf): negative values will give strange results"
msgstr "and(%lf, %lf): los valores negativos darán resultados extraños"
-#: builtin.c:2658
+#: builtin.c:2801
#, c-format
msgid "and(%lf, %lf): fractional values will be truncated"
msgstr "and(%lf, %lf): los valores fraccionarios serán truncados"
-#: builtin.c:2684
+#: builtin.c:2827
msgid "or: received non-numeric first argument"
msgstr "or: el primer argumento recibido no es un número"
-#: builtin.c:2686
-#, fuzzy
+#: builtin.c:2829
msgid "or: received non-numeric second argument"
-msgstr "atan2: el segundo argumento recibido no es un número"
+msgstr "or: el segundo argumento recibido no es un número"
-#: builtin.c:2692
+#: builtin.c:2835
#, c-format
msgid "or(%lf, %lf): negative values will give strange results"
msgstr "or(%lf, %lf): los valores negativos darán resultados extraños"
-#: builtin.c:2694
+#: builtin.c:2837
#, c-format
msgid "or(%lf, %lf): fractional values will be truncated"
msgstr "or(%lf, %lf): los valores fraccionarios serán truncados"
-#: builtin.c:2720
+#: builtin.c:2863
msgid "xor: received non-numeric first argument"
msgstr "xor: el primer argumento recibido no es un número"
-#: builtin.c:2722
-#, fuzzy
+#: builtin.c:2865
msgid "xor: received non-numeric second argument"
-msgstr "atan2: el segundo argumento recibido no es un número"
+msgstr "xor: el segundo argumento recibido no es un número"
-#: builtin.c:2728
+#: builtin.c:2871
#, c-format
msgid "xor(%lf, %lf): negative values will give strange results"
msgstr "xor(%lf, %lf): los valores negativos darán resultados extraños"
-#: builtin.c:2730
+#: builtin.c:2873
#, c-format
msgid "xor(%lf, %lf): fractional values will be truncated"
msgstr "xor(%lf, %lf): los valores fraccionarios serán truncados"
-#: builtin.c:2754
+#: builtin.c:2897
msgid "compl: received non-numeric argument"
msgstr "compl: se recibió un argumento que no es un número"
-#: builtin.c:2760
+#: builtin.c:2903
#, c-format
msgid "compl(%lf): negative value will give strange results"
msgstr "compl(%lf): el valor negativo dará resultados extraños"
-#: builtin.c:2762
+#: builtin.c:2905
#, c-format
msgid "compl(%lf): fractional value will be truncated"
msgstr "compl(%lf): el valor fraccionario será truncado"
-#: builtin.c:2935
+#: builtin.c:3078
#, c-format
msgid "dcgettext: `%s' is not a valid locale category"
msgstr "dcgettext: `%s' no es una categoría local válida"
@@ -772,74 +790,74 @@ msgstr "dcgettext: `%s' no es una categoría local válida"
msgid "unknown nodetype %d"
msgstr "tipo de nodo %d desconocido"
-#: eval.c:350
+#: eval.c:353
msgid "buffer overflow in genflags2str"
msgstr "desbordamiento de almacenamiento temporal en genflags2str"
-#: eval.c:382 eval.c:388 profile.c:837
+#: eval.c:385 eval.c:391 profile.c:838
#, c-format
msgid "attempt to use array `%s' in a scalar context"
msgstr "se intentó usar la matriz `%s' en un contexto escalar"
-#: eval.c:730
+#: eval.c:733
#, c-format
msgid "for loop: array `%s' changed size from %ld to %ld during loop execution"
msgstr ""
"ciclo for: la matriz `%s' cambió de tamaño de %ld a %ld durante la ejecución "
"del ciclo"
-#: eval.c:751
+#: eval.c:754
msgid "`break' outside a loop is not portable"
msgstr "`break' fuera de un ciclo no es transportable"
-#: eval.c:755
+#: eval.c:758
msgid "`break' outside a loop is not allowed"
msgstr "no se permite `break' fuera de un ciclo"
-#: eval.c:772
+#: eval.c:775
msgid "`continue' outside a loop is not portable"
msgstr "`continue' fuera de un ciclo no es transportable"
-#: eval.c:776
+#: eval.c:779
msgid "`continue' outside a loop is not allowed"
msgstr "no se permite `continue' fuera de un ciclo"
-#: eval.c:810
+#: eval.c:813
msgid "`next' cannot be called from a BEGIN rule"
msgstr "`next' no se puede llamar desde una regla BEGIN"
-#: eval.c:812
+#: eval.c:815
msgid "`next' cannot be called from an END rule"
msgstr "`next' no se puede llamar desde una regla END"
-#: eval.c:821
+#: eval.c:824
msgid "`nextfile' cannot be called from a BEGIN rule"
msgstr "`nextfile' no se puede llamar desde una regla BEGIN"
-#: eval.c:823
+#: eval.c:826
msgid "`nextfile' cannot be called from an END rule"
msgstr "`nextfile' no se puede llamar desde una regla END"
-#: eval.c:872
+#: eval.c:875
msgid "statement has no effect"
msgstr "la sentencia no tiene efecto"
-#: eval.c:915 eval.c:1873
+#: eval.c:952 eval.c:1893
#, c-format
msgid "can't use function name `%s' as variable or array"
msgstr "no se puede usar el nombre de la función `%s' como variable o matriz"
-#: eval.c:922 eval.c:928
+#: eval.c:959 eval.c:965
#, c-format
msgid "reference to uninitialized argument `%s'"
msgstr "referencia al argumento sin inicializar `%s'"
-#: eval.c:937 eval.c:1882
+#: eval.c:974 eval.c:1902
#, c-format
msgid "reference to uninitialized variable `%s'"
msgstr "referencia a la variable sin inicializar `%s'"
-#: eval.c:1083
+#: eval.c:1120
msgid ""
"concatenation: side effects in one expression have changed the length of "
"another!"
@@ -847,49 +865,44 @@ msgstr ""
"concatenación: ¡Los efectos laterales en una expresión han cambiado la "
"longitud de otra!"
-#: eval.c:1162
+#: eval.c:1200
msgid "assignment used in conditional context"
msgstr "se usó una asignación en un contexto condicional"
-#: eval.c:1252
+#: eval.c:1278
msgid "division by zero attempted"
msgstr "se intentó una división por cero"
-#: eval.c:1267
+#: eval.c:1293
#, c-format
msgid "division by zero attempted in `%%'"
msgstr "se intentó una división por cero en `%%'"
-#: eval.c:1282 profile.c:713
+#: eval.c:1308 profile.c:714
#, c-format
msgid "illegal type (%s) in tree_eval"
msgstr "tipo ilegal (%s) en tree_eval"
-#: eval.c:1459
+#: eval.c:1471
msgid "division by zero attempted in `/='"
msgstr "se intentó una división por cero en `/='"
-#: eval.c:1477
+#: eval.c:1493
#, c-format
msgid "division by zero attempted in `%%='"
msgstr "se intentó una división por cero en `%%='"
-#: eval.c:1738
+#: eval.c:1758
#, c-format
msgid "function `%s' called with more arguments than declared"
msgstr "se llamó a la función `%s' con más argumentos de los declarados"
-#: eval.c:1782
+#: eval.c:1802
#, c-format
msgid "function `%s' not defined"
msgstr "la función `%s' no está definida"
-#: eval.c:1788
-#, c-format
-msgid "function %s called\n"
-msgstr "se llamó a la función %s\n"
-
-#: eval.c:1845
+#: eval.c:1865
#, c-format
msgid ""
"\n"
@@ -900,42 +913,42 @@ msgstr ""
"\t# Pila de Llamadas de Funciones:\n"
"\n"
-#: eval.c:1848
+#: eval.c:1868
#, c-format
msgid "\t# -- main --\n"
msgstr "\t# -- principal --\n"
-#: eval.c:2003
+#: eval.c:2023
msgid "attempt to field reference from non-numeric value"
msgstr "se intentó una referencia de campo desde un valor que no es un número"
-#: eval.c:2005
+#: eval.c:2025
msgid "attempt to reference from null string"
msgstr "se intentó una referencia desde una cadena nula"
-#: eval.c:2011
+#: eval.c:2031
#, c-format
msgid "attempt to access field %d"
msgstr "se intentó accesar al campo %d"
-#: eval.c:2032 eval.c:2039 profile.c:934
+#: eval.c:2052 eval.c:2059 profile.c:935
msgid "assignment is not allowed to result of builtin function"
msgstr "no se permite asignación como resultado de una función interna"
-#: eval.c:2103
+#: eval.c:2123
msgid "`IGNORECASE' is a gawk extension"
msgstr "`IGNORECASE' es una extensión de gawk"
-#: eval.c:2133
+#: eval.c:2153
msgid "`BINMODE' is a gawk extension"
msgstr "`BINMODE' es una extensión de gawk"
-#: eval.c:2255
+#: eval.c:2275
#, c-format
msgid "bad `%sFMT' specification `%s'"
msgstr "especificación `%sFMT' `%s' errónea"
-#: eval.c:2333
+#: eval.c:2353
msgid "turning off `--lint' due to assignment to `LINT'"
msgstr "desactivando `--lint' debido a una asignación a `LINT'"
@@ -956,617 +969,624 @@ msgstr ""
#: ext.c:102
msgid "extension: missing function name"
-msgstr ""
+msgstr "extension: falta el nombre de la función"
#: ext.c:107
-#, fuzzy, c-format
+#, c-format
msgid "extension: illegal character `%c' in function name `%s'"
-msgstr ""
-"extension: biblioteca `%s': no se puede llamar a la función `%s' (%s)\n"
+msgstr "extension: carácter ilegal `%c' en el nombre de la función `%s'"
#: ext.c:113
-#, fuzzy, c-format
+#, c-format
msgid "extension: can't redefine function `%s'"
-msgstr "extension: no se puede abrir `%s' (%s)\n"
+msgstr "extension: no se puede redefinir la función `%s'"
#: ext.c:117
-#, fuzzy, c-format
+#, c-format
msgid "extension: function `%s' already defined"
-msgstr "la función `%s' no está definida"
+msgstr "extension: la función `%s' ya está definida"
#: ext.c:122
#, c-format
msgid "extension: can't use gawk built-in `%s' as function name"
msgstr ""
+"extension: no se puede utilizar la orden interna de gawk `%s' como nombre de "
+"función"
#: ext.c:124
-#, fuzzy, c-format
+#, c-format
msgid "extension: function name `%s' previously defined"
-msgstr "el nombre de función `%s' se definió previamente"
+msgstr "extension: el nombre de función `%s' se definió previamente"
#: ext.c:201
#, c-format
-msgid "function `%s' defined to take no more than `%d' argument(s)"
-msgstr ""
+msgid "function `%s' defined to take no more than %d argument(s)"
+msgstr "la función `%s' está definida para tomar no más de %d argumento(s)"
#: ext.c:204
-#, fuzzy, c-format
+#, c-format
msgid "function `%s': missing argument #%d"
-msgstr "la función `%s' no está definida"
+msgstr "función `%s': falta el argumento #%d"
#: ext.c:214
-#, fuzzy, c-format
+#, c-format
msgid "function `%s': argument #%d: attempt to use scalar as an array"
-msgstr "se intentó usar el dato escalar `%s' como una matriz"
+msgstr ""
+"función `%s': argumento #%d: se intentó usar un escalar como una matriz"
#: ext.c:218
#, c-format
msgid "function `%s': argument #%d: attempt to use array as a scalar"
msgstr ""
+"función `%s': argumento #%d: se intentó usar una matriz como un escalar"
#: ext.c:243
msgid "Operation Not Supported"
msgstr "No Se Da Soporte A La Operación"
-#: field.c:315
+#: field.c:326
msgid "NF set to negative value"
msgstr "NF con un valor negativo"
-#: field.c:808
+#: field.c:819
msgid "split: second argument is not an array"
msgstr "split: el segundo argumento no es una matriz"
-#: field.c:842
+#: field.c:853
msgid "split: null string for third arg is a gawk extension"
msgstr ""
"split: la cadena nula para el tercer argumento es una extensión de gawk"
-#: field.c:894
+#: field.c:905
msgid "`FIELDWIDTHS' is a gawk extension"
msgstr "`FIELDWIDTHS' es una extensión gawk"
-#: field.c:921
+#: field.c:935 field.c:946
#, c-format
-msgid "field %d in FIELDWIDTHS, must be > 0"
-msgstr "el campo %d en FIELDWIDTHS, debe ser > 0"
+msgid "invalid FIELDWIDTHS value, near `%s'"
+msgstr "valor de FIELDWIDTHS inválido, cerca de `%s'"
-#: field.c:994
+#: field.c:1027
msgid "null string for `FS' is a gawk extension"
msgstr "la cadena nula para `FS' es una extensión de gawk"
-#: getopt.c:692 getopt.c:711
+#: getopt.c:571 getopt.c:590
#, c-format
msgid "%s: option `%s' is ambiguous\n"
msgstr "%s: la opción `%s' es ambigua\n"
-#: getopt.c:744 getopt.c:748
+#: getopt.c:623 getopt.c:627
#, c-format
msgid "%s: option `--%s' doesn't allow an argument\n"
msgstr "%s: la opción `--%s' no admite ningún argumento\n"
-#: getopt.c:757 getopt.c:762
+#: getopt.c:636 getopt.c:641
#, c-format
msgid "%s: option `%c%s' doesn't allow an argument\n"
msgstr "%s: la opción `%c%s' no admite ningún argumento\n"
-#: getopt.c:807 getopt.c:829 getopt.c:1159 getopt.c:1181
+#: getopt.c:687 getopt.c:709 getopt.c:1040 getopt.c:1062
#, c-format
msgid "%s: option `%s' requires an argument\n"
msgstr "%s: la opción `%s' requiere un argumento\n"
-#: getopt.c:867 getopt.c:870
+#: getopt.c:747 getopt.c:750
#, c-format
msgid "%s: unrecognized option `--%s'\n"
msgstr "%s: no se reconoce la opción `--%s'\n"
-#: getopt.c:878 getopt.c:881
+#: getopt.c:758 getopt.c:761
#, c-format
msgid "%s: unrecognized option `%c%s'\n"
msgstr "%s: no se reconoce la opción `%c%s'\n"
-#: getopt.c:936 getopt.c:939
+#: getopt.c:816 getopt.c:819
#, c-format
msgid "%s: illegal option -- %c\n"
msgstr "%s: opción ilegal -- %c\n"
-#: getopt.c:945 getopt.c:948
+#: getopt.c:825 getopt.c:828
#, c-format
msgid "%s: invalid option -- %c\n"
msgstr "%s: opción inválida -- %c\n"
-#: getopt.c:1003 getopt.c:1022 getopt.c:1234 getopt.c:1255 main.c:433
+#: getopt.c:883 getopt.c:902 getopt.c:1115 getopt.c:1136 main.c:448
#, c-format
msgid "%s: option requires an argument -- %c\n"
msgstr "%s: la opción requiere un argumento -- %c\n"
-#: getopt.c:1074 getopt.c:1093
+#: getopt.c:955 getopt.c:974
#, c-format
msgid "%s: option `-W %s' is ambiguous\n"
msgstr "%s: la opción `-W %s' es ambigua\n"
-#: getopt.c:1117 getopt.c:1138
+#: getopt.c:998 getopt.c:1019
#, c-format
msgid "%s: option `-W %s' doesn't allow an argument\n"
msgstr "%s: la opción `-W %s' no admite ningún argumento\n"
-#: io.c:308
+#: io.c:307
#, c-format
msgid "cannot open file `%s' for reading (%s)"
msgstr "no se puede abrir el fichero `%s' para lectura (%s)"
-#: io.c:395
+#: io.c:398
#, c-format
msgid "close of fd %d (`%s') failed (%s)"
msgstr "falló al cerrar el df %d (`%s') (%s)"
-#: io.c:533
+#: io.c:536
#, c-format
msgid "invalid tree type %s in redirect()"
msgstr "tipo de árbol %s inválido en redirect()"
-#: io.c:539
+#: io.c:542
#, c-format
msgid "expression in `%s' redirection only has numeric value"
msgstr "la expresión en la redirección `%s' sólo tiene un valor numérico"
-#: io.c:545
+#: io.c:548
#, c-format
msgid "expression for `%s' redirection has null string value"
msgstr "la expresión para la redirección `%s' tiene un valor de cadena nula"
-#: io.c:550
+#: io.c:553
#, c-format
msgid "filename `%s' for `%s' redirection may be result of logical expression"
msgstr ""
"el fichero `%s' para la redirección `%s' puede ser resultado de una "
"expresión lógica"
-#: io.c:588
+#: io.c:591
#, c-format
msgid "unnecessary mixing of `>' and `>>' for file `%.*s'"
msgstr "mezcla innecesaria de `>' y `>>' para el fichero `%.*s'"
-#: io.c:640
+#: io.c:643
#, c-format
msgid "can't open pipe `%s' for output (%s)"
msgstr "no se puede abrir la tubería `%s' para la salida (%s)"
-#: io.c:649
+#: io.c:652
#, c-format
msgid "can't open pipe `%s' for input (%s)"
msgstr "no se puede abrir la tubería `%s' para la entrada (%s)"
-#: io.c:662
+#: io.c:665
#, c-format
msgid "can't open two way socket `%s' for input/output (%s)"
msgstr ""
"no se puede abrir el `socket' de dos vías `%s' para entrada/salida (%s)"
-#: io.c:666
+#: io.c:669
#, c-format
msgid "can't open two way pipe `%s' for input/output (%s)"
msgstr "no se puede abrir la tubería de dos vías `%s' para entrada/salida (%s)"
-#: io.c:742
+#: io.c:745
#, c-format
msgid "can't redirect from `%s' (%s)"
msgstr "no se puede redirigir desde `%s' (%s)"
-#: io.c:745
+#: io.c:748
#, c-format
msgid "can't redirect to `%s' (%s)"
msgstr "no se puede redirigir a `%s' (%s)"
-#: io.c:784
+#: io.c:787
msgid ""
"reached system limit for open files: starting to multiplex file descriptors"
msgstr ""
"se alcanzó el límite del sistema para ficheros abiertos: comenzando a "
"multiplexar los descriptores de fichero"
-#: io.c:800
+#: io.c:803
#, c-format
msgid "close of `%s' failed (%s)."
msgstr "falló al cerrar `%s' (%s)."
-#: io.c:808
+#: io.c:811
msgid "too many pipes or input files open"
msgstr "demasiadas tuberías o ficheros de entrada abiertos"
-#: io.c:831
+#: io.c:834
msgid "close: second argument must be `to' or `from'"
msgstr "close: el segundo argumento debe ser `to' o `from'"
-#: io.c:845
+#: io.c:848
#, c-format
msgid "close: `%.*s' is not an open file, pipe or co-process"
msgstr "close: `%.*s' no es un fichero abierto, tubería o co-proceso"
-#: io.c:849
+#: io.c:852
msgid "close of redirection that was never opened"
msgstr "cerrado de una redirección que nunca fue abierta"
-#: io.c:945
+#: io.c:948
#, c-format
msgid "close: redirection `%s' not opened with `|&', second argument ignored"
msgstr ""
"close: la redirección `%s' no se abre con `|&', se ignoró el segundo "
"argumento"
-#: io.c:960
+#: io.c:964
#, c-format
msgid "failure status (%d) on pipe close of `%s' (%s)"
msgstr "estado de fallo (%d) al cerrar la tubería de `%s' (%s)"
-#: io.c:963
+#: io.c:967
#, c-format
msgid "failure status (%d) on file close of `%s' (%s)"
msgstr "estado de fallo (%d) al cerrar el fichero de `%s' (%s)"
-#: io.c:983
+#: io.c:987
#, c-format
msgid "no explicit close of socket `%s' provided"
msgstr "no se provee el cerrado explícito del `socket' `%s'"
-#: io.c:986
+#: io.c:990
#, c-format
msgid "no explicit close of co-process `%s' provided"
msgstr "no se provee el cerrado explícito del co-proceso `%s'"
-#: io.c:989
+#: io.c:993
#, c-format
msgid "no explicit close of pipe `%s' provided"
msgstr "no se provee el cerrado explícito del la tubería `%s'"
-#: io.c:992
+#: io.c:996
#, c-format
msgid "no explicit close of file `%s' provided"
msgstr "no se provee el cerrado explícito del fichero `%s'"
-#: io.c:1021 io.c:1075
+#: io.c:1025 io.c:1080 main.c:718 main.c:756
#, c-format
msgid "error writing standard output (%s)"
msgstr "error al escribir en la salida estándar (%s)"
-#: io.c:1025 io.c:1079
+#: io.c:1029 io.c:1085
#, c-format
msgid "error writing standard error (%s)"
msgstr "error al escribir en la salida estándar de error (%s)"
-#: io.c:1033
+#: io.c:1037
#, c-format
msgid "pipe flush of `%s' failed (%s)."
msgstr "falló la limpieza de la tubería de `%s' (%s)."
-#: io.c:1036
+#: io.c:1040
#, c-format
msgid "co-process flush of pipe to `%s' failed (%s)."
msgstr "falló la limpieza del co-proceso de la tubería a `%s' (%s)."
-#: io.c:1039
+#: io.c:1043
#, c-format
msgid "file flush of `%s' failed (%s)."
msgstr "falló la limpieza del fichero de `%s' (%s)."
-#: io.c:1198
+#: io.c:1205
msgid "/inet/raw client not ready yet, sorry"
msgstr "el cliente /inet/raw no está listo aún, perdón"
-#: io.c:1200 io.c:1237
+#: io.c:1207 io.c:1244
msgid "only root may use `/inet/raw'."
msgstr "sólo root puede utilizar `/inet/raw'."
-#: io.c:1235
+#: io.c:1242
msgid "/inet/raw server not ready yet, sorry"
msgstr "el servidor /inet/raw no está listo aún, perdón"
-#: io.c:1325
+#: io.c:1332
#, c-format
msgid "no (known) protocol supplied in special filename `%s'"
msgstr ""
"no se proporciona algún protocolo (conocido) en el nombre de fichero "
"especial `%s'"
-#: io.c:1343
+#: io.c:1350
#, c-format
msgid "special file name `%s' is incomplete"
msgstr "el nombre de fichero especial `%s' está incompleto"
-#: io.c:1355
+#: io.c:1362
#, c-format
msgid "local port invalid in `%s'"
msgstr "puerto local inválido en `%s'"
-#: io.c:1367
+#: io.c:1374
msgid "must supply a remote hostname to `/inet'"
msgstr "se debe proporcionar a `/inet' un nombre de anfitrión remoto"
-#: io.c:1382
+#: io.c:1389
msgid "must supply a remote port to `/inet'"
msgstr "se debe proporcionar a `/inet' un puerto remoto"
-#: io.c:1388
+#: io.c:1395
#, c-format
msgid "remote port invalid in `%s'"
msgstr "puerto remoto inválido en `%s'"
-#: io.c:1398
+#: io.c:1405
msgid "TCP/IP communications are not supported"
msgstr "No tienen soporte las comunicaciones TCP/IP"
-#: io.c:1407 io.c:1588
+#: io.c:1414 io.c:1595
#, c-format
msgid "file `%s' is a directory"
msgstr "el fichero `%s' es un directorio"
-#: io.c:1477
+#: io.c:1484
#, c-format
msgid "use `PROCINFO[\"%s\"]' instead of `%s'"
msgstr "use `PROCINFO[\"%s\"]' en lugar de `%s'"
-#: io.c:1509
+#: io.c:1516
msgid "use `PROCINFO[...]' instead of `/dev/user'"
msgstr "use `PROCINFO[...]' en lugar de `/dev/user'"
-#: io.c:1574 io.c:1748
+#: io.c:1581 io.c:1763
#, c-format
msgid "could not open `%s', mode `%s'"
msgstr "no se puede abrir `%s', modo `%s'"
-#: io.c:1799
+#: io.c:1814
#, c-format
msgid "close of master pty failed (%s)"
msgstr "falló al cerrar el pty maestro (%s)"
-#: io.c:1801 io.c:1953 io.c:2105
+#: io.c:1816 io.c:1968 io.c:2119
#, c-format
msgid "close of stdout in child failed (%s)"
msgstr "falló al cerrar la salida estándar en el hijo (%s)"
-#: io.c:1804
+#: io.c:1819
#, c-format
msgid "moving slave pty to stdout in child failed (dup: %s)"
msgstr ""
"falló el movimiento del pty esclavo a la salida estándar en el hijo (dup: %s)"
-#: io.c:1806 io.c:1958
+#: io.c:1821 io.c:1973
#, c-format
msgid "close of stdin in child failed (%s)"
msgstr "falló al cerrar la entrada estándar en el hijo (%s)"
-#: io.c:1809
+#: io.c:1824
#, c-format
msgid "moving slave pty to stdin in child failed (dup: %s)"
msgstr ""
"falló el movimiento del pty esclavo a la entrada estándar en el hijo (dup: %"
"s)"
-#: io.c:1811 io.c:1830
+#: io.c:1826 io.c:1845
#, c-format
msgid "close of slave pty failed (%s)"
msgstr "falló al cerrar el pty esclavo (%s)"
-#: io.c:1904 io.c:1956 io.c:2086 io.c:2108
+#: io.c:1919 io.c:1971 io.c:2100 io.c:2122
#, c-format
msgid "moving pipe to stdout in child failed (dup: %s)"
msgstr "falló el movimiento a la salida estándar en el hijo (dup: %s)"
-#: io.c:1908 io.c:1961
+#: io.c:1923 io.c:1976
#, c-format
msgid "moving pipe to stdin in child failed (dup: %s)"
msgstr ""
"falló el movimiento de la tubería a la entrada estándar en el hijo (dup: %s)"
-#: io.c:1925 io.c:2099
+#: io.c:1940 io.c:2113
msgid "restoring stdout in parent process failed\n"
msgstr "falló la restauración de la salida estándar en el proceso padre\n"
-#: io.c:1930
+#: io.c:1945
msgid "restoring stdin in parent process failed\n"
msgstr "falló la restauración de la entrada estándar en el proceso padre\n"
-#: io.c:1964 io.c:2110 io.c:2121
+#: io.c:1979 io.c:2124 io.c:2135
#, c-format
msgid "close of pipe failed (%s)"
msgstr "falló al cerrar la tubería (%s)"
-#: io.c:2009
+#: io.c:2024
msgid "`|&' not supported"
msgstr "`|&' no tiene soporte"
-#: io.c:2076
+#: io.c:2090
#, c-format
msgid "cannot open pipe `%s' (%s)"
msgstr "no se puede abrir la tubería `%s' (%s)"
-#: io.c:2117
+#: io.c:2131
#, c-format
msgid "cannot create child process for `%s' (fork: %s)"
msgstr "no se puede crear el proceso hijo para `%s' (fork: %s)"
-#: io.c:2460
+#: io.c:2506
#, c-format
msgid "data file `%s' is empty"
msgstr "el fichero de datos `%s' está vacío"
-#: io.c:2503 io.c:2511
+#: io.c:2547 io.c:2555
msgid "could not allocate more input memory"
msgstr "no se puede reservar más memoria de entrada"
-#: io.c:2869 io.c:2932
+#: io.c:2919 io.c:2984
#, c-format
msgid "error reading input file `%s': %s"
msgstr "error al leer el fichero de entrada `%s': %s"
-#: io.c:3057
+#: io.c:3109
msgid "multicharacter value of `RS' is a gawk extension"
msgstr "el valor multicaracter de `RS' es una extensión de gawk"
-#: main.c:323
+#: main.c:338
msgid "`-m[fr]' option irrelevant in gawk"
msgstr "la opción -m[fr] es irrelevante en gawk"
-#: main.c:325
+#: main.c:340
msgid "-m option usage: `-m[fr] nnn'"
msgstr "uso de la opción -m: `-m[fr]' nnn"
-#: main.c:342
+#: main.c:357
#, c-format
msgid "%s: option `-W %s' unrecognized, ignored\n"
msgstr "%s: no se reconoce la opción `-W %s', se ignora\n"
-#: main.c:379
+#: main.c:394
msgid "empty argument to `--source' ignored"
msgstr "se ignora el argumento vacío para `--source'"
-#: main.c:450
+#: main.c:467
msgid "environment variable `POSIXLY_CORRECT' set: turning on `--posix'"
msgstr ""
"la variable de ambiente `POSIXLY_CORRECT' está establecida: activando `--"
"posix'"
-#: main.c:455
+#: main.c:472
msgid "`--posix' overrides `--traditional'"
msgstr "`--posix' se impone a `--traditional'"
-#: main.c:466
+#: main.c:483
msgid "`--posix'/`--traditional' overrides `--non-decimal-data'"
msgstr "`--posix'/`--traditional' se imponen a `--non-decimal-data'"
-#: main.c:470
+#: main.c:487
#, c-format
msgid "running %s setuid root may be a security problem"
msgstr "ejecutar %s como setuid root puede ser un problema de seguridad"
-#: main.c:511
+#: main.c:528
#, c-format
msgid "can't set binary mode on stdin (%s)"
msgstr "no se puede establecer el modo binario en la entrada estándar (%s)"
-#: main.c:514
+#: main.c:531
#, c-format
msgid "can't set binary mode on stdout (%s)"
msgstr "no se puede establecer el modo binario en la salida estándar (%s)"
-#: main.c:516
+#: main.c:533
#, c-format
msgid "can't set binary mode on stderr (%s)"
msgstr ""
"no se puede establecer el modo binario en la salida estándar de error (%s)"
-#: main.c:546
+#: main.c:572
msgid "no program text at all!"
msgstr "¡No hay ningún programa de texto!"
-#: main.c:623
+#: main.c:665
#, c-format
msgid "Usage: %s [POSIX or GNU style options] -f progfile [--] file ...\n"
msgstr ""
"Modo de empleo: %s [opciones estilo POSIX o GNU] -f fichprog [--] "
"fichero ...\n"
-#: main.c:625
+#: main.c:667
#, c-format
msgid "Usage: %s [POSIX or GNU style options] [--] %cprogram%c file ...\n"
msgstr ""
"Modo de empleo: %s [opciones estilo POSIX o GNU] [--] %cprograma%c "
"fichero ...\n"
-#: main.c:630
+#: main.c:672
msgid "POSIX options:\t\tGNU long options:\n"
msgstr "Opciones POSIX:\t\tOpciones largas GNU:\n"
-#: main.c:631
+#: main.c:673
msgid "\t-f progfile\t\t--file=progfile\n"
msgstr "\t-f fichprog\t\t--file=fichprog\n"
-#: main.c:632
+#: main.c:674
msgid "\t-F fs\t\t\t--field-separator=fs\n"
msgstr "\t-F sc\t\t\t--field-separator=sc\n"
-#: main.c:633
+#: main.c:675
msgid "\t-v var=val\t\t--assign=var=val\n"
msgstr "\t-v var=valor\t\t--assign=var=valor\n"
-#: main.c:634
+#: main.c:676
msgid "\t-m[fr] val\n"
msgstr "\t-m[fr] valor\n"
-#: main.c:635
+#: main.c:677
msgid "\t-W compat\t\t--compat\n"
msgstr "\t-W compat\t\t--compat\n"
-#: main.c:636
+#: main.c:678
msgid "\t-W copyleft\t\t--copyleft\n"
msgstr "\t-W copyleft\t\t--copyleft\n"
-#: main.c:637
+#: main.c:679
msgid "\t-W copyright\t\t--copyright\n"
msgstr "\t-W copyright\t\t--copyright\n"
-#: main.c:638
+#: main.c:680
msgid "\t-W dump-variables[=file]\t--dump-variables[=file]\n"
msgstr "\t-W dump-variables[=fichero]\t--dump-variables[=fichero]\n"
-#: main.c:639
+#: main.c:681
+msgid "\t-W exec=file\t\t--exec=file\n"
+msgstr "\t-W exec=fichero\t\t--exec=fichero\n"
+
+#: main.c:682
msgid "\t-W gen-po\t\t--gen-po\n"
msgstr "\t-W gen-po\t\t--gen-po\n"
-#: main.c:640
+#: main.c:683
msgid "\t-W help\t\t\t--help\n"
msgstr "\t-W help\t\t\t--help\n"
-#: main.c:641
+#: main.c:684
msgid "\t-W lint[=fatal]\t\t--lint[=fatal]\n"
msgstr "\t-W lint[=fatal]\t\t--lint[=fatal]\n"
-#: main.c:642
+#: main.c:685
msgid "\t-W lint-old\t\t--lint-old\n"
msgstr "\t-W lint-old\t\t--lint-old\n"
-#: main.c:643
+#: main.c:686
msgid "\t-W non-decimal-data\t--non-decimal-data\n"
msgstr "\t-W non-decimal-data\t--non-decimal-data\n"
-#: main.c:645
+#: main.c:688
msgid "\t-W nostalgia\t\t--nostalgia\n"
msgstr "\t-W nostalgia\t\t--nostalgia\n"
-#: main.c:648
+#: main.c:691
msgid "\t-W parsedebug\t\t--parsedebug\n"
msgstr "\t-W parsedebug\t\t--parsedebug\n"
-#: main.c:650
+#: main.c:693
msgid "\t-W profile[=file]\t--profile[=file]\n"
msgstr "\t-W profile[=fichero]\t--profile[=fichero]\n"
-#: main.c:651
+#: main.c:694
msgid "\t-W posix\t\t--posix\n"
msgstr "\t-W posix\t\t--posix\n"
-#: main.c:652
+#: main.c:695
msgid "\t-W re-interval\t\t--re-interval\n"
msgstr "\t-W re-interval\t\t--re-interval\n"
# Esta es la línea más larga de la lista de argumentos.
# Probar con gawk para revisar tabuladores. cfuga
-#: main.c:653
+#: main.c:696
msgid "\t-W source=program-text\t--source=program-text\n"
msgstr "\t-W source=texto-prog\t--source=texto-prog\n"
-#: main.c:654
+#: main.c:697
msgid "\t-W traditional\t\t--traditional\n"
msgstr "\t-W traditional\t\t--traditional\n"
-#: main.c:655
+#: main.c:698
msgid "\t-W usage\t\t--usage\n"
msgstr "\t-W usage\t\t--usage\n"
-#: main.c:656
+#: main.c:699
msgid "\t-W version\t\t--version\n"
msgstr "\t-W version\t\t--version\n"
-#: main.c:660
+#: main.c:703
msgid ""
"\n"
"To report bugs, see node `Bugs' in `gawk.info', which is\n"
@@ -1579,7 +1599,7 @@ msgstr ""
"impresa.\n"
"\n"
-#: main.c:664
+#: main.c:707
msgid ""
"gawk is a pattern scanning and processing language.\n"
"By default it reads standard input and writes standard output.\n"
@@ -1589,7 +1609,7 @@ msgstr ""
"Por omisión lee la entrada estándar y escribe en la salida estándar.\n"
"\n"
-#: main.c:668
+#: main.c:711
msgid ""
"Examples:\n"
"\tgawk '{ sum += $1 }; END { print sum }' file\n"
@@ -1599,7 +1619,7 @@ msgstr ""
"\tgawk '{ sum += $1 }; END { print sum }' fichero\n"
"\tgawk -F: '{ print $1 }' /etc/passwd\n"
-#: main.c:685
+#: main.c:731
#, c-format
msgid ""
"Copyright (C) 1989, 1991-%d Free Software Foundation.\n"
@@ -1619,7 +1639,7 @@ msgstr ""
"(a su elección) cualquier versión posterior.\n"
"\n"
-#: main.c:693
+#: main.c:739
msgid ""
"This program is distributed in the hope that it will be useful,\n"
"but WITHOUT ANY WARRANTY; without even the implied warranty of\n"
@@ -1633,21 +1653,23 @@ msgstr ""
"Licencia Pública General de GNU para más detalles.\n"
"\n"
-#: main.c:699
+#: main.c:745
msgid ""
"You should have received a copy of the GNU General Public License\n"
"along with this program; if not, write to the Free Software\n"
-"Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.\n"
+"Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, "
+"USA.\n"
msgstr ""
"Debió haber recibido una copia de la Licencia Pública General de GNU\n"
"junto con este programa; si no es así, escriba a la Free Software\n"
-"Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.\n"
+"Foundation, Inc., 51 Franklin Street, Quinto Piso, Boston, MA 02110-1301, "
+"USA.\n"
-#: main.c:733
+#: main.c:781
msgid "-Ft does not set FS to tab in POSIX awk"
msgstr "-Ft no establece FS a tabulador en el awk de POSIX"
-#: main.c:962
+#: main.c:1018
#, c-format
msgid ""
"%s: `%s' argument to `-v' not in `var=value' form\n"
@@ -1656,35 +1678,35 @@ msgstr ""
"%s: el argumento `%s' para `-v' no es de la forma `var=valor'\n"
"\n"
-#: main.c:982
+#: main.c:1038
#, c-format
msgid "`%s' is not a legal variable name"
msgstr "`%s' no es un nombre de variable legal"
-#: main.c:985
+#: main.c:1041
#, c-format
msgid "`%s' is not a variable name, looking for file `%s=%s'"
msgstr "`%s' no es un nombre de variable, se busca el fichero `%s=%s'"
-#: main.c:1018
+#: main.c:1074
msgid "floating point exception"
msgstr "excepción de coma flotante"
-#: main.c:1025
+#: main.c:1081
msgid "fatal error: internal error"
msgstr "error fatal: error interno"
-#: main.c:1075
+#: main.c:1132
#, c-format
msgid "no pre-opened fd %d"
msgstr "no existe el df %d abierto previamente"
-#: main.c:1082
+#: main.c:1139
#, c-format
msgid "could not pre-open /dev/null for fd %d"
msgstr "no se puede abrir previamente /dev/null para el df %d"
-#: main.c:1105 main.c:1114
+#: main.c:1162 main.c:1171
#, c-format
msgid "could not find groups: %s"
msgstr "no se pueden encontrar los grupos: %s"
@@ -1706,23 +1728,23 @@ msgstr "error: "
msgid "fatal: "
msgstr "fatal: "
-#: node.c:58 node.c:65 node.c:74 node.c:88 node.c:115
+#: node.c:59 node.c:66 node.c:75 node.c:90 node.c:119
msgid "can't convert string to float"
msgstr "no se puede convertir una cadena a coma flotante"
-#: node.c:357
+#: node.c:414
msgid "backslash at end of string"
msgstr "barra invertida al final de la cadena"
-#: node.c:541
+#: node.c:604
msgid "POSIX does not allow `\\x' escapes"
msgstr "POSIX no permite escapes `\\x'"
-#: node.c:547
+#: node.c:610
msgid "no hex digits in `\\x' escape sequence"
msgstr "no hay dígitos hexadecimales en la secuencia de escape `\\x'"
-#: node.c:581
+#: node.c:644
#, c-format
msgid "escape sequence `\\%c' treated as plain `%c'"
msgstr "la secuencia de escape `\\%c' tratada como una simple `%c'"
@@ -1742,21 +1764,21 @@ msgstr "no se puede abrir `%s' para escritura: %s"
msgid "internal error: %s with null vname"
msgstr "error interno: %s con vname nulo"
-#: profile.c:530
+#: profile.c:531
msgid "# treated internally as `delete'"
msgstr "# se trata internamente como `delete'"
-#: profile.c:1167
+#: profile.c:1168
#, c-format
msgid "# this is a dynamically loaded extension function"
-msgstr ""
+msgstr "# esta es una función de extensión cargada dinámicamente"
-#: profile.c:1198
+#: profile.c:1199
#, c-format
msgid "\t# gawk profile, created %s\n"
msgstr "\t# perfil de gawk, creado %s\n"
-#: profile.c:1201
+#: profile.c:1202
#, c-format
msgid ""
"\t# BEGIN block(s)\n"
@@ -1765,7 +1787,7 @@ msgstr ""
"\t# bloque(s) BEGIN\n"
"\n"
-#: profile.c:1211
+#: profile.c:1212
#, c-format
msgid ""
"\t# Rule(s)\n"
@@ -1774,7 +1796,7 @@ msgstr ""
"\t# Regla(s)\n"
"\n"
-#: profile.c:1217
+#: profile.c:1218
#, c-format
msgid ""
"\t# END block(s)\n"
@@ -1783,7 +1805,7 @@ msgstr ""
"\t# bloque(s) END\n"
"\n"
-#: profile.c:1237
+#: profile.c:1238
#, c-format
msgid ""
"\n"
@@ -1792,83 +1814,89 @@ msgstr ""
"\n"
"\t# Funciones, enumeradas alfabéticamente\n"
-#: profile.c:1452
+#: profile.c:1453
#, c-format
msgid "unexpected type %s in prec_level"
msgstr "tipo %s inesperado en prec_level"
-#: regcomp.c:150
+#: regcomp.c:160
msgid "Success"
msgstr "Éxito"
-#: regcomp.c:153
+#: regcomp.c:163
msgid "No match"
msgstr "No hay coincidencia"
-#: regcomp.c:156
+#: regcomp.c:166
msgid "Invalid regular expression"
msgstr "Expresión regular inválida"
-#: regcomp.c:159
+#: regcomp.c:169
msgid "Invalid collation character"
msgstr "Caracter de ordenación inválido"
-#: regcomp.c:162
+#: regcomp.c:172
msgid "Invalid character class name"
msgstr "Nombre de clase de caracter inválido"
-#: regcomp.c:165
+#: regcomp.c:175
msgid "Trailing backslash"
msgstr "Barra invertida extra al final"
-#: regcomp.c:168
+#: regcomp.c:178
msgid "Invalid back reference"
msgstr "Referencia hacia atrás inválida"
-#: regcomp.c:171
+#: regcomp.c:181
msgid "Unmatched [ or [^"
msgstr "[ o [^ desemparejados"
-#: regcomp.c:174
+#: regcomp.c:184
msgid "Unmatched ( or \\("
msgstr "( o \\( desemparejados"
-#: regcomp.c:177
+#: regcomp.c:187
msgid "Unmatched \\{"
msgstr "\\{ desemparejado"
-#: regcomp.c:180
+#: regcomp.c:190
msgid "Invalid content of \\{\\}"
msgstr "Contenido inválido de \\{\\}"
-#: regcomp.c:183
+#: regcomp.c:193
msgid "Invalid range end"
msgstr "Final de rango inválido"
-#: regcomp.c:186
+#: regcomp.c:196
msgid "Memory exhausted"
msgstr "Memoria agotada"
-#: regcomp.c:189
+#: regcomp.c:199
msgid "Invalid preceding regular expression"
msgstr "Expresión regular precedente inválida"
-#: regcomp.c:192
+#: regcomp.c:202
msgid "Premature end of regular expression"
msgstr "Fin prematuro de la expresión regular"
-#: regcomp.c:195
+#: regcomp.c:205
msgid "Regular expression too big"
msgstr "La expresión regular es demasiado grande"
-#: regcomp.c:198
+#: regcomp.c:208
msgid "Unmatched ) or \\)"
msgstr ") o \\) desemparejados"
-#: regcomp.c:668
+#: regcomp.c:688
msgid "No previous regular expression"
msgstr "No hay una expresión regular previa"
+#~ msgid "function %s called\n"
+#~ msgstr "se llamó a la función %s\n"
+
+#~ msgid "field %d in FIELDWIDTHS, must be > 0"
+#~ msgstr "el campo %d en FIELDWIDTHS, debe ser > 0"
+
#~ msgid "or used as a variable or an array"
#~ msgstr "o se usó como una variable o una matriz"
diff --git a/po/fr.gmo b/po/fr.gmo
index cc2662e6..dc729454 100644
--- a/po/fr.gmo
+++ b/po/fr.gmo
Binary files differ
diff --git a/po/fr.po b/po/fr.po
index 2634df8e..5108a949 100644
--- a/po/fr.po
+++ b/po/fr.po
@@ -1,13 +1,13 @@
-# Messages français pour make.
-# Copyright (C) 2004 Free Software Foundation, Inc.
+# Messages français pour gawk.
+# Copyright © 2004 Free Software Foundation, Inc.
# Michel Robitaille <robitail@IRO.UMontreal.CA>, 1996.
#
msgid ""
msgstr ""
-"Project-Id-Version: gawk 3.1.31\n"
+"Project-Id-Version: gawk 3.1.4l\n"
"Report-Msgid-Bugs-To: arnold@skeeve.com\n"
-"POT-Creation-Date: 2004-07-15 13:02+0300\n"
-"PO-Revision-Date: 2004-05-10 08:00-0500\n"
+"POT-Creation-Date: 2005-07-06 17:20+0300\n"
+"PO-Revision-Date: 2005-06-29 08:00-0500\n"
"Last-Translator: Michel Robitaille <robitail@IRO.UMontreal.CA>\n"
"Language-Team: French <traduc@traduc.org>\n"
"MIME-Version: 1.0\n"
@@ -16,9 +16,9 @@ msgstr ""
"Plural-Forms: nplurals=2; plural=(n > 1);\n"
#: array.c:112
-#, fuzzy, c-format
+#, c-format
msgid "attempt to use function `%s' as an array"
-msgstr "tentative d'utilisation de la fonction « %s » dans le tableau"
+msgstr "tentative d'utilisation de la fonction « %s » comme un tableau"
#: array.c:115
#, c-format
@@ -32,9 +32,9 @@ msgid "attempt to use scalar `%s' as array"
msgstr "tentative d'utilisation du scalaire « %s » comme un tableau"
#: array.c:156
-#, fuzzy, c-format
+#, c-format
msgid "from %s"
-msgstr "%s (de %s)"
+msgstr "à partir de %s"
#: array.c:511
#, c-format
@@ -67,7 +67,7 @@ msgid "%s: table_size = %d, array_size = %d\n"
msgstr "%s: table_size = %d, array_size = %d\n"
#: array.c:829
-#, fuzzy, c-format
+#, c-format
msgid "%s: is parameter\n"
msgstr "%s: est un paramètre\n"
@@ -77,700 +77,708 @@ msgid "%s: array_ref to %s\n"
msgstr "%s: array_ref de %s\n"
#: awkgram.y:208
-#, fuzzy, c-format
+#, c-format
msgid "%s blocks must have an action part"
-msgstr "Les blocs de FIN doivent avoir une partie action"
+msgstr "Les blocs %s doivent avoir une partie action"
#: awkgram.y:211
-#, fuzzy
msgid "each rule must have a pattern or an action part"
-msgstr "Les blocs de FIN doivent avoir une partie action"
+msgstr "chaqque règle doit avoir un patron ou une partie action"
#: awkgram.y:267
#, c-format
msgid "`%s' is a built-in function, it cannot be redefined"
msgstr "« %s » est une fonction interne, elle ne peut être redéfinie"
-#: awkgram.y:314
+#: awkgram.y:313
+msgid "regexp constant `//' looks like a C++ comment, but is not"
+msgstr ""
+"la constante d'expression régulière « // » ressemble à un commentaire en C, "
+"mais ne l'est pas"
+
+#: awkgram.y:316
#, c-format
msgid "regexp constant `/%s/' looks like a C comment, but is not"
msgstr ""
"la constante d'expression régulière « /%s/ » ressemble à un commentaire en "
"C, mais ne l'est pas"
-#: awkgram.y:341 awkgram.y:619
+#: awkgram.y:343 awkgram.y:623
msgid "statement may have no effect"
msgstr "la déclaration peut n'avoir aucun effet"
-#: awkgram.y:436 awkgram.y:456
-#, fuzzy, c-format
+#: awkgram.y:440 awkgram.y:460
+#, c-format
msgid "`%s' used in %s action"
-msgstr "« next » utilisé dans l'action BEGIN ou END"
+msgstr "« %s » utilisé dans l'action %s"
-#: awkgram.y:449 awkgram.y:452
+#: awkgram.y:453 awkgram.y:456
msgid "`nextfile' is a gawk extension"
msgstr "« nextfile » est une extension de gawk"
-#: awkgram.y:466
+#: awkgram.y:470
msgid "`return' used outside function context"
msgstr "« return » utilisé en dehors du contexte d'une fonction"
-#: awkgram.y:508
+#: awkgram.y:512
msgid "plain `print' in BEGIN or END rule should probably be `print \"\"'"
msgstr ""
"utilisation de « print » dans une règle BEGIN ou END doit être probablement "
"« print \"\" »"
-#: awkgram.y:521 awkgram.y:528
+#: awkgram.y:525 awkgram.y:532
msgid "`delete array' is a gawk extension"
msgstr "« delete array » est une extension de gawk"
-#: awkgram.y:536 awkgram.y:543
-#, fuzzy
+#: awkgram.y:540 awkgram.y:547
msgid "`delete(array)' is a non-portable tawk extension"
-msgstr "« delete array » est une extension de gawk"
+msgstr "« delete(array) » est une extension de tawk qui n'est pas portable"
-#: awkgram.y:587
+#: awkgram.y:591
#, c-format
msgid "duplicate case values in switch body: %s"
-msgstr ""
+msgstr "duplicata de valeur de case dans le corps du switch: %s"
-#: awkgram.y:597
+#: awkgram.y:601
msgid "Duplicate `default' detected in switch body"
-msgstr ""
+msgstr "duplicata de « default » détecté dans le corps du switch"
-#: awkgram.y:686
+#: awkgram.y:690
msgid "multistage two-way pipelines don't work"
msgstr "pipelines bidirectionnel à multi-étapes ne fonctionnent pas"
-#: awkgram.y:777
+#: awkgram.y:781
msgid "regular expression on right of assignment"
msgstr "expression régulière à la droite de l'affectation"
-#: awkgram.y:800
+#: awkgram.y:804
msgid "regular expression on left of `~' or `!~' operator"
msgstr "expression régulière sur la gauche de l'opérateur « ~ » ou « !~ »"
-#: awkgram.y:808
+#: awkgram.y:812
msgid "regular expression on right of comparison"
msgstr "expression régulière sur la droite de la comparaison"
-#: awkgram.y:875
+#: awkgram.y:879
msgid "non-redirected `getline' undefined inside END action"
msgstr "« getline » non redirigé indéfini à l'intérieur de l'action END"
-#: awkgram.y:902
+#: awkgram.y:906
msgid "call of `length' without parentheses is not portable"
msgstr "l'appel de « length » sans les parenthèses n'est pas portable"
-#: awkgram.y:905
+#: awkgram.y:909
msgid "call of `length' without parentheses is deprecated by POSIX"
msgstr "l'appel de « length » sans les parenthèses est déprécié par POSIX"
-#: awkgram.y:958
+#: awkgram.y:962
msgid "use of non-array as array"
-msgstr ""
+msgstr "utilisation d'une entité qui n'est pas un tableau comme tableau"
-#: awkgram.y:960
+#: awkgram.y:964
msgid "invalid subscript expression"
msgstr "sous-expression invalide"
-#: awkgram.y:1158
-#, fuzzy
+#: awkgram.y:1171
msgid "unexpected newline or end of string"
-msgstr "nouvelle ligne inattendue"
+msgstr "nouvelle ligne inattendue ou fin de la chaîne"
-#: awkgram.y:1254
+#: awkgram.y:1267
msgid "empty program text on command line"
msgstr "texte du programme sur la ligne de commande est vide"
-#: awkgram.y:1307
+#: awkgram.y:1320
#, c-format
msgid "can't open source file `%s' for reading (%s)"
msgstr "ne peut ouvrir le fichier source « %s » pour lecture (%s)"
-#: awkgram.y:1384
+#: awkgram.y:1397
#, c-format
msgid "can't read sourcefile `%s' (%s)"
msgstr "ne peut lire le fichier source « %s » (%s)"
-#: awkgram.y:1392
+#: awkgram.y:1405
#, c-format
msgid "source file `%s' is empty"
msgstr "fichier source « %s » est vide"
-#: awkgram.y:1590 awkgram.y:1700 awkgram.y:1718 awkgram.y:2068 awkgram.y:2153
+#: awkgram.y:1596 awkgram.y:1718 awkgram.y:1736 awkgram.y:2107 awkgram.y:2194
msgid "source file does not end in newline"
msgstr "fichier source ne se termine pas par un retour de chariot"
-#: awkgram.y:1654
+#: awkgram.y:1658
msgid "unterminated regexp ends with `\\' at end of file"
msgstr ""
"expression régulière non termineé se terminant par « \\ » à la fin du fichier"
-#: awkgram.y:1674
+#: awkgram.y:1682
+#, c-format
+msgid "%s: %d: tawk regex modifier `/.../%c' doesn't work in gawk"
+msgstr ""
+"%s: %d: modificateur d'exp. rég. tawk `/.../%c' ne peut opérer dans gawk"
+
+#: awkgram.y:1686
+#, c-format
+msgid "tawk regex modifier `/.../%c' doesn't work in gawk"
+msgstr "modificateur d'exp. rég. tawk `/.../%c' ne peut opérer dans gawk"
+
+#: awkgram.y:1693
msgid "unterminated regexp"
msgstr "expression régulière non terminée"
-#: awkgram.y:1677
+#: awkgram.y:1696
msgid "unterminated regexp at end of file"
msgstr "expression régulière non terminée à la fin du fichier"
-#: awkgram.y:1744
+#: awkgram.y:1762
msgid "use of `\\ #...' line continuation is not portable"
msgstr ""
"utilisation de « \\ #... » comme continuation de ligne n'est pas portable"
-#: awkgram.y:1756
+#: awkgram.y:1774
msgid "backslash not last character on line"
msgstr "la barre oblique inverse n'est pas le dernier caractère sur la ligne"
-#: awkgram.y:1801
+#: awkgram.y:1819
msgid "POSIX does not allow operator `**='"
msgstr "POSIX ne permet un opérateur « **= »"
-#: awkgram.y:1803
+#: awkgram.y:1821
msgid "old awk does not support operator `**='"
msgstr "l'ancien awk ne supporte pas l'opérateur « **= »"
-#: awkgram.y:1812
+#: awkgram.y:1830
msgid "POSIX does not allow operator `**'"
msgstr "POSIX ne permet pas l'opérateur « ** »"
-#: awkgram.y:1814
+#: awkgram.y:1832
msgid "old awk does not support operator `**'"
msgstr "l'ancien awk ne supporte pas l'opérateur « ** »"
-#: awkgram.y:1845
+#: awkgram.y:1863
msgid "operator `^=' is not supported in old awk"
msgstr "l'opérateur « ^= » n'est pas supporté dans l'ancien awk"
-#: awkgram.y:1853
+#: awkgram.y:1871
msgid "operator `^' is not supported in old awk"
msgstr "l'opérateur « ^ » n'est pas supporté dans l'ancien awk"
-#: awkgram.y:1937 awkgram.y:1954
+#: awkgram.y:1955 awkgram.y:1970
msgid "unterminated string"
msgstr "chaîne non complétée"
-#: awkgram.y:2114
+#: awkgram.y:2155
#, c-format
msgid "invalid char '%c' in expression"
msgstr "caractère invalide « %c » dans l'expression"
-#: awkgram.y:2162
+#: awkgram.y:2203
#, c-format
msgid "`%s' is a gawk extension"
msgstr "« %s » est une extension de gawk"
-#: awkgram.y:2165
+#: awkgram.y:2206
#, c-format
msgid "`%s' is a Bell Labs extension"
msgstr "« %s » est une extension de Bell Labs"
-#: awkgram.y:2168
+#: awkgram.y:2209
#, c-format
msgid "POSIX does not allow `%s'"
msgstr "POSIX ne permet pas « %s »"
-#: awkgram.y:2172
+#: awkgram.y:2213
#, c-format
msgid "`%s' is not supported in old awk"
msgstr "« %s » n'est pas supporté dans l'ancien awk"
-#: awkgram.y:2198
+#: awkgram.y:2239
msgid "`goto' considered harmful!\n"
msgstr "« goto » considéré néfaste!\n"
-#: awkgram.y:2260
+#: awkgram.y:2301
#, c-format
msgid "%d is invalid as number of arguments for %s"
msgstr "%d est invalide comme nombre d'arguments pour %s"
-#: awkgram.y:2279 awkgram.y:2282
+#: awkgram.y:2320 awkgram.y:2323
msgid "match: third argument is a gawk extension"
msgstr "match: 3e argument est une extension de gawk"
-#: awkgram.y:2295
+#: awkgram.y:2336
#, c-format
msgid "%s: string literal as last arg of substitute has no effect"
msgstr ""
"%s: la chaîne litérale comme dernier arguement d'une substitution n'a aucun "
"effet"
-#: awkgram.y:2298
-#, fuzzy, c-format
+#: awkgram.y:2339
+#, c-format
msgid "%s third parameter is not a changeable object"
-msgstr "sub: 3e paramètre n'est pas un objet interchangeable"
+msgstr "3e paramètre %s n'est pas un objet interchangeable"
-#: awkgram.y:2325 awkgram.y:2328
+#: awkgram.y:2366 awkgram.y:2369
msgid "close: second argument is a gawk extension"
msgstr "close: 2e argument est une extension de gawk"
-#: awkgram.y:2338
+#: awkgram.y:2379
msgid "use of dcgettext(_\"...\") is incorrect: remove leading underscore"
msgstr ""
"utilisation de dcgettext(_\"...\") est incorrect: enlever les soulignés en "
"en-tête"
-#: awkgram.y:2353
-#, fuzzy
+#: awkgram.y:2394
msgid "use of dcngettext(_\"...\") is incorrect: remove leading underscore"
msgstr ""
-"utilisation de dcgettext(_\"...\") est incorrect: enlever les soulignés en "
+"utilisation de dcngettext(_\"...\") est incorrect: enlever les soulignés en "
"en-tête"
-#: awkgram.y:2424
+#: awkgram.y:2465
#, c-format
msgid "function `%s': parameter #%d, `%s', duplicates parameter #%d"
msgstr "fonction « %s »: paramètre #%d, « %s » est un double du paramètre #%d"
-#: awkgram.y:2457
+#: awkgram.y:2498
#, c-format
msgid "function `%s': parameter `%s' shadows global variable"
msgstr "fonction « %s »: paramètre « %s » porte ombrage à la variable globale"
-#: awkgram.y:2569
+#: awkgram.y:2610
#, c-format
msgid "could not open `%s' for writing (%s)"
msgstr "ne peut ourvrir « %s » en écriture (%s)"
-#: awkgram.y:2570 profile.c:93
+#: awkgram.y:2611 profile.c:93
msgid "sending profile to standard error"
msgstr "redirection du profile vers stderr"
-#: awkgram.y:2602
+#: awkgram.y:2643
#, c-format
msgid "%s: close failed (%s)"
msgstr "%s: échec de fermeture (%s)"
-#: awkgram.y:2723
+#: awkgram.y:2764
msgid "shadow_funcs() called twice!"
msgstr "shadows_funcs() appelé deux fois!"
-#: awkgram.y:2750
+#: awkgram.y:2791
msgid "there were shadowed variables."
-msgstr ""
+msgstr "il y avait des variables ombragées"
-#: awkgram.y:2823
+#: awkgram.y:2864
#, c-format
msgid "function `%s': can't use function name as parameter name"
msgstr "fonction « %s »: ne peut utilise le nom de la fonction comme paramètre"
-#: awkgram.y:2833
+#: awkgram.y:2874
#, c-format
msgid "function name `%s' previously defined"
msgstr "nom de la fonction « %s » définie précédemment"
-#: awkgram.y:2984 awkgram.y:2990
+#: awkgram.y:3025 awkgram.y:3031
#, c-format
msgid "function `%s' called but never defined"
msgstr "fonction « %s » appelé mais jamais définie"
-#: awkgram.y:2993
+#: awkgram.y:3034
#, c-format
msgid "function `%s' defined but never called"
msgstr "fonction « %s » définie mais jamais utilisée"
-#: awkgram.y:3020
+#: awkgram.y:3061
#, c-format
msgid "regexp constant for parameter #%d yields boolean value"
msgstr ""
"expression régulière constante pour le paramètre #%d conduit à une valeur "
"booléenne"
-#: awkgram.y:3033
-#, fuzzy, c-format
+#: awkgram.y:3105
+#, c-format
msgid ""
"function `%s' called with space between name and `(',\n"
"or used as a variable or an array"
msgstr ""
"fonction « %s » appelée avec un espace entre le nom et « ( »,\n"
-"%s"
+"ou utilisé comme variable ou comme un tableau"
-#: builtin.c:149
+#: builtin.c:145
#, c-format
msgid "%s to \"%s\" failed (%s)"
msgstr "%s vers « %s » échec (%s)"
-#: builtin.c:150
+#: builtin.c:146
msgid "standard output"
msgstr "sortie standard"
-#: builtin.c:151
+#: builtin.c:147
msgid "reason unknown"
msgstr "raison inconnue"
-#: builtin.c:164
+#: builtin.c:160
msgid "exp: received non-numeric argument"
msgstr "exp: argument n'est pas numérique"
-#: builtin.c:170
+#: builtin.c:166
#, c-format
msgid "exp: argument %g is out of range"
msgstr "exp: argument %g est hors limite"
-#: builtin.c:228
+#: builtin.c:224
#, c-format
msgid "fflush: cannot flush: pipe `%s' opened for reading, not writing"
msgstr ""
"fflush: ne peut vider: le pipe « %s » est oouvert en lecture, pas en écriture"
-#: builtin.c:231
+#: builtin.c:227
#, c-format
msgid "fflush: cannot flush: file `%s' opened for reading, not writing"
msgstr ""
"fflush: ne peut vider: fichier « %s » ouvert en lecture, pas en écriture"
-#: builtin.c:243
+#: builtin.c:239
#, c-format
msgid "fflush: `%s' is not an open file, pipe or co-process"
msgstr ""
"fflush: « %s » n'est pas ni un fichier ouvert, un pipe ou un co-processus"
-#: builtin.c:338
+#: builtin.c:332
msgid "index: received non-string first argument"
msgstr "index: premier argument n'est pas une chaîne"
-#: builtin.c:340
+#: builtin.c:334
msgid "index: received non-string second argument"
msgstr "index: second argument n'est pas une chaîne"
-#: builtin.c:454
+#: builtin.c:449
msgid "int: received non-numeric argument"
msgstr "int: argument n'est pas numérique"
-#: builtin.c:471
+#: builtin.c:472
+#, fuzzy
+msgid "`length(array)' is a gawk extension"
+msgstr "« delete array » est une extension de gawk"
+
+#: builtin.c:481
msgid "length: received non-string argument"
msgstr "length: argument n'est pas une chaîne"
-#: builtin.c:487
+#: builtin.c:506
msgid "log: received non-numeric argument"
msgstr "log: argument n'est pas numérique"
-#: builtin.c:490
+#: builtin.c:509
#, c-format
msgid "log: received negative argument %g"
msgstr "log: argument négatif %g"
-#: builtin.c:654 builtin.c:657
+#: builtin.c:673 builtin.c:676
msgid "must use `count$' on all formats or none"
-msgstr ""
+msgstr "doit utiliser « count$ » sur tous les formats ou aucun"
-#: builtin.c:759
+#: builtin.c:778
msgid "`$' is not permitted in awk formats"
msgstr "« $ » n'est pas permis dans les formats awk"
-#: builtin.c:765
+#: builtin.c:784
msgid "arg count with `$' must be > 0"
msgstr "décompte d'arguments avec « $ » doit être > 0"
-#: builtin.c:767
-#, fuzzy, c-format
+#: builtin.c:786
+#, c-format
msgid "arg count %ld greater than total number of supplied arguments"
-msgstr "compteur d'arguments %d est > que le nombre total fournis d'arguments"
+msgstr "compteur d'arguments %ld est > que le nombre total d'arguments fournis"
-#: builtin.c:769
+#: builtin.c:788
msgid "`$' not permitted after period in format"
msgstr "« $ » n'est pas permis après le point"
-#: builtin.c:782
+#: builtin.c:801
msgid "no `$' supplied for positional field width or precision"
msgstr "aucun « $ » fourni dans le champ positionnel (longueur ou précision)"
-#: builtin.c:848
+#: builtin.c:867
msgid "`l' is meaningless in awk formats; ignored"
msgstr "« l » n'a aucun sens dans les formats de awk; ignoré"
-#: builtin.c:852
+#: builtin.c:871
msgid "`l' is not permitted in POSIX awk formats"
msgstr "« l » n'est pas permis dans les format POSIX de awk"
-#: builtin.c:863
+#: builtin.c:882
msgid "`L' is meaningless in awk formats; ignored"
msgstr "« L » n'a aucun sens dans les formats s de awk; ignoré"
-#: builtin.c:867
+#: builtin.c:886
msgid "`L' is not permitted in POSIX awk formats"
msgstr "« L » n'est pas permis dans les formats POSIX de awk"
-#: builtin.c:878
+#: builtin.c:897
msgid "`h' is meaningless in awk formats; ignored"
msgstr "« h » n'a aucun send dans les formats de awk; ignoré"
-#: builtin.c:882
+#: builtin.c:901
msgid "`h' is not permitted in POSIX awk formats"
msgstr "« h » n'est pas permis dans les formats POSIX de awk"
-#: builtin.c:1111
+#: builtin.c:1132
#, c-format
msgid "[s]printf: value %g is out of range for `%%%c' format"
-msgstr ""
+msgstr "[s]printf: valeur %g est hors limite pour le format « %%%c »"
-#: builtin.c:1171
+#: builtin.c:1198
msgid "not enough arguments to satisfy format string"
msgstr "pas assez d'arguments pour satisfaire le format d'une chaîne"
-#: builtin.c:1173
+#: builtin.c:1200
msgid "^ ran out for this one"
msgstr "^ débordement pour celle-ci"
-#: builtin.c:1178
+#: builtin.c:1205
msgid "[s]printf: format specifier does not have control letter"
msgstr ""
"[s]printf: spécificateur de format ne contient pas de lettre de contrôle"
-#: builtin.c:1181
+#: builtin.c:1208
msgid "too many arguments supplied for format string"
msgstr "trop d'arguments pour la chaîne de format"
-#: builtin.c:1247 builtin.c:1250
+#: builtin.c:1274 builtin.c:1277
msgid "printf: no arguments"
msgstr "printf: aucun argument"
-#: builtin.c:1274
+#: builtin.c:1301
msgid "sqrt: received non-numeric argument"
msgstr "sqrt: argument n'est pas numérique"
-#: builtin.c:1278
+#: builtin.c:1305
#, c-format
msgid "sqrt: called with negative argument %g"
msgstr "sqrt: appelé avec un argument négatif %g"
-#: builtin.c:1301
+#: builtin.c:1329
#, c-format
msgid "substr: start index %g is invalid, using 1"
msgstr "substr: début de l'index %g est invalide, utilise 1"
-#: builtin.c:1306
+#: builtin.c:1334
#, c-format
msgid "substr: non-integer start index %g will be truncated"
msgstr "substr: début avec un nombre non entier %g sera tronqué"
-#: builtin.c:1325
-#, fuzzy, c-format
+#: builtin.c:1353
+#, c-format
msgid "substr: length %g is not >= 1"
-msgstr "substr: longueur %g est <= 0"
+msgstr "substr: longueur %g n'est pas >= 1"
-#: builtin.c:1327
-#, fuzzy, c-format
+#: builtin.c:1355
+#, c-format
msgid "substr: length %g is not >= 0"
-msgstr "substr: longueur %g est <= 0"
+msgstr "substr: longueur %g n'est pas >= 0"
-#: builtin.c:1334
+#: builtin.c:1362
#, c-format
msgid "substr: non-integer length %g will be truncated"
msgstr "substr: longueur avec un nombre non entier %g sera tronqué"
-#: builtin.c:1339
+#: builtin.c:1367
#, c-format
msgid "substr: length %g too big for string indexing, truncating to %g"
msgstr ""
+"substr: longueur %g trop grande pour l'indexation de chaînes, truncation à %g"
-#: builtin.c:1351
+#: builtin.c:1379
msgid "substr: source string is zero length"
msgstr "substr: chaîne de départ est de longueur zéro"
-#: builtin.c:1357
-#, fuzzy, c-format
+#: builtin.c:1395
+#, c-format
msgid "substr: start index %g is past end of string"
-msgstr "substr: début de l'index %d dépasse la fin de la chaîne"
+msgstr "substr: début de l'index %g dépasse la fin de la chaîne"
-#: builtin.c:1365
-#, fuzzy, c-format
+#: builtin.c:1403
+#, c-format
msgid ""
"substr: length %g at start index %g exceeds length of first argument (%lu)"
msgstr ""
-"substr: longueur %d début avec l'index %d déborde la longueur du 1er "
-"arguement (%d)"
+"substr: longueur %g début avec l'index %g déborde la longueur du 1er "
+"arguement (%lu)"
-#: builtin.c:1400
-#, fuzzy
+#: builtin.c:1478
msgid "strftime: received non-string first argument"
-msgstr "strftim: premier argument n'est pas une chaîne"
+msgstr "strftim: premier argument reçu n'est pas une chaîne"
-#: builtin.c:1406
+#: builtin.c:1484
msgid "strftime: received empty format string"
msgstr "strftime: chaîne de format vide"
-#: builtin.c:1415
-#, fuzzy
+#: builtin.c:1493
msgid "strftime: received non-numeric second argument"
-msgstr "strftime: second argument n'est pas un chaîne"
+msgstr "strftime: second argument reçu n'est pas numérique"
-#: builtin.c:1478
+#: builtin.c:1556
msgid "mktime: received non-string argument"
msgstr "mktime: argument n'est pas une chaîne"
-#: builtin.c:1523
-#, fuzzy
+#: builtin.c:1601
msgid "system: received non-string argument"
-msgstr "system: argument n'est pas une chaîne"
+msgstr "system: argument reçu n'est pas une chaîne"
-#: builtin.c:1644 eval.c:2019
-#, fuzzy, c-format
+#: builtin.c:1722 eval.c:2039
+#, c-format
msgid "reference to uninitialized field `$%d'"
-msgstr "référence à une variable non initialisée « %s »"
+msgstr "référence à un champ non initialisé « $%d »"
-#: builtin.c:1671
-#, fuzzy
+#: builtin.c:1827
msgid "tolower: received non-string argument"
-msgstr "tolower: argument n'est pas une chaîne"
+msgstr "tolower: argument reçu n'est pas une chaîne"
-#: builtin.c:1720
-#, fuzzy
+#: builtin.c:1857
msgid "toupper: received non-string argument"
-msgstr "toupper: argument n'est pas une chaîne"
+msgstr "toupper: argument reçu n'est pas une chaîne"
-#: builtin.c:1765
+#: builtin.c:1890
msgid "atan2: received non-numeric first argument"
msgstr "atan2: premier argument n'est pas numérique"
-#: builtin.c:1767
+#: builtin.c:1892
msgid "atan2: received non-numeric second argument"
msgstr "atan2: second argument n'est pas numérique"
-#: builtin.c:1786
+#: builtin.c:1911
msgid "sin: received non-numeric argument"
msgstr "sin: argument n'est pas numérique"
-#: builtin.c:1802
+#: builtin.c:1927
msgid "cos: received non-numeric argument"
msgstr "cos: argument n'est pas numérique"
-#: builtin.c:1852
+#: builtin.c:1977
msgid "srand: received non-numeric argument"
msgstr "srand: argument n'est pas numérique"
-#: builtin.c:1887
+#: builtin.c:2012
msgid "match: third argument is not an array"
msgstr "match: le 3e argument n'est pas un tableau"
-#: builtin.c:2414
-#, fuzzy
+#: builtin.c:2555
msgid "gensub: third argument of 0 treated as 1"
msgstr "gensub: le 3e argument de 0 traité comme un 1"
-#: builtin.c:2572
+#: builtin.c:2715
msgid "lshift: received non-numeric first argument"
msgstr "lshift: premier argument n'est pas numérique"
-#: builtin.c:2574
-#, fuzzy
+#: builtin.c:2717
msgid "lshift: received non-numeric second argument"
-msgstr "atan2: second argument n'est pas numérique"
+msgstr "lshift: second argument reçu n'est pas numérique"
-#: builtin.c:2580
+#: builtin.c:2723
#, c-format
msgid "lshift(%lf, %lf): negative values will give strange results"
msgstr "lshift(%lf, %lf): valeurs négatives donneront d'étranges résultats"
-#: builtin.c:2582
+#: builtin.c:2725
#, c-format
msgid "lshift(%lf, %lf): fractional values will be truncated"
msgstr "lshift(%lf, %lf): valeurs fractionnaires seront tronquées"
-#: builtin.c:2584
+#: builtin.c:2727
#, c-format
msgid "lshift(%lf, %lf): too large shift value will give strange results"
msgstr "lshift(%lf, %lf): trop grand déplacement donnera d'étranges résultats"
-#: builtin.c:2610
+#: builtin.c:2753
msgid "rshift: received non-numeric first argument"
msgstr "rshift: premier argument n'est pas numérique"
-#: builtin.c:2612
-#, fuzzy
+#: builtin.c:2755
msgid "rshift: received non-numeric second argument"
-msgstr "atan2: second argument n'est pas numérique"
+msgstr "rshift: second argument reçu n'est pas numérique"
-#: builtin.c:2618
+#: builtin.c:2761
#, c-format
msgid "rshift(%lf, %lf): negative values will give strange results"
msgstr "rshift(%lf, %lf): valeurs négatives donneront d'étranges résultats"
-#: builtin.c:2620
+#: builtin.c:2763
#, c-format
msgid "rshift(%lf, %lf): fractional values will be truncated"
msgstr "rshift(%lf, %lf): valeurs fractionnaires seront tronquées"
-#: builtin.c:2622
+#: builtin.c:2765
#, c-format
msgid "rshift(%lf, %lf): too large shift value will give strange results"
msgstr "rshift(%lf, %lf): trop grand déplacement donnera d'étranges résultats"
-#: builtin.c:2648
+#: builtin.c:2791
msgid "and: received non-numeric first argument"
msgstr "and: premier argument n'est pas numérique"
-#: builtin.c:2650
-#, fuzzy
+#: builtin.c:2793
msgid "and: received non-numeric second argument"
-msgstr "atan2: second argument n'est pas numérique"
+msgstr "and: second argument reçu n'est pas numérique"
-#: builtin.c:2656
+#: builtin.c:2799
#, c-format
msgid "and(%lf, %lf): negative values will give strange results"
msgstr "and(%lf, %lf): valeurs négatives donneront d'étranges résultats"
-#: builtin.c:2658
+#: builtin.c:2801
#, c-format
msgid "and(%lf, %lf): fractional values will be truncated"
msgstr "and(%lf, %lf): valeurs fractionnaires seront tronquées"
-#: builtin.c:2684
+#: builtin.c:2827
msgid "or: received non-numeric first argument"
msgstr "or: premier argument n'est pas numérique"
-#: builtin.c:2686
-#, fuzzy
+#: builtin.c:2829
msgid "or: received non-numeric second argument"
-msgstr "atan2: second argument n'est pas numérique"
+msgstr "or: second argument reçu n'est pas numérique"
-#: builtin.c:2692
+#: builtin.c:2835
#, c-format
msgid "or(%lf, %lf): negative values will give strange results"
msgstr "or(%lf, %lf): valeurs négatives donneront d'étranges résultats"
-#: builtin.c:2694
+#: builtin.c:2837
#, c-format
msgid "or(%lf, %lf): fractional values will be truncated"
msgstr "or(%lf, %lf): valeurs fractionnaires seront tronquées"
-#: builtin.c:2720
+#: builtin.c:2863
msgid "xor: received non-numeric first argument"
msgstr "xor: premier argument n'est pas numérique"
-#: builtin.c:2722
-#, fuzzy
+#: builtin.c:2865
msgid "xor: received non-numeric second argument"
-msgstr "atan2: second argument n'est pas numérique"
+msgstr "xor: second argument reçu n'est pas numérique"
-#: builtin.c:2728
+#: builtin.c:2871
#, c-format
msgid "xor(%lf, %lf): negative values will give strange results"
msgstr "xor(%lf, %lf): valeurs négatives donneront d'étranges résultats"
-#: builtin.c:2730
+#: builtin.c:2873
#, c-format
msgid "xor(%lf, %lf): fractional values will be truncated"
msgstr "xor(%lf, %lf): valeurs fractionnaires seront tronquées"
-#: builtin.c:2754
+#: builtin.c:2897
msgid "compl: received non-numeric argument"
msgstr "compl: argument n'est pas numérique"
-#: builtin.c:2760
+#: builtin.c:2903
#, c-format
msgid "compl(%lf): negative value will give strange results"
msgstr "compl(%lf): valeurs négatives donneront d'étranges résultats"
-#: builtin.c:2762
+#: builtin.c:2905
#, c-format
msgid "compl(%lf): fractional value will be truncated"
msgstr "compl(%lf): valeurs fractionnaires seront tronquées"
-#: builtin.c:2935
+#: builtin.c:3078
#, c-format
msgid "dcgettext: `%s' is not a valid locale category"
msgstr "dcgettext: « %s » n'est pas dans un catégorie de localisation valide"
@@ -780,75 +788,75 @@ msgstr "dcgettext: « %s » n'est pas dans un catégorie de localisation valide"
msgid "unknown nodetype %d"
msgstr "type de noeud inconnu %d"
-#: eval.c:350
+#: eval.c:353
msgid "buffer overflow in genflags2str"
msgstr "débordement de tampo dans genflag2str"
-#: eval.c:382 eval.c:388 profile.c:837
+#: eval.c:385 eval.c:391 profile.c:838
#, c-format
msgid "attempt to use array `%s' in a scalar context"
msgstr "tentative d'utilisation du tableau « %s » dans un contexte scalaire"
-#: eval.c:730
-#, fuzzy, c-format
+#: eval.c:733
+#, c-format
msgid "for loop: array `%s' changed size from %ld to %ld during loop execution"
msgstr ""
-"for loop: tableau « %s » a changé de taille de %d à %d durant l'exécution de "
-"la boucle"
+"for loop: tableau « %s » a changé de taille de %ld à %ld durant l'exécution "
+"de la boucle"
-#: eval.c:751
+#: eval.c:754
msgid "`break' outside a loop is not portable"
msgstr "« break » en dehors de la boucle n'est pas portable"
-#: eval.c:755
+#: eval.c:758
msgid "`break' outside a loop is not allowed"
msgstr "« break » en dehors de la boucle n'est pas permis"
-#: eval.c:772
+#: eval.c:775
msgid "`continue' outside a loop is not portable"
msgstr "« continue » en dehors de la boucle n'est pas portable"
-#: eval.c:776
+#: eval.c:779
msgid "`continue' outside a loop is not allowed"
msgstr "« continue » en dehors de la boucle n'est pas permis"
-#: eval.c:810
+#: eval.c:813
msgid "`next' cannot be called from a BEGIN rule"
msgstr "« next » ne peut être appelé depuis une règle BEGIN"
-#: eval.c:812
+#: eval.c:815
msgid "`next' cannot be called from an END rule"
msgstr "« next » ne peut être appelé depuis une règle END"
-#: eval.c:821
+#: eval.c:824
msgid "`nextfile' cannot be called from a BEGIN rule"
msgstr "« nextfile » ne peut être appelé depuis une règle BEGIN"
-#: eval.c:823
+#: eval.c:826
msgid "`nextfile' cannot be called from an END rule"
msgstr "« nextfile » ne peut être appelé depuis une règle END"
-#: eval.c:872
+#: eval.c:875
msgid "statement has no effect"
msgstr "la déclaration n'a aucun effet"
-#: eval.c:915 eval.c:1873
+#: eval.c:952 eval.c:1893
#, c-format
msgid "can't use function name `%s' as variable or array"
msgstr ""
"ne peut utiliser le nom de la fonction « %s » comme variable ou tableau"
-#: eval.c:922 eval.c:928
+#: eval.c:959 eval.c:965
#, c-format
msgid "reference to uninitialized argument `%s'"
msgstr "référence à un argument non initialisé « %s »"
-#: eval.c:937 eval.c:1882
+#: eval.c:974 eval.c:1902
#, c-format
msgid "reference to uninitialized variable `%s'"
msgstr "référence à une variable non initialisée « %s »"
-#: eval.c:1083
+#: eval.c:1120
msgid ""
"concatenation: side effects in one expression have changed the length of "
"another!"
@@ -856,49 +864,44 @@ msgstr ""
"concaténation: effects de bord dans une expression a modifié la longueur "
"d'une autre!"
-#: eval.c:1162
+#: eval.c:1200
msgid "assignment used in conditional context"
msgstr "affectation utilisé dans un contexte conditionnel"
-#: eval.c:1252
+#: eval.c:1278
msgid "division by zero attempted"
msgstr "tentative de division par zéro"
-#: eval.c:1267
+#: eval.c:1293
#, c-format
msgid "division by zero attempted in `%%'"
msgstr "tentative de division par zéro dans « %% »"
-#: eval.c:1282 profile.c:713
+#: eval.c:1308 profile.c:714
#, c-format
msgid "illegal type (%s) in tree_eval"
msgstr "type illégal (%s) dans tree_eval"
-#: eval.c:1459
+#: eval.c:1471
msgid "division by zero attempted in `/='"
msgstr "tentative de division par zéro dans « /= »"
-#: eval.c:1477
+#: eval.c:1493
#, c-format
msgid "division by zero attempted in `%%='"
msgstr "tentative de division par zéro dans « %%= »"
-#: eval.c:1738
+#: eval.c:1758
#, c-format
msgid "function `%s' called with more arguments than declared"
msgstr "fonction « %s » appelée avec plus d'arguments que déclarées"
-#: eval.c:1782
+#: eval.c:1802
#, c-format
msgid "function `%s' not defined"
msgstr "fonction « %s » non définie"
-#: eval.c:1788
-#, c-format
-msgid "function %s called\n"
-msgstr "fonction %s appelée\n"
-
-#: eval.c:1845
+#: eval.c:1865
#, c-format
msgid ""
"\n"
@@ -909,44 +912,44 @@ msgstr ""
"\t# Appel d'une fonction sur la pile:\n"
"\n"
-#: eval.c:1848
+#: eval.c:1868
#, c-format
msgid "\t# -- main --\n"
msgstr "#t# -- main --\n"
-#: eval.c:2003
+#: eval.c:2023
msgid "attempt to field reference from non-numeric value"
msgstr "tentative de référence un champ à partir d'une valeur non numérique"
-#: eval.c:2005
+#: eval.c:2025
msgid "attempt to reference from null string"
msgstr "tentative de référence à partir d'une chaîne nulle"
-#: eval.c:2011
+#: eval.c:2031
#, c-format
msgid "attempt to access field %d"
msgstr "tentative d'accès du champ %d"
-#: eval.c:2032 eval.c:2039 profile.c:934
+#: eval.c:2052 eval.c:2059 profile.c:935
msgid "assignment is not allowed to result of builtin function"
msgstr ""
"l'affectation n'est pas permise pour obtenir un résultat d'une fonction "
"interne"
-#: eval.c:2103
+#: eval.c:2123
msgid "`IGNORECASE' is a gawk extension"
msgstr "« IGNORECASE » est une extension de gawk"
-#: eval.c:2133
+#: eval.c:2153
msgid "`BINMODE' is a gawk extension"
msgstr "« BINMODE » est une extension de gawk"
-#: eval.c:2255
+#: eval.c:2275
#, c-format
msgid "bad `%sFMT' specification `%s'"
msgstr "« %sFMT » spécification erronée « %s »"
-#: eval.c:2333
+#: eval.c:2353
msgid "turning off `--lint' due to assignment to `LINT'"
msgstr "désactivation « --lint » en raison d'une affectation à « LINT »"
@@ -966,630 +969,652 @@ msgstr "extension: librairie « %s »: ne peut appeler la fonction « %s » (%s)\n"
#: ext.c:102
msgid "extension: missing function name"
-msgstr ""
+msgstr "extension: nom de fonction manquant"
#: ext.c:107
-#, fuzzy, c-format
+#, c-format
msgid "extension: illegal character `%c' in function name `%s'"
-msgstr "extension: librairie « %s »: ne peut appeler la fonction « %s » (%s)\n"
+msgstr "extension: caractère illégal « %c » dans le nom de la fonction « %s »"
#: ext.c:113
-#, fuzzy, c-format
+#, c-format
msgid "extension: can't redefine function `%s'"
-msgstr "extension: ne peut ouvrir « %s » (%s)\n"
+msgstr "extension: ne peut redéfinir la fonction « %s »"
#: ext.c:117
-#, fuzzy, c-format
+#, c-format
msgid "extension: function `%s' already defined"
-msgstr "fonction « %s » non définie"
+msgstr "extension: fonction « %s » est déjà définie"
#: ext.c:122
#, c-format
msgid "extension: can't use gawk built-in `%s' as function name"
msgstr ""
+"extension: ne peut utilisé la fonction interne gawk « %s » comme nom de "
+"fonction"
#: ext.c:124
-#, fuzzy, c-format
+#, c-format
msgid "extension: function name `%s' previously defined"
-msgstr "nom de la fonction « %s » définie précédemment"
+msgstr "extension: nom de la fonction « %s » définie précédemment"
#: ext.c:201
#, c-format
-msgid "function `%s' defined to take no more than `%d' argument(s)"
+msgid "function `%s' defined to take no more than %d argument(s)"
msgstr ""
+"fonction « %s » est définie pour ne prendre pas plus de « %d » argument(s)"
#: ext.c:204
-#, fuzzy, c-format
+#, c-format
msgid "function `%s': missing argument #%d"
-msgstr "fonction « %s » non définie"
+msgstr "fonction « %s »: argument #%d manquant"
#: ext.c:214
-#, fuzzy, c-format
+#, c-format
msgid "function `%s': argument #%d: attempt to use scalar as an array"
-msgstr "tentative d'utilisation du scalaire « %s » comme un tableau"
+msgstr ""
+"fonction « %s »: argument #%d: tentative d'utilisation du scalaire comme un "
+"tableau"
#: ext.c:218
#, c-format
msgid "function `%s': argument #%d: attempt to use array as a scalar"
msgstr ""
+"fonction « %s »: argument #%d: tentative d'utiliser un tableau comme un "
+"scalaire"
#: ext.c:243
msgid "Operation Not Supported"
msgstr "Opération non supportée"
-#: field.c:315
+#: field.c:326
msgid "NF set to negative value"
msgstr "NF initialisé avec une valeur négative"
-#: field.c:808
+#: field.c:819
msgid "split: second argument is not an array"
msgstr "split: 2e argument n'est pas un tableau"
-#: field.c:842
+#: field.c:853
msgid "split: null string for third arg is a gawk extension"
msgstr "split: chaîne vide pour le 3e argument est une extension de gawk"
-#: field.c:894
+#: field.c:905
msgid "`FIELDWIDTHS' is a gawk extension"
msgstr "« FIELDWIDTHS » est une extension de gawk"
-#: field.c:921
+#: field.c:935 field.c:946
#, c-format
-msgid "field %d in FIELDWIDTHS, must be > 0"
-msgstr "champ %d dans FIELDWIDTHS, doit être > 0"
+msgid "invalid FIELDWIDTHS value, near `%s'"
+msgstr "valeur de FIELDWIDTHS invalide, près de `%s'"
-#: field.c:994
+#: field.c:1027
msgid "null string for `FS' is a gawk extension"
msgstr "chaîne vide pour « FS » est une extension de gawk"
-#: getopt.c:692 getopt.c:711
+#: getopt.c:571 getopt.c:590
#, c-format
msgid "%s: option `%s' is ambiguous\n"
msgstr "%s: option « %s » est ambiguë\n"
-#: getopt.c:744 getopt.c:748
+#: getopt.c:623 getopt.c:627
#, c-format
msgid "%s: option `--%s' doesn't allow an argument\n"
msgstr "%s: option « --%s » n'admet pas d'arguement\n"
-#: getopt.c:757 getopt.c:762
+#: getopt.c:636 getopt.c:641
#, c-format
msgid "%s: option `%c%s' doesn't allow an argument\n"
msgstr "%s: l'option « %c%s » ne requiert pas d'arguement\n"
-#: getopt.c:807 getopt.c:829 getopt.c:1159 getopt.c:1181
+#: getopt.c:687 getopt.c:709 getopt.c:1040 getopt.c:1062
#, c-format
msgid "%s: option `%s' requires an argument\n"
msgstr "%s: l'option « %s » requiert un argument\n"
-#: getopt.c:867 getopt.c:870
+#: getopt.c:747 getopt.c:750
#, c-format
msgid "%s: unrecognized option `--%s'\n"
msgstr "%s: option non reconnue « --%s »\n"
-#: getopt.c:878 getopt.c:881
+#: getopt.c:758 getopt.c:761
#, c-format
msgid "%s: unrecognized option `%c%s'\n"
msgstr "%s: option non reconnue « %c%s »\n"
-#: getopt.c:936 getopt.c:939
+#: getopt.c:816 getopt.c:819
#, c-format
msgid "%s: illegal option -- %c\n"
msgstr "%s: option illégale -- %c\n"
-#: getopt.c:945 getopt.c:948
+#: getopt.c:825 getopt.c:828
#, c-format
msgid "%s: invalid option -- %c\n"
msgstr "%s: option invalide -- %c\n"
-#: getopt.c:1003 getopt.c:1022 getopt.c:1234 getopt.c:1255 main.c:433
+#: getopt.c:883 getopt.c:902 getopt.c:1115 getopt.c:1136 main.c:448
#, c-format
msgid "%s: option requires an argument -- %c\n"
msgstr "%s: l'option requiert un arguement -- %c\n"
-#: getopt.c:1074 getopt.c:1093
+#: getopt.c:955 getopt.c:974
#, c-format
msgid "%s: option `-W %s' is ambiguous\n"
msgstr "%s: l'option « -W %s » est ambiguë\n"
-#: getopt.c:1117 getopt.c:1138
+#: getopt.c:998 getopt.c:1019
#, c-format
msgid "%s: option `-W %s' doesn't allow an argument\n"
msgstr "%s: l'option « -W %s » ne requiert pas d'arguement\n"
-#: io.c:308
+#: io.c:307
#, c-format
msgid "cannot open file `%s' for reading (%s)"
msgstr "ne peut ouvrir le fichier « %s » en lecture (%s)"
-#: io.c:395
+#: io.c:398
#, c-format
msgid "close of fd %d (`%s') failed (%s)"
msgstr "fermeture de fd %d (« %s ») en échec (%s)"
-#: io.c:533
+#: io.c:536
#, c-format
msgid "invalid tree type %s in redirect()"
msgstr "type d'arbre invalide %s dans redirect()"
-#: io.c:539
+#: io.c:542
#, c-format
msgid "expression in `%s' redirection only has numeric value"
msgstr ""
"l'expression de la redirection de « %s » a seulement une valeur numérique"
-#: io.c:545
+#: io.c:548
#, c-format
msgid "expression for `%s' redirection has null string value"
msgstr ""
"l'expression de la redirection de « %s » a une valeur nulle pour la chaîne"
-#: io.c:550
+#: io.c:553
#, c-format
msgid "filename `%s' for `%s' redirection may be result of logical expression"
msgstr ""
"nom de fichier « %s » pour le redirection « %s » peut être le résultat d'une "
"expression logique"
-#: io.c:588
+#: io.c:591
#, c-format
msgid "unnecessary mixing of `>' and `>>' for file `%.*s'"
msgstr "mélange non nécessaire de « > » et de « >> » pour le fichier « %.*s »"
-#: io.c:640
+#: io.c:643
#, c-format
msgid "can't open pipe `%s' for output (%s)"
msgstr "ne peut ouvrir un pipe « %s » en sortie (%s)"
-#: io.c:649
+#: io.c:652
#, c-format
msgid "can't open pipe `%s' for input (%s)"
msgstr "ne peut ouvrir un pipe « %s » en entrée (%s)"
-#: io.c:662
+#: io.c:665
#, c-format
msgid "can't open two way socket `%s' for input/output (%s)"
msgstr ""
"ne peut ouvrir un socket bidirectionnel « %s » pour les entrées/sorties (%s)"
-#: io.c:666
+#: io.c:669
#, c-format
msgid "can't open two way pipe `%s' for input/output (%s)"
msgstr ""
"ne peut ouvrir un pipe bidirectionnel « %s » pour les entrées/sorties (%s)"
-#: io.c:742
+#: io.c:745
#, c-format
msgid "can't redirect from `%s' (%s)"
msgstr "ne peut rediriger de « %s » (%s)"
-#: io.c:745
+#: io.c:748
#, c-format
msgid "can't redirect to `%s' (%s)"
msgstr "ne peut rediriger vers « %s » (%s)"
-#: io.c:784
+#: io.c:787
msgid ""
"reached system limit for open files: starting to multiplex file descriptors"
msgstr ""
"limite système atteinte pour l'ouverture des fichiers: début du multiplexage "
"des descripteurs de fichiers"
-#: io.c:800
+#: io.c:803
#, c-format
msgid "close of `%s' failed (%s)."
msgstr "fermeture de « %s » en échec (%s)"
-#: io.c:808
+#: io.c:811
msgid "too many pipes or input files open"
msgstr "trop de pipes ou de fichiers en lecture ouverts"
-#: io.c:831
+#: io.c:834
msgid "close: second argument must be `to' or `from'"
msgstr "close: 2e argument doit être « to » ou « from »"
-#: io.c:845
+#: io.c:848
#, c-format
msgid "close: `%.*s' is not an open file, pipe or co-process"
msgstr "close: « %.*s » n'est pas ni un fichier ouvert, pipe ou co-processus"
-#: io.c:849
+#: io.c:852
msgid "close of redirection that was never opened"
msgstr "fermeture de la redirection qui n'a jamais été ouverte"
-#: io.c:945
+#: io.c:948
#, c-format
msgid "close: redirection `%s' not opened with `|&', second argument ignored"
msgstr ""
"close: redirection « %s » n'a pas été ouverte ave « |& » 2e argument ignoré"
-#: io.c:960
+#: io.c:964
#, c-format
msgid "failure status (%d) on pipe close of `%s' (%s)"
msgstr "constat d'échec (%d) lors de la fermeture du pipe « %s » (%s)"
-#: io.c:963
+#: io.c:967
#, c-format
msgid "failure status (%d) on file close of `%s' (%s)"
msgstr "constat d'échec (%d) lors de la fermeture du fichier « %s » (%s)"
-#: io.c:983
+#: io.c:987
#, c-format
msgid "no explicit close of socket `%s' provided"
msgstr "aucune fermeture explicite du socket « %s » fournie"
-#: io.c:986
+#: io.c:990
#, c-format
msgid "no explicit close of co-process `%s' provided"
msgstr "aucune fermeture explicite du co-processus « %s » fournie"
-#: io.c:989
+#: io.c:993
#, c-format
msgid "no explicit close of pipe `%s' provided"
msgstr "aucune fermeture explicite du pipe « %s » fournie"
-#: io.c:992
+#: io.c:996
#, c-format
msgid "no explicit close of file `%s' provided"
msgstr "aucune fermeture explicite du fichier « %s » fournie"
-#: io.c:1021 io.c:1075
+#: io.c:1025 io.c:1080 main.c:718 main.c:756
#, c-format
msgid "error writing standard output (%s)"
msgstr "erreur lors de l'écriture vers stdout (%s)"
-#: io.c:1025 io.c:1079
+#: io.c:1029 io.c:1085
#, c-format
msgid "error writing standard error (%s)"
msgstr "erreur lors de l'écriture vers stderr (%s)"
-#: io.c:1033
+#: io.c:1037
#, c-format
msgid "pipe flush of `%s' failed (%s)."
msgstr "vidange du pipie de « %s » en échec (%s)"
-#: io.c:1036
+#: io.c:1040
#, c-format
msgid "co-process flush of pipe to `%s' failed (%s)."
msgstr "vidange du pipe par le co-processus vers « %s » en échec (%s)"
-#: io.c:1039
+#: io.c:1043
#, c-format
msgid "file flush of `%s' failed (%s)."
msgstr "vidange du fichier « %s » en échec (%s)"
-#: io.c:1198
+#: io.c:1205
msgid "/inet/raw client not ready yet, sorry"
msgstr "le client /inet/raw n'est pas encore prêt, désolé"
-#: io.c:1200 io.c:1237
+#: io.c:1207 io.c:1244
msgid "only root may use `/inet/raw'."
msgstr "seul root peut utiliser « /inet/raw »"
-#: io.c:1235
+#: io.c:1242
msgid "/inet/raw server not ready yet, sorry"
msgstr "le serveur /inet/raw n'est pas encore prêt, désolé"
-#: io.c:1325
+#: io.c:1332
#, c-format
msgid "no (known) protocol supplied in special filename `%s'"
msgstr "aucun protocole (connu) fourni dans le nom de fichier spécial « %s »"
-#: io.c:1343
+#: io.c:1350
#, c-format
msgid "special file name `%s' is incomplete"
msgstr "nom spécial de fichier « %s » est incomplet"
-#: io.c:1355
+#: io.c:1362
#, c-format
msgid "local port invalid in `%s'"
msgstr "port local invalide dans « %s »"
-#: io.c:1367
+#: io.c:1374
msgid "must supply a remote hostname to `/inet'"
msgstr "un nom de hôte distant doit être fourni à « /inet »"
-#: io.c:1382
+#: io.c:1389
msgid "must supply a remote port to `/inet'"
msgstr "un port distant doit être fournis à « /inet »"
-#: io.c:1388
+#: io.c:1395
#, c-format
msgid "remote port invalid in `%s'"
msgstr "port distant invalide dans « %s »"
-#: io.c:1398
+#: io.c:1405
msgid "TCP/IP communications are not supported"
msgstr "les communications TCP/IP ne sont pas supportées"
-#: io.c:1407 io.c:1588
+#: io.c:1414 io.c:1595
#, c-format
msgid "file `%s' is a directory"
msgstr "le fichier « %s » est un répertoire"
-#: io.c:1477
+#: io.c:1484
#, c-format
msgid "use `PROCINFO[\"%s\"]' instead of `%s'"
msgstr "utliser « PROCINFO[\"%s\"] » au lieu de « %s »"
-#: io.c:1509
+#: io.c:1516
msgid "use `PROCINFO[...]' instead of `/dev/user'"
msgstr "utliser « PROCINFO[\"%s\"] » au lieu de « /dev/user »"
-#: io.c:1574 io.c:1748
+#: io.c:1581 io.c:1763
#, c-format
msgid "could not open `%s', mode `%s'"
msgstr "ne peut ouvrir « %s », mode « %s »"
-#: io.c:1799
-#, fuzzy, c-format
+#: io.c:1814
+#, c-format
msgid "close of master pty failed (%s)"
-msgstr "échec de la fermeture du pipe (%s)"
+msgstr "échec de la fermeture du pty maître (%s)"
-#: io.c:1801 io.c:1953 io.c:2105
+#: io.c:1816 io.c:1968 io.c:2119
#, c-format
msgid "close of stdout in child failed (%s)"
msgstr "échec de fermeture de stdout du processus fils (%s)"
-#: io.c:1804
-#, fuzzy, c-format
+#: io.c:1819
+#, c-format
msgid "moving slave pty to stdout in child failed (dup: %s)"
-msgstr "échec de redirection du pipe vers stdout du processus fils (dup: %s)"
+msgstr ""
+"échec de redirection de pty esclave vers stdout du processus fils (dup: %s)"
-#: io.c:1806 io.c:1958
+#: io.c:1821 io.c:1973
#, c-format
msgid "close of stdin in child failed (%s)"
msgstr "échec de fermeture de stdin du processus fils (%s)"
-#: io.c:1809
-#, fuzzy, c-format
+#: io.c:1824
+#, c-format
msgid "moving slave pty to stdin in child failed (dup: %s)"
-msgstr "échec de redirection du pipe vers stdin du processus fils (dup: %s)"
+msgstr ""
+"échec de redirection du pty esclave vers stdin du processus fils (dup: %s)"
-#: io.c:1811 io.c:1830
-#, fuzzy, c-format
+#: io.c:1826 io.c:1845
+#, c-format
msgid "close of slave pty failed (%s)"
-msgstr "échec de la fermeture du pipe (%s)"
+msgstr "échec de la fermeture du pty esclave (%s)"
-#: io.c:1904 io.c:1956 io.c:2086 io.c:2108
+#: io.c:1919 io.c:1971 io.c:2100 io.c:2122
#, c-format
msgid "moving pipe to stdout in child failed (dup: %s)"
msgstr "échec de redirection du pipe vers stdout du processus fils (dup: %s)"
-#: io.c:1908 io.c:1961
+#: io.c:1923 io.c:1976
#, c-format
msgid "moving pipe to stdin in child failed (dup: %s)"
msgstr "échec de redirection du pipe vers stdin du processus fils (dup: %s)"
-#: io.c:1925 io.c:2099
+#: io.c:1940 io.c:2113
msgid "restoring stdout in parent process failed\n"
msgstr "restauration de stdout par le processus parent a échoué\n"
-#: io.c:1930
+#: io.c:1945
msgid "restoring stdin in parent process failed\n"
msgstr "restauration de stdin par le processus parent a échoué\n"
-#: io.c:1964 io.c:2110 io.c:2121
+#: io.c:1979 io.c:2124 io.c:2135
#, c-format
msgid "close of pipe failed (%s)"
msgstr "échec de la fermeture du pipe (%s)"
-#: io.c:2009
+#: io.c:2024
msgid "`|&' not supported"
msgstr "« |& » non supporté"
-#: io.c:2076
+#: io.c:2090
#, c-format
msgid "cannot open pipe `%s' (%s)"
msgstr "ne ouvrir un pipe « %s » (%s)"
-#: io.c:2117
+#: io.c:2131
#, c-format
msgid "cannot create child process for `%s' (fork: %s)"
msgstr "ne créer le processus fils pour « %s » (fork: %s)"
-#: io.c:2460
+#: io.c:2506
#, c-format
msgid "data file `%s' is empty"
msgstr "le fichier de données « %s » est vide"
-#: io.c:2503 io.c:2511
+#: io.c:2547 io.c:2555
msgid "could not allocate more input memory"
-msgstr ""
+msgstr "ne peut allouer plus de mémoire pour l'entrée"
-#: io.c:2869 io.c:2932
+#: io.c:2919 io.c:2984
#, c-format
msgid "error reading input file `%s': %s"
msgstr "erreur lors de la lecture du fichier source « %s »: %s"
-#: io.c:3057
+#: io.c:3109
msgid "multicharacter value of `RS' is a gawk extension"
msgstr "valeur de « RS » avec multiple caractères est une extension gawk"
-#: main.c:323
+#: main.c:338
msgid "`-m[fr]' option irrelevant in gawk"
msgstr "« -m[fr] » est une option non pertinente en gawk"
-#: main.c:325
+#: main.c:340
msgid "-m option usage: `-m[fr] nnn'"
msgstr "-m usage de l'option: « -m[fr] nnn »"
-#: main.c:342
+#: main.c:357
#, c-format
msgid "%s: option `-W %s' unrecognized, ignored\n"
msgstr "%s: l'option « -W %s » n'est pas reconnue, ignorée\n"
-#: main.c:379
+#: main.c:394
msgid "empty argument to `--source' ignored"
msgstr "argument vide à l'option « --source », ignorée"
-#: main.c:450
+#: main.c:467
msgid "environment variable `POSIXLY_CORRECT' set: turning on `--posix'"
msgstr ""
"variable d'environnement « POSIXLY__CORRECT » initialisée: utilisation de « "
"--posix »"
-#: main.c:455
+#: main.c:472
msgid "`--posix' overrides `--traditional'"
msgstr "« --posix » écrase « --traditional »"
-#: main.c:466
+#: main.c:483
msgid "`--posix'/`--traditional' overrides `--non-decimal-data'"
msgstr "« --posix »/« --traditional » écrase « --non-decimal-data »"
-#: main.c:470
-#, fuzzy, c-format
+#: main.c:487
+#, c-format
msgid "running %s setuid root may be a security problem"
msgstr ""
"exécution de %s en mode setuid root peut causer un problème de sécurité"
-#: main.c:511
-#, fuzzy, c-format
+#: main.c:528
+#, c-format
msgid "can't set binary mode on stdin (%s)"
-msgstr "ne peut initialiser le mode sur stdin (%s)"
+msgstr "ne peut initialiser le mode binaire sur stdin (%s)"
-#: main.c:514
-#, fuzzy, c-format
+#: main.c:531
+#, c-format
msgid "can't set binary mode on stdout (%s)"
-msgstr "ne peut initialiser le mode sur stdout (%s)"
+msgstr "ne peut initialiser le mode binaire sur stdout (%s)"
-#: main.c:516
-#, fuzzy, c-format
+#: main.c:533
+#, c-format
msgid "can't set binary mode on stderr (%s)"
-msgstr "ne peut initialiser le mode sur stderr (%s)"
+msgstr "ne peut initialiser le mode binaire sur stderr (%s)"
-#: main.c:546
+#: main.c:572
msgid "no program text at all!"
msgstr "aucun programme!"
-#: main.c:623
+#: main.c:665
#, c-format
msgid "Usage: %s [POSIX or GNU style options] -f progfile [--] file ...\n"
msgstr ""
"Usage: %s [style des options POSIX ou GNU] -f fichierprog [--] fichier ...\n"
-#: main.c:625
+#: main.c:667
#, c-format
msgid "Usage: %s [POSIX or GNU style options] [--] %cprogram%c file ...\n"
msgstr ""
"Usage: %s [style des options POSIX ou GNU] [--] %cprogram%c fichier ...\n"
-#: main.c:630
+#: main.c:672
msgid "POSIX options:\t\tGNU long options:\n"
msgstr "Options POSIX:\t\toptions de long format GNU:\n"
-#: main.c:631
+#: main.c:673
msgid "\t-f progfile\t\t--file=progfile\n"
msgstr "\t-f fichierprog\t\t--file=fichierprog\n"
-#: main.c:632
+#: main.c:674
msgid "\t-F fs\t\t\t--field-separator=fs\n"
msgstr "#t-F fs\t\t\t--field-separator=fs\n"
-#: main.c:633
+#: main.c:675
msgid "\t-v var=val\t\t--assign=var=val\n"
msgstr "#t-v var=valeur\t\t--assign=var=valeur\n"
-#: main.c:634
+#: main.c:676
msgid "\t-m[fr] val\n"
msgstr "\t-m[fr] valeur\n"
-#: main.c:635
+#: main.c:677
msgid "\t-W compat\t\t--compat\n"
msgstr "\t-W compat\t\t--compat\n"
-#: main.c:636
+#: main.c:678
msgid "\t-W copyleft\t\t--copyleft\n"
msgstr "\t-W copyleft\t\t--copyleft\n"
-#: main.c:637
+#: main.c:679
msgid "\t-W copyright\t\t--copyright\n"
msgstr "\t-W copyright\t\t--copyright\n"
-#: main.c:638
+#: main.c:680
msgid "\t-W dump-variables[=file]\t--dump-variables[=file]\n"
msgstr "\t-W dump-variables[=fichier]\t--dump-variables[=fichier]\n"
-#: main.c:639
+#: main.c:681
+msgid "\t-W exec=file\t\t--exec=file\n"
+msgstr "\t-W exec=fichier\t\t--exec=fichier\n"
+
+#: main.c:682
msgid "\t-W gen-po\t\t--gen-po\n"
msgstr "\t-W gen-po\t\t--gen-po\n"
-#: main.c:640
+#: main.c:683
msgid "\t-W help\t\t\t--help\n"
msgstr "\t-W help\t\t\t--help\n"
-#: main.c:641
+#: main.c:684
msgid "\t-W lint[=fatal]\t\t--lint[=fatal]\n"
msgstr "\t-W lint[=fatal]\t\t--lint[=fatal]\n"
-#: main.c:642
+#: main.c:685
msgid "\t-W lint-old\t\t--lint-old\n"
msgstr "\t-W lint-old\t\t--lint-old\n"
-#: main.c:643
+#: main.c:686
msgid "\t-W non-decimal-data\t--non-decimal-data\n"
msgstr "\t-W non-decimal-data\t--non-decimal-data\n"
-#: main.c:645
+#: main.c:688
msgid "\t-W nostalgia\t\t--nostalgia\n"
msgstr "\t-W nostalgia\t\t--nostalgia\n"
-#: main.c:648
+#: main.c:691
msgid "\t-W parsedebug\t\t--parsedebug\n"
msgstr "\t-W parsedebug\t\t--parsedebug\n"
-#: main.c:650
+#: main.c:693
msgid "\t-W profile[=file]\t--profile[=file]\n"
msgstr "\t-W profile[=fichier]\t--profile[=fichier]\n"
-#: main.c:651
+#: main.c:694
msgid "\t-W posix\t\t--posix\n"
msgstr "\t-W posix\t\t--posix\n"
-#: main.c:652
+#: main.c:695
msgid "\t-W re-interval\t\t--re-interval\n"
msgstr "\t-W re-interval\t\t--re-interval\n"
-#: main.c:653
+#: main.c:696
msgid "\t-W source=program-text\t--source=program-text\n"
msgstr "\t-W source=program-text\t--source=program-text\n"
-#: main.c:654
+#: main.c:697
msgid "\t-W traditional\t\t--traditional\n"
msgstr "\t-W traditional\t\t--traditional\n"
-#: main.c:655
+#: main.c:698
msgid "\t-W usage\t\t--usage\n"
msgstr "\t-W usage\t\t--usage\n"
-#: main.c:656
+#: main.c:699
msgid "\t-W version\t\t--version\n"
msgstr "\t-W version\t\t--version\n"
-#: main.c:660
-#, fuzzy
+#: main.c:703
msgid ""
"\n"
"To report bugs, see node `Bugs' in `gawk.info', which is\n"
"section `Reporting Problems and Bugs' in the printed version.\n"
"\n"
-msgstr "section « Reporting Problems and Bugs » dans la version imprimée.\n"
+msgstr ""
+"\n"
+"Pour rapporter une anomalies, voir la section « Bugs » dans « gawk.info » de "
+"la section\n"
+"« Problems and Bugs » dans la version imprimée.\n"
-#: main.c:664
+#: main.c:707
msgid ""
"gawk is a pattern scanning and processing language.\n"
"By default it reads standard input and writes standard output.\n"
"\n"
msgstr ""
+"gawk est un langage de gtraitement et de scrutation de patrons de chaînes.\n"
+"Par défaut, il lit de l'entrée standard et écrit sur la sortie standard.\n"
+"\n"
-#: main.c:668
+#: main.c:711
msgid ""
"Examples:\n"
"\tgawk '{ sum += $1 }; END { print sum }' file\n"
"\tgawk -F: '{ print $1 }' /etc/passwd\n"
msgstr ""
+"Exemples:\n"
+"\tgawk '{ sum += $1 }; END { print sum }' file\n"
+"\tgawk -F: '{ print $1 }' /etc/passwd\n"
-#: main.c:685
+#: main.c:731
#, c-format
msgid ""
"Copyright (C) 1989, 1991-%d Free Software Foundation.\n"
@@ -1608,7 +1633,7 @@ msgstr ""
"soit (selon vos préférences) toute version ultérieure.\n"
"\n"
-#: main.c:693
+#: main.c:739
msgid ""
"This program is distributed in the hope that it will be useful,\n"
"but WITHOUT ANY WARRANTY; without even the implied warranty of\n"
@@ -1623,58 +1648,61 @@ msgstr ""
"Pour plus d'informations à ce sujet, consulter la « GNU General Public "
"License ».\n"
-#: main.c:699
+#: main.c:745
msgid ""
"You should have received a copy of the GNU General Public License\n"
"along with this program; if not, write to the Free Software\n"
-"Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.\n"
+"Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, "
+"USA.\n"
msgstr ""
"Vous devriez avoir reçu copie de la Licence Publique Générale de GNU\n"
-"avec ce programme; sinon, écrire à la Free Software Foundation, Inc.,\n"
-"59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.\n"
+"avec ce programme; sinon, sinon écrire à la Free Software Foundation, Inc.,\n"
+"51 Franklin Street, FIth Floor, Boston, MA 02110-1301, USA.\n"
-#: main.c:733
+#: main.c:781
msgid "-Ft does not set FS to tab in POSIX awk"
msgstr ""
"-Ft ne permet pas d'initialiser FS à un tabulateur dans la version POSIX de "
"awk"
-#: main.c:962
+#: main.c:1018
#, c-format
msgid ""
"%s: `%s' argument to `-v' not in `var=value' form\n"
"\n"
msgstr ""
+"%s: « %s » argument pour « -v » n'utilise pas la formulation « var=valeur »\n"
+"\n"
-#: main.c:982
+#: main.c:1038
#, c-format
msgid "`%s' is not a legal variable name"
-msgstr ""
+msgstr "« %s » n'est pas un nom légal de variable"
-#: main.c:985
+#: main.c:1041
#, c-format
msgid "`%s' is not a variable name, looking for file `%s=%s'"
-msgstr ""
+msgstr "« %s » n'est pas un nom de variable, recherche du fichier « %s=%s »"
-#: main.c:1018
+#: main.c:1074
msgid "floating point exception"
msgstr "exception de la virgule flottante"
-#: main.c:1025
+#: main.c:1081
msgid "fatal error: internal error"
msgstr "erreur fatale: erreur interne"
-#: main.c:1075
+#: main.c:1132
#, c-format
msgid "no pre-opened fd %d"
msgstr "aucun fd pré-ouvert pour %d"
-#: main.c:1082
+#: main.c:1139
#, c-format
msgid "could not pre-open /dev/null for fd %d"
msgstr "ne peut pré-ouvrir /dev/null pour le descripteud fd %d"
-#: main.c:1105 main.c:1114
+#: main.c:1162 main.c:1171
#, c-format
msgid "could not find groups: %s"
msgstr "n'a pu trouvé les groupes: %s"
@@ -1696,23 +1724,23 @@ msgstr "Erreur: "
msgid "fatal: "
msgstr "Fatal: "
-#: node.c:58 node.c:65 node.c:74 node.c:88 node.c:115
+#: node.c:59 node.c:66 node.c:75 node.c:90 node.c:119
msgid "can't convert string to float"
msgstr "ne peut convertir la chaîne en nombre flottant"
-#: node.c:357
+#: node.c:414
msgid "backslash at end of string"
msgstr "barre oblique inverse à la fin de la chaîne"
-#: node.c:541
+#: node.c:604
msgid "POSIX does not allow `\\x' escapes"
msgstr "POSIX ne permet pas de séquence d'échappement « \\x »"
-#: node.c:547
+#: node.c:610
msgid "no hex digits in `\\x' escape sequence"
msgstr "aucun chiffre hexadécimal dans la séquence d'échappement « \\x » "
-#: node.c:581
+#: node.c:644
#, c-format
msgid "escape sequence `\\%c' treated as plain `%c'"
msgstr "séquence d'échappement « \\%c » traitée simplement comme « %c »"
@@ -1728,25 +1756,25 @@ msgid "could not open `%s' for writing: %s"
msgstr "ne peut ouvrir « %s » en écriture: %s"
#: profile.c:467
-#, fuzzy, c-format
+#, c-format
msgid "internal error: %s with null vname"
-msgstr "erreur interne: Node_var avec un vname nul"
+msgstr "erreur interne: %s avec un vname nul"
-#: profile.c:530
+#: profile.c:531
msgid "# treated internally as `delete'"
-msgstr ""
+msgstr "# traité de manière interne comme « delete »"
-#: profile.c:1167
+#: profile.c:1168
#, c-format
msgid "# this is a dynamically loaded extension function"
-msgstr ""
+msgstr "# cela est un extension d'une fonction chargée dynamiquement"
-#: profile.c:1198
+#: profile.c:1199
#, c-format
msgid "\t# gawk profile, created %s\n"
msgstr "\t# profile gawk, créé %s\n"
-#: profile.c:1201
+#: profile.c:1202
#, c-format
msgid ""
"\t# BEGIN block(s)\n"
@@ -1755,7 +1783,7 @@ msgstr ""
"#t# DÉBUT de bloc(s)\n"
"\n"
-#: profile.c:1211
+#: profile.c:1212
#, c-format
msgid ""
"\t# Rule(s)\n"
@@ -1764,7 +1792,7 @@ msgstr ""
"\t# Règle(s)\n"
"\n"
-#: profile.c:1217
+#: profile.c:1218
#, c-format
msgid ""
"\t# END block(s)\n"
@@ -1773,7 +1801,7 @@ msgstr ""
"\t# FIN de bloc(s)\n"
"\n"
-#: profile.c:1237
+#: profile.c:1238
#, c-format
msgid ""
"\n"
@@ -1782,83 +1810,89 @@ msgstr ""
"\n"
"\t# Liste alphabétique des fonctions\n"
-#: profile.c:1452
+#: profile.c:1453
#, c-format
msgid "unexpected type %s in prec_level"
msgstr "type %s inattendu dans prec_level"
-#: regcomp.c:150
+#: regcomp.c:160
msgid "Success"
msgstr "Succès"
-#: regcomp.c:153
+#: regcomp.c:163
msgid "No match"
msgstr "Aucune concordance"
-#: regcomp.c:156
+#: regcomp.c:166
msgid "Invalid regular expression"
msgstr "Expression régulière invalide"
-#: regcomp.c:159
+#: regcomp.c:169
msgid "Invalid collation character"
msgstr "Caractère de collation invalide"
-#: regcomp.c:162
+#: regcomp.c:172
msgid "Invalid character class name"
msgstr "Nom de classe de caractères invalide"
-#: regcomp.c:165
+#: regcomp.c:175
msgid "Trailing backslash"
msgstr "Barre oblique inverse de terminaison"
-#: regcomp.c:168
+#: regcomp.c:178
msgid "Invalid back reference"
msgstr "Mauvaise référence arrière"
-#: regcomp.c:171
+#: regcomp.c:181
msgid "Unmatched [ or [^"
msgstr "Non appariement de [ ou [^"
-#: regcomp.c:174
+#: regcomp.c:184
msgid "Unmatched ( or \\("
msgstr "Non appariement de ( ou \\("
-#: regcomp.c:177
+#: regcomp.c:187
msgid "Unmatched \\{"
msgstr "Non appariement de \\{"
-#: regcomp.c:180
+#: regcomp.c:190
msgid "Invalid content of \\{\\}"
msgstr "Contenu invalide de \\{\\}"
-#: regcomp.c:183
+#: regcomp.c:193
msgid "Invalid range end"
msgstr "Borne finale invalide"
-#: regcomp.c:186
+#: regcomp.c:196
msgid "Memory exhausted"
msgstr "Mémoire épuisée"
-#: regcomp.c:189
+#: regcomp.c:199
msgid "Invalid preceding regular expression"
msgstr "Expression régulière précédente invalide"
-#: regcomp.c:192
+#: regcomp.c:202
msgid "Premature end of regular expression"
msgstr "Fin prématurée de l'expression régulière"
-#: regcomp.c:195
+#: regcomp.c:205
msgid "Regular expression too big"
msgstr "Expression régulière trop grande"
-#: regcomp.c:198
+#: regcomp.c:208
msgid "Unmatched ) or \\)"
msgstr "Non appariement de ) ou \\)"
-#: regcomp.c:668
+#: regcomp.c:688
msgid "No previous regular expression"
msgstr "Aucune expression régulière antérieure"
+#~ msgid "function %s called\n"
+#~ msgstr "fonction %s appelée\n"
+
+#~ msgid "field %d in FIELDWIDTHS, must be > 0"
+#~ msgstr "champ %d dans FIELDWIDTHS, doit être > 0"
+
#~ msgid "delete: illegal use of variable `%s' as array"
#~ msgstr ""
#~ "destruction: utilisation illégale d'une variable « %s » comme tableau"
diff --git a/po/ga.gmo b/po/ga.gmo
new file mode 100644
index 00000000..47945cff
--- /dev/null
+++ b/po/ga.gmo
Binary files differ
diff --git a/po/ga.po b/po/ga.po
new file mode 100644
index 00000000..ec5a47c5
--- /dev/null
+++ b/po/ga.po
@@ -0,0 +1,1928 @@
+# Irish translations for gawk.
+# Copyright (C) 2004 Free Software Foundation, Inc.
+# Kevin Patrick Scannell <scannell@SLU.EDU>, 2004.
+# Peadar Ó Guilín <peadarog@oceanfree.net>, 2005.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: gawk 3.1.31\n"
+"Report-Msgid-Bugs-To: arnold@skeeve.com\n"
+"POT-Creation-Date: 2005-07-06 17:20+0300\n"
+"PO-Revision-Date: 2005-01-03 13:47-0500\n"
+"Last-Translator: Peadar Ó Guilín <peadarog@oceanfree.net>\n"
+"Language-Team: Irish <ga@li.org>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=ISO-8859-1\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#: array.c:112
+#, fuzzy, c-format
+msgid "attempt to use function `%s' as an array"
+msgstr "iarracht feidhm `%s' a úsáid mar eagar"
+
+#: array.c:115
+#, c-format
+msgid "attempt to use scalar parameter `%s' as an array"
+msgstr "iarracht paraiméadar scálach `%s' a úsáid mar eagar"
+
+#: array.c:118
+#, c-format
+msgid "attempt to use scalar `%s' as array"
+msgstr "iarracht scálach '%s' a úsáid mar eagar"
+
+#: array.c:156
+#, fuzzy, c-format
+msgid "from %s"
+msgstr "%s ( ó %s)"
+
+#: array.c:511
+#, c-format
+msgid "reference to uninitialized element `%s[\"%s\"]'"
+msgstr "tagairt do eilimint gan túsú `%s[\"%s\"]'"
+
+#: array.c:517
+#, c-format
+msgid "subscript of array `%s' is null string"
+msgstr "is teaghrán folamh é foscript an eagair `%s'"
+
+#: array.c:621
+#, c-format
+msgid "delete: index `%s' not in array `%s'"
+msgstr "delete: níl innéacs `%s' san eagar `%s'"
+
+#: array.c:791
+#, c-format
+msgid "%s: empty (null)\n"
+msgstr "%s: folamh (neamhní)\n"
+
+#: array.c:796
+#, c-format
+msgid "%s: empty (zero)\n"
+msgstr "%s: folamh (nialas)\n"
+
+#: array.c:800
+#, c-format
+msgid "%s: table_size = %d, array_size = %d\n"
+msgstr "%s: méid_tábla = %d, méid_eagair = %d\n"
+
+#: array.c:829
+#, fuzzy, c-format
+msgid "%s: is parameter\n"
+msgstr "%s: is paraiméadar é\n"
+
+#: array.c:834
+#, c-format
+msgid "%s: array_ref to %s\n"
+msgstr "%s: tagairt_eagair do %s\n"
+
+#: awkgram.y:208
+#, fuzzy, c-format
+msgid "%s blocks must have an action part"
+msgstr "tá gá le páirt gníomhach ag blocanna CRÍOCH"
+
+#: awkgram.y:211
+#, fuzzy
+msgid "each rule must have a pattern or an action part"
+msgstr "tá gá le páirt gníomhach ag blocanna CRÍOCH"
+
+#: awkgram.y:267
+#, c-format
+msgid "`%s' is a built-in function, it cannot be redefined"
+msgstr "is feidhm insuite í `%s', ní féidir í a shainmhíneadh"
+
+#: awkgram.y:313
+#, fuzzy
+msgid "regexp constant `//' looks like a C++ comment, but is not"
+msgstr "tá cuma nóta tráchta C ar an dtairiseach `/%s/', ach ní nóta tráchta é"
+
+#: awkgram.y:316
+#, c-format
+msgid "regexp constant `/%s/' looks like a C comment, but is not"
+msgstr "tá cuma nóta tráchta C ar an dtairiseach `/%s/', ach ní nóta tráchta é"
+
+#: awkgram.y:343 awkgram.y:623
+msgid "statement may have no effect"
+msgstr "seans nach mbeidh éifeacht ag an ráiteas"
+
+#: awkgram.y:440 awkgram.y:460
+#, fuzzy, c-format
+msgid "`%s' used in %s action"
+msgstr "`next' á úsáid ag an gníomh TÚS nó CRÍOCH"
+
+#: awkgram.y:453 awkgram.y:456
+msgid "`nextfile' is a gawk extension"
+msgstr "is feabhsúchán gawk é `nextfile'"
+
+#: awkgram.y:470
+msgid "`return' used outside function context"
+msgstr "`return' á úsáid lasmuigh den comhthéacs feidhmach"
+
+#: awkgram.y:512
+msgid "plain `print' in BEGIN or END rule should probably be `print \"\"'"
+msgstr ""
+"is dóigh gur chóir go mbeadh an gnáth `print' sa riail TÚS nó CRÍOCH "
+"scríobhtha mar `print \"\"'"
+
+#: awkgram.y:525 awkgram.y:532
+msgid "`delete array' is a gawk extension"
+msgstr "is feabhsúchán gawk é `delete array'"
+
+#: awkgram.y:540 awkgram.y:547
+#, fuzzy
+msgid "`delete(array)' is a non-portable tawk extension"
+msgstr "is feabhsúchán gawk é `delete array'"
+
+#: awkgram.y:591
+#, c-format
+msgid "duplicate case values in switch body: %s"
+msgstr ""
+
+#: awkgram.y:601
+msgid "Duplicate `default' detected in switch body"
+msgstr ""
+
+#: awkgram.y:690
+msgid "multistage two-way pipelines don't work"
+msgstr "ní oibríonn pílínte déthreo ilchéimeacha"
+
+#: awkgram.y:781
+msgid "regular expression on right of assignment"
+msgstr "slonn ionadaíochta ar dhéis an sannacháin"
+
+#: awkgram.y:804
+msgid "regular expression on left of `~' or `!~' operator"
+msgstr "slonn ionadaíochta ar chlé an oibreoirí `~' nó `!~'"
+
+#: awkgram.y:812
+msgid "regular expression on right of comparison"
+msgstr "slonn ionadaíochta ar dhéis na comparáide"
+
+#: awkgram.y:879
+msgid "non-redirected `getline' undefined inside END action"
+msgstr "ní shannadh `getline' neamhatreoraithe lasmuigh den ghníomh CRÍOCH"
+
+#: awkgram.y:906
+msgid "call of `length' without parentheses is not portable"
+msgstr "tá glao `length' gan lúibíní doiompairtha"
+
+#: awkgram.y:909
+msgid "call of `length' without parentheses is deprecated by POSIX"
+msgstr "lochtaíonn POSIX glao `length' gan lúibíní"
+
+#: awkgram.y:962
+msgid "use of non-array as array"
+msgstr ""
+
+#: awkgram.y:964
+msgid "invalid subscript expression"
+msgstr "slonn foscripte neamhbhailí"
+
+#: awkgram.y:1171
+#, fuzzy
+msgid "unexpected newline or end of string"
+msgstr "líne nua gan súil"
+
+#: awkgram.y:1267
+msgid "empty program text on command line"
+msgstr "téacs feidhmchlár folamh ar líne na n-orduithe"
+
+#: awkgram.y:1320
+#, c-format
+msgid "can't open source file `%s' for reading (%s)"
+msgstr "ní féidir an comhad foinseach `%s' a oscailt chun léamh (%s)"
+
+#: awkgram.y:1397
+#, c-format
+msgid "can't read sourcefile `%s' (%s)"
+msgstr "ní féidir an comhad foinseach `%s' a léamh (%s)"
+
+#: awkgram.y:1405
+#, c-format
+msgid "source file `%s' is empty"
+msgstr "comhad foinseach `%s' folamh"
+
+#: awkgram.y:1596 awkgram.y:1718 awkgram.y:1736 awkgram.y:2107 awkgram.y:2194
+msgid "source file does not end in newline"
+msgstr "ní chríochnaíonn an comhad foinseach le líne nua"
+
+#: awkgram.y:1658
+msgid "unterminated regexp ends with `\\' at end of file"
+msgstr "críochnaíonn regexp gan chríochnú le `\\' ag an gcomhadchríoch"
+
+#: awkgram.y:1682
+#, c-format
+msgid "%s: %d: tawk regex modifier `/.../%c' doesn't work in gawk"
+msgstr ""
+
+#: awkgram.y:1686
+#, c-format
+msgid "tawk regex modifier `/.../%c' doesn't work in gawk"
+msgstr ""
+
+#: awkgram.y:1693
+msgid "unterminated regexp"
+msgstr "slonn ionadaíochta gan críochnú"
+
+#: awkgram.y:1696
+msgid "unterminated regexp at end of file"
+msgstr "slonn ionadaíochta gan críochnú ag an gcomhadchríoch"
+
+#: awkgram.y:1762
+msgid "use of `\\ #...' line continuation is not portable"
+msgstr "níl úsáid `\\ #...' mar leanúint líne doiompartha"
+
+#: awkgram.y:1774
+msgid "backslash not last character on line"
+msgstr "ní cúlslais é carachtar deireanach an líne"
+
+#: awkgram.y:1819
+msgid "POSIX does not allow operator `**='"
+msgstr "ní cheadaíonn POSIX an t-oibreoir `**='"
+
+#: awkgram.y:1821
+msgid "old awk does not support operator `**='"
+msgstr "ní cheadaíonn sean awk an t-oibreoir `**='"
+
+#: awkgram.y:1830
+msgid "POSIX does not allow operator `**'"
+msgstr "ní cheadaíonn POSIX an t-oibreoir `**='"
+
+#: awkgram.y:1832
+msgid "old awk does not support operator `**'"
+msgstr "ní cheadaíonn sean awk an t-oibreoir `**='"
+
+#: awkgram.y:1863
+msgid "operator `^=' is not supported in old awk"
+msgstr "tá an t-oibreoir `^=' gan tacaíocht sa shean awk"
+
+#: awkgram.y:1871
+msgid "operator `^' is not supported in old awk"
+msgstr "tá an t-oibreoir `^' gan tacaíocht sa shean awk"
+
+#: awkgram.y:1955 awkgram.y:1970
+msgid "unterminated string"
+msgstr "teaghrán gan chríochnú"
+
+#: awkgram.y:2155
+#, c-format
+msgid "invalid char '%c' in expression"
+msgstr "carachtar neamhbhailí '%c' sa slonn"
+
+#: awkgram.y:2203
+#, c-format
+msgid "`%s' is a gawk extension"
+msgstr "is feabhsúchán gawk é `%s'"
+
+#: awkgram.y:2206
+#, c-format
+msgid "`%s' is a Bell Labs extension"
+msgstr "is feabhsúchán Bell Labs é `%s'"
+
+#: awkgram.y:2209
+#, c-format
+msgid "POSIX does not allow `%s'"
+msgstr "ní cheadaíonn POSIX `%s'"
+
+#: awkgram.y:2213
+#, c-format
+msgid "`%s' is not supported in old awk"
+msgstr "tá `%s' gan tacaíocht sa shean awk"
+
+#: awkgram.y:2239
+msgid "`goto' considered harmful!\n"
+msgstr "deirtear go bfhuil `goto' dochrach!\n"
+
+#: awkgram.y:2301
+#, c-format
+msgid "%d is invalid as number of arguments for %s"
+msgstr "%d oiread argóintí neamhbhailí le haghaidh %s"
+
+#: awkgram.y:2320 awkgram.y:2323
+msgid "match: third argument is a gawk extension"
+msgstr "meaitseáil: is feabhsúchán gawk é an tríú argóint"
+
+#: awkgram.y:2336
+#, c-format
+msgid "%s: string literal as last arg of substitute has no effect"
+msgstr ""
+"%s: ní bhíonn aon éifeacht ag teaghrán litriúil mar arg deireanach an ionadaí"
+
+#: awkgram.y:2339
+#, fuzzy, c-format
+msgid "%s third parameter is not a changeable object"
+msgstr "ní oibiacht athraitheach é an tríú paraiméadar ionadaíoch"
+
+#: awkgram.y:2366 awkgram.y:2369
+msgid "close: second argument is a gawk extension"
+msgstr "close: is feabhsúchán gawk é an dara hargóint"
+
+#: awkgram.y:2379
+msgid "use of dcgettext(_\"...\") is incorrect: remove leading underscore"
+msgstr "tá úsáid dcgettext(_\"...\") mí-cheart: bain amach an chéad fhostríoc"
+
+#: awkgram.y:2394
+#, fuzzy
+msgid "use of dcngettext(_\"...\") is incorrect: remove leading underscore"
+msgstr "tá úsáid dcgettext(_\"...\") mí-cheart: bain amach an chéad fhostríoc"
+
+#: awkgram.y:2465
+#, c-format
+msgid "function `%s': parameter #%d, `%s', duplicates parameter #%d"
+msgstr "feidhm `%s': is cóip é paraiméadar #%d, `%s', den paraiméadar #%d"
+
+#: awkgram.y:2498
+#, c-format
+msgid "function `%s': parameter `%s' shadows global variable"
+msgstr "feidhm `%s': leanann paraiméadar `%s' an athróg domhanda"
+
+#: awkgram.y:2610
+#, c-format
+msgid "could not open `%s' for writing (%s)"
+msgstr "níorbh fhéidir `%s' a oscailt chun scríobh (%s)"
+
+#: awkgram.y:2611 profile.c:93
+msgid "sending profile to standard error"
+msgstr "ag seoladh cuntas go earráid chaighdeánach"
+
+#: awkgram.y:2643
+#, c-format
+msgid "%s: close failed (%s)"
+msgstr "%s: theip ar an dún (%s)"
+
+#: awkgram.y:2764
+msgid "shadow_funcs() called twice!"
+msgstr "glaodh dhá uair ar shadow_funcs()!"
+
+#: awkgram.y:2791
+msgid "there were shadowed variables."
+msgstr ""
+
+#: awkgram.y:2864
+#, c-format
+msgid "function `%s': can't use function name as parameter name"
+msgstr "feidhm `%s': níl cead ainm feidhme a úsáid mar ainm paraiméadar"
+
+#: awkgram.y:2874
+#, c-format
+msgid "function name `%s' previously defined"
+msgstr "ainm feidhme `%s' sainmhínithe chéana"
+
+#: awkgram.y:3025 awkgram.y:3031
+#, c-format
+msgid "function `%s' called but never defined"
+msgstr "glaodh ar an bhfeidhm `%s' nach bhfuil sainithe"
+
+#: awkgram.y:3034
+#, c-format
+msgid "function `%s' defined but never called"
+msgstr "tá sainiú ag an bhfeidhm `%s' ach ní ghlaodh é"
+
+#: awkgram.y:3061
+#, c-format
+msgid "regexp constant for parameter #%d yields boolean value"
+msgstr "tagann luach Boole de bharr ón dtairiseach regexp don paraiméadar #%d"
+
+#: awkgram.y:3105
+#, fuzzy, c-format
+msgid ""
+"function `%s' called with space between name and `(',\n"
+"or used as a variable or an array"
+msgstr ""
+"glaodh feidhm `%s' le spás idir ainm agus `(',\n"
+"%s"
+
+#: builtin.c:145
+#, c-format
+msgid "%s to \"%s\" failed (%s)"
+msgstr "theip ar %s go \"%s\" (%s)"
+
+#: builtin.c:146
+msgid "standard output"
+msgstr "aschur caighdeánach"
+
+#: builtin.c:147
+msgid "reason unknown"
+msgstr "níl fhios an fáth"
+
+#: builtin.c:160
+msgid "exp: received non-numeric argument"
+msgstr "exp: fuarthas argóint neamhuimhriúil"
+
+#: builtin.c:166
+#, c-format
+msgid "exp: argument %g is out of range"
+msgstr "exp: argóint %g as raon"
+
+#: builtin.c:224
+#, c-format
+msgid "fflush: cannot flush: pipe `%s' opened for reading, not writing"
+msgstr "fflush: ní dhúisófear: píopa `%s' oscailte do léamh, ní do scríobh"
+
+#: builtin.c:227
+#, c-format
+msgid "fflush: cannot flush: file `%s' opened for reading, not writing"
+msgstr "fflush: ní dhúisófear: comhad `%s' oscailte do léamh, ní do scríobh"
+
+#: builtin.c:239
+#, c-format
+msgid "fflush: `%s' is not an open file, pipe or co-process"
+msgstr "fflush: ní comhad, píopa nó comhphróiseas oscailte é `%s'"
+
+#: builtin.c:332
+msgid "index: received non-string first argument"
+msgstr "index: ní teaghrán é an chéad argóint"
+
+#: builtin.c:334
+msgid "index: received non-string second argument"
+msgstr "index: ní teaghrán é an dara hargóint"
+
+#: builtin.c:449
+msgid "int: received non-numeric argument"
+msgstr "int: fuarthas argóint neamhuimhriúil"
+
+#: builtin.c:472
+#, fuzzy
+msgid "`length(array)' is a gawk extension"
+msgstr "is feabhsúchán gawk é `delete array'"
+
+#: builtin.c:481
+msgid "length: received non-string argument"
+msgstr "length: fuarthas argóint nach teaghrán é"
+
+#: builtin.c:506
+msgid "log: received non-numeric argument"
+msgstr "log: fuarthas argóint neamhuimhriúil"
+
+#: builtin.c:509
+#, c-format
+msgid "log: received negative argument %g"
+msgstr "log: fuarthas argóint diúltach %g"
+
+#: builtin.c:673 builtin.c:676
+msgid "must use `count$' on all formats or none"
+msgstr ""
+
+#: builtin.c:778
+msgid "`$' is not permitted in awk formats"
+msgstr "Níl `$' ceadaithe i bhformáidí awk"
+
+#: builtin.c:784
+msgid "arg count with `$' must be > 0"
+msgstr "caithfidh áireamh na harg. le `$' bheith > 0"
+
+#: builtin.c:786
+#, fuzzy, c-format
+msgid "arg count %ld greater than total number of supplied arguments"
+msgstr "áireamh na harg. %d níos mó ná na hargóintí faighte"
+
+#: builtin.c:788
+msgid "`$' not permitted after period in format"
+msgstr "níl `$' ceadaithe i bhformáid théis punc"
+
+#: builtin.c:801
+msgid "no `$' supplied for positional field width or precision"
+msgstr "níor thugadh `$' do leithead nó beachtas an réimse ionaid"
+
+#: builtin.c:867
+msgid "`l' is meaningless in awk formats; ignored"
+msgstr "níl ciall ag `l' i bhformáidí awk; neamhairdithe"
+
+#: builtin.c:871
+msgid "`l' is not permitted in POSIX awk formats"
+msgstr "ní cheadaítear `l' i bhformáidí awk POSIX"
+
+#: builtin.c:882
+msgid "`L' is meaningless in awk formats; ignored"
+msgstr "níl ciall ag `L' i bhformáidí awk; neamhairdithe"
+
+#: builtin.c:886
+msgid "`L' is not permitted in POSIX awk formats"
+msgstr "ní cheadaítear `L' i bhformáidí awk POSIX"
+
+#: builtin.c:897
+msgid "`h' is meaningless in awk formats; ignored"
+msgstr "níl ciall ag `h' i bhformáidí awk; neamhairdithe"
+
+#: builtin.c:901
+msgid "`h' is not permitted in POSIX awk formats"
+msgstr "ní cheadaítear `h' i bhformáidí awk POSIX"
+
+#: builtin.c:1132
+#, c-format
+msgid "[s]printf: value %g is out of range for `%%%c' format"
+msgstr ""
+
+#: builtin.c:1198
+msgid "not enough arguments to satisfy format string"
+msgstr "ní leor argóintí le haghaidh an teaghráin formáide"
+
+#: builtin.c:1200
+msgid "^ ran out for this one"
+msgstr "^ imithe thar bráid don cheann seo"
+
+#: builtin.c:1205
+msgid "[s]printf: format specifier does not have control letter"
+msgstr "[s]printf: níl litir rialúcháin ag an sonraitheoir formáide"
+
+#: builtin.c:1208
+msgid "too many arguments supplied for format string"
+msgstr "fuarthas an iomarca argóintí don teaghrán formáide"
+
+#: builtin.c:1274 builtin.c:1277
+msgid "printf: no arguments"
+msgstr "printf: níl aon argóint"
+
+#: builtin.c:1301
+msgid "sqrt: received non-numeric argument"
+msgstr "sqrt: fuarthas argóint neamhuimhriúil"
+
+#: builtin.c:1305
+#, c-format
+msgid "sqrt: called with negative argument %g"
+msgstr "sqrt: glaodh le argóint diúltach %g"
+
+#: builtin.c:1329
+#, c-format
+msgid "substr: start index %g is invalid, using 1"
+msgstr "substr: tá tús innéacs %g neamhbhailí, ag úsáid a 1"
+
+#: builtin.c:1334
+#, c-format
+msgid "substr: non-integer start index %g will be truncated"
+msgstr "substr: teascófar tús neamhuimhriúil an innéacs %g"
+
+#: builtin.c:1353
+#, fuzzy, c-format
+msgid "substr: length %g is not >= 1"
+msgstr "substr: tá fad %g <= 0"
+
+#: builtin.c:1355
+#, fuzzy, c-format
+msgid "substr: length %g is not >= 0"
+msgstr "substr: tá fad %g <= 0"
+
+#: builtin.c:1362
+#, c-format
+msgid "substr: non-integer length %g will be truncated"
+msgstr "ubstr: teascófar an fad neamhuimhriúil %g"
+
+#: builtin.c:1367
+#, c-format
+msgid "substr: length %g too big for string indexing, truncating to %g"
+msgstr ""
+
+#: builtin.c:1379
+msgid "substr: source string is zero length"
+msgstr "substr: tá an teaghrán foinse folamh"
+
+#: builtin.c:1395
+#, fuzzy, c-format
+msgid "substr: start index %g is past end of string"
+msgstr "substr: tosaíonn innéacs %d théis deireadh an teaghráin"
+
+#: builtin.c:1403
+#, fuzzy, c-format
+msgid ""
+"substr: length %g at start index %g exceeds length of first argument (%lu)"
+msgstr "substr: fad %d ag tús innéacs %d ró-fhada don chéad argóint (%d)"
+
+#: builtin.c:1478
+#, fuzzy
+msgid "strftime: received non-string first argument"
+msgstr "strftime: ní teaghrán é an chéad argóint"
+
+#: builtin.c:1484
+msgid "strftime: received empty format string"
+msgstr "strftime: fuarthas teaghrán formáide folamh"
+
+#: builtin.c:1493
+#, fuzzy
+msgid "strftime: received non-numeric second argument"
+msgstr "strftime: fuarthas dara hargóint neamhuimhriúil"
+
+#: builtin.c:1556
+msgid "mktime: received non-string argument"
+msgstr "mktime: ní teaghrán é an argóint"
+
+#: builtin.c:1601
+#, fuzzy
+msgid "system: received non-string argument"
+msgstr "system: ní teaghrán é an argóint"
+
+#: builtin.c:1722 eval.c:2039
+#, fuzzy, c-format
+msgid "reference to uninitialized field `$%d'"
+msgstr "tagairt do athróg nach bhfuil túsaithe `%s'"
+
+#: builtin.c:1827
+#, fuzzy
+msgid "tolower: received non-string argument"
+msgstr "tolower: ní teaghrán é an argóint"
+
+#: builtin.c:1857
+#, fuzzy
+msgid "toupper: received non-string argument"
+msgstr "toupper: ní teaghrán é an argóint"
+
+#: builtin.c:1890
+msgid "atan2: received non-numeric first argument"
+msgstr "atan2: ní huimhir é an chéad argóint"
+
+#: builtin.c:1892
+msgid "atan2: received non-numeric second argument"
+msgstr "atan2: ní huimhir é an dara hargóint"
+
+#: builtin.c:1911
+msgid "sin: received non-numeric argument"
+msgstr "sin: fuarthas argóint neamhuimhriúil"
+
+#: builtin.c:1927
+msgid "cos: received non-numeric argument"
+msgstr "cos: fuarthas argóint neamhuimhriúil"
+
+#: builtin.c:1977
+msgid "srand: received non-numeric argument"
+msgstr "srand: fuarthas argóint neamhuimhriúil"
+
+#: builtin.c:2012
+msgid "match: third argument is not an array"
+msgstr "match: ní eagar é an tríú argóint"
+
+#: builtin.c:2555
+#, fuzzy
+msgid "gensub: third argument of 0 treated as 1"
+msgstr "gensub: 3ú argóint as 0 úsáidte mar 1"
+
+#: builtin.c:2715
+msgid "lshift: received non-numeric first argument"
+msgstr "lshift: ní huimhir é an chéad argóint"
+
+#: builtin.c:2717
+#, fuzzy
+msgid "lshift: received non-numeric second argument"
+msgstr "atan2: ní huimhir é an dara hargóint"
+
+#: builtin.c:2723
+#, c-format
+msgid "lshift(%lf, %lf): negative values will give strange results"
+msgstr "lshift(%lf, %lf): tiocfaidh torthaí aisteacha as luachanna diúltacha"
+
+#: builtin.c:2725
+#, c-format
+msgid "lshift(%lf, %lf): fractional values will be truncated"
+msgstr "lshift(%lf, %lf): teascófar luachanna codánacha"
+
+#: builtin.c:2727
+#, c-format
+msgid "lshift(%lf, %lf): too large shift value will give strange results"
+msgstr ""
+"lshift(%lf, %lf): gheobhfar torthaí aisteacha le luach iomlaoidach ró-mhór"
+
+#: builtin.c:2753
+msgid "rshift: received non-numeric first argument"
+msgstr "rshift: ní huimhir é an chéad argóint"
+
+#: builtin.c:2755
+#, fuzzy
+msgid "rshift: received non-numeric second argument"
+msgstr "atan2: ní huimhir é an dara hargóint"
+
+#: builtin.c:2761
+#, c-format
+msgid "rshift(%lf, %lf): negative values will give strange results"
+msgstr "rshift(%lf, %lf): gheobhfar torthaí aisteacha le luachanna diútlacha"
+
+#: builtin.c:2763
+#, c-format
+msgid "rshift(%lf, %lf): fractional values will be truncated"
+msgstr "rshift(%lf, %lf): teascófar luachanna codánacha"
+
+#: builtin.c:2765
+#, c-format
+msgid "rshift(%lf, %lf): too large shift value will give strange results"
+msgstr ""
+"rshift(%lf, %lf): gheobhfar torthaí aisteacha le luach iomlaoidach ró-mhór"
+
+#: builtin.c:2791
+msgid "and: received non-numeric first argument"
+msgstr "and: ní huimhir é an chéad argóint"
+
+#: builtin.c:2793
+#, fuzzy
+msgid "and: received non-numeric second argument"
+msgstr "atan2: ní huimhir é an dara hargóint"
+
+#: builtin.c:2799
+#, c-format
+msgid "and(%lf, %lf): negative values will give strange results"
+msgstr "and(%lf, %lf): gheobhfar torthaí aisteacha le luachanna diútlacha"
+
+#: builtin.c:2801
+#, c-format
+msgid "and(%lf, %lf): fractional values will be truncated"
+msgstr "and(%lf, %lf): teascófar luachanna codánacha"
+
+#: builtin.c:2827
+msgid "or: received non-numeric first argument"
+msgstr "or: ní huimhir é an chéad argóint"
+
+#: builtin.c:2829
+#, fuzzy
+msgid "or: received non-numeric second argument"
+msgstr "atan2: ní huimhir é an dara hargóint"
+
+#: builtin.c:2835
+#, c-format
+msgid "or(%lf, %lf): negative values will give strange results"
+msgstr "or(%lf, %lf): gheobhfar torthaí aisteacha le luachanna diútlacha"
+
+#: builtin.c:2837
+#, c-format
+msgid "or(%lf, %lf): fractional values will be truncated"
+msgstr "or(%lf, %lf): teascófar luachanna codánacha"
+
+#: builtin.c:2863
+msgid "xor: received non-numeric first argument"
+msgstr "xor: ní huimhir é an chéad argóint"
+
+#: builtin.c:2865
+#, fuzzy
+msgid "xor: received non-numeric second argument"
+msgstr "atan2: ní huimhir é an dara hargóint"
+
+#: builtin.c:2871
+#, c-format
+msgid "xor(%lf, %lf): negative values will give strange results"
+msgstr "xor(%lf, %lf): gheobhfar torthaí aisteacha le luachanna diútlacha"
+
+#: builtin.c:2873
+#, c-format
+msgid "xor(%lf, %lf): fractional values will be truncated"
+msgstr "xor(%lf, %lf): teascófar luachanna codánacha"
+
+#: builtin.c:2897
+msgid "compl: received non-numeric argument"
+msgstr "compl: fuarthas argóint neamhuimhriúil"
+
+#: builtin.c:2903
+#, c-format
+msgid "compl(%lf): negative value will give strange results"
+msgstr "compl(%lf): gheobhfar torthaí aisteacha le luachanna diútlacha"
+
+#: builtin.c:2905
+#, c-format
+msgid "compl(%lf): fractional value will be truncated"
+msgstr "compl(%lf): teascófar luachanna codánacha"
+
+#: builtin.c:3078
+#, c-format
+msgid "dcgettext: `%s' is not a valid locale category"
+msgstr "dcgettext: ní catagóir logánach ceart é `%s'"
+
+#: eval.c:303
+#, c-format
+msgid "unknown nodetype %d"
+msgstr " cineál anaithnid nóid %d"
+
+#: eval.c:353
+msgid "buffer overflow in genflags2str"
+msgstr "maolán thar maoil i genflags2str"
+
+#: eval.c:385 eval.c:391 profile.c:838
+#, c-format
+msgid "attempt to use array `%s' in a scalar context"
+msgstr "iarracht eagar `%s' a úsáid i gcomhthéacs scálach"
+
+#: eval.c:733
+#, fuzzy, c-format
+msgid "for loop: array `%s' changed size from %ld to %ld during loop execution"
+msgstr "lúb for: d'athraigh méid an eagair `%s' ó %d go %d i lár na lúibe"
+
+#: eval.c:754
+msgid "`break' outside a loop is not portable"
+msgstr "níl `break' lasmuigh den lúb iniompartha"
+
+#: eval.c:758
+msgid "`break' outside a loop is not allowed"
+msgstr "níl `break' lasmuigh den lúb ceadaithe"
+
+#: eval.c:775
+msgid "`continue' outside a loop is not portable"
+msgstr "níl `continue' lasmuigh den lúb iniompartha"
+
+#: eval.c:779
+msgid "`continue' outside a loop is not allowed"
+msgstr "níl `continue' lasmuigh den lúb ceadaithe"
+
+#: eval.c:813
+msgid "`next' cannot be called from a BEGIN rule"
+msgstr "ní féidir glaoigh ar `next' ó riail TÚS"
+
+#: eval.c:815
+msgid "`next' cannot be called from an END rule"
+msgstr "ní féidir glaoigh ar `next' ó riail CRÍOCH"
+
+#: eval.c:824
+msgid "`nextfile' cannot be called from a BEGIN rule"
+msgstr "ní féidir glaoigh ar `nextfile' ó riail TÚS"
+
+#: eval.c:826
+msgid "`nextfile' cannot be called from an END rule"
+msgstr "ní féidir glaoigh ar `nextfile' ó riail CRÍOCH"
+
+#: eval.c:875
+msgid "statement has no effect"
+msgstr "níl aon éifeacht ag an ráiteas"
+
+#: eval.c:952 eval.c:1893
+#, c-format
+msgid "can't use function name `%s' as variable or array"
+msgstr "ní féidir ainm feidhme `%s' a úsáid mar athróg nó eagar"
+
+#: eval.c:959 eval.c:965
+#, c-format
+msgid "reference to uninitialized argument `%s'"
+msgstr "tagairt do argóint nach bhfuil túsaithe `%s'"
+
+#: eval.c:974 eval.c:1902
+#, c-format
+msgid "reference to uninitialized variable `%s'"
+msgstr "tagairt do athróg nach bhfuil túsaithe `%s'"
+
+#: eval.c:1120
+msgid ""
+"concatenation: side effects in one expression have changed the length of "
+"another!"
+msgstr "comhchaitéiniú: d'athraigh éifeachtaí sloinn amháin fad ceann eile!"
+
+#: eval.c:1200
+msgid "assignment used in conditional context"
+msgstr "sannadh úsáidte i gcomhthéacs coinníollach"
+
+#: eval.c:1278
+msgid "division by zero attempted"
+msgstr "iarracht roinnt le nialas a dhéanamh"
+
+#: eval.c:1293
+#, c-format
+msgid "division by zero attempted in `%%'"
+msgstr "iarracht roinnt le nialas a dhéanamh i `%%'"
+
+#: eval.c:1308 profile.c:714
+#, c-format
+msgid "illegal type (%s) in tree_eval"
+msgstr "cineál neamhcheadaithe (%s) i tree_eval"
+
+#: eval.c:1471
+msgid "division by zero attempted in `/='"
+msgstr "iarracht roinnt le nialas a dhéanamh i `/='"
+
+#: eval.c:1493
+#, c-format
+msgid "division by zero attempted in `%%='"
+msgstr "iarracht roinnt le nialas a dhéanamh i `%%='"
+
+#: eval.c:1758
+#, c-format
+msgid "function `%s' called with more arguments than declared"
+msgstr "glaodh ar fheidhm `%s' le níos mó argóintí nó mar a bhí fógartha"
+
+#: eval.c:1802
+#, c-format
+msgid "function `%s' not defined"
+msgstr "feidhm `%s' gan sainmhíniú"
+
+#: eval.c:1865
+#, c-format
+msgid ""
+"\n"
+"\t# Function Call Stack:\n"
+"\n"
+msgstr ""
+"\n"
+"\t# Cruach an Glaoigh ar an bhFeidhm:\n"
+"\n"
+
+#: eval.c:1868
+#, c-format
+msgid "\t# -- main --\n"
+msgstr "\t# -- príomh --\n"
+
+#: eval.c:2023
+msgid "attempt to field reference from non-numeric value"
+msgstr "iarracht tagairt a fháil ó luach neamhuimhriúil"
+
+#: eval.c:2025
+msgid "attempt to reference from null string"
+msgstr "iarracht tagairt a fháil ó theaghrán neamhnitheach"
+
+#: eval.c:2031
+#, c-format
+msgid "attempt to access field %d"
+msgstr "iarracht rochtain a dhéanamh ar réimse %d"
+
+#: eval.c:2052 eval.c:2059 profile.c:935
+msgid "assignment is not allowed to result of builtin function"
+msgstr "ní féidir sannachán a dhéanamh le toradh ó feidhm insuite"
+
+#: eval.c:2123
+msgid "`IGNORECASE' is a gawk extension"
+msgstr "is feabhsúchán gawk é `IGNORECASE'"
+
+#: eval.c:2153
+msgid "`BINMODE' is a gawk extension"
+msgstr "is feabhsúchán gawk é `BINMODE'"
+
+#: eval.c:2275
+#, c-format
+msgid "bad `%sFMT' specification `%s'"
+msgstr "droch sonraíocht`%sFMT' `%s'"
+
+#: eval.c:2353
+msgid "turning off `--lint' due to assignment to `LINT'"
+msgstr "ag múchadh `--lint' de bharr sannachán go `LINT'"
+
+#: ext.c:60 ext.c:64
+msgid "`extension' is a gawk extension"
+msgstr "is feabhsúchán gawk é `extension'"
+
+#: ext.c:74
+#, c-format
+msgid "extension: cannot open `%s' (%s)\n"
+msgstr "extension: ní féidir oscailt `%s' (%s)\n"
+
+#: ext.c:82
+#, c-format
+msgid "extension: library `%s': cannot call function `%s' (%s)\n"
+msgstr "extension: leabharlann `%s': ní féidir glaoigh ar fheidhm `%s' (%s)\n"
+
+#: ext.c:102
+msgid "extension: missing function name"
+msgstr ""
+
+#: ext.c:107
+#, fuzzy, c-format
+msgid "extension: illegal character `%c' in function name `%s'"
+msgstr "extension: leabharlann `%s': ní féidir glaoigh ar fheidhm `%s' (%s)\n"
+
+#: ext.c:113
+#, fuzzy, c-format
+msgid "extension: can't redefine function `%s'"
+msgstr "extension: ní féidir oscailt `%s' (%s)\n"
+
+#: ext.c:117
+#, fuzzy, c-format
+msgid "extension: function `%s' already defined"
+msgstr "feidhm `%s' gan sainmhíniú"
+
+#: ext.c:122
+#, c-format
+msgid "extension: can't use gawk built-in `%s' as function name"
+msgstr ""
+
+#: ext.c:124
+#, fuzzy, c-format
+msgid "extension: function name `%s' previously defined"
+msgstr "ainm feidhme `%s' sainmhínithe chéana"
+
+#: ext.c:201
+#, fuzzy, c-format
+msgid "function `%s' defined to take no more than %d argument(s)"
+msgstr "tá sainiú ag an bhfeidhm `%s' ach ní ghlaodh é"
+
+#: ext.c:204
+#, fuzzy, c-format
+msgid "function `%s': missing argument #%d"
+msgstr "feidhm `%s' gan sainmhíniú"
+
+#: ext.c:214
+#, fuzzy, c-format
+msgid "function `%s': argument #%d: attempt to use scalar as an array"
+msgstr "iarracht scálach '%s' a úsáid mar eagar"
+
+#: ext.c:218
+#, c-format
+msgid "function `%s': argument #%d: attempt to use array as a scalar"
+msgstr ""
+
+#: ext.c:243
+msgid "Operation Not Supported"
+msgstr "Oibríocht Gan Tacaíocht"
+
+#: field.c:326
+msgid "NF set to negative value"
+msgstr "NF socraithe go luach diúltach"
+
+#: field.c:819
+msgid "split: second argument is not an array"
+msgstr "scoilt: ní eagar é an dara hargóint"
+
+#: field.c:853
+msgid "split: null string for third arg is a gawk extension"
+msgstr "scoilt: is feabhsúchán gawk é an teaghrán neamhnitheach don tríú arg"
+
+#: field.c:905
+msgid "`FIELDWIDTHS' is a gawk extension"
+msgstr "is feabhsúchán gawk é `FIELDWIDTHS'"
+
+#: field.c:935 field.c:946
+#, c-format
+msgid "invalid FIELDWIDTHS value, near `%s'"
+msgstr ""
+
+#: field.c:1027
+msgid "null string for `FS' is a gawk extension"
+msgstr "is feabhsúchán gawk é an teaghrán neamhnitheach do `FS'"
+
+#: getopt.c:571 getopt.c:590
+#, c-format
+msgid "%s: option `%s' is ambiguous\n"
+msgstr "%s: tá an rogha `%s' débhríoch\n"
+
+#: getopt.c:623 getopt.c:627
+#, c-format
+msgid "%s: option `--%s' doesn't allow an argument\n"
+msgstr "%s: ní cheadaítear argóint i ndiaidh an rogha `--%s'\n"
+
+#: getopt.c:636 getopt.c:641
+#, c-format
+msgid "%s: option `%c%s' doesn't allow an argument\n"
+msgstr "%s: ní cheadaítear argóint i ndiaidh an rogha `%c%s'\n"
+
+#: getopt.c:687 getopt.c:709 getopt.c:1040 getopt.c:1062
+#, c-format
+msgid "%s: option `%s' requires an argument\n"
+msgstr "%s: ní foláir argóint don rogha `%s'\n"
+
+#: getopt.c:747 getopt.c:750
+#, c-format
+msgid "%s: unrecognized option `--%s'\n"
+msgstr "%s: rogha anaithnid `--%s'\n"
+
+#: getopt.c:758 getopt.c:761
+#, c-format
+msgid "%s: unrecognized option `%c%s'\n"
+msgstr "%s: rogha anaithnid `%c%s'\n"
+
+#: getopt.c:816 getopt.c:819
+#, c-format
+msgid "%s: illegal option -- %c\n"
+msgstr "%s: rogha neamhcheadaithe -- %c\n"
+
+#: getopt.c:825 getopt.c:828
+#, c-format
+msgid "%s: invalid option -- %c\n"
+msgstr "%s: rogha neamhbhailí -- %c\n"
+
+#: getopt.c:883 getopt.c:902 getopt.c:1115 getopt.c:1136 main.c:448
+#, c-format
+msgid "%s: option requires an argument -- %c\n"
+msgstr "%s: ní foláir argóint don rogha -- %c\n"
+
+#: getopt.c:955 getopt.c:974
+#, c-format
+msgid "%s: option `-W %s' is ambiguous\n"
+msgstr "%s: Tá an rogha `-W %s' débhríoch\n"
+
+#: getopt.c:998 getopt.c:1019
+#, c-format
+msgid "%s: option `-W %s' doesn't allow an argument\n"
+msgstr "%s: ní cheadaítear argóint i ndiaidh an rogha `-W %s'\n"
+
+#: io.c:307
+#, c-format
+msgid "cannot open file `%s' for reading (%s)"
+msgstr "ní féidir `%s' a oscailt chun é a léamh (%s)"
+
+#: io.c:398
+#, c-format
+msgid "close of fd %d (`%s') failed (%s)"
+msgstr "dúnadh fd %d (`%s') teipthe (%s)"
+
+#: io.c:536
+#, c-format
+msgid "invalid tree type %s in redirect()"
+msgstr "cineál crainn %s neamhbhailí san atreorú()"
+
+#: io.c:542
+#, c-format
+msgid "expression in `%s' redirection only has numeric value"
+msgstr "níl ach luach uimhriúil ag an slonn in atreorú `%s'"
+
+#: io.c:548
+#, c-format
+msgid "expression for `%s' redirection has null string value"
+msgstr "tá luach teaghráin neamhnitheach ag an slonn in atreorú `%s'"
+
+#: io.c:553
+#, c-format
+msgid "filename `%s' for `%s' redirection may be result of logical expression"
+msgstr ""
+"seans gur toradh sloinn loighciúil é an comhadainm `%s' don atreorú `%s'"
+
+#: io.c:591
+#, c-format
+msgid "unnecessary mixing of `>' and `>>' for file `%.*s'"
+msgstr "meascán neamhriachtanach de `>' agus `>>' do chomhad `%.*s'"
+
+#: io.c:643
+#, c-format
+msgid "can't open pipe `%s' for output (%s)"
+msgstr "ní féidir píopa `%s' a oscailt do aschur (%s)"
+
+#: io.c:652
+#, c-format
+msgid "can't open pipe `%s' for input (%s)"
+msgstr "ní féidir píopa `%s' a oscailt do ionchur (%s)"
+
+#: io.c:665
+#, c-format
+msgid "can't open two way socket `%s' for input/output (%s)"
+msgstr "ní féidir an soicéad déthreo `%s' a oscailt do ionchur/aschur (%s)"
+
+#: io.c:669
+#, c-format
+msgid "can't open two way pipe `%s' for input/output (%s)"
+msgstr "ní féidir an píopa déthreo `%s' a oscailt do ionchur/aschur (%s)"
+
+#: io.c:745
+#, c-format
+msgid "can't redirect from `%s' (%s)"
+msgstr "ní féidir atreorú ó `%s' (%s)"
+
+#: io.c:748
+#, c-format
+msgid "can't redirect to `%s' (%s)"
+msgstr "ní féidir atreorú go `%s' (%s)"
+
+#: io.c:787
+msgid ""
+"reached system limit for open files: starting to multiplex file descriptors"
+msgstr ""
+"tagtha chuig teorainn córais do chomhadlanna oscailte: ag tosnú "
+"tuairisceoirí na gcomhadlann a ilphléacsadh"
+
+#: io.c:803
+#, c-format
+msgid "close of `%s' failed (%s)."
+msgstr "dúnadh `%s' teipthe (%s)."
+
+#: io.c:811
+msgid "too many pipes or input files open"
+msgstr "tá an iomarca píopaí nó comhadlanna ionchuir oscailte"
+
+#: io.c:834
+msgid "close: second argument must be `to' or `from'"
+msgstr "close: tá `to' nó `from' de dhíth mar dara hargóint"
+
+#: io.c:848
+#, c-format
+msgid "close: `%.*s' is not an open file, pipe or co-process"
+msgstr "close: ní comhad oscailte, píopa nó comhphróiséas é `%.*s'"
+
+#: io.c:852
+msgid "close of redirection that was never opened"
+msgstr "dúnadh atreoraithe nach n-osclóadh ariamh"
+
+#: io.c:948
+#, c-format
+msgid "close: redirection `%s' not opened with `|&', second argument ignored"
+msgstr ""
+"close: níl atreorú `%s' oscailte le `|&', rinneadh neamhaird ar an dara "
+"hargóint"
+
+#: io.c:964
+#, c-format
+msgid "failure status (%d) on pipe close of `%s' (%s)"
+msgstr "stádas teipfhulangach (%d) ar dúnadh an phíopa `%s' (%s)"
+
+#: io.c:967
+#, c-format
+msgid "failure status (%d) on file close of `%s' (%s)"
+msgstr "stádas teipfhulangach (%d) ar dúnadh an chomhaid `%s' (%s)"
+
+#: io.c:987
+#, c-format
+msgid "no explicit close of socket `%s' provided"
+msgstr "ní fhuarthas dúnadh léir an tsoicéid `%s'"
+
+#: io.c:990
+#, c-format
+msgid "no explicit close of co-process `%s' provided"
+msgstr "ní fhuarthas dúnadh léir an chomhphróiseis `%s'"
+
+#: io.c:993
+#, c-format
+msgid "no explicit close of pipe `%s' provided"
+msgstr "ní fhuarthas dúnadh léir an phíopa `%s'"
+
+#: io.c:996
+#, c-format
+msgid "no explicit close of file `%s' provided"
+msgstr "ní fhuarthas dúnadh léir an chomhaid `%s'"
+
+#: io.c:1025 io.c:1080 main.c:718 main.c:756
+#, c-format
+msgid "error writing standard output (%s)"
+msgstr "earráid agus ag scríobh go haschur caighdeánach (%s)"
+
+#: io.c:1029 io.c:1085
+#, c-format
+msgid "error writing standard error (%s)"
+msgstr "earráid agus ag scríobh go hearráid caighdeánach (%s)"
+
+#: io.c:1037
+#, c-format
+msgid "pipe flush of `%s' failed (%s)."
+msgstr "sruthladh píopa `%s' teipthe (%s)."
+
+#: io.c:1040
+#, c-format
+msgid "co-process flush of pipe to `%s' failed (%s)."
+msgstr "sruthladh comhphróseis an phíopa go `%s' teipthe (%s)."
+
+#: io.c:1043
+#, c-format
+msgid "file flush of `%s' failed (%s)."
+msgstr "sruthladh comhaid `%s' teipthe (%s)."
+
+#: io.c:1205
+msgid "/inet/raw client not ready yet, sorry"
+msgstr "tá brón orm, níl an cliant /inet/raw réidh go fóill"
+
+#: io.c:1207 io.c:1244
+msgid "only root may use `/inet/raw'."
+msgstr "`/inet/raw' ceadaithe do root amháin."
+
+#: io.c:1242
+msgid "/inet/raw server not ready yet, sorry"
+msgstr "tá brón orm, níl an freastalaí /inet/raw ré go fóill"
+
+#: io.c:1332
+#, c-format
+msgid "no (known) protocol supplied in special filename `%s'"
+msgstr "ní fhuarthas fíor phrótacal sa chomhadainm speisialta `%s'"
+
+#: io.c:1350
+#, c-format
+msgid "special file name `%s' is incomplete"
+msgstr "níl an comhadainm speisialta `%s' iomlán"
+
+#: io.c:1362
+#, c-format
+msgid "local port invalid in `%s'"
+msgstr "port logánta neamhbhailí i `%s'"
+
+#: io.c:1374
+msgid "must supply a remote hostname to `/inet'"
+msgstr "tá ainm cianóstaigh de dhíth ag `/inet'"
+
+#: io.c:1389
+msgid "must supply a remote port to `/inet'"
+msgstr "tá cianphort de dhíth ag `/inet'"
+
+#: io.c:1395
+#, c-format
+msgid "remote port invalid in `%s'"
+msgstr "cianphort neamhbhailí i `%s'"
+
+#: io.c:1405
+msgid "TCP/IP communications are not supported"
+msgstr "cumarsáid TCP/IP gan tacaíocht"
+
+#: io.c:1414 io.c:1595
+#, c-format
+msgid "file `%s' is a directory"
+msgstr "ní comhadlann é an comhad `%s'"
+
+#: io.c:1484
+#, c-format
+msgid "use `PROCINFO[\"%s\"]' instead of `%s'"
+msgstr "úsáid `PROCINFO[\"%s\"]' in ionad `%s'"
+
+#: io.c:1516
+msgid "use `PROCINFO[...]' instead of `/dev/user'"
+msgstr "úsáid `PROCINFO[...]' in ionad `/dev/user'"
+
+#: io.c:1581 io.c:1763
+#, c-format
+msgid "could not open `%s', mode `%s'"
+msgstr "níorbh fhéidir `%s' a oscailt, mód `%s'"
+
+#: io.c:1814
+#, fuzzy, c-format
+msgid "close of master pty failed (%s)"
+msgstr "theip ar dúnadh phíopa (%s)"
+
+#: io.c:1816 io.c:1968 io.c:2119
+#, c-format
+msgid "close of stdout in child failed (%s)"
+msgstr "theip ar dúnadh aschuir caighdeánach i mac teipthe (%s)"
+
+#: io.c:1819
+#, fuzzy, c-format
+msgid "moving slave pty to stdout in child failed (dup: %s)"
+msgstr "ag bogadh píopa go haschur caighdeánach i mac teipthe (dup: %s)"
+
+#: io.c:1821 io.c:1973
+#, c-format
+msgid "close of stdin in child failed (%s)"
+msgstr "theip ar dúnadh ionchuir caighdeánach i mac teipthe (%s)"
+
+#: io.c:1824
+#, fuzzy, c-format
+msgid "moving slave pty to stdin in child failed (dup: %s)"
+msgstr "ag bogadh píopa go ionchur caighdeánach i mac teipthe (dup: %s)"
+
+#: io.c:1826 io.c:1845
+#, fuzzy, c-format
+msgid "close of slave pty failed (%s)"
+msgstr "theip ar dúnadh phíopa (%s)"
+
+#: io.c:1919 io.c:1971 io.c:2100 io.c:2122
+#, c-format
+msgid "moving pipe to stdout in child failed (dup: %s)"
+msgstr "ag bogadh píopa go haschur caighdeánach i mac teipthe (dup: %s)"
+
+#: io.c:1923 io.c:1976
+#, c-format
+msgid "moving pipe to stdin in child failed (dup: %s)"
+msgstr "ag bogadh píopa go ionchur caighdeánach i mac teipthe (dup: %s)"
+
+#: io.c:1940 io.c:2113
+msgid "restoring stdout in parent process failed\n"
+msgstr "theip ar dul ar ais go haschur caighdeánach i máthair teipthe\n"
+
+#: io.c:1945
+msgid "restoring stdin in parent process failed\n"
+msgstr "theip ar dul ar ais go ionchur caighdeánach i máthair teipthe\n"
+
+#: io.c:1979 io.c:2124 io.c:2135
+#, c-format
+msgid "close of pipe failed (%s)"
+msgstr "theip ar dúnadh phíopa (%s)"
+
+#: io.c:2024
+msgid "`|&' not supported"
+msgstr "`|&' gan tacaíocht"
+
+#: io.c:2090
+#, c-format
+msgid "cannot open pipe `%s' (%s)"
+msgstr "ní féidir píopa `%s' a oscailt (%s)"
+
+#: io.c:2131
+#, c-format
+msgid "cannot create child process for `%s' (fork: %s)"
+msgstr "ní féidir mac a dhéanamh do `%s' (fork: %s)"
+
+#: io.c:2506
+#, c-format
+msgid "data file `%s' is empty"
+msgstr "tá comhad sonraí `%s' folamh"
+
+#: io.c:2547 io.c:2555
+msgid "could not allocate more input memory"
+msgstr ""
+
+#: io.c:2919 io.c:2984
+#, c-format
+msgid "error reading input file `%s': %s"
+msgstr "earráid ag léamh comhad aschuir `%s': %s"
+
+#: io.c:3109
+msgid "multicharacter value of `RS' is a gawk extension"
+msgstr "is feabhsúchán gawk é an luach ilcharachtar 'RS'"
+
+#: main.c:338
+msgid "`-m[fr]' option irrelevant in gawk"
+msgstr "`-m[fr]' rogha neamhábhartha i ngawk"
+
+#: main.c:340
+msgid "-m option usage: `-m[fr] nnn'"
+msgstr "úsáid rogha -m: `-m[fr] nnn'"
+
+#: main.c:357
+#, c-format
+msgid "%s: option `-W %s' unrecognized, ignored\n"
+msgstr "%s: rogha `-W %s' anaithnid, rinneadh neamhshuim air\n"
+
+#: main.c:394
+msgid "empty argument to `--source' ignored"
+msgstr "rinneadh neamhshuim ar argóint folamh go `--source'"
+
+#: main.c:467
+msgid "environment variable `POSIXLY_CORRECT' set: turning on `--posix'"
+msgstr "athróg thimpeallachta `POSIXLY_CORRECT' socraithe: ag lasadh `--posix'"
+
+#: main.c:472
+msgid "`--posix' overrides `--traditional'"
+msgstr "sáraíonn `--posix' `--traditional'"
+
+#: main.c:483
+msgid "`--posix'/`--traditional' overrides `--non-decimal-data'"
+msgstr "sáraíonn `--posix'/`--traditional' `--non-decimal-data'"
+
+#: main.c:487
+#, fuzzy, c-format
+msgid "running %s setuid root may be a security problem"
+msgstr "seans gur neamhdhaingean é ag rith %s setuid root"
+
+#: main.c:528
+#, fuzzy, c-format
+msgid "can't set binary mode on stdin (%s)"
+msgstr "ní féidir mód a shocrú ar stdin (%s)"
+
+#: main.c:531
+#, fuzzy, c-format
+msgid "can't set binary mode on stdout (%s)"
+msgstr "ní féidir mód a shocrú ar stdout (%s)"
+
+#: main.c:533
+#, fuzzy, c-format
+msgid "can't set binary mode on stderr (%s)"
+msgstr "ní féidir mód a shocrú ar stderr (%s)"
+
+#: main.c:572
+msgid "no program text at all!"
+msgstr "níl aon téacs sa ríomhchlár!"
+
+#: main.c:665
+#, c-format
+msgid "Usage: %s [POSIX or GNU style options] -f progfile [--] file ...\n"
+msgstr ""
+"Úsáid: %s [roghanna cineál POSIX nó GNU] -f clárchomhad [--] comhad ...\n"
+
+#: main.c:667
+#, c-format
+msgid "Usage: %s [POSIX or GNU style options] [--] %cprogram%c file ...\n"
+msgstr ""
+"Úsáid: %s [roghanna cineál POSIX nó GNU] [--] %críomhchlár%c comhad ...\n"
+
+#: main.c:672
+msgid "POSIX options:\t\tGNU long options:\n"
+msgstr "roghanna POSIX:\t\tGNU roghanna fada:\n"
+
+#: main.c:673
+msgid "\t-f progfile\t\t--file=progfile\n"
+msgstr "\t-f comhad\t\t--file=progfile\n"
+
+#: main.c:674
+msgid "\t-F fs\t\t\t--field-separator=fs\n"
+msgstr "\t-F fs\t\t\t--field-separator=fs\n"
+
+#: main.c:675
+msgid "\t-v var=val\t\t--assign=var=val\n"
+msgstr "\t-v athróg=luach\t\t--assign=athróg=luach\n"
+
+#: main.c:676
+msgid "\t-m[fr] val\n"
+msgstr "\t-m[fr] luach\n"
+
+#: main.c:677
+msgid "\t-W compat\t\t--compat\n"
+msgstr "\t-W compat\t\t--compat\n"
+
+#: main.c:678
+msgid "\t-W copyleft\t\t--copyleft\n"
+msgstr "\t-W copyleft\t\t--copyleft\n"
+
+#: main.c:679
+msgid "\t-W copyright\t\t--copyright\n"
+msgstr "\t-W copyright\t\t--copyright\n"
+
+#: main.c:680
+msgid "\t-W dump-variables[=file]\t--dump-variables[=file]\n"
+msgstr "\t-W dump-variables[=comhad]\t--dump-variables[=comhad]\n"
+
+#: main.c:681
+#, fuzzy
+msgid "\t-W exec=file\t\t--exec=file\n"
+msgstr "\t-W profile[=comhad]\t--profile[=comhad]\n"
+
+#: main.c:682
+msgid "\t-W gen-po\t\t--gen-po\n"
+msgstr "\t-W gen-po\t\t--gen-po\n"
+
+#: main.c:683
+msgid "\t-W help\t\t\t--help\n"
+msgstr "\t-W help\t\t\t--help\n"
+
+#: main.c:684
+msgid "\t-W lint[=fatal]\t\t--lint[=fatal]\n"
+msgstr "\t-W lint[=fatal]\t\t--lint[=fatal]\n"
+
+#: main.c:685
+msgid "\t-W lint-old\t\t--lint-old\n"
+msgstr "\t-W lint-old\t\t--lint-old\n"
+
+#: main.c:686
+msgid "\t-W non-decimal-data\t--non-decimal-data\n"
+msgstr "\t-W non-decimal-data\t--non-decimal-data\n"
+
+#: main.c:688
+msgid "\t-W nostalgia\t\t--nostalgia\n"
+msgstr "\t-W nostalgia\t\t--nostalgia\n"
+
+#: main.c:691
+msgid "\t-W parsedebug\t\t--parsedebug\n"
+msgstr "\t-W parsedebug\t\t--parsedebug\n"
+
+#: main.c:693
+msgid "\t-W profile[=file]\t--profile[=file]\n"
+msgstr "\t-W profile[=comhad]\t--profile[=comhad]\n"
+
+#: main.c:694
+msgid "\t-W posix\t\t--posix\n"
+msgstr "\t-W posix\t\t--posix\n"
+
+#: main.c:695
+msgid "\t-W re-interval\t\t--re-interval\n"
+msgstr "\t-W re-interval\t\t--re-interval\n"
+
+#: main.c:696
+msgid "\t-W source=program-text\t--source=program-text\n"
+msgstr "\t-W source=program-text\t--source=program-text\n"
+
+#: main.c:697
+msgid "\t-W traditional\t\t--traditional\n"
+msgstr "\t-W traditional\t\t--traditional\n"
+
+#: main.c:698
+msgid "\t-W usage\t\t--usage\n"
+msgstr "\t-W usage\t\t--usage\n"
+
+#: main.c:699
+msgid "\t-W version\t\t--version\n"
+msgstr "\t-W version\t\t--version\n"
+
+#: main.c:703
+#, fuzzy
+msgid ""
+"\n"
+"To report bugs, see node `Bugs' in `gawk.info', which is\n"
+"section `Reporting Problems and Bugs' in the printed version.\n"
+"\n"
+msgstr "sa rannán `Reporting Problems and Bugs' sa leagan faoi chló.\n"
+
+#: main.c:707
+msgid ""
+"gawk is a pattern scanning and processing language.\n"
+"By default it reads standard input and writes standard output.\n"
+"\n"
+msgstr ""
+
+#: main.c:711
+msgid ""
+"Examples:\n"
+"\tgawk '{ sum += $1 }; END { print sum }' file\n"
+"\tgawk -F: '{ print $1 }' /etc/passwd\n"
+msgstr ""
+
+#: main.c:731
+#, c-format
+msgid ""
+"Copyright (C) 1989, 1991-%d Free Software Foundation.\n"
+"\n"
+"This program is free software; you can redistribute it and/or modify\n"
+"it under the terms of the GNU General Public License as published by\n"
+"the Free Software Foundation; either version 2 of the License, or\n"
+"(at your option) any later version.\n"
+"\n"
+msgstr ""
+"Copyright (C) 1989, 1991-%d Free Software Foundation.\n"
+"\n"
+"Is saorbhogearra an ríomhchlár seo; is féidir leat é a scaipeadh agus/nó\n"
+"a athrú de réir na gcoinníollacha den GNU General Public License mar atá\n"
+"foilsithe ag an Free Software Foundation; faoi leagan 2 den cheadúnas,\n"
+"nó (más mian leat) aon leagan níos déanaí.\n"
+"\n"
+
+#: main.c:739
+msgid ""
+"This program is distributed in the hope that it will be useful,\n"
+"but WITHOUT ANY WARRANTY; without even the implied warranty of\n"
+"MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n"
+"GNU General Public License for more details.\n"
+"\n"
+msgstr ""
+"Scaiptear an ríomhchlár seo le súil go mbeidh sé áisiúil,\n"
+"ach GAN AON BARÁNTA; go fiú gan an barántas intuigthe de\n"
+"INDÍOLTACHT nó FEILIÚNACHT DO FHEIDHM AR LEITH. Féach ar an\n"
+"GNU General Public License chun níos mó sonraí a fháil.\n"
+"\n"
+
+#: main.c:745
+msgid ""
+"You should have received a copy of the GNU General Public License\n"
+"along with this program; if not, write to the Free Software\n"
+"Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, "
+"USA.\n"
+msgstr ""
+"Ba chomhair go mbeifeá tar éis cóip den GNU General Public License a fháil\n"
+"in éineacht leis an ríomhchlár seo; mura bhfuair, scríobh chuig an\n"
+"Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,\n"
+"Boston, MA 02110-1301, USA.\n"
+
+#: main.c:781
+msgid "-Ft does not set FS to tab in POSIX awk"
+msgstr "ní athraíonn -Ft FS go táb san awk POSIX"
+
+#: main.c:1018
+#, c-format
+msgid ""
+"%s: `%s' argument to `-v' not in `var=value' form\n"
+"\n"
+msgstr ""
+
+#: main.c:1038
+#, c-format
+msgid "`%s' is not a legal variable name"
+msgstr ""
+
+#: main.c:1041
+#, c-format
+msgid "`%s' is not a variable name, looking for file `%s=%s'"
+msgstr ""
+
+#: main.c:1074
+msgid "floating point exception"
+msgstr "eisceacht snámhphointe"
+
+#: main.c:1081
+msgid "fatal error: internal error"
+msgstr "earráid marfach: earráid inmheánach"
+
+#: main.c:1132
+#, c-format
+msgid "no pre-opened fd %d"
+msgstr "níl aon fd %d réamhoscailte"
+
+#: main.c:1139
+#, c-format
+msgid "could not pre-open /dev/null for fd %d"
+msgstr "níorbh fhéidir /dev/null a réamhoscailt do fd %d"
+
+#: main.c:1162 main.c:1171
+#, c-format
+msgid "could not find groups: %s"
+msgstr "ní féidir na grúpaí a aimsiú: %s"
+
+#: msg.c:54
+#, c-format
+msgid "cmd. line:"
+msgstr "líne na n-orduithe:"
+
+#: msg.c:120
+msgid "warning: "
+msgstr "rabhadh: "
+
+#: msg.c:142
+msgid "error: "
+msgstr "earráid: "
+
+#: msg.c:178
+msgid "fatal: "
+msgstr "marfach: "
+
+#: node.c:59 node.c:66 node.c:75 node.c:90 node.c:119
+msgid "can't convert string to float"
+msgstr "ní féidir teaghrán a thiontú go snámhphointe"
+
+#: node.c:414
+msgid "backslash at end of string"
+msgstr "cúlslais ag deireadh an teaghráin"
+
+#: node.c:604
+msgid "POSIX does not allow `\\x' escapes"
+msgstr "ní cheadaíonn POSIX éalaithe `\\x'"
+
+#: node.c:610
+msgid "no hex digits in `\\x' escape sequence"
+msgstr "níl digití heicsidheachúlach sa seicheamh éalaithe `\\x'"
+
+#: node.c:644
+#, c-format
+msgid "escape sequence `\\%c' treated as plain `%c'"
+msgstr "seicheamh éalaithe `\\%c' úsáidte mar ghnáth `%c'"
+
+#: posix/gawkmisc.c:172
+#, c-format
+msgid "%s %s `%s': could not set close-on-exec: (fcntl: %s)"
+msgstr "%s %s `%s': níorbh fhéidir close-on-exec a shannadh: (fcntl: %s)"
+
+#: profile.c:91
+#, c-format
+msgid "could not open `%s' for writing: %s"
+msgstr "Níorbh fhéidir `%s' a oscailt chun scríoch ann: %s"
+
+#: profile.c:467
+#, fuzzy, c-format
+msgid "internal error: %s with null vname"
+msgstr "earráid inmheánach: Node_var le vname nialasacha"
+
+#: profile.c:531
+msgid "# treated internally as `delete'"
+msgstr ""
+
+#: profile.c:1168
+#, c-format
+msgid "# this is a dynamically loaded extension function"
+msgstr ""
+
+#: profile.c:1199
+#, c-format
+msgid "\t# gawk profile, created %s\n"
+msgstr "\t# cuntas gawk, cruthaíodh %s\n"
+
+#: profile.c:1202
+#, c-format
+msgid ""
+"\t# BEGIN block(s)\n"
+"\n"
+msgstr ""
+"\t# TÚS bloc(anna)\n"
+"\n"
+
+#: profile.c:1212
+#, c-format
+msgid ""
+"\t# Rule(s)\n"
+"\n"
+msgstr ""
+"\t# Riail(eacha)\n"
+"\n"
+
+#: profile.c:1218
+#, c-format
+msgid ""
+"\t# END block(s)\n"
+"\n"
+msgstr ""
+"\t# CRÍOCH bloc(anna)\n"
+"\n"
+
+#: profile.c:1238
+#, c-format
+msgid ""
+"\n"
+"\t# Functions, listed alphabetically\n"
+msgstr ""
+"\n"
+"\t# Feidhmeanna, i liosta aibítreach\n"
+
+#: profile.c:1453
+#, c-format
+msgid "unexpected type %s in prec_level"
+msgstr "cineál gan súil %s i prec_level"
+
+#: regcomp.c:160
+msgid "Success"
+msgstr "Bua!"
+
+#: regcomp.c:163
+msgid "No match"
+msgstr "Níl a leithéid ann"
+
+#: regcomp.c:166
+msgid "Invalid regular expression"
+msgstr "Slonn ionadaíochta neamhbhailí"
+
+#: regcomp.c:169
+msgid "Invalid collation character"
+msgstr "Carachtar neamhbhailí cóimheasa"
+
+#: regcomp.c:172
+msgid "Invalid character class name"
+msgstr "Aicme neamhbhailí charachtair"
+
+#: regcomp.c:175
+msgid "Trailing backslash"
+msgstr "Cúlslais ag deireadh"
+
+#: regcomp.c:178
+msgid "Invalid back reference"
+msgstr "Cúltagairt neamhbhailí"
+
+#: regcomp.c:181
+msgid "Unmatched [ or [^"
+msgstr "[ nó [^ corr"
+
+#: regcomp.c:184
+msgid "Unmatched ( or \\("
+msgstr "( nó \\( corr"
+
+#: regcomp.c:187
+msgid "Unmatched \\{"
+msgstr "\\{ corr"
+
+#: regcomp.c:190
+msgid "Invalid content of \\{\\}"
+msgstr "Inneachar neamhbhailí idir \\{\\}"
+
+#: regcomp.c:193
+msgid "Invalid range end"
+msgstr "Deireadh raoin neamhbhailí"
+
+#: regcomp.c:196
+msgid "Memory exhausted"
+msgstr "Cuimhne ídithe"
+
+#: regcomp.c:199
+msgid "Invalid preceding regular expression"
+msgstr "Is neamhbhailí an slonn ionadaíochta roimhe seo"
+
+#: regcomp.c:202
+msgid "Premature end of regular expression"
+msgstr "Deireadh le slonn ionadaíochta gan choinne"
+
+#: regcomp.c:205
+msgid "Regular expression too big"
+msgstr "Slonn ionadaíochta rómhór"
+
+#: regcomp.c:208
+msgid "Unmatched ) or \\)"
+msgstr ") nó \\) corr"
+
+#: regcomp.c:688
+msgid "No previous regular expression"
+msgstr "Níl aon slonn ionadaíochta roimhe seo"
+
+#~ msgid "function %s called\n"
+#~ msgstr "glaodh ar fheidhm %s\n"
+
+#~ msgid "delete: illegal use of variable `%s' as array"
+#~ msgstr "delete: úsáid neamhdhleathach na hathróige `%s' mar eagar"
+
+#~ msgid "asort: first argument is not an array"
+#~ msgstr "asort: ní eagar é an chéad argóint"
+
+#~ msgid "asort: second argument is not an array"
+#~ msgstr "asort: ní eagar é an dara hargóint"
+
+#~ msgid ""
+#~ "\n"
+#~ "To report bugs, see node `Bugs' in `gawk.info', which is\n"
+#~ msgstr ""
+#~ "\n"
+#~ "Chun tuairiscí fabhtanna a sheoladh, féach ar `Bugs' sa `gawk.info', atá\n"
+
+#~ msgid "invalid syntax in name `%s' for variable assignment"
+#~ msgstr "comhréir mícheart san ainm `%s' chun athróga a shannadh"
+
+#~ msgid "internal error: Node_var_array with null vname"
+#~ msgstr "earráid inmheánach: Node_var_array le vname nialasacha"
+
+#~ msgid "or used in other expression context"
+#~ msgstr "nó úsaidte i gcomhthéacs sloinn eile"
+
+#~ msgid "`%s' is a function, assignment is not allowed"
+#~ msgstr "is feidhm í `%s', ní féidir sannachán a dhéanamh"
+
+#~ msgid "BEGIN blocks must have an action part"
+#~ msgstr "tá gá le páirt gníomhach ag blocanna TÚS"
+
+#~ msgid "`nextfile' used in BEGIN or END action"
+#~ msgstr "`nextfile' á úsáid ag an gníomh TÚS nó CRÍOCH"
+
+#~ msgid "non-redirected `getline' undefined inside BEGIN or END action"
+#~ msgstr ""
+#~ "ní shannadh `getline' neamhatreoraithe lasmuigh den ghníomh TÚS nó CRÍOCH"
+
+#~ msgid "fptr %x not in tokentab\n"
+#~ msgstr "níl fptr %x ar fáil sa tháb ceadchomharthaí\n"
+
+#~ msgid "gsub third parameter is not a changeable object"
+#~ msgstr "ní oibiacht athraitheach é an tríú paraiméadar ionadaíoch gsub"
+
+# FARF - KPS
+#~ msgid "Unfinished \\ escape"
+#~ msgstr "Seicheamh éalúcháin \\ gan chríochnú"
+
+#~ msgid "unfinished repeat count"
+#~ msgstr "Tá líon na hathráite neamhiomlán"
+
+# more precisely, "the string indicating the repeat count" is malformed -- KPS
+#~ msgid "malformed repeat count"
+#~ msgstr "Tá líon na hathráite míchumtha"
+
+#~ msgid "Unbalanced ["
+#~ msgstr "[ corr"
+
+#~ msgid "Unbalanced ("
+#~ msgstr "( corr"
+
+#~ msgid "No regexp syntax bits specified"
+#~ msgstr "Níl bearta comhréire regexp sainithe"
+
+#~ msgid "Unbalanced )"
+#~ msgstr ") corr"
+
+#~ msgid "out of memory"
+#~ msgstr "cuimhne ídithe"
+
+#~ msgid "field %d in FIELDWIDTHS, must be > 0"
+#~ msgstr "caithfidh go bhfuil réimse %d i FIELDWIDTHS > 0"
+
+#~ msgid "internal error: file `%s', line %d\n"
+#~ msgstr "earráid inmheánach: comhad `%s', líne %d\n"
diff --git a/po/gawk.pot b/po/gawk.pot
index af70f827..3e8f5d13 100644
--- a/po/gawk.pot
+++ b/po/gawk.pot
@@ -8,7 +8,7 @@ msgid ""
msgstr ""
"Project-Id-Version: PACKAGE VERSION\n"
"Report-Msgid-Bugs-To: arnold@skeeve.com\n"
-"POT-Creation-Date: 2004-07-15 13:02+0300\n"
+"POT-Creation-Date: 2005-07-06 17:20+0300\n"
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
"Language-Team: LANGUAGE <LL@li.org>\n"
@@ -90,650 +90,668 @@ msgstr ""
msgid "`%s' is a built-in function, it cannot be redefined"
msgstr ""
-#: awkgram.y:314
+#: awkgram.y:313
+msgid "regexp constant `//' looks like a C++ comment, but is not"
+msgstr ""
+
+#: awkgram.y:316
#, c-format
msgid "regexp constant `/%s/' looks like a C comment, but is not"
msgstr ""
-#: awkgram.y:341 awkgram.y:619
+#: awkgram.y:343 awkgram.y:623
msgid "statement may have no effect"
msgstr ""
-#: awkgram.y:436 awkgram.y:456
+#: awkgram.y:440 awkgram.y:460
#, c-format
msgid "`%s' used in %s action"
msgstr ""
-#: awkgram.y:449 awkgram.y:452
+#: awkgram.y:453 awkgram.y:456
msgid "`nextfile' is a gawk extension"
msgstr ""
-#: awkgram.y:466
+#: awkgram.y:470
msgid "`return' used outside function context"
msgstr ""
-#: awkgram.y:508
+#: awkgram.y:512
msgid "plain `print' in BEGIN or END rule should probably be `print \"\"'"
msgstr ""
-#: awkgram.y:521 awkgram.y:528
+#: awkgram.y:525 awkgram.y:532
msgid "`delete array' is a gawk extension"
msgstr ""
-#: awkgram.y:536 awkgram.y:543
+#: awkgram.y:540 awkgram.y:547
msgid "`delete(array)' is a non-portable tawk extension"
msgstr ""
-#: awkgram.y:587
+#: awkgram.y:591
#, c-format
msgid "duplicate case values in switch body: %s"
msgstr ""
-#: awkgram.y:597
+#: awkgram.y:601
msgid "Duplicate `default' detected in switch body"
msgstr ""
-#: awkgram.y:686
+#: awkgram.y:690
msgid "multistage two-way pipelines don't work"
msgstr ""
-#: awkgram.y:777
+#: awkgram.y:781
msgid "regular expression on right of assignment"
msgstr ""
-#: awkgram.y:800
+#: awkgram.y:804
msgid "regular expression on left of `~' or `!~' operator"
msgstr ""
-#: awkgram.y:808
+#: awkgram.y:812
msgid "regular expression on right of comparison"
msgstr ""
-#: awkgram.y:875
+#: awkgram.y:879
msgid "non-redirected `getline' undefined inside END action"
msgstr ""
-#: awkgram.y:902
+#: awkgram.y:906
msgid "call of `length' without parentheses is not portable"
msgstr ""
-#: awkgram.y:905
+#: awkgram.y:909
msgid "call of `length' without parentheses is deprecated by POSIX"
msgstr ""
-#: awkgram.y:958
+#: awkgram.y:962
msgid "use of non-array as array"
msgstr ""
-#: awkgram.y:960
+#: awkgram.y:964
msgid "invalid subscript expression"
msgstr ""
-#: awkgram.y:1158
+#: awkgram.y:1171
msgid "unexpected newline or end of string"
msgstr ""
-#: awkgram.y:1254
+#: awkgram.y:1267
msgid "empty program text on command line"
msgstr ""
-#: awkgram.y:1307
+#: awkgram.y:1320
#, c-format
msgid "can't open source file `%s' for reading (%s)"
msgstr ""
-#: awkgram.y:1384
+#: awkgram.y:1397
#, c-format
msgid "can't read sourcefile `%s' (%s)"
msgstr ""
-#: awkgram.y:1392
+#: awkgram.y:1405
#, c-format
msgid "source file `%s' is empty"
msgstr ""
-#: awkgram.y:1590 awkgram.y:1700 awkgram.y:1718 awkgram.y:2068 awkgram.y:2153
+#: awkgram.y:1596 awkgram.y:1718 awkgram.y:1736 awkgram.y:2107 awkgram.y:2194
msgid "source file does not end in newline"
msgstr ""
-#: awkgram.y:1654
+#: awkgram.y:1658
msgid "unterminated regexp ends with `\\' at end of file"
msgstr ""
-#: awkgram.y:1674
+#: awkgram.y:1682
+#, c-format
+msgid "%s: %d: tawk regex modifier `/.../%c' doesn't work in gawk"
+msgstr ""
+
+#: awkgram.y:1686
+#, c-format
+msgid "tawk regex modifier `/.../%c' doesn't work in gawk"
+msgstr ""
+
+#: awkgram.y:1693
msgid "unterminated regexp"
msgstr ""
-#: awkgram.y:1677
+#: awkgram.y:1696
msgid "unterminated regexp at end of file"
msgstr ""
-#: awkgram.y:1744
+#: awkgram.y:1762
msgid "use of `\\ #...' line continuation is not portable"
msgstr ""
-#: awkgram.y:1756
+#: awkgram.y:1774
msgid "backslash not last character on line"
msgstr ""
-#: awkgram.y:1801
+#: awkgram.y:1819
msgid "POSIX does not allow operator `**='"
msgstr ""
-#: awkgram.y:1803
+#: awkgram.y:1821
msgid "old awk does not support operator `**='"
msgstr ""
-#: awkgram.y:1812
+#: awkgram.y:1830
msgid "POSIX does not allow operator `**'"
msgstr ""
-#: awkgram.y:1814
+#: awkgram.y:1832
msgid "old awk does not support operator `**'"
msgstr ""
-#: awkgram.y:1845
+#: awkgram.y:1863
msgid "operator `^=' is not supported in old awk"
msgstr ""
-#: awkgram.y:1853
+#: awkgram.y:1871
msgid "operator `^' is not supported in old awk"
msgstr ""
-#: awkgram.y:1937 awkgram.y:1954
+#: awkgram.y:1955 awkgram.y:1970
msgid "unterminated string"
msgstr ""
-#: awkgram.y:2114
+#: awkgram.y:2155
#, c-format
msgid "invalid char '%c' in expression"
msgstr ""
-#: awkgram.y:2162
+#: awkgram.y:2203
#, c-format
msgid "`%s' is a gawk extension"
msgstr ""
-#: awkgram.y:2165
+#: awkgram.y:2206
#, c-format
msgid "`%s' is a Bell Labs extension"
msgstr ""
-#: awkgram.y:2168
+#: awkgram.y:2209
#, c-format
msgid "POSIX does not allow `%s'"
msgstr ""
-#: awkgram.y:2172
+#: awkgram.y:2213
#, c-format
msgid "`%s' is not supported in old awk"
msgstr ""
-#: awkgram.y:2198
+#: awkgram.y:2239
msgid "`goto' considered harmful!\n"
msgstr ""
-#: awkgram.y:2260
+#: awkgram.y:2301
#, c-format
msgid "%d is invalid as number of arguments for %s"
msgstr ""
-#: awkgram.y:2279 awkgram.y:2282
+#: awkgram.y:2320 awkgram.y:2323
msgid "match: third argument is a gawk extension"
msgstr ""
-#: awkgram.y:2295
+#: awkgram.y:2336
#, c-format
msgid "%s: string literal as last arg of substitute has no effect"
msgstr ""
-#: awkgram.y:2298
+#: awkgram.y:2339
#, c-format
msgid "%s third parameter is not a changeable object"
msgstr ""
-#: awkgram.y:2325 awkgram.y:2328
+#: awkgram.y:2366 awkgram.y:2369
msgid "close: second argument is a gawk extension"
msgstr ""
-#: awkgram.y:2338
+#: awkgram.y:2379
msgid "use of dcgettext(_\"...\") is incorrect: remove leading underscore"
msgstr ""
-#: awkgram.y:2353
+#: awkgram.y:2394
msgid "use of dcngettext(_\"...\") is incorrect: remove leading underscore"
msgstr ""
-#: awkgram.y:2424
+#: awkgram.y:2465
#, c-format
msgid "function `%s': parameter #%d, `%s', duplicates parameter #%d"
msgstr ""
-#: awkgram.y:2457
+#: awkgram.y:2498
#, c-format
msgid "function `%s': parameter `%s' shadows global variable"
msgstr ""
-#: awkgram.y:2569
+#: awkgram.y:2610
#, c-format
msgid "could not open `%s' for writing (%s)"
msgstr ""
-#: awkgram.y:2570 profile.c:93
+#: awkgram.y:2611 profile.c:93
msgid "sending profile to standard error"
msgstr ""
-#: awkgram.y:2602
+#: awkgram.y:2643
#, c-format
msgid "%s: close failed (%s)"
msgstr ""
-#: awkgram.y:2723
+#: awkgram.y:2764
msgid "shadow_funcs() called twice!"
msgstr ""
-#: awkgram.y:2750
+#: awkgram.y:2791
msgid "there were shadowed variables."
msgstr ""
-#: awkgram.y:2823
+#: awkgram.y:2864
#, c-format
msgid "function `%s': can't use function name as parameter name"
msgstr ""
-#: awkgram.y:2833
+#: awkgram.y:2874
#, c-format
msgid "function name `%s' previously defined"
msgstr ""
-#: awkgram.y:2984 awkgram.y:2990
+#: awkgram.y:3025 awkgram.y:3031
#, c-format
msgid "function `%s' called but never defined"
msgstr ""
-#: awkgram.y:2993
+#: awkgram.y:3034
#, c-format
msgid "function `%s' defined but never called"
msgstr ""
-#: awkgram.y:3020
+#: awkgram.y:3061
#, c-format
msgid "regexp constant for parameter #%d yields boolean value"
msgstr ""
-#: awkgram.y:3033
+#: awkgram.y:3105
#, c-format
msgid ""
"function `%s' called with space between name and `(',\n"
"or used as a variable or an array"
msgstr ""
-#: builtin.c:149
+#: builtin.c:145
#, c-format
msgid "%s to \"%s\" failed (%s)"
msgstr ""
-#: builtin.c:150
+#: builtin.c:146
msgid "standard output"
msgstr ""
-#: builtin.c:151
+#: builtin.c:147
msgid "reason unknown"
msgstr ""
-#: builtin.c:164
+#: builtin.c:160
msgid "exp: received non-numeric argument"
msgstr ""
-#: builtin.c:170
+#: builtin.c:166
#, c-format
msgid "exp: argument %g is out of range"
msgstr ""
-#: builtin.c:228
+#: builtin.c:224
#, c-format
msgid "fflush: cannot flush: pipe `%s' opened for reading, not writing"
msgstr ""
-#: builtin.c:231
+#: builtin.c:227
#, c-format
msgid "fflush: cannot flush: file `%s' opened for reading, not writing"
msgstr ""
-#: builtin.c:243
+#: builtin.c:239
#, c-format
msgid "fflush: `%s' is not an open file, pipe or co-process"
msgstr ""
-#: builtin.c:338
+#: builtin.c:332
msgid "index: received non-string first argument"
msgstr ""
-#: builtin.c:340
+#: builtin.c:334
msgid "index: received non-string second argument"
msgstr ""
-#: builtin.c:454
+#: builtin.c:449
msgid "int: received non-numeric argument"
msgstr ""
-#: builtin.c:471
+#: builtin.c:472
+msgid "`length(array)' is a gawk extension"
+msgstr ""
+
+#: builtin.c:481
msgid "length: received non-string argument"
msgstr ""
-#: builtin.c:487
+#: builtin.c:506
msgid "log: received non-numeric argument"
msgstr ""
-#: builtin.c:490
+#: builtin.c:509
#, c-format
msgid "log: received negative argument %g"
msgstr ""
-#: builtin.c:654 builtin.c:657
+#: builtin.c:673 builtin.c:676
msgid "must use `count$' on all formats or none"
msgstr ""
-#: builtin.c:759
+#: builtin.c:778
msgid "`$' is not permitted in awk formats"
msgstr ""
-#: builtin.c:765
+#: builtin.c:784
msgid "arg count with `$' must be > 0"
msgstr ""
-#: builtin.c:767
+#: builtin.c:786
#, c-format
msgid "arg count %ld greater than total number of supplied arguments"
msgstr ""
-#: builtin.c:769
+#: builtin.c:788
msgid "`$' not permitted after period in format"
msgstr ""
-#: builtin.c:782
+#: builtin.c:801
msgid "no `$' supplied for positional field width or precision"
msgstr ""
-#: builtin.c:848
+#: builtin.c:867
msgid "`l' is meaningless in awk formats; ignored"
msgstr ""
-#: builtin.c:852
+#: builtin.c:871
msgid "`l' is not permitted in POSIX awk formats"
msgstr ""
-#: builtin.c:863
+#: builtin.c:882
msgid "`L' is meaningless in awk formats; ignored"
msgstr ""
-#: builtin.c:867
+#: builtin.c:886
msgid "`L' is not permitted in POSIX awk formats"
msgstr ""
-#: builtin.c:878
+#: builtin.c:897
msgid "`h' is meaningless in awk formats; ignored"
msgstr ""
-#: builtin.c:882
+#: builtin.c:901
msgid "`h' is not permitted in POSIX awk formats"
msgstr ""
-#: builtin.c:1111
+#: builtin.c:1132
#, c-format
msgid "[s]printf: value %g is out of range for `%%%c' format"
msgstr ""
-#: builtin.c:1171
+#: builtin.c:1198
msgid "not enough arguments to satisfy format string"
msgstr ""
-#: builtin.c:1173
+#: builtin.c:1200
msgid "^ ran out for this one"
msgstr ""
-#: builtin.c:1178
+#: builtin.c:1205
msgid "[s]printf: format specifier does not have control letter"
msgstr ""
-#: builtin.c:1181
+#: builtin.c:1208
msgid "too many arguments supplied for format string"
msgstr ""
-#: builtin.c:1247 builtin.c:1250
+#: builtin.c:1274 builtin.c:1277
msgid "printf: no arguments"
msgstr ""
-#: builtin.c:1274
+#: builtin.c:1301
msgid "sqrt: received non-numeric argument"
msgstr ""
-#: builtin.c:1278
+#: builtin.c:1305
#, c-format
msgid "sqrt: called with negative argument %g"
msgstr ""
-#: builtin.c:1301
+#: builtin.c:1329
#, c-format
msgid "substr: start index %g is invalid, using 1"
msgstr ""
-#: builtin.c:1306
+#: builtin.c:1334
#, c-format
msgid "substr: non-integer start index %g will be truncated"
msgstr ""
-#: builtin.c:1325
+#: builtin.c:1353
#, c-format
msgid "substr: length %g is not >= 1"
msgstr ""
-#: builtin.c:1327
+#: builtin.c:1355
#, c-format
msgid "substr: length %g is not >= 0"
msgstr ""
-#: builtin.c:1334
+#: builtin.c:1362
#, c-format
msgid "substr: non-integer length %g will be truncated"
msgstr ""
-#: builtin.c:1339
+#: builtin.c:1367
#, c-format
msgid "substr: length %g too big for string indexing, truncating to %g"
msgstr ""
-#: builtin.c:1351
+#: builtin.c:1379
msgid "substr: source string is zero length"
msgstr ""
-#: builtin.c:1357
+#: builtin.c:1395
#, c-format
msgid "substr: start index %g is past end of string"
msgstr ""
-#: builtin.c:1365
+#: builtin.c:1403
#, c-format
msgid ""
"substr: length %g at start index %g exceeds length of first argument (%lu)"
msgstr ""
-#: builtin.c:1400
+#: builtin.c:1478
msgid "strftime: received non-string first argument"
msgstr ""
-#: builtin.c:1406
+#: builtin.c:1484
msgid "strftime: received empty format string"
msgstr ""
-#: builtin.c:1415
+#: builtin.c:1493
msgid "strftime: received non-numeric second argument"
msgstr ""
-#: builtin.c:1478
+#: builtin.c:1556
msgid "mktime: received non-string argument"
msgstr ""
-#: builtin.c:1523
+#: builtin.c:1601
msgid "system: received non-string argument"
msgstr ""
-#: builtin.c:1644 eval.c:2019
+#: builtin.c:1722 eval.c:2039
#, c-format
msgid "reference to uninitialized field `$%d'"
msgstr ""
-#: builtin.c:1671
+#: builtin.c:1827
msgid "tolower: received non-string argument"
msgstr ""
-#: builtin.c:1720
+#: builtin.c:1857
msgid "toupper: received non-string argument"
msgstr ""
-#: builtin.c:1765
+#: builtin.c:1890
msgid "atan2: received non-numeric first argument"
msgstr ""
-#: builtin.c:1767
+#: builtin.c:1892
msgid "atan2: received non-numeric second argument"
msgstr ""
-#: builtin.c:1786
+#: builtin.c:1911
msgid "sin: received non-numeric argument"
msgstr ""
-#: builtin.c:1802
+#: builtin.c:1927
msgid "cos: received non-numeric argument"
msgstr ""
-#: builtin.c:1852
+#: builtin.c:1977
msgid "srand: received non-numeric argument"
msgstr ""
-#: builtin.c:1887
+#: builtin.c:2012
msgid "match: third argument is not an array"
msgstr ""
-#: builtin.c:2414
+#: builtin.c:2555
msgid "gensub: third argument of 0 treated as 1"
msgstr ""
-#: builtin.c:2572
+#: builtin.c:2715
msgid "lshift: received non-numeric first argument"
msgstr ""
-#: builtin.c:2574
+#: builtin.c:2717
msgid "lshift: received non-numeric second argument"
msgstr ""
-#: builtin.c:2580
+#: builtin.c:2723
#, c-format
msgid "lshift(%lf, %lf): negative values will give strange results"
msgstr ""
-#: builtin.c:2582
+#: builtin.c:2725
#, c-format
msgid "lshift(%lf, %lf): fractional values will be truncated"
msgstr ""
-#: builtin.c:2584
+#: builtin.c:2727
#, c-format
msgid "lshift(%lf, %lf): too large shift value will give strange results"
msgstr ""
-#: builtin.c:2610
+#: builtin.c:2753
msgid "rshift: received non-numeric first argument"
msgstr ""
-#: builtin.c:2612
+#: builtin.c:2755
msgid "rshift: received non-numeric second argument"
msgstr ""
-#: builtin.c:2618
+#: builtin.c:2761
#, c-format
msgid "rshift(%lf, %lf): negative values will give strange results"
msgstr ""
-#: builtin.c:2620
+#: builtin.c:2763
#, c-format
msgid "rshift(%lf, %lf): fractional values will be truncated"
msgstr ""
-#: builtin.c:2622
+#: builtin.c:2765
#, c-format
msgid "rshift(%lf, %lf): too large shift value will give strange results"
msgstr ""
-#: builtin.c:2648
+#: builtin.c:2791
msgid "and: received non-numeric first argument"
msgstr ""
-#: builtin.c:2650
+#: builtin.c:2793
msgid "and: received non-numeric second argument"
msgstr ""
-#: builtin.c:2656
+#: builtin.c:2799
#, c-format
msgid "and(%lf, %lf): negative values will give strange results"
msgstr ""
-#: builtin.c:2658
+#: builtin.c:2801
#, c-format
msgid "and(%lf, %lf): fractional values will be truncated"
msgstr ""
-#: builtin.c:2684
+#: builtin.c:2827
msgid "or: received non-numeric first argument"
msgstr ""
-#: builtin.c:2686
+#: builtin.c:2829
msgid "or: received non-numeric second argument"
msgstr ""
-#: builtin.c:2692
+#: builtin.c:2835
#, c-format
msgid "or(%lf, %lf): negative values will give strange results"
msgstr ""
-#: builtin.c:2694
+#: builtin.c:2837
#, c-format
msgid "or(%lf, %lf): fractional values will be truncated"
msgstr ""
-#: builtin.c:2720
+#: builtin.c:2863
msgid "xor: received non-numeric first argument"
msgstr ""
-#: builtin.c:2722
+#: builtin.c:2865
msgid "xor: received non-numeric second argument"
msgstr ""
-#: builtin.c:2728
+#: builtin.c:2871
#, c-format
msgid "xor(%lf, %lf): negative values will give strange results"
msgstr ""
-#: builtin.c:2730
+#: builtin.c:2873
#, c-format
msgid "xor(%lf, %lf): fractional values will be truncated"
msgstr ""
-#: builtin.c:2754
+#: builtin.c:2897
msgid "compl: received non-numeric argument"
msgstr ""
-#: builtin.c:2760
+#: builtin.c:2903
#, c-format
msgid "compl(%lf): negative value will give strange results"
msgstr ""
-#: builtin.c:2762
+#: builtin.c:2905
#, c-format
msgid "compl(%lf): fractional value will be truncated"
msgstr ""
-#: builtin.c:2935
+#: builtin.c:3078
#, c-format
msgid "dcgettext: `%s' is not a valid locale category"
msgstr ""
@@ -743,120 +761,115 @@ msgstr ""
msgid "unknown nodetype %d"
msgstr ""
-#: eval.c:350
+#: eval.c:353
msgid "buffer overflow in genflags2str"
msgstr ""
-#: eval.c:382 eval.c:388 profile.c:837
+#: eval.c:385 eval.c:391 profile.c:838
#, c-format
msgid "attempt to use array `%s' in a scalar context"
msgstr ""
-#: eval.c:730
+#: eval.c:733
#, c-format
msgid "for loop: array `%s' changed size from %ld to %ld during loop execution"
msgstr ""
-#: eval.c:751
+#: eval.c:754
msgid "`break' outside a loop is not portable"
msgstr ""
-#: eval.c:755
+#: eval.c:758
msgid "`break' outside a loop is not allowed"
msgstr ""
-#: eval.c:772
+#: eval.c:775
msgid "`continue' outside a loop is not portable"
msgstr ""
-#: eval.c:776
+#: eval.c:779
msgid "`continue' outside a loop is not allowed"
msgstr ""
-#: eval.c:810
+#: eval.c:813
msgid "`next' cannot be called from a BEGIN rule"
msgstr ""
-#: eval.c:812
+#: eval.c:815
msgid "`next' cannot be called from an END rule"
msgstr ""
-#: eval.c:821
+#: eval.c:824
msgid "`nextfile' cannot be called from a BEGIN rule"
msgstr ""
-#: eval.c:823
+#: eval.c:826
msgid "`nextfile' cannot be called from an END rule"
msgstr ""
-#: eval.c:872
+#: eval.c:875
msgid "statement has no effect"
msgstr ""
-#: eval.c:915 eval.c:1873
+#: eval.c:952 eval.c:1893
#, c-format
msgid "can't use function name `%s' as variable or array"
msgstr ""
-#: eval.c:922 eval.c:928
+#: eval.c:959 eval.c:965
#, c-format
msgid "reference to uninitialized argument `%s'"
msgstr ""
-#: eval.c:937 eval.c:1882
+#: eval.c:974 eval.c:1902
#, c-format
msgid "reference to uninitialized variable `%s'"
msgstr ""
-#: eval.c:1083
+#: eval.c:1120
msgid ""
"concatenation: side effects in one expression have changed the length of "
"another!"
msgstr ""
-#: eval.c:1162
+#: eval.c:1200
msgid "assignment used in conditional context"
msgstr ""
-#: eval.c:1252
+#: eval.c:1278
msgid "division by zero attempted"
msgstr ""
-#: eval.c:1267
+#: eval.c:1293
#, c-format
msgid "division by zero attempted in `%%'"
msgstr ""
-#: eval.c:1282 profile.c:713
+#: eval.c:1308 profile.c:714
#, c-format
msgid "illegal type (%s) in tree_eval"
msgstr ""
-#: eval.c:1459
+#: eval.c:1471
msgid "division by zero attempted in `/='"
msgstr ""
-#: eval.c:1477
+#: eval.c:1493
#, c-format
msgid "division by zero attempted in `%%='"
msgstr ""
-#: eval.c:1738
+#: eval.c:1758
#, c-format
msgid "function `%s' called with more arguments than declared"
msgstr ""
-#: eval.c:1782
+#: eval.c:1802
#, c-format
msgid "function `%s' not defined"
msgstr ""
-#: eval.c:1788
-#, c-format
-msgid "function %s called\n"
-msgstr ""
-
-#: eval.c:1845
+#: eval.c:1865
#, c-format
msgid ""
"\n"
@@ -864,42 +877,42 @@ msgid ""
"\n"
msgstr ""
-#: eval.c:1848
+#: eval.c:1868
#, c-format
msgid "\t# -- main --\n"
msgstr ""
-#: eval.c:2003
+#: eval.c:2023
msgid "attempt to field reference from non-numeric value"
msgstr ""
-#: eval.c:2005
+#: eval.c:2025
msgid "attempt to reference from null string"
msgstr ""
-#: eval.c:2011
+#: eval.c:2031
#, c-format
msgid "attempt to access field %d"
msgstr ""
-#: eval.c:2032 eval.c:2039 profile.c:934
+#: eval.c:2052 eval.c:2059 profile.c:935
msgid "assignment is not allowed to result of builtin function"
msgstr ""
-#: eval.c:2103
+#: eval.c:2123
msgid "`IGNORECASE' is a gawk extension"
msgstr ""
-#: eval.c:2133
+#: eval.c:2153
msgid "`BINMODE' is a gawk extension"
msgstr ""
-#: eval.c:2255
+#: eval.c:2275
#, c-format
msgid "bad `%sFMT' specification `%s'"
msgstr ""
-#: eval.c:2333
+#: eval.c:2353
msgid "turning off `--lint' due to assignment to `LINT'"
msgstr ""
@@ -948,7 +961,7 @@ msgstr ""
#: ext.c:201
#, c-format
-msgid "function `%s' defined to take no more than `%d' argument(s)"
+msgid "function `%s' defined to take no more than %d argument(s)"
msgstr ""
#: ext.c:204
@@ -970,542 +983,546 @@ msgstr ""
msgid "Operation Not Supported"
msgstr ""
-#: field.c:315
+#: field.c:326
msgid "NF set to negative value"
msgstr ""
-#: field.c:808
+#: field.c:819
msgid "split: second argument is not an array"
msgstr ""
-#: field.c:842
+#: field.c:853
msgid "split: null string for third arg is a gawk extension"
msgstr ""
-#: field.c:894
+#: field.c:905
msgid "`FIELDWIDTHS' is a gawk extension"
msgstr ""
-#: field.c:921
+#: field.c:935 field.c:946
#, c-format
-msgid "field %d in FIELDWIDTHS, must be > 0"
+msgid "invalid FIELDWIDTHS value, near `%s'"
msgstr ""
-#: field.c:994
+#: field.c:1027
msgid "null string for `FS' is a gawk extension"
msgstr ""
-#: getopt.c:692 getopt.c:711
+#: getopt.c:571 getopt.c:590
#, c-format
msgid "%s: option `%s' is ambiguous\n"
msgstr ""
-#: getopt.c:744 getopt.c:748
+#: getopt.c:623 getopt.c:627
#, c-format
msgid "%s: option `--%s' doesn't allow an argument\n"
msgstr ""
-#: getopt.c:757 getopt.c:762
+#: getopt.c:636 getopt.c:641
#, c-format
msgid "%s: option `%c%s' doesn't allow an argument\n"
msgstr ""
-#: getopt.c:807 getopt.c:829 getopt.c:1159 getopt.c:1181
+#: getopt.c:687 getopt.c:709 getopt.c:1040 getopt.c:1062
#, c-format
msgid "%s: option `%s' requires an argument\n"
msgstr ""
-#: getopt.c:867 getopt.c:870
+#: getopt.c:747 getopt.c:750
#, c-format
msgid "%s: unrecognized option `--%s'\n"
msgstr ""
-#: getopt.c:878 getopt.c:881
+#: getopt.c:758 getopt.c:761
#, c-format
msgid "%s: unrecognized option `%c%s'\n"
msgstr ""
-#: getopt.c:936 getopt.c:939
+#: getopt.c:816 getopt.c:819
#, c-format
msgid "%s: illegal option -- %c\n"
msgstr ""
-#: getopt.c:945 getopt.c:948
+#: getopt.c:825 getopt.c:828
#, c-format
msgid "%s: invalid option -- %c\n"
msgstr ""
-#: getopt.c:1003 getopt.c:1022 getopt.c:1234 getopt.c:1255 main.c:433
+#: getopt.c:883 getopt.c:902 getopt.c:1115 getopt.c:1136 main.c:448
#, c-format
msgid "%s: option requires an argument -- %c\n"
msgstr ""
-#: getopt.c:1074 getopt.c:1093
+#: getopt.c:955 getopt.c:974
#, c-format
msgid "%s: option `-W %s' is ambiguous\n"
msgstr ""
-#: getopt.c:1117 getopt.c:1138
+#: getopt.c:998 getopt.c:1019
#, c-format
msgid "%s: option `-W %s' doesn't allow an argument\n"
msgstr ""
-#: io.c:308
+#: io.c:307
#, c-format
msgid "cannot open file `%s' for reading (%s)"
msgstr ""
-#: io.c:395
+#: io.c:398
#, c-format
msgid "close of fd %d (`%s') failed (%s)"
msgstr ""
-#: io.c:533
+#: io.c:536
#, c-format
msgid "invalid tree type %s in redirect()"
msgstr ""
-#: io.c:539
+#: io.c:542
#, c-format
msgid "expression in `%s' redirection only has numeric value"
msgstr ""
-#: io.c:545
+#: io.c:548
#, c-format
msgid "expression for `%s' redirection has null string value"
msgstr ""
-#: io.c:550
+#: io.c:553
#, c-format
msgid "filename `%s' for `%s' redirection may be result of logical expression"
msgstr ""
-#: io.c:588
+#: io.c:591
#, c-format
msgid "unnecessary mixing of `>' and `>>' for file `%.*s'"
msgstr ""
-#: io.c:640
+#: io.c:643
#, c-format
msgid "can't open pipe `%s' for output (%s)"
msgstr ""
-#: io.c:649
+#: io.c:652
#, c-format
msgid "can't open pipe `%s' for input (%s)"
msgstr ""
-#: io.c:662
+#: io.c:665
#, c-format
msgid "can't open two way socket `%s' for input/output (%s)"
msgstr ""
-#: io.c:666
+#: io.c:669
#, c-format
msgid "can't open two way pipe `%s' for input/output (%s)"
msgstr ""
-#: io.c:742
+#: io.c:745
#, c-format
msgid "can't redirect from `%s' (%s)"
msgstr ""
-#: io.c:745
+#: io.c:748
#, c-format
msgid "can't redirect to `%s' (%s)"
msgstr ""
-#: io.c:784
+#: io.c:787
msgid ""
"reached system limit for open files: starting to multiplex file descriptors"
msgstr ""
-#: io.c:800
+#: io.c:803
#, c-format
msgid "close of `%s' failed (%s)."
msgstr ""
-#: io.c:808
+#: io.c:811
msgid "too many pipes or input files open"
msgstr ""
-#: io.c:831
+#: io.c:834
msgid "close: second argument must be `to' or `from'"
msgstr ""
-#: io.c:845
+#: io.c:848
#, c-format
msgid "close: `%.*s' is not an open file, pipe or co-process"
msgstr ""
-#: io.c:849
+#: io.c:852
msgid "close of redirection that was never opened"
msgstr ""
-#: io.c:945
+#: io.c:948
#, c-format
msgid "close: redirection `%s' not opened with `|&', second argument ignored"
msgstr ""
-#: io.c:960
+#: io.c:964
#, c-format
msgid "failure status (%d) on pipe close of `%s' (%s)"
msgstr ""
-#: io.c:963
+#: io.c:967
#, c-format
msgid "failure status (%d) on file close of `%s' (%s)"
msgstr ""
-#: io.c:983
+#: io.c:987
#, c-format
msgid "no explicit close of socket `%s' provided"
msgstr ""
-#: io.c:986
+#: io.c:990
#, c-format
msgid "no explicit close of co-process `%s' provided"
msgstr ""
-#: io.c:989
+#: io.c:993
#, c-format
msgid "no explicit close of pipe `%s' provided"
msgstr ""
-#: io.c:992
+#: io.c:996
#, c-format
msgid "no explicit close of file `%s' provided"
msgstr ""
-#: io.c:1021 io.c:1075
+#: io.c:1025 io.c:1080 main.c:718 main.c:756
#, c-format
msgid "error writing standard output (%s)"
msgstr ""
-#: io.c:1025 io.c:1079
+#: io.c:1029 io.c:1085
#, c-format
msgid "error writing standard error (%s)"
msgstr ""
-#: io.c:1033
+#: io.c:1037
#, c-format
msgid "pipe flush of `%s' failed (%s)."
msgstr ""
-#: io.c:1036
+#: io.c:1040
#, c-format
msgid "co-process flush of pipe to `%s' failed (%s)."
msgstr ""
-#: io.c:1039
+#: io.c:1043
#, c-format
msgid "file flush of `%s' failed (%s)."
msgstr ""
-#: io.c:1198
+#: io.c:1205
msgid "/inet/raw client not ready yet, sorry"
msgstr ""
-#: io.c:1200 io.c:1237
+#: io.c:1207 io.c:1244
msgid "only root may use `/inet/raw'."
msgstr ""
-#: io.c:1235
+#: io.c:1242
msgid "/inet/raw server not ready yet, sorry"
msgstr ""
-#: io.c:1325
+#: io.c:1332
#, c-format
msgid "no (known) protocol supplied in special filename `%s'"
msgstr ""
-#: io.c:1343
+#: io.c:1350
#, c-format
msgid "special file name `%s' is incomplete"
msgstr ""
-#: io.c:1355
+#: io.c:1362
#, c-format
msgid "local port invalid in `%s'"
msgstr ""
-#: io.c:1367
+#: io.c:1374
msgid "must supply a remote hostname to `/inet'"
msgstr ""
-#: io.c:1382
+#: io.c:1389
msgid "must supply a remote port to `/inet'"
msgstr ""
-#: io.c:1388
+#: io.c:1395
#, c-format
msgid "remote port invalid in `%s'"
msgstr ""
-#: io.c:1398
+#: io.c:1405
msgid "TCP/IP communications are not supported"
msgstr ""
-#: io.c:1407 io.c:1588
+#: io.c:1414 io.c:1595
#, c-format
msgid "file `%s' is a directory"
msgstr ""
-#: io.c:1477
+#: io.c:1484
#, c-format
msgid "use `PROCINFO[\"%s\"]' instead of `%s'"
msgstr ""
-#: io.c:1509
+#: io.c:1516
msgid "use `PROCINFO[...]' instead of `/dev/user'"
msgstr ""
-#: io.c:1574 io.c:1748
+#: io.c:1581 io.c:1763
#, c-format
msgid "could not open `%s', mode `%s'"
msgstr ""
-#: io.c:1799
+#: io.c:1814
#, c-format
msgid "close of master pty failed (%s)"
msgstr ""
-#: io.c:1801 io.c:1953 io.c:2105
+#: io.c:1816 io.c:1968 io.c:2119
#, c-format
msgid "close of stdout in child failed (%s)"
msgstr ""
-#: io.c:1804
+#: io.c:1819
#, c-format
msgid "moving slave pty to stdout in child failed (dup: %s)"
msgstr ""
-#: io.c:1806 io.c:1958
+#: io.c:1821 io.c:1973
#, c-format
msgid "close of stdin in child failed (%s)"
msgstr ""
-#: io.c:1809
+#: io.c:1824
#, c-format
msgid "moving slave pty to stdin in child failed (dup: %s)"
msgstr ""
-#: io.c:1811 io.c:1830
+#: io.c:1826 io.c:1845
#, c-format
msgid "close of slave pty failed (%s)"
msgstr ""
-#: io.c:1904 io.c:1956 io.c:2086 io.c:2108
+#: io.c:1919 io.c:1971 io.c:2100 io.c:2122
#, c-format
msgid "moving pipe to stdout in child failed (dup: %s)"
msgstr ""
-#: io.c:1908 io.c:1961
+#: io.c:1923 io.c:1976
#, c-format
msgid "moving pipe to stdin in child failed (dup: %s)"
msgstr ""
-#: io.c:1925 io.c:2099
+#: io.c:1940 io.c:2113
msgid "restoring stdout in parent process failed\n"
msgstr ""
-#: io.c:1930
+#: io.c:1945
msgid "restoring stdin in parent process failed\n"
msgstr ""
-#: io.c:1964 io.c:2110 io.c:2121
+#: io.c:1979 io.c:2124 io.c:2135
#, c-format
msgid "close of pipe failed (%s)"
msgstr ""
-#: io.c:2009
+#: io.c:2024
msgid "`|&' not supported"
msgstr ""
-#: io.c:2076
+#: io.c:2090
#, c-format
msgid "cannot open pipe `%s' (%s)"
msgstr ""
-#: io.c:2117
+#: io.c:2131
#, c-format
msgid "cannot create child process for `%s' (fork: %s)"
msgstr ""
-#: io.c:2460
+#: io.c:2506
#, c-format
msgid "data file `%s' is empty"
msgstr ""
-#: io.c:2503 io.c:2511
+#: io.c:2547 io.c:2555
msgid "could not allocate more input memory"
msgstr ""
-#: io.c:2869 io.c:2932
+#: io.c:2919 io.c:2984
#, c-format
msgid "error reading input file `%s': %s"
msgstr ""
-#: io.c:3057
+#: io.c:3109
msgid "multicharacter value of `RS' is a gawk extension"
msgstr ""
-#: main.c:323
+#: main.c:338
msgid "`-m[fr]' option irrelevant in gawk"
msgstr ""
-#: main.c:325
+#: main.c:340
msgid "-m option usage: `-m[fr] nnn'"
msgstr ""
-#: main.c:342
+#: main.c:357
#, c-format
msgid "%s: option `-W %s' unrecognized, ignored\n"
msgstr ""
-#: main.c:379
+#: main.c:394
msgid "empty argument to `--source' ignored"
msgstr ""
-#: main.c:450
+#: main.c:467
msgid "environment variable `POSIXLY_CORRECT' set: turning on `--posix'"
msgstr ""
-#: main.c:455
+#: main.c:472
msgid "`--posix' overrides `--traditional'"
msgstr ""
-#: main.c:466
+#: main.c:483
msgid "`--posix'/`--traditional' overrides `--non-decimal-data'"
msgstr ""
-#: main.c:470
+#: main.c:487
#, c-format
msgid "running %s setuid root may be a security problem"
msgstr ""
-#: main.c:511
+#: main.c:528
#, c-format
msgid "can't set binary mode on stdin (%s)"
msgstr ""
-#: main.c:514
+#: main.c:531
#, c-format
msgid "can't set binary mode on stdout (%s)"
msgstr ""
-#: main.c:516
+#: main.c:533
#, c-format
msgid "can't set binary mode on stderr (%s)"
msgstr ""
-#: main.c:546
+#: main.c:572
msgid "no program text at all!"
msgstr ""
-#: main.c:623
+#: main.c:665
#, c-format
msgid "Usage: %s [POSIX or GNU style options] -f progfile [--] file ...\n"
msgstr ""
-#: main.c:625
+#: main.c:667
#, c-format
msgid "Usage: %s [POSIX or GNU style options] [--] %cprogram%c file ...\n"
msgstr ""
-#: main.c:630
+#: main.c:672
msgid "POSIX options:\t\tGNU long options:\n"
msgstr ""
-#: main.c:631
+#: main.c:673
msgid "\t-f progfile\t\t--file=progfile\n"
msgstr ""
-#: main.c:632
+#: main.c:674
msgid "\t-F fs\t\t\t--field-separator=fs\n"
msgstr ""
-#: main.c:633
+#: main.c:675
msgid "\t-v var=val\t\t--assign=var=val\n"
msgstr ""
-#: main.c:634
+#: main.c:676
msgid "\t-m[fr] val\n"
msgstr ""
-#: main.c:635
+#: main.c:677
msgid "\t-W compat\t\t--compat\n"
msgstr ""
-#: main.c:636
+#: main.c:678
msgid "\t-W copyleft\t\t--copyleft\n"
msgstr ""
-#: main.c:637
+#: main.c:679
msgid "\t-W copyright\t\t--copyright\n"
msgstr ""
-#: main.c:638
+#: main.c:680
msgid "\t-W dump-variables[=file]\t--dump-variables[=file]\n"
msgstr ""
-#: main.c:639
+#: main.c:681
+msgid "\t-W exec=file\t\t--exec=file\n"
+msgstr ""
+
+#: main.c:682
msgid "\t-W gen-po\t\t--gen-po\n"
msgstr ""
-#: main.c:640
+#: main.c:683
msgid "\t-W help\t\t\t--help\n"
msgstr ""
-#: main.c:641
+#: main.c:684
msgid "\t-W lint[=fatal]\t\t--lint[=fatal]\n"
msgstr ""
-#: main.c:642
+#: main.c:685
msgid "\t-W lint-old\t\t--lint-old\n"
msgstr ""
-#: main.c:643
+#: main.c:686
msgid "\t-W non-decimal-data\t--non-decimal-data\n"
msgstr ""
-#: main.c:645
+#: main.c:688
msgid "\t-W nostalgia\t\t--nostalgia\n"
msgstr ""
-#: main.c:648
+#: main.c:691
msgid "\t-W parsedebug\t\t--parsedebug\n"
msgstr ""
-#: main.c:650
+#: main.c:693
msgid "\t-W profile[=file]\t--profile[=file]\n"
msgstr ""
-#: main.c:651
+#: main.c:694
msgid "\t-W posix\t\t--posix\n"
msgstr ""
-#: main.c:652
+#: main.c:695
msgid "\t-W re-interval\t\t--re-interval\n"
msgstr ""
-#: main.c:653
+#: main.c:696
msgid "\t-W source=program-text\t--source=program-text\n"
msgstr ""
-#: main.c:654
+#: main.c:697
msgid "\t-W traditional\t\t--traditional\n"
msgstr ""
-#: main.c:655
+#: main.c:698
msgid "\t-W usage\t\t--usage\n"
msgstr ""
-#: main.c:656
+#: main.c:699
msgid "\t-W version\t\t--version\n"
msgstr ""
-#: main.c:660
+#: main.c:703
msgid ""
"\n"
"To report bugs, see node `Bugs' in `gawk.info', which is\n"
@@ -1513,21 +1530,21 @@ msgid ""
"\n"
msgstr ""
-#: main.c:664
+#: main.c:707
msgid ""
"gawk is a pattern scanning and processing language.\n"
"By default it reads standard input and writes standard output.\n"
"\n"
msgstr ""
-#: main.c:668
+#: main.c:711
msgid ""
"Examples:\n"
"\tgawk '{ sum += $1 }; END { print sum }' file\n"
"\tgawk -F: '{ print $1 }' /etc/passwd\n"
msgstr ""
-#: main.c:685
+#: main.c:731
#, c-format
msgid ""
"Copyright (C) 1989, 1991-%d Free Software Foundation.\n"
@@ -1539,7 +1556,7 @@ msgid ""
"\n"
msgstr ""
-#: main.c:693
+#: main.c:739
msgid ""
"This program is distributed in the hope that it will be useful,\n"
"but WITHOUT ANY WARRANTY; without even the implied warranty of\n"
@@ -1548,53 +1565,54 @@ msgid ""
"\n"
msgstr ""
-#: main.c:699
+#: main.c:745
msgid ""
"You should have received a copy of the GNU General Public License\n"
"along with this program; if not, write to the Free Software\n"
-"Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.\n"
+"Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, "
+"USA.\n"
msgstr ""
-#: main.c:733
+#: main.c:781
msgid "-Ft does not set FS to tab in POSIX awk"
msgstr ""
-#: main.c:962
+#: main.c:1018
#, c-format
msgid ""
"%s: `%s' argument to `-v' not in `var=value' form\n"
"\n"
msgstr ""
-#: main.c:982
+#: main.c:1038
#, c-format
msgid "`%s' is not a legal variable name"
msgstr ""
-#: main.c:985
+#: main.c:1041
#, c-format
msgid "`%s' is not a variable name, looking for file `%s=%s'"
msgstr ""
-#: main.c:1018
+#: main.c:1074
msgid "floating point exception"
msgstr ""
-#: main.c:1025
+#: main.c:1081
msgid "fatal error: internal error"
msgstr ""
-#: main.c:1075
+#: main.c:1132
#, c-format
msgid "no pre-opened fd %d"
msgstr ""
-#: main.c:1082
+#: main.c:1139
#, c-format
msgid "could not pre-open /dev/null for fd %d"
msgstr ""
-#: main.c:1105 main.c:1114
+#: main.c:1162 main.c:1171
#, c-format
msgid "could not find groups: %s"
msgstr ""
@@ -1616,23 +1634,23 @@ msgstr ""
msgid "fatal: "
msgstr ""
-#: node.c:58 node.c:65 node.c:74 node.c:88 node.c:115
+#: node.c:59 node.c:66 node.c:75 node.c:90 node.c:119
msgid "can't convert string to float"
msgstr ""
-#: node.c:357
+#: node.c:414
msgid "backslash at end of string"
msgstr ""
-#: node.c:541
+#: node.c:604
msgid "POSIX does not allow `\\x' escapes"
msgstr ""
-#: node.c:547
+#: node.c:610
msgid "no hex digits in `\\x' escape sequence"
msgstr ""
-#: node.c:581
+#: node.c:644
#, c-format
msgid "escape sequence `\\%c' treated as plain `%c'"
msgstr ""
@@ -1652,121 +1670,121 @@ msgstr ""
msgid "internal error: %s with null vname"
msgstr ""
-#: profile.c:530
+#: profile.c:531
msgid "# treated internally as `delete'"
msgstr ""
-#: profile.c:1167
+#: profile.c:1168
#, c-format
msgid "# this is a dynamically loaded extension function"
msgstr ""
-#: profile.c:1198
+#: profile.c:1199
#, c-format
msgid "\t# gawk profile, created %s\n"
msgstr ""
-#: profile.c:1201
+#: profile.c:1202
#, c-format
msgid ""
"\t# BEGIN block(s)\n"
"\n"
msgstr ""
-#: profile.c:1211
+#: profile.c:1212
#, c-format
msgid ""
"\t# Rule(s)\n"
"\n"
msgstr ""
-#: profile.c:1217
+#: profile.c:1218
#, c-format
msgid ""
"\t# END block(s)\n"
"\n"
msgstr ""
-#: profile.c:1237
+#: profile.c:1238
#, c-format
msgid ""
"\n"
"\t# Functions, listed alphabetically\n"
msgstr ""
-#: profile.c:1452
+#: profile.c:1453
#, c-format
msgid "unexpected type %s in prec_level"
msgstr ""
-#: regcomp.c:150
+#: regcomp.c:160
msgid "Success"
msgstr ""
-#: regcomp.c:153
+#: regcomp.c:163
msgid "No match"
msgstr ""
-#: regcomp.c:156
+#: regcomp.c:166
msgid "Invalid regular expression"
msgstr ""
-#: regcomp.c:159
+#: regcomp.c:169
msgid "Invalid collation character"
msgstr ""
-#: regcomp.c:162
+#: regcomp.c:172
msgid "Invalid character class name"
msgstr ""
-#: regcomp.c:165
+#: regcomp.c:175
msgid "Trailing backslash"
msgstr ""
-#: regcomp.c:168
+#: regcomp.c:178
msgid "Invalid back reference"
msgstr ""
-#: regcomp.c:171
+#: regcomp.c:181
msgid "Unmatched [ or [^"
msgstr ""
-#: regcomp.c:174
+#: regcomp.c:184
msgid "Unmatched ( or \\("
msgstr ""
-#: regcomp.c:177
+#: regcomp.c:187
msgid "Unmatched \\{"
msgstr ""
-#: regcomp.c:180
+#: regcomp.c:190
msgid "Invalid content of \\{\\}"
msgstr ""
-#: regcomp.c:183
+#: regcomp.c:193
msgid "Invalid range end"
msgstr ""
-#: regcomp.c:186
+#: regcomp.c:196
msgid "Memory exhausted"
msgstr ""
-#: regcomp.c:189
+#: regcomp.c:199
msgid "Invalid preceding regular expression"
msgstr ""
-#: regcomp.c:192
+#: regcomp.c:202
msgid "Premature end of regular expression"
msgstr ""
-#: regcomp.c:195
+#: regcomp.c:205
msgid "Regular expression too big"
msgstr ""
-#: regcomp.c:198
+#: regcomp.c:208
msgid "Unmatched ) or \\)"
msgstr ""
-#: regcomp.c:668
+#: regcomp.c:688
msgid "No previous regular expression"
msgstr ""
diff --git a/po/he.gmo b/po/he.gmo
index d00c1c72..108cfd8c 100644
--- a/po/he.gmo
+++ b/po/he.gmo
Binary files differ
diff --git a/po/he.po b/po/he.po
index f9fcf280..5a3e8bf6 100644
--- a/po/he.po
+++ b/po/he.po
@@ -6,7 +6,7 @@ msgid ""
msgstr ""
"Project-Id-Version: gawk 3.1.1a\n"
"Report-Msgid-Bugs-To: arnold@skeeve.com\n"
-"POT-Creation-Date: 2004-07-15 13:02+0300\n"
+"POT-Creation-Date: 2005-07-06 17:20+0300\n"
"PO-Revision-Date: 2002-04-28 21:46+0300\n"
"Last-Translator: Eli Zaretskii <eliz@gnu.org>\n"
"Language-Team: Hebrew <eliz@gnu.org>\n"
@@ -91,280 +91,295 @@ msgstr "äìåòô úøãâä ìåìëì áééç END ÷åìá"
msgid "`%s' is a built-in function, it cannot be redefined"
msgstr "äúøãâä úà úåðùì ïéà ,úéðáåî äéö÷ðåô äðéä `%s'"
-#: awkgram.y:314
+#: awkgram.y:313
+#, fuzzy
+msgid "regexp constant `//' looks like a C++ comment, but is not"
+msgstr "äøòä åðéà êà ,C úôùá äøòä åîë äàøð `/%s/' éøìåâø éåèéá"
+
+#: awkgram.y:316
#, c-format
msgid "regexp constant `/%s/' looks like a C comment, but is not"
msgstr "äøòä åðéà êà ,C úôùá äøòä åîë äàøð `/%s/' éøìåâø éåèéá"
-#: awkgram.y:341 awkgram.y:619
+#: awkgram.y:343 awkgram.y:623
msgid "statement may have no effect"
msgstr "úéìëú íåù äéäú àì äæ éåèéáìù ïëúé"
-#: awkgram.y:436 awkgram.y:456
+#: awkgram.y:440 awkgram.y:460
#, fuzzy, c-format
msgid "`%s' used in %s action"
msgstr "END åà BEGIN ìù äìåòô úøãâäá `next'-á ùåîéù"
-#: awkgram.y:449 awkgram.y:452
+#: awkgram.y:453 awkgram.y:456
msgid "`nextfile' is a gawk extension"
msgstr "gawk-ì úéôéöôñ äáçøä åðéä `nextfile'"
-#: awkgram.y:466
+#: awkgram.y:470
msgid "`return' used outside function context"
msgstr "äéö÷ðåô ìù èñ÷èðå÷á àìù `return'-á ùåîéù"
-#: awkgram.y:508
+#: awkgram.y:512
msgid "plain `print' in BEGIN or END rule should probably be `print \"\"'"
msgstr "`print \"\"' úåéäì íúñä ïî êéøö END åà BEGIN éììëá èåùô `print'"
-#: awkgram.y:521 awkgram.y:528
+#: awkgram.y:525 awkgram.y:532
msgid "`delete array' is a gawk extension"
msgstr "gawk-ì úéôéöôñ äáçøä åðéä `delete array'"
-#: awkgram.y:536 awkgram.y:543
+#: awkgram.y:540 awkgram.y:547
#, fuzzy
msgid "`delete(array)' is a non-portable tawk extension"
msgstr "gawk-ì úéôéöôñ äáçøä åðéä `delete array'"
-#: awkgram.y:587
+#: awkgram.y:591
#, c-format
msgid "duplicate case values in switch body: %s"
msgstr ""
-#: awkgram.y:597
+#: awkgram.y:601
msgid "Duplicate `default' detected in switch body"
msgstr ""
-#: awkgram.y:686
+#: awkgram.y:690
msgid "multistage two-way pipelines don't work"
msgstr "íéãáåò íðéà íéáìù éáåøî íééðååéë-åã íé÷éôà"
-#: awkgram.y:777
+#: awkgram.y:781
msgid "regular expression on right of assignment"
msgstr "êøò úîùä úàøåä ìù ïéîé ãöá éøìåâø éåèéá"
-#: awkgram.y:800
+#: awkgram.y:804
msgid "regular expression on left of `~' or `!~' operator"
msgstr "`!~' åà `~' øåèøôåàì ìàîùî éøìåâø éåèéá"
-#: awkgram.y:808
+#: awkgram.y:812
msgid "regular expression on right of comparison"
msgstr "äàååùä ìù ïéîé ãöá éøìåâø éåèéá"
-#: awkgram.y:875
+#: awkgram.y:879
msgid "non-redirected `getline' undefined inside END action"
msgstr "END úìåòô êåúá øãâåî åðéà äééðôä àìì `getline'"
-#: awkgram.y:902
+#: awkgram.y:906
msgid "call of `length' without parentheses is not portable"
msgstr "úéìéáèøåô äðéà íééøâåñ àìì `length'-ì äàéø÷"
-#: awkgram.y:905
+#: awkgram.y:909
msgid "call of `length' without parentheses is deprecated by POSIX"
msgstr "POSIX ï÷úì ãåâéðá äðéä íééøâåñ àìì `length'-ì äàéø÷"
-#: awkgram.y:958
+#: awkgram.y:962
msgid "use of non-array as array"
msgstr ""
-#: awkgram.y:960
+#: awkgram.y:964
msgid "invalid subscript expression"
msgstr "êøòî ïééöîá éåâù øéáçú ìòá éåèéá"
-#: awkgram.y:1158
+#: awkgram.y:1171
#, fuzzy
msgid "unexpected newline or end of string"
msgstr "éåôö-éúìá íå÷îá äøåù óåñ"
-#: awkgram.y:1254
+#: awkgram.y:1267
msgid "empty program text on command line"
msgstr "äãå÷ôä úøåùî äìá÷úä ä÷éø úéðëú"
-#: awkgram.y:1307
+#: awkgram.y:1320
#, c-format
msgid "can't open source file `%s' for reading (%s)"
msgstr "åúàéø÷ íùì `%s' øå÷î õáå÷ úçéúôá (%s) äì÷ú"
-#: awkgram.y:1384
+#: awkgram.y:1397
#, c-format
msgid "can't read sourcefile `%s' (%s)"
msgstr "`%s' øå÷î õáå÷î äàéø÷á (%s) äì÷ú"
-#: awkgram.y:1392
+#: awkgram.y:1405
#, c-format
msgid "source file `%s' is empty"
msgstr "÷éø åðéä `%s' øå÷î õáå÷"
-#: awkgram.y:1590 awkgram.y:1700 awkgram.y:1718 awkgram.y:2068 awkgram.y:2153
+#: awkgram.y:1596 awkgram.y:1718 awkgram.y:1736 awkgram.y:2107 awkgram.y:2194
msgid "source file does not end in newline"
msgstr "äøåù-óåñ åúá íééúñî åðéà øå÷îä õáå÷"
-#: awkgram.y:1654
+#: awkgram.y:1658
msgid "unterminated regexp ends with `\\' at end of file"
msgstr "õáå÷ä óñá `\\'-á íééúñî øåîâ-éúìá éøìåâø éåèéá"
-#: awkgram.y:1674
+#: awkgram.y:1682
+#, c-format
+msgid "%s: %d: tawk regex modifier `/.../%c' doesn't work in gawk"
+msgstr ""
+
+#: awkgram.y:1686
+#, c-format
+msgid "tawk regex modifier `/.../%c' doesn't work in gawk"
+msgstr ""
+
+#: awkgram.y:1693
msgid "unterminated regexp"
msgstr "øåîâ-éúìá éøìåâø éåèéá"
-#: awkgram.y:1677
+#: awkgram.y:1696
msgid "unterminated regexp at end of file"
msgstr "õáå÷ä óåñá øåîâ-éúìá éøìåâø éåèéá"
-#: awkgram.y:1744
+#: awkgram.y:1762
msgid "use of `\\ #...' line continuation is not portable"
msgstr "éìéáèøåô åðéà äøåù êùîäì ïîéñë `\\ #...'-á ùåîéù"
-#: awkgram.y:1756
+#: awkgram.y:1774
msgid "backslash not last character on line"
msgstr "äøåùá ïåøçà åú åðéàù êåôä ïñëåì"
-#: awkgram.y:1801
+#: awkgram.y:1819
msgid "POSIX does not allow operator `**='"
msgstr "`**=' øåèøôåà äùøî åðéà POSIX"
-#: awkgram.y:1803
+#: awkgram.y:1821
msgid "old awk does not support operator `**='"
msgstr "`**=' øåèøôåàá êîåú åðéà ïùé awk"
-#: awkgram.y:1812
+#: awkgram.y:1830
msgid "POSIX does not allow operator `**'"
msgstr "`**' øåèøôåà äùøî åðéà POSIX"
-#: awkgram.y:1814
+#: awkgram.y:1832
msgid "old awk does not support operator `**'"
msgstr "`**' øåèøôåàá êîåú åðéà ïùé awk"
-#: awkgram.y:1845
+#: awkgram.y:1863
msgid "operator `^=' is not supported in old awk"
msgstr "ïùé awk-á êîúð åðéà `^=' øåèøôåà"
-#: awkgram.y:1853
+#: awkgram.y:1871
msgid "operator `^' is not supported in old awk"
msgstr "ïùé awk-á êîúð åðéà `^' øåèøôåà"
-#: awkgram.y:1937 awkgram.y:1954
+#: awkgram.y:1955 awkgram.y:1970
msgid "unterminated string"
msgstr "äøåîâ-éúìá úæåøçî"
-#: awkgram.y:2114
+#: awkgram.y:2155
#, c-format
msgid "invalid char '%c' in expression"
msgstr "éåèéáá '%c' éåâù åú"
-#: awkgram.y:2162
+#: awkgram.y:2203
#, c-format
msgid "`%s' is a gawk extension"
msgstr "gawk-ì úéôéöôñ äáçøä äðéä `%s'"
-#: awkgram.y:2165
+#: awkgram.y:2206
#, c-format
msgid "`%s' is a Bell Labs extension"
msgstr "Bell úåãáòî úñøâá awk-ì úéôéöôñ äáçøä åðéä `%s'"
-#: awkgram.y:2168
+#: awkgram.y:2209
#, c-format
msgid "POSIX does not allow `%s'"
msgstr "`%s' äùøî åðéà POSIX"
-#: awkgram.y:2172
+#: awkgram.y:2213
#, c-format
msgid "`%s' is not supported in old awk"
msgstr "ïùé awk-á êîúð åðéà `%s'"
-#: awkgram.y:2198
+#: awkgram.y:2239
msgid "`goto' considered harmful!\n"
msgstr "!òø-òâô áùçð `goto'\n"
-#: awkgram.y:2260
+#: awkgram.y:2301
#, c-format
msgid "%d is invalid as number of arguments for %s"
msgstr "íéèðîåâøà øôñîë %d ìá÷ì ìåëé åðéà %s"
-#: awkgram.y:2279 awkgram.y:2282
+#: awkgram.y:2320 awkgram.y:2323
msgid "match: third argument is a gawk extension"
msgstr "gawk-ì úéôéöôñ äáçøä åðéä `match' ìù éùéìù èðîåâøà"
-#: awkgram.y:2295
+#: awkgram.y:2336
#, c-format
msgid "%s: string literal as last arg of substitute has no effect"
msgstr "úéìëú íåù äì ïéà `%s' ìù ïåøçà èðîåâøàë äòåá÷ úæåøçî"
-#: awkgram.y:2298
+#: awkgram.y:2339
#, fuzzy, c-format
msgid "%s third parameter is not a changeable object"
msgstr "éåðéù-øá è÷ééáåà åðéà `sub' ìù éùéìù èðîåâøà"
-#: awkgram.y:2325 awkgram.y:2328
+#: awkgram.y:2366 awkgram.y:2369
msgid "close: second argument is a gawk extension"
msgstr "gawk-ì úéôéöôñ äáçøä åðéä `close' ìù éðù èðîåâøà"
-#: awkgram.y:2338
+#: awkgram.y:2379
msgid "use of dcgettext(_\"...\") is incorrect: remove leading underscore"
msgstr "èðîåâøà úîã÷áù ïåúçú-ó÷î ÷ìñì ùé :dcgettext(_\"...\")-á éåâù ùåîéù"
-#: awkgram.y:2353
+#: awkgram.y:2394
msgid "use of dcngettext(_\"...\") is incorrect: remove leading underscore"
msgstr "èðîåâøà úîã÷áù ïåúçú-ó÷î ÷ìñì ùé :dncgettext(_\"...\")-á éåâù ùåîéù"
-#: awkgram.y:2424
+#: awkgram.y:2465
#, c-format
msgid "function `%s': parameter #%d, `%s', duplicates parameter #%d"
msgstr "`%s' äéö÷ðåôá %d 'ñî øèîøôì ääæ ,`%s' ,%d 'ñî øèîøô ìù åîù"
-#: awkgram.y:2457
+#: awkgram.y:2498
#, c-format
msgid "function `%s': parameter `%s' shadows global variable"
msgstr "éìáåìâ äðúùî ìò ìéôàî `%s' äéö÷ðåôá `%s' øèîøô"
-#: awkgram.y:2569
+#: awkgram.y:2610
#, c-format
msgid "could not open `%s' for writing (%s)"
msgstr "äáéúë íùì `%s' úçéúôá (%s) äì÷ú"
-#: awkgram.y:2570 profile.c:93
+#: awkgram.y:2611 profile.c:93
msgid "sending profile to standard error"
msgstr "éð÷ú úåàéâù õåøòì çìùð òåöéá ìéôåøô"
-#: awkgram.y:2602
+#: awkgram.y:2643
#, c-format
msgid "%s: close failed (%s)"
msgstr "`%s' úøéâñ úòá (%s) äì÷ú"
-#: awkgram.y:2723
+#: awkgram.y:2764
msgid "shadow_funcs() called twice!"
msgstr "!íééîòô äàø÷ð shadow_funcs()"
-#: awkgram.y:2750
+#: awkgram.y:2791
msgid "there were shadowed variables."
msgstr ""
-#: awkgram.y:2823
+#: awkgram.y:2864
#, c-format
msgid "function `%s': can't use function name as parameter name"
msgstr "øèîøô íùë ùîùì ìåëé åðéà äéö÷ðåô íù :`%s' äéö÷ðåôá"
-#: awkgram.y:2833
+#: awkgram.y:2874
#, c-format
msgid "function name `%s' previously defined"
msgstr "úøãâåî øáë `%s' íùá äéö÷ðåô"
-#: awkgram.y:2984 awkgram.y:2990
+#: awkgram.y:3025 awkgram.y:3031
#, c-format
msgid "function `%s' called but never defined"
msgstr "úøãâåî äðéàù `%s' äéö÷ðåôì äàéø÷"
-#: awkgram.y:2993
+#: awkgram.y:3034
#, c-format
msgid "function `%s' defined but never called"
msgstr "úàø÷ð àì êà ,äøãâåä `%s' äéö÷ðåô"
-#: awkgram.y:3020
+#: awkgram.y:3061
#, c-format
msgid "regexp constant for parameter #%d yields boolean value"
msgstr "éðàéìåá êøò áéðî %d 'ñî øèîøôë òåá÷ éøìåâø éåèéá"
-#: awkgram.y:3033
+#: awkgram.y:3105
#, fuzzy, c-format
msgid ""
"function `%s' called with space between name and `(',\n"
@@ -373,378 +388,383 @@ msgstr ""
",`(' ïéáì äîù ïéá íéçååø íò `%s' äéö÷ðåôì äàéø÷\n"
"%s"
-#: builtin.c:149
+#: builtin.c:145
#, c-format
msgid "%s to \"%s\" failed (%s)"
msgstr "%s é\"ò \"%s\"-ì äáéúëá (%s) äì÷ú"
-#: builtin.c:150
+#: builtin.c:146
msgid "standard output"
msgstr "úéèøãðèñ èìô úãéçé"
-#: builtin.c:151
+#: builtin.c:147
msgid "reason unknown"
msgstr "äòåãé-éúìá äáéñî"
-#: builtin.c:164
+#: builtin.c:160
msgid "exp: received non-numeric argument"
msgstr "øôñî åðéà èðîåâøà :exp"
-#: builtin.c:170
+#: builtin.c:166
#, c-format
msgid "exp: argument %g is out of range"
msgstr "øúåîä íåçúá åðéà %g èðîåâøà :exp"
-#: builtin.c:228
+#: builtin.c:224
#, c-format
msgid "fflush: cannot flush: pipe `%s' opened for reading, not writing"
msgstr "äáéúëì àì ,äàéø÷ì çåúô `%s' ÷éôà :õöåçä ï÷åøì ïúéð àì :fflush"
-#: builtin.c:231
+#: builtin.c:227
#, c-format
msgid "fflush: cannot flush: file `%s' opened for reading, not writing"
msgstr "äáéúëì àì ,äàéø÷ì çåúô `%s' õáå÷ :õöåçä ï÷åøì ïúéð àì :fflush"
-#: builtin.c:243
+#: builtin.c:239
#, c-format
msgid "fflush: `%s' is not an open file, pipe or co-process"
msgstr "ìéá÷î êéìäú åà çåúô ÷éôà ,çåúô õáå÷ åðéà `%s' :fflush"
-#: builtin.c:338
+#: builtin.c:332
msgid "index: received non-string first argument"
msgstr "úæåøçî åðéà ïåùàø èðîåâøà :index"
-#: builtin.c:340
+#: builtin.c:334
msgid "index: received non-string second argument"
msgstr "úæåøçî åðéà éðù èðîåâøà :index"
-#: builtin.c:454
+#: builtin.c:449
msgid "int: received non-numeric argument"
msgstr "øôñî åðéà èðîåâøà :int"
-#: builtin.c:471
+#: builtin.c:472
+#, fuzzy
+msgid "`length(array)' is a gawk extension"
+msgstr "gawk-ì úéôéöôñ äáçøä åðéä `delete array'"
+
+#: builtin.c:481
msgid "length: received non-string argument"
msgstr "úæåøçî åðéà èðîåâøà :length"
-#: builtin.c:487
+#: builtin.c:506
msgid "log: received non-numeric argument"
msgstr "øôñî åðéà èðîåâøà :log"
-#: builtin.c:490
+#: builtin.c:509
#, c-format
msgid "log: received negative argument %g"
msgstr "%g éìéìù èðîåâøà íò àø÷ð :log"
-#: builtin.c:654 builtin.c:657
+#: builtin.c:673 builtin.c:676
msgid "must use `count$' on all formats or none"
msgstr "ãçà óàá åà íéèîøåôä ìëá åà øúåî `count$'-á ùåîéù"
-#: builtin.c:759
+#: builtin.c:778
msgid "`$' is not permitted in awk formats"
msgstr "awk ìù íéèîøåôá ùåîéùì øåñà `$'"
-#: builtin.c:765
+#: builtin.c:784
msgid "arg count with `$' must be > 0"
msgstr "0-î ìåãâ úåéäì áééç `$' ãéì èðîåâøàä äðåî"
-#: builtin.c:767
+#: builtin.c:786
#, fuzzy, c-format
msgid "arg count %ld greater than total number of supplied arguments"
msgstr "íéèðîåâøàä ìù ììåëä íøôñîî ìåãâ %d èðîåâøàä äðåî"
-#: builtin.c:769
+#: builtin.c:788
msgid "`$' not permitted after period in format"
msgstr "èîøåôá äãå÷ðä éøçà òéôåäì ìåëé åðéà `$'"
-#: builtin.c:782
+#: builtin.c:801
msgid "no `$' supplied for positional field width or precision"
msgstr "å÷åéã åà äãù áçåø ïééöîá èðîåâøàä äðåî øåáò `$' àöîð àì"
-#: builtin.c:848
+#: builtin.c:867
msgid "`l' is meaningless in awk formats; ignored"
msgstr "çðæåä ;awk ìù èîøåôá úåòîùî øñç åðéä `l'"
-#: builtin.c:852
+#: builtin.c:871
msgid "`l' is not permitted in POSIX awk formats"
msgstr "POSIX éô-ìò awk ìù èîøåôá òéôåäì ìåëé åðéà `l'"
-#: builtin.c:863
+#: builtin.c:882
msgid "`L' is meaningless in awk formats; ignored"
msgstr "çðæåä ;awk ìù èîøåôá úåòîùî øñç åðéä `L'"
-#: builtin.c:867
+#: builtin.c:886
msgid "`L' is not permitted in POSIX awk formats"
msgstr "POSIX éô-ìò awk ìù èîøåôá òéôåäì ìåëé åðéà `L'"
-#: builtin.c:878
+#: builtin.c:897
msgid "`h' is meaningless in awk formats; ignored"
msgstr "çðæåä ;awk ìù èîøåôá úåòîùî øñç åðéä `h'"
-#: builtin.c:882
+#: builtin.c:901
msgid "`h' is not permitted in POSIX awk formats"
msgstr "POSIX éô-ìò awk ìù èîøåôá òéôåäì ìåëé åðéà `h'"
-#: builtin.c:1111
+#: builtin.c:1132
#, c-format
msgid "[s]printf: value %g is out of range for `%%%c' format"
msgstr ""
-#: builtin.c:1171
+#: builtin.c:1198
msgid "not enough arguments to satisfy format string"
msgstr "èîøåôä øåáò íéèðîåâøà ÷éôñî ïéà"
-#: builtin.c:1173
+#: builtin.c:1200
msgid "^ ran out for this one"
msgstr "^ íéèðîåâøàä éì åøîâð ïàë"
-#: builtin.c:1178
+#: builtin.c:1205
msgid "[s]printf: format specifier does not have control letter"
msgstr "äøîää úø÷á úåà ìéëî åðéà èîøåôä :[s]printf"
-#: builtin.c:1181
+#: builtin.c:1208
msgid "too many arguments supplied for format string"
msgstr "èîøåôä øåáò íéèðîåâøà éãî øúåé"
-#: builtin.c:1247 builtin.c:1250
+#: builtin.c:1274 builtin.c:1277
msgid "printf: no arguments"
msgstr "èðîåâøà óà ïéà :printf"
-#: builtin.c:1274
+#: builtin.c:1301
msgid "sqrt: received non-numeric argument"
msgstr "øôñî åðéà èðîåâøà :sqrt"
-#: builtin.c:1278
+#: builtin.c:1305
#, c-format
msgid "sqrt: called with negative argument %g"
msgstr "%g éìéìù èðîåâøà íò àø÷ð :sqrt"
-#: builtin.c:1301
+#: builtin.c:1329
#, c-format
msgid "substr: start index %g is invalid, using 1"
msgstr "1-á óìçåä ,éåâù åðéä %g äìçúä ïééöî :substr"
-#: builtin.c:1306
+#: builtin.c:1334
#, c-format
msgid "substr: non-integer start index %g will be truncated"
msgstr "õöå÷é ,íìù øôñî åðéàù, %g äìçúä ïééöî ìù åëøò :substr"
-#: builtin.c:1325
+#: builtin.c:1353
#, fuzzy, c-format
msgid "substr: length %g is not >= 1"
msgstr "0-î ìåãâ øôñî åððéà %g êøåà :substr"
-#: builtin.c:1327
+#: builtin.c:1355
#, fuzzy, c-format
msgid "substr: length %g is not >= 0"
msgstr "0-î ìåãâ øôñî åððéà %g êøåà :substr"
-#: builtin.c:1334
+#: builtin.c:1362
#, c-format
msgid "substr: non-integer length %g will be truncated"
msgstr "õöå÷é ,íìù øôñî åðéàù ,%g êøåà :substr"
-#: builtin.c:1339
+#: builtin.c:1367
#, c-format
msgid "substr: length %g too big for string indexing, truncating to %g"
msgstr ""
-#: builtin.c:1351
+#: builtin.c:1379
msgid "substr: source string is zero length"
msgstr "ñôà êøåàá äðéä øå÷îä úæåøçî :substr"
-#: builtin.c:1357
+#: builtin.c:1395
#, fuzzy, c-format
msgid "substr: start index %g is past end of string"
msgstr "úæåøçîä óåñì øáòî åðéä %d äìçúä ïééöî :substr"
-#: builtin.c:1365
+#: builtin.c:1403
#, fuzzy, c-format
msgid ""
"substr: length %g at start index %g exceeds length of first argument (%lu)"
msgstr ""
"%d äëøåàå %d ïééöîá äúìéçúù úæåøçî-úúì ÷éôñî åðéà (%d) úæåøçî êøåà :substr"
-#: builtin.c:1400
+#: builtin.c:1478
msgid "strftime: received non-string first argument"
msgstr "úæåøçî åðéà ïåùàø èðîåâøà :strftime"
-#: builtin.c:1406
+#: builtin.c:1484
msgid "strftime: received empty format string"
msgstr "ä÷éø èîøåô úæåøçî :strftime"
-#: builtin.c:1415
+#: builtin.c:1493
msgid "strftime: received non-numeric second argument"
msgstr "øôñî åðéà éðù èðîåâøà :strftime"
-#: builtin.c:1478
+#: builtin.c:1556
msgid "mktime: received non-string argument"
msgstr "úæåøçî åðéà èðîåâøà :mktime"
-#: builtin.c:1523
+#: builtin.c:1601
msgid "system: received non-string argument"
msgstr "úæåøçî åðéà èðîåâøà :system"
-#: builtin.c:1644 eval.c:2019
+#: builtin.c:1722 eval.c:2039
#, fuzzy, c-format
msgid "reference to uninitialized field `$%d'"
msgstr "`%s' ìçåúî-éúìá äðúùîì äéðôä"
-#: builtin.c:1671
+#: builtin.c:1827
msgid "tolower: received non-string argument"
msgstr "úæåøçî åðéà èðîåâøà :tolower"
-#: builtin.c:1720
+#: builtin.c:1857
msgid "toupper: received non-string argument"
msgstr "úæåøçî åðéà èðîåâøà :toupper"
-#: builtin.c:1765
+#: builtin.c:1890
msgid "atan2: received non-numeric first argument"
msgstr "øôñî åðéà ïåùàø èðîåâøà :atan2"
-#: builtin.c:1767
+#: builtin.c:1892
msgid "atan2: received non-numeric second argument"
msgstr "øôñî åðéà éðù èðîåâøà :atan2"
-#: builtin.c:1786
+#: builtin.c:1911
msgid "sin: received non-numeric argument"
msgstr "øôñî åðéà èðîåâøà :sin"
-#: builtin.c:1802
+#: builtin.c:1927
msgid "cos: received non-numeric argument"
msgstr "øôñî åðéà èðîåâøà :cos"
-#: builtin.c:1852
+#: builtin.c:1977
msgid "srand: received non-numeric argument"
msgstr "øôñî åðéà èðîåâøà :srand"
-#: builtin.c:1887
+#: builtin.c:2012
msgid "match: third argument is not an array"
msgstr "êøòî åðéà éùéìù èðîåâøà :match"
-#: builtin.c:2414
+#: builtin.c:2555
msgid "gensub: third argument of 0 treated as 1"
msgstr "1-á óìçåä 0 åëøòù éùéìù èðîåâøà :gensub"
-#: builtin.c:2572
+#: builtin.c:2715
msgid "lshift: received non-numeric first argument"
msgstr "øôñî åðéà ïåùàø èðîåâøà :lshift"
-#: builtin.c:2574
+#: builtin.c:2717
#, fuzzy
msgid "lshift: received non-numeric second argument"
msgstr "øôñî åðéà éðù èðîåâøà :strftime"
-#: builtin.c:2580
+#: builtin.c:2723
#, c-format
msgid "lshift(%lf, %lf): negative values will give strange results"
msgstr "úåéåôö-éúìá úåàöåú åáéðé íééìéìù íéëøò :lshift(%lf, %lf)"
-#: builtin.c:2582
+#: builtin.c:2725
#, c-format
msgid "lshift(%lf, %lf): fractional values will be truncated"
msgstr "åööå÷é íéøåáù íéëøò :lshift(%lf, %lf)"
-#: builtin.c:2584
+#: builtin.c:2727
#, c-format
msgid "lshift(%lf, %lf): too large shift value will give strange results"
msgstr "úåéåôö-éúìá úåàöåú áéðé éãî ìåãâ äææä øåòéù :lshift(%lf, %lf)"
-#: builtin.c:2610
+#: builtin.c:2753
msgid "rshift: received non-numeric first argument"
msgstr "øôñî åðéà ïåùàø èðîåâøà :rshift"
-#: builtin.c:2612
+#: builtin.c:2755
#, fuzzy
msgid "rshift: received non-numeric second argument"
msgstr "øôñî åðéà éðù èðîåâøà :strftime"
-#: builtin.c:2618
+#: builtin.c:2761
#, c-format
msgid "rshift(%lf, %lf): negative values will give strange results"
msgstr "úåéåôö-éúìá úåàöåú åáéðé íééìéìù íéëøò :rshift(%lf, %lf)"
-#: builtin.c:2620
+#: builtin.c:2763
#, c-format
msgid "rshift(%lf, %lf): fractional values will be truncated"
msgstr "åööå÷é íéøåáù íéëøò :rshift(%lf, %lf)"
-#: builtin.c:2622
+#: builtin.c:2765
#, c-format
msgid "rshift(%lf, %lf): too large shift value will give strange results"
msgstr "úåéåôö-éúìá úåàöåú áéðé éãî ìåãâ äææä øåòéù :rshift(%lf, %lf)"
-#: builtin.c:2648
+#: builtin.c:2791
msgid "and: received non-numeric first argument"
msgstr "øôñî åðéà ïåùàø èðîåâøà :and"
-#: builtin.c:2650
+#: builtin.c:2793
#, fuzzy
msgid "and: received non-numeric second argument"
msgstr "øôñî åðéà éðù èðîåâøà :atan2"
-#: builtin.c:2656
+#: builtin.c:2799
#, c-format
msgid "and(%lf, %lf): negative values will give strange results"
msgstr "úåéåôö-éúìá úåàöåú åáéðé íééìéìù íéëøò :and(%lf, %lf)"
-#: builtin.c:2658
+#: builtin.c:2801
#, c-format
msgid "and(%lf, %lf): fractional values will be truncated"
msgstr "åööå÷é íéøåáù íéëøò :and(%lf, %lf)"
-#: builtin.c:2684
+#: builtin.c:2827
msgid "or: received non-numeric first argument"
msgstr "øôñî åðéà ïåùàø èðîåâøà :or"
-#: builtin.c:2686
+#: builtin.c:2829
#, fuzzy
msgid "or: received non-numeric second argument"
msgstr "øôñî åðéà éðù èðîåâøà :atan2"
-#: builtin.c:2692
+#: builtin.c:2835
#, c-format
msgid "or(%lf, %lf): negative values will give strange results"
msgstr "úåéåôö-éúìá úåàöåú åáéðé íééìéìù íéëøò :or(%lf, %lf)"
-#: builtin.c:2694
+#: builtin.c:2837
#, c-format
msgid "or(%lf, %lf): fractional values will be truncated"
msgstr "åööå÷é íéøåáù íéëøò :or(%lf, %lf)"
-#: builtin.c:2720
+#: builtin.c:2863
msgid "xor: received non-numeric first argument"
msgstr "øôñî åðéà ïåùàø èðîåâøà :xor"
-#: builtin.c:2722
+#: builtin.c:2865
#, fuzzy
msgid "xor: received non-numeric second argument"
msgstr "øôñî åðéà éðù èðîåâøà :atan2"
-#: builtin.c:2728
+#: builtin.c:2871
#, c-format
msgid "xor(%lf, %lf): negative values will give strange results"
msgstr "úåéåôö-éúìá úåàöåú åáéðé íééìéìù íéëøò :xor(%lf, %lf)"
-#: builtin.c:2730
+#: builtin.c:2873
#, c-format
msgid "xor(%lf, %lf): fractional values will be truncated"
msgstr "åööå÷é íéøåáù íéëøò :xor(%lf, %lf)"
-#: builtin.c:2754
+#: builtin.c:2897
msgid "compl: received non-numeric argument"
msgstr "øôñî åðéà èðîåâøà :compl"
-#: builtin.c:2760
+#: builtin.c:2903
#, c-format
msgid "compl(%lf): negative value will give strange results"
msgstr "úåéåôö-éúìá úåàöåú áéðé éìéìù êøò :compl(%lf)"
-#: builtin.c:2762
+#: builtin.c:2905
#, c-format
msgid "compl(%lf): fractional value will be truncated"
msgstr "õöå÷é øåáù êøò :compl(%lf)"
-#: builtin.c:2935
+#: builtin.c:3078
#, c-format
msgid "dcgettext: `%s' is not a valid locale category"
msgstr "äðé÷ú íå÷éî úééøåâè÷ åðéà `%s' :dcgettext"
@@ -754,121 +774,116 @@ msgstr "äðé÷ú íå÷éî úééøåâè÷ åðéà `%s' :dcgettext"
msgid "unknown nodetype %d"
msgstr "%d ääåæî-éúìá âåñ ìòá node"
-#: eval.c:350
+#: eval.c:353
msgid "buffer overflow in genflags2str"
msgstr "genflags2str-á õöåç úùéìâ"
-#: eval.c:382 eval.c:388 profile.c:837
+#: eval.c:385 eval.c:391 profile.c:838
#, c-format
msgid "attempt to use array `%s' in a scalar context"
msgstr "øàì÷ñ ùøåãä èñ÷èðå÷á `%s' êøòîá ùåîéù ïåéñð"
-#: eval.c:730
+#: eval.c:733
#, fuzzy, c-format
msgid "for loop: array `%s' changed size from %ld to %ld during loop execution"
msgstr "(`%s' êøòî) äàìåìä òåöéá êìäîá %d-î %d-ì äðåù êøòî ìù åìãåâ :for úàìåì"
-#: eval.c:751
+#: eval.c:754
msgid "`break' outside a loop is not portable"
msgstr "éìéáèøåô åðéà äàìåìì õåçî `break'"
-#: eval.c:755
+#: eval.c:758
msgid "`break' outside a loop is not allowed"
msgstr "äàìåìì õåçî `break'-á ùîúùäì ïéà"
-#: eval.c:772
+#: eval.c:775
msgid "`continue' outside a loop is not portable"
msgstr "éìéáèøåô åðéà äàìåìì õåçî `continue'"
-#: eval.c:776
+#: eval.c:779
msgid "`continue' outside a loop is not allowed"
msgstr "äàìåìì õåçî `continue'-á ùîúùäì ïéà"
-#: eval.c:810
+#: eval.c:813
msgid "`next' cannot be called from a BEGIN rule"
msgstr "BEGIN éììë êåúî `next'-ì àåø÷ì ïéà"
-#: eval.c:812
+#: eval.c:815
msgid "`next' cannot be called from an END rule"
msgstr "END éììë êåúî `next'-ì àåø÷ì ïéà"
-#: eval.c:821
+#: eval.c:824
msgid "`nextfile' cannot be called from a BEGIN rule"
msgstr "BEGIN éììë êåúî `nextfile'-ì àåø÷ì ïéà"
-#: eval.c:823
+#: eval.c:826
msgid "`nextfile' cannot be called from an END rule"
msgstr "END éììë êåúî `nextfile'-ì àåø÷ì ïéà"
-#: eval.c:872
+#: eval.c:875
msgid "statement has no effect"
msgstr "úéìëú-úìåèð äàøåä"
-#: eval.c:915 eval.c:1873
+#: eval.c:952 eval.c:1893
#, c-format
msgid "can't use function name `%s' as variable or array"
msgstr "êøòî åà äðúùîë `%s' äéö÷ðåô íùá ùîúùäì ïéà"
-#: eval.c:922 eval.c:928
+#: eval.c:959 eval.c:965
#, c-format
msgid "reference to uninitialized argument `%s'"
msgstr "`%s' ìçåúî-éúìá èðîåâøàì äéðôä"
-#: eval.c:937 eval.c:1882
+#: eval.c:974 eval.c:1902
#, c-format
msgid "reference to uninitialized variable `%s'"
msgstr "`%s' ìçåúî-éúìá äðúùîì äéðôä"
-#: eval.c:1083
+#: eval.c:1120
msgid ""
"concatenation: side effects in one expression have changed the length of "
"another!"
msgstr ""
"!øçà éåèéá ìù åëøåà éåðéùì åîøâ ãçà éåèéá áåùéç ìù éàåì-úåòôåú :concatenation"
-#: eval.c:1162
+#: eval.c:1200
msgid "assignment used in conditional context"
msgstr "éàðú ìù èñ÷èðå÷á äîùäá ùåîéù"
-#: eval.c:1252
+#: eval.c:1278
msgid "division by zero attempted"
msgstr "ñôàá ä÷åìç ïåéñð"
-#: eval.c:1267
+#: eval.c:1293
#, c-format
msgid "division by zero attempted in `%%'"
msgstr "`%%'-á ñôàá ä÷åìç ïåéñð"
-#: eval.c:1282 profile.c:713
+#: eval.c:1308 profile.c:714
#, c-format
msgid "illegal type (%s) in tree_eval"
msgstr "tree_eval-á (%s) éåâù âåñ"
-#: eval.c:1459
+#: eval.c:1471
msgid "division by zero attempted in `/='"
msgstr "`/='-á ñôàá ä÷åìç ïåéñð"
-#: eval.c:1477
+#: eval.c:1493
#, c-format
msgid "division by zero attempted in `%%='"
msgstr "`%%='-á ñôàá ä÷åìç ïåéñð"
-#: eval.c:1738
+#: eval.c:1758
#, c-format
msgid "function `%s' called with more arguments than declared"
msgstr "äúæøëäá øùàî íéèðîåâøà øúåé íò `%s' äéö÷ðåôì äàéø÷"
-#: eval.c:1782
+#: eval.c:1802
#, c-format
msgid "function `%s' not defined"
msgstr "úøãâåî äðéà `%s' äéö÷ðåô"
-#: eval.c:1788
-#, c-format
-msgid "function %s called\n"
-msgstr "`%s' äéö÷ðåôì äàéø÷\n"
-
-#: eval.c:1845
+#: eval.c:1865
#, c-format
msgid ""
"\n"
@@ -879,42 +894,42 @@ msgstr ""
"\t# :úåéö÷ðåôì úåàéø÷ä úéðñçî\n"
"\n"
-#: eval.c:1848
+#: eval.c:1868
#, c-format
msgid "\t# -- main --\n"
msgstr "\t# -- main --\n"
-#: eval.c:2003
+#: eval.c:2023
msgid "attempt to field reference from non-numeric value"
msgstr "øôñî åðéàù êøò úåòöîàá äãùì äéðôä ïåéñð"
-#: eval.c:2005
+#: eval.c:2025
msgid "attempt to reference from null string"
msgstr "ä÷éø úæåøçî úåòöîàá äãùì äéðôä ïåéñð"
-#: eval.c:2011
+#: eval.c:2031
#, c-format
msgid "attempt to access field %d"
msgstr "%d 'ñî äãùì äùéâ ïåéñð"
-#: eval.c:2032 eval.c:2039 profile.c:934
+#: eval.c:2052 eval.c:2059 profile.c:935
msgid "assignment is not allowed to result of builtin function"
msgstr "úéðáåî äéö÷ðåô ìù äàöåúá êøò áéöäì ïéà"
-#: eval.c:2103
+#: eval.c:2123
msgid "`IGNORECASE' is a gawk extension"
msgstr "gawk-ì úéôéöôñ äáçøä åðéä `IGNORECASE'"
-#: eval.c:2133
+#: eval.c:2153
msgid "`BINMODE' is a gawk extension"
msgstr "gawk-ì úéôéöôñ äáçøä åðéä `BINMODE'"
-#: eval.c:2255
+#: eval.c:2275
#, c-format
msgid "bad `%sFMT' specification `%s'"
msgstr "äðé÷ú `%sFMT' úøãâä åðéà `%s'"
-#: eval.c:2333
+#: eval.c:2353
msgid "turning off `--lint' due to assignment to `LINT'"
msgstr "`LINT'-ì êøò úîùä á÷ò `--lint' ìèáî"
@@ -962,9 +977,9 @@ msgid "extension: function name `%s' previously defined"
msgstr "úøãâåî øáë `%s' íùá äéö÷ðåô"
#: ext.c:201
-#, c-format
-msgid "function `%s' defined to take no more than `%d' argument(s)"
-msgstr ""
+#, fuzzy, c-format
+msgid "function `%s' defined to take no more than %d argument(s)"
+msgstr "úàø÷ð àì êà ,äøãâåä `%s' äéö÷ðåô"
#: ext.c:204
#, fuzzy, c-format
@@ -985,550 +1000,555 @@ msgstr ""
msgid "Operation Not Supported"
msgstr "úëîúð äðéà åæ äìåòô"
-#: field.c:315
+#: field.c:326
msgid "NF set to negative value"
msgstr "éìéìù êøò ìáé÷ NF"
-#: field.c:808
+#: field.c:819
msgid "split: second argument is not an array"
msgstr "êøòî åðéà `split' ìù éðùä èðîåâøàä"
-#: field.c:842
+#: field.c:853
msgid "split: null string for third arg is a gawk extension"
msgstr "gawk-ì úéôéöôñ äáçøä äðéä `split'-ì éùéìù èðåîâøàë úñôåàî úæåøçî"
-#: field.c:894
+#: field.c:905
msgid "`FIELDWIDTHS' is a gawk extension"
msgstr "gawk-ì úéôéöôñ äáçøä åðéä `FIELDWIDTHS'"
-#: field.c:921
+#: field.c:935 field.c:946
#, c-format
-msgid "field %d in FIELDWIDTHS, must be > 0"
-msgstr "0-î ìåãâ úåéäì áééç FIELDWIDTHS-á %d 'ñî äãù"
+msgid "invalid FIELDWIDTHS value, near `%s'"
+msgstr ""
-#: field.c:994
+#: field.c:1027
msgid "null string for `FS' is a gawk extension"
msgstr "gawk-ì úéôéöôñ äáçøä äðéä `FS'-ë úñôåàî úæåøçî"
# The way the leading "%s:" is translated is a terrible kludge,
# but what can I do? FIXME.
-#: getopt.c:692 getopt.c:711
+#: getopt.c:571 getopt.c:590
#, c-format
msgid "%s: option `%s' is ambiguous\n"
msgstr "%s úéðëú øåáò éòîùî-ãç åðéà `%s' ïééôàî\n"
-#: getopt.c:744 getopt.c:748
+#: getopt.c:623 getopt.c:627
#, c-format
msgid "%s: option `--%s' doesn't allow an argument\n"
msgstr "%s úéðëú øåáò èðîåâøà ìá÷î åðéà `--%s' ïééôàî\n"
-#: getopt.c:757 getopt.c:762
+#: getopt.c:636 getopt.c:641
#, c-format
msgid "%s: option `%c%s' doesn't allow an argument\n"
msgstr "%s úéðëú øåáò èðîåâøà ìá÷î åðéà `%c%s' ïééôàî\n"
-#: getopt.c:807 getopt.c:829 getopt.c:1159 getopt.c:1181
+#: getopt.c:687 getopt.c:709 getopt.c:1040 getopt.c:1062
#, c-format
msgid "%s: option `%s' requires an argument\n"
msgstr "%s úéðëú øåáò èðîåâøà áééçî `%s' ïééôàî\n"
-#: getopt.c:867 getopt.c:870
+#: getopt.c:747 getopt.c:750
#, c-format
msgid "%s: unrecognized option `--%s'\n"
msgstr "%s úéðëú øåáò `--%s' ääåæî-éúìá ïééôàî\n"
-#: getopt.c:878 getopt.c:881
+#: getopt.c:758 getopt.c:761
#, c-format
msgid "%s: unrecognized option `%c%s'\n"
msgstr "%s úéðëú øåáò `%c%s' ääåæî-éúìá ïééôàî\n"
# "Illegal" is against GNU coding standards, but since Posix requires
# it (see the comment below), let's say that in Hebrew as well...
-#: getopt.c:936 getopt.c:939
+#: getopt.c:816 getopt.c:819
#, c-format
msgid "%s: illegal option -- %c\n"
msgstr "%s: é÷åç-éúìá ïééôàî -- %c\n"
-#: getopt.c:945 getopt.c:948
+#: getopt.c:825 getopt.c:828
#, c-format
msgid "%s: invalid option -- %c\n"
msgstr "%s úéðëú øåáò éåâù ïééôàî -- %c\n"
-#: getopt.c:1003 getopt.c:1022 getopt.c:1234 getopt.c:1255 main.c:433
+#: getopt.c:883 getopt.c:902 getopt.c:1115 getopt.c:1136 main.c:448
#, c-format
msgid "%s: option requires an argument -- %c\n"
msgstr "%s: èðîåâøà áééçî ïééôàî -- %c\n"
-#: getopt.c:1074 getopt.c:1093
+#: getopt.c:955 getopt.c:974
#, c-format
msgid "%s: option `-W %s' is ambiguous\n"
msgstr "%s úéðëú øåáò éòîùî-ãç åðéà `-W %s' ïééôàî\n"
-#: getopt.c:1117 getopt.c:1138
+#: getopt.c:998 getopt.c:1019
#, c-format
msgid "%s: option `-W %s' doesn't allow an argument\n"
msgstr "%s úéðëú øåáò èðîåâøà ìá÷î åðéà `-W %s' ïééôàî\n"
-#: io.c:308
+#: io.c:307
#, c-format
msgid "cannot open file `%s' for reading (%s)"
msgstr "åúàéø÷ íùì `%s' õáå÷ úçéúôá (%s) äì÷ú"
-#: io.c:395
+#: io.c:398
#, c-format
msgid "close of fd %d (`%s') failed (%s)"
msgstr "(%d èìô/èì÷ õåøò) `%s' úøéâñá (%s) äì÷ú"
-#: io.c:533
+#: io.c:536
#, c-format
msgid "invalid tree type %s in redirect()"
msgstr "redirect() äéö÷ðåôá %s éåâù õò âåñ"
-#: io.c:539
+#: io.c:542
#, c-format
msgid "expression in `%s' redirection only has numeric value"
msgstr "ãáìá éøîåð êøò áéðî `%s' èìô/èì÷ úééðôäá éåèéá"
-#: io.c:545
+#: io.c:548
#, c-format
msgid "expression for `%s' redirection has null string value"
msgstr "ä÷éø úæåøçî áéðî `%s' èìô/èì÷ úééðôäá éåèéá"
-#: io.c:550
+#: io.c:553
#, c-format
msgid "filename `%s' for `%s' redirection may be result of logical expression"
msgstr "éâåì éåèéá ìù äàöåú úåéäì ìåìò `%s' õáå÷ íù `%s' èìô/èì÷ úééðôäá"
-#: io.c:588
+#: io.c:591
#, c-format
msgid "unnecessary mixing of `>' and `>>' for file `%.*s'"
msgstr "`%.*s' õáå÷ øåáò `>>'-á ïäå `>'-á ïä øúåéî ùåîéù"
-#: io.c:640
+#: io.c:643
#, c-format
msgid "can't open pipe `%s' for output (%s)"
msgstr "èìô êøåöì `%s' ÷éôà úçéúôá (%s) äì÷ú"
-#: io.c:649
+#: io.c:652
#, c-format
msgid "can't open pipe `%s' for input (%s)"
msgstr "èì÷ êøåöì `%s' ÷éôà úçéúôá (%s) äì÷ú"
-#: io.c:662
+#: io.c:665
#, c-format
msgid "can't open two way socket `%s' for input/output (%s)"
msgstr "èìô/èì÷ êøåöì éðååéë-åã (socket) ò÷ùë `%s' úçéúôá (%s) äì÷ú"
-#: io.c:666
+#: io.c:669
#, c-format
msgid "can't open two way pipe `%s' for input/output (%s)"
msgstr "èìô/èì÷ êøåöì éðååéë-åã (pipe) ÷éôàë `%s' úçéúôá (%s) äì÷ú"
-#: io.c:742
+#: io.c:745
#, c-format
msgid "can't redirect from `%s' (%s)"
msgstr "`%s'-î äééðôäá (%s) äì÷ú"
-#: io.c:745
+#: io.c:748
#, c-format
msgid "can't redirect to `%s' (%s)"
msgstr "`%s' ìà äééðôäá (%s) äì÷ú"
-#: io.c:784
+#: io.c:787
msgid ""
"reached system limit for open files: starting to multiplex file descriptors"
msgstr "èìô/èì÷ éöåøò áåáéø úìéçú ;íéçåúô íéöá÷ øôñî ìù úëøòî úìáâîì äòâä"
-#: io.c:800
+#: io.c:803
#, c-format
msgid "close of `%s' failed (%s)."
msgstr "`%s' úøéâñá (%s) äì÷ú"
-#: io.c:808
+#: io.c:811
msgid "too many pipes or input files open"
msgstr "úéðîæ-åá íéçåúô èì÷ éöá÷ åà (pipes) íé÷éôà éãî øúåé"
-#: io.c:831
+#: io.c:834
msgid "close: second argument must be `to' or `from'"
msgstr "`from' åà `to' úåéäì áééç `close' ìù éðùä èðîåâøàä"
-#: io.c:845
+#: io.c:848
#, c-format
msgid "close: `%.*s' is not an open file, pipe or co-process"
msgstr "ìéá÷î êéìäú åà çåúô ÷éôà ,çåúô õáå÷ åðéà `%.*s' :close"
-#: io.c:849
+#: io.c:852
msgid "close of redirection that was never opened"
msgstr "íìåòî äçúôð àìù äééðôä úøéâñ"
-#: io.c:945
+#: io.c:948
#, c-format
msgid "close: redirection `%s' not opened with `|&', second argument ignored"
msgstr "çðæåä éðùä èðîåâøàä ,`|&' é\"ò äçúôð àì `%s' äééðôä"
-#: io.c:960
+#: io.c:964
#, c-format
msgid "failure status (%d) on pipe close of `%s' (%s)"
msgstr "(%d äì÷ú ãå÷) `%s'-ì ÷éôà úøéâñá (%s) äì÷ú"
-#: io.c:963
+#: io.c:967
#, c-format
msgid "failure status (%d) on file close of `%s' (%s)"
msgstr "(%d äì÷ú ãå÷) `%s' õáå÷ úøéâñá (%s) äì÷ú"
-#: io.c:983
+#: io.c:987
#, c-format
msgid "no explicit close of socket `%s' provided"
msgstr "ùøåôîá øâñð àì (socket) `%s' ò÷ù"
-#: io.c:986
+#: io.c:990
#, c-format
msgid "no explicit close of co-process `%s' provided"
msgstr "ùøåôîá øâñð àì (co-process) `%s' ìéá÷î êéìäú"
-#: io.c:989
+#: io.c:993
#, c-format
msgid "no explicit close of pipe `%s' provided"
msgstr "ùøåôîá øâñð àì (pipe) `%s' ÷éôà"
-#: io.c:992
+#: io.c:996
#, c-format
msgid "no explicit close of file `%s' provided"
msgstr "ùøåôîá øâñð àì `%s' õáå÷"
-#: io.c:1021 io.c:1075
+#: io.c:1025 io.c:1080 main.c:718 main.c:756
#, c-format
msgid "error writing standard output (%s)"
msgstr "éð÷ú èìô õåøòì äáéúëá (%s) äì÷ú"
-#: io.c:1025 io.c:1079
+#: io.c:1029 io.c:1085
#, c-format
msgid "error writing standard error (%s)"
msgstr "éð÷ú úåàéâù õåøòì äáéúëá (%s) äì÷ú"
-#: io.c:1033
+#: io.c:1037
#, c-format
msgid "pipe flush of `%s' failed (%s)."
msgstr "`%s'-ì ÷éôà ìù õöåç ïå÷éøá (%s) äì÷ú"
-#: io.c:1036
+#: io.c:1040
#, c-format
msgid "co-process flush of pipe to `%s' failed (%s)."
msgstr "`%s'-ì ìéá÷î êéìäú ÷éôà ìù õöåç ïå÷éøá (%s) äì÷ú"
-#: io.c:1039
+#: io.c:1043
#, c-format
msgid "file flush of `%s' failed (%s)."
msgstr "`%s' ìù õáå÷ éðåúð õöåç ïå÷éøá (%s) äì÷ú"
-#: io.c:1198
+#: io.c:1205
msgid "/inet/raw client not ready yet, sorry"
msgstr "ïëåî íøè /inet/raw çå÷ì ,íéøòèöî"
-#: io.c:1200 io.c:1237
+#: io.c:1207 io.c:1244
msgid "only root may use `/inet/raw'."
msgstr "ãáìá root ùîúùîì øúåî `inet/raw'-á ùåîéù"
-#: io.c:1235
+#: io.c:1242
msgid "/inet/raw server not ready yet, sorry"
msgstr "ïëåî íøè /inet/raw úøù ,íéøòèöî"
-#: io.c:1325
+#: io.c:1332
#, c-format
msgid "no (known) protocol supplied in special filename `%s'"
msgstr "`%s' ãçåéî õáå÷ íùá ääåæî-éúìá åà øñç ìå÷åèåøô"
-#: io.c:1343
+#: io.c:1350
#, c-format
msgid "special file name `%s' is incomplete"
msgstr "íìù åðéà `%s' ãçåéî õáå÷"
-#: io.c:1355
+#: io.c:1362
#, c-format
msgid "local port invalid in `%s'"
msgstr "`%s'-á äéåâù úéîå÷î äàéöé"
-#: io.c:1367
+#: io.c:1374
msgid "must supply a remote hostname to `/inet'"
msgstr "`/inet' øåáò ÷çåøî çøàî-áùçî íù øéãâäì äáåç"
-#: io.c:1382
+#: io.c:1389
msgid "must supply a remote port to `/inet'"
msgstr "`/inet' øåáò ú÷çåøî äàéöé øéãâäì äáåç"
-#: io.c:1388
+#: io.c:1395
#, c-format
msgid "remote port invalid in `%s'"
msgstr "`%s'-á äéåâù ú÷çåøî äàéöé"
-#: io.c:1398
+#: io.c:1405
msgid "TCP/IP communications are not supported"
msgstr "TCP/IP úøåù÷úá äëéîú ïéà"
-#: io.c:1407 io.c:1588
+#: io.c:1414 io.c:1595
#, c-format
msgid "file `%s' is a directory"
msgstr "äé÷éú åðéä `%s' õáå÷"
-#: io.c:1477
+#: io.c:1484
#, c-format
msgid "use `PROCINFO[\"%s\"]' instead of `%s'"
msgstr "`PROCINFO[\"%s\"]'-á ùîúùäì óéãò `%s' íå÷îá"
-#: io.c:1509
+#: io.c:1516
msgid "use `PROCINFO[...]' instead of `/dev/user'"
msgstr "`/dev/user' éðô-ìò óéãò `PROCINFO[...]'-á ùåîéù"
# This probably sounds nonsensical in Hebrew, but what can I do,
# given the original message text?
-#: io.c:1574 io.c:1748
+#: io.c:1581 io.c:1763
#, c-format
msgid "could not open `%s', mode `%s'"
msgstr "`%s' øåáò `%s' äìåòô ïôåà úçéúôá ïåìùë"
-#: io.c:1799
+#: io.c:1814
#, fuzzy, c-format
msgid "close of master pty failed (%s)"
msgstr "÷éôà úøéâñá (%s) äì÷ú"
-#: io.c:1801 io.c:1953 io.c:2105
+#: io.c:1816 io.c:1968 io.c:2119
#, c-format
msgid "close of stdout in child failed (%s)"
msgstr "úá-úéðëúá stdout úøéâñá (%s) äì÷ú"
-#: io.c:1804
+#: io.c:1819
#, fuzzy, c-format
msgid "moving slave pty to stdout in child failed (dup: %s)"
msgstr "úá-úéðëúá stdout-ì ÷éôà ìåôëùá (dup: %s) äì÷ú"
-#: io.c:1806 io.c:1958
+#: io.c:1821 io.c:1973
#, c-format
msgid "close of stdin in child failed (%s)"
msgstr "úá-úéðëúá stdin úøéâñá (%s) äì÷ú"
-#: io.c:1809
+#: io.c:1824
#, fuzzy, c-format
msgid "moving slave pty to stdin in child failed (dup: %s)"
msgstr "úá-úéðëúá stdin-ì ÷éôà ìåôëùá (dup: %s) äì÷ú"
-#: io.c:1811 io.c:1830
+#: io.c:1826 io.c:1845
#, fuzzy, c-format
msgid "close of slave pty failed (%s)"
msgstr "÷éôà úøéâñá (%s) äì÷ú"
-#: io.c:1904 io.c:1956 io.c:2086 io.c:2108
+#: io.c:1919 io.c:1971 io.c:2100 io.c:2122
#, c-format
msgid "moving pipe to stdout in child failed (dup: %s)"
msgstr "úá-úéðëúá stdout-ì ÷éôà ìåôëùá (dup: %s) äì÷ú"
-#: io.c:1908 io.c:1961
+#: io.c:1923 io.c:1976
#, c-format
msgid "moving pipe to stdin in child failed (dup: %s)"
msgstr "úá-úéðëúá stdin-ì ÷éôà ìåôëùá (dup: %s) äì÷ú"
-#: io.c:1925 io.c:2099
+#: io.c:1940 io.c:2113
msgid "restoring stdout in parent process failed\n"
msgstr "áà-úéðëúá stdout ÷éôà øåæçùá äì÷ú\n"
-#: io.c:1930
+#: io.c:1945
msgid "restoring stdin in parent process failed\n"
msgstr "áà-úéðëúá stdin ÷éôà øåæçùá äì÷ú\n"
-#: io.c:1964 io.c:2110 io.c:2121
+#: io.c:1979 io.c:2124 io.c:2135
#, c-format
msgid "close of pipe failed (%s)"
msgstr "÷éôà úøéâñá (%s) äì÷ú"
-#: io.c:2009
+#: io.c:2024
msgid "`|&' not supported"
msgstr "`|&'-á äëéîú ïéà"
-#: io.c:2076
+#: io.c:2090
#, c-format
msgid "cannot open pipe `%s' (%s)"
msgstr "`%s' ÷éôà úçéúôá (%s) äì÷ú"
-#: io.c:2117
+#: io.c:2131
#, c-format
msgid "cannot create child process for `%s' (fork: %s)"
msgstr "`%s' úá-úéðëúì êéìäú úøéöéá (fork: %s) äì÷ú"
-#: io.c:2460
+#: io.c:2506
#, c-format
msgid "data file `%s' is empty"
msgstr "÷éø åðéä `%s' íéðåúð õáå÷"
-#: io.c:2503 io.c:2511
+#: io.c:2547 io.c:2555
msgid "could not allocate more input memory"
msgstr ""
-#: io.c:2869 io.c:2932
+#: io.c:2919 io.c:2984
#, c-format
msgid "error reading input file `%s': %s"
msgstr "`%s' õáå÷ úàéø÷á (%s) äì÷ú"
-#: io.c:3057
+#: io.c:3109
msgid "multicharacter value of `RS' is a gawk extension"
msgstr "gawk-ì úéôéöôñ äáçøä äðéä `RS' ìù êøòá íéåú øôñîá äëéîú"
-#: main.c:323
+#: main.c:338
msgid "`-m[fr]' option irrelevant in gawk"
msgstr "gawk øåáò éèðååìø åðéà `-m[fr]' ïééôàî"
-#: main.c:325
+#: main.c:340
msgid "-m option usage: `-m[fr] nnn'"
msgstr "`-m[fr] nnn' :-m ïééôàîá ùåîéù ïôåà"
-#: main.c:342
+#: main.c:357
#, c-format
msgid "%s: option `-W %s' unrecognized, ignored\n"
msgstr "çðæåä ,%s úéðëú øåáò øëåî åðéà `-W %s' ïééôàî\n"
-#: main.c:379
+#: main.c:394
msgid "empty argument to `--source' ignored"
msgstr "çðæåä `--source'-ì ÷éø èðîåâøà"
-#: main.c:450
+#: main.c:467
msgid "environment variable `POSIXLY_CORRECT' set: turning on `--posix'"
msgstr "`--posix' ìéòôî :øãâåî `POSIXLY_CORRECT' äáéáñ äðúùî"
-#: main.c:455
+#: main.c:472
msgid "`--posix' overrides `--traditional'"
msgstr "`--traditional' ìò øáåâ `--posix'"
-#: main.c:466
+#: main.c:483
msgid "`--posix'/`--traditional' overrides `--non-decimal-data'"
msgstr "`--non-decimal-data' ìò øáåâ `--posix'/`--traditional'"
-#: main.c:470
+#: main.c:487
#, c-format
msgid "running %s setuid root may be a security problem"
msgstr "òãéî úçèáàá òåâôì äìåìò setuid root-ë %s úöøä"
-#: main.c:511
+#: main.c:528
#, fuzzy, c-format
msgid "can't set binary mode on stdin (%s)"
msgstr "stdin úìåòô ïôåà úòéá÷á (%s) äì÷ú"
-#: main.c:514
+#: main.c:531
#, fuzzy, c-format
msgid "can't set binary mode on stdout (%s)"
msgstr "stdout úìåòô ïôåà úòéá÷á (%s) äì÷ú"
-#: main.c:516
+#: main.c:533
#, fuzzy, c-format
msgid "can't set binary mode on stderr (%s)"
msgstr "stderr úìåòô ïôåà úòéá÷á (%s) äì÷ú"
-#: main.c:546
+#: main.c:572
msgid "no program text at all!"
msgstr "!ììë àöîðá äéä àì úéðëú ìù èñ÷è"
-#: main.c:623
+#: main.c:665
#, c-format
msgid "Usage: %s [POSIX or GNU style options] -f progfile [--] file ...\n"
msgstr ""
"%s [GNU åà POSIX ïåðâñá íéðééôàî] -f úéðëú-íù [--] õáå÷-íù ... :ùåîéù ïôåà\n"
-#: main.c:625
+#: main.c:667
#, c-format
msgid "Usage: %s [POSIX or GNU style options] [--] %cprogram%c file ...\n"
msgstr ""
"%s [GNU åà POSIX ïåðâñá íéðééôàî] [--] %cúéðëú%c õáå÷-íù ... :ùåîéù ïôåà\n"
-#: main.c:630
+#: main.c:672
msgid "POSIX options:\t\tGNU long options:\n"
msgstr ":POSIX éðééôàî\t\t:íéëåøà GNU éðééôàî\n"
-#: main.c:631
+#: main.c:673
msgid "\t-f progfile\t\t--file=progfile\n"
msgstr "\t-f úéðëú-õáå÷\t\t--file=úéðëú-õáå÷\n"
-#: main.c:632
+#: main.c:674
msgid "\t-F fs\t\t\t--field-separator=fs\n"
msgstr "\t-F úåãù-ãéøôî\t\t--field-separator=úåãù-ãéøôî\n"
-#: main.c:633
+#: main.c:675
msgid "\t-v var=val\t\t--assign=var=val\n"
msgstr "\t-v äðúùî=êøò\t\t--assign=äðúùî=êøò\n"
-#: main.c:634
+#: main.c:676
msgid "\t-m[fr] val\n"
msgstr "\t-m[fr] êøò\n"
-#: main.c:635
+#: main.c:677
msgid "\t-W compat\t\t--compat\n"
msgstr "\t-W compat\t\t--compat\n"
-#: main.c:636
+#: main.c:678
msgid "\t-W copyleft\t\t--copyleft\n"
msgstr "\t-W copyleft\t\t--copyleft\n"
-#: main.c:637
+#: main.c:679
msgid "\t-W copyright\t\t--copyright\n"
msgstr "\t-W copyright\t\t--copyright\n"
-#: main.c:638
+#: main.c:680
msgid "\t-W dump-variables[=file]\t--dump-variables[=file]\n"
msgstr "\t-W dump-variables[=õáå÷-íù]\t--dump-variables[=õáå÷-íù]\n"
-#: main.c:639
+#: main.c:681
+#, fuzzy
+msgid "\t-W exec=file\t\t--exec=file\n"
+msgstr "\t-W profile[=õáå÷-íù]\t--profile[=õáå÷-íù]\n"
+
+#: main.c:682
msgid "\t-W gen-po\t\t--gen-po\n"
msgstr "\t-W gen-po\t\t--gen-po\n"
-#: main.c:640
+#: main.c:683
msgid "\t-W help\t\t\t--help\n"
msgstr "\t-W help\t\t\t--help\n"
-#: main.c:641
+#: main.c:684
msgid "\t-W lint[=fatal]\t\t--lint[=fatal]\n"
msgstr "\t-W lint[=fatal]\t\t--lint[=fatal]\n"
-#: main.c:642
+#: main.c:685
msgid "\t-W lint-old\t\t--lint-old\n"
msgstr "\t-W lint-old\t\t--lint-old\n"
-#: main.c:643
+#: main.c:686
msgid "\t-W non-decimal-data\t--non-decimal-data\n"
msgstr "\t-W non-decimal-data\t--non-decimal-data\n"
-#: main.c:645
+#: main.c:688
msgid "\t-W nostalgia\t\t--nostalgia\n"
msgstr "\t-W nostalgia\t\t--nostalgia\n"
-#: main.c:648
+#: main.c:691
msgid "\t-W parsedebug\t\t--parsedebug\n"
msgstr "\t-W parsedebug\t\t--parsedebug\n"
-#: main.c:650
+#: main.c:693
msgid "\t-W profile[=file]\t--profile[=file]\n"
msgstr "\t-W profile[=õáå÷-íù]\t--profile[=õáå÷-íù]\n"
-#: main.c:651
+#: main.c:694
msgid "\t-W posix\t\t--posix\n"
msgstr "\t-W posix\t\t--posix\n"
-#: main.c:652
+#: main.c:695
msgid "\t-W re-interval\t\t--re-interval\n"
msgstr "\t-W re-interval\t\t--re-interval\n"
-#: main.c:653
+#: main.c:696
msgid "\t-W source=program-text\t--source=program-text\n"
msgstr "\t-W source=úéðëú-èñ÷è\t--source=úéðëú-èñ÷è\n"
-#: main.c:654
+#: main.c:697
msgid "\t-W traditional\t\t--traditional\n"
msgstr "\t-W traditional\t\t--traditional\n"
-#: main.c:655
+#: main.c:698
msgid "\t-W usage\t\t--usage\n"
msgstr "\t-W usage\t\t--usage\n"
-#: main.c:656
+#: main.c:699
msgid "\t-W version\t\t--version\n"
msgstr "\t-W version\t\t--version\n"
-#: main.c:660
+#: main.c:703
msgid ""
"\n"
"To report bugs, see node `Bugs' in `gawk.info', which is\n"
@@ -1540,7 +1560,7 @@ msgstr ""
" .ñôãåîä êéøãîá `Reporting Problems and Bugs' ä÷ñô\n"
"\n"
-#: main.c:664
+#: main.c:707
msgid ""
"gawk is a pattern scanning and processing language.\n"
"By default it reads standard input and writes standard output.\n"
@@ -1549,7 +1569,7 @@ msgstr ""
".èñ÷è úåéðáú ìù ãåáéòå äé÷øñì äôù åðéä gawk\n"
".éð÷ú èìôì áúåëå éð÷ú èì÷ õåøò àøå÷ àåä ìãçî úøéøáë\n"
-#: main.c:668
+#: main.c:711
msgid ""
"Examples:\n"
"\tgawk '{ sum += $1 }; END { print sum }' file\n"
@@ -1559,7 +1579,7 @@ msgstr ""
"\tgawk '{ sum += $1 }; END { print sum }' file\n"
"\tgawk -F: '{ print $1 }' /etc/passwd\n"
-#: main.c:685
+#: main.c:731
#, c-format
msgid ""
"Copyright (C) 1989, 1991-%d Free Software Foundation.\n"
@@ -1577,7 +1597,7 @@ msgstr ""
" íàå ,ïåéùøä ìù 2 àñøâá íà ;Free Software Foundation\n"
" .øúåé úøçåàî àñøâ ìëá (íëì äøåîùä äéöôåàë)\n"
-#: main.c:693
+#: main.c:739
msgid ""
"This program is distributed in the hope that it will be useful,\n"
"but WITHOUT ANY WARRANTY; without even the implied warranty of\n"
@@ -1590,58 +1610,59 @@ msgstr ""
",íéèøôì .úîéåñî úéìëú åæéàì äîàúä åà úåøéçñ ìù\n"
" .GNU General Public License-á åðééò àðà\n"
-#: main.c:699
+#: main.c:745
msgid ""
"You should have received a copy of the GNU General Public License\n"
"along with this program; if not, write to the Free Software\n"
-"Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.\n"
+"Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, "
+"USA.\n"
msgstr ""
";GNU General Public License ìù ÷úåòá äååìî úåéäì äøåîà åæ úéðëú\n"
"Free Software Foundation, Inc.-ì åáúë àðà ,åúåà íúìáé÷ àì íà\n"
-".59 Temple Place - Suite 330, Boston, MA 02111-1307, USA\n"
+".51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA\n"
-#: main.c:733
+#: main.c:781
msgid "-Ft does not set FS to tab in POSIX awk"
msgstr "awk ìù POSIX úñøâá TAB úåéäì FS-ì íøåâ åðéà -Ft"
-#: main.c:962
+#: main.c:1018
#, c-format
msgid ""
"%s: `%s' argument to `-v' not in `var=value' form\n"
"\n"
msgstr ""
-#: main.c:982
+#: main.c:1038
#, c-format
msgid "`%s' is not a legal variable name"
msgstr ""
-#: main.c:985
+#: main.c:1041
#, c-format
msgid "`%s' is not a variable name, looking for file `%s=%s'"
msgstr ""
-#: main.c:1018
+#: main.c:1074
msgid "floating point exception"
msgstr "äôö äãå÷ð éáåùéçá äâéøç"
-#: main.c:1025
+#: main.c:1081
msgid "fatal error: internal error"
msgstr "úéîéðô äðëú úàéâù :äøåîç äì÷ú"
# FIXME: I wonder how many people will understand what "fd 2" means.
-#: main.c:1075
+#: main.c:1132
#, c-format
msgid "no pre-opened fd %d"
msgstr "ùàøî çåúô åðéà %d èìô/èì÷ õåøò"
# FIXME: /dev/null might not be known to all.
-#: main.c:1082
+#: main.c:1139
#, c-format
msgid "could not pre-open /dev/null for fd %d"
msgstr "/dev/null-ì %d èìô/èì÷ õåøò çåúôì ïúéð àì"
-#: main.c:1105 main.c:1114
+#: main.c:1162 main.c:1171
#, c-format
msgid "could not find groups: %s"
msgstr "%s :úëøòîá íéùîúùî úåöåá÷ ìò òãéî ïéà"
@@ -1667,23 +1688,23 @@ msgstr "error: "
msgid "fatal: "
msgstr "fatal: "
-#: node.c:58 node.c:65 node.c:74 node.c:88 node.c:115
+#: node.c:59 node.c:66 node.c:75 node.c:90 node.c:119
msgid "can't convert string to float"
msgstr "øôñîì äøîäì úðúéð äðéà úæåøçî"
-#: node.c:357
+#: node.c:414
msgid "backslash at end of string"
msgstr "úæåøçî óåñá êåôä ïñëåì"
-#: node.c:541
+#: node.c:604
msgid "POSIX does not allow `\\x' escapes"
msgstr "`\\x' âåñî äø÷á úåøãñ äùøî åðéà POSIX ï÷ú"
-#: node.c:547
+#: node.c:610
msgid "no hex digits in `\\x' escape sequence"
msgstr "`\\x' äø÷á úøãñá úåéìîéöãñ÷ä úåøôñá ùîúùäì ïéà"
-#: node.c:581
+#: node.c:644
#, c-format
msgid "escape sequence `\\%c' treated as plain `%c'"
msgstr "éìåìéî åúë ìôåè `\\%c' äø÷á úøãñá `%c' åú"
@@ -1703,21 +1724,21 @@ msgstr "äáéúë êøåöì `%s' úçéúô úòá (%s) äì÷ú"
msgid "internal error: %s with null vname"
msgstr "ñôåàî åìù vname-äù Node_var :úéîéðô äðëú úàéâù"
-#: profile.c:530
+#: profile.c:531
msgid "# treated internally as `delete'"
msgstr ""
-#: profile.c:1167
+#: profile.c:1168
#, c-format
msgid "# this is a dynamically loaded extension function"
msgstr ""
-#: profile.c:1198
+#: profile.c:1199
#, c-format
msgid "\t# gawk profile, created %s\n"
msgstr "\t# %s êéøàúî gawk ìù ìéôåøô\n"
-#: profile.c:1201
+#: profile.c:1202
#, c-format
msgid ""
"\t# BEGIN block(s)\n"
@@ -1726,7 +1747,7 @@ msgstr ""
"\t# BEGIN ÷åìá\n"
"\n"
-#: profile.c:1211
+#: profile.c:1212
#, c-format
msgid ""
"\t# Rule(s)\n"
@@ -1735,7 +1756,7 @@ msgstr ""
"\t# (íé)ììë\n"
"\n"
-#: profile.c:1217
+#: profile.c:1218
#, c-format
msgid ""
"\t# END block(s)\n"
@@ -1744,7 +1765,7 @@ msgstr ""
"\t# END ÷åìá\n"
"\n"
-#: profile.c:1237
+#: profile.c:1238
#, c-format
msgid ""
"\n"
@@ -1753,83 +1774,89 @@ msgstr ""
"\n"
"\t# úéá-óìà øãñá ,úåéö÷ðåô\n"
-#: profile.c:1452
+#: profile.c:1453
#, c-format
msgid "unexpected type %s in prec_level"
msgstr "prec_level-á %s éåâù âåñ"
-#: regcomp.c:150
+#: regcomp.c:160
msgid "Success"
msgstr "äçìöä"
-#: regcomp.c:153
+#: regcomp.c:163
msgid "No match"
msgstr "äîéàúî úæåøçî äàöîð àì"
-#: regcomp.c:156
+#: regcomp.c:166
msgid "Invalid regular expression"
msgstr "éåâù éøìåâø éåèéá"
-#: regcomp.c:159
+#: regcomp.c:169
msgid "Invalid collation character"
msgstr "øãâåî-éúìá øåãéñ åú"
-#: regcomp.c:162
+#: regcomp.c:172
msgid "Invalid character class name"
msgstr "íéåú úöåá÷ ìù øãâåî-éúìá íù"
-#: regcomp.c:165
+#: regcomp.c:175
msgid "Trailing backslash"
msgstr "`\\' éøåçà ïñëåìá íééúñî éøìåâø éåèéá"
-#: regcomp.c:168
+#: regcomp.c:178
msgid "Invalid back reference"
msgstr "íãå÷ éåèéá-úúì äéåâù äééðôä"
-#: regcomp.c:171
+#: regcomp.c:181
msgid "Unmatched [ or [^"
msgstr "âåæ-ïá åì ïéàù [^ åà ["
-#: regcomp.c:174
+#: regcomp.c:184
msgid "Unmatched ( or \\("
msgstr "âåæ-ïá åì ïéàù \\( åà ("
-#: regcomp.c:177
+#: regcomp.c:187
msgid "Unmatched \\{"
msgstr "âåæ-ïá åì ïéàù \\{"
-#: regcomp.c:180
+#: regcomp.c:190
msgid "Invalid content of \\{\\}"
msgstr "\\{\\} êåúá éåâù äðáî"
-#: regcomp.c:183
+#: regcomp.c:193
msgid "Invalid range end"
msgstr "íéåú íåçú ìù äéåâù äøãâä"
-#: regcomp.c:186
+#: regcomp.c:196
msgid "Memory exhausted"
msgstr "ïåøëæä øîâð"
-#: regcomp.c:189
+#: regcomp.c:199
msgid "Invalid preceding regular expression"
msgstr "íéé÷ åðéà åà éåâù íãå÷ éøìåâø éåèéá"
-#: regcomp.c:192
+#: regcomp.c:202
msgid "Premature end of regular expression"
msgstr "éãî íã÷åî íééúñî éøìåâø éåèéá"
-#: regcomp.c:195
+#: regcomp.c:205
msgid "Regular expression too big"
msgstr "éãî áëøåî åà ìåãâ éøìåâø éåèéá"
-#: regcomp.c:198
+#: regcomp.c:208
msgid "Unmatched ) or \\)"
msgstr "âåæ-ïá åì ïéàù \\) åà )"
-#: regcomp.c:668
+#: regcomp.c:688
msgid "No previous regular expression"
msgstr "íãå÷ éøìåâø éåèéá ïéà"
+#~ msgid "function %s called\n"
+#~ msgstr "`%s' äéö÷ðåôì äàéø÷\n"
+
+#~ msgid "field %d in FIELDWIDTHS, must be > 0"
+#~ msgstr "0-î ìåãâ úåéäì áééç FIELDWIDTHS-á %d 'ñî äãù"
+
#, fuzzy
#~ msgid "or used as a variable or an array"
#~ msgstr "êøòî åà äðúùîë `%s' äéö÷ðåô íùá ùîúùäì ïéà"
diff --git a/po/it.gmo b/po/it.gmo
index f83fbbbe..679d5cfc 100644
--- a/po/it.gmo
+++ b/po/it.gmo
Binary files differ
diff --git a/po/it.po b/po/it.po
index 8676ec8b..fd50f474 100644
--- a/po/it.po
+++ b/po/it.po
@@ -1,17 +1,17 @@
# Italian messages for GNU Awk
-# Copyright (C) 2002-2004 Free Software Foundation, Inc.
-# Antonio Colombo <antonio.colombo@it.fujitsu.com>.
+# Copyright (C) 2002-2005 Free Software Foundation, Inc.
+# Antonio Colombo <azc10@yahoo.com>.
#
msgid ""
msgstr ""
"Project-Id-Version: gawk 3.1.35\n"
"Report-Msgid-Bugs-To: arnold@skeeve.com\n"
-"POT-Creation-Date: 2004-07-15 13:02+0300\n"
-"PO-Revision-Date: 2004-07-09 07:25+0100\n"
-"Last-Translator: Antonio Colombo <antonio.colombo@it.fujitsu.com>\n"
+"POT-Creation-Date: 2005-07-06 17:20+0300\n"
+"PO-Revision-Date: 2005-06-22 14:00+0100\n"
+"Last-Translator: Antonio Colombo <azc10@yahoo.com>\n"
"Language-Team: Italian <it@li.org>\n"
"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=ISO-8859-8\n"
+"Content-Type: text/plain; charset=ISO-8859-1\n"
"Content-Transfer-Encoding: 8-bit\n"
#: array.c:112
@@ -88,282 +88,298 @@ msgstr "ogni regola deve avere una parte 'espressione' o una parte 'azione'"
msgid "`%s' is a built-in function, it cannot be redefined"
msgstr "`%s' è una funzione interna, non si può ridefinire"
-#: awkgram.y:314
+#: awkgram.y:313
+msgid "regexp constant `//' looks like a C++ comment, but is not"
+msgstr "espressione regolare costante `//' sembra un commento C, ma non lo è"
+
+#: awkgram.y:316
#, c-format
msgid "regexp constant `/%s/' looks like a C comment, but is not"
-msgstr "costante 'regexp' `/%s/' sembra un commento commento C, ma non lo è"
+msgstr "espressione regolare costante `/%s/' sembra un commento C, ma non lo è"
-#: awkgram.y:341 awkgram.y:619
+#: awkgram.y:343 awkgram.y:623
msgid "statement may have no effect"
msgstr "istruzione che può non aver alcun effetto"
-#: awkgram.y:436 awkgram.y:456
+#: awkgram.y:440 awkgram.y:460
#, c-format
msgid "`%s' used in %s action"
msgstr "`%s' usato in 'azione' %s"
-#: awkgram.y:449 awkgram.y:452
+#: awkgram.y:453 awkgram.y:456
msgid "`nextfile' is a gawk extension"
msgstr "`nextfile' è un'estensione gawk"
-#: awkgram.y:466
+#: awkgram.y:470
msgid "`return' used outside function context"
msgstr "`return' usato fuori da una funzione"
-#: awkgram.y:508
+#: awkgram.y:512
msgid "plain `print' in BEGIN or END rule should probably be `print \"\"'"
msgstr "`print' da solo in BEGIN o END dovrebbe forse essere `print \"\"'"
-#: awkgram.y:521 awkgram.y:528
+#: awkgram.y:525 awkgram.y:532
msgid "`delete array' is a gawk extension"
msgstr "`delete array' è un'estensione gawk"
-#: awkgram.y:536 awkgram.y:543
+#: awkgram.y:540 awkgram.y:547
msgid "`delete(array)' is a non-portable tawk extension"
msgstr "`delete(array)' è un'estensione tawk non-portabile"
-#: awkgram.y:587
+#: awkgram.y:591
#, c-format
msgid "duplicate case values in switch body: %s"
msgstr "valori di 'case' doppi all'interno di uno 'switch': %s"
-#: awkgram.y:597
+#: awkgram.y:601
msgid "Duplicate `default' detected in switch body"
msgstr "Valori per difetto doppi all'interno di uno 'switch'"
-#: awkgram.y:686
+#: awkgram.y:690
msgid "multistage two-way pipelines don't work"
msgstr "'pipelines' multistadio bidirezionali non funzionano"
-#: awkgram.y:777
+#: awkgram.y:781
msgid "regular expression on right of assignment"
msgstr "espressione regolare usata per assegnare un valore"
-#: awkgram.y:800
+#: awkgram.y:804
msgid "regular expression on left of `~' or `!~' operator"
msgstr "espressione regolare prima di operatore `~' o `!~'"
-#: awkgram.y:808
+#: awkgram.y:812
msgid "regular expression on right of comparison"
msgstr "espressione regolare a destra in un confronto"
-#: awkgram.y:875
+#: awkgram.y:879
msgid "non-redirected `getline' undefined inside END action"
msgstr "`getline' non re-diretta indefinita dentro 'azione' END"
-#: awkgram.y:902
+#: awkgram.y:906
msgid "call of `length' without parentheses is not portable"
msgstr "chiamata a `length' senza parentesi non portabile"
-#: awkgram.y:905
+#: awkgram.y:909
msgid "call of `length' without parentheses is deprecated by POSIX"
msgstr "chiamata a `length' senza parentesi sconsigliata da POSIX"
-#: awkgram.y:958
+#: awkgram.y:962
msgid "use of non-array as array"
msgstr "uso di non-vettore come vettore"
-#: awkgram.y:960
+#: awkgram.y:964
msgid "invalid subscript expression"
msgstr "espressione indice invalida"
-#: awkgram.y:1158
+#: awkgram.y:1171
msgid "unexpected newline or end of string"
msgstr "carattere 'a capo' o fine stringa inaspettati"
-#: awkgram.y:1254
+#: awkgram.y:1267
msgid "empty program text on command line"
msgstr "programma nullo sulla linea comandi"
-#: awkgram.y:1307
+#: awkgram.y:1320
#, c-format
msgid "can't open source file `%s' for reading (%s)"
msgstr "non riesco ad aprire file sorgente `%s' in lettura (%s)"
-#: awkgram.y:1384
+#: awkgram.y:1397
#, c-format
msgid "can't read sourcefile `%s' (%s)"
msgstr "non riesco a leggere file sorgente `%s' (%s)"
-#: awkgram.y:1392
+#: awkgram.y:1405
#, c-format
msgid "source file `%s' is empty"
msgstr "file sorgente `%s' vuoto"
-#: awkgram.y:1590 awkgram.y:1700 awkgram.y:1718 awkgram.y:2068 awkgram.y:2153
+#: awkgram.y:1596 awkgram.y:1718 awkgram.y:1736 awkgram.y:2107 awkgram.y:2194
msgid "source file does not end in newline"
msgstr "file sorgente non termina con carattere 'a capo'"
-#: awkgram.y:1654
+#: awkgram.y:1658
msgid "unterminated regexp ends with `\\' at end of file"
msgstr "espressione regolare non completata termina con `\\' a fine file"
-#: awkgram.y:1674
+#: awkgram.y:1682
+#, c-format
+msgid "%s: %d: tawk regex modifier `/.../%c' doesn't work in gawk"
+msgstr ""
+"%s: %d: modificatore di espressione regolare tawk `/.../%c' non valido in "
+"gawk"
+
+#: awkgram.y:1686
+#, c-format
+msgid "tawk regex modifier `/.../%c' doesn't work in gawk"
+msgstr "modificatore di espressione regolare tawk `/.../%c' non valido in gawk"
+
+#: awkgram.y:1693
msgid "unterminated regexp"
msgstr "espressione regolare non completata"
-#: awkgram.y:1677
+#: awkgram.y:1696
msgid "unterminated regexp at end of file"
msgstr "espressione regolare non completata a fine file"
-#: awkgram.y:1744
+#: awkgram.y:1762
msgid "use of `\\ #...' line continuation is not portable"
msgstr "uso di `\\ #...' continuazione linea non portabile"
-#: awkgram.y:1756
+#: awkgram.y:1774
msgid "backslash not last character on line"
msgstr "'\\' non è l'ultimo carattere della linea"
-#: awkgram.y:1801
+#: awkgram.y:1819
msgid "POSIX does not allow operator `**='"
msgstr "POSIX non permette l'operatore `**='"
-#: awkgram.y:1803
+#: awkgram.y:1821
msgid "old awk does not support operator `**='"
msgstr "il vecchio awk non supporta l'operatore `**='"
-#: awkgram.y:1812
+#: awkgram.y:1830
msgid "POSIX does not allow operator `**'"
msgstr "POSIX non permette l'operatore `**'"
-#: awkgram.y:1814
+#: awkgram.y:1832
msgid "old awk does not support operator `**'"
msgstr "il vecchio awk non supporta l'operatore `**'"
-#: awkgram.y:1845
+#: awkgram.y:1863
msgid "operator `^=' is not supported in old awk"
msgstr "l'operatore `^=' non è supportato nel vecchio awk"
-#: awkgram.y:1853
+#: awkgram.y:1871
msgid "operator `^' is not supported in old awk"
msgstr "l'operatore `^' non è supportato nel vecchio awk"
-#: awkgram.y:1937 awkgram.y:1954
+#: awkgram.y:1955 awkgram.y:1970
msgid "unterminated string"
msgstr "stringa non terminata"
-#: awkgram.y:2114
+#: awkgram.y:2155
#, c-format
msgid "invalid char '%c' in expression"
msgstr "carattere '%c' invalido in un'espressione"
-#: awkgram.y:2162
+#: awkgram.y:2203
#, c-format
msgid "`%s' is a gawk extension"
msgstr "`%s' è un'estensione gawk"
-#: awkgram.y:2165
+#: awkgram.y:2206
#, c-format
msgid "`%s' is a Bell Labs extension"
msgstr "`%s' è un'estensione Bell Labs"
-#: awkgram.y:2168
+#: awkgram.y:2209
#, c-format
msgid "POSIX does not allow `%s'"
msgstr "POSIX non permette `%s'"
-#: awkgram.y:2172
+#: awkgram.y:2213
#, c-format
msgid "`%s' is not supported in old awk"
msgstr "`%s' non è supportato nel vecchio awk"
-#: awkgram.y:2198
+#: awkgram.y:2239
msgid "`goto' considered harmful!\n"
msgstr "`goto' considerato pericoloso!\n"
-#: awkgram.y:2260
+#: awkgram.y:2301
#, c-format
msgid "%d is invalid as number of arguments for %s"
msgstr "%d invalido come numero di argomenti per %s"
-#: awkgram.y:2279 awkgram.y:2282
+#: awkgram.y:2320 awkgram.y:2323
msgid "match: third argument is a gawk extension"
msgstr "match: il terzo argomento è un'estensione gawk"
-#: awkgram.y:2295
+#: awkgram.y:2336
#, c-format
msgid "%s: string literal as last arg of substitute has no effect"
msgstr "%s: una stringa come ultimo argomento di 'substitute' non ha effetto"
-#: awkgram.y:2298
+#: awkgram.y:2339
#, c-format
msgid "%s third parameter is not a changeable object"
msgstr "il terzo parametro di '%s' non è un oggetto modificabile"
-#: awkgram.y:2325 awkgram.y:2328
+#: awkgram.y:2366 awkgram.y:2369
msgid "close: second argument is a gawk extension"
msgstr "close: il secondo argomento è un'estensione gawk"
-#: awkgram.y:2338
+#: awkgram.y:2379
msgid "use of dcgettext(_\"...\") is incorrect: remove leading underscore"
msgstr ""
"uso scorretto di dcgettext(_\"...\"): togliere il carattere '_' iniziale"
-#: awkgram.y:2353
+#: awkgram.y:2394
msgid "use of dcngettext(_\"...\") is incorrect: remove leading underscore"
msgstr ""
"uso scorretto di dcngettext(_\"...\"): togliere il carattere '_' iniziale"
-#: awkgram.y:2424
+#: awkgram.y:2465
#, c-format
msgid "function `%s': parameter #%d, `%s', duplicates parameter #%d"
msgstr "funzione `%s': parametro #%d, `%s', duplica parametro #%d"
-#: awkgram.y:2457
+#: awkgram.y:2498
#, c-format
msgid "function `%s': parameter `%s' shadows global variable"
msgstr "funzione `%s': parametro `%s' nasconde variabile globale"
-#: awkgram.y:2569
+#: awkgram.y:2610
#, c-format
msgid "could not open `%s' for writing (%s)"
msgstr "non riesco ad aprire `%s' in scrittura (%s)"
-#: awkgram.y:2570 profile.c:93
+#: awkgram.y:2611 profile.c:93
msgid "sending profile to standard error"
msgstr "mando profilo a 'standard error'"
-#: awkgram.y:2602
+#: awkgram.y:2643
#, c-format
msgid "%s: close failed (%s)"
msgstr "%s: 'close' fallita (%s)"
-#: awkgram.y:2723
+#: awkgram.y:2764
msgid "shadow_funcs() called twice!"
msgstr "shadow_funcs() chiamata due volte!"
-#: awkgram.y:2750
+#: awkgram.y:2791
msgid "there were shadowed variables."
msgstr "c'erano variabili nascoste."
-#: awkgram.y:2823
+#: awkgram.y:2864
#, c-format
msgid "function `%s': can't use function name as parameter name"
msgstr "funzione `%s': non posso usare nome della funzione come nome parametro"
-#: awkgram.y:2833
+#: awkgram.y:2874
#, c-format
msgid "function name `%s' previously defined"
msgstr "funzione di nome `%s' definita in precedenza"
-#: awkgram.y:2984 awkgram.y:2990
+#: awkgram.y:3025 awkgram.y:3031
#, c-format
msgid "function `%s' called but never defined"
msgstr "funzione `%s' chiamata ma mai definita"
-#: awkgram.y:2993
+#: awkgram.y:3034
#, c-format
msgid "function `%s' defined but never called"
msgstr "funzione `%s' definita ma mai chiamata"
-#: awkgram.y:3020
+#: awkgram.y:3061
#, c-format
msgid "regexp constant for parameter #%d yields boolean value"
msgstr ""
"espressione regolare di valore costante per parametro #%d genera valore "
"booleano"
-#: awkgram.y:3033
+#: awkgram.y:3105
#, c-format
msgid ""
"function `%s' called with space between name and `(',\n"
@@ -372,195 +388,199 @@ msgstr ""
"funzione `%s' chiamata con spazio tra il nome e `(',\n"
"o usata come variabile o vettore"
-#: builtin.c:149
+#: builtin.c:145
#, c-format
msgid "%s to \"%s\" failed (%s)"
msgstr "%s a \"%s\" fallita (%s)"
-#: builtin.c:150
+#: builtin.c:146
msgid "standard output"
msgstr "standard output"
-#: builtin.c:151
+#: builtin.c:147
msgid "reason unknown"
msgstr "ragione indeterminata"
-#: builtin.c:164
+#: builtin.c:160
msgid "exp: received non-numeric argument"
msgstr "exp: argomento non numerico"
-#: builtin.c:170
+#: builtin.c:166
#, c-format
msgid "exp: argument %g is out of range"
msgstr "exp: argomento %g non accettabile"
-#: builtin.c:228
+#: builtin.c:224
#, c-format
msgid "fflush: cannot flush: pipe `%s' opened for reading, not writing"
msgstr ""
"fflush: non posso scaricare: 'pipe' `%s' aperta in lettura, non in scrittura"
-#: builtin.c:231
+#: builtin.c:227
#, c-format
msgid "fflush: cannot flush: file `%s' opened for reading, not writing"
msgstr ""
"fflush: non posso scaricare: file `%s' aperto in lettura, non in scrittura"
-#: builtin.c:243
+#: builtin.c:239
#, c-format
msgid "fflush: `%s' is not an open file, pipe or co-process"
msgstr "fflush: `%s' non è un file aperto, una 'pipe' o un co-processo"
-#: builtin.c:338
+#: builtin.c:332
msgid "index: received non-string first argument"
msgstr "index: il primo argomento non è una stringa"
-#: builtin.c:340
+#: builtin.c:334
msgid "index: received non-string second argument"
msgstr "index: il secondo argomento non è una stringa"
-#: builtin.c:454
+#: builtin.c:449
msgid "int: received non-numeric argument"
msgstr "int: argomento non numerico"
-#: builtin.c:471
+#: builtin.c:472
+msgid "`length(array)' is a gawk extension"
+msgstr "`length(array)' è un'estensione gawk"
+
+#: builtin.c:481
msgid "length: received non-string argument"
msgstr "length: l'argomento non è una stringa"
-#: builtin.c:487
+#: builtin.c:506
msgid "log: received non-numeric argument"
msgstr "log: argomento non numerico"
-#: builtin.c:490
+#: builtin.c:509
#, c-format
msgid "log: received negative argument %g"
msgstr "log: argomento negativo %g"
-#: builtin.c:654 builtin.c:657
+#: builtin.c:673 builtin.c:676
msgid "must use `count$' on all formats or none"
msgstr "'count$' va usato per tutti i formati o per nessuno"
-#: builtin.c:759
+#: builtin.c:778
msgid "`$' is not permitted in awk formats"
msgstr "`$' non permesso nei 'format' awk"
-#: builtin.c:765
+#: builtin.c:784
msgid "arg count with `$' must be > 0"
msgstr "il numero di argomento con `$' deve essere > 0"
-#: builtin.c:767
+#: builtin.c:786
#, c-format
msgid "arg count %ld greater than total number of supplied arguments"
msgstr ""
"numero di argomenti (%ld) maggiore del numero totale di argomenti specificati"
-#: builtin.c:769
+#: builtin.c:788
msgid "`$' not permitted after period in format"
msgstr "`$' non permesso dopo un punto nel 'format'"
-#: builtin.c:782
+#: builtin.c:801
msgid "no `$' supplied for positional field width or precision"
msgstr ""
"nessun `$' specificato per larghezza o precisione di un campo posizionale"
-#: builtin.c:848
+#: builtin.c:867
msgid "`l' is meaningless in awk formats; ignored"
msgstr "`l' non ha senso nei 'format' awk; ignorata"
-#: builtin.c:852
+#: builtin.c:871
msgid "`l' is not permitted in POSIX awk formats"
msgstr "`l' non permessa nei 'format' awk POSIX"
-#: builtin.c:863
+#: builtin.c:882
msgid "`L' is meaningless in awk formats; ignored"
msgstr "`L' non ha senso nei 'format' awk; ignorata"
-#: builtin.c:867
+#: builtin.c:886
msgid "`L' is not permitted in POSIX awk formats"
msgstr "`L' non permessa nei 'format' awk POSIX"
-#: builtin.c:878
+#: builtin.c:897
msgid "`h' is meaningless in awk formats; ignored"
msgstr "`h' non ha senso nei 'format' awk; ignorata"
-#: builtin.c:882
+#: builtin.c:901
msgid "`h' is not permitted in POSIX awk formats"
msgstr "`h' non permessa nei 'format' awk POSIX"
-#: builtin.c:1111
+#: builtin.c:1132
#, c-format
msgid "[s]printf: value %g is out of range for `%%%c' format"
msgstr "[s]printf: valore %g non accettabile per il 'format' `%%%c'"
-#: builtin.c:1171
+#: builtin.c:1198
msgid "not enough arguments to satisfy format string"
msgstr "mancano argomenti per completare il 'format'"
-#: builtin.c:1173
+#: builtin.c:1200
msgid "^ ran out for this one"
msgstr "^ uscito per questo"
-#: builtin.c:1178
+#: builtin.c:1205
msgid "[s]printf: format specifier does not have control letter"
msgstr "[s]printf: il designatore di 'format' non ha una lettera di controllo"
-#: builtin.c:1181
+#: builtin.c:1208
msgid "too many arguments supplied for format string"
msgstr "troppi argomenti specificati per il 'format'"
-#: builtin.c:1247 builtin.c:1250
+#: builtin.c:1274 builtin.c:1277
msgid "printf: no arguments"
msgstr "printf: manca argomento"
-#: builtin.c:1274
+#: builtin.c:1301
msgid "sqrt: received non-numeric argument"
msgstr "sqrt: argomento non numerico"
-#: builtin.c:1278
+#: builtin.c:1305
#, c-format
msgid "sqrt: called with negative argument %g"
msgstr "sqrt: chiamata con argomento negativo %g"
-#: builtin.c:1301
+#: builtin.c:1329
#, c-format
msgid "substr: start index %g is invalid, using 1"
msgstr "substr: indice di partenza %g invalido, uso 1"
-#: builtin.c:1306
+#: builtin.c:1334
#, c-format
msgid "substr: non-integer start index %g will be truncated"
msgstr "substr: indice di partenza non intero %g: sarà troncato"
-#: builtin.c:1325
+#: builtin.c:1353
#, c-format
msgid "substr: length %g is not >= 1"
msgstr "substr: lunghezza %g non >= 1"
-#: builtin.c:1327
+#: builtin.c:1355
#, c-format
msgid "substr: length %g is not >= 0"
msgstr "substr: lunghezza %g non >= 0"
-#: builtin.c:1334
+#: builtin.c:1362
#, c-format
msgid "substr: non-integer length %g will be truncated"
msgstr "substr: lunghezza non intera %g: sarà truncata"
-#: builtin.c:1339
+#: builtin.c:1367
#, c-format
msgid "substr: length %g too big for string indexing, truncating to %g"
msgstr "substr: lunghezza %g troppo elevata per indice stringa, tronco a %g"
-#: builtin.c:1351
+#: builtin.c:1379
msgid "substr: source string is zero length"
msgstr "substr: stringa di partenza lunga zero"
-#: builtin.c:1357
+#: builtin.c:1395
#, c-format
msgid "substr: start index %g is past end of string"
msgstr "substr: indice di partenza %g oltre la fine della stringa"
-#: builtin.c:1365
+#: builtin.c:1403
#, c-format
msgid ""
"substr: length %g at start index %g exceeds length of first argument (%lu)"
@@ -568,182 +588,182 @@ msgstr ""
"substr: lunghezza %g all'indice di partenza %g supera la lunghezza del primo "
"argomento (%lu)"
-#: builtin.c:1400
+#: builtin.c:1478
msgid "strftime: received non-string first argument"
msgstr "strftime: il primo argomento non è una stringa"
-#: builtin.c:1406
+#: builtin.c:1484
msgid "strftime: received empty format string"
msgstr "strftime: 'format' è una stringa nulla"
-#: builtin.c:1415
+#: builtin.c:1493
msgid "strftime: received non-numeric second argument"
msgstr "strftime: il secondo argomento non è numerico"
-#: builtin.c:1478
+#: builtin.c:1556
msgid "mktime: received non-string argument"
msgstr "mktime: l'argomento non è una stringa"
-#: builtin.c:1523
+#: builtin.c:1601
msgid "system: received non-string argument"
msgstr "system: l'argomento non è una stringa"
-#: builtin.c:1644 eval.c:2019
+#: builtin.c:1722 eval.c:2039
#, c-format
msgid "reference to uninitialized field `$%d'"
msgstr "referenza a variabile non inizializzata `$%d'"
-#: builtin.c:1671
+#: builtin.c:1827
msgid "tolower: received non-string argument"
msgstr "tolower: l'argomento non è una stringa"
-#: builtin.c:1720
+#: builtin.c:1857
msgid "toupper: received non-string argument"
msgstr "toupper: l'argomento non è una stringa"
-#: builtin.c:1765
+#: builtin.c:1890
msgid "atan2: received non-numeric first argument"
msgstr "atan2: il primo argomento non è numerico"
-#: builtin.c:1767
+#: builtin.c:1892
msgid "atan2: received non-numeric second argument"
msgstr "atan2: il secondo argomento non è numerico"
-#: builtin.c:1786
+#: builtin.c:1911
msgid "sin: received non-numeric argument"
msgstr "sin: l'argomento non è numerico"
-#: builtin.c:1802
+#: builtin.c:1927
msgid "cos: received non-numeric argument"
msgstr "cos: l'argomento non è numerico"
-#: builtin.c:1852
+#: builtin.c:1977
msgid "srand: received non-numeric argument"
msgstr "srand: l'argomento non è numerico"
-#: builtin.c:1887
+#: builtin.c:2012
msgid "match: third argument is not an array"
msgstr "match: il terzo argomento non è un vettore"
-#: builtin.c:2414
+#: builtin.c:2555
msgid "gensub: third argument of 0 treated as 1"
msgstr "gensub: il terzo argomento è 0, trattato come 1"
-#: builtin.c:2572
+#: builtin.c:2715
msgid "lshift: received non-numeric first argument"
msgstr "lshift: il primo argomento non è numerico"
-#: builtin.c:2574
+#: builtin.c:2717
msgid "lshift: received non-numeric second argument"
msgstr "lshift: il secondo argomento non è numerico"
-#: builtin.c:2580
+#: builtin.c:2723
#, c-format
msgid "lshift(%lf, %lf): negative values will give strange results"
msgstr "lshift(%lf, %lf): valori negativi daranno risultati strani"
-#: builtin.c:2582
+#: builtin.c:2725
#, c-format
msgid "lshift(%lf, %lf): fractional values will be truncated"
msgstr "lshift(%lf, %lf): valori con decimali verranno troncati"
-#: builtin.c:2584
+#: builtin.c:2727
#, c-format
msgid "lshift(%lf, %lf): too large shift value will give strange results"
msgstr "lshift(%lf, %lf): valori troppo alti daranno risultati strani"
-#: builtin.c:2610
+#: builtin.c:2753
msgid "rshift: received non-numeric first argument"
msgstr "rshift: il primo argomento non è numerico"
-#: builtin.c:2612
+#: builtin.c:2755
msgid "rshift: received non-numeric second argument"
msgstr "rshift: il secondo argomento non è numerico"
-#: builtin.c:2618
+#: builtin.c:2761
#, c-format
msgid "rshift(%lf, %lf): negative values will give strange results"
msgstr "rshift(%lf, %lf): valori negativi daranno risultati strani"
-#: builtin.c:2620
+#: builtin.c:2763
#, c-format
msgid "rshift(%lf, %lf): fractional values will be truncated"
msgstr "rshift(%lf, %lf): valori con decimali verranno troncati"
-#: builtin.c:2622
+#: builtin.c:2765
#, c-format
msgid "rshift(%lf, %lf): too large shift value will give strange results"
msgstr "rshift(%lf, %lf): valori troppo alti daranno risultati strani"
-#: builtin.c:2648
+#: builtin.c:2791
msgid "and: received non-numeric first argument"
msgstr "and: il primo argomento non è numerico"
-#: builtin.c:2650
+#: builtin.c:2793
msgid "and: received non-numeric second argument"
msgstr "and: il secondo argomento non è numerico"
-#: builtin.c:2656
+#: builtin.c:2799
#, c-format
msgid "and(%lf, %lf): negative values will give strange results"
msgstr "and(%lf, %lf): valori negativi daranno risultati strani"
-#: builtin.c:2658
+#: builtin.c:2801
#, c-format
msgid "and(%lf, %lf): fractional values will be truncated"
msgstr "and(%lf, %lf): valori con decimali verranno troncati"
-#: builtin.c:2684
+#: builtin.c:2827
msgid "or: received non-numeric first argument"
msgstr "or: il primo argomento non è numerico"
-#: builtin.c:2686
+#: builtin.c:2829
msgid "or: received non-numeric second argument"
msgstr "or: il secondo argomento non è numerico"
-#: builtin.c:2692
+#: builtin.c:2835
#, c-format
msgid "or(%lf, %lf): negative values will give strange results"
msgstr "or(%lf, %lf): valori negativi daranno risultati strani"
-#: builtin.c:2694
+#: builtin.c:2837
#, c-format
msgid "or(%lf, %lf): fractional values will be truncated"
msgstr "or(%lf, %lf): valori con decimali verranno troncati"
-#: builtin.c:2720
+#: builtin.c:2863
msgid "xor: received non-numeric first argument"
msgstr "xor: il primo argomento non è numerico"
-#: builtin.c:2722
+#: builtin.c:2865
msgid "xor: received non-numeric second argument"
msgstr "xor: il secondo argomento non è numerico"
-#: builtin.c:2728
+#: builtin.c:2871
#, c-format
msgid "xor(%lf, %lf): negative values will give strange results"
msgstr "xor(%lf, %lf): valori negativi daranno risultati strani"
-#: builtin.c:2730
+#: builtin.c:2873
#, c-format
msgid "xor(%lf, %lf): fractional values will be truncated"
msgstr "xor(%lf, %lf): valori con decimali verranno troncati"
-#: builtin.c:2754
+#: builtin.c:2897
msgid "compl: received non-numeric argument"
msgstr "compl: l'argomento non è numerico"
-#: builtin.c:2760
+#: builtin.c:2903
#, c-format
msgid "compl(%lf): negative value will give strange results"
msgstr "compl(%lf): valore negativo darà risultati strani"
-#: builtin.c:2762
+#: builtin.c:2905
#, c-format
msgid "compl(%lf): fractional value will be truncated"
msgstr "compl(%lf): valore con decimali verrà troncato"
-#: builtin.c:2935
+#: builtin.c:3078
#, c-format
msgid "dcgettext: `%s' is not a valid locale category"
msgstr "dcgettext: `%s' non è una categoria 'locale' valida"
@@ -753,74 +773,74 @@ msgstr "dcgettext: `%s' non è una categoria 'locale' valida"
msgid "unknown nodetype %d"
msgstr "tipo nodo sconosciuto %d"
-#: eval.c:350
+#: eval.c:353
msgid "buffer overflow in genflags2str"
msgstr "superament limiti buffer in 'genflags2str'"
-#: eval.c:382 eval.c:388 profile.c:837
+#: eval.c:385 eval.c:391 profile.c:838
#, c-format
msgid "attempt to use array `%s' in a scalar context"
msgstr "tentativo di usare vettore `%s' in un contesto scalare"
-#: eval.c:730
+#: eval.c:733
#, c-format
msgid "for loop: array `%s' changed size from %ld to %ld during loop execution"
msgstr ""
"ciclo for: vettore `%s' ha cambiato dimensione da %ld a %ld durante "
"l'esecuzione del ciclo"
-#: eval.c:751
+#: eval.c:754
msgid "`break' outside a loop is not portable"
msgstr "`break' all'esterno di un ciclo non è portabile"
-#: eval.c:755
+#: eval.c:758
msgid "`break' outside a loop is not allowed"
msgstr "`break' all'esterno di un ciclo non è consentito"
-#: eval.c:772
+#: eval.c:775
msgid "`continue' outside a loop is not portable"
msgstr "`continue' all'esterno di un ciclo non è portabile"
-#: eval.c:776
+#: eval.c:779
msgid "`continue' outside a loop is not allowed"
msgstr "`continue' all'esterno di un ciclo non è consentito"
-#: eval.c:810
+#: eval.c:813
msgid "`next' cannot be called from a BEGIN rule"
msgstr "`next' non può essere chiamato da una regola BEGIN"
-#: eval.c:812
+#: eval.c:815
msgid "`next' cannot be called from an END rule"
msgstr "`next' non può essere chiamato da una regola END"
-#: eval.c:821
+#: eval.c:824
msgid "`nextfile' cannot be called from a BEGIN rule"
msgstr "`nextfile' non può essere chiamato da una regola BEGIN"
-#: eval.c:823
+#: eval.c:826
msgid "`nextfile' cannot be called from an END rule"
msgstr "`nextfile' non può essere chiamato da una regola END"
-#: eval.c:872
+#: eval.c:875
msgid "statement has no effect"
msgstr "istruzione che non fa nulla"
-#: eval.c:915 eval.c:1873
+#: eval.c:952 eval.c:1893
#, c-format
msgid "can't use function name `%s' as variable or array"
msgstr "non posso usare nome di funzione `%s' come variabile o vettore"
-#: eval.c:922 eval.c:928
+#: eval.c:959 eval.c:965
#, c-format
msgid "reference to uninitialized argument `%s'"
msgstr "referenza ad argomento non inizializzato `%s'"
-#: eval.c:937 eval.c:1882
+#: eval.c:974 eval.c:1902
#, c-format
msgid "reference to uninitialized variable `%s'"
msgstr "referenza a variabile non inizializzata `%s'"
-#: eval.c:1083
+#: eval.c:1120
msgid ""
"concatenation: side effects in one expression have changed the length of "
"another!"
@@ -828,49 +848,44 @@ msgstr ""
"concatenatione: effetti secondari in una espressione hanno modificato la "
"lunghezza di un'altra espressione!"
-#: eval.c:1162
+#: eval.c:1200
msgid "assignment used in conditional context"
msgstr "assegnamento usato nel contesto di un test condizionale"
-#: eval.c:1252
+#: eval.c:1278
msgid "division by zero attempted"
msgstr "tentativo di dividere per zero"
-#: eval.c:1267
+#: eval.c:1293
#, c-format
msgid "division by zero attempted in `%%'"
msgstr "divisione per zero tentata in `%%'"
-#: eval.c:1282 profile.c:713
+#: eval.c:1308 profile.c:714
#, c-format
msgid "illegal type (%s) in tree_eval"
msgstr "tipo non ammesso (%s) in 'tree_eval'"
-#: eval.c:1459
+#: eval.c:1471
msgid "division by zero attempted in `/='"
msgstr "divisione per zero tentata in `/='"
-#: eval.c:1477
+#: eval.c:1493
#, c-format
msgid "division by zero attempted in `%%='"
msgstr "divisione per zero tentata in `%%='"
-#: eval.c:1738
+#: eval.c:1758
#, c-format
msgid "function `%s' called with more arguments than declared"
msgstr "funzione `%s' chiamata con più argomenti di quelli previsti"
-#: eval.c:1782
+#: eval.c:1802
#, c-format
msgid "function `%s' not defined"
msgstr "funzione `%s' non definita"
-#: eval.c:1788
-#, c-format
-msgid "function %s called\n"
-msgstr "funzione %s chiamata\n"
-
-#: eval.c:1845
+#: eval.c:1865
#, c-format
msgid ""
"\n"
@@ -881,42 +896,42 @@ msgstr ""
"\t# 'Stack' (Pila) Chiamate Funzione:\n"
"\n"
-#: eval.c:1848
+#: eval.c:1868
#, c-format
msgid "\t# -- main --\n"
msgstr "\t# -- principale --\n"
-#: eval.c:2003
+#: eval.c:2023
msgid "attempt to field reference from non-numeric value"
msgstr "tentativo di referenziare campo da valore non numerico"
-#: eval.c:2005
+#: eval.c:2025
msgid "attempt to reference from null string"
msgstr "tentativo to referenziare da stringa nulla"
-#: eval.c:2011
+#: eval.c:2031
#, c-format
msgid "attempt to access field %d"
msgstr "tentativo di accedere al campo %d"
-#: eval.c:2032 eval.c:2039 profile.c:934
+#: eval.c:2052 eval.c:2059 profile.c:935
msgid "assignment is not allowed to result of builtin function"
msgstr "assegnamento non permesso al risultato di una funzione interna"
-#: eval.c:2103
+#: eval.c:2123
msgid "`IGNORECASE' is a gawk extension"
msgstr "`IGNORECASE' è un'estensione gawk"
-#: eval.c:2133
+#: eval.c:2153
msgid "`BINMODE' is a gawk extension"
msgstr "`BINMODE' è un'estensione gawk"
-#: eval.c:2255
+#: eval.c:2275
#, c-format
msgid "bad `%sFMT' specification `%s'"
msgstr "specificazione invalida `%sFMT' `%s'"
-#: eval.c:2333
+#: eval.c:2353
msgid "turning off `--lint' due to assignment to `LINT'"
msgstr "disabilito `--lint' a causa di assegnamento a `LINT'"
@@ -967,8 +982,8 @@ msgstr "estensione: funzione di nome `%s' definita in precedenza"
#: ext.c:201
#, c-format
-msgid "function `%s' defined to take no more than `%d' argument(s)"
-msgstr "funzione `%s' definita con al massimo `%d' argumenti/o"
+msgid "function `%s' defined to take no more than %d argument(s)"
+msgstr "funzione `%s' definita per avere al massimo %d argumenti/o"
#: ext.c:204
#, c-format
@@ -989,551 +1004,555 @@ msgstr "funzione `%s': argomento #%d: tentativo di usare vettore come scalare"
msgid "Operation Not Supported"
msgstr "Operazione Non Supportata"
-#: field.c:315
+#: field.c:326
msgid "NF set to negative value"
msgstr "NF impostato a un valore negativo"
-#: field.c:808
+#: field.c:819
msgid "split: second argument is not an array"
msgstr "split: il secondo argomento non è un vettore"
-#: field.c:842
+#: field.c:853
msgid "split: null string for third arg is a gawk extension"
msgstr "split: la stringa nulla come terzo arg. è un'estensione gawk"
-#: field.c:894
+#: field.c:905
msgid "`FIELDWIDTHS' is a gawk extension"
msgstr "`FIELDWIDTHS' è un'estensione gawk"
-#: field.c:921
+#: field.c:935 field.c:946
#, c-format
-msgid "field %d in FIELDWIDTHS, must be > 0"
-msgstr "campo %d in FIELDWIDTHS, deve essere > 0"
+msgid "invalid FIELDWIDTHS value, near `%s'"
+msgstr "valore di FIELDWIDTHS invalido, vicino a `%s'"
-#: field.c:994
+#: field.c:1027
msgid "null string for `FS' is a gawk extension"
msgstr "la stringa nulla usata come `FS' è un'estensione gawk"
-#: getopt.c:692 getopt.c:711
+#: getopt.c:571 getopt.c:590
#, c-format
msgid "%s: option `%s' is ambiguous\n"
msgstr "%s: opzione `%s' ambigua\n"
-#: getopt.c:744 getopt.c:748
+#: getopt.c:623 getopt.c:627
#, c-format
msgid "%s: option `--%s' doesn't allow an argument\n"
msgstr "%s: opzione `--%s' non prevede un argomento\n"
-#: getopt.c:757 getopt.c:762
+#: getopt.c:636 getopt.c:641
#, c-format
msgid "%s: option `%c%s' doesn't allow an argument\n"
msgstr "%s: opzione `%c%s' non prevede un argomento\n"
-#: getopt.c:807 getopt.c:829 getopt.c:1159 getopt.c:1181
+#: getopt.c:687 getopt.c:709 getopt.c:1040 getopt.c:1062
#, c-format
msgid "%s: option `%s' requires an argument\n"
msgstr "%s: opzione `%s' richiede un argomento\n"
-#: getopt.c:867 getopt.c:870
+#: getopt.c:747 getopt.c:750
#, c-format
msgid "%s: unrecognized option `--%s'\n"
msgstr "%s: opzione sconosciuta `--%s'\n"
-#: getopt.c:878 getopt.c:881
+#: getopt.c:758 getopt.c:761
#, c-format
msgid "%s: unrecognized option `%c%s'\n"
msgstr "%s: opzione sconosciuta `%c%s'\n"
-#: getopt.c:936 getopt.c:939
+#: getopt.c:816 getopt.c:819
#, c-format
msgid "%s: illegal option -- %c\n"
msgstr "%s: opzione non permessa -- %c\n"
-#: getopt.c:945 getopt.c:948
+#: getopt.c:825 getopt.c:828
#, c-format
msgid "%s: invalid option -- %c\n"
msgstr "%s: opzione non valida -- %c\n"
-#: getopt.c:1003 getopt.c:1022 getopt.c:1234 getopt.c:1255 main.c:433
+#: getopt.c:883 getopt.c:902 getopt.c:1115 getopt.c:1136 main.c:448
#, c-format
msgid "%s: option requires an argument -- %c\n"
msgstr "%s: l'opzione richiede un argomento -- %c\n"
-#: getopt.c:1074 getopt.c:1093
+#: getopt.c:955 getopt.c:974
#, c-format
msgid "%s: option `-W %s' is ambiguous\n"
msgstr "%s: opzione `-W %s' ambigua\n"
-#: getopt.c:1117 getopt.c:1138
+#: getopt.c:998 getopt.c:1019
#, c-format
msgid "%s: option `-W %s' doesn't allow an argument\n"
msgstr "%s: opzione `-W %s' non prevede un argomento\n"
-#: io.c:308
+#: io.c:307
#, c-format
msgid "cannot open file `%s' for reading (%s)"
msgstr "non riesco ad aprire file `%s' in lettura (%s)"
-#: io.c:395
+#: io.c:398
#, c-format
msgid "close of fd %d (`%s') failed (%s)"
msgstr "chiusura di fd %d (`%s') fallita (%s)"
-#: io.c:533
+#: io.c:536
#, c-format
msgid "invalid tree type %s in redirect()"
msgstr "tipo di albero invalido %s in redirect()"
-#: io.c:539
+#: io.c:542
#, c-format
msgid "expression in `%s' redirection only has numeric value"
msgstr "espressione nella re-direzione `%s' ha solo un valore numerico"
-#: io.c:545
+#: io.c:548
#, c-format
msgid "expression for `%s' redirection has null string value"
msgstr "espressione nella re-direzione `%s' ha per valore la stringa nulla"
-#: io.c:550
+#: io.c:553
#, c-format
msgid "filename `%s' for `%s' redirection may be result of logical expression"
msgstr ""
"nome file `%s' per la re-direzione `%s' può essere il risultato di una "
"espressione logica"
-#: io.c:588
+#: io.c:591
#, c-format
msgid "unnecessary mixing of `>' and `>>' for file `%.*s'"
msgstr "mistura non necessaria di `>' e `>>' per il file `%.*s'"
-#: io.c:640
+#: io.c:643
#, c-format
msgid "can't open pipe `%s' for output (%s)"
msgstr "non posso aprire 'pipe' `%s' in scrittura (%s)"
-#: io.c:649
+#: io.c:652
#, c-format
msgid "can't open pipe `%s' for input (%s)"
msgstr "non posso aprire 'pipe' `%s' in lettura (%s)"
-#: io.c:662
+#: io.c:665
#, c-format
msgid "can't open two way socket `%s' for input/output (%s)"
msgstr ""
"non posso aprire 'socket' bidirezionale `%s' per lettura/scrittura (%s)"
-#: io.c:666
+#: io.c:669
#, c-format
msgid "can't open two way pipe `%s' for input/output (%s)"
msgstr "non posso aprire 'pipe' bidirezionale `%s' per lettura/scrittura (%s)"
-#: io.c:742
+#: io.c:745
#, c-format
msgid "can't redirect from `%s' (%s)"
msgstr "non posso re-dirigere da `%s' (%s)"
-#: io.c:745
+#: io.c:748
#, c-format
msgid "can't redirect to `%s' (%s)"
msgstr "non posso re-dirigere a `%s' (%s)"
-#: io.c:784
+#: io.c:787
msgid ""
"reached system limit for open files: starting to multiplex file descriptors"
msgstr ""
"numero massimo consentito di file aperti raggiunto: comincio a riutilizzare "
"i descrittori di file"
-#: io.c:800
+#: io.c:803
#, c-format
msgid "close of `%s' failed (%s)."
msgstr "chiusura di `%s' fallita (%s)."
-#: io.c:808
+#: io.c:811
msgid "too many pipes or input files open"
msgstr "troppe 'pipe' o file di input aperti"
-#: io.c:831
+#: io.c:834
msgid "close: second argument must be `to' or `from'"
msgstr "close: il secondo argomento deve essere `a' o `da'"
-#: io.c:845
+#: io.c:848
#, c-format
msgid "close: `%.*s' is not an open file, pipe or co-process"
msgstr "close: `%.*s' non è un file aperto, una 'pipe' o un co-processo"
-#: io.c:849
+#: io.c:852
msgid "close of redirection that was never opened"
msgstr "chiusura di una re-direzione mai aperta"
-#: io.c:945
+#: io.c:948
#, c-format
msgid "close: redirection `%s' not opened with `|&', second argument ignored"
msgstr "close: re-direzione `%s' non aperta con `|&', ignoro secondo argomento"
-#: io.c:960
+#: io.c:964
#, c-format
msgid "failure status (%d) on pipe close of `%s' (%s)"
msgstr "errore ritornato (%d) dalla chiusura della 'pipe' `%s' (%s)"
-#: io.c:963
+#: io.c:967
#, c-format
msgid "failure status (%d) on file close of `%s' (%s)"
msgstr "errore ritornato (%d) dalla chiusura del file `%s' (%s)"
-#: io.c:983
+#: io.c:987
#, c-format
msgid "no explicit close of socket `%s' provided"
msgstr "nessuna chiusura esplicita richiesta per 'socket' `%s'"
-#: io.c:986
+#: io.c:990
#, c-format
msgid "no explicit close of co-process `%s' provided"
msgstr "nessuna chiusura esplicita richiesta per co-processo `%s'"
-#: io.c:989
+#: io.c:993
#, c-format
msgid "no explicit close of pipe `%s' provided"
msgstr "nessuna chiusura esplicita richiesta per 'pipe' `%s'"
-#: io.c:992
+#: io.c:996
#, c-format
msgid "no explicit close of file `%s' provided"
msgstr "nessuna chiusura esplicita richiesta per file `%s'"
-#: io.c:1021 io.c:1075
+#: io.c:1025 io.c:1080 main.c:718 main.c:756
#, c-format
msgid "error writing standard output (%s)"
msgstr "errore scrivendo 'standard output' (%s)"
-#: io.c:1025 io.c:1079
+#: io.c:1029 io.c:1085
#, c-format
msgid "error writing standard error (%s)"
msgstr "errore scrivendo 'standard error' (%s)"
-#: io.c:1033
+#: io.c:1037
#, c-format
msgid "pipe flush of `%s' failed (%s)."
msgstr "scaricamento di 'pipe' `%s' fallita (%s)."
-#: io.c:1036
+#: io.c:1040
#, c-format
msgid "co-process flush of pipe to `%s' failed (%s)."
msgstr "scaricamento da co-processo di 'pipe' a `%s' fallita (%s)."
-#: io.c:1039
+#: io.c:1043
#, c-format
msgid "file flush of `%s' failed (%s)."
msgstr "scaricamento di file `%s' fallita (%s)."
-#: io.c:1198
+#: io.c:1205
msgid "/inet/raw client not ready yet, sorry"
msgstr "spiacente, 'client' /inet/raw non ancora pronto"
-#: io.c:1200 io.c:1237
+#: io.c:1207 io.c:1244
msgid "only root may use `/inet/raw'."
msgstr "solo root può usare `/inet/raw'."
-#: io.c:1235
+#: io.c:1242
msgid "/inet/raw server not ready yet, sorry"
msgstr "spiacente, 'server' /inet/raw non ancora pronto"
-#: io.c:1325
+#: io.c:1332
#, c-format
msgid "no (known) protocol supplied in special filename `%s'"
msgstr "nessuno protocollo (conosciuto) specificato nel filename speciale `%s'"
-#: io.c:1343
+#: io.c:1350
#, c-format
msgid "special file name `%s' is incomplete"
msgstr "nome file speciale `%s' incompleto"
-#: io.c:1355
+#: io.c:1362
#, c-format
msgid "local port invalid in `%s'"
msgstr "porta locale invalida in `%s'"
-#: io.c:1367
+#: io.c:1374
msgid "must supply a remote hostname to `/inet'"
msgstr "va fornito nome di 'host' remoto a `/inet'"
-#: io.c:1382
+#: io.c:1389
msgid "must supply a remote port to `/inet'"
msgstr "va fornita porta remota a `/inet'"
-#: io.c:1388
+#: io.c:1395
#, c-format
msgid "remote port invalid in `%s'"
msgstr "porta remota invalida in `%s'"
-#: io.c:1398
+#: io.c:1405
msgid "TCP/IP communications are not supported"
msgstr "comunicazioni TCP/IP non supportate"
-#: io.c:1407 io.c:1588
+#: io.c:1414 io.c:1595
#, c-format
msgid "file `%s' is a directory"
msgstr "file `%s' è una 'directory'"
-#: io.c:1477
+#: io.c:1484
#, c-format
msgid "use `PROCINFO[\"%s\"]' instead of `%s'"
msgstr "usa `PROCINFO[\"%s\"]' invece che `%s'"
-#: io.c:1509
+#: io.c:1516
msgid "use `PROCINFO[...]' instead of `/dev/user'"
msgstr "usa `PROCINFO[...]' invece che `/dev/user'"
-#: io.c:1574 io.c:1748
+#: io.c:1581 io.c:1763
#, c-format
msgid "could not open `%s', mode `%s'"
msgstr "non riesco ad aprire `%s', modo `%s'"
-#: io.c:1799
+#: io.c:1814
#, c-format
msgid "close of master pty failed (%s)"
msgstr "fallita chiusura di 'pty' principale (%s)"
-#: io.c:1801 io.c:1953 io.c:2105
+#: io.c:1816 io.c:1968 io.c:2119
#, c-format
msgid "close of stdout in child failed (%s)"
msgstr "fallita chiusura di 'stdout' nel processo-figlio (%s)"
-#: io.c:1804
+#: io.c:1819
#, c-format
msgid "moving slave pty to stdout in child failed (dup: %s)"
msgstr ""
"fallito trasferimento di 'pty' secondaria a 'stdout' nel processo-figlio "
"(dup: %s)"
-#: io.c:1806 io.c:1958
+#: io.c:1821 io.c:1973
#, c-format
msgid "close of stdin in child failed (%s)"
msgstr "fallita chiusura di 'stdin' nel processo-figlio (%s)"
-#: io.c:1809
+#: io.c:1824
#, c-format
msgid "moving slave pty to stdin in child failed (dup: %s)"
msgstr ""
"fallito trasferimento di 'pty' secondaria a 'stdin' nel processo-figlio "
"(dup: %s)"
-#: io.c:1811 io.c:1830
+#: io.c:1826 io.c:1845
#, c-format
msgid "close of slave pty failed (%s)"
msgstr "fallita chiusura di 'pty' secondaria (%s)"
-#: io.c:1904 io.c:1956 io.c:2086 io.c:2108
+#: io.c:1919 io.c:1971 io.c:2100 io.c:2122
#, c-format
msgid "moving pipe to stdout in child failed (dup: %s)"
msgstr "fallito passaggio di 'pipe' a 'stdout' nel processo-figlio (dup: %s)"
-#: io.c:1908 io.c:1961
+#: io.c:1923 io.c:1976
#, c-format
msgid "moving pipe to stdin in child failed (dup: %s)"
msgstr "fallito passaggio di pipe a 'stdin' nel processo-figlio (dup: %s)"
-#: io.c:1925 io.c:2099
+#: io.c:1940 io.c:2113
msgid "restoring stdout in parent process failed\n"
msgstr "fallito ripristino di 'stdout' nel processo-padre\n"
-#: io.c:1930
+#: io.c:1945
msgid "restoring stdin in parent process failed\n"
msgstr "fallito ripristino di 'stdin' nel processo-padre\n"
-#: io.c:1964 io.c:2110 io.c:2121
+#: io.c:1979 io.c:2124 io.c:2135
#, c-format
msgid "close of pipe failed (%s)"
msgstr "fallita chiusura di 'pipe' (%s)"
-#: io.c:2009
+#: io.c:2024
msgid "`|&' not supported"
msgstr "`|&' non supportato"
-#: io.c:2076
+#: io.c:2090
#, c-format
msgid "cannot open pipe `%s' (%s)"
msgstr "non riesco ad aprire 'pipe' `%s' (%s)"
-#: io.c:2117
+#: io.c:2131
#, c-format
msgid "cannot create child process for `%s' (fork: %s)"
msgstr "non riesco a creare processo-figlio per `%s' (fork: %s)"
-#: io.c:2460
+#: io.c:2506
#, c-format
msgid "data file `%s' is empty"
msgstr "file dati `%s' vuoto"
-#: io.c:2503 io.c:2511
+#: io.c:2547 io.c:2555
msgid "could not allocate more input memory"
msgstr "non riesco ad allocare ulteriore memoria per l'input"
-#: io.c:2869 io.c:2932
+#: io.c:2919 io.c:2984
#, c-format
msgid "error reading input file `%s': %s"
msgstr "errore leggendo file di input `%s': %s"
-#: io.c:3057
+#: io.c:3109
msgid "multicharacter value of `RS' is a gawk extension"
msgstr "valore multicarattere per `RS' è un'estensione gawk"
-#: main.c:323
+#: main.c:338
msgid "`-m[fr]' option irrelevant in gawk"
msgstr "`-m[fr]' opzione irrilevante per gawk"
-#: main.c:325
+#: main.c:340
msgid "-m option usage: `-m[fr] nnn'"
msgstr "-m uso opzione: `-m[fr] nnn'"
-#: main.c:342
+#: main.c:357
#, c-format
msgid "%s: option `-W %s' unrecognized, ignored\n"
msgstr "%s: opzione `-W %s' non riconosciuta, ignorata\n"
-#: main.c:379
+#: main.c:394
msgid "empty argument to `--source' ignored"
msgstr "argomento di `--source' mancante, comando ignorato"
-#: main.c:450
+#: main.c:467
msgid "environment variable `POSIXLY_CORRECT' set: turning on `--posix'"
msgstr "variable d'ambiente `POSIXLY_CORRECT' impostata: attivo `--posix'"
-#: main.c:455
+#: main.c:472
msgid "`--posix' overrides `--traditional'"
msgstr "`--posix' annulla `--traditional'"
-#: main.c:466
+#: main.c:483
msgid "`--posix'/`--traditional' overrides `--non-decimal-data'"
msgstr "`--posix'/`--traditional' annulla `--non-decimal-data'"
-#: main.c:470
+#: main.c:487
#, c-format
msgid "running %s setuid root may be a security problem"
msgstr "eseguire %s con 'setuid' root può essere un rischio per la sicurezza"
-#: main.c:511
+#: main.c:528
#, c-format
msgid "can't set binary mode on stdin (%s)"
msgstr "non posso impostare modalità binaria su 'stdin'(%s)"
-#: main.c:514
+#: main.c:531
#, c-format
msgid "can't set binary mode on stdout (%s)"
msgstr "non posso impostare modalità binaria su 'stdout'(%s)"
-#: main.c:516
+#: main.c:533
#, c-format
msgid "can't set binary mode on stderr (%s)"
msgstr "non posso impostare modalità binaria su 'stderr'(%s)"
-#: main.c:546
+#: main.c:572
msgid "no program text at all!"
msgstr "manca del tutto il testo del programma!"
-#: main.c:623
+#: main.c:665
#, c-format
msgid "Usage: %s [POSIX or GNU style options] -f progfile [--] file ...\n"
msgstr "Uso: %s [opzioni in stile POSIX o GNU] -f fileprog [--] file ...\n"
-#: main.c:625
+#: main.c:667
#, c-format
msgid "Usage: %s [POSIX or GNU style options] [--] %cprogram%c file ...\n"
msgstr "Usage: %s [opzioni in stile POSIX o GNU] [--] %cprogramma%c file ...\n"
-#: main.c:630
+#: main.c:672
msgid "POSIX options:\t\tGNU long options:\n"
msgstr "Opzioni POSIX:\t\topzioni lunghe GNU:\n"
-#: main.c:631
+#: main.c:673
msgid "\t-f progfile\t\t--file=progfile\n"
msgstr "\t-f fileprog\t\t--file=fileprog\n"
-#: main.c:632
+#: main.c:674
msgid "\t-F fs\t\t\t--field-separator=fs\n"
msgstr "\t-F fs\t\t\t--field-separator=fs\n"
-#: main.c:633
+#: main.c:675
msgid "\t-v var=val\t\t--assign=var=val\n"
msgstr "\t-v var=valore\t\t--assign=var=valore\n"
-#: main.c:634
+#: main.c:676
msgid "\t-m[fr] val\n"
msgstr "\t-m[fr] valore\n"
-#: main.c:635
+#: main.c:677
msgid "\t-W compat\t\t--compat\n"
msgstr "\t-W compat\t\t--compat\n"
-#: main.c:636
+#: main.c:678
msgid "\t-W copyleft\t\t--copyleft\n"
msgstr "\t-W copyleft\t\t--copyleft\n"
-#: main.c:637
+#: main.c:679
msgid "\t-W copyright\t\t--copyright\n"
msgstr "\t-W copyright\t\t--copyright\n"
-#: main.c:638
+#: main.c:680
msgid "\t-W dump-variables[=file]\t--dump-variables[=file]\n"
msgstr "\t-W dump-variables[=file]\t--dump-variables[=file]\n"
-#: main.c:639
+#: main.c:681
+msgid "\t-W exec=file\t\t--exec=file\n"
+msgstr "\t-W exec[=file]\t--exec[=file]\n"
+
+#: main.c:682
msgid "\t-W gen-po\t\t--gen-po\n"
msgstr "\t-W gen-po\t\t--gen-po\n"
-#: main.c:640
+#: main.c:683
msgid "\t-W help\t\t\t--help\n"
msgstr "\t-W help\t\t\t--help\n"
-#: main.c:641
+#: main.c:684
msgid "\t-W lint[=fatal]\t\t--lint[=fatal]\n"
msgstr "\t-W lint[=fatal]\t\t--lint[=fatal]\n"
-#: main.c:642
+#: main.c:685
msgid "\t-W lint-old\t\t--lint-old\n"
msgstr "\t-W lint-old\t\t--lint-old\n"
-#: main.c:643
+#: main.c:686
msgid "\t-W non-decimal-data\t--non-decimal-data\n"
msgstr "\t-W non-decimal-data\t--non-decimal-data\n"
-#: main.c:645
+#: main.c:688
msgid "\t-W nostalgia\t\t--nostalgia\n"
msgstr "\t-W nostalgia\t\t--nostalgia\n"
-#: main.c:648
+#: main.c:691
msgid "\t-W parsedebug\t\t--parsedebug\n"
msgstr "\t-W parsedebug\t\t--parsedebug\n"
-#: main.c:650
+#: main.c:693
msgid "\t-W profile[=file]\t--profile[=file]\n"
msgstr "\t-W profile[=file]\t--profile[=file]\n"
-#: main.c:651
+#: main.c:694
msgid "\t-W posix\t\t--posix\n"
msgstr "\t-W posix\t\t--posix\n"
-#: main.c:652
+#: main.c:695
msgid "\t-W re-interval\t\t--re-interval\n"
msgstr "\t-W re-interval\t\t--re-interval\n"
-#: main.c:653
+#: main.c:696
msgid "\t-W source=program-text\t--source=program-text\n"
msgstr "\t-W source=testo-programma\t--source=testo-programma\n"
-#: main.c:654
+#: main.c:697
msgid "\t-W traditional\t\t--traditional\n"
msgstr "\t-W traditional\t\t--traditional\n"
-#: main.c:655
+#: main.c:698
msgid "\t-W usage\t\t--usage\n"
msgstr "\t-W usage\t\t--usage\n"
-#: main.c:656
+#: main.c:699
msgid "\t-W version\t\t--version\n"
msgstr "\t-W version\t\t--version\n"
-#: main.c:660
+#: main.c:703
msgid ""
"\n"
"To report bugs, see node `Bugs' in `gawk.info', which is\n"
@@ -1545,7 +1564,7 @@ msgstr ""
"sezione `Reporting Problems and Bugs' nella versione a stampa.\n"
"\n"
-#: main.c:664
+#: main.c:707
msgid ""
"gawk is a pattern scanning and processing language.\n"
"By default it reads standard input and writes standard output.\n"
@@ -1555,7 +1574,7 @@ msgstr ""
"Senza parametri, legge da 'standard input' e scrive su 'standard output'.\n"
"\n"
-#: main.c:668
+#: main.c:711
msgid ""
"Examples:\n"
"\tgawk '{ sum += $1 }; END { print sum }' file\n"
@@ -1565,7 +1584,7 @@ msgstr ""
"\tgawk '{ sum += $1 }; END { print sum }' file\n"
"\tgawk -F: '{ print $1 }' /etc/passwd\n"
-#: main.c:685
+#: main.c:731
#, c-format
msgid ""
"Copyright (C) 1989, 1991-%d Free Software Foundation.\n"
@@ -1584,7 +1603,7 @@ msgstr ""
"Licenza, o (a tua scelta) a una qualsiasi versione successiva.\n"
"\n"
-#: main.c:693
+#: main.c:739
msgid ""
"This program is distributed in the hope that it will be useful,\n"
"but WITHOUT ANY WARRANTY; without even the implied warranty of\n"
@@ -1598,21 +1617,23 @@ msgstr ""
"Vedi la 'GNU General Public License' per ulteriori dettagli.\n"
"\n"
-#: main.c:699
+#: main.c:745
msgid ""
"You should have received a copy of the GNU General Public License\n"
"along with this program; if not, write to the Free Software\n"
-"Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.\n"
+"Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, "
+"USA.\n"
msgstr ""
"Dovresti aver ricevuto una copia della 'GNU General Public License'\n"
"assieme a questo programma; se non è così, scrivi alla Free Software\n"
-"Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.\n"
+"Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, "
+"USA.\n"
-#: main.c:733
+#: main.c:781
msgid "-Ft does not set FS to tab in POSIX awk"
msgstr "-Ft non imposta FS a 'tab' nell'awk POSIX"
-#: main.c:962
+#: main.c:1018
#, c-format
msgid ""
"%s: `%s' argument to `-v' not in `var=value' form\n"
@@ -1621,35 +1642,35 @@ msgstr ""
"%s: `%s' argomento di `-v' non in forma `var=valore'\n"
"\n"
-#: main.c:982
+#: main.c:1038
#, c-format
msgid "`%s' is not a legal variable name"
msgstr "`%s' non è un nome di variabile ammesso"
-#: main.c:985
+#: main.c:1041
#, c-format
msgid "`%s' is not a variable name, looking for file `%s=%s'"
msgstr "`%s' non è un nome di variabile, cerco il file `%s=%s'"
-#: main.c:1018
+#: main.c:1074
msgid "floating point exception"
msgstr "eccezione floating point"
-#: main.c:1025
+#: main.c:1081
msgid "fatal error: internal error"
msgstr "errore fatale: errore interno"
-#: main.c:1075
+#: main.c:1132
#, c-format
msgid "no pre-opened fd %d"
msgstr "manca 'fd' predefinita %d"
-#: main.c:1082
+#: main.c:1139
#, c-format
msgid "could not pre-open /dev/null for fd %d"
msgstr "non riesco a predefinire /dev/null per 'fd' %d"
-#: main.c:1105 main.c:1114
+#: main.c:1162 main.c:1171
#, c-format
msgid "could not find groups: %s"
msgstr "non riesco a trovare gruppi: %s"
@@ -1671,23 +1692,23 @@ msgstr "errore: "
msgid "fatal: "
msgstr "fatale: "
-#: node.c:58 node.c:65 node.c:74 node.c:88 node.c:115
+#: node.c:59 node.c:66 node.c:75 node.c:90 node.c:119
msgid "can't convert string to float"
msgstr "non riesco a convertire stringa a valore in virgola mobile"
-#: node.c:357
+#: node.c:414
msgid "backslash at end of string"
msgstr "'\\' a fine stringa"
-#: node.c:541
+#: node.c:604
msgid "POSIX does not allow `\\x' escapes"
msgstr "POSIX non permette formato `\\x'"
-#: node.c:547
+#: node.c:610
msgid "no hex digits in `\\x' escape sequence"
msgstr "niente cifre esadecimanli nel formato `\\x'"
-#: node.c:581
+#: node.c:644
#, c-format
msgid "escape sequence `\\%c' treated as plain `%c'"
msgstr " sequenza in formato `\\%c' considerata come semplice `%c'"
@@ -1707,21 +1728,21 @@ msgstr "non riesco ad aprire `%s' in scrittura: %s"
msgid "internal error: %s with null vname"
msgstr "errore interno: %s con 'vname' nullo"
-#: profile.c:530
+#: profile.c:531
msgid "# treated internally as `delete'"
msgstr "# gestito internamente come 'delete' (cancellazione)"
-#: profile.c:1167
+#: profile.c:1168
#, c-format
msgid "# this is a dynamically loaded extension function"
msgstr "# questa è una funzione di estensione caricata dinamicamente"
-#: profile.c:1198
+#: profile.c:1199
#, c-format
msgid "\t# gawk profile, created %s\n"
msgstr "\t# profilo gawk, creato %s\n"
-#: profile.c:1201
+#: profile.c:1202
#, c-format
msgid ""
"\t# BEGIN block(s)\n"
@@ -1730,7 +1751,7 @@ msgstr ""
"\t# blocco(hi) BEGIN\n"
"\n"
-#: profile.c:1211
+#: profile.c:1212
#, c-format
msgid ""
"\t# Rule(s)\n"
@@ -1739,7 +1760,7 @@ msgstr ""
"\t# Regola(e)\n"
"\n"
-#: profile.c:1217
+#: profile.c:1218
#, c-format
msgid ""
"\t# END block(s)\n"
@@ -1748,7 +1769,7 @@ msgstr ""
"\t# blocco(hi) END\n"
"\n"
-#: profile.c:1237
+#: profile.c:1238
#, c-format
msgid ""
"\n"
@@ -1757,79 +1778,79 @@ msgstr ""
"\n"
"\t# Funzioni, listate in ordine alfabetico\n"
-#: profile.c:1452
+#: profile.c:1453
#, c-format
msgid "unexpected type %s in prec_level"
msgstr "tipo non previsto %s in 'prec_level'"
-#: regcomp.c:150
+#: regcomp.c:160
msgid "Success"
msgstr "Successo"
-#: regcomp.c:153
+#: regcomp.c:163
msgid "No match"
msgstr "Nessuna corrispondenza"
-#: regcomp.c:156
+#: regcomp.c:166
msgid "Invalid regular expression"
msgstr "Espressione regolare invalida"
-#: regcomp.c:159
+#: regcomp.c:169
msgid "Invalid collation character"
msgstr "Carattere di ordinamento non valido"
-#: regcomp.c:162
+#: regcomp.c:172
msgid "Invalid character class name"
msgstr "Nome di 'classe di caratteri' invalido"
-#: regcomp.c:165
+#: regcomp.c:175
msgid "Trailing backslash"
msgstr "'\\' finale"
-#: regcomp.c:168
+#: regcomp.c:178
msgid "Invalid back reference"
msgstr "Riferimento indietro invalido"
-#: regcomp.c:171
+#: regcomp.c:181
msgid "Unmatched [ or [^"
msgstr "[ or [^ non chiusa"
-#: regcomp.c:174
+#: regcomp.c:184
msgid "Unmatched ( or \\("
msgstr "( or \\( non chiusa"
-#: regcomp.c:177
+#: regcomp.c:187
msgid "Unmatched \\{"
msgstr "\\{ non chiusa"
-#: regcomp.c:180
+#: regcomp.c:190
msgid "Invalid content of \\{\\}"
msgstr "Contenuto di \\{\\} invalido"
-#: regcomp.c:183
+#: regcomp.c:193
msgid "Invalid range end"
msgstr "Fine di intervallo invalido"
-#: regcomp.c:186
+#: regcomp.c:196
msgid "Memory exhausted"
msgstr "Memoria esaurita"
-#: regcomp.c:189
+#: regcomp.c:199
msgid "Invalid preceding regular expression"
msgstr "Espressione regolare precedente invalida"
-#: regcomp.c:192
+#: regcomp.c:202
msgid "Premature end of regular expression"
msgstr "Fine di expressione regolare inaspettata"
-#: regcomp.c:195
+#: regcomp.c:205
msgid "Regular expression too big"
msgstr "Espressione regolare troppo complessa"
-#: regcomp.c:198
+#: regcomp.c:208
msgid "Unmatched ) or \\)"
msgstr ") or \\) non aperta"
-#: regcomp.c:668
+#: regcomp.c:688
msgid "No previous regular expression"
msgstr "Nessuna espressione regolare precedente"
diff --git a/po/ja.gmo b/po/ja.gmo
index bda67809..4dffbdef 100644
--- a/po/ja.gmo
+++ b/po/ja.gmo
Binary files differ
diff --git a/po/ja.po b/po/ja.po
index d524a178..194e44f9 100644
--- a/po/ja.po
+++ b/po/ja.po
@@ -5,10 +5,10 @@
#
msgid ""
msgstr ""
-"Project-Id-Version: gawk 3.1.2g\n"
+"Project-Id-Version: gawk 3.1.4l\n"
"Report-Msgid-Bugs-To: arnold@skeeve.com\n"
-"POT-Creation-Date: 2004-07-15 13:02+0300\n"
-"PO-Revision-Date: 2003-08-26 03:06+0900\n"
+"POT-Creation-Date: 2005-07-06 17:20+0300\n"
+"PO-Revision-Date: 2005-06-27 02:37+1000\n"
"Last-Translator: Makoto Hosoya <mhosoya@ozemail.com.au>\n"
"Language-Team: Japanese <translation-team-ja@lists.sourceforge.net>\n"
"MIME-Version: 1.0\n"
@@ -16,9 +16,9 @@ msgstr ""
"Content-Transfer-Encoding: 8bit\n"
#: array.c:112
-#, fuzzy, c-format
+#, c-format
msgid "attempt to use function `%s' as an array"
-msgstr "¥¹¥«¥é¡¼ `%s' ¤òÇÛÎó¤È¤·¤Æ»ÈÍѤ·¤Æ¤¤¤Þ¤¹¡£"
+msgstr "´Ø¿ô `%s' ¤òÇÛÎó¤È¤·¤Æ»ÈÍѤ·¤Æ¤¤¤Þ¤¹¡£"
#: array.c:115
#, c-format
@@ -89,668 +89,681 @@ msgstr "³Æ¥ë¡¼¥ë¤Ë¤Ï¥Ñ¥¿¡¼¥ó¤Þ¤¿¤Ï¥¢¥¯¥·¥ç¥óÉô¤¬É¬¿Ü¤Ç¤¹¡£"
msgid "`%s' is a built-in function, it cannot be redefined"
msgstr "`%s' ¤ÏÁȹþ¤ß´Ø¿ô¤Ç¤¹¡£ºÆÄêµÁ¤Ç¤­¤Þ¤»¤ó¡£"
-#: awkgram.y:314
+#: awkgram.y:313
+msgid "regexp constant `//' looks like a C++ comment, but is not"
+msgstr "Àµµ¬É½¸½Äê¿ô `//' ¤Ï C++¥³¥á¥ó¥È¤Ë»÷¤Æ¤¤¤Þ¤¹¤¬¡¢°ã¤¤¤Þ¤¹¡£"
+
+#: awkgram.y:316
#, c-format
msgid "regexp constant `/%s/' looks like a C comment, but is not"
msgstr "Àµµ¬É½¸½Äê¿ô `/%s/' ¤Ï C¥³¥á¥ó¥È¤Ë»÷¤Æ¤¤¤Þ¤¹¤¬¡¢°ã¤¤¤Þ¤¹¡£"
-#: awkgram.y:341 awkgram.y:619
+#: awkgram.y:343 awkgram.y:623
msgid "statement may have no effect"
msgstr "Ì¿Îáʸ¤Ë¤Ï¸ú²Ì¤¬Ìµ¤¤¤«¤â¤·¤ì¤Þ¤»¤ó¡£"
-#: awkgram.y:436 awkgram.y:456
+#: awkgram.y:440 awkgram.y:460
#, c-format
msgid "`%s' used in %s action"
msgstr "`%s' ¤¬ %s ¤Î¥¢¥¯¥·¥ç¥ó¤Ç»È¤ï¤ì¤Þ¤·¤¿¡£"
-#: awkgram.y:449 awkgram.y:452
+#: awkgram.y:453 awkgram.y:456
msgid "`nextfile' is a gawk extension"
msgstr "`nextfile' ¤Ï gawk ÆÃÍ­¤Î³ÈÄ¥¤Ç¤¹¡£"
-#: awkgram.y:466
+#: awkgram.y:470
msgid "`return' used outside function context"
msgstr "`return' ¤¬´Ø¿ôÄêµÁʸ¤Î³°¤Ç»È¤ï¤ì¤Þ¤·¤¿¡£"
-#: awkgram.y:508
+#: awkgram.y:512
msgid "plain `print' in BEGIN or END rule should probably be `print \"\"'"
msgstr ""
"BEGIN ¤Þ¤¿¤Ï END ¥ë¡¼¥ëÆâ¤Î°ú¿ô¤Î̵¤¤ `print' ¤Ï `print \"\"' ¤À¤È»×¤ï¤ì¤Þ"
"¤¹¡£"
-#: awkgram.y:521 awkgram.y:528
+#: awkgram.y:525 awkgram.y:532
msgid "`delete array' is a gawk extension"
msgstr "`delete array' ¤Ï gawk ÆÃÍ­¤Î³ÈÄ¥¤Ç¤¹¡£"
-#: awkgram.y:536 awkgram.y:543
+#: awkgram.y:540 awkgram.y:547
msgid "`delete(array)' is a non-portable tawk extension"
msgstr "`delete(array)' ¤Ï tawk ÆÃÍ­¤Î³ÈÄ¥¤Ç¤¹¡£Â¾¤Î awk ¤Ç¤Ï»ÈÍѤǤ­¤Þ¤»¤ó¡£"
-#: awkgram.y:587
+#: awkgram.y:591
#, c-format
msgid "duplicate case values in switch body: %s"
msgstr "switch ʸ¤ÎÃæ¤Ë½ÅÊ£¤·¤¿ case Ãͤ¬»ÈÍѤµ¤ì¤Æ¤¤¤Þ¤¹: %s"
-#: awkgram.y:597
+#: awkgram.y:601
msgid "Duplicate `default' detected in switch body"
msgstr "switch ʸ¤ÎÃæ¤Ë `default' ¤¬½ÅÊ£¤·¤Æ¤¤¤Þ¤¹¡£"
-#: awkgram.y:686
+#: awkgram.y:690
msgid "multistage two-way pipelines don't work"
msgstr "¿Ãʳ¬¤ÇÁÐÊý¸þ¥Ñ¥¤¥×¤òÍøÍѤ·¤¿¼°¤Ï»ÈÍѤǤ­¤Þ¤»¤ó¡£"
-#: awkgram.y:777
+#: awkgram.y:781
msgid "regular expression on right of assignment"
msgstr "Àµµ¬É½¸½¤¬ÂåÆþ¼°¤Î±¦Êդ˻ÈÍѤµ¤ì¤Æ¤¤¤Þ¤¹¡£"
-#: awkgram.y:800
+#: awkgram.y:804
msgid "regular expression on left of `~' or `!~' operator"
msgstr "`~' ¤ä `!~' ±é»»»Ò¤Îº¸ÊÕ¤ËÀµµ¬É½¸½¤¬»ÈÍѤµ¤ì¤Æ¤¤¤Þ¤¹¡£"
-#: awkgram.y:808
+#: awkgram.y:812
msgid "regular expression on right of comparison"
msgstr "Èæ³Ó¼°¤Î±¦ÊÕ¤ËÀµµ¬É½¸½¤¬»ÈÍѤµ¤ì¤Æ¤¤¤Þ¤¹¡£"
-#: awkgram.y:875
+#: awkgram.y:879
msgid "non-redirected `getline' undefined inside END action"
msgstr "¥ê¥À¥¤¥ì¥¯¥È¤µ¤ì¤Æ¤¤¤Ê¤¤ `getline' ¤Ï END ¥¢¥¯¥·¥ç¥ó¤Ç¤Ï̤ÄêµÁ¤Ç¤¹¡£"
-#: awkgram.y:902
+#: awkgram.y:906
msgid "call of `length' without parentheses is not portable"
msgstr "³ç¸Ì̵¤·¤Î `length' ¤Ï¾¤Î awk ¤Ç»ÈÍѤǤ­¤Þ¤»¤ó¡£"
-#: awkgram.y:905
+#: awkgram.y:909
msgid "call of `length' without parentheses is deprecated by POSIX"
msgstr "POSIX ¤Ï³ç¸Ì̵¤·¤Ç¤Î `length' ¤Î»ÈÍѤò¿ä¾©¤·¤Þ¤»¤ó¡£"
-#: awkgram.y:958
+#: awkgram.y:962
msgid "use of non-array as array"
msgstr "ÇÛÎó¤Ç¤Ê¤¤¤â¤Î¤òÇÛÎó¤È¤·¤Æ»ÈÍѤ·¤Æ¤¤¤Þ¤¹¡£"
-#: awkgram.y:960
+#: awkgram.y:964
msgid "invalid subscript expression"
msgstr "ź»ú¼°¤¬ÉÔÀµ¤Ç¤¹¡£"
-#: awkgram.y:1158
+#: awkgram.y:1171
msgid "unexpected newline or end of string"
msgstr "ͽÁÛ³°¤Î²þ¹Ô¤Þ¤¿¤Ïʸ»úÎó¤Î½ªÃ¼¤¬¤¢¤ê¤Þ¤¹¡£"
-#: awkgram.y:1254
+#: awkgram.y:1267
msgid "empty program text on command line"
msgstr "¥³¥Þ¥ó¥É¹Ô¤Î¥×¥í¥°¥é¥àɽµ­¤¬¶õ¤Ç¤¹¡£"
-#: awkgram.y:1307
+#: awkgram.y:1320
#, c-format
msgid "can't open source file `%s' for reading (%s)"
msgstr "¥½¡¼¥¹¥Õ¥¡¥¤¥ë `%s' ¤òÆɤ߹þ¤à¤¿¤á¤Ë³«¤±¤Þ¤»¤ó (%s)¡£"
-#: awkgram.y:1384
+#: awkgram.y:1397
#, c-format
msgid "can't read sourcefile `%s' (%s)"
msgstr "¥½¡¼¥¹¥Õ¥¡¥¤¥ë `%s' ¤òÆɤ߹þ¤á¤Þ¤»¤ó (%s)¡£"
-#: awkgram.y:1392
+#: awkgram.y:1405
#, c-format
msgid "source file `%s' is empty"
msgstr "¥½¡¼¥¹¥Õ¥¡¥¤¥ë `%s' ¤Ï¶õ¤Ç¤¹¡£"
-#: awkgram.y:1590 awkgram.y:1700 awkgram.y:1718 awkgram.y:2068 awkgram.y:2153
+#: awkgram.y:1596 awkgram.y:1718 awkgram.y:1736 awkgram.y:2107 awkgram.y:2194
msgid "source file does not end in newline"
msgstr "¥½¡¼¥¹¥Õ¥¡¥¤¥ë¤¬²þ¹Ô¤Ç½ª¤Ã¤Æ¤¤¤Þ¤»¤ó¡£"
-#: awkgram.y:1654
+#: awkgram.y:1658
msgid "unterminated regexp ends with `\\' at end of file"
msgstr "½ªÃ¼¤µ¤ì¤Æ¤¤¤Ê¤¤Àµµ¬É½¸½¤¬¥Õ¥¡¥¤¥ëºÇ¸å¤Î `\\' ¤Ç½ª¤Ã¤Æ¤¤¤Þ¤¹¡£"
-#: awkgram.y:1674
+#: awkgram.y:1682
+#, c-format
+msgid "%s: %d: tawk regex modifier `/.../%c' doesn't work in gawk"
+msgstr "%s: %d: tawk ¤ÎÀµµ¬É½¸½½¤¾þ»Ò `/.../%c' ¤Ï gawk ¤Ç»ÈÍѤǤ­¤Þ¤»¤ó¡£"
+
+#: awkgram.y:1686
+#, c-format
+msgid "tawk regex modifier `/.../%c' doesn't work in gawk"
+msgstr "tawk ¤ÎÀµµ¬É½¸½½¤¾þ»Ò `/.../%c' ¤Ï gawk ¤Ç»ÈÍѤǤ­¤Þ¤»¤ó¡£"
+
+#: awkgram.y:1693
msgid "unterminated regexp"
msgstr "Àµµ¬É½¸½¤¬½ªÃ¼¤µ¤ì¤Æ¤¤¤Þ¤»¤ó¡£"
-#: awkgram.y:1677
+#: awkgram.y:1696
msgid "unterminated regexp at end of file"
msgstr "¥Õ¥¡¥¤¥ë¤ÎÃæ¤ÇÀµµ¬É½¸½¤¬½ªÃ¼¤µ¤ì¤Æ¤¤¤Þ¤»¤ó¡£"
-#: awkgram.y:1744
+#: awkgram.y:1762
msgid "use of `\\ #...' line continuation is not portable"
msgstr "`\\ #...' ·Á¼°¤Î¹Ô·Ñ³¤Ï¾¤Î awk ¤Ç»È¤¨¤Þ¤»¤ó¡£"
-#: awkgram.y:1756
+#: awkgram.y:1774
msgid "backslash not last character on line"
msgstr "¥Ð¥Ã¥¯¥¹¥é¥Ã¥·¥å¤¬¹ÔºÇ¸å¤Îʸ»ú¤Ë¤Ê¤Ã¤Æ¤¤¤Þ¤»¤ó¡£"
-#: awkgram.y:1801
+#: awkgram.y:1819
msgid "POSIX does not allow operator `**='"
msgstr "POSIX ¤Ï±é»»»Ò `**=' ¤òµö²Ä¤·¤Þ¤»¤ó¡£"
-#: awkgram.y:1803
+#: awkgram.y:1821
msgid "old awk does not support operator `**='"
msgstr "±é»»»Ò `**=' ¤Ï¸Å¤¤ awk ¤Ç»È¤¨¤Þ¤»¤ó¡£"
-#: awkgram.y:1812
+#: awkgram.y:1830
msgid "POSIX does not allow operator `**'"
msgstr "POSIX ¤Ç¤Ï±é»»»Ò `**' ¤òµö²Ä¤·¤Æ¤¤¤Þ¤»¤ó¡£"
-#: awkgram.y:1814
+#: awkgram.y:1832
msgid "old awk does not support operator `**'"
msgstr "±é»»»Ò `**' ¤Ï¸Å¤¤ awk ¤Ç»È¤¨¤Þ¤»¤ó¡£"
-#: awkgram.y:1845
+#: awkgram.y:1863
msgid "operator `^=' is not supported in old awk"
msgstr "±é»»»Ò `^=' ¤Ï¸Å¤¤ awk ¤Ç»È¤¨¤Þ¤»¤ó¡£"
-#: awkgram.y:1853
+#: awkgram.y:1871
msgid "operator `^' is not supported in old awk"
msgstr "±é»»»Ò `^' ¤Ï¸Å¤¤ awk ¤Ç»È¤¨¤Þ¤»¤ó¡£"
-#: awkgram.y:1937 awkgram.y:1954
+#: awkgram.y:1955 awkgram.y:1970
msgid "unterminated string"
msgstr "ʸ»úÎ󤬽ªÃ¼¤µ¤ì¤Æ¤¤¤Þ¤»¤ó¡£"
-#: awkgram.y:2114
+#: awkgram.y:2155
#, c-format
msgid "invalid char '%c' in expression"
msgstr "ɽ¸½¤Î char '%c' ¤ÏÉÔÀµ¤Ç¤¹¡£"
-#: awkgram.y:2162
+#: awkgram.y:2203
#, c-format
msgid "`%s' is a gawk extension"
msgstr "`%s' ¤Ï gawk ÆÃÍ­¤Î³ÈÄ¥¤Ç¤¹¡£"
-#: awkgram.y:2165
+#: awkgram.y:2206
#, c-format
msgid "`%s' is a Bell Labs extension"
msgstr "`%s' ¤Ï¥Ù¥ë¸¦µæ½ê¤Ë¤è¤ë³ÈÄ¥¤Ç¤¹¡£"
-#: awkgram.y:2168
+#: awkgram.y:2209
#, c-format
msgid "POSIX does not allow `%s'"
msgstr "POSIX ¤Ï `%s' ¤òµö²Ä¤·¤Þ¤»¤ó¡£"
-#: awkgram.y:2172
+#: awkgram.y:2213
#, c-format
msgid "`%s' is not supported in old awk"
msgstr "`%s' ¤Ï¸Å¤¤ awk ¤Ç»ÈÍѤǤ­¤Þ¤»¤ó¡£"
-#: awkgram.y:2198
+#: awkgram.y:2239
msgid "`goto' considered harmful!\n"
msgstr "`goto' ¤ÏÍ­³²¤Ç¤¹!\n"
-#: awkgram.y:2260
+#: awkgram.y:2301
#, c-format
msgid "%d is invalid as number of arguments for %s"
msgstr "%d ¤Ï %s ¤Ë»È¤¨¤ë°ú¿ô¤Î¿ô¤È¤·¤Æ¤ÏÉÔÀµ¤Ç¤¹¡£"
-#: awkgram.y:2279 awkgram.y:2282
+#: awkgram.y:2320 awkgram.y:2323
msgid "match: third argument is a gawk extension"
msgstr "match: Âè»°°ú¿ô¤Ï gawk ÆÃÍ­¤Î³ÈÄ¥¤Ç¤¹¡£"
-#: awkgram.y:2295
+#: awkgram.y:2336
#, c-format
msgid "%s: string literal as last arg of substitute has no effect"
msgstr "%s: ʸ»úÎó¥ê¥Æ¥é¥ë¤òÃÖ¤­´¹¤¨ºÇ¸å¤Î°ú¿ô¤Ë»ÈÍѤ¹¤ë¤È¸ú²Ì¤¬¤¢¤ê¤Þ¤»¤ó¡£"
-#: awkgram.y:2298
+#: awkgram.y:2339
#, c-format
msgid "%s third parameter is not a changeable object"
msgstr "%s Âè»°¥Ñ¥é¥á¡¼¥¿¤Ï²ÄÊÑ¥ª¥Ö¥¸¥§¥¯¥È¤Ç¤Ï¤¢¤ê¤Þ¤»¤ó¡£"
-#: awkgram.y:2325 awkgram.y:2328
+#: awkgram.y:2366 awkgram.y:2369
msgid "close: second argument is a gawk extension"
msgstr "close: ÂèÆó°ú¿ô¤Ï gawk ÆÃÍ­¤Î³ÈÄ¥¤Ç¤¹¡£"
-#: awkgram.y:2338
+#: awkgram.y:2379
msgid "use of dcgettext(_\"...\") is incorrect: remove leading underscore"
msgstr ""
"dcgettext(_\"...\")¤Î»È¤¤Êý¤¬´Ö°ã¤Ã¤Æ¤¤¤Þ¤¹: ºÇ½é¤Î¥¢¥ó¥À¡¼¥¹¥³¥¢¤òºï½ü¤·¤Æ¤¯"
"¤À¤µ¤¤¡£"
-#: awkgram.y:2353
+#: awkgram.y:2394
msgid "use of dcngettext(_\"...\") is incorrect: remove leading underscore"
msgstr ""
"dcngettext(_\"...\")¤Î»È¤¤Êý¤¬´Ö°ã¤Ã¤Æ¤¤¤Þ¤¹: ºÇ½é¤Î¥¢¥ó¥À¡¼¥¹¥³¥¢¤òºï½ü¤·¤Æ"
"¤¯¤À¤µ¤¤¡£"
-#: awkgram.y:2424
+#: awkgram.y:2465
#, c-format
msgid "function `%s': parameter #%d, `%s', duplicates parameter #%d"
msgstr "´Ø¿ô `%s': ¥Ñ¥é¥á¡¼¥¿ #%d, `%s' ¤¬¥Ñ¥é¥á¡¼¥¿ #%d ¤È½ÅÊ£¤·¤Æ¤¤¤Þ¤¹¡£"
-#: awkgram.y:2457
+#: awkgram.y:2498
#, c-format
msgid "function `%s': parameter `%s' shadows global variable"
msgstr "´Ø¿ô `%s': ¥Ñ¥é¥á¡¼¥¿ `%s' ¤¬Âç°èÊÑ¿ô¤òʤ¤¤±£¤·¤Æ¤¤¤Þ¤¹¡£"
-#: awkgram.y:2569
+#: awkgram.y:2610
#, c-format
msgid "could not open `%s' for writing (%s)"
msgstr "`%s' ¤ò½ñ¹þ¤ßÍѤ˳«¤±¤Þ¤»¤ó¤Ç¤·¤¿ (%s)¡£"
-#: awkgram.y:2570 profile.c:93
+#: awkgram.y:2611 profile.c:93
msgid "sending profile to standard error"
msgstr "¥×¥í¥Õ¥¡¥¤¥ë¤òɸ½à¥¨¥é¡¼¤ËÁ÷¤Ã¤Æ¤¤¤Þ¤¹¡£"
-#: awkgram.y:2602
+#: awkgram.y:2643
#, c-format
msgid "%s: close failed (%s)"
msgstr "%s: ÊĤ¸¤ë¤³¤È¤¬¤Ç¤­¤Þ¤»¤ó (%s)¡£"
-#: awkgram.y:2723
+#: awkgram.y:2764
msgid "shadow_funcs() called twice!"
msgstr "shadow_funcs() ¤òÆó²ó¸Æ¤Ó½Ð¤·¤Æ¤¤¤Þ¤¹!"
-#: awkgram.y:2750
+#: awkgram.y:2791
msgid "there were shadowed variables."
msgstr "ʤ¤¤±£¤µ¤ì¤¿ÊÑ¿ô¤¬¤¢¤ê¤Þ¤·¤¿¡£"
-#: awkgram.y:2823
+#: awkgram.y:2864
#, c-format
msgid "function `%s': can't use function name as parameter name"
msgstr "´Ø¿ô `%s': ´Ø¿ô̾¤Ï¥Ñ¥é¥á¡¼¥¿Ì¾¤Ë»ÈÍѤǤ­¤Þ¤»¤ó¡£"
-#: awkgram.y:2833
+#: awkgram.y:2874
#, c-format
msgid "function name `%s' previously defined"
msgstr "´Ø¿ô̾ `%s' ¤ÏÄêµÁºÑ¤ß¤Ç¤¹¡£"
-#: awkgram.y:2984 awkgram.y:2990
+#: awkgram.y:3025 awkgram.y:3031
#, c-format
msgid "function `%s' called but never defined"
msgstr "̤ÄêµÁ¤Î´Ø¿ô `%s' ¤ò¸Æ¤Ó½Ð¤·¤Þ¤·¤¿¡£"
-#: awkgram.y:2993
+#: awkgram.y:3034
#, c-format
msgid "function `%s' defined but never called"
msgstr "ÄêµÁ¤µ¤ì¤¿´Ø¿ô `%s' ¤Ï°ìÅÙ¤â¸Æ¤Ó½Ð¤µ¤ì¤Þ¤»¤ó¤Ç¤·¤¿¡£"
-#: awkgram.y:3020
+#: awkgram.y:3061
#, c-format
msgid "regexp constant for parameter #%d yields boolean value"
msgstr "¥Ñ¥é¥á¡¼¥¿ #%d ¤ÎÀµµ¬É½¸½Äê¿ô¤Ï¥Ö¡¼¥ëÃͤò½ÐÎϤ·¤Þ¤¹¡£"
-#: awkgram.y:3033
-#, fuzzy, c-format
+#: awkgram.y:3105
+#, c-format
msgid ""
"function `%s' called with space between name and `(',\n"
"or used as a variable or an array"
msgstr ""
"´Ø¿ô̾¤È `(' ¤Î´Ö¤Ë¥¹¥Ú¡¼¥¹¤òÆþ¤ì¤Æ´Ø¿ô `%s' ¤ò¸Æ¤Ó½Ð¤·¤Æ¤¤¤Þ¤¹¡£\n"
-"%s"
+"¤Þ¤¿¤Ï¡¢ÊÑ¿ô¤«ÇÛÎó¤È¤·¤Æ»È¤ï¤ì¤Æ¤¤¤Þ¤¹¡£"
-#: builtin.c:149
+#: builtin.c:145
#, c-format
msgid "%s to \"%s\" failed (%s)"
msgstr "%s ¤«¤é \"%s\" ¤Ø½ÐÎϤǤ­¤Þ¤»¤ó (%s)¡£"
-#: builtin.c:150
+#: builtin.c:146
msgid "standard output"
msgstr "ɸ½à½ÐÎÏ"
-#: builtin.c:151
+#: builtin.c:147
msgid "reason unknown"
msgstr "¸¶°øÉÔÌÀ"
-#: builtin.c:164
+#: builtin.c:160
msgid "exp: received non-numeric argument"
msgstr "exp: °ú¿ô¤¬¿ôÃͤǤϤ¢¤ê¤Þ¤»¤ó¡£"
-#: builtin.c:170
+#: builtin.c:166
#, c-format
msgid "exp: argument %g is out of range"
msgstr "exp: °ú¿ô %g ¤¬µöÍÆÈϰϤòĶ¤¨¤Æ¤¤¤Þ¤¹¡£"
-#: builtin.c:228
+#: builtin.c:224
#, c-format
msgid "fflush: cannot flush: pipe `%s' opened for reading, not writing"
msgstr "fflush: ¥Õ¥é¥Ã¥·¥åÉÔ²Ä: ¥Ñ¥¤¥× `%s' ¤ÏÆɤ߹þ¤ßÀìÍѤǤ¹¡£"
-#: builtin.c:231
+#: builtin.c:227
#, c-format
msgid "fflush: cannot flush: file `%s' opened for reading, not writing"
msgstr "fflush: ¥Õ¥é¥Ã¥·¥åÉÔ²Ä: ¥Õ¥¡¥¤¥ë `%s' ¤ÏÆɤ߹þ¤ßÀìÍѤǤ¹¡£"
-#: builtin.c:243
+#: builtin.c:239
#, c-format
msgid "fflush: `%s' is not an open file, pipe or co-process"
msgstr ""
"fflush: `%s' ¤Ï¥Õ¥¡¥¤¥ë¤«¡¢¥Ñ¥¤¥×¤«¡¢ÊÂ¹Ô¥×¥í¥»¥¹¤Ç¤Ê¤±¤ì¤Ð¤Ê¤ê¤Þ¤»¤ó¡£"
-#: builtin.c:338
+#: builtin.c:332
msgid "index: received non-string first argument"
msgstr "index: Âè°ì°ú¿ô¤¬Ê¸»úÎó¤Ç¤Ï¤¢¤ê¤Þ¤»¤ó¡£"
-#: builtin.c:340
+#: builtin.c:334
msgid "index: received non-string second argument"
msgstr "index: ÂèÆó°ú¿ô¤¬Ê¸»úÎó¤Ç¤Ï¤¢¤ê¤Þ¤»¤ó¡£"
-#: builtin.c:454
+#: builtin.c:449
msgid "int: received non-numeric argument"
msgstr "int: °ú¿ô¤¬¿ôÃͤǤϤ¢¤ê¤Þ¤»¤ó¡£"
-#: builtin.c:471
+#: builtin.c:472
+#, fuzzy
+msgid "`length(array)' is a gawk extension"
+msgstr "`delete array' ¤Ï gawk ÆÃÍ­¤Î³ÈÄ¥¤Ç¤¹¡£"
+
+#: builtin.c:481
msgid "length: received non-string argument"
msgstr "length: °ú¿ô¤¬Ê¸»úÎó¤Ç¤Ï¤¢¤ê¤Þ¤»¤ó¡£"
-#: builtin.c:487
+#: builtin.c:506
msgid "log: received non-numeric argument"
msgstr "log: °ú¿ô¤¬¿ôÃͤǤϤ¢¤ê¤Þ¤»¤ó¡£"
-#: builtin.c:490
+#: builtin.c:509
#, c-format
msgid "log: received negative argument %g"
msgstr "log: °ú¿ô %g ¤¬Éé¤ÎÃͤǤ¹¡£"
-#: builtin.c:654 builtin.c:657
+#: builtin.c:673 builtin.c:676
msgid "must use `count$' on all formats or none"
msgstr ""
"`count$¡Ç¤ÏÁ´¤Æ¤Î½ñ¼°»ØÄê¤ËŬÍѤ¹¤ë¡¢¤Þ¤¿¤ÏÁ´¤Æ¤ËŬÍѤ·¤Ê¤¤¤Î¤É¤Á¤é¤«¤Ç¤·¤«»È"
"¤¨¤Þ¤»¤ó¡£"
-#: builtin.c:759
+#: builtin.c:778
msgid "`$' is not permitted in awk formats"
msgstr "`$' ¤Ï awk ¤Ç¤Ï»È¤¨¤Þ¤»¤ó¡£"
-#: builtin.c:765
+#: builtin.c:784
msgid "arg count with `$' must be > 0"
msgstr "½ç½ø»ØÄê¤Î `$' ¤Ë»È¤¨¤ë¿ô»ú¤ÏÀµ¤ÎÃͤǤ¹¡£"
-#: builtin.c:767
+#: builtin.c:786
#, c-format
msgid "arg count %ld greater than total number of supplied arguments"
msgstr "½ç½ø»ØÄê %ld ¤¬Í¿¤¨¤é¤ì¤Æ¤¤¤ë°ú¿ô¤Î¿ô¤òĶ¤¨¤Æ¤¤¤Þ¤¹¡£"
-#: builtin.c:769
+#: builtin.c:788
msgid "`$' not permitted after period in format"
msgstr "`$' ¤Ï½ñ¼°»ØÄê¤Î¥Ô¥ê¥ª¥É `.' ¤Î¸å¤Ë»ÈÍѤǤ­¤Þ¤»¤ó¡£"
-#: builtin.c:782
+#: builtin.c:801
msgid "no `$' supplied for positional field width or precision"
msgstr "¥Õ¥£¡¼¥ë¥ÉÉý¡¢¤Þ¤¿¤ÏÀºÅ٤λØÄê»Ò¤Ë `$' ¤¬Í¿¤¨¤é¤ì¤Æ¤¤¤Þ¤»¤ó¡£"
-#: builtin.c:848
+#: builtin.c:867
msgid "`l' is meaningless in awk formats; ignored"
msgstr "awk ¤Î½ñ¼°»ØÄê¤Ç¤Ï `l' ¤Ï̵°ÕÌ£¤Ç¤¹¡£Ìµ»ë¤·¤Þ¤¹¡£"
-#: builtin.c:852
+#: builtin.c:871
msgid "`l' is not permitted in POSIX awk formats"
msgstr "POSIX ½àµò¤Î awk ¤Ç¤Ï `l' ¤Ï»ÈÍѤǤ­¤Þ¤»¤ó¡£"
-#: builtin.c:863
+#: builtin.c:882
msgid "`L' is meaningless in awk formats; ignored"
msgstr "awk ¤Î½ñ¼°»ØÄê¤Ç¤Ï `L' ¤Ï̵°ÕÌ£¤Ç¤¹¡£Ìµ»ë¤·¤Þ¤¹¡£"
-#: builtin.c:867
+#: builtin.c:886
msgid "`L' is not permitted in POSIX awk formats"
msgstr "POSIX ½àµò¤Î awk ¤Ç¤Ï `L' ¤Ï»ÈÍѤǤ­¤Þ¤»¤ó¡£"
-#: builtin.c:878
+#: builtin.c:897
msgid "`h' is meaningless in awk formats; ignored"
msgstr "awk ¤Î½ñ¼°»ØÄê¤Ç¤Ï `h' ¤Ï̵°ÕÌ£¤Ç¤¹¡£Ìµ»ë¤·¤Þ¤¹¡£"
-#: builtin.c:882
+#: builtin.c:901
msgid "`h' is not permitted in POSIX awk formats"
msgstr "POSIX ½àµò¤Î awk ¤Ç¤Ï `h' ¤Ï»ÈÍѤǤ­¤Þ¤»¤ó¡£"
-#: builtin.c:1111
+#: builtin.c:1132
#, c-format
msgid "[s]printf: value %g is out of range for `%%%c' format"
msgstr "[s]printf: %g ¤ÎÃͤ¬½ñ¼° `%%%c' ¤ÎµöÍÆÈϰϤòĶ¤¨¤Æ¤¤¤Þ¤¹¡£"
-#: builtin.c:1171
+#: builtin.c:1198
msgid "not enough arguments to satisfy format string"
msgstr "½ñ¼°»ØÄꤹ¤ë¤¿¤á¤Î°ú¿ô¤¬Â­¤ê¤Þ¤»¤ó¡£"
-#: builtin.c:1173
+#: builtin.c:1200
msgid "^ ran out for this one"
msgstr "^ ¤³¤³¤«¤é­¤ê¤Þ¤»¤ó"
-#: builtin.c:1178
+#: builtin.c:1205
msgid "[s]printf: format specifier does not have control letter"
msgstr "[s]printf: ½ñ¼°»ØÄê»Ò¤ËÀ©¸æʸ»ú¤¬¤¢¤ê¤Þ¤»¤ó¡£"
-#: builtin.c:1181
+#: builtin.c:1208
msgid "too many arguments supplied for format string"
msgstr "½ñ¼°»ØÄêʸ»úÎó¤Î°ú¿ô¤¬Â¿²á¤®¤Þ¤¹¡£"
-#: builtin.c:1247 builtin.c:1250
+#: builtin.c:1274 builtin.c:1277
msgid "printf: no arguments"
msgstr "printf: °ú¿ô¤¬¤¢¤ê¤Þ¤»¤ó¡£"
-#: builtin.c:1274
+#: builtin.c:1301
msgid "sqrt: received non-numeric argument"
msgstr "sqrt: °ú¿ô¤¬¿ôÃͤǤϤ¢¤ê¤Þ¤»¤ó¡£"
-#: builtin.c:1278
+#: builtin.c:1305
#, c-format
msgid "sqrt: called with negative argument %g"
msgstr "sqrt: °ú¿ô¤ËÉé¤ÎÃÍ %g ¤ò»ÈÍѤ·¤Æ¤¤¤Þ¤¹¡£"
-#: builtin.c:1301
+#: builtin.c:1329
#, c-format
msgid "substr: start index %g is invalid, using 1"
-msgstr "substr: µ¯ÅÀ»Øɸ %g ¤¬ÉÔÀµ¤Ç¤¹¡££±¤ò»È¤¤¤Þ¤¹¡£"
+msgstr "substr: µ¯ÅÀ»Øɸ %g ¤¬ÉÔÀµ¤Ç¤¹¡£1 ¤ò»È¤¤¤Þ¤¹¡£"
-#: builtin.c:1306
+#: builtin.c:1334
#, c-format
msgid "substr: non-integer start index %g will be truncated"
msgstr "substr: µ¯ÅÀ»Øɸ %g ¤Î¾®¿ôÅÀ°Ê²¼¤ÏÀÚ¤ê¼Î¤Æ¤Þ¤¹¡£"
-#: builtin.c:1325
-#, fuzzy, c-format
+#: builtin.c:1353
+#, c-format
msgid "substr: length %g is not >= 1"
-msgstr "substr: ʸ»ú¿ô %g ¤¬ <= 0 ¤Ç¤¹¡£"
+msgstr "substr: ʸ»ú¿ô %g ¤¬ 1 °Ê¾å¤Ç¤Ï¤¢¤ê¤Þ¤»¤ó¡£"
-#: builtin.c:1327
-#, fuzzy, c-format
+#: builtin.c:1355
+#, c-format
msgid "substr: length %g is not >= 0"
-msgstr "substr: ʸ»ú¿ô %g ¤¬ <= 0 ¤Ç¤¹¡£"
+msgstr "substr: ʸ»ú¿ô %g ¤¬ 0 °Ê¾å¤Ç¤Ï¤¢¤ê¤Þ¤»¤ó¡£"
-#: builtin.c:1334
+#: builtin.c:1362
#, c-format
msgid "substr: non-integer length %g will be truncated"
msgstr "substr: ʸ»ú¿ô %g ¤Î¾®¿ôÅÀ°Ê²¼¤ÏÀÚ¤ê¼Î¤Æ¤Þ¤¹¡£"
-#: builtin.c:1339
+#: builtin.c:1367
#, c-format
msgid "substr: length %g too big for string indexing, truncating to %g"
msgstr "substr: ʸ»ú¿ô %g ¤ÏºÇÂçÃͤòĶ¤¨¤Æ¤¤¤Þ¤¹¡£%g ¤ò»È¤¤¤Þ¤¹¡£"
-#: builtin.c:1351
+#: builtin.c:1379
msgid "substr: source string is zero length"
msgstr "substr: ʸ»úÎó¤ÎŤµ¤¬¥¼¥í¤Ç¤¹¡£"
-#: builtin.c:1357
+#: builtin.c:1395
#, c-format
msgid "substr: start index %g is past end of string"
msgstr "substr: µ¯ÅÀ»Øɸ %g ¤¬Ê¸»úÎó¤ÎŤµ¤òĶ¤¨¤Æ¤¤¤Þ¤¹¡£"
-#: builtin.c:1365
+#: builtin.c:1403
#, c-format
msgid ""
"substr: length %g at start index %g exceeds length of first argument (%lu)"
msgstr ""
"substr: µ¯ÅÀ»Øɸ %2$g ¤«¤é¤Îʸ»ú¿ô %1$g ¤Ïʸ»úÎó¤ÎŤµ %3$lu ¤òĶ¤¨¤Æ¤¤¤Þ¤¹¡£"
-#: builtin.c:1400
+#: builtin.c:1478
msgid "strftime: received non-string first argument"
msgstr "strftime: Âè°ì°ú¿ô¤¬Ê¸»úÎó¤Ç¤Ï¤¢¤ê¤Þ¤»¤ó¡£"
-#: builtin.c:1406
+#: builtin.c:1484
msgid "strftime: received empty format string"
msgstr "strftime: ½ñ¼°»ØÄêʸ»úÎ󤬶õ¤Ç¤¹¡£"
-#: builtin.c:1415
+#: builtin.c:1493
msgid "strftime: received non-numeric second argument"
msgstr "strftime: ÂèÆó°ú¿ô¤¬¿ôÃͤǤϤ¢¤ê¤Þ¤»¤ó¡£"
-#: builtin.c:1478
+#: builtin.c:1556
msgid "mktime: received non-string argument"
msgstr "mktime: °ú¿ô¤¬Ê¸»úÎó¤Ç¤Ï¤¢¤ê¤Þ¤»¤ó¡£"
-#: builtin.c:1523
+#: builtin.c:1601
msgid "system: received non-string argument"
msgstr "system: °ú¿ô¤¬Ê¸»úÎó¤Ç¤Ï¤¢¤ê¤Þ¤»¤ó¡£"
-#: builtin.c:1644 eval.c:2019
+#: builtin.c:1722 eval.c:2039
#, c-format
msgid "reference to uninitialized field `$%d'"
msgstr "½é´ü²½¤µ¤ì¤Æ¤¤¤Ê¤¤¥Õ¥£¡¼¥ë¥É `$%d' ¤ò»²¾È¤·¤Æ¤¤¤Þ¤¹¡£"
-#: builtin.c:1671
+#: builtin.c:1827
msgid "tolower: received non-string argument"
msgstr "tolower: °ú¿ô¤¬Ê¸»úÎó¤Ç¤Ï¤¢¤ê¤Þ¤»¤ó¡£"
-#: builtin.c:1720
+#: builtin.c:1857
msgid "toupper: received non-string argument"
msgstr "toupper: °ú¿ô¤¬Ê¸»úÎó¤Ç¤Ï¤¢¤ê¤Þ¤»¤ó¡£"
-#: builtin.c:1765
+#: builtin.c:1890
msgid "atan2: received non-numeric first argument"
msgstr "atan2: Âè°ì°ú¿ô¤¬¿ôÃͤǤϤ¢¤ê¤Þ¤»¤ó¡£"
-#: builtin.c:1767
+#: builtin.c:1892
msgid "atan2: received non-numeric second argument"
msgstr "atan2: ÂèÆó°ú¿ô¤¬¿ôÃͤǤϤ¢¤ê¤Þ¤»¤ó¡£"
-#: builtin.c:1786
+#: builtin.c:1911
msgid "sin: received non-numeric argument"
msgstr "sin: °ú¿ô¤¬¿ôÃͤǤϤ¢¤ê¤Þ¤»¤ó¡£"
-#: builtin.c:1802
+#: builtin.c:1927
msgid "cos: received non-numeric argument"
msgstr "cos: °ú¿ô¤¬¿ôÃͤǤϤ¢¤ê¤Þ¤»¤ó¡£"
-#: builtin.c:1852
+#: builtin.c:1977
msgid "srand: received non-numeric argument"
msgstr "srand: °ú¿ô¤¬¿ôÃͤǤϤ¢¤ê¤Þ¤»¤ó¡£"
-#: builtin.c:1887
+#: builtin.c:2012
msgid "match: third argument is not an array"
msgstr "match: Âè»°°ú¿ô¤¬ÇÛÎó̾¤Ç¤Ï¤¢¤ê¤Þ¤»¤ó¡£"
-#: builtin.c:2414
-#, fuzzy
+#: builtin.c:2555
msgid "gensub: third argument of 0 treated as 1"
msgstr "gensub: Âè»°°ú¿ô¤¬ 0 ¤Ç¤¹¡£1 ¤òÂå¤ï¤ê¤Ë»ÈÍѤ·¤Þ¤¹¡£"
-#: builtin.c:2572
+#: builtin.c:2715
msgid "lshift: received non-numeric first argument"
msgstr "lshift: Âè°ì°ú¿ô¤¬¿ôÃͤǤϤ¢¤ê¤Þ¤»¤ó¡£"
-#: builtin.c:2574
-#, fuzzy
+#: builtin.c:2717
msgid "lshift: received non-numeric second argument"
-msgstr "strftime: ÂèÆó°ú¿ô¤¬¿ôÃͤǤϤ¢¤ê¤Þ¤»¤ó¡£"
+msgstr "lshift: ÂèÆó°ú¿ô¤¬¿ôÃͤǤϤ¢¤ê¤Þ¤»¤ó¡£"
-#: builtin.c:2580
+#: builtin.c:2723
#, c-format
msgid "lshift(%lf, %lf): negative values will give strange results"
msgstr "lshift(%lf, %lf): Éé¤Î¿ôÃͤò»ÈÍѤ¹¤ë¤È°Û¾ï¤Ê·ë²Ì¤Ë¤Ê¤ê¤Þ¤¹¡£"
-#: builtin.c:2582
+#: builtin.c:2725
#, c-format
msgid "lshift(%lf, %lf): fractional values will be truncated"
msgstr "lshift(%lf, %lf): ¾®¿ôÅÀ°Ê²¼¤ÏÀÚ¤ê¼Î¤Æ¤Ë¤Ê¤ê¤Þ¤¹¡£"
-#: builtin.c:2584
+#: builtin.c:2727
#, c-format
msgid "lshift(%lf, %lf): too large shift value will give strange results"
msgstr "lshift(%lf, %lf): ¥·¥Õ¥ÈÃͤ¬Â礭²á¤®¤ë¤È°Û¾ï¤Ê·ë²Ì¤Ë¤Ê¤ê¤Þ¤¹¡£"
-#: builtin.c:2610
+#: builtin.c:2753
msgid "rshift: received non-numeric first argument"
msgstr "rshift: Âè°ì°ú¿ô¤¬¿ôÃͤǤϤ¢¤ê¤Þ¤»¤ó¡£"
-#: builtin.c:2612
-#, fuzzy
+#: builtin.c:2755
msgid "rshift: received non-numeric second argument"
-msgstr "strftime: ÂèÆó°ú¿ô¤¬¿ôÃͤǤϤ¢¤ê¤Þ¤»¤ó¡£"
+msgstr "rshift: ÂèÆó°ú¿ô¤¬¿ôÃͤǤϤ¢¤ê¤Þ¤»¤ó¡£"
-#: builtin.c:2618
+#: builtin.c:2761
#, c-format
msgid "rshift(%lf, %lf): negative values will give strange results"
msgstr "rshift(%lf, %lf): Éé¤Î¿ôÃͤò»ÈÍѤ¹¤ë¤È°Û¾ï¤Ê·ë²Ì¤Ë¤Ê¤ê¤Þ¤¹¡£"
-#: builtin.c:2620
+#: builtin.c:2763
#, c-format
msgid "rshift(%lf, %lf): fractional values will be truncated"
msgstr "rshift(%lf, %lf): ¾®¿ôÅÀ°Ê²¼¤ÏÀÚ¤ê¼Î¤Æ¤Ë¤Ê¤ê¤Þ¤¹¡£"
-#: builtin.c:2622
+#: builtin.c:2765
#, c-format
msgid "rshift(%lf, %lf): too large shift value will give strange results"
msgstr "rshift(%lf, %lf): ¥·¥Õ¥ÈÃͤ¬Â礭²á¤®¤ë¤È°Û¾ï¤Ê·ë²Ì¤Ë¤Ê¤ê¤Þ¤¹¡£"
-#: builtin.c:2648
+#: builtin.c:2791
msgid "and: received non-numeric first argument"
msgstr "and: Âè°ì°ú¿ô¤¬¿ôÃͤǤϤ¢¤ê¤Þ¤»¤ó¡£"
-#: builtin.c:2650
-#, fuzzy
+#: builtin.c:2793
msgid "and: received non-numeric second argument"
-msgstr "atan2: ÂèÆó°ú¿ô¤¬¿ôÃͤǤϤ¢¤ê¤Þ¤»¤ó¡£"
+msgstr "and: ÂèÆó°ú¿ô¤¬¿ôÃͤǤϤ¢¤ê¤Þ¤»¤ó¡£"
-#: builtin.c:2656
+#: builtin.c:2799
#, c-format
msgid "and(%lf, %lf): negative values will give strange results"
msgstr "and(%lf, %lf): Éé¤Î¿ôÃͤò»ÈÍѤ¹¤ë¤È°Û¾ï¤Ê·ë²Ì¤Ë¤Ê¤ê¤Þ¤¹¡£"
-#: builtin.c:2658
+#: builtin.c:2801
#, c-format
msgid "and(%lf, %lf): fractional values will be truncated"
msgstr "and(%lf, %lf): ¾®¿ôÅÀ°Ê²¼¤ÏÀÚ¤ê¼Î¤Æ¤Ë¤Ê¤ê¤Þ¤¹¡£"
-#: builtin.c:2684
+#: builtin.c:2827
msgid "or: received non-numeric first argument"
msgstr "or: Âè°ì°ú¿ô¤¬¿ôÃͤǤϤ¢¤ê¤Þ¤»¤ó¡£"
-#: builtin.c:2686
-#, fuzzy
+#: builtin.c:2829
msgid "or: received non-numeric second argument"
-msgstr "atan2: ÂèÆó°ú¿ô¤¬¿ôÃͤǤϤ¢¤ê¤Þ¤»¤ó¡£"
+msgstr "or: ÂèÆó°ú¿ô¤¬¿ôÃͤǤϤ¢¤ê¤Þ¤»¤ó¡£"
-#: builtin.c:2692
+#: builtin.c:2835
#, c-format
msgid "or(%lf, %lf): negative values will give strange results"
msgstr "or(%lf, %lf): Éé¤Î¿ôÃͤò»ÈÍѤ¹¤ë¤È°Û¾ï¤Ê·ë²Ì¤Ë¤Ê¤ê¤Þ¤¹¡£"
-#: builtin.c:2694
+#: builtin.c:2837
#, c-format
msgid "or(%lf, %lf): fractional values will be truncated"
msgstr "or(%lf, %lf): ¾®¿ôÅÀ°Ê²¼¤ÏÀÚ¤ê¼Î¤Æ¤Ë¤Ê¤ê¤Þ¤¹¡£"
-#: builtin.c:2720
+#: builtin.c:2863
msgid "xor: received non-numeric first argument"
msgstr "xor: Âè°ì°ú¿ô¤¬¿ôÃͤǤϤ¢¤ê¤Þ¤»¤ó¡£"
-#: builtin.c:2722
-#, fuzzy
+#: builtin.c:2865
msgid "xor: received non-numeric second argument"
-msgstr "atan2: ÂèÆó°ú¿ô¤¬¿ôÃͤǤϤ¢¤ê¤Þ¤»¤ó¡£"
+msgstr "xor: ÂèÆó°ú¿ô¤¬¿ôÃͤǤϤ¢¤ê¤Þ¤»¤ó¡£"
-#: builtin.c:2728
+#: builtin.c:2871
#, c-format
msgid "xor(%lf, %lf): negative values will give strange results"
msgstr "xor(%lf, %lf): Éé¤Î¿ôÃͤò»ÈÍѤ¹¤ë¤È°Û¾ï¤Ê·ë²Ì¤Ë¤Ê¤ê¤Þ¤¹¡£"
-#: builtin.c:2730
+#: builtin.c:2873
#, c-format
msgid "xor(%lf, %lf): fractional values will be truncated"
msgstr "xor(%lf, %lf): ¾®¿ôÅÀ°Ê²¼¤ÏÀÚ¤ê¼Î¤Æ¤Ë¤Ê¤ê¤Þ¤¹¡£"
-#: builtin.c:2754
+#: builtin.c:2897
msgid "compl: received non-numeric argument"
msgstr "compl: °ú¿ô¤¬¿ôÃͤǤϤ¢¤ê¤Þ¤»¤ó¡£"
-#: builtin.c:2760
+#: builtin.c:2903
#, c-format
msgid "compl(%lf): negative value will give strange results"
msgstr "compl(%lf): Éé¤Î¿ôÃͤò»ÈÍѤ¹¤ë¤È°Û¾ï¤Ê·ë²Ì¤Ë¤Ê¤ê¤Þ¤¹¡£"
-#: builtin.c:2762
+#: builtin.c:2905
#, c-format
msgid "compl(%lf): fractional value will be truncated"
msgstr "compl(%lf): ¾®¿ôÅÀ°Ê²¼¤ÏÀÚ¤ê¼Î¤Æ¤Ë¤Ê¤ê¤Þ¤¹¡£"
-#: builtin.c:2935
+#: builtin.c:3078
#, c-format
msgid "dcgettext: `%s' is not a valid locale category"
msgstr "dcgettext: `%s' ¤ÏÉÔÀµ¤Ê¥í¥«¡¼¥ë¡¦¥«¥Æ¥´¥ê¡¼¤Ç¤¹¡£"
@@ -760,73 +773,73 @@ msgstr "dcgettext: `%s' ¤ÏÉÔÀµ¤Ê¥í¥«¡¼¥ë¡¦¥«¥Æ¥´¥ê¡¼¤Ç¤¹¡£"
msgid "unknown nodetype %d"
msgstr "¥Î¡¼¥É %d ¤Î¼ïÎबÉÔÌÀ¤Ç¤¹¡£"
-#: eval.c:350
+#: eval.c:353
msgid "buffer overflow in genflags2str"
msgstr "genflags2str ¤¬¥Ð¥Ã¥Õ¥¡ÍÆÎ̤òĶ²á¤·¤Þ¤·¤¿¡£"
-#: eval.c:382 eval.c:388 profile.c:837
+#: eval.c:385 eval.c:391 profile.c:838
#, c-format
msgid "attempt to use array `%s' in a scalar context"
msgstr "¥¹¥«¥é¡¼´Ä¶­¤ËÇÛÎó `%s' ¤ò»ÈÍѤ·¤Æ¤¤¤Þ¤¹¡£"
-#: eval.c:730
+#: eval.c:733
#, c-format
msgid "for loop: array `%s' changed size from %ld to %ld during loop execution"
msgstr ""
"for ¥ë¡¼¥×: ¥ë¡¼¥×Ãæ¤ËÇÛÎó `%s' ¤Î¥µ¥¤¥º¤¬ %ld ¤«¤é %ld ¤ËÊѤï¤ê¤Þ¤·¤¿¡£"
-#: eval.c:751
+#: eval.c:754
msgid "`break' outside a loop is not portable"
msgstr "¥ë¡¼¥×¤Î³°¤Ç»ÈÍѤ¹¤ë `break' ¤Ï¾¤Î awk ¤Ç»ÈÍѤǤ­¤Þ¤»¤ó¡£"
-#: eval.c:755
+#: eval.c:758
msgid "`break' outside a loop is not allowed"
msgstr "¥ë¡¼¥×¤Î³°¤Ç¤Ï `break' ¤ò»ÈÍѤǤ­¤Þ¤»¤ó¡£"
-#: eval.c:772
+#: eval.c:775
msgid "`continue' outside a loop is not portable"
msgstr "¥ë¡¼¥×¤Î³°¤Ç»ÈÍѤ¹¤ë `continue' ¤Ï¾¤Î awk ¤Ç»ÈÍѤǤ­¤Þ¤»¤ó¡£"
-#: eval.c:776
+#: eval.c:779
msgid "`continue' outside a loop is not allowed"
msgstr "¥ë¡¼¥×¤Î³°¤Ç¤Ï `continue' ¤ò»ÈÍѤǤ­¤Þ¤»¤ó¡£"
-#: eval.c:810
+#: eval.c:813
msgid "`next' cannot be called from a BEGIN rule"
msgstr "BEGIN ¥ë¡¼¥ë¤«¤é¤Ï `next' ¤ò¸Æ¤Ó½Ð¤»¤Þ¤»¤ó¡£"
-#: eval.c:812
+#: eval.c:815
msgid "`next' cannot be called from an END rule"
msgstr "END ¥ë¡¼¥ë¤«¤é¤Ï `next' ¤ò¸Æ¤Ó½Ð¤»¤Þ¤»¤ó¡£"
-#: eval.c:821
+#: eval.c:824
msgid "`nextfile' cannot be called from a BEGIN rule"
msgstr "BEGIN ¥ë¡¼¥ë¤«¤é¤Ï `nextfile' ¤ò¸Æ¤Ó½Ð¤»¤Þ¤»¤ó¡£"
-#: eval.c:823
+#: eval.c:826
msgid "`nextfile' cannot be called from an END rule"
msgstr "END ¥ë¡¼¥ë¤«¤é¤Ï `nextfile' ¤ò¸Æ¤Ó½Ð¤»¤Þ¤»¤ó¡£"
-#: eval.c:872
+#: eval.c:875
msgid "statement has no effect"
msgstr "Ì¿Îáʸ¤Ë¸ú²Ì¤Ï¤¢¤ê¤Þ¤»¤ó¡£"
-#: eval.c:915 eval.c:1873
+#: eval.c:952 eval.c:1893
#, c-format
msgid "can't use function name `%s' as variable or array"
msgstr "´Ø¿ô̾ `%s' ¤ÏÊÑ¿ô¤äÇÛÎó¤Ë¤Ï»È¤¨¤Þ¤»¤ó¡£"
-#: eval.c:922 eval.c:928
+#: eval.c:959 eval.c:965
#, c-format
msgid "reference to uninitialized argument `%s'"
msgstr "½é´ü²½¤µ¤ì¤Æ¤¤¤Ê¤¤°ú¿ô `%s' ¤ò»²¾È¤·¤Æ¤¤¤Þ¤¹¡£"
-#: eval.c:937 eval.c:1882
+#: eval.c:974 eval.c:1902
#, c-format
msgid "reference to uninitialized variable `%s'"
msgstr "½é´ü²½¤µ¤ì¤Æ¤¤¤Ê¤¤ÊÑ¿ô `%s' ¤ò»²¾È¤·¤Æ¤¤¤Þ¤¹¡£"
-#: eval.c:1083
+#: eval.c:1120
msgid ""
"concatenation: side effects in one expression have changed the length of "
"another!"
@@ -834,49 +847,44 @@ msgstr ""
"concatenation¡Êʸ»úÎóÏ¢·ë¡Ë: °ìÊý¤Î¼°¤ÎÉûºîÍѤǡ¢¤â¤¦°ìÊý¤ÎŤµ¤¬ÊѤï¤ê¤Þ¤·"
"¤¿!"
-#: eval.c:1162
+#: eval.c:1200
msgid "assignment used in conditional context"
msgstr "¾ò·ïʸÃæ¤Ç¤ÎÂåÆþ"
-#: eval.c:1252
+#: eval.c:1278
msgid "division by zero attempted"
msgstr "¥¼¥í¤Ç¤Î½ü»»¤ò¹Ô¤¤¤Þ¤·¤¿¡£"
-#: eval.c:1267
+#: eval.c:1293
#, c-format
msgid "division by zero attempted in `%%'"
msgstr "`%%' ¤Ç¥¼¥í¤Ç¤Î½ü»»¤ò¹Ô¤¤¤Þ¤·¤¿¡£"
-#: eval.c:1282 profile.c:713
+#: eval.c:1308 profile.c:714
#, c-format
msgid "illegal type (%s) in tree_eval"
msgstr "tree_eval ¤ÎÃæ¤ËÉÔÀµ¤Ê¥¿¥¤¥× (%s) ¤¬»ÈÍѤµ¤ì¤Æ¤¤¤Þ¤¹¡£"
-#: eval.c:1459
+#: eval.c:1471
msgid "division by zero attempted in `/='"
msgstr "`/=' ¤Ç¥¼¥í¤Ç¤Î½ü»»¤ò¹Ô¤¤¤Þ¤·¤¿¡£"
-#: eval.c:1477
+#: eval.c:1493
#, c-format
msgid "division by zero attempted in `%%='"
msgstr "`%%=' ¤Ç¥¼¥í¤Ç¤Î½ü»»¤ò¹Ô¤¤¤Þ¤·¤¿¡£"
-#: eval.c:1738
+#: eval.c:1758
#, c-format
msgid "function `%s' called with more arguments than declared"
msgstr "Àë¸À¤µ¤ì¤Æ¤¤¤ë¿ô¤è¤ê¿¤¤°ú¿ô¤ò»È¤Ã¤Æ´Ø¿ô `%s' ¤ò¸Æ¤Ó½Ð¤·¤Þ¤·¤¿¡£"
-#: eval.c:1782
+#: eval.c:1802
#, c-format
msgid "function `%s' not defined"
msgstr "´Ø¿ô `%s' ¤ÏÄêµÁ¤µ¤ì¤Æ¤¤¤Þ¤»¤ó¡£"
-#: eval.c:1788
-#, c-format
-msgid "function %s called\n"
-msgstr "´Ø¿ô `%s' ¤ò¸Æ¤Ó½Ð¤·¤Þ¤·¤¿¡£\n"
-
-#: eval.c:1845
+#: eval.c:1865
#, c-format
msgid ""
"\n"
@@ -887,42 +895,42 @@ msgstr ""
"\t# ¸Æ½Ð´Ø¿ô¥¹¥¿¥Ã¥¯:\n"
"\n"
-#: eval.c:1848
+#: eval.c:1868
#, c-format
msgid "\t# -- main --\n"
msgstr "\t# -- ¥á¥¤¥ó --\n"
-#: eval.c:2003
+#: eval.c:2023
msgid "attempt to field reference from non-numeric value"
msgstr "¿ôÃͰʳ°¤ÎÃͤò»È¤Ã¤Æ¥Õ¥¤¡¼¥ë¥É¤ò»²¾È¤·¤Æ¤¤¤Þ¤¹¡£"
-#: eval.c:2005
+#: eval.c:2025
msgid "attempt to reference from null string"
msgstr "¶õÎó¤ò»È¤Ã¤Æ»²¾È¤·¤Æ¤¤¤Þ¤¹¡£"
-#: eval.c:2011
+#: eval.c:2031
#, c-format
msgid "attempt to access field %d"
msgstr "¥Õ¥£¡¼¥ë¥É %d ¤ò»²¾È¤·¤Æ¤¤¤Þ¤¹¡£"
-#: eval.c:2032 eval.c:2039 profile.c:934
+#: eval.c:2052 eval.c:2059 profile.c:935
msgid "assignment is not allowed to result of builtin function"
msgstr "Áȹþ´Ø¿ô¤ÎÌá¤êÃͤËÂåÆþ¤Ï¤Ç¤­¤Þ¤»¤ó¡£"
-#: eval.c:2103
+#: eval.c:2123
msgid "`IGNORECASE' is a gawk extension"
msgstr "`IGNORECASE' ¤Ï gawk ÆÃÍ­¤Î³ÈÄ¥¤Ç¤¹¡£"
-#: eval.c:2133
+#: eval.c:2153
msgid "`BINMODE' is a gawk extension"
msgstr "`BINMODE' ¤Ï gawk ÆÃÍ­¤Î³ÈÄ¥¤Ç¤¹¡£"
-#: eval.c:2255
+#: eval.c:2275
#, c-format
msgid "bad `%sFMT' specification `%s'"
msgstr "`%sFMT' ¤Î»ØÄê `%s' ¤¬´Ö°ã¤Ã¤Æ¤¤¤Þ¤¹¡£"
-#: eval.c:2333
+#: eval.c:2353
msgid "turning off `--lint' due to assignment to `LINT'"
msgstr "`LINT' ¤Ø¤ÎÂåÆþ¤Ë½¾¤¤ `--lint' ¤ò̵¸ú¤Ë¤·¤Þ¤¹¡£"
@@ -942,610 +950,614 @@ msgstr "extension: ¥é¥¤¥Ö¥é¥ê `%s': ´Ø¿ô `%s' ¤ò¸Æ¤Ó½Ð¤»¤Þ¤»¤ó (%s)¡£\n"
#: ext.c:102
msgid "extension: missing function name"
-msgstr ""
+msgstr "extension: ´Ø¿ô̾¤¬¤¢¤ê¤Þ¤»¤ó¡£"
#: ext.c:107
-#, fuzzy, c-format
+#, c-format
msgid "extension: illegal character `%c' in function name `%s'"
-msgstr "extension: ¥é¥¤¥Ö¥é¥ê `%s': ´Ø¿ô `%s' ¤ò¸Æ¤Ó½Ð¤»¤Þ¤»¤ó (%s)¡£\n"
+msgstr "extension: ´Ø¿ô̾ `%2$s' ¤ÎÃæ¤ËÉÔÀµ¤Êʸ»ú `%1$c' ¤¬»È¤ï¤ì¤Æ¤¤¤Þ¤¹¡£"
#: ext.c:113
-#, fuzzy, c-format
+#, c-format
msgid "extension: can't redefine function `%s'"
-msgstr "extension: `%s' ¤ò³«¤±¤Þ¤»¤ó (%s)¡£\n"
+msgstr "extension: ´Ø¿ô `%s' ¤òºÆÄêµÁ¤Ç¤­¤Þ¤»¤ó¡£"
#: ext.c:117
-#, fuzzy, c-format
+#, c-format
msgid "extension: function `%s' already defined"
-msgstr "´Ø¿ô `%s' ¤ÏÄêµÁ¤µ¤ì¤Æ¤¤¤Þ¤»¤ó¡£"
+msgstr "extension: ´Ø¿ô `%s' ¤Ï´û¤ËÄêµÁ¤µ¤ì¤Æ¤¤¤Þ¤¹¡£"
#: ext.c:122
#, c-format
msgid "extension: can't use gawk built-in `%s' as function name"
-msgstr ""
+msgstr "extension: ÁȤ߹þ¤ß´Ø¿ô `%s' ¤Ï´Ø¿ô̾¤Ë»È¤¨¤Þ¤»¤ó¡£"
#: ext.c:124
-#, fuzzy, c-format
+#, c-format
msgid "extension: function name `%s' previously defined"
-msgstr "´Ø¿ô̾ `%s' ¤ÏÄêµÁºÑ¤ß¤Ç¤¹¡£"
+msgstr "extension: ´Ø¿ô̾ `%s' ¤Ï´û¤ËÄêµÁ¤µ¤ì¤Æ¤¤¤Þ¤¹¡£"
#: ext.c:201
#, c-format
-msgid "function `%s' defined to take no more than `%d' argument(s)"
-msgstr ""
+msgid "function `%s' defined to take no more than %d argument(s)"
+msgstr "´Ø¿ô `%s' ¤Ë»È¤¨¤ë°ú¿ô¤Î¿ô¤Ï `%d' °Ê²¼¤ÈÄêµÁ¤µ¤ì¤Æ¤¤¤Þ¤¹¡£"
#: ext.c:204
-#, fuzzy, c-format
+#, c-format
msgid "function `%s': missing argument #%d"
-msgstr "´Ø¿ô `%s' ¤ÏÄêµÁ¤µ¤ì¤Æ¤¤¤Þ¤»¤ó¡£"
+msgstr "´Ø¿ô `%s': °ú¿ô #%d ¤¬¤¢¤ê¤Þ¤»¤ó¡£"
#: ext.c:214
-#, fuzzy, c-format
+#, c-format
msgid "function `%s': argument #%d: attempt to use scalar as an array"
-msgstr "¥¹¥«¥é¡¼ `%s' ¤òÇÛÎó¤È¤·¤Æ»ÈÍѤ·¤Æ¤¤¤Þ¤¹¡£"
+msgstr "´Ø¿ô `%s': °ú¿ô #%d: ¥¹¥«¥é¡¼¤òÇÛÎó¤È¤·¤Æ»ÈÍѤ·¤Æ¤¤¤Þ¤¹¡£"
#: ext.c:218
#, c-format
msgid "function `%s': argument #%d: attempt to use array as a scalar"
-msgstr ""
+msgstr "´Ø¿ô `%s': °ú¿ô #%d: ÇÛÎó¤ò¥¹¥«¥é¡¼¤È¤·¤Æ»ÈÍѤ·¤Æ¤¤¤Þ¤¹¡£"
#: ext.c:243
msgid "Operation Not Supported"
msgstr "¤³¤ÎÁàºî¤Ï¼ÂÁõ¤µ¤ì¤Æ¤¤¤Þ¤»¤ó¡£"
-#: field.c:315
+#: field.c:326
msgid "NF set to negative value"
msgstr "NF ¤¬Éé¤ÎÃͤǤ¹¡£"
-#: field.c:808
+#: field.c:819
msgid "split: second argument is not an array"
msgstr "split: ÂèÆó°ú¿ô¤¬ÇÛÎó¤Ç¤Ï¤¢¤ê¤Þ¤»¤ó¡£"
-#: field.c:842
+#: field.c:853
msgid "split: null string for third arg is a gawk extension"
msgstr "split: Âè»°°ú¿ô¤Ë¶õÎó¤ò»ÈÍѤ¹¤ë¤Î¤Ï gawk ÆÃÍ­¤Î³ÈÄ¥¤Ç¤¹¡£"
-#: field.c:894
+#: field.c:905
msgid "`FIELDWIDTHS' is a gawk extension"
msgstr "`FIELDWIDTHS' ¤Ï gawk ÆÃÍ­¤Î³ÈÄ¥¤Ç¤¹¡£"
-#: field.c:921
+#: field.c:935 field.c:946
#, c-format
-msgid "field %d in FIELDWIDTHS, must be > 0"
-msgstr "FIELDWIDTHS ¤Î Âè %d ¥Õ¥£¡¼¥ë¥É¤ÏÀµ¤ÎÃͤǤʤ±¤ì¤Ð¤Ê¤ê¤Þ¤»¤ó¡£"
+msgid "invalid FIELDWIDTHS value, near `%s'"
+msgstr "`%s' ÉÕ¶á¤Î FIELDWIDTHS Ãͤ¬ÉÔÀµ¤Ç¤¹¡£"
-#: field.c:994
+#: field.c:1027
msgid "null string for `FS' is a gawk extension"
msgstr "`FS' ¤Ë¶õÎó¤ò»ÈÍѤ¹¤ë¤Î¤Ï gawk ÆÃÍ­¤Î³ÈÄ¥¤Ç¤¹¡£"
-#: getopt.c:692 getopt.c:711
+#: getopt.c:571 getopt.c:590
#, c-format
msgid "%s: option `%s' is ambiguous\n"
msgstr "%s: ¥ª¥×¥·¥ç¥ó `%s' ¤ÏÛ£Ëæ¤Ç¤¹¡£\n"
-#: getopt.c:744 getopt.c:748
+#: getopt.c:623 getopt.c:627
#, c-format
msgid "%s: option `--%s' doesn't allow an argument\n"
msgstr "%s: ¥ª¥×¥·¥ç¥ó `--%s' ¤Ë°ú¿ô¤Ï¤¢¤ê¤Þ¤»¤ó¡£\n"
-#: getopt.c:757 getopt.c:762
+#: getopt.c:636 getopt.c:641
#, c-format
msgid "%s: option `%c%s' doesn't allow an argument\n"
msgstr "%s: ¥ª¥×¥·¥ç¥ó `%c%s' ¤Ë°ú¿ô¤Ï¤¢¤ê¤Þ¤»¤ó¡£\n"
-#: getopt.c:807 getopt.c:829 getopt.c:1159 getopt.c:1181
+#: getopt.c:687 getopt.c:709 getopt.c:1040 getopt.c:1062
#, c-format
msgid "%s: option `%s' requires an argument\n"
msgstr "%s: ¥ª¥×¥·¥ç¥ó `%s' ¤Ë¤Ï°ú¿ô¤¬É¬ÍפǤ¹¡£\n"
-#: getopt.c:867 getopt.c:870
+#: getopt.c:747 getopt.c:750
#, c-format
msgid "%s: unrecognized option `--%s'\n"
msgstr "%s: ǧ¼±¤Ç¤­¤Ê¤¤¥ª¥×¥·¥ç¥ó `--%s'\n"
-#: getopt.c:878 getopt.c:881
+#: getopt.c:758 getopt.c:761
#, c-format
msgid "%s: unrecognized option `%c%s'\n"
msgstr "%s: ǧ¼±¤Ç¤­¤Ê¤¤¥ª¥×¥·¥ç¥ó `%c%s'\n"
-#: getopt.c:936 getopt.c:939
+#: getopt.c:816 getopt.c:819
#, c-format
msgid "%s: illegal option -- %c\n"
msgstr "%s: ÉÔÀµ¤Ê¥ª¥×¥·¥ç¥ó -- %c\n"
-#: getopt.c:945 getopt.c:948
+#: getopt.c:825 getopt.c:828
#, c-format
msgid "%s: invalid option -- %c\n"
msgstr "%s: ̵¸ú¤Ê¥ª¥×¥·¥ç¥ó -- %c\n"
-#: getopt.c:1003 getopt.c:1022 getopt.c:1234 getopt.c:1255 main.c:433
+#: getopt.c:883 getopt.c:902 getopt.c:1115 getopt.c:1136 main.c:448
#, c-format
msgid "%s: option requires an argument -- %c\n"
msgstr "%s: °ú¿ô¤¬É¬Íפʥª¥×¥·¥ç¥ó -- %c\n"
-#: getopt.c:1074 getopt.c:1093
+#: getopt.c:955 getopt.c:974
#, c-format
msgid "%s: option `-W %s' is ambiguous\n"
msgstr "%s: ¥ª¥×¥·¥ç¥ó `-W %s' ¤ÏÛ£Ëæ¤Ç¤¹¡£\n"
-#: getopt.c:1117 getopt.c:1138
+#: getopt.c:998 getopt.c:1019
#, c-format
msgid "%s: option `-W %s' doesn't allow an argument\n"
msgstr "%s: ¥ª¥×¥·¥ç¥ó `-W %s' ¤Ë°ú¿ô¤Ï¤¢¤ê¤Þ¤»¤ó¡£\n"
-#: io.c:308
+#: io.c:307
#, c-format
msgid "cannot open file `%s' for reading (%s)"
msgstr "¥Õ¥¡¥¤¥ë `%s' ¤òÆɤ߹þ¤à¤¿¤á¤Ë³«¤±¤Þ¤»¤ó (%s)¡£"
-#: io.c:395
+#: io.c:398
#, c-format
msgid "close of fd %d (`%s') failed (%s)"
msgstr "fd %d (`%s') ¤òÊĤ¸¤ë¤³¤È¤¬¤Ç¤­¤Þ¤»¤ó (%s)¡£"
-#: io.c:533
+#: io.c:536
#, c-format
msgid "invalid tree type %s in redirect()"
msgstr "redirect() ¤ÎÃæ¤ÇÉÔÀµ¤Ê¥Ä¥ê¡¼¥¿¥¤¥× %s ¤ò»ÈÍѤ·¤Æ¤¤¤Þ¤¹¡£"
-#: io.c:539
+#: io.c:542
#, c-format
msgid "expression in `%s' redirection only has numeric value"
msgstr "`%s' ¥ê¥À¥¤¥ì¥¯¥È¤ÎÌ¿Îá¼°¤Ë¿ôÃͤ·¤«µ­½Ò¤µ¤ì¤Æ¤¤¤Þ¤»¤ó¡£"
-#: io.c:545
+#: io.c:548
#, c-format
msgid "expression for `%s' redirection has null string value"
msgstr "`%s' ¥ê¥À¥¤¥ì¥¯¥È¤ÎÌ¿Îá¼°¤¬¶õÎó¤Ç¤¹¡£"
-#: io.c:550
+#: io.c:553
#, c-format
msgid "filename `%s' for `%s' redirection may be result of logical expression"
msgstr ""
"`%2$s' ¥ê¥À¥¤¥ì¥¯¥È¤ËÏÀÍý±é»»¤Î·ë²Ì¤È»×¤ï¤ì¤ë¥Õ¥¡¥¤¥ë̾ `%1$s' ¤¬»È¤ï¤ì¤Æ¤¤¤Þ"
"¤¹¡£"
-#: io.c:588
+#: io.c:591
#, c-format
msgid "unnecessary mixing of `>' and `>>' for file `%.*s'"
msgstr "¥Õ¥¡¥¤¥ë `%.*s' ¤ÇɬÍװʾå¤Ë `>' ¤È `>>' ¤òÁȹ礻¤Æ¤¤¤Þ¤¹¡£"
-#: io.c:640
+#: io.c:643
#, c-format
msgid "can't open pipe `%s' for output (%s)"
msgstr "½ÐÎÏÍѤ˥ѥ¤¥× `%s' ¤ò³«¤±¤Þ¤»¤ó (%s)¡£"
-#: io.c:649
+#: io.c:652
#, c-format
msgid "can't open pipe `%s' for input (%s)"
msgstr "ÆþÎÏÍѤ˥ѥ¤¥× `%s' ¤ò³«¤±¤Þ¤»¤ó (%s)¡£"
-#: io.c:662
+#: io.c:665
#, c-format
msgid "can't open two way socket `%s' for input/output (%s)"
msgstr "Æþ½ÐÎÏÍѤÎÁÐÊý¸þ¥½¥±¥Ã¥È `%s' ¤¬³«¤±¤Þ¤»¤ó (%s)¡£"
-#: io.c:666
+#: io.c:669
#, c-format
msgid "can't open two way pipe `%s' for input/output (%s)"
msgstr "Æþ½ÐÎÏÍѤÎÁÐÊý¸þ¥Ñ¥¤¥× `%s' ¤¬³«¤±¤Þ¤»¤ó (%s)¡£"
-#: io.c:742
+#: io.c:745
#, c-format
msgid "can't redirect from `%s' (%s)"
msgstr "`%s' ¤«¤é¥ê¥À¥¤¥ì¥¯¥È¤Ç¤­¤Þ¤»¤ó (%s)¡£"
-#: io.c:745
+#: io.c:748
#, c-format
msgid "can't redirect to `%s' (%s)"
msgstr "`%s' ¤Ë¥ê¥À¥¤¥ì¥¯¥È¤Ç¤­¤Þ¤»¤ó (%s)¡£"
-#: io.c:784
+#: io.c:787
msgid ""
"reached system limit for open files: starting to multiplex file descriptors"
msgstr ""
"³«¤¤¤Æ¤¤¤ë¥Õ¥¡¥¤¥ë¤Î¿ô¤¬¥·¥¹¥Æ¥àÀ©¸Â¤Ë㤷¤Þ¤·¤¿¡£¥Õ¥¡¥¤¥ëµ­½Ò»Ò¤ò¿½Å²½¤·¤Þ"
"¤¹¡£"
-#: io.c:800
+#: io.c:803
#, c-format
msgid "close of `%s' failed (%s)."
msgstr "`%s' ¤¬ÊĤ¸¤é¤ì¤Þ¤»¤ó (%s)¡£"
-#: io.c:808
+#: io.c:811
msgid "too many pipes or input files open"
msgstr "³«¤¤¤Æ¤¤¤ë¥Ñ¥¤¥×¤Þ¤¿¤ÏÆþÎÏ¥Õ¥¡¥¤¥ë¤Î¿ô¤¬Â¿²á¤®¤Þ¤¹¡£"
-#: io.c:831
+#: io.c:834
msgid "close: second argument must be `to' or `from'"
msgstr "close: ÂèÆó°ú¿ô¤Ë»ÈÍѤǤ­¤ë¤Î¤Ï `to' ¤Þ¤¿¤Ï `from' ¤Ç¤¹¡£"
-#: io.c:845
+#: io.c:848
#, c-format
msgid "close: `%.*s' is not an open file, pipe or co-process"
msgstr ""
"close: `%.*s' ¤Ï¥Õ¥¡¥¤¥ë¡¢¥Ñ¥¤¥×¡¢ÊÂ¹Ô¥×¥í¥»¥¹¤Î¤¤¤º¤ì¤Ç¤â¤¢¤ê¤Þ¤»¤ó¡£"
-#: io.c:849
+#: io.c:852
msgid "close of redirection that was never opened"
msgstr "³«¤¤¤Æ¤Ê¤¤¥ê¥À¥¤¥ì¥¯¥È¤òÊĤ¸¤è¤¦¤È¤·¤Æ¤¤¤Þ¤¹¡£"
-#: io.c:945
+#: io.c:948
#, c-format
msgid "close: redirection `%s' not opened with `|&', second argument ignored"
msgstr ""
"close: ¥ê¥À¥¤¥ì¥¯¥È `%s' ¤Ï `|&' ¤ò»È¤Ã¤Æ¤¤¤Þ¤»¤ó¡£ÂèÆó°ú¿ô¤Ï̵»ë¤·¤Þ¤¹¡£"
-#: io.c:960
+#: io.c:964
#, c-format
msgid "failure status (%d) on pipe close of `%s' (%s)"
msgstr "¥Ñ¥¤¥× `%2$s' ¤òÊĤ¸¤¿¤È¤­¤Î¾õÂÖ¥³¡¼¥É¤¬¼ºÇÔ (%1$d) ¤Ç¤·¤¿ (%3$s)¡£"
-#: io.c:963
+#: io.c:967
#, c-format
msgid "failure status (%d) on file close of `%s' (%s)"
msgstr "¥Õ¥¡¥¤¥ë `%2$s' ¤òÊĤ¸¤¿¤È¤­¤Î¾õÂÖ¥³¡¼¥É¤¬¼ºÇÔ (%1$d) ¤Ç¤·¤¿ (%3$s)¡£"
-#: io.c:983
+#: io.c:987
#, c-format
msgid "no explicit close of socket `%s' provided"
msgstr "¥½¥±¥Ã¥È `%s' ¤òÌÀ¼¨¤·¤ÆÊĤ¸¤Æ¤¤¤Þ¤»¤ó¡£"
-#: io.c:986
+#: io.c:990
#, c-format
msgid "no explicit close of co-process `%s' provided"
msgstr "ÊÂ¹Ô¥×¥í¥»¥¹ `%s' ¤òÌÀ¼¨¤·¤ÆÊĤ¸¤Æ¤¤¤Þ¤»¤ó¡£"
-#: io.c:989
+#: io.c:993
#, c-format
msgid "no explicit close of pipe `%s' provided"
msgstr "¥Ñ¥¤¥× `%s' ¤òÌÀ¼¨¤·¤ÆÊĤ¸¤Æ¤¤¤Þ¤»¤ó¡£"
-#: io.c:992
+#: io.c:996
#, c-format
msgid "no explicit close of file `%s' provided"
msgstr "¥Õ¥¡¥¤¥ë `%s' ¤òÌÀ¼¨¤·¤ÆÊĤ¸¤Æ¤¤¤Þ¤»¤ó¡£"
-#: io.c:1021 io.c:1075
+#: io.c:1025 io.c:1080 main.c:718 main.c:756
#, c-format
msgid "error writing standard output (%s)"
msgstr "ɸ½à½ÐÎϤؤνñ¹þ¤ß¥¨¥é¡¼ (%s)"
-#: io.c:1025 io.c:1079
+#: io.c:1029 io.c:1085
#, c-format
msgid "error writing standard error (%s)"
msgstr "ɸ½à¥¨¥é¡¼¤Ø¤Î½ñ¹þ¤ß¥¨¥é¡¼ (%s)"
-#: io.c:1033
+#: io.c:1037
#, c-format
msgid "pipe flush of `%s' failed (%s)."
msgstr "¥Ñ¥¤¥× `%s' ¤ò¥Õ¥é¥Ã¥·¥å¤Ç¤­¤Þ¤»¤ó (%s)¡£"
-#: io.c:1036
+#: io.c:1040
#, c-format
msgid "co-process flush of pipe to `%s' failed (%s)."
msgstr "`%s' ¤ØÀܳ¤¹¤ë¥Ñ¥¤¥×¤òÊÂ¹Ô¥×¥í¥»¥¹¤«¤é¥Õ¥é¥Ã¥·¥å¤Ç¤­¤Þ¤»¤ó (%s)¡£"
-#: io.c:1039
+#: io.c:1043
#, c-format
msgid "file flush of `%s' failed (%s)."
msgstr "¥Õ¥¡¥¤¥ë `%s' ¤ò¥Õ¥é¥Ã¥·¥å¤Ç¤­¤Þ¤»¤ó (%s)¡£"
-#: io.c:1198
+#: io.c:1205
msgid "/inet/raw client not ready yet, sorry"
msgstr "»ÄÇ°¤Ê¤¬¤é¡¢/inet/raw ¥¯¥é¥¤¥¢¥ó¥È¤Î½àÈ÷¤¬¤Ç¤­¤Æ¤¤¤Þ¤»¤ó¡£"
-#: io.c:1200 io.c:1237
+#: io.c:1207 io.c:1244
msgid "only root may use `/inet/raw'."
msgstr "`/inet/raw' ¤Ï root ¥æ¡¼¥¶¡¼¤Î¤ß»ÈÍѤǤ­¤Þ¤¹¡£"
-#: io.c:1235
+#: io.c:1242
msgid "/inet/raw server not ready yet, sorry"
msgstr "»ÄÇ°¤Ê¤¬¤é¡¢/inet/raw ¥µ¡¼¥Ð¡¼¤Î½àÈ÷¤¬¤Ç¤­¤Æ¤¤¤Þ¤»¤ó¡£"
-#: io.c:1325
+#: io.c:1332
#, c-format
msgid "no (known) protocol supplied in special filename `%s'"
msgstr ""
"¥¹¥Ú¥·¥ã¥ë¥Õ¥¡¥¤¥ë̾ `%s' ¤Ë¡Êǧ¼±¤Ç¤­¤ë¡Ë¥×¥í¥È¥³¥ë¤¬»ØÄꤵ¤ì¤Æ¤¤¤Þ¤»¤ó¡£"
-#: io.c:1343
+#: io.c:1350
#, c-format
msgid "special file name `%s' is incomplete"
msgstr "¥¹¥Ú¥·¥ã¥ë¥Õ¥¡¥¤¥ë̾ `%s' ¤ÏÉÔ´°Á´¤Ç¤¹¡£"
-#: io.c:1355
+#: io.c:1362
#, c-format
msgid "local port invalid in `%s'"
msgstr "`%s' ¤Î¥í¡¼¥«¥ë¥Ý¡¼¥È¤¬Ìµ¸ú¤Ç¤¹¡£"
-#: io.c:1367
+#: io.c:1374
msgid "must supply a remote hostname to `/inet'"
msgstr "`/inet' ¤Ë¤Ï¥ê¥â¡¼¥È¥Û¥¹¥È̾¤¬É¬ÍפǤ¹¡£"
-#: io.c:1382
+#: io.c:1389
msgid "must supply a remote port to `/inet'"
msgstr "`/inet' ¤Ë¤Ï¥ê¥â¡¼¥È¥Ý¡¼¥ÈÈֹ椬ɬÍפǤ¹¡£"
-#: io.c:1388
+#: io.c:1395
#, c-format
msgid "remote port invalid in `%s'"
msgstr "`%s' ¤Î¥ê¥â¡¼¥È¥Ý¡¼¥È¤¬Ìµ¸ú¤Ç¤¹¡£"
-#: io.c:1398
+#: io.c:1405
msgid "TCP/IP communications are not supported"
msgstr "TCP/IP Àܳ¤Ï»ÈÍѤǤ­¤Þ¤»¤ó¡£"
-#: io.c:1407 io.c:1588
+#: io.c:1414 io.c:1595
#, c-format
msgid "file `%s' is a directory"
msgstr "¥Õ¥¡¥¤¥ë `%s' ¤Ï¥Ç¥£¥ì¥¯¥È¥ê¤Ç¤¹¡£"
-#: io.c:1477
+#: io.c:1484
#, c-format
msgid "use `PROCINFO[\"%s\"]' instead of `%s'"
msgstr "`%2$s' ¤ÎÂå¤ï¤ê¤Ë `PROCINFO[\"%1$s\"]' ¤ò»ÈÍѤ·¤Æ¤¯¤À¤µ¤¤¡£"
-#: io.c:1509
+#: io.c:1516
msgid "use `PROCINFO[...]' instead of `/dev/user'"
msgstr "`/dev/user' ¤ÎÂå¤ï¤ê¤Ë `PROCINFO[...]' ¤ò»ÈÍѤ·¤Æ¤¯¤À¤µ¤¤¡£"
-#: io.c:1574 io.c:1748
+#: io.c:1581 io.c:1763
#, c-format
msgid "could not open `%s', mode `%s'"
msgstr "`%s' (¥â¡¼¥É `%s') ¤ò³«¤±¤Þ¤»¤ó¡£"
-#: io.c:1799
+#: io.c:1814
#, c-format
msgid "close of master pty failed (%s)"
msgstr "¥Þ¥¹¥¿¡¼ pty ¤òÊĤ¸¤é¤ì¤Þ¤»¤ó (%s)¡£"
-#: io.c:1801 io.c:1953 io.c:2105
+#: io.c:1816 io.c:1968 io.c:2119
#, c-format
msgid "close of stdout in child failed (%s)"
msgstr "»Ò¥×¥í¥»¥¹¤¬É¸½à½ÐÎϤòÊĤ¸¤é¤ì¤Þ¤»¤ó (%s)¡£"
-#: io.c:1804
+#: io.c:1819
#, c-format
msgid "moving slave pty to stdout in child failed (dup: %s)"
msgstr "»Ò¥×¥í¥»¥¹¤¬¥¹¥ì¡¼¥Ö pty ¤òɸ½à½ÐÎϤ˰ÜÆ°¤Ç¤­¤Þ¤»¤ó (dup: %s)¡£"
-#: io.c:1806 io.c:1958
+#: io.c:1821 io.c:1973
#, c-format
msgid "close of stdin in child failed (%s)"
msgstr "»Ò¥×¥í¥»¥¹¤¬É¸½àÆþÎϤòÊĤ¸¤é¤ì¤Þ¤»¤ó (%s)¡£"
-#: io.c:1809
+#: io.c:1824
#, c-format
msgid "moving slave pty to stdin in child failed (dup: %s)"
msgstr "»Ò¥×¥í¥»¥¹¤¬¥¹¥ì¡¼¥Ö pty ¤òɸ½àÆþÎϤ˰ÜÆ°¤Ç¤­¤Þ¤»¤ó (dup: %s)¡£"
-#: io.c:1811 io.c:1830
+#: io.c:1826 io.c:1845
#, c-format
msgid "close of slave pty failed (%s)"
msgstr "¥¹¥ì¡¼¥Ö pty ¤òÊĤ¸¤é¤ì¤Þ¤»¤ó (%s)¡£"
-#: io.c:1904 io.c:1956 io.c:2086 io.c:2108
+#: io.c:1919 io.c:1971 io.c:2100 io.c:2122
#, c-format
msgid "moving pipe to stdout in child failed (dup: %s)"
msgstr "»Ò¥×¥í¥»¥¹¤¬¥Ñ¥¤¥×¤òɸ½à½ÐÎϤ˰ÜÆ°¤Ç¤­¤Þ¤»¤ó (dup: %s)¡£"
-#: io.c:1908 io.c:1961
+#: io.c:1923 io.c:1976
#, c-format
msgid "moving pipe to stdin in child failed (dup: %s)"
msgstr "»Ò¥×¥í¥»¥¹¤¬¥Ñ¥¤¥×¤òɸ½àÆþÎϤ˰ÜÆ°¤Ç¤­¤Þ¤»¤ó (dup: %s)¡£"
-#: io.c:1925 io.c:2099
+#: io.c:1940 io.c:2113
msgid "restoring stdout in parent process failed\n"
msgstr "¿Æ¥×¥í¥»¥¹¤¬É¸½à½ÐÎϤòÉüµì¤Ç¤­¤Þ¤»¤ó¡£\n"
-#: io.c:1930
+#: io.c:1945
msgid "restoring stdin in parent process failed\n"
msgstr "¿Æ¥×¥í¥»¥¹¤¬É¸½àÆþÎϤòÉüµì¤Ç¤­¤Þ¤»¤ó¡£\n"
-#: io.c:1964 io.c:2110 io.c:2121
+#: io.c:1979 io.c:2124 io.c:2135
#, c-format
msgid "close of pipe failed (%s)"
msgstr "¥Ñ¥¤¥×¤òÊĤ¸¤é¤ì¤Þ¤»¤ó (%s)¡£"
-#: io.c:2009
+#: io.c:2024
msgid "`|&' not supported"
msgstr "`|&' ¤Ï»ÈÍѤǤ­¤Þ¤»¤ó¡£"
-#: io.c:2076
+#: io.c:2090
#, c-format
msgid "cannot open pipe `%s' (%s)"
msgstr "¥Ñ¥¤¥× `%s' ¤¬³«¤±¤Þ¤»¤ó (%s)¡£"
-#: io.c:2117
+#: io.c:2131
#, c-format
msgid "cannot create child process for `%s' (fork: %s)"
msgstr "`%s' ÍÑ¤Î»Ò¥×¥í¥»¥¹¤ò¼Â¹Ô¤Ç¤­¤Þ¤»¤ó (fork: %s)¡£"
-#: io.c:2460
+#: io.c:2506
#, c-format
msgid "data file `%s' is empty"
msgstr "¥Ç¡¼¥¿¥Õ¥¡¥¤¥ë `%s' ¤Ï¶õ¤Ç¤¹¡£"
-#: io.c:2503 io.c:2511
+#: io.c:2547 io.c:2555
msgid "could not allocate more input memory"
msgstr "ÆþÎÏÍÑ¥á¥â¥ê¡¼¤ò¤³¤ì°Ê¾å³ÎÊݤǤ­¤Þ¤»¤ó¡£"
-#: io.c:2869 io.c:2932
+#: io.c:2919 io.c:2984
#, c-format
msgid "error reading input file `%s': %s"
msgstr "ÆþÎÏ¥Õ¥¡¥¤¥ë `%s' ¤òÆɤ߹þ¤ßÃæ¤Ë¥¨¥é¡¼¤¬È¯À¸¤·¤Þ¤·¤¿: %s¡£"
-#: io.c:3057
+#: io.c:3109
msgid "multicharacter value of `RS' is a gawk extension"
msgstr "Ê£¿ô¤Îʸ»ú¤ò `RS' ¤Ë»ÈÍѤ¹¤ë¤Î¤Ï gawk ÆÃÍ­¤Î³ÈÄ¥¤Ç¤¹¡£"
-#: main.c:323
+#: main.c:338
msgid "`-m[fr]' option irrelevant in gawk"
msgstr "gawk ¤Ç¤Ï¥ª¥×¥·¥ç¥ó `-m[fr]' ¤Ë¸ú²Ì¤Ï¤¢¤ê¤Þ¤»¤ó¡£"
-#: main.c:325
+#: main.c:340
msgid "-m option usage: `-m[fr] nnn'"
msgstr "-m ¥ª¥×¥·¥ç¥ó¤Î»ÈÍÑË¡: `-m[fr] ¿ôÃÍ'"
-#: main.c:342
+#: main.c:357
#, c-format
msgid "%s: option `-W %s' unrecognized, ignored\n"
msgstr "%s: ¥ª¥×¥·¥ç¥ó `-W %s' ¤Ïǧ¼±¤Ç¤­¤Þ¤»¤ó¡£Ìµ»ë¤·¤Þ¤¹¡£\n"
-#: main.c:379
+#: main.c:394
msgid "empty argument to `--source' ignored"
msgstr "¶õ°ú¿ô¤Î `--source' ¤Ï̵»ë¤µ¤ì¤Þ¤¹¡£"
-#: main.c:450
+#: main.c:467
msgid "environment variable `POSIXLY_CORRECT' set: turning on `--posix'"
msgstr ""
"´Ä¶­ÊÑ¿ô `POSIXLY_CORRECT' ¤¬»ØÄꤵ¤ì¤Æ¤¤¤Þ¤¹¡£¥ª¥×¥·¥ç¥ó `--posix' ¤òÍ­¸ú¤Ë"
"¤·¤Þ¤¹¡£"
-#: main.c:455
+#: main.c:472
msgid "`--posix' overrides `--traditional'"
msgstr "¥ª¥×¥·¥ç¥ó `--posix' ¤Ï `--traditional' ¤ò̵¸ú¤Ë¤·¤Þ¤¹¡£"
-#: main.c:466
+#: main.c:483
msgid "`--posix'/`--traditional' overrides `--non-decimal-data'"
msgstr ""
"¥ª¥×¥·¥ç¥ó `--posix'/`--traditional' ¤Ï `--non-decimal-data' ¤ò̵¸ú¤Ë¤·¤Þ¤¹¡£"
-#: main.c:470
+#: main.c:487
#, c-format
msgid "running %s setuid root may be a security problem"
msgstr ""
"setuid root ¤Ç %s ¤ò¼Â¹Ô¤¹¤ë¤È¡¢¥»¥­¥å¥ê¥Æ¥£¾å¤ÎÌäÂ꤬ȯÀ¸¤¹¤ë¾ì¹ç¤¬¤¢¤ê¤Þ"
"¤¹¡£"
-#: main.c:511
+#: main.c:528
#, c-format
msgid "can't set binary mode on stdin (%s)"
msgstr "ɸ½àÆþÎϤò¥Ð¥¤¥Ê¥ê¥â¡¼¥É¤ËÀßÄê¤Ç¤­¤Þ¤»¤ó (%s)¡£"
-#: main.c:514
+#: main.c:531
#, c-format
msgid "can't set binary mode on stdout (%s)"
msgstr "ɸ½à½ÐÎϤò¥Ð¥¤¥Ê¥ê¥â¡¼¥É¤ËÀßÄê¤Ç¤­¤Þ¤»¤ó (%s)¡£"
-#: main.c:516
+#: main.c:533
#, c-format
msgid "can't set binary mode on stderr (%s)"
msgstr "ɸ½à¥¨¥é¡¼¤ò¥Ð¥¤¥Ê¥ê¥â¡¼¥É¤ËÀßÄê¤Ç¤­¤Þ¤»¤ó (%s)¡£"
-#: main.c:546
+#: main.c:572
msgid "no program text at all!"
msgstr "¥×¥í¥°¥é¥àʸ¤¬Á´¤¯¤¢¤ê¤Þ¤»¤ó!"
-#: main.c:623
+#: main.c:665
#, c-format
msgid "Usage: %s [POSIX or GNU style options] -f progfile [--] file ...\n"
msgstr ""
"»È¤¤Êý: %s [POSIX ¤Þ¤¿¤Ï GNU ·Á¼°¥ª¥×¥·¥ç¥ó] -f ¥×¥í¥°¥é¥à¥Õ¥¡¥¤¥ë [--] ÆþÎÏ"
"¥Õ¥¡¥¤¥ë ¡Ä\n"
-#: main.c:625
+#: main.c:667
#, c-format
msgid "Usage: %s [POSIX or GNU style options] [--] %cprogram%c file ...\n"
msgstr ""
"»È¤¤Êý: %s [POSIX ¤Þ¤¿¤Ï GNU ·Á¼°¥ª¥×¥·¥ç¥ó] [--] %c¥×¥í¥°¥é¥à%c ÆþÎÏ¥Õ¥¡¥¤"
"¥ë ¡Ä\n"
-#: main.c:630
+#: main.c:672
msgid "POSIX options:\t\tGNU long options:\n"
msgstr "POSIX ¥ª¥×¥·¥ç¥ó:\t\tGNU Ĺ·Á¼°¥ª¥×¥·¥ç¥ó\n"
-#: main.c:631
+#: main.c:673
msgid "\t-f progfile\t\t--file=progfile\n"
msgstr "\t-f ¥×¥í¥°¥é¥à¥Õ¥¡¥¤¥ë\t\t--file=¥×¥í¥°¥é¥à¥Õ¥¡¥¤¥ë\n"
-#: main.c:632
+#: main.c:674
msgid "\t-F fs\t\t\t--field-separator=fs\n"
msgstr ""
"\t-F ¥Õ¥£¡¼¥ë¥É¥»¥Ñ¥ì¡¼¥¿\t\t\t--field-separator=¥Õ¥£¡¼¥ë¥É¥»¥Ñ¥ì¡¼¥¿\n"
-#: main.c:633
+#: main.c:675
msgid "\t-v var=val\t\t--assign=var=val\n"
msgstr "\t-v ÊÑ¿ô=ÂåÆþÃÍ\t\t--assign=ÊÑ¿ô=ÂåÆþÃÍ\n"
-#: main.c:634
+#: main.c:676
msgid "\t-m[fr] val\n"
msgstr "\t-m[fr] ¿ôÃÍ\n"
-#: main.c:635
+#: main.c:677
msgid "\t-W compat\t\t--compat\n"
msgstr "\t-W compat\t\t--compat\n"
-#: main.c:636
+#: main.c:678
msgid "\t-W copyleft\t\t--copyleft\n"
msgstr "\t-W copyleft\t\t--copyleft\n"
-#: main.c:637
+#: main.c:679
msgid "\t-W copyright\t\t--copyright\n"
msgstr "\t-W copyright\t\t--copyright\n"
-#: main.c:638
+#: main.c:680
msgid "\t-W dump-variables[=file]\t--dump-variables[=file]\n"
msgstr "\t-W dump-variables[=¥Õ¥¡¥¤¥ë]\t--dump-variables[=¥Õ¥¡¥¤¥ë]\n"
-#: main.c:639
+#: main.c:681
+msgid "\t-W exec=file\t\t--exec=file\n"
+msgstr "\t-W exec=¥Õ¥¡¥¤¥ë\t\t--exec=¥Õ¥¡¥¤¥ë\n"
+
+#: main.c:682
msgid "\t-W gen-po\t\t--gen-po\n"
msgstr "\t-W gen-po\t\t--gen-po\n"
-#: main.c:640
+#: main.c:683
msgid "\t-W help\t\t\t--help\n"
msgstr "\t-W help\t\t\t--help\n"
-#: main.c:641
+#: main.c:684
msgid "\t-W lint[=fatal]\t\t--lint[=fatal]\n"
msgstr "\t-W lint[=fatal]\t\t--lint[=fatal]\n"
-#: main.c:642
+#: main.c:685
msgid "\t-W lint-old\t\t--lint-old\n"
msgstr "\t-W lint-old\t\t--lint-old\n"
-#: main.c:643
+#: main.c:686
msgid "\t-W non-decimal-data\t--non-decimal-data\n"
msgstr "\t-W non-decimal-data\t--non-decimal-data\n"
-#: main.c:645
+#: main.c:688
msgid "\t-W nostalgia\t\t--nostalgia\n"
msgstr "\t-W nostalgia\t\t--nostalgia\n"
-#: main.c:648
+#: main.c:691
msgid "\t-W parsedebug\t\t--parsedebug\n"
msgstr "\t-W parsedebug\t\t--parsedebug\n"
-#: main.c:650
+#: main.c:693
msgid "\t-W profile[=file]\t--profile[=file]\n"
msgstr "\t-W profile[=¥Õ¥¡¥¤¥ë]\t--profile[=¥Õ¥¡¥¤¥ë]\n"
-#: main.c:651
+#: main.c:694
msgid "\t-W posix\t\t--posix\n"
msgstr "\t-W posix\t\t--posix\n"
-#: main.c:652
+#: main.c:695
msgid "\t-W re-interval\t\t--re-interval\n"
msgstr "\t-W re-interval\t\t--re-interval\n"
-#: main.c:653
+#: main.c:696
msgid "\t-W source=program-text\t--source=program-text\n"
msgstr "\t-W source=¥×¥í¥°¥é¥àʸ\t--source=¥×¥í¥°¥é¥àʸ\n"
-#: main.c:654
+#: main.c:697
msgid "\t-W traditional\t\t--traditional\n"
msgstr "\t-W traditional\t\t--traditional\n"
-#: main.c:655
+#: main.c:698
msgid "\t-W usage\t\t--usage\n"
msgstr "\t-W usage\t\t--usage\n"
-#: main.c:656
+#: main.c:699
msgid "\t-W version\t\t--version\n"
msgstr "\t-W version\t\t--version\n"
-#: main.c:660
+#: main.c:703
msgid ""
"\n"
"To report bugs, see node `Bugs' in `gawk.info', which is\n"
@@ -1558,7 +1570,7 @@ msgstr ""
"¤Ï¡¢`Reporting Problems and Bugs' ¤Ç¤¹¡£\n"
"\n"
-#: main.c:664
+#: main.c:707
msgid ""
"gawk is a pattern scanning and processing language.\n"
"By default it reads standard input and writes standard output.\n"
@@ -1568,7 +1580,7 @@ msgstr ""
"¥Ç¥Õ¥©¥ë¥ÈÀßÄê¤Ç¤Ï¡¢É¸½àÆþÎϤòÆɤ߹þ¤ß¡¢É¸½à½ÐÎϤ˽ñ¤­½Ð¤·¤Þ¤¹¡£\n"
"\n"
-#: main.c:668
+#: main.c:711
msgid ""
"Examples:\n"
"\tgawk '{ sum += $1 }; END { print sum }' file\n"
@@ -1578,7 +1590,7 @@ msgstr ""
"\tgawk '{ sum += $1 }; END { print sum }' ÆþÎÏ¥Õ¥¡¥¤¥ë\n"
"\tgawk -F: '{ print $1 }' /etc/passwd\n"
-#: main.c:685
+#: main.c:731
#, c-format
msgid ""
"Copyright (C) 1989, 1991-%d Free Software Foundation.\n"
@@ -1596,7 +1608,7 @@ msgstr ""
"¤Ë½¾¤¤ºÆÇÛÉÛ¡¢µÚ¤Ó/¤Þ¤¿¤Ï¡¢Êѹ¹¤ò²Ã¤¨¤ë¤³¤È¤¬¤Ç¤­¤Þ¤¹¡£\n"
"\n"
-#: main.c:693
+#: main.c:739
msgid ""
"This program is distributed in the hope that it will be useful,\n"
"but WITHOUT ANY WARRANTY; without even the implied warranty of\n"
@@ -1610,11 +1622,12 @@ msgstr ""
"¾Ü¤·¤¯¤Ï¡¢GNU General Public License ¤ò»²¾È¤·¤Æ¤¯¤À¤µ¤¤¡£\n"
"\n"
-#: main.c:699
+#: main.c:745
msgid ""
"You should have received a copy of the GNU General Public License\n"
"along with this program; if not, write to the Free Software\n"
-"Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.\n"
+"Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, "
+"USA.\n"
msgstr ""
"ËÜ¥×¥í¥°¥é¥à¤Ë¤Ï¡¢GNU General Public License ¤¬ÅºÉÕ¤µ¤ì¤Æ¤¤¤ë¤Ï¤º¤Ç¤¹¡£\n"
"¤â¤·¡¢ËÜ¥×¥í¥°¥é¥à¤È°ì½ï¤Ë GNU General Public License ¤òÆþ¼ê¤·¤Ê¤«¤Ã¤¿\n"
@@ -1623,11 +1636,11 @@ msgstr ""
"\t59 Temple Place - Suite 330, Boston, MA 02111-1307, USA\n"
"¤Ø½ñÌ̤ǤªÃΤ餻¤¯¤À¤µ¤¤¡£\n"
-#: main.c:733
+#: main.c:781
msgid "-Ft does not set FS to tab in POSIX awk"
msgstr "POSIX »ÅÍͤΠawk ¤Ç¤Ï -Ft ¤Ç FS ¤ò¥¿¥Ö¤ËÀßÄê¤Ç¤­¤Þ¤»¤ó¡£"
-#: main.c:962
+#: main.c:1018
#, c-format
msgid ""
"%s: `%s' argument to `-v' not in `var=value' form\n"
@@ -1636,35 +1649,35 @@ msgstr ""
"%s: ¥ª¥×¥·¥ç¥ó `-v' ¤Î°ú¿ô `%s' ¤¬ `ÊÑ¿ô=ÂåÆþÃÍ' ¤Î·Á¼°¤Ë¤Ê¤Ã¤Æ¤¤¤Þ¤»¤ó¡£\n"
"\n"
-#: main.c:982
+#: main.c:1038
#, c-format
msgid "`%s' is not a legal variable name"
msgstr "`%s' ¤ÏÉÔÀµ¤ÊÊÑ¿ô̾¤Ç¤¹¡£"
-#: main.c:985
+#: main.c:1041
#, c-format
msgid "`%s' is not a variable name, looking for file `%s=%s'"
msgstr "`%s' ¤ÏÊÑ¿ô̾¤Ç¤Ï¤¢¤ê¤Þ¤»¤ó¡£`%s=%s' ¤Î¥Õ¥¡¥¤¥ë¤òõ¤·¤Þ¤¹¡£"
-#: main.c:1018
+#: main.c:1074
msgid "floating point exception"
msgstr "ÉâÆ°¾®¿ôÅÀÎã³°"
-#: main.c:1025
+#: main.c:1081
msgid "fatal error: internal error"
msgstr "Ã×̿Ū¥¨¥é¡¼: ÆâÉô¥¨¥é¡¼"
-#: main.c:1075
+#: main.c:1132
#, c-format
msgid "no pre-opened fd %d"
msgstr "fd %d ¤¬»öÁ°¤Ë³«¤¤¤Æ¤¤¤Þ¤»¤ó¡£"
-#: main.c:1082
+#: main.c:1139
#, c-format
msgid "could not pre-open /dev/null for fd %d"
msgstr "»öÁ°¤Ë fd %d ÍÑ¤Ë /dev/null ¤ò³«¤±¤Þ¤»¤ó¡£"
-#: main.c:1105 main.c:1114
+#: main.c:1162 main.c:1171
#, c-format
msgid "could not find groups: %s"
msgstr "¥°¥ë¡¼¥×¤¬¸«¤Ä¤«¤ê¤Þ¤»¤ó: %s"
@@ -1686,23 +1699,23 @@ msgstr "¥¨¥é¡¼: "
msgid "fatal: "
msgstr "Ã×̿Ū: "
-#: node.c:58 node.c:65 node.c:74 node.c:88 node.c:115
+#: node.c:59 node.c:66 node.c:75 node.c:90 node.c:119
msgid "can't convert string to float"
msgstr "ʸ»úÎ󤫤éÉâÆ°¾®¿ô¤ËÊÑ´¹¤Ç¤­¤Þ¤»¤ó¡£"
-#: node.c:357
+#: node.c:414
msgid "backslash at end of string"
msgstr "ʸ»úÎó¤Î½ª¤ê¤Ë¥Ð¥Ã¥¯¥¹¥é¥Ã¥·¥å¤¬»È¤ï¤ì¤Æ¤¤¤Þ¤¹¡£"
-#: node.c:541
+#: node.c:604
msgid "POSIX does not allow `\\x' escapes"
msgstr "POSIX ¤Ï `\\x' ¥¨¥¹¥±¡¼¥×¤òµö²Ä¤·¤Þ¤»¤ó¡£"
-#: node.c:547
+#: node.c:610
msgid "no hex digits in `\\x' escape sequence"
msgstr "`\\x' ¥¨¥¹¥±¡¼¥×¥·¡¼¥±¥ó¥¹¤Ë 16 ¿Ê¿ô¤¬¤¢¤ê¤Þ¤»¤ó¡£"
-#: node.c:581
+#: node.c:644
#, c-format
msgid "escape sequence `\\%c' treated as plain `%c'"
msgstr "¥¨¥¹¥±¡¼¥×¥·¡¼¥±¥ó¥¹ `\\%c' ¤Ï `%c' ¤ÈƱÅù¤Ë°·¤ï¤ì¤Þ¤¹¡£"
@@ -1722,21 +1735,21 @@ msgstr "`%s' ¤ò½ñ¹þ¤ßÍѤ˳«¤±¤Þ¤»¤ó¤Ç¤·¤¿: %s"
msgid "internal error: %s with null vname"
msgstr "ÆâÉô¥¨¥é¡¼: %s ¤Î vname ¤¬Ìµ¸ú¤Ç¤¹¡£"
-#: profile.c:530
+#: profile.c:531
msgid "# treated internally as `delete'"
msgstr "# ÆâÉô¤Ç¤Ï `delete' ¤È¤·¤Æ°·¤ï¤ì¤Þ¤·¤¿¡£"
-#: profile.c:1167
+#: profile.c:1168
#, c-format
msgid "# this is a dynamically loaded extension function"
-msgstr ""
+msgstr "# ¤³¤ì¤ÏưŪ¤Ë¥í¡¼¥É¤µ¤ì¤¿³ÈÄ¥µ¡Ç½¤Ç¤¹¡£"
-#: profile.c:1198
+#: profile.c:1199
#, c-format
msgid "\t# gawk profile, created %s\n"
msgstr "\t# gawk ¥×¥í¥Õ¥¡¥¤¥ë¡¢ºîÀ®Æü»þ %s\n"
-#: profile.c:1201
+#: profile.c:1202
#, c-format
msgid ""
"\t# BEGIN block(s)\n"
@@ -1745,7 +1758,7 @@ msgstr ""
"\t# BEGIN ¥Ö¥í¥Ã¥¯\n"
"\n"
-#: profile.c:1211
+#: profile.c:1212
#, c-format
msgid ""
"\t# Rule(s)\n"
@@ -1754,7 +1767,7 @@ msgstr ""
"\t# ¥ë¡¼¥ë\n"
"\n"
-#: profile.c:1217
+#: profile.c:1218
#, c-format
msgid ""
"\t# END block(s)\n"
@@ -1763,7 +1776,7 @@ msgstr ""
"\t# END ¥Ö¥í¥Ã¥¯\n"
"\n"
-#: profile.c:1237
+#: profile.c:1238
#, c-format
msgid ""
"\n"
@@ -1772,89 +1785,79 @@ msgstr ""
"\n"
"\t# ´Ø¿ô°ìÍ÷¡Ê¥¢¥ë¥Õ¥¡¥Ù¥Ã¥È½ç¡Ë\n"
-#: profile.c:1452
+#: profile.c:1453
#, c-format
msgid "unexpected type %s in prec_level"
msgstr "prec_level Ãæ¤Î %s ¤ÏͽÁÛ³°¤Î¥¿¥¤¥×¤Ç¤¹¡£"
-#: regcomp.c:150
+#: regcomp.c:160
msgid "Success"
msgstr "À®¸ù"
-#: regcomp.c:153
+#: regcomp.c:163
msgid "No match"
msgstr "³ºÅö̵¤·"
-#: regcomp.c:156
+#: regcomp.c:166
msgid "Invalid regular expression"
msgstr "̵¸ú¤ÊÀµµ¬É½¸½"
-#: regcomp.c:159
+#: regcomp.c:169
msgid "Invalid collation character"
msgstr "̵¸ú¤Ê¾È¹çʸ»ú"
-#: regcomp.c:162
+#: regcomp.c:172
msgid "Invalid character class name"
msgstr "̵¸ú¤Êʸ»ú¥¯¥é¥¹Ì¾"
-#: regcomp.c:165
+#: regcomp.c:175
msgid "Trailing backslash"
msgstr "ºÇ¸å¤Ë¥Ð¥Ã¥¯¥¹¥é¥Ã¥·¥å¤¬ÉÕ¤¤¤Æ¤¤¤Þ¤¹¡£"
-#: regcomp.c:168
+#: regcomp.c:178
msgid "Invalid back reference"
msgstr "¸åÊý¤Ø¤Î»²¾È¤¬Ìµ¸ú¤Ç¤¹¡£"
-#: regcomp.c:171
+#: regcomp.c:181
msgid "Unmatched [ or [^"
msgstr "[ ¤Þ¤¿¤Ï [^ ¤¬Âбþ¤·¤Þ¤»¤ó¡£"
-#: regcomp.c:174
+#: regcomp.c:184
msgid "Unmatched ( or \\("
msgstr "( ¤Þ¤¿¤Ï \\( ¤¬Âбþ¤·¤Þ¤»¤ó¡£"
-#: regcomp.c:177
+#: regcomp.c:187
msgid "Unmatched \\{"
msgstr "\\{ ¤¬Âбþ¤·¤Þ¤»¤ó¡£"
-#: regcomp.c:180
+#: regcomp.c:190
msgid "Invalid content of \\{\\}"
msgstr "\\{\\} ¤ÎÆâÍƤ¬Ìµ¸ú¤Ç¤¹¡£"
-#: regcomp.c:183
+#: regcomp.c:193
msgid "Invalid range end"
msgstr "ÈÏ°Ï»ØÄê¤Î½ªÃ¼¤¬Ìµ¸ú¤Ç¤¹¡£"
-#: regcomp.c:186
+#: regcomp.c:196
msgid "Memory exhausted"
msgstr "¥á¥â¥ê¡¼¤¬Â­¤ê¤Þ¤»¤ó¡£"
-#: regcomp.c:189
+#: regcomp.c:199
msgid "Invalid preceding regular expression"
msgstr "Àè¹Ô¤ÎÀµµ¬É½¸½¤¬Ìµ¸ú¤Ç¤¹¡£"
-#: regcomp.c:192
+#: regcomp.c:202
msgid "Premature end of regular expression"
msgstr "Àµµ¬É½¸½¤¬½ªÃ¼¤µ¤ì¤Æ¤¤¤Þ¤»¤ó¡£"
-#: regcomp.c:195
+#: regcomp.c:205
msgid "Regular expression too big"
msgstr "Àµµ¬É½¸½¤¬Ä¹²á¤®¤Þ¤¹¡£"
-#: regcomp.c:198
+#: regcomp.c:208
msgid "Unmatched ) or \\)"
msgstr ") ¤Þ¤¿¤Ï \\) ¤¬Âбþ¤·¤Þ¤»¤ó¡£"
-#: regcomp.c:668
+#: regcomp.c:688
msgid "No previous regular expression"
msgstr "¤³¤ì¤è¤êÁ°¤Ë»ÈÍѤ·¤¿Àµµ¬É½¸½¤Ï¤¢¤ê¤Þ¤»¤ó¡£"
-
-#~ msgid "or used as a variable or an array"
-#~ msgstr "¤Þ¤¿¤ÏÊÑ¿ô¤«ÇÛÎó¤È¤·¤Æ»È¤Ã¤Æ¤¤¤Þ¤¹¡£"
-
-#~ msgid "regex match failed, not enough memory to match string \"%.*s%s\""
-#~ msgstr ""
-#~ "¥á¥â¥ê¡¼¤¬Â­¤é¤Ê¤¤¤¿¤á¡¢Àµµ¬É½¸½ \"%.*s%s\" ¤ò¸¡º÷¤Ç¤­¤Þ¤»¤ó¤Ç¤·¤¿¡£"
-
-#~ msgid "substr: length %g is < 0"
-#~ msgstr "substr: ʸ»ú¿ô %g ¤¬ < 0 ¤Ç¤¹¡£"
diff --git a/po/nl.gmo b/po/nl.gmo
new file mode 100644
index 00000000..815bb860
--- /dev/null
+++ b/po/nl.gmo
Binary files differ
diff --git a/po/nl.po b/po/nl.po
new file mode 100644
index 00000000..f5cf7f39
--- /dev/null
+++ b/po/nl.po
@@ -0,0 +1,1856 @@
+# Translation of gawk-3.1.4l to Dutch.
+# Copyright (C) 2005 Free Software Foundation, Inc.
+# Benno Schulenberg <benno@nietvergeten.nl>, 2005.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: gawk 3.1.4l\n"
+"Report-Msgid-Bugs-To: arnold@skeeve.com\n"
+"POT-Creation-Date: 2005-07-06 17:20+0300\n"
+"PO-Revision-Date: 2005-06-24 22:39+0200\n"
+"Last-Translator: Benno Schulenberg <benno@nietvergeten.nl>\n"
+"Language-Team: Dutch <vertaling@vrijschrift.org>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"X-Generator: KBabel 1.10.1\n"
+
+#: array.c:112
+#, c-format
+msgid "attempt to use function `%s' as an array"
+msgstr "functie '%s' wordt gebruikt als array"
+
+#: array.c:115
+#, c-format
+msgid "attempt to use scalar parameter `%s' as an array"
+msgstr "scalaire parameter '%s' wordt gebruikt als array"
+
+#: array.c:118
+#, c-format
+msgid "attempt to use scalar `%s' as array"
+msgstr "scalair '%s' wordt gebruikt als array"
+
+#: array.c:156
+#, c-format
+msgid "from %s"
+msgstr "van %s"
+
+#: array.c:511
+#, c-format
+msgid "reference to uninitialized element `%s[\"%s\"]'"
+msgstr "verwijzing naar ongeïnitialiseerd element '%s[\"%s\"]'"
+
+#: array.c:517
+#, c-format
+msgid "subscript of array `%s' is null string"
+msgstr "index van array '%s' is lege string"
+
+#: array.c:621
+#, c-format
+msgid "delete: index `%s' not in array `%s'"
+msgstr "delete: index '%s' niet in array '%s' "
+
+#: array.c:791
+#, c-format
+msgid "%s: empty (null)\n"
+msgstr "%s: leeg (nil)\n"
+
+#: array.c:796
+#, c-format
+msgid "%s: empty (zero)\n"
+msgstr "%s: leeg (nul)\n"
+
+#: array.c:800
+#, c-format
+msgid "%s: table_size = %d, array_size = %d\n"
+msgstr "%s: tabelgrootte = %d, arraygrootte = %d\n"
+
+#: array.c:829
+#, c-format
+msgid "%s: is parameter\n"
+msgstr "%s: is een parameter\n"
+
+#: array.c:834
+#, c-format
+msgid "%s: array_ref to %s\n"
+msgstr "%s: array-verwijzing naar %s\n"
+
+#: awkgram.y:208
+#, c-format
+msgid "%s blocks must have an action part"
+msgstr "%s-blokken horen een actiedeel te hebben"
+
+#: awkgram.y:211
+msgid "each rule must have a pattern or an action part"
+msgstr "elke regel hoort een patroon of een actiedeel te hebben"
+
+#: awkgram.y:267
+#, c-format
+msgid "`%s' is a built-in function, it cannot be redefined"
+msgstr "'%s' is een ingebouwde functie en is niet te herdefiniëren"
+
+#: awkgram.y:313
+msgid "regexp constant `//' looks like a C++ comment, but is not"
+msgstr "regexp-constante '/s/' lijkt C-commentaar, maar is het niet"
+
+#: awkgram.y:316
+#, c-format
+msgid "regexp constant `/%s/' looks like a C comment, but is not"
+msgstr "regexp-constante '/%s/' lijkt C-commentaar, maar is het niet"
+
+#: awkgram.y:343 awkgram.y:623
+msgid "statement may have no effect"
+msgstr "opdracht heeft mogelijk geen effect"
+
+#: awkgram.y:440 awkgram.y:460
+#, c-format
+msgid "`%s' used in %s action"
+msgstr "'%s' wordt gebruikt in %s-actie"
+
+#: awkgram.y:453 awkgram.y:456
+msgid "`nextfile' is a gawk extension"
+msgstr "'nextfile' is een gawk-uitbreiding"
+
+#: awkgram.y:470
+msgid "`return' used outside function context"
+msgstr "'return' wordt gebruikt buiten functiecontext"
+
+#: awkgram.y:512
+msgid "plain `print' in BEGIN or END rule should probably be `print \"\"'"
+msgstr ""
+"kale 'print' in BEGIN- of END-regel moet vermoedelijk 'print \"\"' zijn"
+
+#: awkgram.y:525 awkgram.y:532
+msgid "`delete array' is a gawk extension"
+msgstr "'delete array' is een gawk-uitbreiding"
+
+#: awkgram.y:540 awkgram.y:547
+msgid "`delete(array)' is a non-portable tawk extension"
+msgstr "'delete(array)' is een niet-overdraagbare tawk-uitbreiding"
+
+#: awkgram.y:591
+#, c-format
+msgid "duplicate case values in switch body: %s"
+msgstr "dubbele case-waarde in switch-opdracht: %s"
+
+#: awkgram.y:601
+msgid "Duplicate `default' detected in switch body"
+msgstr "dubbele 'default' in switch-opdracht"
+
+#: awkgram.y:690
+msgid "multistage two-way pipelines don't work"
+msgstr "meerfase-tweerichtings-pipelines werken niet"
+
+#: awkgram.y:781
+msgid "regular expression on right of assignment"
+msgstr "reguliere expressie rechts van toewijzing"
+
+#: awkgram.y:804
+msgid "regular expression on left of `~' or `!~' operator"
+msgstr "reguliere expressie links van '~' of '!~' operator"
+
+#: awkgram.y:812
+msgid "regular expression on right of comparison"
+msgstr "reguliere expressie rechts van vergelijking"
+
+#: awkgram.y:879
+msgid "non-redirected `getline' undefined inside END action"
+msgstr "onherverwezen 'getline' is ongedefinieerd binnen END-actie"
+
+#: awkgram.y:906
+msgid "call of `length' without parentheses is not portable"
+msgstr "aanroep van 'length' zonder haakjes is niet overdraagbaar"
+
+#: awkgram.y:909
+msgid "call of `length' without parentheses is deprecated by POSIX"
+msgstr "aanroep van 'length' zonder haakjes wordt door POSIX afgeraden"
+
+#: awkgram.y:962
+msgid "use of non-array as array"
+msgstr "non-array wordt gebruikt als array"
+
+#: awkgram.y:964
+msgid "invalid subscript expression"
+msgstr "ongeldige index-expressie"
+
+#: awkgram.y:1171
+msgid "unexpected newline or end of string"
+msgstr "onverwacht regeleinde of einde van string"
+
+#: awkgram.y:1267
+msgid "empty program text on command line"
+msgstr "lege programmatekst op commandoregel"
+
+#: awkgram.y:1320
+#, c-format
+msgid "can't open source file `%s' for reading (%s)"
+msgstr "kan bronbestand '%s' niet openen om te lezen (%s)"
+
+#: awkgram.y:1397
+#, c-format
+msgid "can't read sourcefile `%s' (%s)"
+msgstr "kan bronbestand '%s' niet lezen (%s)"
+
+#: awkgram.y:1405
+#, c-format
+msgid "source file `%s' is empty"
+msgstr "bronbestand '%s' is leeg"
+
+#: awkgram.y:1596 awkgram.y:1718 awkgram.y:1736 awkgram.y:2107 awkgram.y:2194
+msgid "source file does not end in newline"
+msgstr "bronbestand eindigt niet met een regeleinde"
+
+#: awkgram.y:1658
+msgid "unterminated regexp ends with `\\' at end of file"
+msgstr "onafgesloten reguliere expressie eindigt met '\\' aan bestandseinde"
+
+#: awkgram.y:1682
+#, c-format
+msgid "%s: %d: tawk regex modifier `/.../%c' doesn't work in gawk"
+msgstr "%s: %d: regex-optie '/.../%c' van tawk werkt niet in gawk"
+
+#: awkgram.y:1686
+#, c-format
+msgid "tawk regex modifier `/.../%c' doesn't work in gawk"
+msgstr "regex-optie '/.../%c' van tawk werkt niet in gawk"
+
+#: awkgram.y:1693
+msgid "unterminated regexp"
+msgstr "onafgesloten reguliere expressie"
+
+#: awkgram.y:1696
+msgid "unterminated regexp at end of file"
+msgstr "onafgesloten reguliere expressie aan bestandseinde"
+
+#: awkgram.y:1762
+msgid "use of `\\ #...' line continuation is not portable"
+msgstr "gebruik van regelvoortzetting '\\ #...' is niet overdraagbaar"
+
+#: awkgram.y:1774
+msgid "backslash not last character on line"
+msgstr "backslash is niet het laatste teken op de regel"
+
+#: awkgram.y:1819
+msgid "POSIX does not allow operator `**='"
+msgstr "POSIX staat operator '**=' niet toe"
+
+#: awkgram.y:1821
+msgid "old awk does not support operator `**='"
+msgstr "oude awk ondersteunt operator '**=' niet"
+
+#: awkgram.y:1830
+msgid "POSIX does not allow operator `**'"
+msgstr "POSIX staat operator '**' niet toe"
+
+#: awkgram.y:1832
+msgid "old awk does not support operator `**'"
+msgstr "oude awk ondersteunt operator '**' niet"
+
+#: awkgram.y:1863
+msgid "operator `^=' is not supported in old awk"
+msgstr "oude awk ondersteunt operator '^=' niet"
+
+#: awkgram.y:1871
+msgid "operator `^' is not supported in old awk"
+msgstr "oude awk ondersteunt operator '^' niet"
+
+#: awkgram.y:1955 awkgram.y:1970
+msgid "unterminated string"
+msgstr "onafgesloten string"
+
+#: awkgram.y:2155
+#, c-format
+msgid "invalid char '%c' in expression"
+msgstr "ongeldig teken '%c' in expressie"
+
+#: awkgram.y:2203
+#, c-format
+msgid "`%s' is a gawk extension"
+msgstr "'%s' is een gawk-uitbreiding"
+
+#: awkgram.y:2206
+#, c-format
+msgid "`%s' is a Bell Labs extension"
+msgstr "'%s' is een uitbreiding door Bell Labs"
+
+#: awkgram.y:2209
+#, c-format
+msgid "POSIX does not allow `%s'"
+msgstr "POSIX staat '%s' niet toe"
+
+#: awkgram.y:2213
+#, c-format
+msgid "`%s' is not supported in old awk"
+msgstr "oude awk ondersteunt '%s' niet"
+
+#: awkgram.y:2239
+msgid "`goto' considered harmful!\n"
+msgstr "'goto' wordt als schadelijk beschouwd!\n"
+
+#: awkgram.y:2301
+#, c-format
+msgid "%d is invalid as number of arguments for %s"
+msgstr "%d is een ongeldig aantal argumenten voor %s"
+
+#: awkgram.y:2320 awkgram.y:2323
+msgid "match: third argument is a gawk extension"
+msgstr "match: derde argument is een gawk-uitbreiding"
+
+#: awkgram.y:2336
+#, c-format
+msgid "%s: string literal as last arg of substitute has no effect"
+msgstr "%s: een stringwaarde als laatste vervangingsargument heeft geen effect"
+
+#: awkgram.y:2339
+#, c-format
+msgid "%s third parameter is not a changeable object"
+msgstr "%s: derde parameter is geen veranderbaar object"
+
+#: awkgram.y:2366 awkgram.y:2369
+msgid "close: second argument is a gawk extension"
+msgstr "close: tweede argument is een gawk-uitbreiding"
+
+#: awkgram.y:2379
+msgid "use of dcgettext(_\"...\") is incorrect: remove leading underscore"
+msgstr "dcgettext(_\"...\") is onjuist: verwijder het liggende streepje"
+
+#: awkgram.y:2394
+msgid "use of dcngettext(_\"...\") is incorrect: remove leading underscore"
+msgstr "dcngettext(_\"...\") is onjuist: verwijder het liggende streepje"
+
+#: awkgram.y:2465
+#, c-format
+msgid "function `%s': parameter #%d, `%s', duplicates parameter #%d"
+msgstr "functie '%s': parameter #%d, '%s', dupliceert parameter #%d"
+
+#: awkgram.y:2498
+#, c-format
+msgid "function `%s': parameter `%s' shadows global variable"
+msgstr "functie '%s': parameter '%s' schaduwt een globale variabele"
+
+#: awkgram.y:2610
+#, c-format
+msgid "could not open `%s' for writing (%s)"
+msgstr "kan '%s' niet openen om te schrijven (%s)"
+
+#: awkgram.y:2611 profile.c:93
+msgid "sending profile to standard error"
+msgstr "profiel gaat naar standaardfoutuitvoer"
+
+#: awkgram.y:2643
+#, c-format
+msgid "%s: close failed (%s)"
+msgstr "%s: sluiten is mislukt (%s)"
+
+#: awkgram.y:2764
+msgid "shadow_funcs() called twice!"
+msgstr "shadow_funcs() twee keer aangeroepen!"
+
+#: awkgram.y:2791
+msgid "there were shadowed variables."
+msgstr "er waren geschaduwde variabelen."
+
+#: awkgram.y:2864
+#, c-format
+msgid "function `%s': can't use function name as parameter name"
+msgstr "functie '%s': kan functienaam niet als parameternaam gebruiken"
+
+#: awkgram.y:2874
+#, c-format
+msgid "function name `%s' previously defined"
+msgstr "functienaam '%s' is al eerder gedefinieerd"
+
+#: awkgram.y:3025 awkgram.y:3031
+#, c-format
+msgid "function `%s' called but never defined"
+msgstr "functie '%s' aangeroepen maar nergens gedefinieerd"
+
+#: awkgram.y:3034
+#, c-format
+msgid "function `%s' defined but never called"
+msgstr "functie '%s' gedefinieerd maar nergens aangeroepen"
+
+#: awkgram.y:3061
+#, c-format
+msgid "regexp constant for parameter #%d yields boolean value"
+msgstr "regexp-constante als parameter #%d levert booleanwaarde op"
+
+#: awkgram.y:3105
+#, c-format
+msgid ""
+"function `%s' called with space between name and `(',\n"
+"or used as a variable or an array"
+msgstr ""
+"functie '%s' aangeroepen met spatie tussen naam en '(',\n"
+"of gebruikt als variabele of array"
+
+#: builtin.c:145
+#, c-format
+msgid "%s to \"%s\" failed (%s)"
+msgstr "%s naar \"%s\" is mislukt (%s)"
+
+#: builtin.c:146
+msgid "standard output"
+msgstr "standaarduitvoer"
+
+#: builtin.c:147
+msgid "reason unknown"
+msgstr "reden onbekend"
+
+#: builtin.c:160
+msgid "exp: received non-numeric argument"
+msgstr "exp: argument is geen getal"
+
+#: builtin.c:166
+#, c-format
+msgid "exp: argument %g is out of range"
+msgstr "exp: argument %g ligt buiten toegestane bereik"
+
+#: builtin.c:224
+#, c-format
+msgid "fflush: cannot flush: pipe `%s' opened for reading, not writing"
+msgstr ""
+"fflush: kan pipe niet leegmaken: '%s' is geopend om te lezen, niet om te "
+"schrijven"
+
+#: builtin.c:227
+#, c-format
+msgid "fflush: cannot flush: file `%s' opened for reading, not writing"
+msgstr ""
+"fflush: kan bestand niet leegmaken: '%s' is geopend om te lezen, niet om te "
+"schrijven"
+
+#: builtin.c:239
+#, c-format
+msgid "fflush: `%s' is not an open file, pipe or co-process"
+msgstr "fflush: '%s' is geen geopend bestand, pipe, of co-proces"
+
+#: builtin.c:332
+msgid "index: received non-string first argument"
+msgstr "index: eerste argument is geen string"
+
+#: builtin.c:334
+msgid "index: received non-string second argument"
+msgstr "index: tweede argument is geen string"
+
+#: builtin.c:449
+msgid "int: received non-numeric argument"
+msgstr "int: argument is geen getal"
+
+#: builtin.c:472
+#, fuzzy
+msgid "`length(array)' is a gawk extension"
+msgstr "'delete array' is een gawk-uitbreiding"
+
+#: builtin.c:481
+msgid "length: received non-string argument"
+msgstr "length: argument is geen string"
+
+#: builtin.c:506
+msgid "log: received non-numeric argument"
+msgstr "log: argument is geen getal"
+
+#: builtin.c:509
+#, c-format
+msgid "log: received negative argument %g"
+msgstr "log: argument %g is negatief"
+
+#: builtin.c:673 builtin.c:676
+msgid "must use `count$' on all formats or none"
+msgstr "'count$' hoort in alle opmaken gebruikt te worden, of in geen"
+
+#: builtin.c:778
+msgid "`$' is not permitted in awk formats"
+msgstr "'$' is niet toegestaan in awk-opmaak"
+
+#: builtin.c:784
+msgid "arg count with `$' must be > 0"
+msgstr "het aantal argumenten met '$' moet > 0 zijn"
+
+#: builtin.c:786
+#, c-format
+msgid "arg count %ld greater than total number of supplied arguments"
+msgstr "argumentental %ld is groter dan het gegeven aantal argumenten"
+
+#: builtin.c:788
+msgid "`$' not permitted after period in format"
+msgstr "'$' is niet toegestaan na een punt in de opmaak"
+
+#: builtin.c:801
+msgid "no `$' supplied for positional field width or precision"
+msgstr "geen '$' opgegeven bij positionele veldbreedte of -precisie"
+
+#: builtin.c:867
+msgid "`l' is meaningless in awk formats; ignored"
+msgstr "'l' is betekenisloos in awk-opmaak; genegeerd"
+
+#: builtin.c:871
+msgid "`l' is not permitted in POSIX awk formats"
+msgstr "'l' is niet toegestaan in POSIX awk-opmaak"
+
+#: builtin.c:882
+msgid "`L' is meaningless in awk formats; ignored"
+msgstr "'L' is betekenisloos in awk-opmaak; genegeerd"
+
+#: builtin.c:886
+msgid "`L' is not permitted in POSIX awk formats"
+msgstr "'L' is niet toegestaan in POSIX awk-opmaak"
+
+#: builtin.c:897
+msgid "`h' is meaningless in awk formats; ignored"
+msgstr "'h' is betekenisloos in awk-opmaak; genegeerd"
+
+#: builtin.c:901
+msgid "`h' is not permitted in POSIX awk formats"
+msgstr "'h' is niet toegestaan in POSIX awk-opmaak"
+
+#: builtin.c:1132
+#, c-format
+msgid "[s]printf: value %g is out of range for `%%%c' format"
+msgstr "[s]printf: waarde %g ligt buiten toegestaan bereik voor opmaak '%%%c'"
+
+#: builtin.c:1198
+msgid "not enough arguments to satisfy format string"
+msgstr "niet genoeg argumenten voor opmaakstring"
+
+#: builtin.c:1200
+msgid "^ ran out for this one"
+msgstr "niet genoeg ^ voor deze"
+
+#: builtin.c:1205
+msgid "[s]printf: format specifier does not have control letter"
+msgstr "[s]printf: opmaakaanduiding mist een stuurletter"
+
+#: builtin.c:1208
+msgid "too many arguments supplied for format string"
+msgstr "te veel argumenten voor opmaakstring"
+
+#: builtin.c:1274 builtin.c:1277
+msgid "printf: no arguments"
+msgstr "printf: geen argumenten"
+
+#: builtin.c:1301
+msgid "sqrt: received non-numeric argument"
+msgstr "sqrt: argument is geen getal"
+
+#: builtin.c:1305
+#, c-format
+msgid "sqrt: called with negative argument %g"
+msgstr "sqrt: argument %g is negatief"
+
+#: builtin.c:1329
+#, c-format
+msgid "substr: start index %g is invalid, using 1"
+msgstr "substr: startindex %g is ongeldig, 1 wordt gebruikt"
+
+#: builtin.c:1334
+#, c-format
+msgid "substr: non-integer start index %g will be truncated"
+msgstr "substr: startindex %g is geen integer, wordt afgekapt"
+
+#: builtin.c:1353
+#, c-format
+msgid "substr: length %g is not >= 1"
+msgstr "substr: lengte %g is niet >= 1"
+
+#: builtin.c:1355
+#, c-format
+msgid "substr: length %g is not >= 0"
+msgstr "substr: lengte %g is niet >= 0"
+
+#: builtin.c:1362
+#, c-format
+msgid "substr: non-integer length %g will be truncated"
+msgstr "substr: lengte %g is geen integer, wordt afgekapt"
+
+#: builtin.c:1367
+#, c-format
+msgid "substr: length %g too big for string indexing, truncating to %g"
+msgstr ""
+"substr: lengte %g is te groot voor stringindexering, wordt verkort tot %g"
+
+#: builtin.c:1379
+msgid "substr: source string is zero length"
+msgstr "substr: bronstring heeft lengte nul"
+
+#: builtin.c:1395
+#, c-format
+msgid "substr: start index %g is past end of string"
+msgstr "substr: startindex %g ligt voorbij het einde van de string"
+
+#: builtin.c:1403
+#, c-format
+msgid ""
+"substr: length %g at start index %g exceeds length of first argument (%lu)"
+msgstr ""
+"substr: lengte %g bij startindex %g is groter dan de lengte van het eerste "
+"argument (%lu)"
+
+#: builtin.c:1478
+msgid "strftime: received non-string first argument"
+msgstr "strftime: eerste argument is geen string"
+
+#: builtin.c:1484
+msgid "strftime: received empty format string"
+msgstr "strftime: opmaakstring is leeg"
+
+#: builtin.c:1493
+msgid "strftime: received non-numeric second argument"
+msgstr "strftime: tweede argument is geen getal"
+
+#: builtin.c:1556
+msgid "mktime: received non-string argument"
+msgstr "mktime: argument is geen string"
+
+#: builtin.c:1601
+msgid "system: received non-string argument"
+msgstr "system: argument is geen string"
+
+#: builtin.c:1722 eval.c:2039
+#, c-format
+msgid "reference to uninitialized field `$%d'"
+msgstr "verwijzing naar ongeïnitialiseerd veld '$%d'"
+
+#: builtin.c:1827
+msgid "tolower: received non-string argument"
+msgstr "tolower: argument is geen string"
+
+#: builtin.c:1857
+msgid "toupper: received non-string argument"
+msgstr "toupper: argument is geen string"
+
+#: builtin.c:1890
+msgid "atan2: received non-numeric first argument"
+msgstr "atan2: eerste argument is geen getal"
+
+#: builtin.c:1892
+msgid "atan2: received non-numeric second argument"
+msgstr "atan2: tweede argument is geen getal"
+
+#: builtin.c:1911
+msgid "sin: received non-numeric argument"
+msgstr "sin: argument is geen getal"
+
+#: builtin.c:1927
+msgid "cos: received non-numeric argument"
+msgstr "cos: argument is geen getal"
+
+#: builtin.c:1977
+msgid "srand: received non-numeric argument"
+msgstr "srand: argument is geen getal"
+
+#: builtin.c:2012
+msgid "match: third argument is not an array"
+msgstr "match: derde argument is geen array"
+
+#: builtin.c:2555
+msgid "gensub: third argument of 0 treated as 1"
+msgstr "gensub: derde argument is 0, wordt beschouwd als 1"
+
+#: builtin.c:2715
+msgid "lshift: received non-numeric first argument"
+msgstr "lshift: eerste argument is geen getal"
+
+#: builtin.c:2717
+msgid "lshift: received non-numeric second argument"
+msgstr "lshift: tweede argument is geen getal"
+
+#: builtin.c:2723
+#, c-format
+msgid "lshift(%lf, %lf): negative values will give strange results"
+msgstr "lshift(%lf, %lf): negatieve waarden geven rare resultaten"
+
+#: builtin.c:2725
+#, c-format
+msgid "lshift(%lf, %lf): fractional values will be truncated"
+msgstr "lshift(%lf, %lf): cijfers na de komma worden afgekapt"
+
+#: builtin.c:2727
+#, c-format
+msgid "lshift(%lf, %lf): too large shift value will give strange results"
+msgstr "lshift(%lf, %lf): te grote opschuifwaarden geven rare resultaten"
+
+#: builtin.c:2753
+msgid "rshift: received non-numeric first argument"
+msgstr "rshift: eerste argument is geen getal"
+
+#: builtin.c:2755
+msgid "rshift: received non-numeric second argument"
+msgstr "rshift: tweede argument is geen getal"
+
+#: builtin.c:2761
+#, c-format
+msgid "rshift(%lf, %lf): negative values will give strange results"
+msgstr "rshift(%lf, %lf): negatieve waarden geven rare resultaten"
+
+#: builtin.c:2763
+#, c-format
+msgid "rshift(%lf, %lf): fractional values will be truncated"
+msgstr "rshift(%lf, %lf): cijfers na de komma worden afgekapt"
+
+#: builtin.c:2765
+#, c-format
+msgid "rshift(%lf, %lf): too large shift value will give strange results"
+msgstr "rshift(%lf, %lf): te grote opschuifwaarden geven rare resultaten"
+
+#: builtin.c:2791
+msgid "and: received non-numeric first argument"
+msgstr "and: eerste argument is geen getal"
+
+#: builtin.c:2793
+msgid "and: received non-numeric second argument"
+msgstr "and: tweede argument is geen getal"
+
+#: builtin.c:2799
+#, c-format
+msgid "and(%lf, %lf): negative values will give strange results"
+msgstr "and(%lf, %lf): negatieve waarden geven rare resultaten"
+
+#: builtin.c:2801
+#, c-format
+msgid "and(%lf, %lf): fractional values will be truncated"
+msgstr "and(%lf, %lf): cijfers na de komma worden afgekapt"
+
+#: builtin.c:2827
+msgid "or: received non-numeric first argument"
+msgstr "or: eerste argument is geen getal"
+
+#: builtin.c:2829
+msgid "or: received non-numeric second argument"
+msgstr "or: tweede argument is geen getal"
+
+#: builtin.c:2835
+#, c-format
+msgid "or(%lf, %lf): negative values will give strange results"
+msgstr "or(%lf, %lf): negatieve waarden geven rare resultaten"
+
+#: builtin.c:2837
+#, c-format
+msgid "or(%lf, %lf): fractional values will be truncated"
+msgstr "or(%lf, %lf): cijfers na de komma worden afgekapt"
+
+#: builtin.c:2863
+msgid "xor: received non-numeric first argument"
+msgstr "xor: eerste argument is geen getal"
+
+#: builtin.c:2865
+msgid "xor: received non-numeric second argument"
+msgstr "xor: tweede argument is geen getal"
+
+#: builtin.c:2871
+#, c-format
+msgid "xor(%lf, %lf): negative values will give strange results"
+msgstr "xor(%lf, %lf): negatieve waarden geven rare resultaten"
+
+#: builtin.c:2873
+#, c-format
+msgid "xor(%lf, %lf): fractional values will be truncated"
+msgstr "xor(%lf, %lf): cijfers na de komma worden afgekapt"
+
+#: builtin.c:2897
+msgid "compl: received non-numeric argument"
+msgstr "compl: argument is geen getal"
+
+#: builtin.c:2903
+#, c-format
+msgid "compl(%lf): negative value will give strange results"
+msgstr "compl(%lf): negatieve waarden geven rare resultaten"
+
+#: builtin.c:2905
+#, c-format
+msgid "compl(%lf): fractional value will be truncated"
+msgstr "compl(%lf): cijfers na de komma worden afgekapt"
+
+#: builtin.c:3078
+#, c-format
+msgid "dcgettext: `%s' is not a valid locale category"
+msgstr "dcgettext: '%s' is geen geldige lokale categorie"
+
+#: eval.c:303
+#, c-format
+msgid "unknown nodetype %d"
+msgstr "onbekend nodetype %d"
+
+#: eval.c:353
+msgid "buffer overflow in genflags2str"
+msgstr "bufferoverloop in genflags2str"
+
+#: eval.c:385 eval.c:391 profile.c:838
+#, c-format
+msgid "attempt to use array `%s' in a scalar context"
+msgstr "array '%s' wordt gebruikt in een scalaire context"
+
+#: eval.c:733
+#, c-format
+msgid "for loop: array `%s' changed size from %ld to %ld during loop execution"
+msgstr ""
+"for: array '%s' veranderde van grootte %ld naar %ld tijdens uitvoer van de "
+"lus"
+
+#: eval.c:754
+msgid "`break' outside a loop is not portable"
+msgstr "'break' buiten een lus is niet overdraagbaar"
+
+#: eval.c:758
+msgid "`break' outside a loop is not allowed"
+msgstr "'break' buiten een lus is niet toegestaan"
+
+#: eval.c:775
+msgid "`continue' outside a loop is not portable"
+msgstr "'continue' buiten een lus is niet overdraagbaar"
+
+#: eval.c:779
+msgid "`continue' outside a loop is not allowed"
+msgstr "'continue' buiten een lus is niet toegestaan"
+
+#: eval.c:813
+msgid "`next' cannot be called from a BEGIN rule"
+msgstr "'next' kan niet aangeroepen worden in een BEGIN-regel"
+
+#: eval.c:815
+msgid "`next' cannot be called from an END rule"
+msgstr "'next' kan niet aangeroepen worden in een END-regel"
+
+#: eval.c:824
+msgid "`nextfile' cannot be called from a BEGIN rule"
+msgstr "'nextfile' kan niet aangeroepen worden in een BEGIN-regel"
+
+#: eval.c:826
+msgid "`nextfile' cannot be called from an END rule"
+msgstr "'nextfile' kan niet aangeroepen worden in een END-regel"
+
+#: eval.c:875
+msgid "statement has no effect"
+msgstr "opdracht heeft geen effect"
+
+#: eval.c:952 eval.c:1893
+#, c-format
+msgid "can't use function name `%s' as variable or array"
+msgstr "kan functienaam '%s' niet als variabele of array gebruiken"
+
+#: eval.c:959 eval.c:965
+#, c-format
+msgid "reference to uninitialized argument `%s'"
+msgstr "verwijzing naar ongeïnitialiseerd argument '%s'"
+
+#: eval.c:974 eval.c:1902
+#, c-format
+msgid "reference to uninitialized variable `%s'"
+msgstr "verwijzing naar ongeïnitialiseerde variabele '%s'"
+
+#: eval.c:1120
+msgid ""
+"concatenation: side effects in one expression have changed the length of "
+"another!"
+msgstr ""
+"concatenation: neveneffecten in de ene expressie hebben de lengte van een "
+"andere veranderd!"
+
+#: eval.c:1200
+msgid "assignment used in conditional context"
+msgstr "toewijzing wordt gebruikt in een conditionele context"
+
+#: eval.c:1278
+msgid "division by zero attempted"
+msgstr "deling door nul"
+
+#: eval.c:1293
+#, c-format
+msgid "division by zero attempted in `%%'"
+msgstr "deling door nul in '%%'"
+
+#: eval.c:1308 profile.c:714
+#, c-format
+msgid "illegal type (%s) in tree_eval"
+msgstr "ongeldig type (%s) in tree_eval"
+
+#: eval.c:1471
+msgid "division by zero attempted in `/='"
+msgstr "deling door nul in '/='"
+
+#: eval.c:1493
+#, c-format
+msgid "division by zero attempted in `%%='"
+msgstr "deling door nul in '%%='"
+
+#: eval.c:1758
+#, c-format
+msgid "function `%s' called with more arguments than declared"
+msgstr "functie '%s' aangeroepen met meer argumenten dan gedeclareerd"
+
+#: eval.c:1802
+#, c-format
+msgid "function `%s' not defined"
+msgstr "functie '%s' is niet gedefinieerd"
+
+#: eval.c:1865
+#, c-format
+msgid ""
+"\n"
+"\t# Function Call Stack:\n"
+"\n"
+msgstr ""
+"\n"
+"\t# Functieaanroepen-stack:\n"
+"\n"
+
+#: eval.c:1868
+#, c-format
+msgid "\t# -- main --\n"
+msgstr "\t# -- hoofd --\n"
+
+#: eval.c:2023
+msgid "attempt to field reference from non-numeric value"
+msgstr "veldverwijzingspoging via een waarde die geen getal is"
+
+#: eval.c:2025
+msgid "attempt to reference from null string"
+msgstr "verwijzingspoging via een lege string"
+
+#: eval.c:2031
+#, c-format
+msgid "attempt to access field %d"
+msgstr "toegangspoging tot veld %d"
+
+#: eval.c:2052 eval.c:2059 profile.c:935
+msgid "assignment is not allowed to result of builtin function"
+msgstr ""
+"toewijzing aan het resultaat van een ingebouwde functie is niet toegestaan"
+
+#: eval.c:2123
+msgid "`IGNORECASE' is a gawk extension"
+msgstr "'IGNORECASE' is een gawk-uitbreiding"
+
+#: eval.c:2153
+msgid "`BINMODE' is a gawk extension"
+msgstr "'BINMODE' is een gawk-uitbreiding"
+
+#: eval.c:2275
+#, c-format
+msgid "bad `%sFMT' specification `%s'"
+msgstr "onjuiste opgave van '%sFMT': '%s'"
+
+#: eval.c:2353
+msgid "turning off `--lint' due to assignment to `LINT'"
+msgstr "'--lint' wordt uitgeschakeld wegens toewijzing aan 'LINT'"
+
+#: ext.c:60 ext.c:64
+msgid "`extension' is a gawk extension"
+msgstr "'extension' is een gawk-uitbreiding"
+
+#: ext.c:74
+#, c-format
+msgid "extension: cannot open `%s' (%s)\n"
+msgstr "extension: kan '%s' niet openen (%s)\n"
+
+#: ext.c:82
+#, c-format
+msgid "extension: library `%s': cannot call function `%s' (%s)\n"
+msgstr "extension: bibliotheek '%s': kan functie '%s' niet aanroepen (%s)\n"
+
+#: ext.c:102
+msgid "extension: missing function name"
+msgstr "extension: ontbrekende functienaam"
+
+#: ext.c:107
+#, c-format
+msgid "extension: illegal character `%c' in function name `%s'"
+msgstr "extension: ongeldig teken '%c' in functienaam '%s'"
+
+#: ext.c:113
+#, c-format
+msgid "extension: can't redefine function `%s'"
+msgstr "extension: kan functie '%s' niet herdefiniëren"
+
+#: ext.c:117
+#, c-format
+msgid "extension: function `%s' already defined"
+msgstr "extension: functie '%s' is al gedefinieerd"
+
+#: ext.c:122
+#, c-format
+msgid "extension: can't use gawk built-in `%s' as function name"
+msgstr "extension: kan in gawk ingebouwde '%s' niet als functienaam gebruiken"
+
+#: ext.c:124
+#, c-format
+msgid "extension: function name `%s' previously defined"
+msgstr "extension: functienaam '%s' is al eerder gedefinieerd"
+
+#: ext.c:201
+#, c-format
+msgid "function `%s' defined to take no more than %d argument(s)"
+msgstr ""
+"functie '%s' is gedefinieerd om niet meer dan %d argument(en) te accepteren"
+
+#: ext.c:204
+#, c-format
+msgid "function `%s': missing argument #%d"
+msgstr "functie '%s': ontbrekend argument #%d"
+
+#: ext.c:214
+#, c-format
+msgid "function `%s': argument #%d: attempt to use scalar as an array"
+msgstr "functie '%s': argument #%d: een scalair wordt gebruikt als array"
+
+#: ext.c:218
+#, c-format
+msgid "function `%s': argument #%d: attempt to use array as a scalar"
+msgstr "functie '%s': argument #%d: een array wordt gebruikt als scalair"
+
+#: ext.c:243
+msgid "Operation Not Supported"
+msgstr "Actie wordt niet ondersteund"
+
+#: field.c:326
+msgid "NF set to negative value"
+msgstr "NF is op een negatieve waarde gezet"
+
+#: field.c:819
+msgid "split: second argument is not an array"
+msgstr "split: tweede argument is geen array"
+
+#: field.c:853
+msgid "split: null string for third arg is a gawk extension"
+msgstr "split: lege string als derde argument is een gawk-uitbreiding"
+
+#: field.c:905
+msgid "`FIELDWIDTHS' is a gawk extension"
+msgstr "'FIELDWIDTHS' is een gawk-uitbreiding"
+
+#: field.c:935 field.c:946
+#, c-format
+msgid "invalid FIELDWIDTHS value, near `%s'"
+msgstr "ongeldige waarde voor FIELDWIDTHS, nabij '%s'"
+
+#: field.c:1027
+msgid "null string for `FS' is a gawk extension"
+msgstr "een lege string als 'FS' is een gawk-uitbreiding"
+
+#: getopt.c:571 getopt.c:590
+#, c-format
+msgid "%s: option `%s' is ambiguous\n"
+msgstr "%s: optie '%s' is niet eenduidig\n"
+
+#: getopt.c:623 getopt.c:627
+#, c-format
+msgid "%s: option `--%s' doesn't allow an argument\n"
+msgstr "%s: optie '--%s' staat geen argument toe\n"
+
+#: getopt.c:636 getopt.c:641
+#, c-format
+msgid "%s: option `%c%s' doesn't allow an argument\n"
+msgstr "%s: optie '%c%s' staat geen argument toe\n"
+
+#: getopt.c:687 getopt.c:709 getopt.c:1040 getopt.c:1062
+#, c-format
+msgid "%s: option `%s' requires an argument\n"
+msgstr "%s: optie '%s' vereist een argument\n"
+
+#: getopt.c:747 getopt.c:750
+#, c-format
+msgid "%s: unrecognized option `--%s'\n"
+msgstr "%s: onbekende optie '--%s'\n"
+
+#: getopt.c:758 getopt.c:761
+#, c-format
+msgid "%s: unrecognized option `%c%s'\n"
+msgstr "%s: onbekende optie '%c%s'\n"
+
+#: getopt.c:816 getopt.c:819
+#, c-format
+msgid "%s: illegal option -- %c\n"
+msgstr "%s: ongeldige optie -- %c\n"
+
+#: getopt.c:825 getopt.c:828
+#, c-format
+msgid "%s: invalid option -- %c\n"
+msgstr "%s: ongeldige optie -- %c\n"
+
+#: getopt.c:883 getopt.c:902 getopt.c:1115 getopt.c:1136 main.c:448
+#, c-format
+msgid "%s: option requires an argument -- %c\n"
+msgstr "%s: optie vereist een argument -- %c\n"
+
+#: getopt.c:955 getopt.c:974
+#, c-format
+msgid "%s: option `-W %s' is ambiguous\n"
+msgstr "%s: optie '-W %s' is niet eenduidig\n"
+
+#: getopt.c:998 getopt.c:1019
+#, c-format
+msgid "%s: option `-W %s' doesn't allow an argument\n"
+msgstr "%s: optie '-W %s' staat geen argument toe\n"
+
+#: io.c:307
+#, c-format
+msgid "cannot open file `%s' for reading (%s)"
+msgstr "kan bestand '%s' niet openen om te lezen (%s)"
+
+#: io.c:398
+#, c-format
+msgid "close of fd %d (`%s') failed (%s)"
+msgstr "sluiten van fd %d ('%s') is mislukt (%s)"
+
+#: io.c:536
+#, c-format
+msgid "invalid tree type %s in redirect()"
+msgstr "ongeldig boomtype %s in redirect()"
+
+#: io.c:542
+#, c-format
+msgid "expression in `%s' redirection only has numeric value"
+msgstr "expressie in omleiding '%s' heeft alleen een getal als waarde"
+
+#: io.c:548
+#, c-format
+msgid "expression for `%s' redirection has null string value"
+msgstr "expressie voor omleiding '%s' heeft een lege string als waarde"
+
+#: io.c:553
+#, c-format
+msgid "filename `%s' for `%s' redirection may be result of logical expression"
+msgstr ""
+"bestandsnaam '%s' voor omleiding '%s' kan het resultaat zijn van een "
+"logische expressie"
+
+#: io.c:591
+#, c-format
+msgid "unnecessary mixing of `>' and `>>' for file `%.*s'"
+msgstr "onnodige mix van '>' en '>>' voor bestand '%.*s'"
+
+#: io.c:643
+#, c-format
+msgid "can't open pipe `%s' for output (%s)"
+msgstr "kan pipe '%s' niet openen voor uitvoer (%s)"
+
+#: io.c:652
+#, c-format
+msgid "can't open pipe `%s' for input (%s)"
+msgstr "kan pipe '%s' niet openen voor invoer (%s)"
+
+#: io.c:665
+#, c-format
+msgid "can't open two way socket `%s' for input/output (%s)"
+msgstr "kan tweerichtings-socket '%s' niet openen voor invoer/uitvoer (%s)"
+
+#: io.c:669
+#, c-format
+msgid "can't open two way pipe `%s' for input/output (%s)"
+msgstr "kan tweerichtings-pipe '%s' niet openen voor invoer/uitvoer (%s)"
+
+#: io.c:745
+#, c-format
+msgid "can't redirect from `%s' (%s)"
+msgstr "kan niet omleiden van '%s' (%s)"
+
+#: io.c:748
+#, c-format
+msgid "can't redirect to `%s' (%s)"
+msgstr "kan niet omleiden naar '%s' (%s)"
+
+#: io.c:787
+msgid ""
+"reached system limit for open files: starting to multiplex file descriptors"
+msgstr ""
+"systeemgrens voor aantal open bestanden is bereikt: begonnen met multiplexen"
+
+#: io.c:803
+#, c-format
+msgid "close of `%s' failed (%s)."
+msgstr "sluiten van '%s' is mislukt (%s)."
+
+#: io.c:811
+msgid "too many pipes or input files open"
+msgstr "te veel pipes of invoerbestanden geopend"
+
+#: io.c:834
+msgid "close: second argument must be `to' or `from'"
+msgstr "close: tweede argument moet 'to' of 'from' zijn"
+
+#: io.c:848
+#, c-format
+msgid "close: `%.*s' is not an open file, pipe or co-process"
+msgstr "close: '%.*s' is geen open bestand, pipe, of co-proces"
+
+#: io.c:852
+msgid "close of redirection that was never opened"
+msgstr "sluiten van een nooit-geopende omleiding"
+
+#: io.c:948
+#, c-format
+msgid "close: redirection `%s' not opened with `|&', second argument ignored"
+msgstr ""
+"close: omleiding '%s' is niet geopend met '|&'; tweede argument genegeerd"
+
+#: io.c:964
+#, c-format
+msgid "failure status (%d) on pipe close of `%s' (%s)"
+msgstr "afsluitwaarde %d bij mislukte sluiting van pipe '%s' (%s)"
+
+#: io.c:967
+#, c-format
+msgid "failure status (%d) on file close of `%s' (%s)"
+msgstr "afsluitwaarde %d bij mislukte sluiting van bestand '%s' (%s)"
+
+#: io.c:987
+#, c-format
+msgid "no explicit close of socket `%s' provided"
+msgstr "geen expliciete sluiting van socket '%s' aangegeven"
+
+#: io.c:990
+#, c-format
+msgid "no explicit close of co-process `%s' provided"
+msgstr "geen expliciete sluiting van co-proces '%s' aangegeven"
+
+#: io.c:993
+#, c-format
+msgid "no explicit close of pipe `%s' provided"
+msgstr "geen expliciete sluiting van pipe '%s' aangegeven"
+
+#: io.c:996
+#, c-format
+msgid "no explicit close of file `%s' provided"
+msgstr "geen expliciete sluiting van bestand '%s' aangegeven"
+
+#: io.c:1025 io.c:1080 main.c:718 main.c:756
+#, c-format
+msgid "error writing standard output (%s)"
+msgstr "fout tijdens schrijven van standaarduitvoer (%s)"
+
+#: io.c:1029 io.c:1085
+#, c-format
+msgid "error writing standard error (%s)"
+msgstr "fout tijdens schrijven van standaardfoutuitvoer (%s)"
+
+#: io.c:1037
+#, c-format
+msgid "pipe flush of `%s' failed (%s)."
+msgstr "leegmaken van pipe '%s' is mislukt (%s)."
+
+#: io.c:1040
+#, c-format
+msgid "co-process flush of pipe to `%s' failed (%s)."
+msgstr "leegmaken door co-proces van pipe naar '%s' is mislukt (%s)."
+
+#: io.c:1043
+#, c-format
+msgid "file flush of `%s' failed (%s)."
+msgstr "leegmaken van bestand '%s' is mislukt (%s)."
+
+#: io.c:1205
+msgid "/inet/raw client not ready yet, sorry"
+msgstr "cliënt van /inet/raw is nog niet klaar, sorry"
+
+#: io.c:1207 io.c:1244
+msgid "only root may use `/inet/raw'."
+msgstr "alleen root mag '/inet/raw' gebruiken."
+
+#: io.c:1242
+msgid "/inet/raw server not ready yet, sorry"
+msgstr "server van /inet/raw is nog niet klaar, sorry"
+
+#: io.c:1332
+#, c-format
+msgid "no (known) protocol supplied in special filename `%s'"
+msgstr "geen (bekend) protocol aangegeven in speciale bestandsnaam '%s'"
+
+#: io.c:1350
+#, c-format
+msgid "special file name `%s' is incomplete"
+msgstr "speciale bestandsnaam '%s' is onvolledig"
+
+#: io.c:1362
+#, c-format
+msgid "local port invalid in `%s'"
+msgstr "ongeldige lokale poort in '%s'"
+
+#: io.c:1374
+msgid "must supply a remote hostname to `/inet'"
+msgstr "'/inet' heeft een gindse hostnaam nodig"
+
+#: io.c:1389
+msgid "must supply a remote port to `/inet'"
+msgstr "'/inet' heeft een gindse poort nodig"
+
+#: io.c:1395
+#, c-format
+msgid "remote port invalid in `%s'"
+msgstr "ongeldige gindse poort in '%s'"
+
+#: io.c:1405
+msgid "TCP/IP communications are not supported"
+msgstr "TCP/IP-communicatie wordt niet ondersteund"
+
+#: io.c:1414 io.c:1595
+#, c-format
+msgid "file `%s' is a directory"
+msgstr "bestand '%s' is een map"
+
+#: io.c:1484
+#, c-format
+msgid "use `PROCINFO[\"%s\"]' instead of `%s'"
+msgstr "gebruik 'PROCINFO[\"%s\"]' in plaats van '%s'"
+
+#: io.c:1516
+msgid "use `PROCINFO[...]' instead of `/dev/user'"
+msgstr "gebruik 'PROCINFO[...]' in plaats van '/dev/user'"
+
+#: io.c:1581 io.c:1763
+#, c-format
+msgid "could not open `%s', mode `%s'"
+msgstr "kan '%s' niet openen, modus '%s'"
+
+#: io.c:1814
+#, c-format
+msgid "close of master pty failed (%s)"
+msgstr "kan meester-pty van kindproces niet sluiten (%s)"
+
+#: io.c:1816 io.c:1968 io.c:2119
+#, c-format
+msgid "close of stdout in child failed (%s)"
+msgstr "kan standaarduitvoer van kindproces niet sluiten (%s)"
+
+#: io.c:1819
+#, c-format
+msgid "moving slave pty to stdout in child failed (dup: %s)"
+msgstr ""
+"kan slaaf-pty niet overzetten naar standaarduitvoer van kindproces (dup: %s)"
+
+#: io.c:1821 io.c:1973
+#, c-format
+msgid "close of stdin in child failed (%s)"
+msgstr "kan standaardinvoer van kindproces niet sluiten (%s)"
+
+#: io.c:1824
+#, c-format
+msgid "moving slave pty to stdin in child failed (dup: %s)"
+msgstr ""
+"kan slaaf-pty niet overzetten naar standaardinvoer van kindproces (dup: %s)"
+
+#: io.c:1826 io.c:1845
+#, c-format
+msgid "close of slave pty failed (%s)"
+msgstr "kan slaaf-pty niet sluiten (%s)"
+
+#: io.c:1919 io.c:1971 io.c:2100 io.c:2122
+#, c-format
+msgid "moving pipe to stdout in child failed (dup: %s)"
+msgstr ""
+"kan pipe niet overzetten naar standaarduitvoer van kindproces (dup: %s)"
+
+#: io.c:1923 io.c:1976
+#, c-format
+msgid "moving pipe to stdin in child failed (dup: %s)"
+msgstr "kan pipe niet overzetten naar standaardinvoer van kindproces (dup: %s)"
+
+#: io.c:1940 io.c:2113
+msgid "restoring stdout in parent process failed\n"
+msgstr "kan standaarduitvoer van ouderproces niet herstellen\n"
+
+#: io.c:1945
+msgid "restoring stdin in parent process failed\n"
+msgstr "kan standaardinvoer van ouderproces niet herstellen\n"
+
+#: io.c:1979 io.c:2124 io.c:2135
+#, c-format
+msgid "close of pipe failed (%s)"
+msgstr "kan pipe niet sluiten (%s)"
+
+#: io.c:2024
+msgid "`|&' not supported"
+msgstr "'|&' wordt niet ondersteund"
+
+#: io.c:2090
+#, c-format
+msgid "cannot open pipe `%s' (%s)"
+msgstr "kan pipe '%s' niet openen (%s)"
+
+#: io.c:2131
+#, c-format
+msgid "cannot create child process for `%s' (fork: %s)"
+msgstr "kan voor '%s' geen kindproces maken (fork: %s)"
+
+#: io.c:2506
+#, c-format
+msgid "data file `%s' is empty"
+msgstr "databestand '%s' is leeg"
+
+#: io.c:2547 io.c:2555
+msgid "could not allocate more input memory"
+msgstr "kan geen extra invoergeheugen meer toewijzen"
+
+#: io.c:2919 io.c:2984
+#, c-format
+msgid "error reading input file `%s': %s"
+msgstr "fout tijdens lezen van invoerbestand '%s': %s"
+
+#: io.c:3109
+msgid "multicharacter value of `RS' is a gawk extension"
+msgstr "een 'RS' van meerdere tekens is een gawk-uitbreiding"
+
+#: main.c:338
+msgid "`-m[fr]' option irrelevant in gawk"
+msgstr "optie '-m[fr]' is irrelevant in gawk"
+
+#: main.c:340
+msgid "-m option usage: `-m[fr] nnn'"
+msgstr "gebruikswijze van optie -m: '-m[fr] nnn'"
+
+#: main.c:357
+#, c-format
+msgid "%s: option `-W %s' unrecognized, ignored\n"
+msgstr "%s: optie '-W %s' is onbekend; genegeerd\n"
+
+#: main.c:394
+msgid "empty argument to `--source' ignored"
+msgstr "argument van '--source' is leeg; genegeerd"
+
+#: main.c:467
+msgid "environment variable `POSIXLY_CORRECT' set: turning on `--posix'"
+msgstr "omgevingsvariabele 'POSIXLY_CORRECT' is gezet: '--posix' ingeschakeld"
+
+#: main.c:472
+msgid "`--posix' overrides `--traditional'"
+msgstr "'--posix' overstijgt '--traditional'"
+
+#: main.c:483
+msgid "`--posix'/`--traditional' overrides `--non-decimal-data'"
+msgstr "'--posix'/'--traditional' overstijgen '--non-decimal-data'"
+
+#: main.c:487
+#, c-format
+msgid "running %s setuid root may be a security problem"
+msgstr "het uitvoeren van %s als setuid root kan een veiligheidsrisico zijn"
+
+#: main.c:528
+#, c-format
+msgid "can't set binary mode on stdin (%s)"
+msgstr "kan standaardinvoer niet in binaire modus plaatsen (%s)"
+
+#: main.c:531
+#, c-format
+msgid "can't set binary mode on stdout (%s)"
+msgstr "kan standaarduitvoer niet in binaire modus plaatsen (%s)"
+
+#: main.c:533
+#, c-format
+msgid "can't set binary mode on stderr (%s)"
+msgstr "kan standaardfoutuitvoer niet in binaire modus plaatsen (%s)"
+
+#: main.c:572
+msgid "no program text at all!"
+msgstr "helemaal geen programmatekst!"
+
+#: main.c:665
+#, c-format
+msgid "Usage: %s [POSIX or GNU style options] -f progfile [--] file ...\n"
+msgstr ""
+"Gebruik: %s [opties in POSIX- of GNU-stijl] -f programmabestand [--] "
+"bestand ...\n"
+
+#: main.c:667
+#, c-format
+msgid "Usage: %s [POSIX or GNU style options] [--] %cprogram%c file ...\n"
+msgstr ""
+"Gebruik: %s [opties in POSIX- of GNU-stijl] [--] %cprogramma%c bestand ...\n"
+"\n"
+
+#: main.c:672
+msgid "POSIX options:\t\tGNU long options:\n"
+msgstr "\tPOSIX-opties:\t\t\tlange GNU-opties:\n"
+
+#: main.c:673
+msgid "\t-f progfile\t\t--file=progfile\n"
+msgstr "\t-f programmabestand\t\t--file=programmabestand\n"
+
+#: main.c:674
+msgid "\t-F fs\t\t\t--field-separator=fs\n"
+msgstr "\t-F veldscheidingsteken\t\t--field-separator=veldscheidingsteken\n"
+
+#: main.c:675
+msgid "\t-v var=val\t\t--assign=var=val\n"
+msgstr "\t-v var=waarde\t\t\t--assign=var=waarde\n"
+
+#: main.c:676
+msgid "\t-m[fr] val\n"
+msgstr "\t-m[fr] waarde\n"
+
+#: main.c:677
+msgid "\t-W compat\t\t--compat\n"
+msgstr "\t-W compat\t\t\t--compat\n"
+
+#: main.c:678
+msgid "\t-W copyleft\t\t--copyleft\n"
+msgstr "\t-W copyleft\t\t\t--copyleft\n"
+
+#: main.c:679
+msgid "\t-W copyright\t\t--copyright\n"
+msgstr "\t-W copyright\t\t\t--copyright\n"
+
+#: main.c:680
+msgid "\t-W dump-variables[=file]\t--dump-variables[=file]\n"
+msgstr "\t-W dump-variables[=bestand]\t--dump-variables[=bestand]\n"
+
+#: main.c:681
+msgid "\t-W exec=file\t\t--exec=file\n"
+msgstr "\t-W exec=bestand\t\t\t--exec=bestand\n"
+
+#: main.c:682
+msgid "\t-W gen-po\t\t--gen-po\n"
+msgstr "\t-W gen-po\t\t\t--gen-po\n"
+
+#: main.c:683
+msgid "\t-W help\t\t\t--help\n"
+msgstr "\t-W help\t\t\t\t--help\n"
+
+#: main.c:684
+msgid "\t-W lint[=fatal]\t\t--lint[=fatal]\n"
+msgstr "\t-W lint[=fatal]\t\t\t--lint[=fatal]\n"
+
+#: main.c:685
+msgid "\t-W lint-old\t\t--lint-old\n"
+msgstr "\t-W lint-old\t\t\t--lint-old\n"
+
+#: main.c:686
+msgid "\t-W non-decimal-data\t--non-decimal-data\n"
+msgstr "\t-W non-decimal-data\t\t--non-decimal-data\n"
+
+#: main.c:688
+msgid "\t-W nostalgia\t\t--nostalgia\n"
+msgstr "\t-W nostalgia\t\t\t--nostalgia\n"
+
+#: main.c:691
+msgid "\t-W parsedebug\t\t--parsedebug\n"
+msgstr "\t-W parsedebug\t\t\t--parsedebug\n"
+
+#: main.c:693
+msgid "\t-W profile[=file]\t--profile[=file]\n"
+msgstr "\t-W profile[=bestand]\t\t--profile[=bestand]\n"
+
+#: main.c:694
+msgid "\t-W posix\t\t--posix\n"
+msgstr "\t-W posix\t\t\t--posix\n"
+
+#: main.c:695
+msgid "\t-W re-interval\t\t--re-interval\n"
+msgstr "\t-W re-interval\t\t\t--re-interval\n"
+
+#: main.c:696
+msgid "\t-W source=program-text\t--source=program-text\n"
+msgstr "\t-W source=programmatekst\t--source=programmatekst\n"
+
+#: main.c:697
+msgid "\t-W traditional\t\t--traditional\n"
+msgstr "\t-W traditional\t\t\t--traditional\n"
+
+#: main.c:698
+msgid "\t-W usage\t\t--usage\n"
+msgstr "\t-W usage\t\t\t--usage\n"
+
+#: main.c:699
+msgid "\t-W version\t\t--version\n"
+msgstr "\t-W version\t\t\t--version\n"
+
+#: main.c:703
+msgid ""
+"\n"
+"To report bugs, see node `Bugs' in `gawk.info', which is\n"
+"section `Reporting Problems and Bugs' in the printed version.\n"
+"\n"
+msgstr ""
+"\n"
+"Voor het rapporteren van gebreken, zie de node 'Bugs' in 'gawk.info',\n"
+"ofwel de sectie 'Reporting Problems and Bugs' in de gedrukte versie.\n"
+"Meld fouten in de vertaling aan <vertaling@vrijschrift.org>.\n"
+"\n"
+
+#: main.c:707
+msgid ""
+"gawk is a pattern scanning and processing language.\n"
+"By default it reads standard input and writes standard output.\n"
+"\n"
+msgstr ""
+"gawk is een patroonherkennings- en bewerkingsprogramma.\n"
+"Bij verstek leest het standaardinvoer en schrijft naar standaarduitvoer.\n"
+"\n"
+
+#: main.c:711
+msgid ""
+"Examples:\n"
+"\tgawk '{ sum += $1 }; END { print sum }' file\n"
+"\tgawk -F: '{ print $1 }' /etc/passwd\n"
+msgstr ""
+"Voorbeelden:\n"
+"\tgawk '{ som += $1 }; END { print som }' bestand\n"
+"\tgawk -F: '{ print $1 }' /etc/passwd\n"
+
+#: main.c:731
+#, c-format
+msgid ""
+"Copyright (C) 1989, 1991-%d Free Software Foundation.\n"
+"\n"
+"This program is free software; you can redistribute it and/or modify\n"
+"it under the terms of the GNU General Public License as published by\n"
+"the Free Software Foundation; either version 2 of the License, or\n"
+"(at your option) any later version.\n"
+"\n"
+msgstr ""
+"Copyright (C) 1989, 1991-%d Free Software Foundation.\n"
+"\n"
+"Dit is vrije programmatuur; u mag het verspreiden en/of wijzigen\n"
+"onder de voorwaarden van de GNU General Public License zoals uitgegeven\n"
+"door de Free Software Foundation; naar keuze ofwel onder versie 2\n"
+"of onder een nieuwere versie van die licentie.\n"
+
+#: main.c:739
+msgid ""
+"This program is distributed in the hope that it will be useful,\n"
+"but WITHOUT ANY WARRANTY; without even the implied warranty of\n"
+"MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n"
+"GNU General Public License for more details.\n"
+"\n"
+msgstr ""
+"Dit programma wordt uitgegeven in de hoop dat het bruikbaar is,\n"
+"maar ZONDER ENIGE GARANTIE; zelfs zonder de impliciete garantie\n"
+"van VERKOOPBAARHEID of GESCHIKTHEID VOOR EEN BEPAALD DOEL.\n"
+"Zie de GNU General Public License voor nadere details.\n"
+"\n"
+
+#: main.c:745
+msgid ""
+"You should have received a copy of the GNU General Public License\n"
+"along with this program; if not, write to the Free Software\n"
+"Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, "
+"USA.\n"
+msgstr ""
+"Bij dit programma hoort u een kopie van de GNU General Public License\n"
+"ontvangen te hebben; is dat niet het geval, schrijf dan naar\n"
+"Free Software Foundation, Inc., 51 Franklin Street, fifth floor\n"
+"Boston, MA 02110-1301, USA.\n"
+
+#: main.c:781
+msgid "-Ft does not set FS to tab in POSIX awk"
+msgstr "-Ft maakt van FS geen tab in POSIX awk"
+
+#: main.c:1018
+#, c-format
+msgid ""
+"%s: `%s' argument to `-v' not in `var=value' form\n"
+"\n"
+msgstr ""
+"%s: argument '%s' van '-v' is niet van de vorm 'var=waarde'\n"
+"\n"
+
+#: main.c:1038
+#, c-format
+msgid "`%s' is not a legal variable name"
+msgstr "'%s' is geen geldige variabelenaam"
+
+#: main.c:1041
+#, c-format
+msgid "`%s' is not a variable name, looking for file `%s=%s'"
+msgstr "'%s' is geen variabelenaam, zoekend naar bestand '%s=%s'"
+
+#: main.c:1074
+msgid "floating point exception"
+msgstr "drijvende-komma-berekeningsfout"
+
+#: main.c:1081
+msgid "fatal error: internal error"
+msgstr "fatale fout: interne fout"
+
+#: main.c:1132
+#, c-format
+msgid "no pre-opened fd %d"
+msgstr "geen reeds-geopende fd %d"
+
+#: main.c:1139
+#, c-format
+msgid "could not pre-open /dev/null for fd %d"
+msgstr "kan /dev/null niet openen voor fd %d"
+
+#: main.c:1162 main.c:1171
+#, c-format
+msgid "could not find groups: %s"
+msgstr "kan groepen niet vinden: %s"
+
+#: msg.c:54
+#, c-format
+msgid "cmd. line:"
+msgstr "commandoregel:"
+
+#: msg.c:120
+msgid "warning: "
+msgstr "waarschuwing: "
+
+#: msg.c:142
+msgid "error: "
+msgstr "fout: "
+
+#: msg.c:178
+msgid "fatal: "
+msgstr "fataal: "
+
+#: node.c:59 node.c:66 node.c:75 node.c:90 node.c:119
+msgid "can't convert string to float"
+msgstr "kan string niet naar drijvende-komma-getal converteren"
+
+#: node.c:414
+msgid "backslash at end of string"
+msgstr "backslash aan het einde van de string"
+
+#: node.c:604
+msgid "POSIX does not allow `\\x' escapes"
+msgstr "POSIX staat geen '\\x' stuurcodes toe"
+
+#: node.c:610
+msgid "no hex digits in `\\x' escape sequence"
+msgstr "geen hex cijfers in stuurcodereeks '\\x'"
+
+#: node.c:644
+#, c-format
+msgid "escape sequence `\\%c' treated as plain `%c'"
+msgstr "stuurcodereeks '\\%c' behandeld als normale '%c'"
+
+#: posix/gawkmisc.c:172
+#, c-format
+msgid "%s %s `%s': could not set close-on-exec: (fcntl: %s)"
+msgstr "%s %s '%s': kan close-on-exec niet activeren: (fcntl: %s)"
+
+#: profile.c:91
+#, c-format
+msgid "could not open `%s' for writing: %s"
+msgstr "kan '%s' niet openen om te schrijven: %s"
+
+#: profile.c:467
+#, c-format
+msgid "internal error: %s with null vname"
+msgstr "interne fout: %s heeft een lege vname"
+
+#: profile.c:531
+msgid "# treated internally as `delete'"
+msgstr "# wordt intern behandeld als 'delete'"
+
+#: profile.c:1168
+#, c-format
+msgid "# this is a dynamically loaded extension function"
+msgstr "# dit is een dynamisch geladen uitbreidingsfunctie"
+
+#: profile.c:1199
+#, c-format
+msgid "\t# gawk profile, created %s\n"
+msgstr "\t# gawk-profiel, gemaakt %s\n"
+
+#: profile.c:1202
+#, c-format
+msgid ""
+"\t# BEGIN block(s)\n"
+"\n"
+msgstr ""
+"\t# BEGIN-blok(ken)\n"
+"\n"
+
+#: profile.c:1212
+#, c-format
+msgid ""
+"\t# Rule(s)\n"
+"\n"
+msgstr ""
+"\t# Regel(s)\n"
+"\n"
+
+#: profile.c:1218
+#, c-format
+msgid ""
+"\t# END block(s)\n"
+"\n"
+msgstr ""
+"\t# END-blok(ken)\n"
+"\n"
+
+#: profile.c:1238
+#, c-format
+msgid ""
+"\n"
+"\t# Functions, listed alphabetically\n"
+msgstr ""
+"\n"
+"\t# Functies, alfabetisch geordend\n"
+
+#: profile.c:1453
+#, c-format
+msgid "unexpected type %s in prec_level"
+msgstr "onverwacht type %s in prec_level"
+
+#: regcomp.c:160
+msgid "Success"
+msgstr "Gelukt"
+
+#: regcomp.c:163
+msgid "No match"
+msgstr "Geen overeenkomsten"
+
+#: regcomp.c:166
+msgid "Invalid regular expression"
+msgstr "Ongeldige reguliere expressie"
+
+#: regcomp.c:169
+msgid "Invalid collation character"
+msgstr "Ongeldig verbindingsteken"
+
+#: regcomp.c:172
+msgid "Invalid character class name"
+msgstr "Ongeldige tekenklassenaam"
+
+#: regcomp.c:175
+msgid "Trailing backslash"
+msgstr "Backslash aan het eind"
+
+#: regcomp.c:178
+msgid "Invalid back reference"
+msgstr "Ongeldige terugverwijzing"
+
+#: regcomp.c:181
+msgid "Unmatched [ or [^"
+msgstr "Ongepaarde [ of [^"
+
+#: regcomp.c:184
+msgid "Unmatched ( or \\("
+msgstr "Ongepaarde ( of \\("
+
+#: regcomp.c:187
+msgid "Unmatched \\{"
+msgstr "Ongepaarde \\{"
+
+#: regcomp.c:190
+msgid "Invalid content of \\{\\}"
+msgstr "Ongeldige inhoud van \\{\\}"
+
+#: regcomp.c:193
+msgid "Invalid range end"
+msgstr "Ongeldig reekseinde"
+
+#: regcomp.c:196
+msgid "Memory exhausted"
+msgstr "Onvoldoende geheugen"
+
+#: regcomp.c:199
+msgid "Invalid preceding regular expression"
+msgstr "Ongeldige voorafgaande reguliere expressie"
+
+#: regcomp.c:202
+msgid "Premature end of regular expression"
+msgstr "Voortijdig einde van reguliere expressie"
+
+#: regcomp.c:205
+msgid "Regular expression too big"
+msgstr "Reguliere expressie is te groot"
+
+#: regcomp.c:208
+msgid "Unmatched ) or \\)"
+msgstr "Ongepaarde ) of \\)"
+
+#: regcomp.c:688
+msgid "No previous regular expression"
+msgstr "Geen eerdere reguliere expressie"
diff --git a/po/pl.gmo b/po/pl.gmo
index f1fc811f..7b094018 100644
--- a/po/pl.gmo
+++ b/po/pl.gmo
Binary files differ
diff --git a/po/pl.po b/po/pl.po
index 3357867c..fd473d03 100644
--- a/po/pl.po
+++ b/po/pl.po
@@ -1,14 +1,14 @@
# Polish translations for GNU AWK package.
-# Copyright (C) 2003, 2004 Free Software Foundation, Inc.
-# Wojciech Polak <polak@gnu.org>, 2003, 2004.
+# Copyright (C) 2003, 2004, 2005 Free Software Foundation, Inc.
+# Wojciech Polak <polak@gnu.org>, 2003, 2004, 2005.
# additional help by Sergey Poznyakoff <gray@gnu.org>, 2003.
#
msgid ""
msgstr ""
-"Project-Id-Version: gawk 3.1.3l\n"
+"Project-Id-Version: gawk 3.1.4l\n"
"Report-Msgid-Bugs-To: arnold@skeeve.com\n"
-"POT-Creation-Date: 2004-07-15 13:02+0300\n"
-"PO-Revision-Date: 2004-07-18 19:36+0200\n"
+"POT-Creation-Date: 2005-07-06 17:20+0300\n"
+"PO-Revision-Date: 2005-06-26 23:55+0200\n"
"Last-Translator: Wojciech Polak <polak@gnu.org>\n"
"Language-Team: Polish <translation-team-pl@lists.sourceforge.net>\n"
"MIME-Version: 1.0\n"
@@ -92,286 +92,302 @@ msgid "`%s' is a built-in function, it cannot be redefined"
msgstr ""
"`%s' jest funkcj± wbudowan±, wiêc nie mo¿e zostaæ ponownie zdefiniowana"
-#: awkgram.y:314
+#: awkgram.y:313
+msgid "regexp constant `//' looks like a C++ comment, but is not"
+msgstr ""
+"sta³e wyra¿enie regularne `//' wygl±da jak komentarz C++, ale nim nie jest"
+
+#: awkgram.y:316
#, c-format
msgid "regexp constant `/%s/' looks like a C comment, but is not"
msgstr ""
"sta³e wyra¿enie regularne `/%s/' wygl±da jak komentarz C, ale nim nie jest"
-#: awkgram.y:341 awkgram.y:619
+#: awkgram.y:343 awkgram.y:623
msgid "statement may have no effect"
msgstr "instrukcja mo¿e nie mieæ ¿adnego efektu"
-#: awkgram.y:436 awkgram.y:456
+#: awkgram.y:440 awkgram.y:460
#, c-format
msgid "`%s' used in %s action"
msgstr "`%s' u¿yty w akcji %s"
-#: awkgram.y:449 awkgram.y:452
+#: awkgram.y:453 awkgram.y:456
msgid "`nextfile' is a gawk extension"
msgstr "`nextfile' jest rozszerzeniem gawk"
-#: awkgram.y:466
+#: awkgram.y:470
msgid "`return' used outside function context"
msgstr "`return' u¿yty poza kontekstem funkcji"
-#: awkgram.y:508
+#: awkgram.y:512
msgid "plain `print' in BEGIN or END rule should probably be `print \"\"'"
msgstr ""
"zwyk³y `print' w regu³ach BEGIN lub END powinien prawdopodobnie byæ jako "
"`print \"\"'"
-#: awkgram.y:521 awkgram.y:528
+#: awkgram.y:525 awkgram.y:532
msgid "`delete array' is a gawk extension"
msgstr "`delete tablica' jest rozszerzeniem gawk"
-#: awkgram.y:536 awkgram.y:543
+#: awkgram.y:540 awkgram.y:547
msgid "`delete(array)' is a non-portable tawk extension"
-msgstr "`delete(tablica)' jest nieprzeno¶nym rozszerzeniem gawk"
+msgstr "`delete(tablica)' jest nieprzeno¶nym rozszerzeniem tawk"
-#: awkgram.y:587
+#: awkgram.y:591
#, c-format
msgid "duplicate case values in switch body: %s"
msgstr "powielone warto¶ci case w ciele switch: %s"
-#: awkgram.y:597
+#: awkgram.y:601
msgid "Duplicate `default' detected in switch body"
msgstr "wykryto powielony `default' w ciele switch"
-#: awkgram.y:686
+#: awkgram.y:690
msgid "multistage two-way pipelines don't work"
msgstr "wieloetapowe dwukierunkowe linie potokowe nie dzia³aj±"
-#: awkgram.y:777
+#: awkgram.y:781
msgid "regular expression on right of assignment"
msgstr "wyra¿anie regularne po prawej stronie przypisania"
-#: awkgram.y:800
+#: awkgram.y:804
msgid "regular expression on left of `~' or `!~' operator"
msgstr "wyra¿enie regularne po lewej stronie operatora `~' lub `!~'"
-#: awkgram.y:808
+#: awkgram.y:812
msgid "regular expression on right of comparison"
msgstr "wyra¿enie regularne po prawej stronie porównania"
-#: awkgram.y:875
+#: awkgram.y:879
msgid "non-redirected `getline' undefined inside END action"
msgstr ""
"komenda `getline' bez przekierowania nie jest zdefiniowana wewn±trz akcji END"
-#: awkgram.y:902
+#: awkgram.y:906
msgid "call of `length' without parentheses is not portable"
msgstr "wywo³anie `length' bez nawiasów jest nieprzeno¶ne"
-#: awkgram.y:905
+#: awkgram.y:909
msgid "call of `length' without parentheses is deprecated by POSIX"
msgstr "wywo³anie `length' bez podania nawiasów jest niezalecane przez POSIX"
-#: awkgram.y:958
+#: awkgram.y:962
msgid "use of non-array as array"
msgstr "u¿ycie nie-tablicy jako tablicy"
-#: awkgram.y:960
+#: awkgram.y:964
msgid "invalid subscript expression"
msgstr "nieprawid³owe wyra¿enie indeksowe"
-#: awkgram.y:1158
+#: awkgram.y:1171
msgid "unexpected newline or end of string"
msgstr "niespodziewany znak nowego wiersza lub koñca ³añcucha"
-#: awkgram.y:1254
+#: awkgram.y:1267
msgid "empty program text on command line"
msgstr "pusty tekst programu w linii poleceñ"
-#: awkgram.y:1307
+#: awkgram.y:1320
#, c-format
msgid "can't open source file `%s' for reading (%s)"
msgstr "nie mo¿na otworzyæ pliku ¼ród³owego `%s' do czytania (%s)"
-#: awkgram.y:1384
+#: awkgram.y:1397
#, c-format
msgid "can't read sourcefile `%s' (%s)"
msgstr "nie mo¿na otworzyæ pliku ¼ród³owego `%s' (%s)"
-#: awkgram.y:1392
+#: awkgram.y:1405
#, c-format
msgid "source file `%s' is empty"
msgstr "plik ¼ród³owy `%s' jest pusty"
-#: awkgram.y:1590 awkgram.y:1700 awkgram.y:1718 awkgram.y:2068 awkgram.y:2153
+#: awkgram.y:1596 awkgram.y:1718 awkgram.y:1736 awkgram.y:2107 awkgram.y:2194
msgid "source file does not end in newline"
msgstr "plik ¼ród³owy nie posiada na koñcu znaku nowego wiersza"
-#: awkgram.y:1654
+#: awkgram.y:1658
msgid "unterminated regexp ends with `\\' at end of file"
msgstr ""
"niezakoñczone prawid³owo wyra¿enie regularne koñczy siê znakiem `\\' na "
"koñcu pliku"
-#: awkgram.y:1674
+#: awkgram.y:1682
+#, c-format
+msgid "%s: %d: tawk regex modifier `/.../%c' doesn't work in gawk"
+msgstr ""
+"%s: %d: modyfikator wyra¿enia regularnego `/.../%c' tawk nie dzia³a w gawk"
+
+#: awkgram.y:1686
+#, c-format
+msgid "tawk regex modifier `/.../%c' doesn't work in gawk"
+msgstr "modyfikator wyra¿enia regularnego `/.../%c' tawk nie dzia³a w gawk"
+
+#: awkgram.y:1693
msgid "unterminated regexp"
msgstr "niezakoñczone wyra¿enie regularne"
-#: awkgram.y:1677
+#: awkgram.y:1696
msgid "unterminated regexp at end of file"
msgstr "niezakoñczone wyra¿enie regularne na koñcu pliku"
-#: awkgram.y:1744
+#: awkgram.y:1762
msgid "use of `\\ #...' line continuation is not portable"
msgstr "u¿ycie `\\ #...' kontynuacji linii nie jest przeno¶ne"
-#: awkgram.y:1756
+#: awkgram.y:1774
msgid "backslash not last character on line"
msgstr "backslash nie jest ostatnim znakiem w wierszu"
-#: awkgram.y:1801
+#: awkgram.y:1819
msgid "POSIX does not allow operator `**='"
msgstr "POSIX nie zezwala na operator `**='"
-#: awkgram.y:1803
+#: awkgram.y:1821
msgid "old awk does not support operator `**='"
msgstr "stary awk nie wspiera operatora `**='"
-#: awkgram.y:1812
+#: awkgram.y:1830
msgid "POSIX does not allow operator `**'"
msgstr "POSIX nie zezwala na operator `**'"
-#: awkgram.y:1814
+#: awkgram.y:1832
msgid "old awk does not support operator `**'"
msgstr "stary awk nie wspiera operatora `**'"
-#: awkgram.y:1845
+#: awkgram.y:1863
msgid "operator `^=' is not supported in old awk"
msgstr "operator `^=' nie jest wspierany w starym awk"
-#: awkgram.y:1853
+#: awkgram.y:1871
msgid "operator `^' is not supported in old awk"
msgstr "operator `^' nie jest wspierany w starym awk"
-#: awkgram.y:1937 awkgram.y:1954
+#: awkgram.y:1955 awkgram.y:1970
msgid "unterminated string"
msgstr "niezakoñczony ³añcuch"
-#: awkgram.y:2114
+#: awkgram.y:2155
#, c-format
msgid "invalid char '%c' in expression"
msgstr "nieprawid³owy znak '%c' w wyra¿eniu"
-#: awkgram.y:2162
+#: awkgram.y:2203
#, c-format
msgid "`%s' is a gawk extension"
msgstr "`%s' jest rozszerzeniem gawk"
-#: awkgram.y:2165
+#: awkgram.y:2206
#, c-format
msgid "`%s' is a Bell Labs extension"
msgstr "`%s' jest rozszerzeniem Bell Labs"
-#: awkgram.y:2168
+#: awkgram.y:2209
#, c-format
msgid "POSIX does not allow `%s'"
msgstr "POSIX nie zezwala na `%s'"
-#: awkgram.y:2172
+#: awkgram.y:2213
#, c-format
msgid "`%s' is not supported in old awk"
msgstr "`%s' nie jest wspierany w starym awk"
-#: awkgram.y:2198
+#: awkgram.y:2239
msgid "`goto' considered harmful!\n"
msgstr "`goto' uwa¿ane za szkodliwe!\n"
-#: awkgram.y:2260
+#: awkgram.y:2301
#, c-format
msgid "%d is invalid as number of arguments for %s"
msgstr "%d jest nieprawid³owe jako liczba argumentów dla %s"
-#: awkgram.y:2279 awkgram.y:2282
+#: awkgram.y:2320 awkgram.y:2323
msgid "match: third argument is a gawk extension"
msgstr "match: trzeci argument jest rozszerzeniem gawk"
-#: awkgram.y:2295
+#: awkgram.y:2336
#, c-format
msgid "%s: string literal as last arg of substitute has no effect"
msgstr ""
"%s: litera³ ³añcuchowy jako ostatni argument podstawienia nie ma ¿adnego "
"efektu"
-#: awkgram.y:2298
+#: awkgram.y:2339
#, c-format
msgid "%s third parameter is not a changeable object"
msgstr "%s trzeci parametr nie jest zmiennym obiektem"
-#: awkgram.y:2325 awkgram.y:2328
+#: awkgram.y:2366 awkgram.y:2369
msgid "close: second argument is a gawk extension"
msgstr "close: drugi argument jest rozszerzeniem gawk"
-#: awkgram.y:2338
+#: awkgram.y:2379
msgid "use of dcgettext(_\"...\") is incorrect: remove leading underscore"
msgstr "nieprawid³owe u¿ycie dcgettext(_\"...\"): usuñ znak podkre¶lenia"
-#: awkgram.y:2353
+#: awkgram.y:2394
msgid "use of dcngettext(_\"...\") is incorrect: remove leading underscore"
msgstr "nieprawid³owe u¿ycie dcngettext(_\"...\"): usuñ znak podkre¶lenia"
-#: awkgram.y:2424
+#: awkgram.y:2465
#, c-format
msgid "function `%s': parameter #%d, `%s', duplicates parameter #%d"
msgstr "funkcja `%s': parametr #%d, `%s', powiela parametr #%d"
-#: awkgram.y:2457
+#: awkgram.y:2498
#, c-format
msgid "function `%s': parameter `%s' shadows global variable"
msgstr "funkcja `%s': parametr `%s' zas³ania globaln± zmienn±"
-#: awkgram.y:2569
+#: awkgram.y:2610
#, c-format
msgid "could not open `%s' for writing (%s)"
msgstr "nie mo¿na otworzyæ `%s' do zapisu (%s)"
-#: awkgram.y:2570 profile.c:93
+#: awkgram.y:2611 profile.c:93
msgid "sending profile to standard error"
msgstr "wysy³anie profilu na standardowe wyj¶cie diagnostyczne"
-#: awkgram.y:2602
+#: awkgram.y:2643
#, c-format
msgid "%s: close failed (%s)"
msgstr "%s: zamkniêcie nie powiod³o siê (%s)"
-#: awkgram.y:2723
+#: awkgram.y:2764
msgid "shadow_funcs() called twice!"
msgstr "shadow_funcs() wywo³ana podwójnie!"
-#: awkgram.y:2750
+#: awkgram.y:2791
msgid "there were shadowed variables."
msgstr "wyst±pi³y przykryte zmienne."
-#: awkgram.y:2823
+#: awkgram.y:2864
#, c-format
msgid "function `%s': can't use function name as parameter name"
msgstr "funkcja `%s': nie mo¿na u¿yæ nazwy funkcji jako nazwy parametru"
-#: awkgram.y:2833
+#: awkgram.y:2874
#, c-format
msgid "function name `%s' previously defined"
msgstr "nazwa funkcji `%s' zosta³a zdefiniowana poprzednio"
-#: awkgram.y:2984 awkgram.y:2990
+#: awkgram.y:3025 awkgram.y:3031
#, c-format
msgid "function `%s' called but never defined"
msgstr "funkcja `%s' zosta³a wywo³ana, ale nigdy nie zosta³a zdefiniowana"
-#: awkgram.y:2993
+#: awkgram.y:3034
#, c-format
msgid "function `%s' defined but never called"
msgstr "funkcja `%s' zosta³a zdefiniowana, ale nigdy nie zosta³a wywo³ana"
-#: awkgram.y:3020
+#: awkgram.y:3061
#, c-format
msgid "regexp constant for parameter #%d yields boolean value"
msgstr "sta³e wyra¿enie regularne dla parametru #%d daje warto¶æ logiczn±"
-#: awkgram.y:3033
+#: awkgram.y:3105
#, c-format
msgid ""
"function `%s' called with space between name and `(',\n"
@@ -381,196 +397,201 @@ msgstr ""
"`(',\n"
"lub u¿yta jako zmienna lub jako tablica"
-#: builtin.c:149
+#: builtin.c:145
#, c-format
msgid "%s to \"%s\" failed (%s)"
msgstr "%s do \"%s\" nie powiód³ siê (%s)"
-#: builtin.c:150
+#: builtin.c:146
msgid "standard output"
msgstr "standardowe wyj¶cie"
-#: builtin.c:151
+#: builtin.c:147
msgid "reason unknown"
msgstr "nieznany powód"
-#: builtin.c:164
+#: builtin.c:160
msgid "exp: received non-numeric argument"
msgstr "exp: otrzymano argument nie bêd±cy liczb±"
-#: builtin.c:170
+#: builtin.c:166
#, c-format
msgid "exp: argument %g is out of range"
msgstr "exp: argument %g jest poza zasiêgiem"
-#: builtin.c:228
+#: builtin.c:224
#, c-format
msgid "fflush: cannot flush: pipe `%s' opened for reading, not writing"
msgstr ""
"fflush: nie mo¿na opró¿niæ: potok `%s' otwarty do czytania, a nie do zapisu"
-#: builtin.c:231
+#: builtin.c:227
#, c-format
msgid "fflush: cannot flush: file `%s' opened for reading, not writing"
msgstr ""
"fflush: nie mo¿na opró¿niæ: plik `%s' otwarty do czytania, a nie do zapisu"
-#: builtin.c:243
+#: builtin.c:239
#, c-format
msgid "fflush: `%s' is not an open file, pipe or co-process"
msgstr "fflush: `%s' nie jest ani otwartym plikiem, ani potokiem, ani procesem"
-#: builtin.c:338
+#: builtin.c:332
msgid "index: received non-string first argument"
msgstr "index: otrzymano pierwszy argument, który nie jest ³añcuchem"
-#: builtin.c:340
+#: builtin.c:334
msgid "index: received non-string second argument"
msgstr "index: otrzymano drugi argument, który nie jest ³añcuchem"
-#: builtin.c:454
+#: builtin.c:449
msgid "int: received non-numeric argument"
msgstr "int: otrzymano argument, który nie jest liczb±"
-#: builtin.c:471
+#: builtin.c:472
+#, fuzzy
+msgid "`length(array)' is a gawk extension"
+msgstr "`delete tablica' jest rozszerzeniem gawk"
+
+#: builtin.c:481
msgid "length: received non-string argument"
msgstr "length: otrzymano argument, który nie jest ³añcuchem"
-#: builtin.c:487
+#: builtin.c:506
msgid "log: received non-numeric argument"
msgstr "log: otrzymano argument, który nie jest liczb±"
-#: builtin.c:490
+#: builtin.c:509
#, c-format
msgid "log: received negative argument %g"
msgstr "log: otrzymano ujemny argument %g"
-#: builtin.c:654 builtin.c:657
+#: builtin.c:673 builtin.c:676
msgid "must use `count$' on all formats or none"
msgstr "nale¿y u¿yæ `count$' we wszystkich formatach lub nic"
-#: builtin.c:759
+#: builtin.c:778
msgid "`$' is not permitted in awk formats"
msgstr "`$' jest niedozwolony w formatach awk"
-#: builtin.c:765
+#: builtin.c:784
msgid "arg count with `$' must be > 0"
msgstr "argument count z `$' musi byæ > 0"
-#: builtin.c:767
+#: builtin.c:786
#, c-format
msgid "arg count %ld greater than total number of supplied arguments"
msgstr "argument count %ld wiêkszy ni¿ ca³kowita suma argumentów dostarczonych"
-#: builtin.c:769
+#: builtin.c:788
msgid "`$' not permitted after period in format"
msgstr "`$' jest niedozwolony po kropce w formacie"
-#: builtin.c:782
+#: builtin.c:801
msgid "no `$' supplied for positional field width or precision"
msgstr "brak `$' dla pozycyjnej szeroko¶ci pola lub precyzji"
-#: builtin.c:848
+#: builtin.c:867
msgid "`l' is meaningless in awk formats; ignored"
msgstr "`l' jest bezsensowny w formatach awk; zignorowany"
-#: builtin.c:852
+#: builtin.c:871
msgid "`l' is not permitted in POSIX awk formats"
msgstr "`l' jest niedozwolony w formatach POSIX awk"
-#: builtin.c:863
+#: builtin.c:882
msgid "`L' is meaningless in awk formats; ignored"
msgstr "`L' jest bezsensowny w formatach awk; zignorowany"
-#: builtin.c:867
+#: builtin.c:886
msgid "`L' is not permitted in POSIX awk formats"
msgstr "`L' jest niedozwolony w formatach POSIX awk"
-#: builtin.c:878
+#: builtin.c:897
msgid "`h' is meaningless in awk formats; ignored"
msgstr "`h' jest bezsensowny w formatach awk; zignorowany"
-#: builtin.c:882
+#: builtin.c:901
msgid "`h' is not permitted in POSIX awk formats"
msgstr "`h' jest niedozwolony w formatach POSIX awk"
-#: builtin.c:1111
+#: builtin.c:1132
#, c-format
msgid "[s]printf: value %g is out of range for `%%%c' format"
msgstr "[s]printf: warto¶æ %g jest poza zasiêgiem dla formatu `%%%c'"
-#: builtin.c:1171
+#: builtin.c:1198
msgid "not enough arguments to satisfy format string"
msgstr ""
"brak wystarczaj±cej liczby argumentów, aby zaspokoiæ ³añcuch formatuj±cy"
-#: builtin.c:1173
+#: builtin.c:1200
msgid "^ ran out for this one"
msgstr "zabrak³o ^"
-#: builtin.c:1178
+#: builtin.c:1205
msgid "[s]printf: format specifier does not have control letter"
msgstr "[s]printf: specyfikator formatu nie posiada kontrolnej litery"
-#: builtin.c:1181
+#: builtin.c:1208
msgid "too many arguments supplied for format string"
msgstr "zbyt du¿o podanych argumentów w ³añcuchu formatuj±cym"
-#: builtin.c:1247 builtin.c:1250
+#: builtin.c:1274 builtin.c:1277
msgid "printf: no arguments"
msgstr "printf: brak argumentów"
-#: builtin.c:1274
+#: builtin.c:1301
msgid "sqrt: received non-numeric argument"
msgstr "sqrt: otrzymano argument, który nie jest liczb±"
-#: builtin.c:1278
+#: builtin.c:1305
#, c-format
msgid "sqrt: called with negative argument %g"
msgstr "sqrt: wywo³ana z ujemnym argumentem %g"
-#: builtin.c:1301
+#: builtin.c:1329
#, c-format
msgid "substr: start index %g is invalid, using 1"
msgstr "substr: pocz±tkowy indeks %g jest nieprawid³owy, nast±pi u¿ycie 1"
-#: builtin.c:1306
+#: builtin.c:1334
#, c-format
msgid "substr: non-integer start index %g will be truncated"
msgstr ""
"substr: pocz±tkowy indeks %g, który nie jest liczb± ca³kowit±, zostanie "
"obciêty"
-#: builtin.c:1325
+#: builtin.c:1353
#, c-format
msgid "substr: length %g is not >= 1"
msgstr "substr: d³ugo¶æ %g nie jest >= 1"
-#: builtin.c:1327
+#: builtin.c:1355
#, c-format
msgid "substr: length %g is not >= 0"
msgstr "substr: d³ugo¶æ %g nie jest >= 0"
-#: builtin.c:1334
+#: builtin.c:1362
#, c-format
msgid "substr: non-integer length %g will be truncated"
msgstr "substr: d³ugo¶æ %g, która nie jest liczb± ca³kowit±, zostanie obciêta"
-#: builtin.c:1339
+#: builtin.c:1367
#, c-format
msgid "substr: length %g too big for string indexing, truncating to %g"
msgstr "substr: d³ugo¶æ %g zbyt du¿a dla indeksu ³añcucha, obcinanie do %g"
-#: builtin.c:1351
+#: builtin.c:1379
msgid "substr: source string is zero length"
msgstr "substr: ³añcuch ¼ród³owy ma zerow± d³ugo¶æ"
-#: builtin.c:1357
+#: builtin.c:1395
#, c-format
msgid "substr: start index %g is past end of string"
msgstr "substr: pocz±tkowy indeks %g le¿y poza koñcem ³añcucha"
-#: builtin.c:1365
+#: builtin.c:1403
#, c-format
msgid ""
"substr: length %g at start index %g exceeds length of first argument (%lu)"
@@ -578,184 +599,184 @@ msgstr ""
"substr: d³ugo¶æ %g zaczynaj±c od %g przekracza d³ugo¶æ pierwszego argumentu "
"(%lu)"
-#: builtin.c:1400
+#: builtin.c:1478
msgid "strftime: received non-string first argument"
msgstr "strftime: otrzymano pierwszy argument, który nie jest ³añcuchem"
-#: builtin.c:1406
+#: builtin.c:1484
msgid "strftime: received empty format string"
msgstr "strftime: otrzymano pusty ³añcuch formatuj±cy"
-#: builtin.c:1415
+#: builtin.c:1493
msgid "strftime: received non-numeric second argument"
msgstr "strftime: otrzymano drugi argument, który nie jest liczb±"
-#: builtin.c:1478
+#: builtin.c:1556
msgid "mktime: received non-string argument"
msgstr "mktime: otrzymano argument, który nie jest ³añcuchem"
-#: builtin.c:1523
+#: builtin.c:1601
msgid "system: received non-string argument"
msgstr "system: otrzymano argument, który nie jest ³añcuchem"
-#: builtin.c:1644 eval.c:2019
+#: builtin.c:1722 eval.c:2039
#, c-format
msgid "reference to uninitialized field `$%d'"
msgstr "odwo³anie do niezainicjowanego pola `$%d'"
-#: builtin.c:1671
+#: builtin.c:1827
msgid "tolower: received non-string argument"
msgstr "tolower: otrzymano argument, który nie jest ³añcuchem"
-#: builtin.c:1720
+#: builtin.c:1857
msgid "toupper: received non-string argument"
msgstr "toupper: otrzymano argument, który nie jest ³añcuchem"
-#: builtin.c:1765
+#: builtin.c:1890
msgid "atan2: received non-numeric first argument"
msgstr "atan2: otrzymano pierwszy argument, który nie jest liczb±"
-#: builtin.c:1767
+#: builtin.c:1892
msgid "atan2: received non-numeric second argument"
msgstr "atan2: otrzymano drugi argument, który nie jest liczb±"
-#: builtin.c:1786
+#: builtin.c:1911
msgid "sin: received non-numeric argument"
msgstr "sin: otrzymano argument, który nie jest liczb±"
-#: builtin.c:1802
+#: builtin.c:1927
msgid "cos: received non-numeric argument"
msgstr "cos: otrzymano argument, który nie jest liczb±"
-#: builtin.c:1852
+#: builtin.c:1977
msgid "srand: received non-numeric argument"
msgstr "srand: otrzymano argument, który nie jest liczb±"
-#: builtin.c:1887
+#: builtin.c:2012
msgid "match: third argument is not an array"
msgstr "match: otrzymano trzeci argument, który nie jest tablic±"
-#: builtin.c:2414
+#: builtin.c:2555
msgid "gensub: third argument of 0 treated as 1"
msgstr "gensub: trzeci argument 0 potraktowany jako 1"
-#: builtin.c:2572
+#: builtin.c:2715
msgid "lshift: received non-numeric first argument"
msgstr "lshift: otrzymano pierwszy argument, który nie jest liczb±"
-#: builtin.c:2574
+#: builtin.c:2717
msgid "lshift: received non-numeric second argument"
msgstr "lshift: otrzymano drugi argument, który nie jest liczb±"
-#: builtin.c:2580
+#: builtin.c:2723
#, c-format
msgid "lshift(%lf, %lf): negative values will give strange results"
msgstr "lshift(%lf, %lf): ujemne warto¶ci spowoduj± dziwne wyniki"
-#: builtin.c:2582
+#: builtin.c:2725
#, c-format
msgid "lshift(%lf, %lf): fractional values will be truncated"
msgstr "lshift(%lf, %lf): u³amkowe warto¶ci zostan± obciête"
-#: builtin.c:2584
+#: builtin.c:2727
#, c-format
msgid "lshift(%lf, %lf): too large shift value will give strange results"
msgstr ""
"lshift(%lf, %lf): zbyt du¿a warto¶æ przesuniêcia spowoduje dziwne wyniki"
-#: builtin.c:2610
+#: builtin.c:2753
msgid "rshift: received non-numeric first argument"
msgstr "rshift: otrzymano pierwszy argument, który nie jest liczb±"
-#: builtin.c:2612
+#: builtin.c:2755
msgid "rshift: received non-numeric second argument"
msgstr "rshift: otrzymano drugi argument, który nie jest liczb±"
-#: builtin.c:2618
+#: builtin.c:2761
#, c-format
msgid "rshift(%lf, %lf): negative values will give strange results"
msgstr "rshift(%lf, %lf): ujemne warto¶ci spowoduj± dziwne wyniki"
-#: builtin.c:2620
+#: builtin.c:2763
#, c-format
msgid "rshift(%lf, %lf): fractional values will be truncated"
msgstr "rshift(%lf, %lf): u³amkowe warto¶ci zostan± obciête"
-#: builtin.c:2622
+#: builtin.c:2765
#, c-format
msgid "rshift(%lf, %lf): too large shift value will give strange results"
msgstr ""
"rshift(%lf, %lf): zbyt du¿a warto¶æ przesuniêcia spowoduje dziwne wyniki"
-#: builtin.c:2648
+#: builtin.c:2791
msgid "and: received non-numeric first argument"
msgstr "and: otrzymano pierwszy argument, który nie jest liczb±"
-#: builtin.c:2650
+#: builtin.c:2793
msgid "and: received non-numeric second argument"
msgstr "and: otrzymano drugi argument, który nie jest liczb±"
-#: builtin.c:2656
+#: builtin.c:2799
#, c-format
msgid "and(%lf, %lf): negative values will give strange results"
msgstr "and(%lf, %lf): ujemne warto¶ci spowoduj± dziwne wyniki"
-#: builtin.c:2658
+#: builtin.c:2801
#, c-format
msgid "and(%lf, %lf): fractional values will be truncated"
msgstr "and(%lf, %lf): u³amkowe warto¶ci zostan± obciête"
-#: builtin.c:2684
+#: builtin.c:2827
msgid "or: received non-numeric first argument"
msgstr "or: otrzymano pierwszy argument, który nie jest liczb±"
-#: builtin.c:2686
+#: builtin.c:2829
msgid "or: received non-numeric second argument"
msgstr "or: otrzymano drugi argument, który nie jest liczb±"
-#: builtin.c:2692
+#: builtin.c:2835
#, c-format
msgid "or(%lf, %lf): negative values will give strange results"
msgstr "or(%lf, %lf): ujemne warto¶ci spowoduj± dziwne wyniki"
-#: builtin.c:2694
+#: builtin.c:2837
#, c-format
msgid "or(%lf, %lf): fractional values will be truncated"
msgstr "or(%lf, %lf): u³amkowe warto¶ci zostan± obciête"
-#: builtin.c:2720
+#: builtin.c:2863
msgid "xor: received non-numeric first argument"
msgstr "xor: otrzymano pierwszy argument, który nie jest liczb±"
-#: builtin.c:2722
+#: builtin.c:2865
msgid "xor: received non-numeric second argument"
msgstr "xor: otrzymano drugi argument, który nie jest liczb±"
-#: builtin.c:2728
+#: builtin.c:2871
#, c-format
msgid "xor(%lf, %lf): negative values will give strange results"
msgstr "xor(%lf, %lf): ujemne warto¶ci spowoduj± dziwne wyniki"
-#: builtin.c:2730
+#: builtin.c:2873
#, c-format
msgid "xor(%lf, %lf): fractional values will be truncated"
msgstr "xor(%lf, %lf): u³amkowe warto¶ci zostan± obciête"
-#: builtin.c:2754
+#: builtin.c:2897
msgid "compl: received non-numeric argument"
msgstr "compl: otrzymano argument, który nie jest liczb±"
-#: builtin.c:2760
+#: builtin.c:2903
#, c-format
msgid "compl(%lf): negative value will give strange results"
msgstr "compl(%lf): ujemne warto¶ci spowoduj± dziwne wyniki"
-#: builtin.c:2762
+#: builtin.c:2905
#, c-format
msgid "compl(%lf): fractional value will be truncated"
msgstr "compl(%lf): u³amkowe warto¶ci zostan± obciête"
-#: builtin.c:2935
+#: builtin.c:3078
#, c-format
msgid "dcgettext: `%s' is not a valid locale category"
msgstr "dcgettext: `%s' nie jest prawid³ow± kategori± lokalizacji"
@@ -765,74 +786,74 @@ msgstr "dcgettext: `%s' nie jest prawid³ow± kategori± lokalizacji"
msgid "unknown nodetype %d"
msgstr "nieznany typ wêz³a %d"
-#: eval.c:350
+#: eval.c:353
msgid "buffer overflow in genflags2str"
msgstr "przepe³nienie bufora w genflags2str"
-#: eval.c:382 eval.c:388 profile.c:837
+#: eval.c:385 eval.c:391 profile.c:838
#, c-format
msgid "attempt to use array `%s' in a scalar context"
msgstr "próba u¿ycia tablicy `%s' w kontek¶cie skalaru"
-#: eval.c:730
+#: eval.c:733
#, c-format
msgid "for loop: array `%s' changed size from %ld to %ld during loop execution"
msgstr ""
"pêtla for: tablica `%s' zmieni³a rozmiar z %ld do %ld podczas wykonywania "
"pêtli"
-#: eval.c:751
+#: eval.c:754
msgid "`break' outside a loop is not portable"
msgstr "instrukcja `break' poza pêtl± jest nieprzeno¶na"
-#: eval.c:755
+#: eval.c:758
msgid "`break' outside a loop is not allowed"
msgstr "instrukcja `break' poza pêtl± jest niedozwolona"
-#: eval.c:772
+#: eval.c:775
msgid "`continue' outside a loop is not portable"
msgstr "instrukcja `continue' poza pêtl± jest nieprzeno¶na"
-#: eval.c:776
+#: eval.c:779
msgid "`continue' outside a loop is not allowed"
msgstr "instrukcja `continue' poza pêtl± jest niedozwolona"
-#: eval.c:810
+#: eval.c:813
msgid "`next' cannot be called from a BEGIN rule"
msgstr "instrukcja `next' nie mo¿e byæ wywo³ana z wnêtrza regu³y BEGIN"
-#: eval.c:812
+#: eval.c:815
msgid "`next' cannot be called from an END rule"
msgstr "instrukcja `next' nie mo¿e byæ wywo³ana z wnêtrza regu³y END"
-#: eval.c:821
+#: eval.c:824
msgid "`nextfile' cannot be called from a BEGIN rule"
msgstr "instrukcja `nextfile' nie mo¿e byæ wywo³ana z wnêtrza regu³y BEGIN"
-#: eval.c:823
+#: eval.c:826
msgid "`nextfile' cannot be called from an END rule"
msgstr "instrukcja `nextfile' nie mo¿e byæ wywo³ana z wnêtrza regu³y END"
-#: eval.c:872
+#: eval.c:875
msgid "statement has no effect"
msgstr "instrukcja nie ma ¿adnego efektu"
-#: eval.c:915 eval.c:1873
+#: eval.c:952 eval.c:1893
#, c-format
msgid "can't use function name `%s' as variable or array"
msgstr "nie mo¿na u¿yæ nazwy funkcji `%s' jako zmiennej lub tablicy"
-#: eval.c:922 eval.c:928
+#: eval.c:959 eval.c:965
#, c-format
msgid "reference to uninitialized argument `%s'"
msgstr "odwo³anie do niezainicjowanego argumentu `%s'"
-#: eval.c:937 eval.c:1882
+#: eval.c:974 eval.c:1902
#, c-format
msgid "reference to uninitialized variable `%s'"
msgstr "odwo³anie do niezainicjowanej zmiennej `%s'"
-#: eval.c:1083
+#: eval.c:1120
msgid ""
"concatenation: side effects in one expression have changed the length of "
"another!"
@@ -840,51 +861,46 @@ msgstr ""
"konkatenacja: skutki uboczne w jednym wyra¿eniu spowodowa³y zmianê d³ugo¶ci "
"innego wyra¿enia!"
-#: eval.c:1162
+#: eval.c:1200
msgid "assignment used in conditional context"
msgstr "przypisanie u¿yte w kontek¶cie warunkowym"
-#: eval.c:1252
+#: eval.c:1278
msgid "division by zero attempted"
msgstr "próba dzielenia przez zero"
-#: eval.c:1267
+#: eval.c:1293
#, c-format
msgid "division by zero attempted in `%%'"
msgstr "próba dzielenia przez zero w `%%'"
-#: eval.c:1282 profile.c:713
+#: eval.c:1308 profile.c:714
#, c-format
msgid "illegal type (%s) in tree_eval"
msgstr "nieprawid³owy typ (%s) w tree_eval"
-#: eval.c:1459
+#: eval.c:1471
msgid "division by zero attempted in `/='"
msgstr "próba dzielenia przez zero w `/='"
-#: eval.c:1477
+#: eval.c:1493
#, c-format
msgid "division by zero attempted in `%%='"
msgstr "próba dzielenia przez zero w `%%='"
-#: eval.c:1738
+#: eval.c:1758
#, c-format
msgid "function `%s' called with more arguments than declared"
msgstr ""
"funkcja `%s' zosta³a wywo³ana z wiêksz± ilo¶ci± argumentów ni¿ zosta³o to "
"zadeklarowane"
-#: eval.c:1782
+#: eval.c:1802
#, c-format
msgid "function `%s' not defined"
msgstr "funkcja `%s' nie zosta³a zdefiniowana"
-#: eval.c:1788
-#, c-format
-msgid "function %s called\n"
-msgstr "wywo³ano funkcjê %s\n"
-
-#: eval.c:1845
+#: eval.c:1865
#, c-format
msgid ""
"\n"
@@ -895,42 +911,42 @@ msgstr ""
"\t# Stos Wywo³awczy Funkcji:\n"
"\n"
-#: eval.c:1848
+#: eval.c:1868
#, c-format
msgid "\t# -- main --\n"
msgstr "\t# -- g³ówne --\n"
-#: eval.c:2003
+#: eval.c:2023
msgid "attempt to field reference from non-numeric value"
msgstr "próba odwo³ania do pola poprzez nienumeryczn± warto¶æ"
-#: eval.c:2005
+#: eval.c:2025
msgid "attempt to reference from null string"
msgstr "próba odwo³ania z zerowego ³añcucha"
-#: eval.c:2011
+#: eval.c:2031
#, c-format
msgid "attempt to access field %d"
msgstr "próba dostêpu do pola %d"
-#: eval.c:2032 eval.c:2039 profile.c:934
+#: eval.c:2052 eval.c:2059 profile.c:935
msgid "assignment is not allowed to result of builtin function"
msgstr "przypisanie do wyniku wbudowanej funkcji nie jest dozwolone"
-#: eval.c:2103
+#: eval.c:2123
msgid "`IGNORECASE' is a gawk extension"
msgstr "`IGNORECASE' jest rozszerzeniem gawk"
-#: eval.c:2133
+#: eval.c:2153
msgid "`BINMODE' is a gawk extension"
msgstr "`BINMODE' jest rozszerzeniem gawk"
-#: eval.c:2255
+#: eval.c:2275
#, c-format
msgid "bad `%sFMT' specification `%s'"
msgstr "z³a specyfikacja `%sFMT' `%s'"
-#: eval.c:2333
+#: eval.c:2353
msgid "turning off `--lint' due to assignment to `LINT'"
msgstr "wy³±czenie `--lint' z powodu przypisania do `LINT'"
@@ -979,8 +995,8 @@ msgstr "rozserzenie: nazwa funkcji `%s' zosta³a zdefiniowana wcze¶niej"
#: ext.c:201
#, c-format
-msgid "function `%s' defined to take no more than `%d' argument(s)"
-msgstr "funkcja `%s' zdefiniowana aby pobraæ nie wiêcej ni¿ `%d' argument(ów)"
+msgid "function `%s' defined to take no more than %d argument(s)"
+msgstr "funkcja `%s' zdefiniowana aby pobraæ nie wiêcej ni¿ %d argument(ów)"
#: ext.c:204
#, c-format
@@ -1001,567 +1017,571 @@ msgstr "funkcja `%s': argument #%d: próba u¿ycia tablicy jako skalaru"
msgid "Operation Not Supported"
msgstr "Operacja nie jest wspierana"
-#: field.c:315
+#: field.c:326
msgid "NF set to negative value"
msgstr "NF ustawiony na warto¶æ ujemn±"
-#: field.c:808
+#: field.c:819
msgid "split: second argument is not an array"
msgstr "split: drugi argument nie jest tablic±"
-#: field.c:842
+#: field.c:853
msgid "split: null string for third arg is a gawk extension"
msgstr "split: zerowy ³añcuch dla trzeciego argumentu jest rozszerzeniem gawk"
-#: field.c:894
+#: field.c:905
msgid "`FIELDWIDTHS' is a gawk extension"
msgstr "`FIELDWIDTHS' jest rozszerzeniem gawk"
-#: field.c:921
+#: field.c:935 field.c:946
#, c-format
-msgid "field %d in FIELDWIDTHS, must be > 0"
-msgstr "pole nr %d w FIELDWIDTHS musi byæ wiêksze od zera"
+msgid "invalid FIELDWIDTHS value, near `%s'"
+msgstr "nieprawid³owa warto¶æ FIELDWIDTHS, w pobli¿u `%s'"
-#: field.c:994
+#: field.c:1027
msgid "null string for `FS' is a gawk extension"
msgstr "zerowy ³añcuch dla `FS' jest rozszerzeniem gawk"
-#: getopt.c:692 getopt.c:711
+#: getopt.c:571 getopt.c:590
#, c-format
msgid "%s: option `%s' is ambiguous\n"
msgstr "%s: opcja `%s' jest niejednoznaczna\n"
-#: getopt.c:744 getopt.c:748
+#: getopt.c:623 getopt.c:627
#, c-format
msgid "%s: option `--%s' doesn't allow an argument\n"
msgstr "%s: opcja `--%s' nie mo¿e mieæ argumentów\n"
-#: getopt.c:757 getopt.c:762
+#: getopt.c:636 getopt.c:641
#, c-format
msgid "%s: option `%c%s' doesn't allow an argument\n"
msgstr "%s: opcja `%c%s' nie mo¿e mieæ argumentów\n"
-#: getopt.c:807 getopt.c:829 getopt.c:1159 getopt.c:1181
+#: getopt.c:687 getopt.c:709 getopt.c:1040 getopt.c:1062
#, c-format
msgid "%s: option `%s' requires an argument\n"
msgstr "%s: opcja `%s' musi mieæ argument\n"
-#: getopt.c:867 getopt.c:870
+#: getopt.c:747 getopt.c:750
#, c-format
msgid "%s: unrecognized option `--%s'\n"
msgstr "%s: nieznana opcja `--%s'\n"
-#: getopt.c:878 getopt.c:881
+#: getopt.c:758 getopt.c:761
#, c-format
msgid "%s: unrecognized option `%c%s'\n"
msgstr "%s: nieznana opcja `%c%s'\n"
-#: getopt.c:936 getopt.c:939
+#: getopt.c:816 getopt.c:819
#, c-format
msgid "%s: illegal option -- %c\n"
msgstr "%s: niew³a¶ciwa opcja -- %c\n"
-#: getopt.c:945 getopt.c:948
+#: getopt.c:825 getopt.c:828
#, c-format
msgid "%s: invalid option -- %c\n"
msgstr "%s: b³êdna opcja -- %c\n"
-#: getopt.c:1003 getopt.c:1022 getopt.c:1234 getopt.c:1255 main.c:433
+#: getopt.c:883 getopt.c:902 getopt.c:1115 getopt.c:1136 main.c:448
#, c-format
msgid "%s: option requires an argument -- %c\n"
msgstr "%s: opcja musi mieæ argument -- %c\n"
-#: getopt.c:1074 getopt.c:1093
+#: getopt.c:955 getopt.c:974
#, c-format
msgid "%s: option `-W %s' is ambiguous\n"
msgstr "%s: opcja `-W %s' jest niejednoznaczna\n"
-#: getopt.c:1117 getopt.c:1138
+#: getopt.c:998 getopt.c:1019
#, c-format
msgid "%s: option `-W %s' doesn't allow an argument\n"
msgstr "%s: opcja `-W %s' nie mo¿e mieæ argumentów\n"
-#: io.c:308
+#: io.c:307
#, c-format
msgid "cannot open file `%s' for reading (%s)"
msgstr "nie mo¿na otworzyæ pliku `%s' do czytania (%s)"
-#: io.c:395
+#: io.c:398
#, c-format
msgid "close of fd %d (`%s') failed (%s)"
msgstr "zamkniêcie fd %d (`%s') nie powiod³o siê (%s)"
-#: io.c:533
+#: io.c:536
#, c-format
msgid "invalid tree type %s in redirect()"
msgstr "nieprawid³owy typ drzewa %s w funkcji redirect()"
-#: io.c:539
+#: io.c:542
#, c-format
msgid "expression in `%s' redirection only has numeric value"
msgstr "wyra¿enie w przekierowaniu `%s' ma tylko warto¶æ numeryczn±"
-#: io.c:545
+#: io.c:548
#, c-format
msgid "expression for `%s' redirection has null string value"
msgstr "wyra¿enie dla przekierowania `%s' ma zerow± warto¶æ ³añcucha"
-#: io.c:550
+#: io.c:553
#, c-format
msgid "filename `%s' for `%s' redirection may be result of logical expression"
msgstr ""
"nazwa pliku `%s' dla przekierowania `%s' mo¿e byæ rezultatem logicznego "
"wyra¿enia"
-#: io.c:588
+#: io.c:591
#, c-format
msgid "unnecessary mixing of `>' and `>>' for file `%.*s'"
msgstr "niepotrzebne mieszanie `>' i `>>' dla pliku `%.*s'"
-#: io.c:640
+#: io.c:643
#, c-format
msgid "can't open pipe `%s' for output (%s)"
msgstr "nie mo¿na otworzyæ potoku `%s' jako wyj¶cia (%s)"
-#: io.c:649
+#: io.c:652
#, c-format
msgid "can't open pipe `%s' for input (%s)"
msgstr "nie mo¿na otworzyæ potoku `%s' jako wej¶cia (%s)"
-#: io.c:662
+#: io.c:665
#, c-format
msgid "can't open two way socket `%s' for input/output (%s)"
msgstr ""
"nie mo¿na otworzyæ dwukierunkowego gniazda `%s' jako wej¶cia/wyj¶cia (%s)"
-#: io.c:666
+#: io.c:669
#, c-format
msgid "can't open two way pipe `%s' for input/output (%s)"
msgstr ""
"nie mo¿na otworzyæ dwukierunkowego potoku `%s' jako wej¶cia/wyj¶cia (%s)"
-#: io.c:742
+#: io.c:745
#, c-format
msgid "can't redirect from `%s' (%s)"
msgstr "nie mo¿na przekierowaæ z `%s' (%s)"
-#: io.c:745
+#: io.c:748
#, c-format
msgid "can't redirect to `%s' (%s)"
msgstr "nie mo¿na przekierowaæ do `%s' (%s)"
-#: io.c:784
+#: io.c:787
msgid ""
"reached system limit for open files: starting to multiplex file descriptors"
msgstr ""
"osi±gniêto systemowy limit otwartych plików: rozpoczêcie multipleksowania "
"deskryptorów plików"
-#: io.c:800
+#: io.c:803
#, c-format
msgid "close of `%s' failed (%s)."
msgstr "zamkniêcie `%s' nie powiod³o siê (%s)."
-#: io.c:808
+#: io.c:811
msgid "too many pipes or input files open"
msgstr "zbyt du¿o otwartych potoków lub plików wej¶ciowych"
-#: io.c:831
+#: io.c:834
msgid "close: second argument must be `to' or `from'"
msgstr "close: drugim argumentem musi byæ `to' lub `from'"
-#: io.c:845
+#: io.c:848
#, c-format
msgid "close: `%.*s' is not an open file, pipe or co-process"
msgstr ""
"close: `%.*s' nie jest ani otwartym plikiem, ani potokiem, ani procesem"
-#: io.c:849
+#: io.c:852
msgid "close of redirection that was never opened"
msgstr "zamkniêcie przekierowania, które nigdy nie zosta³o otwarte"
-#: io.c:945
+#: io.c:948
#, c-format
msgid "close: redirection `%s' not opened with `|&', second argument ignored"
msgstr ""
"close: przekierowanie `%s' nie zosta³o otwarte z `|&', drugi argument "
"zignorowany"
-#: io.c:960
+#: io.c:964
#, c-format
msgid "failure status (%d) on pipe close of `%s' (%s)"
msgstr "status awarii (%d) podczas zamykania potoku `%s' (%s)"
-#: io.c:963
+#: io.c:967
#, c-format
msgid "failure status (%d) on file close of `%s' (%s)"
msgstr "status awarii (%d) podczas zamykania pliku `%s' (%s)"
-#: io.c:983
+#: io.c:987
#, c-format
msgid "no explicit close of socket `%s' provided"
msgstr "brak jawnego zamkniêcia gniazdka `%s'"
-#: io.c:986
+#: io.c:990
#, c-format
msgid "no explicit close of co-process `%s' provided"
msgstr "brak jawnego zamkniêcia procesu pomocniczego `%s'"
-#: io.c:989
+#: io.c:993
#, c-format
msgid "no explicit close of pipe `%s' provided"
msgstr "brak jawnego zamkniêcia potoku `%s'"
-#: io.c:992
+#: io.c:996
#, c-format
msgid "no explicit close of file `%s' provided"
msgstr "brak jawnego zamkniêcia pliku `%s'"
-#: io.c:1021 io.c:1075
+#: io.c:1025 io.c:1080 main.c:718 main.c:756
#, c-format
msgid "error writing standard output (%s)"
msgstr "b³±d podczas zapisu na standardowe wyj¶cie (%s)"
-#: io.c:1025 io.c:1079
+#: io.c:1029 io.c:1085
#, c-format
msgid "error writing standard error (%s)"
msgstr "b³±d podczas zapisu na standardowe wyj¶cie diagnostyczne (%s)"
-#: io.c:1033
+#: io.c:1037
#, c-format
msgid "pipe flush of `%s' failed (%s)."
msgstr "opró¿nienie potoku `%s' nie powiod³o siê (%s)."
-#: io.c:1036
+#: io.c:1040
#, c-format
msgid "co-process flush of pipe to `%s' failed (%s)."
msgstr ""
"opró¿nienie potoku do `%s' przez proces pomocniczy nie powiod³o siê (%s)."
-#: io.c:1039
+#: io.c:1043
#, c-format
msgid "file flush of `%s' failed (%s)."
msgstr "opró¿nienie pliku `%s' nie powiod³o siê (%s)."
-#: io.c:1198
+#: io.c:1205
msgid "/inet/raw client not ready yet, sorry"
msgstr "klient /inet/raw nie jest jeszcze gotowy, przykro mi"
-#: io.c:1200 io.c:1237
+#: io.c:1207 io.c:1244
msgid "only root may use `/inet/raw'."
msgstr "tylko superu¿ytkownik (root) mo¿e u¿yæ `/inet/raw'."
-#: io.c:1235
+#: io.c:1242
msgid "/inet/raw server not ready yet, sorry"
msgstr "serwer /inet/raw nie jest jeszcze gotowy, przykro mi"
-#: io.c:1325
+#: io.c:1332
#, c-format
msgid "no (known) protocol supplied in special filename `%s'"
msgstr "nie dostarczono (znanego) protoko³u w specjalnym pliku `%s'"
-#: io.c:1343
+#: io.c:1350
#, c-format
msgid "special file name `%s' is incomplete"
msgstr "specjalna nazwa pliku `%s' jest niekompletna"
-#: io.c:1355
+#: io.c:1362
#, c-format
msgid "local port invalid in `%s'"
msgstr "nieprawid³owy lokalny port `%s'"
-#: io.c:1367
+#: io.c:1374
msgid "must supply a remote hostname to `/inet'"
msgstr "nale¿y dostarczyæ nazwê zdalnego hosta do `/inet'"
-#: io.c:1382
+#: io.c:1389
msgid "must supply a remote port to `/inet'"
msgstr "nale¿y dostarczyæ numer zdalnego portu do `/inet'"
-#: io.c:1388
+#: io.c:1395
#, c-format
msgid "remote port invalid in `%s'"
msgstr "nieprawid³owy zdalny port w `%s'"
-#: io.c:1398
+#: io.c:1405
msgid "TCP/IP communications are not supported"
msgstr "Komunikacja TCP/IP nie jest wspierana"
-#: io.c:1407 io.c:1588
+#: io.c:1414 io.c:1595
#, c-format
msgid "file `%s' is a directory"
msgstr "plik `%s' jest katalogiem"
-#: io.c:1477
+#: io.c:1484
#, c-format
msgid "use `PROCINFO[\"%s\"]' instead of `%s'"
msgstr "u¿yj `PROCINFO[\"%s\"]' zamiast `%s'"
-#: io.c:1509
+#: io.c:1516
msgid "use `PROCINFO[...]' instead of `/dev/user'"
msgstr "u¿yj `PROCINFO[...]' zamiast `/dev/user'"
-#: io.c:1574 io.c:1748
+#: io.c:1581 io.c:1763
#, c-format
msgid "could not open `%s', mode `%s'"
msgstr "nie mo¿na otworzyæ `%s', tryb `%s'"
-#: io.c:1799
+#: io.c:1814
#, c-format
msgid "close of master pty failed (%s)"
msgstr "zamkniêcie nadrzêdnego pty nie powiod³o siê (%s)"
-#: io.c:1801 io.c:1953 io.c:2105
+#: io.c:1816 io.c:1968 io.c:2119
#, c-format
msgid "close of stdout in child failed (%s)"
msgstr ""
"zamkniêcie standardowego wyj¶cia w procesie potomnym nie powiod³o siê (%s)"
-#: io.c:1804
+#: io.c:1819
#, c-format
msgid "moving slave pty to stdout in child failed (dup: %s)"
msgstr ""
"przesuniêcie podleg³ego pty na standardowe wyj¶cie w procesie potomnym nie "
"powiod³o siê (dup: %s)"
-#: io.c:1806 io.c:1958
+#: io.c:1821 io.c:1973
#, c-format
msgid "close of stdin in child failed (%s)"
msgstr ""
"zamkniêcie standardowego wej¶cia w procesie potomnym nie powiod³o siê (%s)"
-#: io.c:1809
+#: io.c:1824
#, c-format
msgid "moving slave pty to stdin in child failed (dup: %s)"
msgstr ""
"przesuniêcie podleg³ego pty na standardowe wej¶cie w procesie potomnym nie "
"powiod³o siê (dup: %s)"
-#: io.c:1811 io.c:1830
+#: io.c:1826 io.c:1845
#, c-format
msgid "close of slave pty failed (%s)"
msgstr "zamkniêcie podleg³ego pty nie powiod³o siê (%s)"
-#: io.c:1904 io.c:1956 io.c:2086 io.c:2108
+#: io.c:1919 io.c:1971 io.c:2100 io.c:2122
#, c-format
msgid "moving pipe to stdout in child failed (dup: %s)"
msgstr ""
"przesuniêcie potoku na standardowe wyj¶cie w procesie potomnym nie powiod³o "
"siê (dup: %s)"
-#: io.c:1908 io.c:1961
+#: io.c:1923 io.c:1976
#, c-format
msgid "moving pipe to stdin in child failed (dup: %s)"
msgstr ""
"przesuniêcie potoku na standardowe wej¶cie w procesie potomnym nie powiod³o "
"siê (dup: %s)"
-#: io.c:1925 io.c:2099
+#: io.c:1940 io.c:2113
msgid "restoring stdout in parent process failed\n"
msgstr ""
"odzyskanie standardowego wyj¶cia w procesie potomnym nie powiod³o siê\n"
-#: io.c:1930
+#: io.c:1945
msgid "restoring stdin in parent process failed\n"
msgstr ""
"odzyskanie standardowego wej¶cia w procesie potomnym nie powiod³o siê\n"
-#: io.c:1964 io.c:2110 io.c:2121
+#: io.c:1979 io.c:2124 io.c:2135
#, c-format
msgid "close of pipe failed (%s)"
msgstr "zamkniêcie potoku nie powiod³o siê (%s)"
-#: io.c:2009
+#: io.c:2024
msgid "`|&' not supported"
msgstr "`|&' nie jest wspierany"
-#: io.c:2076
+#: io.c:2090
#, c-format
msgid "cannot open pipe `%s' (%s)"
msgstr "nie mo¿na otworzyæ potoku `%s' (%s)"
-#: io.c:2117
+#: io.c:2131
#, c-format
msgid "cannot create child process for `%s' (fork: %s)"
msgstr "nie mo¿na utworzyæ procesu potomnego dla `%s' (fork: %s)"
-#: io.c:2460
+#: io.c:2506
#, c-format
msgid "data file `%s' is empty"
msgstr "plik danych `%s' jest pusty"
-#: io.c:2503 io.c:2511
+#: io.c:2547 io.c:2555
msgid "could not allocate more input memory"
msgstr "nie mo¿na zarezerwowaæ wiêcej pamiêci wej¶ciowej"
-#: io.c:2869 io.c:2932
+#: io.c:2919 io.c:2984
#, c-format
msgid "error reading input file `%s': %s"
msgstr "b³±d podczas czytania z pliku `%s': %s"
-#: io.c:3057
+#: io.c:3109
msgid "multicharacter value of `RS' is a gawk extension"
msgstr "wieloznakowa warto¶æ `RS' jest rozszerzeniem gawk"
-#: main.c:323
+#: main.c:338
msgid "`-m[fr]' option irrelevant in gawk"
msgstr "nieistotna opcja `-m[fr]' w gawk"
-#: main.c:325
+#: main.c:340
msgid "-m option usage: `-m[fr] nnn'"
msgstr "u¿ycie opcji -m: `-m[fr] nnn'"
-#: main.c:342
+#: main.c:357
#, c-format
msgid "%s: option `-W %s' unrecognized, ignored\n"
msgstr "%s: opcja `-W %s' nierozpoznana i zignorowana\n"
-#: main.c:379
+#: main.c:394
msgid "empty argument to `--source' ignored"
msgstr "pusty argument dla opcji `--source' zosta³ zignorowany"
-#: main.c:450
+#: main.c:467
msgid "environment variable `POSIXLY_CORRECT' set: turning on `--posix'"
msgstr ""
"zmienna ¶rodowiskowa `POSIXLY_CORRECT' ustawiona: `--posix' zosta³ w³±czony"
-#: main.c:455
+#: main.c:472
msgid "`--posix' overrides `--traditional'"
msgstr "opcja `--posix' zostanie u¿yta nad `--traditional'"
-#: main.c:466
+#: main.c:483
msgid "`--posix'/`--traditional' overrides `--non-decimal-data'"
msgstr "`--posix'/`--traditional' u¿yte nad opcj± `--non-decimal-data'"
-#: main.c:470
+#: main.c:487
#, c-format
msgid "running %s setuid root may be a security problem"
msgstr ""
"uruchamianie %s setuid root mo¿e byæ problemem pod wzglêdem bezpieczeñstwa"
-#: main.c:511
+#: main.c:528
#, c-format
msgid "can't set binary mode on stdin (%s)"
msgstr "nie mo¿na ustawiæ trybu binarnego na standardowym wej¶ciu (%s)"
-#: main.c:514
+#: main.c:531
#, c-format
msgid "can't set binary mode on stdout (%s)"
msgstr "nie mo¿na ustawiæ trybu binarnego na standardowym wyj¶ciu (%s)"
-#: main.c:516
+#: main.c:533
#, c-format
msgid "can't set binary mode on stderr (%s)"
msgstr "nie mo¿na ustawiæ trybu binarnego na wyj¶ciu diagnostycznym (%s)"
-#: main.c:546
+#: main.c:572
msgid "no program text at all!"
msgstr "brak tekstu programu!"
-#: main.c:623
+#: main.c:665
#, c-format
msgid "Usage: %s [POSIX or GNU style options] -f progfile [--] file ...\n"
msgstr ""
"U¿ycie: %s [styl opcji POSIX lub GNU] -f plik_z_programem [--] plik ...\n"
-#: main.c:625
+#: main.c:667
#, c-format
msgid "Usage: %s [POSIX or GNU style options] [--] %cprogram%c file ...\n"
msgstr "U¿ycie: %s [styl opcji POSIX lub GNU] [--] %cprogram%c plik ...\n"
-#: main.c:630
+#: main.c:672
msgid "POSIX options:\t\tGNU long options:\n"
msgstr "Opcje POSIX:\t\tD³ugie opcje GNU:\n"
-#: main.c:631
+#: main.c:673
msgid "\t-f progfile\t\t--file=progfile\n"
msgstr "\t-f program\t\t--file=program\n"
-#: main.c:632
+#: main.c:674
msgid "\t-F fs\t\t\t--field-separator=fs\n"
msgstr "\t-F fs\t\t\t--field-separator=fs\n"
-#: main.c:633
+#: main.c:675
msgid "\t-v var=val\t\t--assign=var=val\n"
msgstr "\t-v zmienna=warto¶æ\t--assign=zmienna=warto¶æ\n"
-#: main.c:634
+#: main.c:676
msgid "\t-m[fr] val\n"
msgstr "\t-m[fr] warto¶æ\n"
-#: main.c:635
+#: main.c:677
msgid "\t-W compat\t\t--compat\n"
msgstr "\t-W compat\t\t--compat\n"
-#: main.c:636
+#: main.c:678
msgid "\t-W copyleft\t\t--copyleft\n"
msgstr "\t-W copyleft\t\t--copyleft\n"
-#: main.c:637
+#: main.c:679
msgid "\t-W copyright\t\t--copyright\n"
msgstr "\t-W copyright\t\t--copyright\n"
-#: main.c:638
+#: main.c:680
msgid "\t-W dump-variables[=file]\t--dump-variables[=file]\n"
msgstr "\t-W dump-variables[=plik]\t--dump-variables[=plik]\n"
-#: main.c:639
+#: main.c:681
+msgid "\t-W exec=file\t\t--exec=file\n"
+msgstr "\t-W exec=plik\t\t--exec=plik\n"
+
+#: main.c:682
msgid "\t-W gen-po\t\t--gen-po\n"
msgstr "\t-W gen-po\t\t--gen-po\n"
-#: main.c:640
+#: main.c:683
msgid "\t-W help\t\t\t--help\n"
msgstr "\t-W help\t\t\t--help\n"
-#: main.c:641
+#: main.c:684
msgid "\t-W lint[=fatal]\t\t--lint[=fatal]\n"
msgstr "\t-W lint[=fatal]\t\t--lint[=fatal]\n"
-#: main.c:642
+#: main.c:685
msgid "\t-W lint-old\t\t--lint-old\n"
msgstr "\t-W lint-old\t\t--lint-old\n"
-#: main.c:643
+#: main.c:686
msgid "\t-W non-decimal-data\t--non-decimal-data\n"
msgstr "\t-W non-decimal-data\t--non-decimal-data\n"
-#: main.c:645
+#: main.c:688
msgid "\t-W nostalgia\t\t--nostalgia\n"
msgstr "\t-W nostalgia\t\t--nostalgia\n"
-#: main.c:648
+#: main.c:691
msgid "\t-W parsedebug\t\t--parsedebug\n"
msgstr "\t-W parsedebug\t\t--parsedebug\n"
-#: main.c:650
+#: main.c:693
msgid "\t-W profile[=file]\t--profile[=file]\n"
msgstr "\t-W profile[=plik]\t--profile[=plik]\n"
-#: main.c:651
+#: main.c:694
msgid "\t-W posix\t\t--posix\n"
msgstr "\t-W posix\t\t--posix\n"
-#: main.c:652
+#: main.c:695
msgid "\t-W re-interval\t\t--re-interval\n"
msgstr "\t-W re-interval\t\t--re-interval\n"
-#: main.c:653
+#: main.c:696
msgid "\t-W source=program-text\t--source=program-text\n"
msgstr "\t-W source=tekst-programu\t--source=tekst-programu\n"
-#: main.c:654
+#: main.c:697
msgid "\t-W traditional\t\t--traditional\n"
msgstr "\t-W traditional\t\t--traditional\n"
-#: main.c:655
+#: main.c:698
msgid "\t-W usage\t\t--usage\n"
msgstr "\t-W usage\t\t--usage\n"
-#: main.c:656
+#: main.c:699
msgid "\t-W version\t\t--version\n"
msgstr "\t-W version\t\t--version\n"
-#: main.c:660
+#: main.c:703
msgid ""
"\n"
"To report bugs, see node `Bugs' in `gawk.info', which is\n"
@@ -1574,7 +1594,7 @@ msgstr ""
"dokumentacji.\n"
"\n"
-#: main.c:664
+#: main.c:707
msgid ""
"gawk is a pattern scanning and processing language.\n"
"By default it reads standard input and writes standard output.\n"
@@ -1584,7 +1604,7 @@ msgstr ""
"Program domy¶lnie czyta standardowe wej¶cie i zapisuje standardowe wyj¶cie.\n"
"\n"
-#: main.c:668
+#: main.c:711
msgid ""
"Examples:\n"
"\tgawk '{ sum += $1 }; END { print sum }' file\n"
@@ -1594,7 +1614,7 @@ msgstr ""
"\tgawk '{ suma += $1 }; END { print suma }' plik\n"
"\tgawk -F: '{ print $1 }' /etc/passwd\n"
-#: main.c:685
+#: main.c:731
#, c-format
msgid ""
"Copyright (C) 1989, 1991-%d Free Software Foundation.\n"
@@ -1613,7 +1633,7 @@ msgstr ""
"tej Licencji lub której¶ z pó¼niejszych wersji.\n"
"\n"
-#: main.c:693
+#: main.c:739
msgid ""
"This program is distributed in the hope that it will be useful,\n"
"but WITHOUT ANY WARRANTY; without even the implied warranty of\n"
@@ -1628,22 +1648,23 @@ msgstr ""
"Powszechn± Licencjê Publiczn± GNU.\n"
"\n"
-#: main.c:699
+#: main.c:745
msgid ""
"You should have received a copy of the GNU General Public License\n"
"along with this program; if not, write to the Free Software\n"
-"Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.\n"
+"Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, "
+"USA.\n"
msgstr ""
"Z pewno¶ci± wraz z niniejszym programem otrzyma³e¶ te¿ egzemplarz\n"
"Powszechnej Licencji Publicznej GNU (GNU General Public License);\n"
-"je¶li za¶ nie - napisz do Free Software Foundation, Inc., \n"
-"59 Temple Place, Suite 330, Boston, MA 02111-1307 USA\n"
+"je¶li za¶ nie - napisz do Free Software Foundation, Inc.,\n"
+"51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.\n"
-#: main.c:733
+#: main.c:781
msgid "-Ft does not set FS to tab in POSIX awk"
msgstr "-Ft nie ustawia FS na znak tabulatora w POSIX awk"
-#: main.c:962
+#: main.c:1018
#, c-format
msgid ""
"%s: `%s' argument to `-v' not in `var=value' form\n"
@@ -1652,35 +1673,35 @@ msgstr ""
"%s: argument `%s' dla `-v' nie jest zgodny ze sk³adni± `zmienna=warto¶æ'\n"
"\n"
-#: main.c:982
+#: main.c:1038
#, c-format
msgid "`%s' is not a legal variable name"
msgstr "`%s' nie jest dozwolon± nazw± zmiennej"
-#: main.c:985
+#: main.c:1041
#, c-format
msgid "`%s' is not a variable name, looking for file `%s=%s'"
msgstr "`%s' nie jest nazw± zmiennej, szukanie pliku `%s=%s'"
-#: main.c:1018
+#: main.c:1074
msgid "floating point exception"
msgstr "wyj±tek zmiennopozycyjny"
-#: main.c:1025
+#: main.c:1081
msgid "fatal error: internal error"
msgstr "fatalny b³±d: wewnêtrzny b³±d"
-#: main.c:1075
+#: main.c:1132
#, c-format
msgid "no pre-opened fd %d"
msgstr "brak ju¿ otwartego fd %d"
-#: main.c:1082
+#: main.c:1139
#, c-format
msgid "could not pre-open /dev/null for fd %d"
msgstr "nie mo¿na otworzyæ zawczasu /dev/null dla fd %d"
-#: main.c:1105 main.c:1114
+#: main.c:1162 main.c:1171
#, c-format
msgid "could not find groups: %s"
msgstr "nie mo¿na znale¼æ grup: %s"
@@ -1702,23 +1723,23 @@ msgstr "b³±d: "
msgid "fatal: "
msgstr "fatalny b³±d: "
-#: node.c:58 node.c:65 node.c:74 node.c:88 node.c:115
+#: node.c:59 node.c:66 node.c:75 node.c:90 node.c:119
msgid "can't convert string to float"
msgstr "nie mo¿na zamieniæ ³añcucha do liczby zmiennopozycyjnej"
-#: node.c:357
+#: node.c:414
msgid "backslash at end of string"
msgstr "backslash na koñcu ³añcucha"
-#: node.c:541
+#: node.c:604
msgid "POSIX does not allow `\\x' escapes"
msgstr "POSIX nie zezwala na sekwencjê ucieczki `\\x'"
-#: node.c:547
+#: node.c:610
msgid "no hex digits in `\\x' escape sequence"
msgstr "brak liczb szesnastkowych w sekwencji ucieczki `\\x'"
-#: node.c:581
+#: node.c:644
#, c-format
msgid "escape sequence `\\%c' treated as plain `%c'"
msgstr "sekwencja ucieczki `\\%c' potraktowana jako zwyk³e `%c'"
@@ -1738,21 +1759,21 @@ msgstr "nie mo¿na otworzyæ `%s' do zapisu: %s"
msgid "internal error: %s with null vname"
msgstr "wewnêtrzny b³±d: %s z zerowym vname"
-#: profile.c:530
+#: profile.c:531
msgid "# treated internally as `delete'"
msgstr "# potraktowany wewnêtrznie jako `delete'"
-#: profile.c:1167
+#: profile.c:1168
#, c-format
msgid "# this is a dynamically loaded extension function"
msgstr "# to jest dynamicznie ³adowana funkcja rozszerzenie"
-#: profile.c:1198
+#: profile.c:1199
#, c-format
msgid "\t# gawk profile, created %s\n"
msgstr "\t# profil programu gawk, utworzony %s\n"
-#: profile.c:1201
+#: profile.c:1202
#, c-format
msgid ""
"\t# BEGIN block(s)\n"
@@ -1761,7 +1782,7 @@ msgstr ""
"\t# blok(i) BEGIN\n"
"\n"
-#: profile.c:1211
+#: profile.c:1212
#, c-format
msgid ""
"\t# Rule(s)\n"
@@ -1770,7 +1791,7 @@ msgstr ""
"\t# Regu³y\n"
"\n"
-#: profile.c:1217
+#: profile.c:1218
#, c-format
msgid ""
"\t# END block(s)\n"
@@ -1779,7 +1800,7 @@ msgstr ""
"\t# blok(i) END\n"
"\n"
-#: profile.c:1237
+#: profile.c:1238
#, c-format
msgid ""
"\n"
@@ -1788,83 +1809,89 @@ msgstr ""
"\n"
"\t# Funkcje, spis alfabetyczny\n"
-#: profile.c:1452
+#: profile.c:1453
#, c-format
msgid "unexpected type %s in prec_level"
msgstr "niespodziewany typ %s w prec_level"
-#: regcomp.c:150
+#: regcomp.c:160
msgid "Success"
msgstr "Sukces"
-#: regcomp.c:153
+#: regcomp.c:163
msgid "No match"
msgstr "Brak dopasowania"
-#: regcomp.c:156
+#: regcomp.c:166
msgid "Invalid regular expression"
msgstr "Nieprawid³owe wyra¿enie regularne"
-#: regcomp.c:159
+#: regcomp.c:169
msgid "Invalid collation character"
msgstr "Nieprawid³owy znak porównania"
-#: regcomp.c:162
+#: regcomp.c:172
msgid "Invalid character class name"
msgstr "Nieprawid³owa nazwa klasy znaku"
-#: regcomp.c:165
+#: regcomp.c:175
msgid "Trailing backslash"
msgstr "Koñcowy znak backslash"
-#: regcomp.c:168
+#: regcomp.c:178
msgid "Invalid back reference"
msgstr "Nieprawid³owe odwo³anie wsteczne"
-#: regcomp.c:171
+#: regcomp.c:181
msgid "Unmatched [ or [^"
msgstr "Niedopasowany znak [ lub [^"
-#: regcomp.c:174
+#: regcomp.c:184
msgid "Unmatched ( or \\("
msgstr "Niedopasowany znak ( lub \\("
-#: regcomp.c:177
+#: regcomp.c:187
msgid "Unmatched \\{"
msgstr "Niedopasowany znak \\{"
-#: regcomp.c:180
+#: regcomp.c:190
msgid "Invalid content of \\{\\}"
msgstr "Nieprawid³owa zawarto¶æ \\{\\}"
-#: regcomp.c:183
+#: regcomp.c:193
msgid "Invalid range end"
msgstr "Nieprawid³owy koniec zakresu"
-#: regcomp.c:186
+#: regcomp.c:196
msgid "Memory exhausted"
msgstr "Pamiêæ wyczerpana"
-#: regcomp.c:189
+#: regcomp.c:199
msgid "Invalid preceding regular expression"
msgstr "Nieprawid³owe poprzedzaj±ce wyra¿enie regularne"
-#: regcomp.c:192
+#: regcomp.c:202
msgid "Premature end of regular expression"
msgstr "Przedwczesny koniec wyra¿enia regularnego"
-#: regcomp.c:195
+#: regcomp.c:205
msgid "Regular expression too big"
msgstr "Wyra¿enie regularne jest zbyt du¿e"
-#: regcomp.c:198
+#: regcomp.c:208
msgid "Unmatched ) or \\)"
msgstr "Niedopasowany znak ) lub \\)"
-#: regcomp.c:668
+#: regcomp.c:688
msgid "No previous regular expression"
msgstr "Brak poprzedniego wyra¿enia regularnego"
+#~ msgid "function %s called\n"
+#~ msgstr "wywo³ano funkcjê %s\n"
+
+#~ msgid "field %d in FIELDWIDTHS, must be > 0"
+#~ msgstr "pole nr %d w FIELDWIDTHS musi byæ wiêksze od zera"
+
#~ msgid "delete: illegal use of variable `%s' as array"
#~ msgstr "delete: nieprawid³owe u¿ycie zmiennej `%s' jako tablicy"
diff --git a/po/pt_BR.gmo b/po/pt_BR.gmo
index 6c21305d..a9e9b1a8 100644
--- a/po/pt_BR.gmo
+++ b/po/pt_BR.gmo
Binary files differ
diff --git a/po/pt_BR.po b/po/pt_BR.po
index ef4aee8b..d259e0d9 100644
--- a/po/pt_BR.po
+++ b/po/pt_BR.po
@@ -7,7 +7,7 @@ msgid ""
msgstr ""
"Project-Id-Version: gawk 3.1.2g\n"
"Report-Msgid-Bugs-To: arnold@skeeve.com\n"
-"POT-Creation-Date: 2004-07-15 13:02+0300\n"
+"POT-Creation-Date: 2005-07-06 17:20+0300\n"
"PO-Revision-Date: 2003-06-26 16:18+0300\n"
"Last-Translator: Juan Carlos Castro y Castro <jcastro@vialink.com.br>\n"
"Language-Team: Brazilian Portuguese <ldp-br@bazar.conectiva.com.br>\n"
@@ -89,281 +89,296 @@ msgstr "cada regra deve ter um padrão ou uma parte de ação"
msgid "`%s' is a built-in function, it cannot be redefined"
msgstr "`%s' é uma função intrínseca, não pode ser redefinida"
-#: awkgram.y:314
+#: awkgram.y:313
+#, fuzzy
+msgid "regexp constant `//' looks like a C++ comment, but is not"
+msgstr "constante de expr. reg. `/%s/' parece um comentário C, mas não é"
+
+#: awkgram.y:316
#, c-format
msgid "regexp constant `/%s/' looks like a C comment, but is not"
msgstr "constante de expr. reg. `/%s/' parece um comentário C, mas não é"
-#: awkgram.y:341 awkgram.y:619
+#: awkgram.y:343 awkgram.y:623
msgid "statement may have no effect"
msgstr "declaração pode não ter efeito"
-#: awkgram.y:436 awkgram.y:456
+#: awkgram.y:440 awkgram.y:460
#, c-format
msgid "`%s' used in %s action"
msgstr "`%s' usado em ação %s"
-#: awkgram.y:449 awkgram.y:452
+#: awkgram.y:453 awkgram.y:456
msgid "`nextfile' is a gawk extension"
msgstr "`nextfile' é uma extensão do gawk"
-#: awkgram.y:466
+#: awkgram.y:470
msgid "`return' used outside function context"
msgstr "`return' usado fora do contexto de função"
-#: awkgram.y:508
+#: awkgram.y:512
msgid "plain `print' in BEGIN or END rule should probably be `print \"\"'"
msgstr ""
"`print' sozinho em regra BEGIN ou END provavelmente deveria ser `print \"\"'"
-#: awkgram.y:521 awkgram.y:528
+#: awkgram.y:525 awkgram.y:532
msgid "`delete array' is a gawk extension"
msgstr "`delete array' é uma extensão do gawk"
-#: awkgram.y:536 awkgram.y:543
+#: awkgram.y:540 awkgram.y:547
msgid "`delete(array)' is a non-portable tawk extension"
msgstr "`delete(array)' é uma extensão não-portável do tawk"
-#: awkgram.y:587
+#: awkgram.y:591
#, c-format
msgid "duplicate case values in switch body: %s"
msgstr "valores de case duplicados no corpo do switch: %s"
-#: awkgram.y:597
+#: awkgram.y:601
msgid "Duplicate `default' detected in switch body"
msgstr "Detectado `default' duplicado no corpo do switch"
-#: awkgram.y:686
+#: awkgram.y:690
msgid "multistage two-way pipelines don't work"
msgstr "pipelines bidirecionais de múltiplos estágios não funcionam"
-#: awkgram.y:777
+#: awkgram.y:781
msgid "regular expression on right of assignment"
msgstr "expressão regular à direita de atribuição"
-#: awkgram.y:800
+#: awkgram.y:804
msgid "regular expression on left of `~' or `!~' operator"
msgstr "expressão regular à esquerda de operador `~' ou `!~'"
-#: awkgram.y:808
+#: awkgram.y:812
msgid "regular expression on right of comparison"
msgstr "expressão regular à direita de comparação"
-#: awkgram.y:875
+#: awkgram.y:879
msgid "non-redirected `getline' undefined inside END action"
msgstr "`getline' não-redirecionado não é definido dentro da ação END"
-#: awkgram.y:902
+#: awkgram.y:906
msgid "call of `length' without parentheses is not portable"
msgstr "chamada a `length' sem parênteses não é portável"
-#: awkgram.y:905
+#: awkgram.y:909
msgid "call of `length' without parentheses is deprecated by POSIX"
msgstr "chamada a `length' sem parênteses é obsoleta de acordo com POSIX"
-#: awkgram.y:958
+#: awkgram.y:962
msgid "use of non-array as array"
msgstr "uso de não-vetor como vetor"
-#: awkgram.y:960
+#: awkgram.y:964
msgid "invalid subscript expression"
msgstr "expressão de índice inválida"
-#: awkgram.y:1158
+#: awkgram.y:1171
msgid "unexpected newline or end of string"
msgstr "fim de linha ou de string inesperado"
-#: awkgram.y:1254
+#: awkgram.y:1267
msgid "empty program text on command line"
msgstr "texto de programa vazio na linha de comando"
-#: awkgram.y:1307
+#: awkgram.y:1320
#, c-format
msgid "can't open source file `%s' for reading (%s)"
msgstr "impossível abrir arquivo-fonte `%s' para leitura (%s)"
-#: awkgram.y:1384
+#: awkgram.y:1397
#, c-format
msgid "can't read sourcefile `%s' (%s)"
msgstr "impossível ler arquivo-fonte `%s' (%s)"
-#: awkgram.y:1392
+#: awkgram.y:1405
#, c-format
msgid "source file `%s' is empty"
msgstr "arquivo-fonte `%s' está vazio"
-#: awkgram.y:1590 awkgram.y:1700 awkgram.y:1718 awkgram.y:2068 awkgram.y:2153
+#: awkgram.y:1596 awkgram.y:1718 awkgram.y:1736 awkgram.y:2107 awkgram.y:2194
msgid "source file does not end in newline"
msgstr "arquivo-fonte não termina em fim-de-linha"
-#: awkgram.y:1654
+#: awkgram.y:1658
msgid "unterminated regexp ends with `\\' at end of file"
msgstr "expressão regular inacabada termina com `\\' ao fim do arquivo"
-#: awkgram.y:1674
+#: awkgram.y:1682
+#, c-format
+msgid "%s: %d: tawk regex modifier `/.../%c' doesn't work in gawk"
+msgstr ""
+
+#: awkgram.y:1686
+#, c-format
+msgid "tawk regex modifier `/.../%c' doesn't work in gawk"
+msgstr ""
+
+#: awkgram.y:1693
msgid "unterminated regexp"
msgstr "expressão regular inacabada"
-#: awkgram.y:1677
+#: awkgram.y:1696
msgid "unterminated regexp at end of file"
msgstr "expressão regular inacabada no fim do arquivo"
-#: awkgram.y:1744
+#: awkgram.y:1762
msgid "use of `\\ #...' line continuation is not portable"
msgstr "uso da continuação de linha `\\ #...' não é portável"
-#: awkgram.y:1756
+#: awkgram.y:1774
msgid "backslash not last character on line"
msgstr "`\\' não é o último caracter da linha"
-#: awkgram.y:1801
+#: awkgram.y:1819
msgid "POSIX does not allow operator `**='"
msgstr "POSIX não permite o operador `**='"
-#: awkgram.y:1803
+#: awkgram.y:1821
msgid "old awk does not support operator `**='"
msgstr "o velho awk não suporta o operador `**='"
-#: awkgram.y:1812
+#: awkgram.y:1830
msgid "POSIX does not allow operator `**'"
msgstr "POSIX não permite o operador `**'"
-#: awkgram.y:1814
+#: awkgram.y:1832
msgid "old awk does not support operator `**'"
msgstr "o velho awk não suporta o operador `**'"
-#: awkgram.y:1845
+#: awkgram.y:1863
msgid "operator `^=' is not supported in old awk"
msgstr "o velho awk não suporta o operador `^='"
-#: awkgram.y:1853
+#: awkgram.y:1871
msgid "operator `^' is not supported in old awk"
msgstr "o velho awk não suporta o operador `^'"
-#: awkgram.y:1937 awkgram.y:1954
+#: awkgram.y:1955 awkgram.y:1970
msgid "unterminated string"
msgstr "string inacabada"
-#: awkgram.y:2114
+#: awkgram.y:2155
#, c-format
msgid "invalid char '%c' in expression"
msgstr "caracter inválido '%c' em expressão"
-#: awkgram.y:2162
+#: awkgram.y:2203
#, c-format
msgid "`%s' is a gawk extension"
msgstr "`%s' é uma extensão do gawk"
-#: awkgram.y:2165
+#: awkgram.y:2206
#, c-format
msgid "`%s' is a Bell Labs extension"
msgstr "`%s' é uma extensão da Bell Labs"
-#: awkgram.y:2168
+#: awkgram.y:2209
#, c-format
msgid "POSIX does not allow `%s'"
msgstr "POSIX não permite `%s'"
-#: awkgram.y:2172
+#: awkgram.y:2213
#, c-format
msgid "`%s' is not supported in old awk"
msgstr "`%s' não é suportado no velho awk"
-#: awkgram.y:2198
+#: awkgram.y:2239
msgid "`goto' considered harmful!\n"
msgstr "`goto' é considerado danoso!\n"
-#: awkgram.y:2260
+#: awkgram.y:2301
#, c-format
msgid "%d is invalid as number of arguments for %s"
msgstr "%d é inválido como número de argumentos para %s"
-#: awkgram.y:2279 awkgram.y:2282
+#: awkgram.y:2320 awkgram.y:2323
msgid "match: third argument is a gawk extension"
msgstr "match: terceiro argumento é uma extensão do gawk"
-#: awkgram.y:2295
+#: awkgram.y:2336
#, c-format
msgid "%s: string literal as last arg of substitute has no effect"
msgstr ""
"%s: string literal como último argumento de substituição não tem efeito"
-#: awkgram.y:2298
+#: awkgram.y:2339
#, c-format
msgid "%s third parameter is not a changeable object"
msgstr "terceiro parâmetro %s não é um objeto modificável"
-#: awkgram.y:2325 awkgram.y:2328
+#: awkgram.y:2366 awkgram.y:2369
msgid "close: second argument is a gawk extension"
msgstr "close: segundo argumento é uma extensão do gawk"
-#: awkgram.y:2338
+#: awkgram.y:2379
msgid "use of dcgettext(_\"...\") is incorrect: remove leading underscore"
msgstr "uso de dcgettext(_\"...\") é incorreto: remova o `_' precedente"
-#: awkgram.y:2353
+#: awkgram.y:2394
msgid "use of dcngettext(_\"...\") is incorrect: remove leading underscore"
msgstr "uso de dcngettext(_\"...\") é incorreto: remova o `_' precedente"
-#: awkgram.y:2424
+#: awkgram.y:2465
#, c-format
msgid "function `%s': parameter #%d, `%s', duplicates parameter #%d"
msgstr "função `%s': parâmetro #%d, `%s', duplica parâmetro #%d"
-#: awkgram.y:2457
+#: awkgram.y:2498
#, c-format
msgid "function `%s': parameter `%s' shadows global variable"
msgstr "função `%s': parâmetro `%s' encobre variável global"
-#: awkgram.y:2569
+#: awkgram.y:2610
#, c-format
msgid "could not open `%s' for writing (%s)"
msgstr "impossível abrir `%s' para escrita (%s)"
-#: awkgram.y:2570 profile.c:93
+#: awkgram.y:2611 profile.c:93
msgid "sending profile to standard error"
msgstr "enviando perfil para saída de erros"
-#: awkgram.y:2602
+#: awkgram.y:2643
#, c-format
msgid "%s: close failed (%s)"
msgstr "%s: `close' falhou (%s)"
-#: awkgram.y:2723
+#: awkgram.y:2764
msgid "shadow_funcs() called twice!"
msgstr "shadow_funcs() chamada duas vezes!"
-#: awkgram.y:2750
+#: awkgram.y:2791
msgid "there were shadowed variables."
msgstr "houve variáveis encobertas."
-#: awkgram.y:2823
+#: awkgram.y:2864
#, c-format
msgid "function `%s': can't use function name as parameter name"
msgstr "função `%s': não se pode usar o nome da função como nome de parâmetro"
-#: awkgram.y:2833
+#: awkgram.y:2874
#, c-format
msgid "function name `%s' previously defined"
msgstr "nome de função `%s' definido anteriormente"
-#: awkgram.y:2984 awkgram.y:2990
+#: awkgram.y:3025 awkgram.y:3031
#, c-format
msgid "function `%s' called but never defined"
msgstr "função `%s' chamada mas nunca definida"
-#: awkgram.y:2993
+#: awkgram.y:3034
#, c-format
msgid "function `%s' defined but never called"
msgstr "função `%s' definida mas nunca chamada"
-#: awkgram.y:3020
+#: awkgram.y:3061
#, c-format
msgid "regexp constant for parameter #%d yields boolean value"
msgstr ""
"constante com expr. regular para parâmetro nº %d retorna valor booleano"
-#: awkgram.y:3033
+#: awkgram.y:3105
#, fuzzy, c-format
msgid ""
"function `%s' called with space between name and `(',\n"
@@ -372,193 +387,198 @@ msgstr ""
"função `%s' chamada com espaço entre o nome e o `(',\n"
"%s"
-#: builtin.c:149
+#: builtin.c:145
#, c-format
msgid "%s to \"%s\" failed (%s)"
msgstr "%s para \"%s\" falhou (%s)"
-#: builtin.c:150
+#: builtin.c:146
msgid "standard output"
msgstr "saída padrão"
-#: builtin.c:151
+#: builtin.c:147
msgid "reason unknown"
msgstr "motivo desconhecido"
-#: builtin.c:164
+#: builtin.c:160
msgid "exp: received non-numeric argument"
msgstr "exp: recebeu argumento não-numérico"
-#: builtin.c:170
+#: builtin.c:166
#, c-format
msgid "exp: argument %g is out of range"
msgstr "exp: argumento %g está fora da faixa"
-#: builtin.c:228
+#: builtin.c:224
#, c-format
msgid "fflush: cannot flush: pipe `%s' opened for reading, not writing"
msgstr ""
"fflush: erro ao descarregar: pipe `%s' aberto para leitura, não gravação"
-#: builtin.c:231
+#: builtin.c:227
#, c-format
msgid "fflush: cannot flush: file `%s' opened for reading, not writing"
msgstr ""
"fflush: erro ao descarregar: arquivo `%s' aberto para leitura, não gravação"
-#: builtin.c:243
+#: builtin.c:239
#, c-format
msgid "fflush: `%s' is not an open file, pipe or co-process"
msgstr "fflush: `%s' não é um arquivo aberto, pipe ou co-processo"
-#: builtin.c:338
+#: builtin.c:332
msgid "index: received non-string first argument"
msgstr "index: recebeu primeiro argumento não-string"
-#: builtin.c:340
+#: builtin.c:334
msgid "index: received non-string second argument"
msgstr "index: recebeu segundo argumento não-string"
-#: builtin.c:454
+#: builtin.c:449
msgid "int: received non-numeric argument"
msgstr "int: recebeu argumento não-numérico"
-#: builtin.c:471
+#: builtin.c:472
+#, fuzzy
+msgid "`length(array)' is a gawk extension"
+msgstr "`delete array' é uma extensão do gawk"
+
+#: builtin.c:481
msgid "length: received non-string argument"
msgstr "length: recebeu argumento não-string"
-#: builtin.c:487
+#: builtin.c:506
msgid "log: received non-numeric argument"
msgstr "log: recebeu argumento não-numérico"
-#: builtin.c:490
+#: builtin.c:509
#, c-format
msgid "log: received negative argument %g"
msgstr "log: recebeu argumento negativo %g"
-#: builtin.c:654 builtin.c:657
+#: builtin.c:673 builtin.c:676
msgid "must use `count$' on all formats or none"
msgstr "deve usar `count$' em todos os formatos ou nenhum"
-#: builtin.c:759
+#: builtin.c:778
msgid "`$' is not permitted in awk formats"
msgstr "`$' não é permitido em formatos awk"
-#: builtin.c:765
+#: builtin.c:784
msgid "arg count with `$' must be > 0"
msgstr "nº de argumentos com `$' deve ser > 0"
-#: builtin.c:767
+#: builtin.c:786
#, c-format
msgid "arg count %ld greater than total number of supplied arguments"
msgstr "nº de argumentos %ld maior que nº total de argumentos fornecidos"
-#: builtin.c:769
+#: builtin.c:788
msgid "`$' not permitted after period in format"
msgstr "`$' não é permitido depois de ponto no formato"
-#: builtin.c:782
+#: builtin.c:801
msgid "no `$' supplied for positional field width or precision"
msgstr "nenhum `$' fornecido para tamanho ou precisão de campo posicional"
-#: builtin.c:848
+#: builtin.c:867
msgid "`l' is meaningless in awk formats; ignored"
msgstr "`l' não faz sentido em formatos awk; ignorado"
-#: builtin.c:852
+#: builtin.c:871
msgid "`l' is not permitted in POSIX awk formats"
msgstr "`l' não é permitido em formatos POSIX awk"
-#: builtin.c:863
+#: builtin.c:882
msgid "`L' is meaningless in awk formats; ignored"
msgstr "`L' não faz sentido em formatos awk; ignorado"
-#: builtin.c:867
+#: builtin.c:886
msgid "`L' is not permitted in POSIX awk formats"
msgstr "`L' não é permitido em formatos POSIX awk"
-#: builtin.c:878
+#: builtin.c:897
msgid "`h' is meaningless in awk formats; ignored"
msgstr "`h' não faz sentido em formatos awk; ignorado"
-#: builtin.c:882
+#: builtin.c:901
msgid "`h' is not permitted in POSIX awk formats"
msgstr "`h' não é permitido em formatos POSIX awk"
-#: builtin.c:1111
+#: builtin.c:1132
#, c-format
msgid "[s]printf: value %g is out of range for `%%%c' format"
msgstr "[s]printf: valor %g fora da faixa para formato `%%%c'"
-#: builtin.c:1171
+#: builtin.c:1198
msgid "not enough arguments to satisfy format string"
msgstr "argumentos insuficientes para a string de formato"
-#: builtin.c:1173
+#: builtin.c:1200
msgid "^ ran out for this one"
msgstr "^ acabou para este aqui"
-#: builtin.c:1178
+#: builtin.c:1205
msgid "[s]printf: format specifier does not have control letter"
msgstr "[s]printf: declaração de formato não tem letra de controle"
-#: builtin.c:1181
+#: builtin.c:1208
msgid "too many arguments supplied for format string"
msgstr "excesso de argumentos para a string de formato"
-#: builtin.c:1247 builtin.c:1250
+#: builtin.c:1274 builtin.c:1277
msgid "printf: no arguments"
msgstr "printf: nenhum argumento"
-#: builtin.c:1274
+#: builtin.c:1301
msgid "sqrt: received non-numeric argument"
msgstr "sqrt: recebeu argumento não-numérico"
-#: builtin.c:1278
+#: builtin.c:1305
#, c-format
msgid "sqrt: called with negative argument %g"
msgstr "sqrt: chamada com argumento negativo %g"
-#: builtin.c:1301
+#: builtin.c:1329
#, c-format
msgid "substr: start index %g is invalid, using 1"
msgstr "substr: posição inicial %g é inválida, usando 1"
-#: builtin.c:1306
+#: builtin.c:1334
#, c-format
msgid "substr: non-integer start index %g will be truncated"
msgstr "substr: posição inicial %g não-inteira será truncada"
-#: builtin.c:1325
+#: builtin.c:1353
#, fuzzy, c-format
msgid "substr: length %g is not >= 1"
msgstr "substr: comprimento %g é <= 0"
-#: builtin.c:1327
+#: builtin.c:1355
#, fuzzy, c-format
msgid "substr: length %g is not >= 0"
msgstr "substr: comprimento %g é <= 0"
-#: builtin.c:1334
+#: builtin.c:1362
#, c-format
msgid "substr: non-integer length %g will be truncated"
msgstr "substr: comprimento %g não-inteiro será truncado"
-#: builtin.c:1339
+#: builtin.c:1367
#, c-format
msgid "substr: length %g too big for string indexing, truncating to %g"
msgstr "substr: comprimento %g excessivo para indexação, truncando para %g"
-#: builtin.c:1351
+#: builtin.c:1379
msgid "substr: source string is zero length"
msgstr "substr: string origem tem comprimento zero"
-#: builtin.c:1357
+#: builtin.c:1395
#, c-format
msgid "substr: start index %g is past end of string"
msgstr "substr: posição inicial %g além do fim da string"
-#: builtin.c:1365
+#: builtin.c:1403
#, c-format
msgid ""
"substr: length %g at start index %g exceeds length of first argument (%lu)"
@@ -566,187 +586,187 @@ msgstr ""
"substr: comprimento %g a partir da posição %g excede tamanho do 1º argumento "
"(%lu)"
-#: builtin.c:1400
+#: builtin.c:1478
msgid "strftime: received non-string first argument"
msgstr "strftime: recebeu primeiro argumento não-string"
-#: builtin.c:1406
+#: builtin.c:1484
msgid "strftime: received empty format string"
msgstr "strftime: recebeu string de formato vazia"
-#: builtin.c:1415
+#: builtin.c:1493
msgid "strftime: received non-numeric second argument"
msgstr "strftime: recebeu segundo argumento não-numérico"
-#: builtin.c:1478
+#: builtin.c:1556
msgid "mktime: received non-string argument"
msgstr "mktime: recebeu argumento não-string"
-#: builtin.c:1523
+#: builtin.c:1601
msgid "system: received non-string argument"
msgstr "system: recebeu argumento não-string"
-#: builtin.c:1644 eval.c:2019
+#: builtin.c:1722 eval.c:2039
#, c-format
msgid "reference to uninitialized field `$%d'"
msgstr "referência a campo não inicializado `$%d'"
-#: builtin.c:1671
+#: builtin.c:1827
msgid "tolower: received non-string argument"
msgstr "tolower: recebeu argumento não-string"
-#: builtin.c:1720
+#: builtin.c:1857
msgid "toupper: received non-string argument"
msgstr "toupper: recebeu argumento não-string"
-#: builtin.c:1765
+#: builtin.c:1890
msgid "atan2: received non-numeric first argument"
msgstr "atan2: recebeu primeiro argumento não-numérico"
-#: builtin.c:1767
+#: builtin.c:1892
msgid "atan2: received non-numeric second argument"
msgstr "atan2: recebeu segundo argumento não-numérico"
-#: builtin.c:1786
+#: builtin.c:1911
msgid "sin: received non-numeric argument"
msgstr "sin: recebeu argumento não-numérico"
-#: builtin.c:1802
+#: builtin.c:1927
msgid "cos: received non-numeric argument"
msgstr "cos: recebeu argumento não-numérico"
-#: builtin.c:1852
+#: builtin.c:1977
msgid "srand: received non-numeric argument"
msgstr "srand: recebeu argumento não-numérico"
-#: builtin.c:1887
+#: builtin.c:2012
msgid "match: third argument is not an array"
msgstr "match: terceiro argumento não é um vetor"
-#: builtin.c:2414
+#: builtin.c:2555
msgid "gensub: third argument of 0 treated as 1"
msgstr "gensub: 3º argumento 0 tratado como 1"
-#: builtin.c:2572
+#: builtin.c:2715
msgid "lshift: received non-numeric first argument"
msgstr "lshift: recebeu primeiro argumento não-numérico"
-#: builtin.c:2574
+#: builtin.c:2717
#, fuzzy
msgid "lshift: received non-numeric second argument"
msgstr "strftime: recebeu segundo argumento não-numérico"
-#: builtin.c:2580
+#: builtin.c:2723
#, c-format
msgid "lshift(%lf, %lf): negative values will give strange results"
msgstr "lshift(%lf, %lf): valores negativos darão resultados estranhos"
-#: builtin.c:2582
+#: builtin.c:2725
#, c-format
msgid "lshift(%lf, %lf): fractional values will be truncated"
msgstr "lshift(%lf, %lf): valores fracionários serão truncados"
-#: builtin.c:2584
+#: builtin.c:2727
#, c-format
msgid "lshift(%lf, %lf): too large shift value will give strange results"
msgstr "lshift(%lf, %lf): deslocamento excessivo dará resultados estranhos"
-#: builtin.c:2610
+#: builtin.c:2753
msgid "rshift: received non-numeric first argument"
msgstr "rshift: recebeu primeiro argumento não-numérico"
-#: builtin.c:2612
+#: builtin.c:2755
#, fuzzy
msgid "rshift: received non-numeric second argument"
msgstr "strftime: recebeu segundo argumento não-numérico"
-#: builtin.c:2618
+#: builtin.c:2761
#, c-format
msgid "rshift(%lf, %lf): negative values will give strange results"
msgstr "rshift(%lf, %lf): valores negativos darão resultados estranhos"
-#: builtin.c:2620
+#: builtin.c:2763
#, c-format
msgid "rshift(%lf, %lf): fractional values will be truncated"
msgstr "rshift(%lf, %lf): valores fracionários serão truncados"
-#: builtin.c:2622
+#: builtin.c:2765
#, c-format
msgid "rshift(%lf, %lf): too large shift value will give strange results"
msgstr "rshift(%lf, %lf): deslocamento excessivo dará resultados estranhos"
-#: builtin.c:2648
+#: builtin.c:2791
msgid "and: received non-numeric first argument"
msgstr "and: recebeu primeiro argumento não-numérico"
-#: builtin.c:2650
+#: builtin.c:2793
#, fuzzy
msgid "and: received non-numeric second argument"
msgstr "atan2: recebeu segundo argumento não-numérico"
-#: builtin.c:2656
+#: builtin.c:2799
#, c-format
msgid "and(%lf, %lf): negative values will give strange results"
msgstr "and(%lf, %lf): valores negativos darão resultados estranhos"
-#: builtin.c:2658
+#: builtin.c:2801
#, c-format
msgid "and(%lf, %lf): fractional values will be truncated"
msgstr "and(%lf, %lf): valores fracionários serão truncados"
-#: builtin.c:2684
+#: builtin.c:2827
msgid "or: received non-numeric first argument"
msgstr "or: recebeu primeiro argumento não-numérico"
-#: builtin.c:2686
+#: builtin.c:2829
#, fuzzy
msgid "or: received non-numeric second argument"
msgstr "atan2: recebeu segundo argumento não-numérico"
-#: builtin.c:2692
+#: builtin.c:2835
#, c-format
msgid "or(%lf, %lf): negative values will give strange results"
msgstr "or(%lf, %lf): valores negativos darão resultados estranhos"
-#: builtin.c:2694
+#: builtin.c:2837
#, c-format
msgid "or(%lf, %lf): fractional values will be truncated"
msgstr "or(%lf, %lf): valores fracionários serão truncados"
-#: builtin.c:2720
+#: builtin.c:2863
msgid "xor: received non-numeric first argument"
msgstr "xor: recebeu primeiro argumento não-numérico"
-#: builtin.c:2722
+#: builtin.c:2865
#, fuzzy
msgid "xor: received non-numeric second argument"
msgstr "atan2: recebeu segundo argumento não-numérico"
-#: builtin.c:2728
+#: builtin.c:2871
#, c-format
msgid "xor(%lf, %lf): negative values will give strange results"
msgstr "xor(%lf, %lf): valores negativos darão resultados estranhos"
-#: builtin.c:2730
+#: builtin.c:2873
#, c-format
msgid "xor(%lf, %lf): fractional values will be truncated"
msgstr "xor(%lf, %lf): valores fracionários serão truncados"
-#: builtin.c:2754
+#: builtin.c:2897
msgid "compl: received non-numeric argument"
msgstr "compl: recebeu primeiro argumento não-numérico"
-#: builtin.c:2760
+#: builtin.c:2903
#, c-format
msgid "compl(%lf): negative value will give strange results"
msgstr "compl(%lf): valores negativos darão resultados estranhos"
-#: builtin.c:2762
+#: builtin.c:2905
#, c-format
msgid "compl(%lf): fractional value will be truncated"
msgstr "compl(%lf): valores fracionários serão truncados"
-#: builtin.c:2935
+#: builtin.c:3078
#, c-format
msgid "dcgettext: `%s' is not a valid locale category"
msgstr "dcgettext: `%s' não é uma categoria de \"locale\" válida"
@@ -756,73 +776,73 @@ msgstr "dcgettext: `%s' não é uma categoria de \"locale\" válida"
msgid "unknown nodetype %d"
msgstr "tipo de nodo desconhecido %d"
-#: eval.c:350
+#: eval.c:353
msgid "buffer overflow in genflags2str"
msgstr "estouro de buffer em genflags2str"
-#: eval.c:382 eval.c:388 profile.c:837
+#: eval.c:385 eval.c:391 profile.c:838
#, c-format
msgid "attempt to use array `%s' in a scalar context"
msgstr "tentativa de usar vetor `%s' em um contexto escalar"
-#: eval.c:730
+#: eval.c:733
#, c-format
msgid "for loop: array `%s' changed size from %ld to %ld during loop execution"
msgstr ""
"loop for: vetor `%s' mudou de tamanho de %ld para %ld durante a execução"
-#: eval.c:751
+#: eval.c:754
msgid "`break' outside a loop is not portable"
msgstr "`break' fora de um loop não é portável"
-#: eval.c:755
+#: eval.c:758
msgid "`break' outside a loop is not allowed"
msgstr "`break' fora de um loop não é permitido"
-#: eval.c:772
+#: eval.c:775
msgid "`continue' outside a loop is not portable"
msgstr "`continue' fora de um loop não é portável"
-#: eval.c:776
+#: eval.c:779
msgid "`continue' outside a loop is not allowed"
msgstr "`continue' fora de um loop não é permitido"
-#: eval.c:810
+#: eval.c:813
msgid "`next' cannot be called from a BEGIN rule"
msgstr "`next' não pode ser chamado de uma regra BEGIN"
-#: eval.c:812
+#: eval.c:815
msgid "`next' cannot be called from an END rule"
msgstr "`next' não pode ser chamado de uma regra END"
-#: eval.c:821
+#: eval.c:824
msgid "`nextfile' cannot be called from a BEGIN rule"
msgstr "`nextfile' não pode ser chamado de uma regra BEGIN"
-#: eval.c:823
+#: eval.c:826
msgid "`nextfile' cannot be called from an END rule"
msgstr "`nextfile' não pode ser chamado de uma regra END"
-#: eval.c:872
+#: eval.c:875
msgid "statement has no effect"
msgstr "declaração não tem efeito"
-#: eval.c:915 eval.c:1873
+#: eval.c:952 eval.c:1893
#, c-format
msgid "can't use function name `%s' as variable or array"
msgstr "não se pode usar o nome de função `%s' como variável ou vetor"
-#: eval.c:922 eval.c:928
+#: eval.c:959 eval.c:965
#, c-format
msgid "reference to uninitialized argument `%s'"
msgstr "referência a argumento não inicializado `%s'"
-#: eval.c:937 eval.c:1882
+#: eval.c:974 eval.c:1902
#, c-format
msgid "reference to uninitialized variable `%s'"
msgstr "referência a variável não inicializada `%s'"
-#: eval.c:1083
+#: eval.c:1120
msgid ""
"concatenation: side effects in one expression have changed the length of "
"another!"
@@ -830,49 +850,44 @@ msgstr ""
"concatenação: efeitos colaterais em um contexto mudaram o comprimento de "
"outro!"
-#: eval.c:1162
+#: eval.c:1200
msgid "assignment used in conditional context"
msgstr "atribuição usada em contexto condicional"
-#: eval.c:1252
+#: eval.c:1278
msgid "division by zero attempted"
msgstr "tentativa de divisão por zero"
-#: eval.c:1267
+#: eval.c:1293
#, c-format
msgid "division by zero attempted in `%%'"
msgstr "tentativa de divisão por zero em `%%'"
-#: eval.c:1282 profile.c:713
+#: eval.c:1308 profile.c:714
#, c-format
msgid "illegal type (%s) in tree_eval"
msgstr "tipo ilegal (%s) em tree_eval"
-#: eval.c:1459
+#: eval.c:1471
msgid "division by zero attempted in `/='"
msgstr "tentativa de divisão por zero em `/='"
-#: eval.c:1477
+#: eval.c:1493
#, c-format
msgid "division by zero attempted in `%%='"
msgstr "tentativa de divisão por zero em `%%='"
-#: eval.c:1738
+#: eval.c:1758
#, c-format
msgid "function `%s' called with more arguments than declared"
msgstr "função `%s' chamada com mais argumentos que os declarados"
-#: eval.c:1782
+#: eval.c:1802
#, c-format
msgid "function `%s' not defined"
msgstr "função `%s' não definida"
-#: eval.c:1788
-#, c-format
-msgid "function %s called\n"
-msgstr "função %s chamada\n"
-
-#: eval.c:1845
+#: eval.c:1865
#, c-format
msgid ""
"\n"
@@ -883,42 +898,42 @@ msgstr ""
"\t# Pilha de Chamadas de Função:\n"
"\n"
-#: eval.c:1848
+#: eval.c:1868
#, c-format
msgid "\t# -- main --\n"
msgstr "\t# -- main --\n"
-#: eval.c:2003
+#: eval.c:2023
msgid "attempt to field reference from non-numeric value"
msgstr "tentativa de referência a campo a partir de valor não-numérico"
-#: eval.c:2005
+#: eval.c:2025
msgid "attempt to reference from null string"
msgstr "tentativa de referência a partir de string nula"
-#: eval.c:2011
+#: eval.c:2031
#, c-format
msgid "attempt to access field %d"
msgstr "tentativa de acessar campo %d"
-#: eval.c:2032 eval.c:2039 profile.c:934
+#: eval.c:2052 eval.c:2059 profile.c:935
msgid "assignment is not allowed to result of builtin function"
msgstr "atribuição não pode resultar de funções intrínsecas"
-#: eval.c:2103
+#: eval.c:2123
msgid "`IGNORECASE' is a gawk extension"
msgstr "`IGNORECASE' é uma extensão do gawk"
-#: eval.c:2133
+#: eval.c:2153
msgid "`BINMODE' is a gawk extension"
msgstr "`BINMODE' é uma extensão do gawk"
-#: eval.c:2255
+#: eval.c:2275
#, c-format
msgid "bad `%sFMT' specification `%s'"
msgstr "especificação `%sFMT' inválida `%s'"
-#: eval.c:2333
+#: eval.c:2353
msgid "turning off `--lint' due to assignment to `LINT'"
msgstr "desativando `--lint' devido a atribuição a `LINT'"
@@ -966,9 +981,9 @@ msgid "extension: function name `%s' previously defined"
msgstr "nome de função `%s' definido anteriormente"
#: ext.c:201
-#, c-format
-msgid "function `%s' defined to take no more than `%d' argument(s)"
-msgstr ""
+#, fuzzy, c-format
+msgid "function `%s' defined to take no more than %d argument(s)"
+msgstr "função `%s' definida mas nunca chamada"
#: ext.c:204
#, fuzzy, c-format
@@ -989,549 +1004,554 @@ msgstr ""
msgid "Operation Not Supported"
msgstr "Operação Não Suportada"
-#: field.c:315
+#: field.c:326
msgid "NF set to negative value"
msgstr "valor negativo atribuído a NF"
-#: field.c:808
+#: field.c:819
msgid "split: second argument is not an array"
msgstr "split: segundo argumento não é um vetor"
-#: field.c:842
+#: field.c:853
msgid "split: null string for third arg is a gawk extension"
msgstr "split: string nula para segundo argumento é uma extensão do gawk"
-#: field.c:894
+#: field.c:905
msgid "`FIELDWIDTHS' is a gawk extension"
msgstr "`FIELDWIDTHS' é uma extensão do gawk"
-#: field.c:921
+#: field.c:935 field.c:946
#, c-format
-msgid "field %d in FIELDWIDTHS, must be > 0"
-msgstr "campo %d em FIELDWIDTHS deve ser > 0"
+msgid "invalid FIELDWIDTHS value, near `%s'"
+msgstr ""
-#: field.c:994
+#: field.c:1027
msgid "null string for `FS' is a gawk extension"
msgstr "string nula para `FS' é uma extensão do gawk"
-#: getopt.c:692 getopt.c:711
+#: getopt.c:571 getopt.c:590
#, c-format
msgid "%s: option `%s' is ambiguous\n"
msgstr "%s: opção `%s' é ambígua\n"
-#: getopt.c:744 getopt.c:748
+#: getopt.c:623 getopt.c:627
#, c-format
msgid "%s: option `--%s' doesn't allow an argument\n"
msgstr "%s: opção `--%s' não aceita argumento\n"
-#: getopt.c:757 getopt.c:762
+#: getopt.c:636 getopt.c:641
#, c-format
msgid "%s: option `%c%s' doesn't allow an argument\n"
msgstr "%s: opção `%c%s' não aceita argumento\n"
-#: getopt.c:807 getopt.c:829 getopt.c:1159 getopt.c:1181
+#: getopt.c:687 getopt.c:709 getopt.c:1040 getopt.c:1062
#, c-format
msgid "%s: option `%s' requires an argument\n"
msgstr "%s: opção `%s' requer argumento\n"
-#: getopt.c:867 getopt.c:870
+#: getopt.c:747 getopt.c:750
#, c-format
msgid "%s: unrecognized option `--%s'\n"
msgstr "%s: opção não reconhecida `--%s'\n"
-#: getopt.c:878 getopt.c:881
+#: getopt.c:758 getopt.c:761
#, c-format
msgid "%s: unrecognized option `%c%s'\n"
msgstr "%s: opção não reconhecida `%c%s'\n"
-#: getopt.c:936 getopt.c:939
+#: getopt.c:816 getopt.c:819
#, c-format
msgid "%s: illegal option -- %c\n"
msgstr "%s: opção ilegal -- %c\n"
-#: getopt.c:945 getopt.c:948
+#: getopt.c:825 getopt.c:828
#, c-format
msgid "%s: invalid option -- %c\n"
msgstr "%s: opção inválida -- %c\n"
-#: getopt.c:1003 getopt.c:1022 getopt.c:1234 getopt.c:1255 main.c:433
+#: getopt.c:883 getopt.c:902 getopt.c:1115 getopt.c:1136 main.c:448
#, c-format
msgid "%s: option requires an argument -- %c\n"
msgstr "%s: opção requer argumento -- %c\n"
-#: getopt.c:1074 getopt.c:1093
+#: getopt.c:955 getopt.c:974
#, c-format
msgid "%s: option `-W %s' is ambiguous\n"
msgstr "%s: opção `-W %s' é ambígua\n"
-#: getopt.c:1117 getopt.c:1138
+#: getopt.c:998 getopt.c:1019
#, c-format
msgid "%s: option `-W %s' doesn't allow an argument\n"
msgstr "%s: opção `-W %s' não aceita argumento\n"
-#: io.c:308
+#: io.c:307
#, c-format
msgid "cannot open file `%s' for reading (%s)"
msgstr "impossível abrir arquivo `%s' para leitura (%s)"
-#: io.c:395
+#: io.c:398
#, c-format
msgid "close of fd %d (`%s') failed (%s)"
msgstr "fechamento do descritor %d (`%s') falhou (%s)"
-#: io.c:533
+#: io.c:536
#, c-format
msgid "invalid tree type %s in redirect()"
msgstr "tipo de árvore %s inválido em redirect()"
-#: io.c:539
+#: io.c:542
#, c-format
msgid "expression in `%s' redirection only has numeric value"
msgstr "expressão no redirecionamento `%s' só tem valor numérico"
-#: io.c:545
+#: io.c:548
#, c-format
msgid "expression for `%s' redirection has null string value"
msgstr "expressão para o redirecionamento `%s' tem valor string nulo"
-#: io.c:550
+#: io.c:553
#, c-format
msgid "filename `%s' for `%s' redirection may be result of logical expression"
msgstr ""
"nome de arquivo `%s' para redirecionamento `%s' pode ser resultado de "
"expressão lógica"
-#: io.c:588
+#: io.c:591
#, c-format
msgid "unnecessary mixing of `>' and `>>' for file `%.*s'"
msgstr "mistura desnecessária de `>' e `>>' para arquivo `%.*s'"
-#: io.c:640
+#: io.c:643
#, c-format
msgid "can't open pipe `%s' for output (%s)"
msgstr "impossível abrir pipe `%s' para saída (%s)"
-#: io.c:649
+#: io.c:652
#, c-format
msgid "can't open pipe `%s' for input (%s)"
msgstr "impossível abrir pipe `%s' para entrada (%s)"
-#: io.c:662
+#: io.c:665
#, c-format
msgid "can't open two way socket `%s' for input/output (%s)"
msgstr "impossível abrir socket bidirecional `%s' para entrada/saída (%s)"
-#: io.c:666
+#: io.c:669
#, c-format
msgid "can't open two way pipe `%s' for input/output (%s)"
msgstr "impossível abrir pipe bidirecional `%s' para entrada/saída (%s)"
-#: io.c:742
+#: io.c:745
#, c-format
msgid "can't redirect from `%s' (%s)"
msgstr "impossível redirecionar de `%s' (%s)"
-#: io.c:745
+#: io.c:748
#, c-format
msgid "can't redirect to `%s' (%s)"
msgstr "impossível redirecionar para `%s' (%s)"
-#: io.c:784
+#: io.c:787
msgid ""
"reached system limit for open files: starting to multiplex file descriptors"
msgstr ""
"alcançado limite do sistema para arquivos abertos; começando a multiplexar "
"descritores de arquivos"
-#: io.c:800
+#: io.c:803
#, c-format
msgid "close of `%s' failed (%s)."
msgstr "fechamento de `%s' falhou (%s)"
-#: io.c:808
+#: io.c:811
msgid "too many pipes or input files open"
msgstr "excesso de pipes ou arquivos de entrada abertos"
-#: io.c:831
+#: io.c:834
msgid "close: second argument must be `to' or `from'"
msgstr "close: segundo argumento deve ser `to' ou `from'"
-#: io.c:845
+#: io.c:848
#, c-format
msgid "close: `%.*s' is not an open file, pipe or co-process"
msgstr "close: `%.*s' não é um arquivo aberto, pipe ou co-processo"
-#: io.c:849
+#: io.c:852
msgid "close of redirection that was never opened"
msgstr "fechamento de redirecionamento que nunca foi aberto"
-#: io.c:945
+#: io.c:948
#, c-format
msgid "close: redirection `%s' not opened with `|&', second argument ignored"
msgstr ""
"close: redirecionamento `%s' não foi aberto com `|&', segundo argumento "
"ignorado"
-#: io.c:960
+#: io.c:964
#, c-format
msgid "failure status (%d) on pipe close of `%s' (%s)"
msgstr "status de falha (%d) ao fechar pipe de `%s' (%s)"
-#: io.c:963
+#: io.c:967
#, c-format
msgid "failure status (%d) on file close of `%s' (%s)"
msgstr "status de falha (%d) ao fechar arquivo de `%s' (%s)"
-#: io.c:983
+#: io.c:987
#, c-format
msgid "no explicit close of socket `%s' provided"
msgstr "fechamento explícito do socket `%s' não fornecido"
-#: io.c:986
+#: io.c:990
#, c-format
msgid "no explicit close of co-process `%s' provided"
msgstr "fechamento explícito do co-processo `%s' não fornecido"
-#: io.c:989
+#: io.c:993
#, c-format
msgid "no explicit close of pipe `%s' provided"
msgstr "fechamento explícito do pipe `%s' não fornecido"
-#: io.c:992
+#: io.c:996
#, c-format
msgid "no explicit close of file `%s' provided"
msgstr "fechamento explícito do arquivo `%s' não fornecido"
-#: io.c:1021 io.c:1075
+#: io.c:1025 io.c:1080 main.c:718 main.c:756
#, c-format
msgid "error writing standard output (%s)"
msgstr "erro ao escrever na saída padrão (%s)"
-#: io.c:1025 io.c:1079
+#: io.c:1029 io.c:1085
#, c-format
msgid "error writing standard error (%s)"
msgstr "erro ao escrever na saída padrão de erros (%s)"
-#: io.c:1033
+#: io.c:1037
#, c-format
msgid "pipe flush of `%s' failed (%s)."
msgstr "descarga de pipe de `%s' falhou (%s)."
-#: io.c:1036
+#: io.c:1040
#, c-format
msgid "co-process flush of pipe to `%s' failed (%s)."
msgstr "descarga de co-processo de pipe para `%s' falhou (%s)."
-#: io.c:1039
+#: io.c:1043
#, c-format
msgid "file flush of `%s' failed (%s)."
msgstr "descarga de arquivo de `%s' falhou (%s)."
-#: io.c:1198
+#: io.c:1205
msgid "/inet/raw client not ready yet, sorry"
msgstr "infelizmente, o cliente de /inet/raw não está concluído"
-#: io.c:1200 io.c:1237
+#: io.c:1207 io.c:1244
msgid "only root may use `/inet/raw'."
msgstr "apenas root pode usar `/inet/raw'."
-#: io.c:1235
+#: io.c:1242
msgid "/inet/raw server not ready yet, sorry"
msgstr "infelizmente, o servidor de /inet/raw não está concluído"
-#: io.c:1325
+#: io.c:1332
#, c-format
msgid "no (known) protocol supplied in special filename `%s'"
msgstr ""
"nenhum protocolo (conhecido) fornecido em nome de arquivo especial `%s'"
-#: io.c:1343
+#: io.c:1350
#, c-format
msgid "special file name `%s' is incomplete"
msgstr "nome de arquivo especial `%s' está incompleto"
-#: io.c:1355
+#: io.c:1362
#, c-format
msgid "local port invalid in `%s'"
msgstr "porta local inválida em `%s'"
-#: io.c:1367
+#: io.c:1374
msgid "must supply a remote hostname to `/inet'"
msgstr "deve ser fornecido um nome de host remoto para `/inet'"
-#: io.c:1382
+#: io.c:1389
msgid "must supply a remote port to `/inet'"
msgstr "deve ser fornecida uma porta remota para `/inet'"
-#: io.c:1388
+#: io.c:1395
#, c-format
msgid "remote port invalid in `%s'"
msgstr "porta remota inválida em `%s'"
-#: io.c:1398
+#: io.c:1405
msgid "TCP/IP communications are not supported"
msgstr "comunicação TCP/IP não é suportada"
-#: io.c:1407 io.c:1588
+#: io.c:1414 io.c:1595
#, c-format
msgid "file `%s' is a directory"
msgstr "arquivo `%s' é um diretório"
-#: io.c:1477
+#: io.c:1484
#, c-format
msgid "use `PROCINFO[\"%s\"]' instead of `%s'"
msgstr "use `PROCINFO[\"%s\"]' em vez de `%s'"
-#: io.c:1509
+#: io.c:1516
msgid "use `PROCINFO[...]' instead of `/dev/user'"
msgstr "use `PROCINFO[...]' em vez de `/dev/user'"
-#: io.c:1574 io.c:1748
+#: io.c:1581 io.c:1763
#, c-format
msgid "could not open `%s', mode `%s'"
msgstr "impossível abrir `%s', modo `%s'"
-#: io.c:1799
+#: io.c:1814
#, c-format
msgid "close of master pty failed (%s)"
msgstr "falha ao fechar pty mestre (%s)"
-#: io.c:1801 io.c:1953 io.c:2105
+#: io.c:1816 io.c:1968 io.c:2119
#, c-format
msgid "close of stdout in child failed (%s)"
msgstr "falha ao fechar stdout em filho (%s)"
-#: io.c:1804
+#: io.c:1819
#, c-format
msgid "moving slave pty to stdout in child failed (dup: %s)"
msgstr "falha ao mover pty escrava para stdout em filho (dup: %s)"
-#: io.c:1806 io.c:1958
+#: io.c:1821 io.c:1973
#, c-format
msgid "close of stdin in child failed (%s)"
msgstr "falha ao fechar stdin em filho (%s)"
-#: io.c:1809
+#: io.c:1824
#, c-format
msgid "moving slave pty to stdin in child failed (dup: %s)"
msgstr "falha ao mover pty escrava para stdin em filho (dup: %s)"
-#: io.c:1811 io.c:1830
+#: io.c:1826 io.c:1845
#, c-format
msgid "close of slave pty failed (%s)"
msgstr "falha ao fechar pty escrava (%s)"
-#: io.c:1904 io.c:1956 io.c:2086 io.c:2108
+#: io.c:1919 io.c:1971 io.c:2100 io.c:2122
#, c-format
msgid "moving pipe to stdout in child failed (dup: %s)"
msgstr "falha ao mover pipe para stdout em processo pai (dup: %s)"
-#: io.c:1908 io.c:1961
+#: io.c:1923 io.c:1976
#, c-format
msgid "moving pipe to stdin in child failed (dup: %s)"
msgstr "falha ao mover pipe para stdin em processo pai (dup: %s)"
-#: io.c:1925 io.c:2099
+#: io.c:1940 io.c:2113
msgid "restoring stdout in parent process failed\n"
msgstr "falha ao restaurar stdout em processo pai\n"
-#: io.c:1930
+#: io.c:1945
msgid "restoring stdin in parent process failed\n"
msgstr "falha ao restaurar stdin em processo pai\n"
-#: io.c:1964 io.c:2110 io.c:2121
+#: io.c:1979 io.c:2124 io.c:2135
#, c-format
msgid "close of pipe failed (%s)"
msgstr "falha ao fechar pipe (%s)"
-#: io.c:2009
+#: io.c:2024
msgid "`|&' not supported"
msgstr "`|&' não suportado"
-#: io.c:2076
+#: io.c:2090
#, c-format
msgid "cannot open pipe `%s' (%s)"
msgstr "impossível abrir pipe `%s' (%s)"
-#: io.c:2117
+#: io.c:2131
#, c-format
msgid "cannot create child process for `%s' (fork: %s)"
msgstr "impossível criar processo filho para `%s' (fork: %s)"
-#: io.c:2460
+#: io.c:2506
#, c-format
msgid "data file `%s' is empty"
msgstr "arquivo de dados `%s' vazio"
-#: io.c:2503 io.c:2511
+#: io.c:2547 io.c:2555
msgid "could not allocate more input memory"
msgstr "impossível alocar mais memória de entrada"
-#: io.c:2869 io.c:2932
+#: io.c:2919 io.c:2984
#, c-format
msgid "error reading input file `%s': %s"
msgstr "erro ao ler arquivo de entrada `%s': %s"
-#: io.c:3057
+#: io.c:3109
msgid "multicharacter value of `RS' is a gawk extension"
msgstr "valor de múltiplos caracteres para `RS' é uma extensão do gawk"
-#: main.c:323
+#: main.c:338
msgid "`-m[fr]' option irrelevant in gawk"
msgstr "opção `-m[fr] é irrelevante no gawk"
-#: main.c:325
+#: main.c:340
msgid "-m option usage: `-m[fr] nnn'"
msgstr "uso da opção -m: `-m[fr] nnn'"
-#: main.c:342
+#: main.c:357
#, c-format
msgid "%s: option `-W %s' unrecognized, ignored\n"
msgstr "%s: opção `-W %s' não reconhecida, ignorada\n"
-#: main.c:379
+#: main.c:394
msgid "empty argument to `--source' ignored"
msgstr "argumento vazio para --source ignorado"
-#: main.c:450
+#: main.c:467
msgid "environment variable `POSIXLY_CORRECT' set: turning on `--posix'"
msgstr "variável de ambiente `POSIXLY_CORRECT' ativada: ligando `--posix'"
-#: main.c:455
+#: main.c:472
msgid "`--posix' overrides `--traditional'"
msgstr "`--posix' sobrepõe `--traditional'"
-#: main.c:466
+#: main.c:483
msgid "`--posix'/`--traditional' overrides `--non-decimal-data'"
msgstr "`--posix'/`--traditional' sobrepõe `--non-decimal-data'"
-#: main.c:470
+#: main.c:487
#, c-format
msgid "running %s setuid root may be a security problem"
msgstr "rodar %s com setuid root pode ser um problema de segurança"
-#: main.c:511
+#: main.c:528
#, c-format
msgid "can't set binary mode on stdin (%s)"
msgstr "impossível ativar modo binário em stdin (%s)"
-#: main.c:514
+#: main.c:531
#, c-format
msgid "can't set binary mode on stdout (%s)"
msgstr "impossível ativar modo binário em stdout (%s)"
-#: main.c:516
+#: main.c:533
#, c-format
msgid "can't set binary mode on stderr (%s)"
msgstr "impossível ativar modo binário em stderr (%s)"
-#: main.c:546
+#: main.c:572
msgid "no program text at all!"
msgstr "nenhum texto de programa"
-#: main.c:623
+#: main.c:665
#, c-format
msgid "Usage: %s [POSIX or GNU style options] -f progfile [--] file ...\n"
msgstr "Uso: %s [opções estilo POSIX ou GNU] -f arqprog [--] arquivo ...\n"
-#: main.c:625
+#: main.c:667
#, c-format
msgid "Usage: %s [POSIX or GNU style options] [--] %cprogram%c file ...\n"
msgstr "Uso: %s [opções estilo POSIX ou GNU] [--] %cprograma%c arquivo ...\n"
-#: main.c:630
+#: main.c:672
msgid "POSIX options:\t\tGNU long options:\n"
msgstr "Opções POSIX: \t\tOpções longas GNU:\n"
-#: main.c:631
+#: main.c:673
msgid "\t-f progfile\t\t--file=progfile\n"
msgstr "\t-f arqprog \t\t--file=arqprog\n"
-#: main.c:632
+#: main.c:674
msgid "\t-F fs\t\t\t--field-separator=fs\n"
msgstr "\t-F fs\t\t\t--field-separator=fs\n"
-#: main.c:633
+#: main.c:675
msgid "\t-v var=val\t\t--assign=var=val\n"
msgstr "\t-v var=val\t\t--assign=var=val\n"
-#: main.c:634
+#: main.c:676
msgid "\t-m[fr] val\n"
msgstr "\t-m[fr] val\n"
-#: main.c:635
+#: main.c:677
msgid "\t-W compat\t\t--compat\n"
msgstr "\t-W compat\t\t--compat\n"
-#: main.c:636
+#: main.c:678
msgid "\t-W copyleft\t\t--copyleft\n"
msgstr "\t-W copyleft\t\t--copyleft\n"
-#: main.c:637
+#: main.c:679
msgid "\t-W copyright\t\t--copyright\n"
msgstr "\t-W copyright\t\t--copyright\n"
-#: main.c:638
+#: main.c:680
msgid "\t-W dump-variables[=file]\t--dump-variables[=file]\n"
msgstr "\t-W dump-variables[=arq] \t--dump-variables[=arq]\n"
-#: main.c:639
+#: main.c:681
+#, fuzzy
+msgid "\t-W exec=file\t\t--exec=file\n"
+msgstr "\t-W profile[=arq] \t--profile[=arq]\n"
+
+#: main.c:682
msgid "\t-W gen-po\t\t--gen-po\n"
msgstr "\t-W gen-po\t\t--gen-po\n"
-#: main.c:640
+#: main.c:683
msgid "\t-W help\t\t\t--help\n"
msgstr "\t-W help\t\t\t--help\n"
-#: main.c:641
+#: main.c:684
msgid "\t-W lint[=fatal]\t\t--lint[=fatal]\n"
msgstr "\t-W lint[=fatal]\t\t--lint[=fatal]\n"
-#: main.c:642
+#: main.c:685
msgid "\t-W lint-old\t\t--lint-old\n"
msgstr "\t-W lint-old\t\t--lint-old\n"
-#: main.c:643
+#: main.c:686
msgid "\t-W non-decimal-data\t--non-decimal-data\n"
msgstr "\t-W non-decimal-data\t--non-decimal-data\n"
-#: main.c:645
+#: main.c:688
msgid "\t-W nostalgia\t\t--nostalgia\n"
msgstr "\t-W nostalgia\t\t--nostalgia\n"
-#: main.c:648
+#: main.c:691
msgid "\t-W parsedebug\t\t--parsedebug\n"
msgstr "\t-W parsedebug\t\t--parsedebug\n"
-#: main.c:650
+#: main.c:693
msgid "\t-W profile[=file]\t--profile[=file]\n"
msgstr "\t-W profile[=arq] \t--profile[=arq]\n"
-#: main.c:651
+#: main.c:694
msgid "\t-W posix\t\t--posix\n"
msgstr "\t-W posix\t\t--posix\n"
-#: main.c:652
+#: main.c:695
msgid "\t-W re-interval\t\t--re-interval\n"
msgstr "\t-W re-interval\t\t--re-interval\n"
-#: main.c:653
+#: main.c:696
msgid "\t-W source=program-text\t--source=program-text\n"
msgstr "\t-W source=program-text\t--source=program-text\n"
-#: main.c:654
+#: main.c:697
msgid "\t-W traditional\t\t--traditional\n"
msgstr "\t-W traditional\t\t--traditional\n"
-#: main.c:655
+#: main.c:698
msgid "\t-W usage\t\t--usage\n"
msgstr "\t-W usage\t\t--usage\n"
-#: main.c:656
+#: main.c:699
msgid "\t-W version\t\t--version\n"
msgstr "\t-W version\t\t--version\n"
-#: main.c:660
+#: main.c:703
msgid ""
"\n"
"To report bugs, see node `Bugs' in `gawk.info', which is\n"
@@ -1543,7 +1563,7 @@ msgstr ""
"seção `Reportando Problemas e Bugs' na versão impressa.\n"
"\n"
-#: main.c:664
+#: main.c:707
msgid ""
"gawk is a pattern scanning and processing language.\n"
"By default it reads standard input and writes standard output.\n"
@@ -1553,7 +1573,7 @@ msgstr ""
"Por padrão, o gawk lê a entrada padrão e escreve na saída padrão.\n"
"\n"
-#: main.c:668
+#: main.c:711
msgid ""
"Examples:\n"
"\tgawk '{ sum += $1 }; END { print sum }' file\n"
@@ -1563,7 +1583,7 @@ msgstr ""
"\tgawk '{ soma += $1 }; END { print soma }' arquivo\n"
"\tgawk -F: '{ print $1 }' /etc/passwd\n"
-#: main.c:685
+#: main.c:731
#, c-format
msgid ""
"Copyright (C) 1989, 1991-%d Free Software Foundation.\n"
@@ -1582,7 +1602,7 @@ msgstr ""
"(aoseu critério) qualquer versão posterior.\n"
"\n"
-#: main.c:693
+#: main.c:739
msgid ""
"This program is distributed in the hope that it will be useful,\n"
"but WITHOUT ANY WARRANTY; without even the implied warranty of\n"
@@ -1594,21 +1614,23 @@ msgstr ""
"QUALQUER GARANTIA. Veja a Licença Pública Geral GNU (GNU GPL)\n"
"para mais detalhes.\n"
-#: main.c:699
+#: main.c:745
msgid ""
"You should have received a copy of the GNU General Public License\n"
"along with this program; if not, write to the Free Software\n"
-"Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.\n"
+"Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, "
+"USA.\n"
msgstr ""
"Você deve ter recebido uma cópia da Licença Pública Geral GNU (GNU GPL)\n"
"junto com este programa; caso contrário, escreva à Free Software\n"
-"Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.\n"
+"Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, "
+"USA.\n"
-#: main.c:733
+#: main.c:781
msgid "-Ft does not set FS to tab in POSIX awk"
msgstr "-Ft não faz FS ser tab no awk POSIX"
-#: main.c:962
+#: main.c:1018
#, c-format
msgid ""
"%s: `%s' argument to `-v' not in `var=value' form\n"
@@ -1617,35 +1639,35 @@ msgstr ""
"%s: argumento `%s' para `-v' não está na forma `var=valor'\n"
"\n"
-#: main.c:982
+#: main.c:1038
#, c-format
msgid "`%s' is not a legal variable name"
msgstr "`%s' não é um nome legal de variável"
-#: main.c:985
+#: main.c:1041
#, c-format
msgid "`%s' is not a variable name, looking for file `%s=%s'"
msgstr "`%s' não é um nome de variável, procurando arquivo `%s=%s'"
-#: main.c:1018
+#: main.c:1074
msgid "floating point exception"
msgstr "exceção de ponto flutuante"
-#: main.c:1025
+#: main.c:1081
msgid "fatal error: internal error"
msgstr "erro fatal: erro interno"
-#: main.c:1075
+#: main.c:1132
#, c-format
msgid "no pre-opened fd %d"
msgstr "nenhum descritor pré-aberto %d"
-#: main.c:1082
+#: main.c:1139
#, c-format
msgid "could not pre-open /dev/null for fd %d"
msgstr "impossível pré-abrir /dev/null para descritor %d"
-#: main.c:1105 main.c:1114
+#: main.c:1162 main.c:1171
#, c-format
msgid "could not find groups: %s"
msgstr "impossível achar grupos: %s"
@@ -1667,23 +1689,23 @@ msgstr "erro: "
msgid "fatal: "
msgstr "fatal: "
-#: node.c:58 node.c:65 node.c:74 node.c:88 node.c:115
+#: node.c:59 node.c:66 node.c:75 node.c:90 node.c:119
msgid "can't convert string to float"
msgstr "impossível converter string para float"
-#: node.c:357
+#: node.c:414
msgid "backslash at end of string"
msgstr "barra invertida (\\) no fim da string"
-#: node.c:541
+#: node.c:604
msgid "POSIX does not allow `\\x' escapes"
msgstr "POSIX não permite escapes do tipo `\\x'"
-#: node.c:547
+#: node.c:610
msgid "no hex digits in `\\x' escape sequence"
msgstr "nenhum dígito hexa em seqüência de escape `\\x'"
-#: node.c:581
+#: node.c:644
#, c-format
msgid "escape sequence `\\%c' treated as plain `%c'"
msgstr "seqüência de escape `\\%c' tratada como `%c' normal"
@@ -1703,21 +1725,21 @@ msgstr "impossível abrir `%s' para escrita: %s"
msgid "internal error: %s with null vname"
msgstr "erro interno: %s com vname nulo"
-#: profile.c:530
+#: profile.c:531
msgid "# treated internally as `delete'"
msgstr "# tratado internamente como `delete'"
-#: profile.c:1167
+#: profile.c:1168
#, c-format
msgid "# this is a dynamically loaded extension function"
msgstr ""
-#: profile.c:1198
+#: profile.c:1199
#, c-format
msgid "\t# gawk profile, created %s\n"
msgstr "\t# perfil gawk, criado %s\n"
-#: profile.c:1201
+#: profile.c:1202
#, c-format
msgid ""
"\t# BEGIN block(s)\n"
@@ -1726,7 +1748,7 @@ msgstr ""
"\t# bloco(s) BEGIN\n"
"\n"
-#: profile.c:1211
+#: profile.c:1212
#, c-format
msgid ""
"\t# Rule(s)\n"
@@ -1735,7 +1757,7 @@ msgstr ""
"\t# Regra(s)\n"
"\n"
-#: profile.c:1217
+#: profile.c:1218
#, c-format
msgid ""
"\t# END block(s)\n"
@@ -1744,7 +1766,7 @@ msgstr ""
"\t# bloco(s) END\n"
"\n"
-#: profile.c:1237
+#: profile.c:1238
#, c-format
msgid ""
"\n"
@@ -1753,83 +1775,89 @@ msgstr ""
"\n"
"\t# Funções, listadas alfabeticamente\n"
-#: profile.c:1452
+#: profile.c:1453
#, c-format
msgid "unexpected type %s in prec_level"
msgstr "tipo inesperado %s em prec_level"
-#: regcomp.c:150
+#: regcomp.c:160
msgid "Success"
msgstr "Sucesso"
-#: regcomp.c:153
+#: regcomp.c:163
msgid "No match"
msgstr "Sem combinação"
-#: regcomp.c:156
+#: regcomp.c:166
msgid "Invalid regular expression"
msgstr "Expressão regular inválida"
-#: regcomp.c:159
+#: regcomp.c:169
msgid "Invalid collation character"
msgstr "Caracter de combinação inválido"
-#: regcomp.c:162
+#: regcomp.c:172
msgid "Invalid character class name"
msgstr "Nome de classe de caracter inválido"
-#: regcomp.c:165
+#: regcomp.c:175
msgid "Trailing backslash"
msgstr "contra-barra (\\) finalizando"
-#: regcomp.c:168
+#: regcomp.c:178
msgid "Invalid back reference"
msgstr "Referência anterior inválida"
-#: regcomp.c:171
+#: regcomp.c:181
msgid "Unmatched [ or [^"
msgstr "[ ou [^ não emparelhado"
-#: regcomp.c:174
+#: regcomp.c:184
msgid "Unmatched ( or \\("
msgstr "( ou \\( não emparelhado"
-#: regcomp.c:177
+#: regcomp.c:187
msgid "Unmatched \\{"
msgstr "\\{ não emparelhado"
-#: regcomp.c:180
+#: regcomp.c:190
msgid "Invalid content of \\{\\}"
msgstr "Conteúdo inválido de \\{\\}"
-#: regcomp.c:183
+#: regcomp.c:193
msgid "Invalid range end"
msgstr "Fim de faixa inválido"
-#: regcomp.c:186
+#: regcomp.c:196
msgid "Memory exhausted"
msgstr "Memória esgotada"
-#: regcomp.c:189
+#: regcomp.c:199
msgid "Invalid preceding regular expression"
msgstr "Expressão regular anterior inválida"
-#: regcomp.c:192
+#: regcomp.c:202
msgid "Premature end of regular expression"
msgstr "Fim prematuro da expressão regular"
-#: regcomp.c:195
+#: regcomp.c:205
msgid "Regular expression too big"
msgstr "Expressão regular grande demais"
-#: regcomp.c:198
+#: regcomp.c:208
msgid "Unmatched ) or \\)"
msgstr ") ou \\) desemparelhado"
-#: regcomp.c:668
+#: regcomp.c:688
msgid "No previous regular expression"
msgstr "Nenhuma expressão regular anterior"
+#~ msgid "function %s called\n"
+#~ msgstr "função %s chamada\n"
+
+#~ msgid "field %d in FIELDWIDTHS, must be > 0"
+#~ msgstr "campo %d em FIELDWIDTHS deve ser > 0"
+
#~ msgid "or used as a variable or an array"
#~ msgstr "ou usado como uma variável ou vetor"
diff --git a/po/ro.gmo b/po/ro.gmo
index fec28adb..e246a9fc 100644
--- a/po/ro.gmo
+++ b/po/ro.gmo
Binary files differ
diff --git a/po/ro.po b/po/ro.po
index f419877e..fff2832e 100644
--- a/po/ro.po
+++ b/po/ro.po
@@ -6,7 +6,7 @@ msgid ""
msgstr ""
"Project-Id-Version: gawk 3.1.31\n"
"Report-Msgid-Bugs-To: arnold@skeeve.com\n"
-"POT-Creation-Date: 2004-07-15 13:02+0300\n"
+"POT-Creation-Date: 2005-07-06 17:20+0300\n"
"PO-Revision-Date: 2003-09-15 17:48+0300\n"
"Last-Translator: Eugen Hoanca <eugenh@urban-grafx.ro>\n"
"Language-Team: Romanian <translation-team-ro@lists.sourceforge.net>\n"
@@ -89,291 +89,306 @@ msgstr "Blocurile de END trebuie sã aibã un fragment de acþiune"
msgid "`%s' is a built-in function, it cannot be redefined"
msgstr "`%s' este funcþie internã, nu poate fi redefinitã"
-#: awkgram.y:314
+#: awkgram.y:313
+#, fuzzy
+msgid "regexp constant `//' looks like a C++ comment, but is not"
+msgstr "constanta regexp `/%s/' aratã ca un comentariu C, dar nu este"
+
+#: awkgram.y:316
#, c-format
msgid "regexp constant `/%s/' looks like a C comment, but is not"
msgstr "constanta regexp `/%s/' aratã ca un comentariu C, dar nu este"
-#: awkgram.y:341 awkgram.y:619
+#: awkgram.y:343 awkgram.y:623
msgid "statement may have no effect"
msgstr "declaraþia poate sã nu aibã nici un efect"
-#: awkgram.y:436 awkgram.y:456
+#: awkgram.y:440 awkgram.y:460
#, fuzzy, c-format
msgid "`%s' used in %s action"
msgstr "`next' folosit în acþiune BEGIN sau END"
-#: awkgram.y:449 awkgram.y:452
+#: awkgram.y:453 awkgram.y:456
msgid "`nextfile' is a gawk extension"
msgstr "`nextfile' este extensie gawk"
-#: awkgram.y:466
+#: awkgram.y:470
msgid "`return' used outside function context"
msgstr "`return' folosit în afara contextului funcþiei"
-#: awkgram.y:508
+#: awkgram.y:512
msgid "plain `print' in BEGIN or END rule should probably be `print \"\"'"
msgstr ""
"`print' simplu din regulile BEGIN sau END ar trebui sã fie probabil `print "
"\"\"'"
-#: awkgram.y:521 awkgram.y:528
+#: awkgram.y:525 awkgram.y:532
msgid "`delete array' is a gawk extension"
msgstr "`delete array' este extensie gawk"
-#: awkgram.y:536 awkgram.y:543
+#: awkgram.y:540 awkgram.y:547
#, fuzzy
msgid "`delete(array)' is a non-portable tawk extension"
msgstr "`delete array' este extensie gawk"
-#: awkgram.y:587
+#: awkgram.y:591
#, c-format
msgid "duplicate case values in switch body: %s"
msgstr ""
-#: awkgram.y:597
+#: awkgram.y:601
msgid "Duplicate `default' detected in switch body"
msgstr ""
-#: awkgram.y:686
+#: awkgram.y:690
msgid "multistage two-way pipelines don't work"
msgstr "legãturile(pipelines) bidirecþionale multistage nu vor funcþiona"
-#: awkgram.y:777
+#: awkgram.y:781
msgid "regular expression on right of assignment"
msgstr "expresie regularã în dreapta atribuirii"
-#: awkgram.y:800
+#: awkgram.y:804
msgid "regular expression on left of `~' or `!~' operator"
msgstr "expresie regularã în stânga operatorului `~' sau `!~'"
-#: awkgram.y:808
+#: awkgram.y:812
msgid "regular expression on right of comparison"
msgstr "expresie regularã în dreapta comparaþiei"
-#: awkgram.y:875
+#: awkgram.y:879
msgid "non-redirected `getline' undefined inside END action"
msgstr "`getline' nedefinitã ºi neredirectatã înãuntrul unei acþiuni END"
-#: awkgram.y:902
+#: awkgram.y:906
msgid "call of `length' without parentheses is not portable"
msgstr "apelarea lui `legth' fãrã paranteze nu este portabilã"
-#: awkgram.y:905
+#: awkgram.y:909
msgid "call of `length' without parentheses is deprecated by POSIX"
msgstr "apelarea lui `length' fãrã paranteze nu mai este folositã în POSIX"
-#: awkgram.y:958
+#: awkgram.y:962
msgid "use of non-array as array"
msgstr ""
-#: awkgram.y:960
+#: awkgram.y:964
msgid "invalid subscript expression"
msgstr "expresie subscript invalidã"
-#: awkgram.y:1158
+#: awkgram.y:1171
#, fuzzy
msgid "unexpected newline or end of string"
msgstr "linie nouã neaºteptatã"
-#: awkgram.y:1254
+#: awkgram.y:1267
msgid "empty program text on command line"
msgstr "text program vid în linia de comandã"
-#: awkgram.y:1307
+#: awkgram.y:1320
#, c-format
msgid "can't open source file `%s' for reading (%s)"
msgstr "nu se poate deschide fiºierul sursã `%s' pentru citire (%s)"
-#: awkgram.y:1384
+#: awkgram.y:1397
#, c-format
msgid "can't read sourcefile `%s' (%s)"
msgstr "nu se poate citi fiºierul sursã `%s' (%s)"
-#: awkgram.y:1392
+#: awkgram.y:1405
#, c-format
msgid "source file `%s' is empty"
msgstr "fiºierul sursã `%s' este vid"
-#: awkgram.y:1590 awkgram.y:1700 awkgram.y:1718 awkgram.y:2068 awkgram.y:2153
+#: awkgram.y:1596 awkgram.y:1718 awkgram.y:1736 awkgram.y:2107 awkgram.y:2194
msgid "source file does not end in newline"
msgstr "fiºierul sursã nu se terminã în linie nouã"
-#: awkgram.y:1654
+#: awkgram.y:1658
msgid "unterminated regexp ends with `\\' at end of file"
msgstr "regexp-ul neterminat se terminã cu `\\'` la sfârºitul fiºierului"
-#: awkgram.y:1674
+#: awkgram.y:1682
+#, c-format
+msgid "%s: %d: tawk regex modifier `/.../%c' doesn't work in gawk"
+msgstr ""
+
+#: awkgram.y:1686
+#, c-format
+msgid "tawk regex modifier `/.../%c' doesn't work in gawk"
+msgstr ""
+
+#: awkgram.y:1693
msgid "unterminated regexp"
msgstr "regexp neterminat"
-#: awkgram.y:1677
+#: awkgram.y:1696
msgid "unterminated regexp at end of file"
msgstr "regexp neterminat la sfârºitul fiºierului"
-#: awkgram.y:1744
+#: awkgram.y:1762
msgid "use of `\\ #...' line continuation is not portable"
msgstr "folosirea continuãrii liniei `\\ #...' nu este portabilã"
-#: awkgram.y:1756
+#: awkgram.y:1774
msgid "backslash not last character on line"
msgstr "backslash nu este ultimul caracter din linie"
-#: awkgram.y:1801
+#: awkgram.y:1819
msgid "POSIX does not allow operator `**='"
msgstr "POSIX nu permite operatorul `**='"
-#: awkgram.y:1803
+#: awkgram.y:1821
msgid "old awk does not support operator `**='"
msgstr "vechiul awk nu suportã operatorul `**='"
-#: awkgram.y:1812
+#: awkgram.y:1830
msgid "POSIX does not allow operator `**'"
msgstr "POSIX nu permite operatorul `**'"
-#: awkgram.y:1814
+#: awkgram.y:1832
msgid "old awk does not support operator `**'"
msgstr "vechiul awk nu supoortã operatorul `**'"
-#: awkgram.y:1845
+#: awkgram.y:1863
msgid "operator `^=' is not supported in old awk"
msgstr "operatorul `^=' nu este suportat în vechiul awk"
-#: awkgram.y:1853
+#: awkgram.y:1871
msgid "operator `^' is not supported in old awk"
msgstr "operator `^' nu este suportat în vechiul awk"
-#: awkgram.y:1937 awkgram.y:1954
+#: awkgram.y:1955 awkgram.y:1970
msgid "unterminated string"
msgstr "ºir de caractere neterminat"
-#: awkgram.y:2114
+#: awkgram.y:2155
#, c-format
msgid "invalid char '%c' in expression"
msgstr "caracter invalid `%c' în expresie"
-#: awkgram.y:2162
+#: awkgram.y:2203
#, c-format
msgid "`%s' is a gawk extension"
msgstr "`%s' este extensie gawk"
-#: awkgram.y:2165
+#: awkgram.y:2206
#, c-format
msgid "`%s' is a Bell Labs extension"
msgstr "`%s' este extensie Bell Labs"
-#: awkgram.y:2168
+#: awkgram.y:2209
#, c-format
msgid "POSIX does not allow `%s'"
msgstr "POSIX nu permite `%s'"
-#: awkgram.y:2172
+#: awkgram.y:2213
#, c-format
msgid "`%s' is not supported in old awk"
msgstr "`%s' nu este suportat în vechiul awk"
-#: awkgram.y:2198
+#: awkgram.y:2239
msgid "`goto' considered harmful!\n"
msgstr "`goto' este considerat periculos!\n"
-#: awkgram.y:2260
+#: awkgram.y:2301
#, c-format
msgid "%d is invalid as number of arguments for %s"
msgstr "%d este invalid ca numãr de argumente pentru %s"
-#: awkgram.y:2279 awkgram.y:2282
+#: awkgram.y:2320 awkgram.y:2323
msgid "match: third argument is a gawk extension"
msgstr "match: al treilea argument este extensie gawk"
-#: awkgram.y:2295
+#: awkgram.y:2336
#, c-format
msgid "%s: string literal as last arg of substitute has no effect"
msgstr ""
"%s: ºirul de caractere literal ca ultim argument al înlocuitorului nu are "
"nici un efect"
-#: awkgram.y:2298
+#: awkgram.y:2339
#, fuzzy, c-format
msgid "%s third parameter is not a changeable object"
msgstr "al treilea parametru al sub nu este un obiect modificabil"
-#: awkgram.y:2325 awkgram.y:2328
+#: awkgram.y:2366 awkgram.y:2369
msgid "close: second argument is a gawk extension"
msgstr "close: al doilea argument este extensie gawk"
-#: awkgram.y:2338
+#: awkgram.y:2379
msgid "use of dcgettext(_\"...\") is incorrect: remove leading underscore"
msgstr ""
"folosirea lui dcgettext(_\"...\") este incorectã: eliminaþi liniuþa_jos de "
"la început"
-#: awkgram.y:2353
+#: awkgram.y:2394
#, fuzzy
msgid "use of dcngettext(_\"...\") is incorrect: remove leading underscore"
msgstr ""
"folosirea lui dcgettext(_\"...\") este incorectã: eliminaþi liniuþa_jos de "
"la început"
-#: awkgram.y:2424
+#: awkgram.y:2465
#, c-format
msgid "function `%s': parameter #%d, `%s', duplicates parameter #%d"
msgstr "funcþia `%s': parametrul #%d, `%s', parametrul duplicat #%d"
-#: awkgram.y:2457
+#: awkgram.y:2498
#, c-format
msgid "function `%s': parameter `%s' shadows global variable"
msgstr ""
"funcþia `%s': parametrul `%s' nu mai þine cont de(shadows) variabila globalã"
-#: awkgram.y:2569
+#: awkgram.y:2610
#, c-format
msgid "could not open `%s' for writing (%s)"
msgstr "nu s-a putut deschide `%s' pentru scriere (%s)"
-#: awkgram.y:2570 profile.c:93
+#: awkgram.y:2611 profile.c:93
msgid "sending profile to standard error"
msgstr "se trimite profilul la dipsozitivul de eroare standard"
-#: awkgram.y:2602
+#: awkgram.y:2643
#, c-format
msgid "%s: close failed (%s)"
msgstr "%s: închidere eºuatã (%s)"
-#: awkgram.y:2723
+#: awkgram.y:2764
msgid "shadow_funcs() called twice!"
msgstr "shadow_funcs() apelatã de douã ori!"
-#: awkgram.y:2750
+#: awkgram.y:2791
msgid "there were shadowed variables."
msgstr ""
-#: awkgram.y:2823
+#: awkgram.y:2864
#, c-format
msgid "function `%s': can't use function name as parameter name"
msgstr "funcþia `%s': nu se poate folosi numele funcþiei ca nume de parametru"
-#: awkgram.y:2833
+#: awkgram.y:2874
#, c-format
msgid "function name `%s' previously defined"
msgstr "numele funcþiei `%s' a mai fost definit înainte"
-#: awkgram.y:2984 awkgram.y:2990
+#: awkgram.y:3025 awkgram.y:3031
#, c-format
msgid "function `%s' called but never defined"
msgstr "funcþia `%s' este apelatã dar niciodatã definitã"
-#: awkgram.y:2993
+#: awkgram.y:3034
#, c-format
msgid "function `%s' defined but never called"
msgstr "funcþia `%s' este definitã dar niciodatã apelatã"
-#: awkgram.y:3020
+#: awkgram.y:3061
#, c-format
msgid "regexp constant for parameter #%d yields boolean value"
msgstr ""
"regexp constant pentru parametrul #%d solicitã(yields) valoare booleanã"
-#: awkgram.y:3033
+#: awkgram.y:3105
#, fuzzy, c-format
msgid ""
"function `%s' called with space between name and `(',\n"
@@ -382,199 +397,204 @@ msgstr ""
"funcþia `%s' apelatã cu un spaþiu între nume ºi `(',\n"
"%s"
-#: builtin.c:149
+#: builtin.c:145
#, c-format
msgid "%s to \"%s\" failed (%s)"
msgstr "%s cãtre \"%s\" eºuatã (%s)"
-#: builtin.c:150
+#: builtin.c:146
msgid "standard output"
msgstr "ieºire(output) standard"
-#: builtin.c:151
+#: builtin.c:147
msgid "reason unknown"
msgstr "motiv necunoscut"
-#: builtin.c:164
+#: builtin.c:160
msgid "exp: received non-numeric argument"
msgstr "exp: s-a primit argument nenumeric"
-#: builtin.c:170
+#: builtin.c:166
#, c-format
msgid "exp: argument %g is out of range"
msgstr "exp: argumentul %g este în afara domeniului"
-#: builtin.c:228
+#: builtin.c:224
#, c-format
msgid "fflush: cannot flush: pipe `%s' opened for reading, not writing"
msgstr ""
"fflush: nu s-a putut face flush: legãtura(pipe) `%s' a fost deschisã pentru "
"citire, nu scriere"
-#: builtin.c:231
+#: builtin.c:227
#, c-format
msgid "fflush: cannot flush: file `%s' opened for reading, not writing"
msgstr ""
"fflush: nu s-a putut face flush: fiºierul `%s' a fost deschis pentru citire, "
"nu scriere"
-#: builtin.c:243
+#: builtin.c:239
#, c-format
msgid "fflush: `%s' is not an open file, pipe or co-process"
msgstr "fflush: `%s' nu este fiºier deschis, legãturã(pipe) sau co-proces"
-#: builtin.c:338
+#: builtin.c:332
msgid "index: received non-string first argument"
msgstr "index: s-a primit un prim argument non-ºir de caractere"
-#: builtin.c:340
+#: builtin.c:334
msgid "index: received non-string second argument"
msgstr "index: s-a primit un al doilea argument non-ºir de caractere"
-#: builtin.c:454
+#: builtin.c:449
msgid "int: received non-numeric argument"
msgstr "int: s-a primit argument nenumeric"
-#: builtin.c:471
+#: builtin.c:472
+#, fuzzy
+msgid "`length(array)' is a gawk extension"
+msgstr "`delete array' este extensie gawk"
+
+#: builtin.c:481
msgid "length: received non-string argument"
msgstr "legth: s-a primit argument non-string"
-#: builtin.c:487
+#: builtin.c:506
msgid "log: received non-numeric argument"
msgstr "log: s-a primit argument nenumeric"
-#: builtin.c:490
+#: builtin.c:509
#, c-format
msgid "log: received negative argument %g"
msgstr "log: s-a primit argument %g negativ"
-#: builtin.c:654 builtin.c:657
+#: builtin.c:673 builtin.c:676
msgid "must use `count$' on all formats or none"
msgstr ""
-#: builtin.c:759
+#: builtin.c:778
msgid "`$' is not permitted in awk formats"
msgstr "`$' nu este permis în formatele awk"
-#: builtin.c:765
+#: builtin.c:784
msgid "arg count with `$' must be > 0"
msgstr "numãrul de arg cu `%' trebuie sã fie > 0"
-#: builtin.c:767
+#: builtin.c:786
#, fuzzy, c-format
msgid "arg count %ld greater than total number of supplied arguments"
msgstr ""
"numãrul de arg %d este mai mare decât numãrul total de argumente furnizate"
-#: builtin.c:769
+#: builtin.c:788
msgid "`$' not permitted after period in format"
msgstr "`$' nu este permis în format dupã punct"
-#: builtin.c:782
+#: builtin.c:801
msgid "no `$' supplied for positional field width or precision"
msgstr ""
"nu s-a furnizat nici un `$' pentru câmpul poziþional lungime sau precisie"
-#: builtin.c:848
+#: builtin.c:867
msgid "`l' is meaningless in awk formats; ignored"
msgstr "`l' nu are sens în formatele awk; ignorat"
-#: builtin.c:852
+#: builtin.c:871
msgid "`l' is not permitted in POSIX awk formats"
msgstr "`l' nu este permis în formatele awk POSIX"
-#: builtin.c:863
+#: builtin.c:882
msgid "`L' is meaningless in awk formats; ignored"
msgstr "`L' nu are sens în formatele awk; ignorat"
-#: builtin.c:867
+#: builtin.c:886
msgid "`L' is not permitted in POSIX awk formats"
msgstr "`L' nu este permis în formatele POSIX awk"
-#: builtin.c:878
+#: builtin.c:897
msgid "`h' is meaningless in awk formats; ignored"
msgstr "`h' nu are sens în formatele awl; ignorat"
-#: builtin.c:882
+#: builtin.c:901
msgid "`h' is not permitted in POSIX awk formats"
msgstr "`h' nu este permis în formatele POSIX awk"
-#: builtin.c:1111
+#: builtin.c:1132
#, c-format
msgid "[s]printf: value %g is out of range for `%%%c' format"
msgstr ""
-#: builtin.c:1171
+#: builtin.c:1198
msgid "not enough arguments to satisfy format string"
msgstr ""
"nu existã destule argumente pentru satisfacerea formatului ºirului de "
"caractere"
-#: builtin.c:1173
+#: builtin.c:1200
msgid "^ ran out for this one"
msgstr "^ insuficient pentru aceasta"
-#: builtin.c:1178
+#: builtin.c:1205
msgid "[s]printf: format specifier does not have control letter"
msgstr "[s]printf: specificatorul de format nu are literã de control"
-#: builtin.c:1181
+#: builtin.c:1208
msgid "too many arguments supplied for format string"
msgstr "prea multe argumente furnizate pentru formatul ºirului de caractere"
-#: builtin.c:1247 builtin.c:1250
+#: builtin.c:1274 builtin.c:1277
msgid "printf: no arguments"
msgstr "printf: nici un argument"
-#: builtin.c:1274
+#: builtin.c:1301
msgid "sqrt: received non-numeric argument"
msgstr "sqrt: s-a primit argument nenumeric"
-#: builtin.c:1278
+#: builtin.c:1305
#, c-format
msgid "sqrt: called with negative argument %g"
msgstr "sqrt: apelat cu argumentul negativ %g"
-#: builtin.c:1301
+#: builtin.c:1329
#, c-format
msgid "substr: start index %g is invalid, using 1"
msgstr "substr: indexul de start %g este invalid, se foloseºte -1"
-#: builtin.c:1306
+#: builtin.c:1334
#, c-format
msgid "substr: non-integer start index %g will be truncated"
msgstr "substr: indexul de start ne-întreg(integer) %g va fi trunchiat"
-#: builtin.c:1325
+#: builtin.c:1353
#, fuzzy, c-format
msgid "substr: length %g is not >= 1"
msgstr "substr: lungimea %g este <= 0"
-#: builtin.c:1327
+#: builtin.c:1355
#, fuzzy, c-format
msgid "substr: length %g is not >= 0"
msgstr "substr: lungimea %g este <= 0"
-#: builtin.c:1334
+#: builtin.c:1362
#, c-format
msgid "substr: non-integer length %g will be truncated"
msgstr "substr lungimea ne-întregului(integer) %g va fi trunchiatã"
-#: builtin.c:1339
+#: builtin.c:1367
#, c-format
msgid "substr: length %g too big for string indexing, truncating to %g"
msgstr ""
-#: builtin.c:1351
+#: builtin.c:1379
msgid "substr: source string is zero length"
msgstr "substr: ºirul de caractere sursã are lungime zero"
-#: builtin.c:1357
+#: builtin.c:1395
#, fuzzy, c-format
msgid "substr: start index %g is past end of string"
msgstr "substr: indexul de start %d este fostul sfârºit de ºir de caractere"
-#: builtin.c:1365
+#: builtin.c:1403
#, fuzzy, c-format
msgid ""
"substr: length %g at start index %g exceeds length of first argument (%lu)"
@@ -582,195 +602,195 @@ msgstr ""
"substr: lungimea %d la indexul de start %d depãºeºte lungimea primului "
"argument (%d)"
-#: builtin.c:1400
+#: builtin.c:1478
#, fuzzy
msgid "strftime: received non-string first argument"
msgstr "strftime: s-a primit primul argument non ºir de caractere"
-#: builtin.c:1406
+#: builtin.c:1484
msgid "strftime: received empty format string"
msgstr "strftime: s-a primit ºir de caractere în format vid"
-#: builtin.c:1415
+#: builtin.c:1493
#, fuzzy
msgid "strftime: received non-numeric second argument"
msgstr "strftime: s-a primit un al doilea argument nenumeric"
-#: builtin.c:1478
+#: builtin.c:1556
msgid "mktime: received non-string argument"
msgstr "mktime: s-a primit argument non ºir de caractere"
-#: builtin.c:1523
+#: builtin.c:1601
#, fuzzy
msgid "system: received non-string argument"
msgstr "system: s-a primit argument non ºir de caractere"
-#: builtin.c:1644 eval.c:2019
+#: builtin.c:1722 eval.c:2039
#, fuzzy, c-format
msgid "reference to uninitialized field `$%d'"
msgstr "referinþã la variabila neiniþializatã `%s'"
-#: builtin.c:1671
+#: builtin.c:1827
#, fuzzy
msgid "tolower: received non-string argument"
msgstr "tolower: s-a primit argument non-ºir de caractere"
-#: builtin.c:1720
+#: builtin.c:1857
#, fuzzy
msgid "toupper: received non-string argument"
msgstr "toupper: s-a primit argument non-ºir de caractere"
-#: builtin.c:1765
+#: builtin.c:1890
msgid "atan2: received non-numeric first argument"
msgstr "atan2: s-a primit un prim argument nenumeric"
-#: builtin.c:1767
+#: builtin.c:1892
msgid "atan2: received non-numeric second argument"
msgstr "atan2: s-a primit un al doilea argument nenumeric"
-#: builtin.c:1786
+#: builtin.c:1911
msgid "sin: received non-numeric argument"
msgstr "sin: s-a primit un argument nenumeric"
-#: builtin.c:1802
+#: builtin.c:1927
msgid "cos: received non-numeric argument"
msgstr "cos: s-a primit un argument nenumeric"
-#: builtin.c:1852
+#: builtin.c:1977
msgid "srand: received non-numeric argument"
msgstr "srand: s-a primit un argument nenumeric"
-#: builtin.c:1887
+#: builtin.c:2012
msgid "match: third argument is not an array"
msgstr "match: al treilea argument nu este un array"
-#: builtin.c:2414
+#: builtin.c:2555
#, fuzzy
msgid "gensub: third argument of 0 treated as 1"
msgstr "gensub: al 3-lea argument care este 0 va fi considerat 1"
-#: builtin.c:2572
+#: builtin.c:2715
msgid "lshift: received non-numeric first argument"
msgstr "lshift: s-a primit un prim argument nenumeric"
-#: builtin.c:2574
+#: builtin.c:2717
#, fuzzy
msgid "lshift: received non-numeric second argument"
msgstr "strftime: s-a primit un al doilea argument nenumeric"
-#: builtin.c:2580
+#: builtin.c:2723
#, c-format
msgid "lshift(%lf, %lf): negative values will give strange results"
msgstr "lshift(%lf, %lf): valorile negative vor furniza rezultate ciudate"
-#: builtin.c:2582
+#: builtin.c:2725
#, c-format
msgid "lshift(%lf, %lf): fractional values will be truncated"
msgstr "lshift(%lf, %lf): valorile fracþionale vor fi trunchiate"
-#: builtin.c:2584
+#: builtin.c:2727
#, c-format
msgid "lshift(%lf, %lf): too large shift value will give strange results"
msgstr ""
"lshift(%lf, %lf): valorile schimbate prea mult vor da rezultate ciudate"
-#: builtin.c:2610
+#: builtin.c:2753
msgid "rshift: received non-numeric first argument"
msgstr "rshift: s-a primit un prim argument nenumeric"
-#: builtin.c:2612
+#: builtin.c:2755
#, fuzzy
msgid "rshift: received non-numeric second argument"
msgstr "strftime: s-a primit un al doilea argument nenumeric"
-#: builtin.c:2618
+#: builtin.c:2761
#, c-format
msgid "rshift(%lf, %lf): negative values will give strange results"
msgstr "rshift(%lf, %lf): valorile negative vor da rezultate ciudate"
-#: builtin.c:2620
+#: builtin.c:2763
#, c-format
msgid "rshift(%lf, %lf): fractional values will be truncated"
msgstr "rshift(%lf, %lf): valorile fracþionale vor fi trunchiate"
-#: builtin.c:2622
+#: builtin.c:2765
#, c-format
msgid "rshift(%lf, %lf): too large shift value will give strange results"
msgstr ""
"rshift(%lf, %lf): valorile schimbate prea mult vor da rezultate ciudate"
-#: builtin.c:2648
+#: builtin.c:2791
msgid "and: received non-numeric first argument"
msgstr "and: s-a primit un prim argument nenumeric"
-#: builtin.c:2650
+#: builtin.c:2793
#, fuzzy
msgid "and: received non-numeric second argument"
msgstr "atan2: s-a primit un al doilea argument nenumeric"
-#: builtin.c:2656
+#: builtin.c:2799
#, c-format
msgid "and(%lf, %lf): negative values will give strange results"
msgstr "and(%lf, %lf): valorile negative vor da rezultate ciudate"
-#: builtin.c:2658
+#: builtin.c:2801
#, c-format
msgid "and(%lf, %lf): fractional values will be truncated"
msgstr "and(%lf, %lf): valorile fracþionale vor fi trunchiate"
-#: builtin.c:2684
+#: builtin.c:2827
msgid "or: received non-numeric first argument"
msgstr "or: s-a primit un prim argument nenumeric"
-#: builtin.c:2686
+#: builtin.c:2829
#, fuzzy
msgid "or: received non-numeric second argument"
msgstr "atan2: s-a primit un al doilea argument nenumeric"
-#: builtin.c:2692
+#: builtin.c:2835
#, c-format
msgid "or(%lf, %lf): negative values will give strange results"
msgstr "or(%lf, %lf): valorile negative for da rezultate ciudate"
-#: builtin.c:2694
+#: builtin.c:2837
#, c-format
msgid "or(%lf, %lf): fractional values will be truncated"
msgstr "or(%lf, %lf): valorile fracþionale vor fi trunchiate"
-#: builtin.c:2720
+#: builtin.c:2863
msgid "xor: received non-numeric first argument"
msgstr "xor: s-a primit un prim argument nenumeric"
-#: builtin.c:2722
+#: builtin.c:2865
#, fuzzy
msgid "xor: received non-numeric second argument"
msgstr "atan2: s-a primit un al doilea argument nenumeric"
-#: builtin.c:2728
+#: builtin.c:2871
#, c-format
msgid "xor(%lf, %lf): negative values will give strange results"
msgstr "xor(%lf, %lf): valorile negative vor da rezultate ciudate"
-#: builtin.c:2730
+#: builtin.c:2873
#, c-format
msgid "xor(%lf, %lf): fractional values will be truncated"
msgstr "xor(%lf, %lf): valorile fracþionale vor fi trunchiate"
-#: builtin.c:2754
+#: builtin.c:2897
msgid "compl: received non-numeric argument"
msgstr "compl: s-a primit argument nenumeric"
-#: builtin.c:2760
+#: builtin.c:2903
#, c-format
msgid "compl(%lf): negative value will give strange results"
msgstr "compl(%lf): valorile negative vor da rezultate ciudate"
-#: builtin.c:2762
+#: builtin.c:2905
#, c-format
msgid "compl(%lf): fractional value will be truncated"
msgstr "compl(%lf): valorile fracþionale vor fi trunchiate"
-#: builtin.c:2935
+#: builtin.c:3078
#, c-format
msgid "dcgettext: `%s' is not a valid locale category"
msgstr "dcgettext: `%s' nu este o categorie localã validã"
@@ -780,74 +800,74 @@ msgstr "dcgettext: `%s' nu este o categorie localã validã"
msgid "unknown nodetype %d"
msgstr "tip nod %d necunoscut"
-#: eval.c:350
+#: eval.c:353
msgid "buffer overflow in genflags2str"
msgstr "depãºire(overflow) de buffer în genflags2str"
-#: eval.c:382 eval.c:388 profile.c:837
+#: eval.c:385 eval.c:391 profile.c:838
#, c-format
msgid "attempt to use array `%s' in a scalar context"
msgstr "încercare de a utiliza array-ul `%s' într-un context scalar"
-#: eval.c:730
+#: eval.c:733
#, fuzzy, c-format
msgid "for loop: array `%s' changed size from %ld to %ld during loop execution"
msgstr ""
"for loop: array-ul `%s' ºi-a schimbat mãrimea din %d în %d în timpul "
"execuþiei buclei"
-#: eval.c:751
+#: eval.c:754
msgid "`break' outside a loop is not portable"
msgstr "`break' în afara buclei nu este portabil"
-#: eval.c:755
+#: eval.c:758
msgid "`break' outside a loop is not allowed"
msgstr "`break' în afara buclei nu este permis"
-#: eval.c:772
+#: eval.c:775
msgid "`continue' outside a loop is not portable"
msgstr "`continue' în afara buclei nu este portabil"
-#: eval.c:776
+#: eval.c:779
msgid "`continue' outside a loop is not allowed"
msgstr "`continue' în afara buclei nu este permis"
-#: eval.c:810
+#: eval.c:813
msgid "`next' cannot be called from a BEGIN rule"
msgstr "`next' nu poate fi apelat dintr-o regulã BEGIN"
-#: eval.c:812
+#: eval.c:815
msgid "`next' cannot be called from an END rule"
msgstr "`next' nu poate fi apelat dintr-o regulã END"
-#: eval.c:821
+#: eval.c:824
msgid "`nextfile' cannot be called from a BEGIN rule"
msgstr "`nextfile' nu poate fi apelat dintr-o regulã BEGIN"
-#: eval.c:823
+#: eval.c:826
msgid "`nextfile' cannot be called from an END rule"
msgstr "`nextfile' nu poate fi apelat dintr-o regulã END"
-#: eval.c:872
+#: eval.c:875
msgid "statement has no effect"
msgstr "declaraþia nu are nici un efect"
-#: eval.c:915 eval.c:1873
+#: eval.c:952 eval.c:1893
#, c-format
msgid "can't use function name `%s' as variable or array"
msgstr "nu se poate folosi numele funcþiei `%s' ca variabilã sau array"
-#: eval.c:922 eval.c:928
+#: eval.c:959 eval.c:965
#, c-format
msgid "reference to uninitialized argument `%s'"
msgstr "referinþã la argumentul neiniþializat `%s'"
-#: eval.c:937 eval.c:1882
+#: eval.c:974 eval.c:1902
#, c-format
msgid "reference to uninitialized variable `%s'"
msgstr "referinþã la variabila neiniþializatã `%s'"
-#: eval.c:1083
+#: eval.c:1120
msgid ""
"concatenation: side effects in one expression have changed the length of "
"another!"
@@ -855,50 +875,45 @@ msgstr ""
"concatenation: efectele secundare dintr-o expresie au schimbat lungimea "
"alteia!"
-#: eval.c:1162
+#: eval.c:1200
msgid "assignment used in conditional context"
msgstr "atribuire folositã în context condiþional"
-#: eval.c:1252
+#: eval.c:1278
msgid "division by zero attempted"
msgstr "s-a încercat împãrþire la zero"
-#: eval.c:1267
+#: eval.c:1293
#, c-format
msgid "division by zero attempted in `%%'"
msgstr "s-a încercat împãrþire la zero în `%%'"
-#: eval.c:1282 profile.c:713
+#: eval.c:1308 profile.c:714
#, c-format
msgid "illegal type (%s) in tree_eval"
msgstr "tip ilegal (%s) în tree_eval"
-#: eval.c:1459
+#: eval.c:1471
msgid "division by zero attempted in `/='"
msgstr "s-a încercat împãrþire la zero în `/='"
-#: eval.c:1477
+#: eval.c:1493
#, c-format
msgid "division by zero attempted in `%%='"
msgstr "s-a încercat împãrþire la zero în `%%='"
-#: eval.c:1738
+#: eval.c:1758
#, c-format
msgid "function `%s' called with more arguments than declared"
msgstr ""
"funcþia `%s' a fost apelatã cu mai multe argumente decât cele declarate"
-#: eval.c:1782
+#: eval.c:1802
#, c-format
msgid "function `%s' not defined"
msgstr "funcþia `%s' nu este definitã"
-#: eval.c:1788
-#, c-format
-msgid "function %s called\n"
-msgstr "funcþia %s a fost apelatã\n"
-
-#: eval.c:1845
+#: eval.c:1865
#, c-format
msgid ""
"\n"
@@ -909,42 +924,42 @@ msgstr ""
"\t# Stiva de Apelare a Funcþiei:\n"
"\n"
-#: eval.c:1848
+#: eval.c:1868
#, c-format
msgid "\t# -- main --\n"
msgstr "\t# -- principal(main) --\n"
-#: eval.c:2003
+#: eval.c:2023
msgid "attempt to field reference from non-numeric value"
msgstr "încercare de referinþã la câmp din valoare nenumericã"
-#: eval.c:2005
+#: eval.c:2025
msgid "attempt to reference from null string"
msgstr "încercare de referinþã din ºir de caractere vid(null)"
-#: eval.c:2011
+#: eval.c:2031
#, c-format
msgid "attempt to access field %d"
msgstr "încercare de accesare a câmpului %d"
-#: eval.c:2032 eval.c:2039 profile.c:934
+#: eval.c:2052 eval.c:2059 profile.c:935
msgid "assignment is not allowed to result of builtin function"
msgstr "atribuirea nu este permisã rezultatului funcþiei interne"
-#: eval.c:2103
+#: eval.c:2123
msgid "`IGNORECASE' is a gawk extension"
msgstr "`IGNORECASE' este extensie gawk"
-#: eval.c:2133
+#: eval.c:2153
msgid "`BINMODE' is a gawk extension"
msgstr "`BINMODE' este extensie gawk"
-#: eval.c:2255
+#: eval.c:2275
#, c-format
msgid "bad `%sFMT' specification `%s'"
msgstr "`%sFMT' specificaþie `%s' invalidã"
-#: eval.c:2333
+#: eval.c:2353
msgid "turning off `--lint' due to assignment to `LINT'"
msgstr "se dezactiveazã `--lint' din cauza atribuirii lui `LINT'"
@@ -992,9 +1007,9 @@ msgid "extension: function name `%s' previously defined"
msgstr "numele funcþiei `%s' a mai fost definit înainte"
#: ext.c:201
-#, c-format
-msgid "function `%s' defined to take no more than `%d' argument(s)"
-msgstr ""
+#, fuzzy, c-format
+msgid "function `%s' defined to take no more than %d argument(s)"
+msgstr "funcþia `%s' este definitã dar niciodatã apelatã"
#: ext.c:204
#, fuzzy, c-format
@@ -1015,555 +1030,560 @@ msgstr ""
msgid "Operation Not Supported"
msgstr "Operaþie NeSuportatã"
-#: field.c:315
+#: field.c:326
msgid "NF set to negative value"
msgstr "NF setat la valoare negativã"
-#: field.c:808
+#: field.c:819
msgid "split: second argument is not an array"
msgstr "split: al doilea argument nu este un array"
-#: field.c:842
+#: field.c:853
msgid "split: null string for third arg is a gawk extension"
msgstr "split: ºirul nul pentru al treilea arg este o extensie gawk"
-#: field.c:894
+#: field.c:905
msgid "`FIELDWIDTHS' is a gawk extension"
msgstr "`FIELDWIDTHS' este extensie gawk"
-#: field.c:921
+#: field.c:935 field.c:946
#, c-format
-msgid "field %d in FIELDWIDTHS, must be > 0"
-msgstr "câmpul %d din FIELDWIDTHS trebuie sã fie > 0"
+msgid "invalid FIELDWIDTHS value, near `%s'"
+msgstr ""
-#: field.c:994
+#: field.c:1027
msgid "null string for `FS' is a gawk extension"
msgstr "ºirul de caractere null pentru `FS' este extensie gawk"
-#: getopt.c:692 getopt.c:711
+#: getopt.c:571 getopt.c:590
#, c-format
msgid "%s: option `%s' is ambiguous\n"
msgstr "%s: opþiunea `%s' este ambiguã\n"
-#: getopt.c:744 getopt.c:748
+#: getopt.c:623 getopt.c:627
#, c-format
msgid "%s: option `--%s' doesn't allow an argument\n"
msgstr "%s: opþiunea `--%s' nu permite parametri\n"
-#: getopt.c:757 getopt.c:762
+#: getopt.c:636 getopt.c:641
#, c-format
msgid "%s: option `%c%s' doesn't allow an argument\n"
msgstr "%s: opþiunea `%c%s' nu permite parametri\n"
-#: getopt.c:807 getopt.c:829 getopt.c:1159 getopt.c:1181
+#: getopt.c:687 getopt.c:709 getopt.c:1040 getopt.c:1062
#, c-format
msgid "%s: option `%s' requires an argument\n"
msgstr "%s: opþiunea `%s' necesitã un parametru\n"
-#: getopt.c:867 getopt.c:870
+#: getopt.c:747 getopt.c:750
#, c-format
msgid "%s: unrecognized option `--%s'\n"
msgstr "%s: opþiune necunoscutã `--%s'\n"
-#: getopt.c:878 getopt.c:881
+#: getopt.c:758 getopt.c:761
#, c-format
msgid "%s: unrecognized option `%c%s'\n"
msgstr "%s: opþiune necunoscutã `%c%s'\n"
-#: getopt.c:936 getopt.c:939
+#: getopt.c:816 getopt.c:819
#, c-format
msgid "%s: illegal option -- %c\n"
msgstr "%s: opþiune ilegalã -- %c\n"
-#: getopt.c:945 getopt.c:948
+#: getopt.c:825 getopt.c:828
#, c-format
msgid "%s: invalid option -- %c\n"
msgstr "%s: opþiune invalidã -- %c\n"
-#: getopt.c:1003 getopt.c:1022 getopt.c:1234 getopt.c:1255 main.c:433
+#: getopt.c:883 getopt.c:902 getopt.c:1115 getopt.c:1136 main.c:448
#, c-format
msgid "%s: option requires an argument -- %c\n"
msgstr "%s: opþiunea necesitã un parametru -- %c\n"
-#: getopt.c:1074 getopt.c:1093
+#: getopt.c:955 getopt.c:974
#, c-format
msgid "%s: option `-W %s' is ambiguous\n"
msgstr "%s: opþiunea `-W %s' este ambiguã\n"
-#: getopt.c:1117 getopt.c:1138
+#: getopt.c:998 getopt.c:1019
#, c-format
msgid "%s: option `-W %s' doesn't allow an argument\n"
msgstr "%s: opþiunea `-W %s' nu permite parametri\n"
-#: io.c:308
+#: io.c:307
#, c-format
msgid "cannot open file `%s' for reading (%s)"
msgstr "nu s-a putu deschide `%s' pentru citire (%s)"
-#: io.c:395
+#: io.c:398
#, c-format
msgid "close of fd %d (`%s') failed (%s)"
msgstr "închiderea lui fd %d (`%s') eºuatã (%s)"
-#: io.c:533
+#: io.c:536
#, c-format
msgid "invalid tree type %s in redirect()"
msgstr "tip arbore(tree) invalid %s în redirect()"
-#: io.c:539
+#: io.c:542
#, c-format
msgid "expression in `%s' redirection only has numeric value"
msgstr "expresia din redirectarea `%s' are doar valoare numericã"
-#: io.c:545
+#: io.c:548
#, c-format
msgid "expression for `%s' redirection has null string value"
msgstr "expresia din redirectarea `%s' are valoar de ºir null"
-#: io.c:550
+#: io.c:553
#, c-format
msgid "filename `%s' for `%s' redirection may be result of logical expression"
msgstr ""
"numele de fiºier `%s' pentru redirectarea `%s' poate fi rezultatul unei "
"expresii logice"
-#: io.c:588
+#: io.c:591
#, c-format
msgid "unnecessary mixing of `>' and `>>' for file `%.*s'"
msgstr "amestecare nenecesarã a `>' ºi `>>' pentru fiºierul `%.*s'"
-#: io.c:640
+#: io.c:643
#, c-format
msgid "can't open pipe `%s' for output (%s)"
msgstr "nu se poate deschide legãtura(pipe) `%s' pentru output (%s)"
-#: io.c:649
+#: io.c:652
#, c-format
msgid "can't open pipe `%s' for input (%s)"
msgstr "nu se poate deschide legãtura(pipe) `%s' pentru input (%s)"
-#: io.c:662
+#: io.c:665
#, c-format
msgid "can't open two way socket `%s' for input/output (%s)"
msgstr ""
"nu se poate deschide socketul bidirecþional `%s' pentru input/output (%s)"
-#: io.c:666
+#: io.c:669
#, c-format
msgid "can't open two way pipe `%s' for input/output (%s)"
msgstr ""
"nu se poate deschide legãtura(pipe) bidirecþionalã `%s' pentru input/output "
"(%s)"
-#: io.c:742
+#: io.c:745
#, c-format
msgid "can't redirect from `%s' (%s)"
msgstr "nu se poate redirecta din `%s' (%s)"
-#: io.c:745
+#: io.c:748
#, c-format
msgid "can't redirect to `%s' (%s)"
msgstr "nu se poate redirecta cãtre `%s' (%s)"
-#: io.c:784
+#: io.c:787
msgid ""
"reached system limit for open files: starting to multiplex file descriptors"
msgstr ""
"s-a atins limita sistemului pentru fiºiere deschise: se începe muliplexarea "
"desciptorilor de fiºier"
-#: io.c:800
+#: io.c:803
#, c-format
msgid "close of `%s' failed (%s)."
msgstr "închiderea `%s' eºuatã (%s)."
-#: io.c:808
+#: io.c:811
msgid "too many pipes or input files open"
msgstr "prea multe legãturi(pipe) sau fiºiere de intrare(input) deschise"
-#: io.c:831
+#: io.c:834
msgid "close: second argument must be `to' or `from'"
msgstr "close: al doilea argument trebuie sã fie `to' sau `from'"
-#: io.c:845
+#: io.c:848
#, c-format
msgid "close: `%.*s' is not an open file, pipe or co-process"
msgstr ""
"close: `%.*s' nu este un fiºier deschis, o legãturã(pipe) sau un coproces"
-#: io.c:849
+#: io.c:852
msgid "close of redirection that was never opened"
msgstr "închiderea unei redirectãri care n-a fost deschisã niciodatã"
-#: io.c:945
+#: io.c:948
#, c-format
msgid "close: redirection `%s' not opened with `|&', second argument ignored"
msgstr ""
"close: redirectarea `%s' nu a fost deschisã cu `|&', al doilea argument "
"ignorat"
-#: io.c:960
+#: io.c:964
#, c-format
msgid "failure status (%d) on pipe close of `%s' (%s)"
msgstr "stare de avarie (%d) în legãtura(pipe) închisã în `%s' (%s)"
-#: io.c:963
+#: io.c:967
#, c-format
msgid "failure status (%d) on file close of `%s' (%s)"
msgstr "stare de avarie (%d) în fiºierul închis în `%s' (%s)"
-#: io.c:983
+#: io.c:987
#, c-format
msgid "no explicit close of socket `%s' provided"
msgstr "nu s-a furnizat închiderea explicitã a socketului `%s'"
-#: io.c:986
+#: io.c:990
#, c-format
msgid "no explicit close of co-process `%s' provided"
msgstr "nu s-a furnizat închiderea explicitã a coprocesului `%s' "
-#: io.c:989
+#: io.c:993
#, c-format
msgid "no explicit close of pipe `%s' provided"
msgstr "nu s-a furnizat închiderea explicitã a legãturii(pipe) `%s'"
-#: io.c:992
+#: io.c:996
#, c-format
msgid "no explicit close of file `%s' provided"
msgstr "nu s-a furnizat închiderea explicitã a fiºierului `%s'"
-#: io.c:1021 io.c:1075
+#: io.c:1025 io.c:1080 main.c:718 main.c:756
#, c-format
msgid "error writing standard output (%s)"
msgstr "eroare în scrierea la ieºirea(output) standard (%s)"
-#: io.c:1025 io.c:1079
+#: io.c:1029 io.c:1085
#, c-format
msgid "error writing standard error (%s)"
msgstr "eroare în scrierea la dispozitivul standard de eroare (%s)"
-#: io.c:1033
+#: io.c:1037
#, c-format
msgid "pipe flush of `%s' failed (%s)."
msgstr "flush-ul legãturii(pipe) `%s' eºuat (%s)."
-#: io.c:1036
+#: io.c:1040
#, c-format
msgid "co-process flush of pipe to `%s' failed (%s)."
msgstr "flush-ul legãturii(pipe) coprocesului la `%s' eºuat (%s)."
-#: io.c:1039
+#: io.c:1043
#, c-format
msgid "file flush of `%s' failed (%s)."
msgstr "flush-ul de fiºier al `%s' eºuat (%s)."
-#: io.c:1198
+#: io.c:1205
msgid "/inet/raw client not ready yet, sorry"
msgstr "clientul /inet/raw nu este pregãtit încã, scuze"
-#: io.c:1200 io.c:1237
+#: io.c:1207 io.c:1244
msgid "only root may use `/inet/raw'."
msgstr "doar root-ul poate folosi `/inet/raw'."
-#: io.c:1235
+#: io.c:1242
msgid "/inet/raw server not ready yet, sorry"
msgstr "serverul /inet/raw nu este pregãtit încã, scuze"
-#: io.c:1325
+#: io.c:1332
#, c-format
msgid "no (known) protocol supplied in special filename `%s'"
msgstr "nici un protocol (cunoscut) furnizat în numele de fiºier special `%s'"
-#: io.c:1343
+#: io.c:1350
#, c-format
msgid "special file name `%s' is incomplete"
msgstr "numele special de fiºier `%s' nu este complet"
-#: io.c:1355
+#: io.c:1362
#, c-format
msgid "local port invalid in `%s'"
msgstr "port local invalid în `%s'"
-#: io.c:1367
+#: io.c:1374
msgid "must supply a remote hostname to `/inet'"
msgstr "trebuie furnizat un nume de host remote pentru `/inet'"
-#: io.c:1382
+#: io.c:1389
msgid "must supply a remote port to `/inet'"
msgstr "trebuie furnizat un port remote pentru `/inet'"
-#: io.c:1388
+#: io.c:1395
#, c-format
msgid "remote port invalid in `%s'"
msgstr "port remote invalid în `%s'"
-#: io.c:1398
+#: io.c:1405
msgid "TCP/IP communications are not supported"
msgstr "Comunicaþiile TCP/IP nu sunt suportate"
-#: io.c:1407 io.c:1588
+#: io.c:1414 io.c:1595
#, c-format
msgid "file `%s' is a directory"
msgstr "fiºierul `%s' este director"
-#: io.c:1477
+#: io.c:1484
#, c-format
msgid "use `PROCINFO[\"%s\"]' instead of `%s'"
msgstr "folosiþi `PROCINFO[\"%s\"]' în loc de `%s'"
-#: io.c:1509
+#: io.c:1516
msgid "use `PROCINFO[...]' instead of `/dev/user'"
msgstr "folosiþi `PROCINFO[...]' în loc de `/dev/user'"
-#: io.c:1574 io.c:1748
+#: io.c:1581 io.c:1763
#, c-format
msgid "could not open `%s', mode `%s'"
msgstr "nu s-a putut deschide `%s', modul `%s'"
-#: io.c:1799
+#: io.c:1814
#, fuzzy, c-format
msgid "close of master pty failed (%s)"
msgstr "închiderea legãturii(pipe) a eºuat (%s)"
-#: io.c:1801 io.c:1953 io.c:2105
+#: io.c:1816 io.c:1968 io.c:2119
#, c-format
msgid "close of stdout in child failed (%s)"
msgstr "închiderea stdout în copil(child) a eºuat (%s)"
-#: io.c:1804
+#: io.c:1819
#, fuzzy, c-format
msgid "moving slave pty to stdout in child failed (dup: %s)"
msgstr "mutarea legãturii(pipe) la stdout în copil(child) a eºuat (dup: %s)"
-#: io.c:1806 io.c:1958
+#: io.c:1821 io.c:1973
#, c-format
msgid "close of stdin in child failed (%s)"
msgstr "închiderea stdin în copil(child) a eºuat (%s)"
-#: io.c:1809
+#: io.c:1824
#, fuzzy, c-format
msgid "moving slave pty to stdin in child failed (dup: %s)"
msgstr "mutarea legãturii(pipe) la stdin în copil(child) a eºuat (dup: %s)"
-#: io.c:1811 io.c:1830
+#: io.c:1826 io.c:1845
#, fuzzy, c-format
msgid "close of slave pty failed (%s)"
msgstr "închiderea legãturii(pipe) a eºuat (%s)"
-#: io.c:1904 io.c:1956 io.c:2086 io.c:2108
+#: io.c:1919 io.c:1971 io.c:2100 io.c:2122
#, c-format
msgid "moving pipe to stdout in child failed (dup: %s)"
msgstr "mutarea legãturii(pipe) la stdout în copil(child) a eºuat (dup: %s)"
-#: io.c:1908 io.c:1961
+#: io.c:1923 io.c:1976
#, c-format
msgid "moving pipe to stdin in child failed (dup: %s)"
msgstr "mutarea legãturii(pipe) la stdin în copil(child) a eºuat (dup: %s)"
-#: io.c:1925 io.c:2099
+#: io.c:1940 io.c:2113
msgid "restoring stdout in parent process failed\n"
msgstr "refacerea stdout în procesul pãrinte a eºuat\n"
-#: io.c:1930
+#: io.c:1945
msgid "restoring stdin in parent process failed\n"
msgstr "refacerea stdin în procesul pãrinte a eºuat\n"
-#: io.c:1964 io.c:2110 io.c:2121
+#: io.c:1979 io.c:2124 io.c:2135
#, c-format
msgid "close of pipe failed (%s)"
msgstr "închiderea legãturii(pipe) a eºuat (%s)"
-#: io.c:2009
+#: io.c:2024
msgid "`|&' not supported"
msgstr "`|&' nesuportat"
-#: io.c:2076
+#: io.c:2090
#, c-format
msgid "cannot open pipe `%s' (%s)"
msgstr "nu s-a putut deschide legãtura(pipe) `%s' (%s)"
-#: io.c:2117
+#: io.c:2131
#, c-format
msgid "cannot create child process for `%s' (fork: %s)"
msgstr "nu s-a putu crea proces copil(child) pentru `%s' (fork: %s)"
-#: io.c:2460
+#: io.c:2506
#, c-format
msgid "data file `%s' is empty"
msgstr "fiºierul de date `%s' este vid"
-#: io.c:2503 io.c:2511
+#: io.c:2547 io.c:2555
msgid "could not allocate more input memory"
msgstr ""
-#: io.c:2869 io.c:2932
+#: io.c:2919 io.c:2984
#, c-format
msgid "error reading input file `%s': %s"
msgstr "eroare în citirea fiºierului de intrare(input) `%s': %s"
-#: io.c:3057
+#: io.c:3109
msgid "multicharacter value of `RS' is a gawk extension"
msgstr "valoarea multicaracter a `RS' este extensie gawk"
-#: main.c:323
+#: main.c:338
msgid "`-m[fr]' option irrelevant in gawk"
msgstr "`-m[fr]' opþiune irelevantã în gawk"
-#: main.c:325
+#: main.c:340
msgid "-m option usage: `-m[fr] nnn'"
msgstr "folosirea opþiunii -m : `-m[fr] nnn'"
-#: main.c:342
+#: main.c:357
#, c-format
msgid "%s: option `-W %s' unrecognized, ignored\n"
msgstr "%s: opþiunea `-W %s' nu e recunoscutã, ignoratã\n"
-#: main.c:379
+#: main.c:394
msgid "empty argument to `--source' ignored"
msgstr "argument vid pentru `--source' ignorat"
-#: main.c:450
+#: main.c:467
msgid "environment variable `POSIXLY_CORRECT' set: turning on `--posix'"
msgstr ""
"este setatã variabila de mediu `POSIXLY_CORRECT': se activeazã `--posix'"
-#: main.c:455
+#: main.c:472
msgid "`--posix' overrides `--traditional'"
msgstr "`--posix' suprascrie `--traditional'"
-#: main.c:466
+#: main.c:483
msgid "`--posix'/`--traditional' overrides `--non-decimal-data'"
msgstr "`--posix'/`--traditional' suprascrie `--non-decimal-data'"
-#: main.c:470
+#: main.c:487
#, fuzzy, c-format
msgid "running %s setuid root may be a security problem"
msgstr "dacã se ruleazã %s setuid root poate apãrea o problemã de securitate"
-#: main.c:511
+#: main.c:528
#, fuzzy, c-format
msgid "can't set binary mode on stdin (%s)"
msgstr "nu se poate seta modul pe stdin (%s)"
-#: main.c:514
+#: main.c:531
#, fuzzy, c-format
msgid "can't set binary mode on stdout (%s)"
msgstr "nu se poate seta modul pe stdout (%s)"
-#: main.c:516
+#: main.c:533
#, fuzzy, c-format
msgid "can't set binary mode on stderr (%s)"
msgstr "nu se poate seta modul pe stderr (%s)"
-#: main.c:546
+#: main.c:572
msgid "no program text at all!"
msgstr "nu existã nici un text de program!"
-#: main.c:623
+#: main.c:665
#, c-format
msgid "Usage: %s [POSIX or GNU style options] -f progfile [--] file ...\n"
msgstr ""
"Folosire: %s [opþiuni stil POSIX sau GNU] -f fiºierprogram [--] fiºier ...\n"
-#: main.c:625
+#: main.c:667
#, c-format
msgid "Usage: %s [POSIX or GNU style options] [--] %cprogram%c file ...\n"
msgstr ""
"Folosire: %s [opþiuni stil POSIX sau GNU] [--] %cprogram%c fiºier ...\n"
-#: main.c:630
+#: main.c:672
msgid "POSIX options:\t\tGNU long options:\n"
msgstr "opþiuni POSIX:\t\topþiuni lungi GNU:\n"
-#: main.c:631
+#: main.c:673
msgid "\t-f progfile\t\t--file=progfile\n"
msgstr "\t-f fiºierprogram\t\t--file=fiºierprogram\n"
-#: main.c:632
+#: main.c:674
msgid "\t-F fs\t\t\t--field-separator=fs\n"
msgstr "\t-F fs\t\t\t--field-separator=fs\n"
-#: main.c:633
+#: main.c:675
msgid "\t-v var=val\t\t--assign=var=val\n"
msgstr "\t-v var=val\t\t--assign=var=val\n"
-#: main.c:634
+#: main.c:676
msgid "\t-m[fr] val\n"
msgstr "\t-m[fr] val\n"
-#: main.c:635
+#: main.c:677
msgid "\t-W compat\t\t--compat\n"
msgstr "\t-W compat\t\t--compat\n"
-#: main.c:636
+#: main.c:678
msgid "\t-W copyleft\t\t--copyleft\n"
msgstr "\t-W copyleft\t\t--copyleft\n"
-#: main.c:637
+#: main.c:679
msgid "\t-W copyright\t\t--copyright\n"
msgstr "\t-W copyright\t\t--copyright\n"
-#: main.c:638
+#: main.c:680
msgid "\t-W dump-variables[=file]\t--dump-variables[=file]\n"
msgstr "\t-W dump-variables[=fiºier]\t--dump-variables[=fiºier]\n"
-#: main.c:639
+#: main.c:681
+#, fuzzy
+msgid "\t-W exec=file\t\t--exec=file\n"
+msgstr "\t-W profile[=fiºier]\t--profile[=fiºier]\n"
+
+#: main.c:682
msgid "\t-W gen-po\t\t--gen-po\n"
msgstr "\t-W gen-po\t\t--gen-po\n"
-#: main.c:640
+#: main.c:683
msgid "\t-W help\t\t\t--help\n"
msgstr "\t-W help\t\t\t--help\n"
-#: main.c:641
+#: main.c:684
msgid "\t-W lint[=fatal]\t\t--lint[=fatal]\n"
msgstr "\t-W lint[=fatal]\t\t--lint[=fatal]\n"
-#: main.c:642
+#: main.c:685
msgid "\t-W lint-old\t\t--lint-old\n"
msgstr "\t-W lint-old\t\t--lint-old\n"
-#: main.c:643
+#: main.c:686
msgid "\t-W non-decimal-data\t--non-decimal-data\n"
msgstr "\t-W non-decimal-data\t--non-decimal-data\n"
-#: main.c:645
+#: main.c:688
msgid "\t-W nostalgia\t\t--nostalgia\n"
msgstr "\t-W nostalgia\t\t--nostalgia\n"
-#: main.c:648
+#: main.c:691
msgid "\t-W parsedebug\t\t--parsedebug\n"
msgstr "\t-W parsedebug\t\t--parsedebug\n"
-#: main.c:650
+#: main.c:693
msgid "\t-W profile[=file]\t--profile[=file]\n"
msgstr "\t-W profile[=fiºier]\t--profile[=fiºier]\n"
-#: main.c:651
+#: main.c:694
msgid "\t-W posix\t\t--posix\n"
msgstr "\t-W posix\t\t--posix\n"
-#: main.c:652
+#: main.c:695
msgid "\t-W re-interval\t\t--re-interval\n"
msgstr "\t-W re-interval\t\t--re-interval\n"
-#: main.c:653
+#: main.c:696
msgid "\t-W source=program-text\t--source=program-text\n"
msgstr "\t-W source=program-text\t--source=program-text\n"
-#: main.c:654
+#: main.c:697
msgid "\t-W traditional\t\t--traditional\n"
msgstr "\t-W traditional\t\t--traditional\n"
-#: main.c:655
+#: main.c:698
msgid "\t-W usage\t\t--usage\n"
msgstr "\t-W usage\t\t--usage\n"
-#: main.c:656
+#: main.c:699
msgid "\t-W version\t\t--version\n"
msgstr "\t-W version\t\t--version\n"
-#: main.c:660
+#: main.c:703
#, fuzzy
msgid ""
"\n"
@@ -1572,21 +1592,21 @@ msgid ""
"\n"
msgstr "secþiunea `Reporting Problems and Bugs' în versiunea tipãritã.\n"
-#: main.c:664
+#: main.c:707
msgid ""
"gawk is a pattern scanning and processing language.\n"
"By default it reads standard input and writes standard output.\n"
"\n"
msgstr ""
-#: main.c:668
+#: main.c:711
msgid ""
"Examples:\n"
"\tgawk '{ sum += $1 }; END { print sum }' file\n"
"\tgawk -F: '{ print $1 }' /etc/passwd\n"
msgstr ""
-#: main.c:685
+#: main.c:731
#, c-format
msgid ""
"Copyright (C) 1989, 1991-%d Free Software Foundation.\n"
@@ -1605,7 +1625,7 @@ msgstr ""
"(la latitudinea dumneavoastrã) orice versiune ulterioarã.\n"
"\n"
-#: main.c:693
+#: main.c:739
msgid ""
"This program is distributed in the hope that it will be useful,\n"
"but WITHOUT ANY WARRANTY; without even the implied warranty of\n"
@@ -1620,56 +1640,58 @@ msgstr ""
"\n"
"\n"
-#: main.c:699
+#: main.c:745
msgid ""
"You should have received a copy of the GNU General Public License\n"
"along with this program; if not, write to the Free Software\n"
-"Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.\n"
+"Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, "
+"USA.\n"
msgstr ""
"Ar fi trebuit sã primiþi o copie a Licenþei Publice Generale GNU\n"
"împreunã cu acest program; dacã nu, scrieþi la Free Software\n"
-"Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.\n"
+"Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, "
+"USA.\n"
-#: main.c:733
+#: main.c:781
msgid "-Ft does not set FS to tab in POSIX awk"
msgstr "-Ft nu seteazã FS în tab în POSIX awk"
-#: main.c:962
+#: main.c:1018
#, c-format
msgid ""
"%s: `%s' argument to `-v' not in `var=value' form\n"
"\n"
msgstr ""
-#: main.c:982
+#: main.c:1038
#, c-format
msgid "`%s' is not a legal variable name"
msgstr ""
-#: main.c:985
+#: main.c:1041
#, c-format
msgid "`%s' is not a variable name, looking for file `%s=%s'"
msgstr ""
-#: main.c:1018
+#: main.c:1074
msgid "floating point exception"
msgstr "excepþie virgulã mobilã"
-#: main.c:1025
+#: main.c:1081
msgid "fatal error: internal error"
msgstr "eroare fatalã: eroare internã"
-#: main.c:1075
+#: main.c:1132
#, c-format
msgid "no pre-opened fd %d"
msgstr "nici un fd predeschis %d"
-#: main.c:1082
+#: main.c:1139
#, c-format
msgid "could not pre-open /dev/null for fd %d"
msgstr "nu s-a putut predeschide /dev/null pentru fd %d"
-#: main.c:1105 main.c:1114
+#: main.c:1162 main.c:1171
#, c-format
msgid "could not find groups: %s"
msgstr "nu am putut gãsi grupurile: %s"
@@ -1691,23 +1713,23 @@ msgstr "eroare: "
msgid "fatal: "
msgstr "fatal: "
-#: node.c:58 node.c:65 node.c:74 node.c:88 node.c:115
+#: node.c:59 node.c:66 node.c:75 node.c:90 node.c:119
msgid "can't convert string to float"
msgstr "nu se poate converti ºir de caractere în float"
-#: node.c:357
+#: node.c:414
msgid "backslash at end of string"
msgstr "backslash la sfârºitul ºirului de caractere"
-#: node.c:541
+#: node.c:604
msgid "POSIX does not allow `\\x' escapes"
msgstr "POSIX nu permite escape-uri `\\x'"
-#: node.c:547
+#: node.c:610
msgid "no hex digits in `\\x' escape sequence"
msgstr "nu existã digiþi hexa în secvenþa de escape `\\x'"
-#: node.c:581
+#: node.c:644
#, c-format
msgid "escape sequence `\\%c' treated as plain `%c'"
msgstr "secvenþa de escape `\\%c' tratatã ca `%c' simplu"
@@ -1727,21 +1749,21 @@ msgstr "nu am putut deschide `%s' pentru scriere: %s"
msgid "internal error: %s with null vname"
msgstr "eroare internã: Node_var cu vname null"
-#: profile.c:530
+#: profile.c:531
msgid "# treated internally as `delete'"
msgstr ""
-#: profile.c:1167
+#: profile.c:1168
#, c-format
msgid "# this is a dynamically loaded extension function"
msgstr ""
-#: profile.c:1198
+#: profile.c:1199
#, c-format
msgid "\t# gawk profile, created %s\n"
msgstr "\t# profil gawk, creat %s\n"
-#: profile.c:1201
+#: profile.c:1202
#, c-format
msgid ""
"\t# BEGIN block(s)\n"
@@ -1750,7 +1772,7 @@ msgstr ""
"\t# bloc(uri) BEGIN\n"
"\n"
-#: profile.c:1211
+#: profile.c:1212
#, c-format
msgid ""
"\t# Rule(s)\n"
@@ -1759,7 +1781,7 @@ msgstr ""
"\t# Regulã(i)\n"
"\n"
-#: profile.c:1217
+#: profile.c:1218
#, c-format
msgid ""
"\t# END block(s)\n"
@@ -1768,7 +1790,7 @@ msgstr ""
"\t# bloc(uri) END\n"
"\n"
-#: profile.c:1237
+#: profile.c:1238
#, c-format
msgid ""
"\n"
@@ -1777,83 +1799,89 @@ msgstr ""
"\n"
"\t# Funcþii, listate alfabetic\n"
-#: profile.c:1452
+#: profile.c:1453
#, c-format
msgid "unexpected type %s in prec_level"
msgstr "tip %s neaºteptat în prec_level"
-#: regcomp.c:150
+#: regcomp.c:160
msgid "Success"
msgstr "Succes"
-#: regcomp.c:153
+#: regcomp.c:163
msgid "No match"
msgstr "Nici o potrivire"
-#: regcomp.c:156
+#: regcomp.c:166
msgid "Invalid regular expression"
msgstr "Expresie regularã invalidã"
-#: regcomp.c:159
+#: regcomp.c:169
msgid "Invalid collation character"
msgstr "Caracter de comparare invalid"
-#: regcomp.c:162
+#: regcomp.c:172
msgid "Invalid character class name"
msgstr "nume clasã caracter invalid"
-#: regcomp.c:165
+#: regcomp.c:175
msgid "Trailing backslash"
msgstr "Backslash final"
-#: regcomp.c:168
+#: regcomp.c:178
msgid "Invalid back reference"
msgstr "referinþã anterioarã(back) invalidã"
-#: regcomp.c:171
+#: regcomp.c:181
msgid "Unmatched [ or [^"
msgstr "[ sau [^ fãrã reciprocã"
-#: regcomp.c:174
+#: regcomp.c:184
msgid "Unmatched ( or \\("
msgstr "( sau \\( fãrã reciprocã"
-#: regcomp.c:177
+#: regcomp.c:187
msgid "Unmatched \\{"
msgstr "{ fãrã reciprocã"
-#: regcomp.c:180
+#: regcomp.c:190
msgid "Invalid content of \\{\\}"
msgstr "Conþinut invalid al \\{\\}"
-#: regcomp.c:183
+#: regcomp.c:193
msgid "Invalid range end"
msgstr "Sfârºit de domeniu invalid"
-#: regcomp.c:186
+#: regcomp.c:196
msgid "Memory exhausted"
msgstr "Memorie plinã"
-#: regcomp.c:189
+#: regcomp.c:199
msgid "Invalid preceding regular expression"
msgstr "Expresie regularã anterioarã invalidã"
-#: regcomp.c:192
+#: regcomp.c:202
msgid "Premature end of regular expression"
msgstr "Sfârºit prematur de expresie regularã"
-#: regcomp.c:195
+#: regcomp.c:205
msgid "Regular expression too big"
msgstr "Expresie regularã prea mare"
-#: regcomp.c:198
+#: regcomp.c:208
msgid "Unmatched ) or \\)"
msgstr ") or \\) fãrã reciprocã"
-#: regcomp.c:668
+#: regcomp.c:688
msgid "No previous regular expression"
msgstr "Nu existã expresii regulare anterioare"
+#~ msgid "function %s called\n"
+#~ msgstr "funcþia %s a fost apelatã\n"
+
+#~ msgid "field %d in FIELDWIDTHS, must be > 0"
+#~ msgstr "câmpul %d din FIELDWIDTHS trebuie sã fie > 0"
+
#, fuzzy
#~ msgid "or used as a variable or an array"
#~ msgstr "nu se poate folosi numele funcþiei `%s' ca variabilã sau array"
diff --git a/po/rw.gmo b/po/rw.gmo
new file mode 100644
index 00000000..d4374196
--- /dev/null
+++ b/po/rw.gmo
Binary files differ
diff --git a/po/rw.po b/po/rw.po
new file mode 100644
index 00000000..9be6614f
--- /dev/null
+++ b/po/rw.po
@@ -0,0 +1,1995 @@
+# Kinyarwanda translations for gawk package.
+# Copyright (C) 2005 Free Software Foundation, Inc.
+# This file is distributed under the same license as the gawk package.
+# Steve Murphy <murf@e-tools.com>, 2005.
+# Steve performed initial rough translation from compendium built from translations provided by the following translators:
+# Philibert Ndandali <ndandali@yahoo.fr>, 2005.
+# Viateur MUGENZI <muvia1@yahoo.fr>, 2005.
+# Noëlla Mupole <s24211045@tuks.co.za>, 2005.
+# Carole Karema <karemacarole@hotmail.com>, 2005.
+# JEAN BAPTISTE NGENDAHAYO <ngenda_denis@yahoo.co.uk>, 2005.
+# Augustin KIBERWA <akiberwa@yahoo.co.uk>, 2005.
+# Donatien NSENGIYUMVA <ndonatienuk@yahoo.co.uk>, 2005.
+# Antoine Bigirimana <antoine@e-tools.com>, 2005.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: gawk 3.1.4\n"
+"Report-Msgid-Bugs-To: arnold@skeeve.com\n"
+"POT-Creation-Date: 2005-07-06 17:20+0300\n"
+"PO-Revision-Date: 2005-04-04 10:55-0700\n"
+"Last-Translator: Steven Michael Murphy <murf@e-tools.com>\n"
+"Language-Team: Kinyarwanda <translation-team-rw@lists.sourceforge.net>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#: array.c:112
+#, fuzzy, c-format
+msgid "attempt to use function `%s' as an array"
+msgstr "Kuri Gukoresha Umumaro Nka Imbonerahamwe"
+
+#: array.c:115
+#, fuzzy, c-format
+msgid "attempt to use scalar parameter `%s' as an array"
+msgstr "Kuri Gukoresha Nka Imbonerahamwe"
+
+#: array.c:118
+#, fuzzy, c-format
+msgid "attempt to use scalar `%s' as array"
+msgstr "Kuri Gukoresha Nka Imbonerahamwe"
+
+#: array.c:156
+#, fuzzy, c-format
+msgid "from %s"
+msgstr "Kuva:"
+
+#: array.c:511
+#, fuzzy, c-format
+msgid "reference to uninitialized element `%s[\"%s\"]'"
+msgstr "Indango Kuri Itatangijwe Ikigize:"
+
+#: array.c:517
+#, fuzzy, c-format
+msgid "subscript of array `%s' is null string"
+msgstr "Inyandiko nyesi Bya Imbonerahamwe ni NTAGIHARI Ikurikiranyanyuguti"
+
+#: array.c:621
+#, fuzzy, c-format
+msgid "delete: index `%s' not in array `%s'"
+msgstr "Gusiba Umubarendanga OYA in Imbonerahamwe"
+
+#: array.c:791
+#, fuzzy, c-format
+msgid "%s: empty (null)\n"
+msgstr "%s:ubusa NTAGIHARI"
+
+#: array.c:796
+#, fuzzy, c-format
+msgid "%s: empty (zero)\n"
+msgstr "%s:ubusa Zeru"
+
+#: array.c:800
+#, c-format
+msgid "%s: table_size = %d, array_size = %d\n"
+msgstr ""
+
+#: array.c:829
+#, fuzzy, c-format
+msgid "%s: is parameter\n"
+msgstr "%s:ni"
+
+#: array.c:834
+#, fuzzy, c-format
+msgid "%s: array_ref to %s\n"
+msgstr "%s:Kuri"
+
+#: awkgram.y:208
+#, fuzzy, c-format
+msgid "%s blocks must have an action part"
+msgstr "%sIgikorwa"
+
+#: awkgram.y:211
+#, fuzzy
+msgid "each rule must have a pattern or an action part"
+msgstr "a Ishusho Cyangwa Igikorwa"
+
+#: awkgram.y:267
+#, fuzzy, c-format
+msgid "`%s' is a built-in function, it cannot be redefined"
+msgstr "`%s'ni a in Umumaro"
+
+#: awkgram.y:313
+#, fuzzy
+msgid "regexp constant `//' looks like a C++ comment, but is not"
+msgstr "nka a C Icyo wongeraho ni OYA"
+
+#: awkgram.y:316
+#, fuzzy, c-format
+msgid "regexp constant `/%s/' looks like a C comment, but is not"
+msgstr "nka a C Icyo wongeraho ni OYA"
+
+#: awkgram.y:343 awkgram.y:623
+#, fuzzy
+msgid "statement may have no effect"
+msgstr "Inyandiko Gicurasi Oya INGARUKA"
+
+#: awkgram.y:440 awkgram.y:460
+#, fuzzy, c-format
+msgid "`%s' used in %s action"
+msgstr "`%s'in Igikorwa"
+
+#: awkgram.y:453 awkgram.y:456
+#, fuzzy
+msgid "`nextfile' is a gawk extension"
+msgstr "`ni a Umugereka"
+
+#: awkgram.y:470
+#, fuzzy
+msgid "`return' used outside function context"
+msgstr "`Hanze Umumaro Imvugiro"
+
+#: awkgram.y:512
+#, fuzzy
+msgid "plain `print' in BEGIN or END rule should probably be `print \"\"'"
+msgstr "Byuzuye in Cyangwa Gucapa"
+
+#: awkgram.y:525 awkgram.y:532
+#, fuzzy
+msgid "`delete array' is a gawk extension"
+msgstr "`Gusiba ni a Umugereka"
+
+#: awkgram.y:540 awkgram.y:547
+#, fuzzy
+msgid "`delete(array)' is a non-portable tawk extension"
+msgstr "`Gusiba Imbonerahamwe ni a Umugereka"
+
+#: awkgram.y:591
+#, fuzzy, c-format
+msgid "duplicate case values in switch body: %s"
+msgstr "Gusubiramo Uduciro in Hindura Umubiri"
+
+#: awkgram.y:601
+#, fuzzy
+msgid "Duplicate `default' detected in switch body"
+msgstr "in Hindura Umubiri"
+
+#: awkgram.y:690
+#, fuzzy
+msgid "multistage two-way pipelines don't work"
+msgstr "Akazi"
+
+#: awkgram.y:781
+#, fuzzy
+msgid "regular expression on right of assignment"
+msgstr "Ibisanzwe imvugo ku Iburyo: Bya Igenera"
+
+#: awkgram.y:804
+#, fuzzy
+msgid "regular expression on left of `~' or `!~' operator"
+msgstr "Ibisanzwe imvugo ku Ibumoso: Bya Cyangwa Mukoresha"
+
+#: awkgram.y:812
+#, fuzzy
+msgid "regular expression on right of comparison"
+msgstr "Ibisanzwe imvugo ku Iburyo: Bya"
+
+#: awkgram.y:879
+#, fuzzy
+msgid "non-redirected `getline' undefined inside END action"
+msgstr "kidasobanuye Mo Imbere Igikorwa"
+
+#: awkgram.y:906
+#, fuzzy
+msgid "call of `length' without parentheses is not portable"
+msgstr "Bya ni OYA"
+
+#: awkgram.y:909
+#, fuzzy
+msgid "call of `length' without parentheses is deprecated by POSIX"
+msgstr "Bya ni Bitemewe. ku"
+
+#: awkgram.y:962
+#, fuzzy
+msgid "use of non-array as array"
+msgstr "Gukoresha Bya Imbonerahamwe Nka Imbonerahamwe"
+
+#: awkgram.y:964
+#, fuzzy
+msgid "invalid subscript expression"
+msgstr "Sibyo Inyandiko nyesi imvugo"
+
+#: awkgram.y:1171
+#, fuzzy
+msgid "unexpected newline or end of string"
+msgstr "Cyangwa Impera Bya Ikurikiranyanyuguti"
+
+#: awkgram.y:1267
+#, fuzzy
+msgid "empty program text on command line"
+msgstr "ubusa Porogaramu Umwandiko ku Komandi: Umurongo"
+
+#: awkgram.y:1320
+#, fuzzy, c-format
+msgid "can't open source file `%s' for reading (%s)"
+msgstr "Gufungura Inkomoko IDOSIYE kugirango"
+
+#: awkgram.y:1397
+#, fuzzy, c-format
+msgid "can't read sourcefile `%s' (%s)"
+msgstr "Gusoma"
+
+#: awkgram.y:1405
+#, fuzzy, c-format
+msgid "source file `%s' is empty"
+msgstr "Inkomoko IDOSIYE ni ubusa"
+
+#: awkgram.y:1596 awkgram.y:1718 awkgram.y:1736 awkgram.y:2107 awkgram.y:2194
+#, fuzzy
+msgid "source file does not end in newline"
+msgstr "Inkomoko IDOSIYE OYA Impera in"
+
+#: awkgram.y:1658
+#, fuzzy
+msgid "unterminated regexp ends with `\\' at end of file"
+msgstr "Na: ku Impera Bya IDOSIYE"
+
+#: awkgram.y:1682
+#, c-format
+msgid "%s: %d: tawk regex modifier `/.../%c' doesn't work in gawk"
+msgstr ""
+
+#: awkgram.y:1686
+#, c-format
+msgid "tawk regex modifier `/.../%c' doesn't work in gawk"
+msgstr ""
+
+#: awkgram.y:1693
+msgid "unterminated regexp"
+msgstr ""
+
+#: awkgram.y:1696
+#, fuzzy
+msgid "unterminated regexp at end of file"
+msgstr "ku Impera Bya IDOSIYE"
+
+#: awkgram.y:1762
+#, fuzzy
+msgid "use of `\\ #...' line continuation is not portable"
+msgstr "Gukoresha Bya Umurongo ni OYA"
+
+#: awkgram.y:1774
+#, fuzzy
+msgid "backslash not last character on line"
+msgstr "OYA Iheruka Inyuguti ku Umurongo"
+
+#: awkgram.y:1819
+#, fuzzy
+msgid "POSIX does not allow operator `**='"
+msgstr "OYA Kwemerera Mukoresha"
+
+#: awkgram.y:1821
+#, fuzzy
+msgid "old awk does not support operator `**='"
+msgstr "ki/ bishaje OYA Gushigikira Mukoresha"
+
+#: awkgram.y:1830
+#, fuzzy
+msgid "POSIX does not allow operator `**'"
+msgstr "OYA Kwemerera Mukoresha"
+
+#: awkgram.y:1832
+#, fuzzy
+msgid "old awk does not support operator `**'"
+msgstr "ki/ bishaje OYA Gushigikira Mukoresha"
+
+#: awkgram.y:1863
+#, fuzzy
+msgid "operator `^=' is not supported in old awk"
+msgstr "Mukoresha ni OYA in ki/ bishaje"
+
+#: awkgram.y:1871
+#, fuzzy
+msgid "operator `^' is not supported in old awk"
+msgstr "Mukoresha ni OYA in ki/ bishaje"
+
+#: awkgram.y:1955 awkgram.y:1970
+#, fuzzy
+msgid "unterminated string"
+msgstr "Ikurikiranyanyuguti"
+
+#: awkgram.y:2155
+#, fuzzy, c-format
+msgid "invalid char '%c' in expression"
+msgstr "Sibyo INYUGUTI in imvugo"
+
+#: awkgram.y:2203
+#, fuzzy, c-format
+msgid "`%s' is a gawk extension"
+msgstr "`%s'ni a Umugereka"
+
+#: awkgram.y:2206
+#, fuzzy, c-format
+msgid "`%s' is a Bell Labs extension"
+msgstr "`%s'ni a Umugereka"
+
+#: awkgram.y:2209
+#, fuzzy, c-format
+msgid "POSIX does not allow `%s'"
+msgstr "OYA Kwemerera"
+
+#: awkgram.y:2213
+#, fuzzy, c-format
+msgid "`%s' is not supported in old awk"
+msgstr "`%s'ni OYA in ki/ bishaje"
+
+#: awkgram.y:2239
+msgid "`goto' considered harmful!\n"
+msgstr ""
+
+#: awkgram.y:2301
+#, fuzzy, c-format
+msgid "%d is invalid as number of arguments for %s"
+msgstr "%dni Sibyo Nka Umubare Bya ingingo kugirango"
+
+#: awkgram.y:2320 awkgram.y:2323
+#, fuzzy
+msgid "match: third argument is a gawk extension"
+msgstr "BIHUYE ni a Umugereka"
+
+#: awkgram.y:2336
+#, fuzzy, c-format
+msgid "%s: string literal as last arg of substitute has no effect"
+msgstr "%s:Ikurikiranyanyuguti Nka Iheruka Bya GUSIMBURANYA Oya INGARUKA"
+
+#: awkgram.y:2339
+#, fuzzy, c-format
+msgid "%s third parameter is not a changeable object"
+msgstr "%sni OYA a Igikoresho"
+
+#: awkgram.y:2366 awkgram.y:2369
+#, fuzzy
+msgid "close: second argument is a gawk extension"
+msgstr "Gufunga ISEGONDA ni a Umugereka"
+
+#: awkgram.y:2379
+#, fuzzy
+msgid "use of dcgettext(_\"...\") is incorrect: remove leading underscore"
+msgstr "Gukoresha Bya ni Gukuraho... Nyobora"
+
+#: awkgram.y:2394
+#, fuzzy
+msgid "use of dcngettext(_\"...\") is incorrect: remove leading underscore"
+msgstr "Gukoresha Bya ni Gukuraho... Nyobora"
+
+#: awkgram.y:2465
+#, fuzzy, c-format
+msgid "function `%s': parameter #%d, `%s', duplicates parameter #%d"
+msgstr "Umumaro"
+
+#: awkgram.y:2498
+#, fuzzy, c-format
+msgid "function `%s': parameter `%s' shadows global variable"
+msgstr "Umumaro IMPINDURAGACIRO"
+
+#: awkgram.y:2610
+#, fuzzy, c-format
+msgid "could not open `%s' for writing (%s)"
+msgstr "OYA Gufungura kugirango"
+
+#: awkgram.y:2611 profile.c:93
+#, fuzzy
+msgid "sending profile to standard error"
+msgstr "Ibijyana Kuri Bisanzwe Ikosa"
+
+#: awkgram.y:2643
+#, fuzzy, c-format
+msgid "%s: close failed (%s)"
+msgstr "%s:Gufunga Byanze"
+
+#: awkgram.y:2764
+msgid "shadow_funcs() called twice!"
+msgstr ""
+
+#: awkgram.y:2791
+#, fuzzy
+msgid "there were shadowed variables."
+msgstr "Bihawe igicucu Ibihinduka"
+
+#: awkgram.y:2864
+#, fuzzy, c-format
+msgid "function `%s': can't use function name as parameter name"
+msgstr "Umumaro Gukoresha Umumaro Izina: Nka Izina:"
+
+#: awkgram.y:2874
+#, fuzzy, c-format
+msgid "function name `%s' previously defined"
+msgstr "Umumaro Izina:"
+
+#: awkgram.y:3025 awkgram.y:3031
+#, fuzzy, c-format
+msgid "function `%s' called but never defined"
+msgstr "Umumaro Nta narimwe"
+
+#: awkgram.y:3034
+#, fuzzy, c-format
+msgid "function `%s' defined but never called"
+msgstr "Umumaro Nta narimwe"
+
+#: awkgram.y:3061
+#, fuzzy, c-format
+msgid "regexp constant for parameter #%d yields boolean value"
+msgstr "kugirango Icyungo Agaciro"
+
+#: awkgram.y:3105
+#, fuzzy, c-format
+msgid ""
+"function `%s' called with space between name and `(',\n"
+"or used as a variable or an array"
+msgstr ""
+"Umumaro Na: Umwanya hagati Izina: Na Cyangwa Nka a IMPINDURAGACIRO Cyangwa "
+"Imbonerahamwe"
+
+#: builtin.c:145
+#, fuzzy, c-format
+msgid "%s to \"%s\" failed (%s)"
+msgstr "%sKuri Byanze"
+
+#: builtin.c:146
+#, fuzzy
+msgid "standard output"
+msgstr "Bisanzwe Ibisohoka"
+
+#: builtin.c:147
+#, fuzzy
+msgid "reason unknown"
+msgstr "Kitazwi"
+
+#: builtin.c:160
+#, fuzzy
+msgid "exp: received non-numeric argument"
+msgstr "EXP BYAKIRIWE Bikurikije umubare"
+
+#: builtin.c:166
+#, fuzzy, c-format
+msgid "exp: argument %g is out of range"
+msgstr "EXP ni Inyuma Bya Urutonde"
+
+#: builtin.c:224
+#, fuzzy, c-format
+msgid "fflush: cannot flush: pipe `%s' opened for reading, not writing"
+msgstr "kugirango OYA"
+
+#: builtin.c:227
+#, fuzzy, c-format
+msgid "fflush: cannot flush: file `%s' opened for reading, not writing"
+msgstr "IDOSIYE kugirango OYA"
+
+#: builtin.c:239
+#, fuzzy, c-format
+msgid "fflush: `%s' is not an open file, pipe or co-process"
+msgstr "ni OYA Gufungura IDOSIYE Cyangwa"
+
+#: builtin.c:332
+#, fuzzy
+msgid "index: received non-string first argument"
+msgstr "Umubarendanga BYAKIRIWE Ikurikiranyanyuguti Itangira"
+
+#: builtin.c:334
+#, fuzzy
+msgid "index: received non-string second argument"
+msgstr "Umubarendanga BYAKIRIWE Ikurikiranyanyuguti ISEGONDA"
+
+#: builtin.c:449
+#, fuzzy
+msgid "int: received non-numeric argument"
+msgstr "INT BYAKIRIWE Bikurikije umubare"
+
+#: builtin.c:472
+#, fuzzy
+msgid "`length(array)' is a gawk extension"
+msgstr "`Gusiba ni a Umugereka"
+
+#: builtin.c:481
+#, fuzzy
+msgid "length: received non-string argument"
+msgstr "Uburebure BYAKIRIWE Ikurikiranyanyuguti"
+
+#: builtin.c:506
+#, fuzzy
+msgid "log: received non-numeric argument"
+msgstr "LOG BYAKIRIWE Bikurikije umubare"
+
+#: builtin.c:509
+#, fuzzy, c-format
+msgid "log: received negative argument %g"
+msgstr "LOG BYAKIRIWE"
+
+#: builtin.c:673 builtin.c:676
+#, fuzzy
+msgid "must use `count$' on all formats or none"
+msgstr "Gukoresha IBARA ku Byose Imiterere Cyangwa Ntacyo"
+
+#: builtin.c:778
+#, fuzzy
+msgid "`$' is not permitted in awk formats"
+msgstr "`$'ni OYA in Imiterere"
+
+#: builtin.c:784
+#, fuzzy
+msgid "arg count with `$' must be > 0"
+msgstr "IBARA Na: 0"
+
+#: builtin.c:786
+#, fuzzy, c-format
+msgid "arg count %ld greater than total number of supplied arguments"
+msgstr "IBARA Biruta Igiteranyo Umubare Bya ingingo"
+
+#: builtin.c:788
+#, fuzzy
+msgid "`$' not permitted after period in format"
+msgstr "`$'OYA Nyuma Igihe in Imiterere"
+
+#: builtin.c:801
+#, fuzzy
+msgid "no `$' supplied for positional field width or precision"
+msgstr "Oya kugirango Umwanya Ubugari Cyangwa"
+
+#: builtin.c:867
+#, fuzzy
+msgid "`l' is meaningless in awk formats; ignored"
+msgstr "`ni in Imiterere"
+
+#: builtin.c:871
+#, fuzzy
+msgid "`l' is not permitted in POSIX awk formats"
+msgstr "`ni OYA in Imiterere"
+
+#: builtin.c:882
+#, fuzzy
+msgid "`L' is meaningless in awk formats; ignored"
+msgstr "`ni in Imiterere"
+
+#: builtin.c:886
+#, fuzzy
+msgid "`L' is not permitted in POSIX awk formats"
+msgstr "`ni OYA in Imiterere"
+
+#: builtin.c:897
+#, fuzzy
+msgid "`h' is meaningless in awk formats; ignored"
+msgstr "`ni in Imiterere"
+
+#: builtin.c:901
+#, fuzzy
+msgid "`h' is not permitted in POSIX awk formats"
+msgstr "`ni OYA in Imiterere"
+
+#: builtin.c:1132
+#, fuzzy, c-format
+msgid "[s]printf: value %g is out of range for `%%%c' format"
+msgstr "[S Agaciro ni Inyuma Bya Urutonde kugirango Imiterere"
+
+#: builtin.c:1198
+#, fuzzy
+msgid "not enough arguments to satisfy format string"
+msgstr "OYA ingingo Kuri Imiterere Ikurikiranyanyuguti"
+
+#: builtin.c:1200
+#, fuzzy
+msgid "^ ran out for this one"
+msgstr "^Inyuma kugirango iyi"
+
+#: builtin.c:1205
+#, fuzzy
+msgid "[s]printf: format specifier does not have control letter"
+msgstr "[S Imiterere OYA Igenzura Ibaruwa..."
+
+#: builtin.c:1208
+#, fuzzy
+msgid "too many arguments supplied for format string"
+msgstr "ingingo kugirango Imiterere Ikurikiranyanyuguti"
+
+#: builtin.c:1274 builtin.c:1277
+#, fuzzy
+msgid "printf: no arguments"
+msgstr "Oya ingingo"
+
+#: builtin.c:1301
+#, fuzzy
+msgid "sqrt: received non-numeric argument"
+msgstr "SQRT BYAKIRIWE Bikurikije umubare"
+
+#: builtin.c:1305
+#, fuzzy, c-format
+msgid "sqrt: called with negative argument %g"
+msgstr "SQRT Na:"
+
+#: builtin.c:1329
+#, fuzzy, c-format
+msgid "substr: start index %g is invalid, using 1"
+msgstr "Gutangira Umubarendanga ni Sibyo ikoresha 1."
+
+#: builtin.c:1334
+#, fuzzy, c-format
+msgid "substr: non-integer start index %g will be truncated"
+msgstr "Umubare wuzuye Gutangira Umubarendanga"
+
+#: builtin.c:1353
+#, fuzzy, c-format
+msgid "substr: length %g is not >= 1"
+msgstr "Uburebure ni OYA 1."
+
+#: builtin.c:1355
+#, fuzzy, c-format
+msgid "substr: length %g is not >= 0"
+msgstr "Uburebure ni OYA 0"
+
+#: builtin.c:1362
+#, fuzzy, c-format
+msgid "substr: non-integer length %g will be truncated"
+msgstr "Umubare wuzuye Uburebure"
+
+#: builtin.c:1367
+#, fuzzy, c-format
+msgid "substr: length %g too big for string indexing, truncating to %g"
+msgstr "Uburebure kugirango Ikurikiranyanyuguti gushyiraho umugereka Kuri"
+
+#: builtin.c:1379
+#, fuzzy
+msgid "substr: source string is zero length"
+msgstr "Inkomoko Ikurikiranyanyuguti ni Zeru Uburebure"
+
+#: builtin.c:1395
+#, fuzzy, c-format
+msgid "substr: start index %g is past end of string"
+msgstr "Gutangira Umubarendanga ni Impera Bya Ikurikiranyanyuguti"
+
+#: builtin.c:1403
+#, fuzzy, c-format
+msgid ""
+"substr: length %g at start index %g exceeds length of first argument (%lu)"
+msgstr "Uburebure ku Gutangira Umubarendanga Uburebure Bya Itangira"
+
+#: builtin.c:1478
+#, fuzzy
+msgid "strftime: received non-string first argument"
+msgstr "BYAKIRIWE Ikurikiranyanyuguti Itangira"
+
+#: builtin.c:1484
+#, fuzzy
+msgid "strftime: received empty format string"
+msgstr "BYAKIRIWE ubusa Imiterere Ikurikiranyanyuguti"
+
+#: builtin.c:1493
+#, fuzzy
+msgid "strftime: received non-numeric second argument"
+msgstr "BYAKIRIWE Bikurikije umubare ISEGONDA"
+
+#: builtin.c:1556
+#, fuzzy
+msgid "mktime: received non-string argument"
+msgstr "BYAKIRIWE Ikurikiranyanyuguti"
+
+#: builtin.c:1601
+#, fuzzy
+msgid "system: received non-string argument"
+msgstr "Sisitemu BYAKIRIWE Ikurikiranyanyuguti"
+
+#: builtin.c:1722 eval.c:2039
+#, fuzzy, c-format
+msgid "reference to uninitialized field `$%d'"
+msgstr "Indango Kuri Itatangijwe Umwanya"
+
+#: builtin.c:1827
+#, fuzzy
+msgid "tolower: received non-string argument"
+msgstr "BYAKIRIWE Ikurikiranyanyuguti"
+
+#: builtin.c:1857
+#, fuzzy
+msgid "toupper: received non-string argument"
+msgstr "BYAKIRIWE Ikurikiranyanyuguti"
+
+#: builtin.c:1890
+#, fuzzy
+msgid "atan2: received non-numeric first argument"
+msgstr "ATAN2 BYAKIRIWE Bikurikije umubare Itangira"
+
+#: builtin.c:1892
+#, fuzzy
+msgid "atan2: received non-numeric second argument"
+msgstr "ATAN2 BYAKIRIWE Bikurikije umubare ISEGONDA"
+
+#: builtin.c:1911
+#, fuzzy
+msgid "sin: received non-numeric argument"
+msgstr "SIN BYAKIRIWE Bikurikije umubare"
+
+#: builtin.c:1927
+#, fuzzy
+msgid "cos: received non-numeric argument"
+msgstr "COS BYAKIRIWE Bikurikije umubare"
+
+#: builtin.c:1977
+#, fuzzy
+msgid "srand: received non-numeric argument"
+msgstr "BYAKIRIWE Bikurikije umubare"
+
+#: builtin.c:2012
+#, fuzzy
+msgid "match: third argument is not an array"
+msgstr "BIHUYE ni OYA Imbonerahamwe"
+
+#: builtin.c:2555
+#, fuzzy
+msgid "gensub: third argument of 0 treated as 1"
+msgstr "Bya 0 Nka 1."
+
+#: builtin.c:2715
+#, fuzzy
+msgid "lshift: received non-numeric first argument"
+msgstr "BYAKIRIWE Bikurikije umubare Itangira"
+
+#: builtin.c:2717
+#, fuzzy
+msgid "lshift: received non-numeric second argument"
+msgstr "BYAKIRIWE Bikurikije umubare ISEGONDA"
+
+#: builtin.c:2723
+#, fuzzy, c-format
+msgid "lshift(%lf, %lf): negative values will give strange results"
+msgstr "Uduciro Ibisubizo ku"
+
+#: builtin.c:2725
+#, fuzzy, c-format
+msgid "lshift(%lf, %lf): fractional values will be truncated"
+msgstr "Uduciro"
+
+#: builtin.c:2727
+#, fuzzy, c-format
+msgid "lshift(%lf, %lf): too large shift value will give strange results"
+msgstr "Binini Gusunika Agaciro Ibisubizo ku"
+
+#: builtin.c:2753
+#, fuzzy
+msgid "rshift: received non-numeric first argument"
+msgstr "BYAKIRIWE Bikurikije umubare Itangira"
+
+#: builtin.c:2755
+#, fuzzy
+msgid "rshift: received non-numeric second argument"
+msgstr "BYAKIRIWE Bikurikije umubare ISEGONDA"
+
+#: builtin.c:2761
+#, fuzzy, c-format
+msgid "rshift(%lf, %lf): negative values will give strange results"
+msgstr "Uduciro Ibisubizo ku"
+
+#: builtin.c:2763
+#, fuzzy, c-format
+msgid "rshift(%lf, %lf): fractional values will be truncated"
+msgstr "Uduciro"
+
+#: builtin.c:2765
+#, fuzzy, c-format
+msgid "rshift(%lf, %lf): too large shift value will give strange results"
+msgstr "Binini Gusunika Agaciro Ibisubizo ku"
+
+#: builtin.c:2791
+#, fuzzy
+msgid "and: received non-numeric first argument"
+msgstr "Na BYAKIRIWE Bikurikije umubare Itangira"
+
+#: builtin.c:2793
+#, fuzzy
+msgid "and: received non-numeric second argument"
+msgstr "Na BYAKIRIWE Bikurikije umubare ISEGONDA"
+
+#: builtin.c:2799
+#, fuzzy, c-format
+msgid "and(%lf, %lf): negative values will give strange results"
+msgstr "Na Uduciro Ibisubizo ku"
+
+#: builtin.c:2801
+#, fuzzy, c-format
+msgid "and(%lf, %lf): fractional values will be truncated"
+msgstr "Na Uduciro"
+
+#: builtin.c:2827
+#, fuzzy
+msgid "or: received non-numeric first argument"
+msgstr "Cyangwa BYAKIRIWE Bikurikije umubare Itangira"
+
+#: builtin.c:2829
+#, fuzzy
+msgid "or: received non-numeric second argument"
+msgstr "Cyangwa BYAKIRIWE Bikurikije umubare ISEGONDA"
+
+#: builtin.c:2835
+#, fuzzy, c-format
+msgid "or(%lf, %lf): negative values will give strange results"
+msgstr "Cyangwa Uduciro Ibisubizo ku"
+
+#: builtin.c:2837
+#, fuzzy, c-format
+msgid "or(%lf, %lf): fractional values will be truncated"
+msgstr "Cyangwa Uduciro"
+
+#: builtin.c:2863
+#, fuzzy
+msgid "xor: received non-numeric first argument"
+msgstr "BYAKIRIWE Bikurikije umubare Itangira"
+
+#: builtin.c:2865
+#, fuzzy
+msgid "xor: received non-numeric second argument"
+msgstr "BYAKIRIWE Bikurikije umubare ISEGONDA"
+
+#: builtin.c:2871
+#, fuzzy, c-format
+msgid "xor(%lf, %lf): negative values will give strange results"
+msgstr "Uduciro Ibisubizo ku"
+
+#: builtin.c:2873
+#, fuzzy, c-format
+msgid "xor(%lf, %lf): fractional values will be truncated"
+msgstr "Uduciro"
+
+#: builtin.c:2897
+#, fuzzy
+msgid "compl: received non-numeric argument"
+msgstr "BYAKIRIWE Bikurikije umubare"
+
+#: builtin.c:2903
+#, fuzzy, c-format
+msgid "compl(%lf): negative value will give strange results"
+msgstr "Agaciro Ibisubizo ku"
+
+#: builtin.c:2905
+#, fuzzy, c-format
+msgid "compl(%lf): fractional value will be truncated"
+msgstr "Agaciro"
+
+#: builtin.c:3078
+#, fuzzy, c-format
+msgid "dcgettext: `%s' is not a valid locale category"
+msgstr "ni OYA a Byemewe Umwanya Icyiciro"
+
+#: eval.c:303
+#, fuzzy, c-format
+msgid "unknown nodetype %d"
+msgstr "Kitazwi"
+
+#: eval.c:353
+#, fuzzy
+msgid "buffer overflow in genflags2str"
+msgstr "Byarenze urugero in"
+
+#: eval.c:385 eval.c:391 profile.c:838
+#, fuzzy, c-format
+msgid "attempt to use array `%s' in a scalar context"
+msgstr "Kuri Gukoresha Imbonerahamwe in a Imvugiro"
+
+#: eval.c:733
+#, fuzzy, c-format
+msgid "for loop: array `%s' changed size from %ld to %ld during loop execution"
+msgstr "kugirango Imbonerahamwe Byahinduwe Ingano Bivuye Kuri"
+
+#: eval.c:754
+#, fuzzy
+msgid "`break' outside a loop is not portable"
+msgstr "`Hanze a ni OYA"
+
+#: eval.c:758
+#, fuzzy
+msgid "`break' outside a loop is not allowed"
+msgstr "`Hanze a ni OYA"
+
+#: eval.c:775
+#, fuzzy
+msgid "`continue' outside a loop is not portable"
+msgstr "`Hanze a ni OYA"
+
+#: eval.c:779
+#, fuzzy
+msgid "`continue' outside a loop is not allowed"
+msgstr "`Hanze a ni OYA"
+
+#: eval.c:813
+#, fuzzy
+msgid "`next' cannot be called from a BEGIN rule"
+msgstr "`Bivuye a"
+
+#: eval.c:815
+#, fuzzy
+msgid "`next' cannot be called from an END rule"
+msgstr "`Bivuye"
+
+#: eval.c:824
+#, fuzzy
+msgid "`nextfile' cannot be called from a BEGIN rule"
+msgstr "`Bivuye a"
+
+#: eval.c:826
+#, fuzzy
+msgid "`nextfile' cannot be called from an END rule"
+msgstr "`Bivuye"
+
+#: eval.c:875
+#, fuzzy
+msgid "statement has no effect"
+msgstr "Inyandiko Oya INGARUKA"
+
+#: eval.c:952 eval.c:1893
+#, fuzzy, c-format
+msgid "can't use function name `%s' as variable or array"
+msgstr "Gukoresha Umumaro Izina: Nka IMPINDURAGACIRO Cyangwa Imbonerahamwe"
+
+#: eval.c:959 eval.c:965
+#, fuzzy, c-format
+msgid "reference to uninitialized argument `%s'"
+msgstr "Indango Kuri Itatangijwe"
+
+#: eval.c:974 eval.c:1902
+#, fuzzy, c-format
+msgid "reference to uninitialized variable `%s'"
+msgstr "Indango Kuri Itatangijwe IMPINDURAGACIRO"
+
+#: eval.c:1120
+#, fuzzy
+msgid ""
+"concatenation: side effects in one expression have changed the length of "
+"another!"
+msgstr "Ingaruka in imvugo Byahinduwe i Uburebure Bya"
+
+#: eval.c:1200
+#, fuzzy
+msgid "assignment used in conditional context"
+msgstr "Igenera in Imvugiro"
+
+#: eval.c:1278
+#, fuzzy
+msgid "division by zero attempted"
+msgstr "ku Zeru"
+
+#: eval.c:1293
+#, fuzzy, c-format
+msgid "division by zero attempted in `%%'"
+msgstr "ku Zeru in"
+
+#: eval.c:1308 profile.c:714
+#, fuzzy, c-format
+msgid "illegal type (%s) in tree_eval"
+msgstr "Ubwoko in"
+
+#: eval.c:1471
+#, fuzzy
+msgid "division by zero attempted in `/='"
+msgstr "ku Zeru in"
+
+#: eval.c:1493
+#, fuzzy, c-format
+msgid "division by zero attempted in `%%='"
+msgstr "ku Zeru in"
+
+#: eval.c:1758
+#, fuzzy, c-format
+msgid "function `%s' called with more arguments than declared"
+msgstr "Umumaro Na: Birenzeho ingingo"
+
+#: eval.c:1802
+#, fuzzy, c-format
+msgid "function `%s' not defined"
+msgstr "Umumaro OYA"
+
+#: eval.c:1865
+#, c-format
+msgid ""
+"\n"
+"\t# Function Call Stack:\n"
+"\n"
+msgstr ""
+
+#: eval.c:1868
+#, c-format
+msgid "\t# -- main --\n"
+msgstr ""
+
+#: eval.c:2023
+#, fuzzy
+msgid "attempt to field reference from non-numeric value"
+msgstr "Kuri Umwanya Indango Bivuye Bikurikije umubare Agaciro"
+
+#: eval.c:2025
+#, fuzzy
+msgid "attempt to reference from null string"
+msgstr "Kuri Indango Bivuye NTAGIHARI Ikurikiranyanyuguti"
+
+#: eval.c:2031
+#, fuzzy, c-format
+msgid "attempt to access field %d"
+msgstr "Kuri Umwanya"
+
+#: eval.c:2052 eval.c:2059 profile.c:935
+#, fuzzy
+msgid "assignment is not allowed to result of builtin function"
+msgstr "Igenera ni OYA Kuri Igisubizo Bya Umumaro"
+
+#: eval.c:2123
+#, fuzzy
+msgid "`IGNORECASE' is a gawk extension"
+msgstr "`ni a Umugereka"
+
+#: eval.c:2153
+#, fuzzy
+msgid "`BINMODE' is a gawk extension"
+msgstr "`ni a Umugereka"
+
+#: eval.c:2275
+#, c-format
+msgid "bad `%sFMT' specification `%s'"
+msgstr ""
+
+#: eval.c:2353
+#, fuzzy
+msgid "turning off `--lint' due to assignment to `LINT'"
+msgstr "Bidakora Kuri Igenera Kuri"
+
+#: ext.c:60 ext.c:64
+#, fuzzy
+msgid "`extension' is a gawk extension"
+msgstr "`ni a Umugereka"
+
+#: ext.c:74
+#, fuzzy, c-format
+msgid "extension: cannot open `%s' (%s)\n"
+msgstr "Umugereka Gufungura"
+
+#: ext.c:82
+#, fuzzy, c-format
+msgid "extension: library `%s': cannot call function `%s' (%s)\n"
+msgstr "Umugereka Isomero Umumaro"
+
+#: ext.c:102
+#, fuzzy
+msgid "extension: missing function name"
+msgstr "Umugereka Ibuze Umumaro Izina:"
+
+#: ext.c:107
+#, fuzzy, c-format
+msgid "extension: illegal character `%c' in function name `%s'"
+msgstr "Umugereka Inyuguti in Umumaro Izina:"
+
+#: ext.c:113
+#, fuzzy, c-format
+msgid "extension: can't redefine function `%s'"
+msgstr "Umugereka Umumaro"
+
+#: ext.c:117
+#, fuzzy, c-format
+msgid "extension: function `%s' already defined"
+msgstr "Umugereka Umumaro"
+
+#: ext.c:122
+#, fuzzy, c-format
+msgid "extension: can't use gawk built-in `%s' as function name"
+msgstr "Umugereka Gukoresha in Nka Umumaro Izina:"
+
+#: ext.c:124
+#, fuzzy, c-format
+msgid "extension: function name `%s' previously defined"
+msgstr "Umugereka Umumaro Izina:"
+
+#: ext.c:201
+#, fuzzy, c-format
+msgid "function `%s' defined to take no more than %d argument(s)"
+msgstr "Umumaro Kuri Oya Birenzeho S"
+
+#: ext.c:204
+#, fuzzy, c-format
+msgid "function `%s': missing argument #%d"
+msgstr "Umumaro Ibuze"
+
+#: ext.c:214
+#, fuzzy, c-format
+msgid "function `%s': argument #%d: attempt to use scalar as an array"
+msgstr "Umumaro Kuri Gukoresha Nka Imbonerahamwe"
+
+#: ext.c:218
+#, fuzzy, c-format
+msgid "function `%s': argument #%d: attempt to use array as a scalar"
+msgstr "Umumaro Kuri Gukoresha Imbonerahamwe Nka a"
+
+#: ext.c:243
+msgid "Operation Not Supported"
+msgstr ""
+
+#: field.c:326
+#, fuzzy
+msgid "NF set to negative value"
+msgstr "Gushyiraho Kuri Agaciro"
+
+#: field.c:819
+#, fuzzy
+msgid "split: second argument is not an array"
+msgstr "Gutandukanya ISEGONDA ni OYA Imbonerahamwe"
+
+#: field.c:853
+#, fuzzy
+msgid "split: null string for third arg is a gawk extension"
+msgstr "Gutandukanya NTAGIHARI Ikurikiranyanyuguti kugirango ni a Umugereka"
+
+#: field.c:905
+#, fuzzy
+msgid "`FIELDWIDTHS' is a gawk extension"
+msgstr "`ni a Umugereka"
+
+#: field.c:935 field.c:946
+#, c-format
+msgid "invalid FIELDWIDTHS value, near `%s'"
+msgstr ""
+
+#: field.c:1027
+#, fuzzy
+msgid "null string for `FS' is a gawk extension"
+msgstr "NTAGIHARI Ikurikiranyanyuguti kugirango ni a Umugereka"
+
+#: getopt.c:571 getopt.c:590
+#, fuzzy, c-format
+msgid "%s: option `%s' is ambiguous\n"
+msgstr "%s:Ihitamo ni"
+
+#: getopt.c:623 getopt.c:627
+#, fuzzy, c-format
+msgid "%s: option `--%s' doesn't allow an argument\n"
+msgstr "%s:Ihitamo Kwemerera"
+
+#: getopt.c:636 getopt.c:641
+#, fuzzy, c-format
+msgid "%s: option `%c%s' doesn't allow an argument\n"
+msgstr "%s:Ihitamo Kwemerera"
+
+#: getopt.c:687 getopt.c:709 getopt.c:1040 getopt.c:1062
+#, fuzzy, c-format
+msgid "%s: option `%s' requires an argument\n"
+msgstr "%s:Ihitamo"
+
+#: getopt.c:747 getopt.c:750
+#, fuzzy, c-format
+msgid "%s: unrecognized option `--%s'\n"
+msgstr "%s:Ihitamo"
+
+#: getopt.c:758 getopt.c:761
+#, fuzzy, c-format
+msgid "%s: unrecognized option `%c%s'\n"
+msgstr "%s:Ihitamo"
+
+#: getopt.c:816 getopt.c:819
+#, fuzzy, c-format
+msgid "%s: illegal option -- %c\n"
+msgstr "%s:Ihitamo"
+
+#: getopt.c:825 getopt.c:828
+#, fuzzy, c-format
+msgid "%s: invalid option -- %c\n"
+msgstr "%s:Sibyo Ihitamo"
+
+#: getopt.c:883 getopt.c:902 getopt.c:1115 getopt.c:1136 main.c:448
+#, fuzzy, c-format
+msgid "%s: option requires an argument -- %c\n"
+msgstr "%s:Ihitamo"
+
+#: getopt.c:955 getopt.c:974
+#, fuzzy, c-format
+msgid "%s: option `-W %s' is ambiguous\n"
+msgstr "%s:Ihitamo ni"
+
+#: getopt.c:998 getopt.c:1019
+#, fuzzy, c-format
+msgid "%s: option `-W %s' doesn't allow an argument\n"
+msgstr "%s:Ihitamo Kwemerera"
+
+#: io.c:307
+#, fuzzy, c-format
+msgid "cannot open file `%s' for reading (%s)"
+msgstr "Gufungura IDOSIYE kugirango"
+
+#: io.c:398
+#, fuzzy, c-format
+msgid "close of fd %d (`%s') failed (%s)"
+msgstr "Gufunga Bya Byanze"
+
+#: io.c:536
+#, fuzzy, c-format
+msgid "invalid tree type %s in redirect()"
+msgstr "Sibyo Ubwoko in"
+
+#: io.c:542
+#, fuzzy, c-format
+msgid "expression in `%s' redirection only has numeric value"
+msgstr "imvugo in Bikurikije umubare Agaciro"
+
+#: io.c:548
+#, fuzzy, c-format
+msgid "expression for `%s' redirection has null string value"
+msgstr "imvugo kugirango NTAGIHARI Ikurikiranyanyuguti Agaciro"
+
+#: io.c:553
+#, fuzzy, c-format
+msgid "filename `%s' for `%s' redirection may be result of logical expression"
+msgstr ""
+"Izina ry'idosiye: kugirango Gicurasi Igisubizo Bya Bijyanye n'inyurabwenge "
+"imvugo"
+
+#: io.c:591
+#, fuzzy, c-format
+msgid "unnecessary mixing of `>' and `>>' for file `%.*s'"
+msgstr "Bya Na kugirango IDOSIYE"
+
+#: io.c:643
+#, fuzzy, c-format
+msgid "can't open pipe `%s' for output (%s)"
+msgstr "Gufungura kugirango Ibisohoka"
+
+#: io.c:652
+#, fuzzy, c-format
+msgid "can't open pipe `%s' for input (%s)"
+msgstr "Gufungura kugirango Iyinjiza"
+
+#: io.c:665
+#, fuzzy, c-format
+msgid "can't open two way socket `%s' for input/output (%s)"
+msgstr "Gufungura kugirango Iyinjiza Ibisohoka"
+
+#: io.c:669
+#, fuzzy, c-format
+msgid "can't open two way pipe `%s' for input/output (%s)"
+msgstr "Gufungura kugirango Iyinjiza Ibisohoka"
+
+#: io.c:745
+#, fuzzy, c-format
+msgid "can't redirect from `%s' (%s)"
+msgstr "Bivuye"
+
+#: io.c:748
+#, fuzzy, c-format
+msgid "can't redirect to `%s' (%s)"
+msgstr "Kuri"
+
+#: io.c:787
+#, fuzzy
+msgid ""
+"reached system limit for open files: starting to multiplex file descriptors"
+msgstr "Sisitemu kugirango Gufungura Idosiye Kuri IDOSIYE"
+
+#: io.c:803
+#, fuzzy, c-format
+msgid "close of `%s' failed (%s)."
+msgstr "Gufunga Bya Byanze"
+
+#: io.c:811
+#, fuzzy
+msgid "too many pipes or input files open"
+msgstr "Cyangwa Iyinjiza Idosiye Gufungura"
+
+#: io.c:834
+#, fuzzy
+msgid "close: second argument must be `to' or `from'"
+msgstr "Gufunga ISEGONDA Cyangwa"
+
+#: io.c:848
+#, fuzzy, c-format
+msgid "close: `%.*s' is not an open file, pipe or co-process"
+msgstr "Gufunga."
+
+#: io.c:852
+#, fuzzy
+msgid "close of redirection that was never opened"
+msgstr "Gufunga Bya Nta narimwe"
+
+#: io.c:948
+#, fuzzy, c-format
+msgid "close: redirection `%s' not opened with `|&', second argument ignored"
+msgstr "Gufunga OYA Na: ISEGONDA"
+
+#: io.c:964
+#, fuzzy, c-format
+msgid "failure status (%d) on pipe close of `%s' (%s)"
+msgstr "Imimerere ku Gufunga Bya"
+
+#: io.c:967
+#, fuzzy, c-format
+msgid "failure status (%d) on file close of `%s' (%s)"
+msgstr "Imimerere ku IDOSIYE Gufunga Bya"
+
+#: io.c:987
+#, fuzzy, c-format
+msgid "no explicit close of socket `%s' provided"
+msgstr "Oya Gufunga Bya"
+
+#: io.c:990
+#, fuzzy, c-format
+msgid "no explicit close of co-process `%s' provided"
+msgstr "Oya Gufunga Bya"
+
+#: io.c:993
+#, fuzzy, c-format
+msgid "no explicit close of pipe `%s' provided"
+msgstr "Oya Gufunga Bya"
+
+#: io.c:996
+#, fuzzy, c-format
+msgid "no explicit close of file `%s' provided"
+msgstr "Oya Gufunga Bya IDOSIYE"
+
+#: io.c:1025 io.c:1080 main.c:718 main.c:756
+#, fuzzy, c-format
+msgid "error writing standard output (%s)"
+msgstr "Ikosa Bisanzwe Ibisohoka"
+
+#: io.c:1029 io.c:1085
+#, fuzzy, c-format
+msgid "error writing standard error (%s)"
+msgstr "Ikosa Bisanzwe Ikosa"
+
+#: io.c:1037
+#, fuzzy, c-format
+msgid "pipe flush of `%s' failed (%s)."
+msgstr "Bya Byanze"
+
+#: io.c:1040
+#, fuzzy, c-format
+msgid "co-process flush of pipe to `%s' failed (%s)."
+msgstr "Bya Kuri Byanze"
+
+#: io.c:1043
+#, fuzzy, c-format
+msgid "file flush of `%s' failed (%s)."
+msgstr "IDOSIYE Bya Byanze"
+
+#: io.c:1205
+#, fuzzy
+msgid "/inet/raw client not ready yet, sorry"
+msgstr "/Umukiriya OYA Cyiteguye"
+
+#: io.c:1207 io.c:1244
+#, fuzzy
+msgid "only root may use `/inet/raw'."
+msgstr "Imizi Gicurasi Gukoresha"
+
+#: io.c:1242
+#, fuzzy
+msgid "/inet/raw server not ready yet, sorry"
+msgstr "/Seriveri OYA Cyiteguye"
+
+#: io.c:1332
+#, fuzzy, c-format
+msgid "no (known) protocol supplied in special filename `%s'"
+msgstr "Oya Porotokole in Bidasanzwe Izina ry'idosiye:"
+
+#: io.c:1350
+#, fuzzy, c-format
+msgid "special file name `%s' is incomplete"
+msgstr "Bidasanzwe IDOSIYE Izina: ni"
+
+#: io.c:1362
+#, fuzzy, c-format
+msgid "local port invalid in `%s'"
+msgstr "Umuyoboro Sibyo in"
+
+#: io.c:1374
+#, fuzzy
+msgid "must supply a remote hostname to `/inet'"
+msgstr "a Izina ry'inturo: Kuri"
+
+#: io.c:1389
+#, fuzzy
+msgid "must supply a remote port to `/inet'"
+msgstr "a Umuyoboro Kuri"
+
+#: io.c:1395
+#, fuzzy, c-format
+msgid "remote port invalid in `%s'"
+msgstr "Umuyoboro Sibyo in"
+
+#: io.c:1405
+#, fuzzy
+msgid "TCP/IP communications are not supported"
+msgstr "OYA"
+
+#: io.c:1414 io.c:1595
+#, fuzzy, c-format
+msgid "file `%s' is a directory"
+msgstr "IDOSIYE ni a bushyinguro"
+
+#: io.c:1484
+#, fuzzy, c-format
+msgid "use `PROCINFO[\"%s\"]' instead of `%s'"
+msgstr "Gukoresha Bya"
+
+#: io.c:1516
+#, fuzzy
+msgid "use `PROCINFO[...]' instead of `/dev/user'"
+msgstr "Gukoresha Bya"
+
+#: io.c:1581 io.c:1763
+#, fuzzy, c-format
+msgid "could not open `%s', mode `%s'"
+msgstr "OYA Gufungura Ubwoko"
+
+#: io.c:1814
+#, fuzzy, c-format
+msgid "close of master pty failed (%s)"
+msgstr "Gufunga Bya Mugenga Byanze"
+
+#: io.c:1816 io.c:1968 io.c:2119
+#, fuzzy, c-format
+msgid "close of stdout in child failed (%s)"
+msgstr "Gufunga Bya in Byanze"
+
+#: io.c:1819
+#, fuzzy, c-format
+msgid "moving slave pty to stdout in child failed (dup: %s)"
+msgstr "Kuri in Byanze"
+
+#: io.c:1821 io.c:1973
+#, fuzzy, c-format
+msgid "close of stdin in child failed (%s)"
+msgstr "Gufunga Bya in Byanze"
+
+#: io.c:1824
+#, fuzzy, c-format
+msgid "moving slave pty to stdin in child failed (dup: %s)"
+msgstr "Kuri in Byanze"
+
+#: io.c:1826 io.c:1845
+#, fuzzy, c-format
+msgid "close of slave pty failed (%s)"
+msgstr "Gufunga Bya Byanze"
+
+#: io.c:1919 io.c:1971 io.c:2100 io.c:2122
+#, fuzzy, c-format
+msgid "moving pipe to stdout in child failed (dup: %s)"
+msgstr "Kuri in Byanze"
+
+#: io.c:1923 io.c:1976
+#, fuzzy, c-format
+msgid "moving pipe to stdin in child failed (dup: %s)"
+msgstr "Kuri in Byanze"
+
+#: io.c:1940 io.c:2113
+#, fuzzy
+msgid "restoring stdout in parent process failed\n"
+msgstr "in"
+
+#: io.c:1945
+#, fuzzy
+msgid "restoring stdin in parent process failed\n"
+msgstr "in"
+
+#: io.c:1979 io.c:2124 io.c:2135
+#, fuzzy, c-format
+msgid "close of pipe failed (%s)"
+msgstr "Gufunga Bya Byanze"
+
+#: io.c:2024
+#, fuzzy
+msgid "`|&' not supported"
+msgstr "`|&'OYA"
+
+#: io.c:2090
+#, fuzzy, c-format
+msgid "cannot open pipe `%s' (%s)"
+msgstr "Gufungura"
+
+#: io.c:2131
+#, fuzzy, c-format
+msgid "cannot create child process for `%s' (fork: %s)"
+msgstr "Kurema kugirango"
+
+#: io.c:2506
+#, fuzzy, c-format
+msgid "data file `%s' is empty"
+msgstr "Ibyatanzwe IDOSIYE ni ubusa"
+
+#: io.c:2547 io.c:2555
+#, fuzzy
+msgid "could not allocate more input memory"
+msgstr "OYA Birenzeho Iyinjiza Ububiko"
+
+#: io.c:2919 io.c:2984
+#, fuzzy, c-format
+msgid "error reading input file `%s': %s"
+msgstr "Ikosa Iyinjiza IDOSIYE"
+
+#: io.c:3109
+#, fuzzy
+msgid "multicharacter value of `RS' is a gawk extension"
+msgstr "Agaciro Bya ni a Umugereka"
+
+#: main.c:338
+#, fuzzy
+msgid "`-m[fr]' option irrelevant in gawk"
+msgstr "`-M Ihitamo in"
+
+#: main.c:340
+#, fuzzy
+msgid "-m option usage: `-m[fr] nnn'"
+msgstr "-M Ihitamo Ikoresha: M"
+
+#: main.c:357
+#, fuzzy, c-format
+msgid "%s: option `-W %s' unrecognized, ignored\n"
+msgstr "%s:Ihitamo"
+
+#: main.c:394
+#, fuzzy
+msgid "empty argument to `--source' ignored"
+msgstr "ubusa Kuri"
+
+#: main.c:467
+#, fuzzy
+msgid "environment variable `POSIXLY_CORRECT' set: turning on `--posix'"
+msgstr "IMPINDURAGACIRO Gushyiraho ku"
+
+#: main.c:472
+msgid "`--posix' overrides `--traditional'"
+msgstr ""
+
+#: main.c:483
+#, fuzzy
+msgid "`--posix'/`--traditional' overrides `--non-decimal-data'"
+msgstr "`--NYACUMI"
+
+#: main.c:487
+#, fuzzy, c-format
+msgid "running %s setuid root may be a security problem"
+msgstr "Imizi Gicurasi a Umutekano"
+
+#: main.c:528
+#, fuzzy, c-format
+msgid "can't set binary mode on stdin (%s)"
+msgstr "Gushyiraho Nyabibiri Ubwoko ku"
+
+#: main.c:531
+#, fuzzy, c-format
+msgid "can't set binary mode on stdout (%s)"
+msgstr "Gushyiraho Nyabibiri Ubwoko ku"
+
+#: main.c:533
+#, fuzzy, c-format
+msgid "can't set binary mode on stderr (%s)"
+msgstr "Gushyiraho Nyabibiri Ubwoko ku"
+
+#: main.c:572
+#, fuzzy
+msgid "no program text at all!"
+msgstr "Oya Porogaramu Umwandiko ku Byose"
+
+#: main.c:665
+#, fuzzy, c-format
+msgid "Usage: %s [POSIX or GNU style options] -f progfile [--] file ...\n"
+msgstr "Cyangwa IMISUSIRE Amahitamo F IDOSIYE"
+
+#: main.c:667
+#, fuzzy, c-format
+msgid "Usage: %s [POSIX or GNU style options] [--] %cprogram%c file ...\n"
+msgstr "Cyangwa IMISUSIRE Amahitamo IDOSIYE"
+
+#: main.c:672
+#, fuzzy
+msgid "POSIX options:\t\tGNU long options:\n"
+msgstr "Amahitamo Amahitamo"
+
+#: main.c:673
+#, fuzzy
+msgid "\t-f progfile\t\t--file=progfile\n"
+msgstr "-F IDOSIYE"
+
+#: main.c:674
+#, fuzzy
+msgid "\t-F fs\t\t\t--field-separator=fs\n"
+msgstr "-Umwanya Mutandukanya"
+
+#: main.c:675
+#, fuzzy
+msgid "\t-v var=val\t\t--assign=var=val\n"
+msgstr "-v VAR Kugenera... VAR"
+
+#: main.c:676
+#, fuzzy
+msgid "\t-m[fr] val\n"
+msgstr "-M"
+
+#: main.c:677
+msgid "\t-W compat\t\t--compat\n"
+msgstr ""
+
+#: main.c:678
+msgid "\t-W copyleft\t\t--copyleft\n"
+msgstr ""
+
+#: main.c:679
+msgid "\t-W copyright\t\t--copyright\n"
+msgstr ""
+
+#: main.c:680
+#, fuzzy
+msgid "\t-W dump-variables[=file]\t--dump-variables[=file]\n"
+msgstr "-Ibihinduka IDOSIYE Ibihinduka IDOSIYE"
+
+#: main.c:681
+#, fuzzy
+msgid "\t-W exec=file\t\t--exec=file\n"
+msgstr "-Ibijyana IDOSIYE Ibijyana IDOSIYE"
+
+#: main.c:682
+msgid "\t-W gen-po\t\t--gen-po\n"
+msgstr ""
+
+#: main.c:683
+msgid "\t-W help\t\t\t--help\n"
+msgstr ""
+
+#: main.c:684
+msgid "\t-W lint[=fatal]\t\t--lint[=fatal]\n"
+msgstr ""
+
+#: main.c:685
+msgid "\t-W lint-old\t\t--lint-old\n"
+msgstr ""
+
+#: main.c:686
+#, fuzzy
+msgid "\t-W non-decimal-data\t--non-decimal-data\n"
+msgstr "-NYACUMI NYACUMI"
+
+#: main.c:688
+msgid "\t-W nostalgia\t\t--nostalgia\n"
+msgstr ""
+
+#: main.c:691
+msgid "\t-W parsedebug\t\t--parsedebug\n"
+msgstr ""
+
+#: main.c:693
+#, fuzzy
+msgid "\t-W profile[=file]\t--profile[=file]\n"
+msgstr "-Ibijyana IDOSIYE Ibijyana IDOSIYE"
+
+#: main.c:694
+msgid "\t-W posix\t\t--posix\n"
+msgstr ""
+
+#: main.c:695
+msgid "\t-W re-interval\t\t--re-interval\n"
+msgstr ""
+
+#: main.c:696
+#, fuzzy
+msgid "\t-W source=program-text\t--source=program-text\n"
+msgstr "-Inkomoko Porogaramu Inkomoko Porogaramu"
+
+#: main.c:697
+msgid "\t-W traditional\t\t--traditional\n"
+msgstr ""
+
+#: main.c:698
+msgid "\t-W usage\t\t--usage\n"
+msgstr ""
+
+#: main.c:699
+msgid "\t-W version\t\t--version\n"
+msgstr ""
+
+#: main.c:703
+#, fuzzy
+msgid ""
+"\n"
+"To report bugs, see node `Bugs' in `gawk.info', which is\n"
+"section `Reporting Problems and Bugs' in the printed version.\n"
+"\n"
+msgstr "Icyegeranyo in Na in i Byacapwe Verisiyo"
+
+#: main.c:707
+#, fuzzy
+msgid ""
+"gawk is a pattern scanning and processing language.\n"
+"By default it reads standard input and writes standard output.\n"
+"\n"
+msgstr ""
+"ni a Ishusho Na Inonosora Ururimi Mburabuzi Bisanzwe Iyinjiza Na Bisanzwe "
+"Ibisohoka"
+
+#: main.c:711
+#, fuzzy
+msgid ""
+"Examples:\n"
+"\tgawk '{ sum += $1 }; END { print sum }' file\n"
+"\tgawk -F: '{ print $1 }' /etc/passwd\n"
+msgstr "Igiteranyo Gucapa Igiteranyo Gucapa"
+
+#: main.c:731
+#, fuzzy, c-format
+msgid ""
+"Copyright (C) 1989, 1991-%d Free Software Foundation.\n"
+"\n"
+"This program is free software; you can redistribute it and/or modify\n"
+"it under the terms of the GNU General Public License as published by\n"
+"the Free Software Foundation; either version 2 of the License, or\n"
+"(at your option) any later version.\n"
+"\n"
+msgstr ""
+"C Porogaramu ni Kigenga Na Cyangwa i Bya i Nka Verisiyo 2. Bya i ku Ihitamo "
+"Verisiyo"
+
+#: main.c:739
+#, fuzzy
+msgid ""
+"This program is distributed in the hope that it will be useful,\n"
+"but WITHOUT ANY WARRANTY; without even the implied warranty of\n"
+"MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n"
+"GNU General Public License for more details.\n"
+"\n"
+msgstr ""
+"Porogaramu ni in i ATARIIGIHARWE i Cyangwa A kugirango Birenzeho Birambuye"
+
+#: main.c:745
+#, fuzzy
+msgid ""
+"You should have received a copy of the GNU General Public License\n"
+"along with this program; if not, write to the Free Software\n"
+"Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, "
+"USA.\n"
+msgstr ""
+"BYAKIRIWE a Gukoporora Bya i Na: iyi Porogaramu NIBA OYA Kwandika Kuri i"
+
+#: main.c:781
+#, fuzzy
+msgid "-Ft does not set FS to tab in POSIX awk"
+msgstr "-OYA Gushyiraho Kuri Isunika in"
+
+#: main.c:1018
+#, fuzzy, c-format
+msgid ""
+"%s: `%s' argument to `-v' not in `var=value' form\n"
+"\n"
+msgstr "%s:`%s'Kuri OYA in VAR"
+
+#: main.c:1038
+#, fuzzy, c-format
+msgid "`%s' is not a legal variable name"
+msgstr "`%s'ni OYA a By'amategeko IMPINDURAGACIRO Izina:"
+
+#: main.c:1041
+#, fuzzy, c-format
+msgid "`%s' is not a variable name, looking for file `%s=%s'"
+msgstr "`%s'ni OYA a IMPINDURAGACIRO Izina: kugirango IDOSIYE"
+
+#: main.c:1074
+#, fuzzy
+msgid "floating point exception"
+msgstr "Bihindagurika Akadomo Irengayobora(-)"
+
+#: main.c:1081
+#, fuzzy
+msgid "fatal error: internal error"
+msgstr "Ikosa By'imbere Ikosa"
+
+#: main.c:1132
+#, fuzzy, c-format
+msgid "no pre-opened fd %d"
+msgstr "Oya Byahawe imiterere mbere"
+
+#: main.c:1139
+#, fuzzy, c-format
+msgid "could not pre-open /dev/null for fd %d"
+msgstr "OYA Byahawe imiterere mbere Gufungura NTAGIHARI kugirango"
+
+#: main.c:1162 main.c:1171
+#, fuzzy, c-format
+msgid "could not find groups: %s"
+msgstr "OYA Gushaka Amatsinda"
+
+#: msg.c:54
+#, fuzzy, c-format
+msgid "cmd. line:"
+msgstr "Cmd+."
+
+#: msg.c:120
+#, fuzzy
+msgid "warning: "
+msgstr "Iburira!"
+
+# starmath/source\smres.src:RID_ERR_IDENT.text
+#: msg.c:142
+#, fuzzy
+msgid "error: "
+msgstr "IKOSA"
+
+#: msg.c:178
+msgid "fatal: "
+msgstr ""
+
+#: node.c:59 node.c:66 node.c:75 node.c:90 node.c:119
+#, fuzzy
+msgid "can't convert string to float"
+msgstr "GUHINDURA Ikurikiranyanyuguti Kuri Kureremba"
+
+#: node.c:414
+#, fuzzy
+msgid "backslash at end of string"
+msgstr "ku Impera Bya Ikurikiranyanyuguti"
+
+#: node.c:604
+#, fuzzy
+msgid "POSIX does not allow `\\x' escapes"
+msgstr "OYA Kwemerera"
+
+#: node.c:610
+#, fuzzy
+msgid "no hex digits in `\\x' escape sequence"
+msgstr "Oya in"
+
+#: node.c:644
+#, fuzzy, c-format
+msgid "escape sequence `\\%c' treated as plain `%c'"
+msgstr "Nka Byuzuye"
+
+#: posix/gawkmisc.c:172
+#, fuzzy, c-format
+msgid "%s %s `%s': could not set close-on-exec: (fcntl: %s)"
+msgstr "%s%s`%s':OYA Gushyiraho Gufunga ku"
+
+#: profile.c:91
+#, fuzzy, c-format
+msgid "could not open `%s' for writing: %s"
+msgstr "OYA Gufungura kugirango"
+
+#: profile.c:467
+#, fuzzy, c-format
+msgid "internal error: %s with null vname"
+msgstr "By'imbere Ikosa Na: NTAGIHARI"
+
+#: profile.c:531
+#, fuzzy
+msgid "# treated internally as `delete'"
+msgstr "#Nka"
+
+#: profile.c:1168
+#, fuzzy, c-format
+msgid "# this is a dynamically loaded extension function"
+msgstr "#iyi ni a Umugereka Umumaro"
+
+#: profile.c:1199
+#, fuzzy, c-format
+msgid "\t# gawk profile, created %s\n"
+msgstr "#Ibijyana Byaremwe"
+
+#: profile.c:1202
+#, fuzzy, c-format
+msgid ""
+"\t# BEGIN block(s)\n"
+"\n"
+msgstr "#Funga S"
+
+#: profile.c:1212
+#, fuzzy, c-format
+msgid ""
+"\t# Rule(s)\n"
+"\n"
+msgstr "#S"
+
+#: profile.c:1218
+#, fuzzy, c-format
+msgid ""
+"\t# END block(s)\n"
+"\n"
+msgstr "#Funga S"
+
+#: profile.c:1238
+#, c-format
+msgid ""
+"\n"
+"\t# Functions, listed alphabetically\n"
+msgstr ""
+
+#: profile.c:1453
+#, fuzzy, c-format
+msgid "unexpected type %s in prec_level"
+msgstr "Ubwoko in"
+
+#: regcomp.c:160
+msgid "Success"
+msgstr "Ibyatunganye"
+
+#: regcomp.c:163
+#, fuzzy
+msgid "No match"
+msgstr "BIHUYE"
+
+#: regcomp.c:166
+#, fuzzy
+msgid "Invalid regular expression"
+msgstr "Ibisanzwe imvugo"
+
+#: regcomp.c:169
+#, fuzzy
+msgid "Invalid collation character"
+msgstr "Inyuguti"
+
+#: regcomp.c:172
+#, fuzzy
+msgid "Invalid character class name"
+msgstr "Inyuguti ishuri Izina:"
+
+#: regcomp.c:175
+msgid "Trailing backslash"
+msgstr ""
+
+#: regcomp.c:178
+#, fuzzy
+msgid "Invalid back reference"
+msgstr "Inyuma Indango"
+
+#: regcomp.c:181
+#, fuzzy
+msgid "Unmatched [ or [^"
+msgstr "Cyangwa"
+
+#: regcomp.c:184
+#, fuzzy
+msgid "Unmatched ( or \\("
+msgstr "Cyangwa"
+
+#: regcomp.c:187
+msgid "Unmatched \\{"
+msgstr ""
+
+#: regcomp.c:190
+#, fuzzy
+msgid "Invalid content of \\{\\}"
+msgstr "Ibikubiyemo Bya"
+
+#: regcomp.c:193
+#, fuzzy
+msgid "Invalid range end"
+msgstr "Urutonde Impera"
+
+#: regcomp.c:196
+msgid "Memory exhausted"
+msgstr ""
+
+#: regcomp.c:199
+#, fuzzy
+msgid "Invalid preceding regular expression"
+msgstr "Ibisanzwe imvugo"
+
+#: regcomp.c:202
+#, fuzzy
+msgid "Premature end of regular expression"
+msgstr "Impera Bya Ibisanzwe imvugo"
+
+#: regcomp.c:205
+#, fuzzy
+msgid "Regular expression too big"
+msgstr "imvugo"
+
+#: regcomp.c:208
+#, fuzzy
+msgid "Unmatched ) or \\)"
+msgstr "Cyangwa"
+
+#: regcomp.c:688
+#, fuzzy
+msgid "No previous regular expression"
+msgstr "Ibanjirije Ibisanzwe imvugo"
+
+#, fuzzy
+#~ msgid "function %s called\n"
+#~ msgstr "Umumaro"
+
+#, fuzzy
+#~ msgid "field %d in FIELDWIDTHS, must be > 0"
+#~ msgstr "Umwanya in 0"
diff --git a/po/sv.gmo b/po/sv.gmo
index b5c5c1e9..6e7b484a 100644
--- a/po/sv.gmo
+++ b/po/sv.gmo
Binary files differ
diff --git a/po/sv.po b/po/sv.po
index 66608072..ff481a56 100644
--- a/po/sv.po
+++ b/po/sv.po
@@ -8,7 +8,7 @@ msgid ""
msgstr ""
"Project-Id-Version: gawk 3.1.1m\n"
"Report-Msgid-Bugs-To: arnold@skeeve.com\n"
-"POT-Creation-Date: 2004-07-15 13:02+0300\n"
+"POT-Creation-Date: 2005-07-06 17:20+0300\n"
"PO-Revision-Date: 2003-02-27 19:54+0100\n"
"Last-Translator: Martin Sjögren <md9ms@mdstud.chalmers.se>\n"
"Language-Team: Swedish <sv@li.org>\n"
@@ -90,284 +90,299 @@ msgstr "varje regel måste ha ett mönster eller en åtgärdsdel"
msgid "`%s' is a built-in function, it cannot be redefined"
msgstr "\"%s\" är en inbyggd funktion, den kan inte definieras om"
-#: awkgram.y:314
+#: awkgram.y:313
+#, fuzzy
+msgid "regexp constant `//' looks like a C++ comment, but is not"
+msgstr "regexp-konstanten \"/%s/\" ser ut som en C-kommentar men är inte det"
+
+#: awkgram.y:316
#, c-format
msgid "regexp constant `/%s/' looks like a C comment, but is not"
msgstr "regexp-konstanten \"/%s/\" ser ut som en C-kommentar men är inte det"
-#: awkgram.y:341 awkgram.y:619
+#: awkgram.y:343 awkgram.y:623
msgid "statement may have no effect"
msgstr "kommandot kanske inte har någon effekt"
-#: awkgram.y:436 awkgram.y:456
+#: awkgram.y:440 awkgram.y:460
#, c-format
msgid "`%s' used in %s action"
msgstr "\"%s\" använd i %s-åtgärden"
-#: awkgram.y:449 awkgram.y:452
+#: awkgram.y:453 awkgram.y:456
msgid "`nextfile' is a gawk extension"
msgstr "\"nextfile\" är en gawk-utökning"
-#: awkgram.y:466
+#: awkgram.y:470
msgid "`return' used outside function context"
msgstr "\"return\" använd utanför funktion"
-#: awkgram.y:508
+#: awkgram.y:512
msgid "plain `print' in BEGIN or END rule should probably be `print \"\"'"
msgstr ""
"ensamt \"print\" i BEGIN eller END-regel bör troligen vara 'print \"\"'"
-#: awkgram.y:521 awkgram.y:528
+#: awkgram.y:525 awkgram.y:532
msgid "`delete array' is a gawk extension"
msgstr "\"delete array\" är en gawk-utökning"
-#: awkgram.y:536 awkgram.y:543
+#: awkgram.y:540 awkgram.y:547
msgid "`delete(array)' is a non-portable tawk extension"
msgstr "\"delete(array)\" är en icke portabel tawk-utökning"
-#: awkgram.y:587
+#: awkgram.y:591
#, c-format
msgid "duplicate case values in switch body: %s"
msgstr ""
-#: awkgram.y:597
+#: awkgram.y:601
msgid "Duplicate `default' detected in switch body"
msgstr ""
-#: awkgram.y:686
+#: awkgram.y:690
msgid "multistage two-way pipelines don't work"
msgstr "flerstegs dubbelriktade rör fungerar inte"
-#: awkgram.y:777
+#: awkgram.y:781
msgid "regular expression on right of assignment"
msgstr "reguljärt uttryck i högerledet av en tilldelning"
-#: awkgram.y:800
+#: awkgram.y:804
msgid "regular expression on left of `~' or `!~' operator"
msgstr "reguljärt uttryck på vänster sida om en \"~\"- eller \"!~\"-operator"
-#: awkgram.y:808
+#: awkgram.y:812
msgid "regular expression on right of comparison"
msgstr "reguljärt uttryck i högerledet av en jämförelse"
-#: awkgram.y:875
+#: awkgram.y:879
msgid "non-redirected `getline' undefined inside END action"
msgstr "icke omdirigerad \"getline\" odefinierad inuti END-åtgärd"
-#: awkgram.y:902
+#: awkgram.y:906
msgid "call of `length' without parentheses is not portable"
msgstr "anrop av \"length\" utan parenteser är inte portabelt"
-#: awkgram.y:905
+#: awkgram.y:909
msgid "call of `length' without parentheses is deprecated by POSIX"
msgstr "anrop av \"length\" utan parenteser är föråldrat enligt POSIX"
-#: awkgram.y:958
+#: awkgram.y:962
msgid "use of non-array as array"
msgstr ""
-#: awkgram.y:960
+#: awkgram.y:964
msgid "invalid subscript expression"
msgstr "ogiltig indexuttryck"
-#: awkgram.y:1158
+#: awkgram.y:1171
msgid "unexpected newline or end of string"
msgstr "oväntat nyradstecken eller slut på strängen"
-#: awkgram.y:1254
+#: awkgram.y:1267
msgid "empty program text on command line"
msgstr "tom programtext på kommandoraden"
-#: awkgram.y:1307
+#: awkgram.y:1320
#, c-format
msgid "can't open source file `%s' for reading (%s)"
msgstr "kan inte öppna källfilen \"%s\" för läsning (%s)"
-#: awkgram.y:1384
+#: awkgram.y:1397
#, c-format
msgid "can't read sourcefile `%s' (%s)"
msgstr "kan inte läsa källfilen \"%s\" (%s)"
-#: awkgram.y:1392
+#: awkgram.y:1405
#, c-format
msgid "source file `%s' is empty"
msgstr "källfilen \"%s\" är tom"
-#: awkgram.y:1590 awkgram.y:1700 awkgram.y:1718 awkgram.y:2068 awkgram.y:2153
+#: awkgram.y:1596 awkgram.y:1718 awkgram.y:1736 awkgram.y:2107 awkgram.y:2194
msgid "source file does not end in newline"
msgstr "källfilen slutar inte med en ny rad"
-#: awkgram.y:1654
+#: awkgram.y:1658
msgid "unterminated regexp ends with `\\' at end of file"
msgstr "oavslutat reguljärt uttryck slutar med \"\\\" i slutet av filen"
-#: awkgram.y:1674
+#: awkgram.y:1682
+#, c-format
+msgid "%s: %d: tawk regex modifier `/.../%c' doesn't work in gawk"
+msgstr ""
+
+#: awkgram.y:1686
+#, c-format
+msgid "tawk regex modifier `/.../%c' doesn't work in gawk"
+msgstr ""
+
+#: awkgram.y:1693
msgid "unterminated regexp"
msgstr "oavslutat reguljärt uttryck"
-#: awkgram.y:1677
+#: awkgram.y:1696
msgid "unterminated regexp at end of file"
msgstr "oavslutat reguljärt uttryck i slutet av filen"
-#: awkgram.y:1744
+#: awkgram.y:1762
msgid "use of `\\ #...' line continuation is not portable"
msgstr "Användning av \"\\ #...\" för radfortsättning är inte portabelt"
-#: awkgram.y:1756
+#: awkgram.y:1774
msgid "backslash not last character on line"
msgstr "sista tecknet på raden är inte ett omvänt snedstreck"
-#: awkgram.y:1801
+#: awkgram.y:1819
msgid "POSIX does not allow operator `**='"
msgstr "POSIX tillåter inte operatorn \"**=\""
-#: awkgram.y:1803
+#: awkgram.y:1821
msgid "old awk does not support operator `**='"
msgstr "gamla awk stöder inte operatorn \"**=\""
-#: awkgram.y:1812
+#: awkgram.y:1830
msgid "POSIX does not allow operator `**'"
msgstr "POSIX tillåter inte operatorn \"**\""
-#: awkgram.y:1814
+#: awkgram.y:1832
msgid "old awk does not support operator `**'"
msgstr "gamla awk stöder inte operatorn \"**\""
-#: awkgram.y:1845
+#: awkgram.y:1863
msgid "operator `^=' is not supported in old awk"
msgstr "operatorn \"^=\" stöds inte i gamla awk"
-#: awkgram.y:1853
+#: awkgram.y:1871
msgid "operator `^' is not supported in old awk"
msgstr "operatorn \"^\" stöds inte i gamla awk"
-#: awkgram.y:1937 awkgram.y:1954
+#: awkgram.y:1955 awkgram.y:1970
msgid "unterminated string"
msgstr "oavslutad sträng"
-#: awkgram.y:2114
+#: awkgram.y:2155
#, c-format
msgid "invalid char '%c' in expression"
msgstr "ogiltigt tecken \"%c\" i uttryck"
-#: awkgram.y:2162
+#: awkgram.y:2203
#, c-format
msgid "`%s' is a gawk extension"
msgstr "\"%s\" är en gawk-utökning"
-#: awkgram.y:2165
+#: awkgram.y:2206
#, c-format
msgid "`%s' is a Bell Labs extension"
msgstr "\"%s\" är en Bell Labs-utökning"
-#: awkgram.y:2168
+#: awkgram.y:2209
#, c-format
msgid "POSIX does not allow `%s'"
msgstr "POSIX tillåter inte \"%s\""
-#: awkgram.y:2172
+#: awkgram.y:2213
#, c-format
msgid "`%s' is not supported in old awk"
msgstr "\"%s\" stöds inte i gamla awk"
-#: awkgram.y:2198
+#: awkgram.y:2239
msgid "`goto' considered harmful!\n"
msgstr "\"goto\" anses skadlig!\n"
-#: awkgram.y:2260
+#: awkgram.y:2301
#, c-format
msgid "%d is invalid as number of arguments for %s"
msgstr "%d är ett ogiltigt antal argument för %s"
-#: awkgram.y:2279 awkgram.y:2282
+#: awkgram.y:2320 awkgram.y:2323
msgid "match: third argument is a gawk extension"
msgstr "match: tredje argumentet är en gawk-utökning"
-#: awkgram.y:2295
+#: awkgram.y:2336
#, c-format
msgid "%s: string literal as last arg of substitute has no effect"
msgstr ""
"%s: bokstavlig sträng som sista argument till ersättning har ingen effekt"
-#: awkgram.y:2298
+#: awkgram.y:2339
#, c-format
msgid "%s third parameter is not a changeable object"
msgstr "%s: tredje argumentet är inte ett ändringsbart objekt"
-#: awkgram.y:2325 awkgram.y:2328
+#: awkgram.y:2366 awkgram.y:2369
msgid "close: second argument is a gawk extension"
msgstr "close: andra argumentet är en gawk-utökning"
-#: awkgram.y:2338
+#: awkgram.y:2379
msgid "use of dcgettext(_\"...\") is incorrect: remove leading underscore"
msgstr ""
"användandet av dcgettext(_\"...\") är felaktigt: ta bort det inledande "
"understrykningstecknet"
-#: awkgram.y:2353
+#: awkgram.y:2394
msgid "use of dcngettext(_\"...\") is incorrect: remove leading underscore"
msgstr ""
"användandet av dcngettext(_\"...\") är felaktigt: ta bort det inledande "
"understrykningstecknet"
-#: awkgram.y:2424
+#: awkgram.y:2465
#, c-format
msgid "function `%s': parameter #%d, `%s', duplicates parameter #%d"
msgstr "funktionen \"%s\": parameter %d, \"%s\", är samma som parameter %d"
-#: awkgram.y:2457
+#: awkgram.y:2498
#, c-format
msgid "function `%s': parameter `%s' shadows global variable"
msgstr "funktionen \"%s\": parametern \"%s\" överskuggar en global variabel"
-#: awkgram.y:2569
+#: awkgram.y:2610
#, c-format
msgid "could not open `%s' for writing (%s)"
msgstr "kunde inte öpnna \"%s\" för skrivning (%s)"
-#: awkgram.y:2570 profile.c:93
+#: awkgram.y:2611 profile.c:93
msgid "sending profile to standard error"
msgstr "skickar profilen till standard fel"
-#: awkgram.y:2602
+#: awkgram.y:2643
#, c-format
msgid "%s: close failed (%s)"
msgstr "%s: misslyckades att stänga (%s)"
-#: awkgram.y:2723
+#: awkgram.y:2764
msgid "shadow_funcs() called twice!"
msgstr "shadow_funcs() anropad två gånger!"
-#: awkgram.y:2750
+#: awkgram.y:2791
msgid "there were shadowed variables."
msgstr "det fanns överskuggade variabler."
-#: awkgram.y:2823
+#: awkgram.y:2864
#, c-format
msgid "function `%s': can't use function name as parameter name"
msgstr "funktionen \"%s\": kan inte använda funktionsnamn som parameternamn"
-#: awkgram.y:2833
+#: awkgram.y:2874
#, c-format
msgid "function name `%s' previously defined"
msgstr "funktionsnamnet \"%s\" är definierat sedan tidigare"
-#: awkgram.y:2984 awkgram.y:2990
+#: awkgram.y:3025 awkgram.y:3031
#, c-format
msgid "function `%s' called but never defined"
msgstr "funktionen \"%s\" anropad men aldrig definierad"
-#: awkgram.y:2993
+#: awkgram.y:3034
#, c-format
msgid "function `%s' defined but never called"
msgstr "funktionen \"%s\" definierad men aldrig anropad"
-#: awkgram.y:3020
+#: awkgram.y:3061
#, c-format
msgid "regexp constant for parameter #%d yields boolean value"
msgstr "konstant reguljärt uttryck för parameter %d ger ett booleskt värde"
-#: awkgram.y:3033
+#: awkgram.y:3105
#, fuzzy, c-format
msgid ""
"function `%s' called with space between name and `(',\n"
@@ -376,193 +391,198 @@ msgstr ""
"funktionen \"%s\" anropad med blanktecken mellan namnet och \"(\",\n"
"%s"
-#: builtin.c:149
+#: builtin.c:145
#, c-format
msgid "%s to \"%s\" failed (%s)"
msgstr "%s till \"%s\" misslyckades (%s)"
-#: builtin.c:150
+#: builtin.c:146
msgid "standard output"
msgstr "standard ut"
-#: builtin.c:151
+#: builtin.c:147
msgid "reason unknown"
msgstr "okänd anledning"
-#: builtin.c:164
+#: builtin.c:160
msgid "exp: received non-numeric argument"
msgstr "exp: fick ett ickenumeriskt argument"
-#: builtin.c:170
+#: builtin.c:166
#, c-format
msgid "exp: argument %g is out of range"
msgstr "exp: argumentet %g är inte inom tillåten gräns"
-#: builtin.c:228
+#: builtin.c:224
#, c-format
msgid "fflush: cannot flush: pipe `%s' opened for reading, not writing"
msgstr ""
"fflush: kan inte spola: röret \"%s\" öppnat för läsning, inte skrivning"
-#: builtin.c:231
+#: builtin.c:227
#, c-format
msgid "fflush: cannot flush: file `%s' opened for reading, not writing"
msgstr ""
"fflush: kan inte spola: filen \"%s\" öppnad för läsning, inte skrivning"
-#: builtin.c:243
+#: builtin.c:239
#, c-format
msgid "fflush: `%s' is not an open file, pipe or co-process"
msgstr "fflush: \"%s\" är inte en öppen fil, rör eller koprocess"
-#: builtin.c:338
+#: builtin.c:332
msgid "index: received non-string first argument"
msgstr "index: första argumentet är inte en sträng"
-#: builtin.c:340
+#: builtin.c:334
msgid "index: received non-string second argument"
msgstr "index: andra argumentet är inte en sträng"
-#: builtin.c:454
+#: builtin.c:449
msgid "int: received non-numeric argument"
msgstr "int: fick ett ickenumeriskt argument"
-#: builtin.c:471
+#: builtin.c:472
+#, fuzzy
+msgid "`length(array)' is a gawk extension"
+msgstr "\"delete array\" är en gawk-utökning"
+
+#: builtin.c:481
msgid "length: received non-string argument"
msgstr "length: fick ett argument som inte är en sträng"
-#: builtin.c:487
+#: builtin.c:506
msgid "log: received non-numeric argument"
msgstr "log: fick ett ickenumeriskt argument"
-#: builtin.c:490
+#: builtin.c:509
#, c-format
msgid "log: received negative argument %g"
msgstr "log: fick ett negativt argumentet %g"
-#: builtin.c:654 builtin.c:657
+#: builtin.c:673 builtin.c:676
msgid "must use `count$' on all formats or none"
msgstr "måste använda \"count$\" på alla eller inga format"
-#: builtin.c:759
+#: builtin.c:778
msgid "`$' is not permitted in awk formats"
msgstr "\"$\" tillåts inte i awkformat"
-#: builtin.c:765
+#: builtin.c:784
msgid "arg count with `$' must be > 0"
msgstr "argumentantalet med \"$\" måste vara > 0"
-#: builtin.c:767
+#: builtin.c:786
#, c-format
msgid "arg count %ld greater than total number of supplied arguments"
msgstr "argumentantalet %ld är större än antalet givna argument"
-#: builtin.c:769
+#: builtin.c:788
msgid "`$' not permitted after period in format"
msgstr "\"$\" tillåts inte efter en punkt i formatet"
-#: builtin.c:782
+#: builtin.c:801
msgid "no `$' supplied for positional field width or precision"
msgstr "inget \"$\" bifogat för positionsangiven fältbredd eller precision"
-#: builtin.c:848
+#: builtin.c:867
msgid "`l' is meaningless in awk formats; ignored"
msgstr "\"l\" är meningslös i awk-format, ignorerad"
-#: builtin.c:852
+#: builtin.c:871
msgid "`l' is not permitted in POSIX awk formats"
msgstr "\"l\" tillåts inte i POSIX awk-format"
-#: builtin.c:863
+#: builtin.c:882
msgid "`L' is meaningless in awk formats; ignored"
msgstr "\"L\" är meningslös i awk-format, ignorerad"
-#: builtin.c:867
+#: builtin.c:886
msgid "`L' is not permitted in POSIX awk formats"
msgstr "\"L\" tillåts inte i POSIX awk-format"
-#: builtin.c:878
+#: builtin.c:897
msgid "`h' is meaningless in awk formats; ignored"
msgstr "\"h\" är meningslös i awk-format, ignorerad"
-#: builtin.c:882
+#: builtin.c:901
msgid "`h' is not permitted in POSIX awk formats"
msgstr "\"h\" tillåts inte i POSIX awk-format"
-#: builtin.c:1111
+#: builtin.c:1132
#, c-format
msgid "[s]printf: value %g is out of range for `%%%c' format"
msgstr ""
-#: builtin.c:1171
+#: builtin.c:1198
msgid "not enough arguments to satisfy format string"
msgstr "för få argument för formatsträngen"
-#: builtin.c:1173
+#: builtin.c:1200
msgid "^ ran out for this one"
msgstr "^ tog slut här"
-#: builtin.c:1178
+#: builtin.c:1205
msgid "[s]printf: format specifier does not have control letter"
msgstr "[s]printf: formatspecifieraren har ingen kommandobokstav"
-#: builtin.c:1181
+#: builtin.c:1208
msgid "too many arguments supplied for format string"
msgstr "för många argument för formatsträngen"
-#: builtin.c:1247 builtin.c:1250
+#: builtin.c:1274 builtin.c:1277
msgid "printf: no arguments"
msgstr "printf: inga argument"
-#: builtin.c:1274
+#: builtin.c:1301
msgid "sqrt: received non-numeric argument"
msgstr "sqrt: fick ickenumeriskt argument"
-#: builtin.c:1278
+#: builtin.c:1305
#, c-format
msgid "sqrt: called with negative argument %g"
msgstr "sqrt: anropad med negativt argument %g"
-#: builtin.c:1301
+#: builtin.c:1329
#, c-format
msgid "substr: start index %g is invalid, using 1"
msgstr "substr: startindex %g är ogiltigt, använder 1"
-#: builtin.c:1306
+#: builtin.c:1334
#, c-format
msgid "substr: non-integer start index %g will be truncated"
msgstr "substr: startindex %g som inte är ett heltal kommer trunkeras"
-#: builtin.c:1325
+#: builtin.c:1353
#, fuzzy, c-format
msgid "substr: length %g is not >= 1"
msgstr "substr: längden %g är <= 0"
-#: builtin.c:1327
+#: builtin.c:1355
#, fuzzy, c-format
msgid "substr: length %g is not >= 0"
msgstr "substr: längden %g är <= 0"
-#: builtin.c:1334
+#: builtin.c:1362
#, c-format
msgid "substr: non-integer length %g will be truncated"
msgstr "substr: längden %g som inte är ett heltal kommer trunkeras"
-#: builtin.c:1339
+#: builtin.c:1367
#, c-format
msgid "substr: length %g too big for string indexing, truncating to %g"
msgstr "substr: längden %g är för stor för strängindexering, trunkeras till %g"
-#: builtin.c:1351
+#: builtin.c:1379
msgid "substr: source string is zero length"
msgstr "substr: källsträngen är tom"
-#: builtin.c:1357
+#: builtin.c:1395
#, c-format
msgid "substr: start index %g is past end of string"
msgstr "substr: startindex %g är bortom strängens slut"
-#: builtin.c:1365
+#: builtin.c:1403
#, c-format
msgid ""
"substr: length %g at start index %g exceeds length of first argument (%lu)"
@@ -570,187 +590,187 @@ msgstr ""
"substr: längden %g vid startindex %g överskrider det första argumentets "
"längd (%lu)"
-#: builtin.c:1400
+#: builtin.c:1478
msgid "strftime: received non-string first argument"
msgstr "strftime: fick ett första argument som inte är en sträng"
-#: builtin.c:1406
+#: builtin.c:1484
msgid "strftime: received empty format string"
msgstr "strftime: fick en tom formatsträng"
-#: builtin.c:1415
+#: builtin.c:1493
msgid "strftime: received non-numeric second argument"
msgstr "strftime: fick ett ickenumeriskt andra argument"
-#: builtin.c:1478
+#: builtin.c:1556
msgid "mktime: received non-string argument"
msgstr "mktime: fick ett argument som inte är en sträng"
-#: builtin.c:1523
+#: builtin.c:1601
msgid "system: received non-string argument"
msgstr "system: fick ett argument som inte är en sträng"
-#: builtin.c:1644 eval.c:2019
+#: builtin.c:1722 eval.c:2039
#, fuzzy, c-format
msgid "reference to uninitialized field `$%d'"
msgstr "referens till icke initierad variabel \"%s\""
-#: builtin.c:1671
+#: builtin.c:1827
msgid "tolower: received non-string argument"
msgstr "tolower: fick ett argument som inte är en sträng"
-#: builtin.c:1720
+#: builtin.c:1857
msgid "toupper: received non-string argument"
msgstr "toupper: fick ett argument som inte är en sträng"
-#: builtin.c:1765
+#: builtin.c:1890
msgid "atan2: received non-numeric first argument"
msgstr "atan2: fick ett ickenumeriskt första argument"
-#: builtin.c:1767
+#: builtin.c:1892
msgid "atan2: received non-numeric second argument"
msgstr "atan2: fick ett ickenumeriskt andra argument"
-#: builtin.c:1786
+#: builtin.c:1911
msgid "sin: received non-numeric argument"
msgstr "sin: fick ett ickenumeriskt argument"
-#: builtin.c:1802
+#: builtin.c:1927
msgid "cos: received non-numeric argument"
msgstr "cos: fick ett ickenumeriskt argument"
-#: builtin.c:1852
+#: builtin.c:1977
msgid "srand: received non-numeric argument"
msgstr "srand: fick ett ickenumeriskt argument"
-#: builtin.c:1887
+#: builtin.c:2012
msgid "match: third argument is not an array"
msgstr "match: tredje argumentet är inte en vektor"
-#: builtin.c:2414
+#: builtin.c:2555
msgid "gensub: third argument of 0 treated as 1"
msgstr "gensub: Nollan i tredje argumentet behandlad som en etta"
-#: builtin.c:2572
+#: builtin.c:2715
msgid "lshift: received non-numeric first argument"
msgstr "lshift: fick ett ickenumeriskt första argument"
-#: builtin.c:2574
+#: builtin.c:2717
#, fuzzy
msgid "lshift: received non-numeric second argument"
msgstr "strftime: fick ett ickenumeriskt andra argument"
-#: builtin.c:2580
+#: builtin.c:2723
#, c-format
msgid "lshift(%lf, %lf): negative values will give strange results"
msgstr "lshift(%lf, %lf): negativa värden kommer ge konstiga resultat"
-#: builtin.c:2582
+#: builtin.c:2725
#, c-format
msgid "lshift(%lf, %lf): fractional values will be truncated"
msgstr "lshift(%lf, %lf): flyttalsvärden kommer trunkeras"
-#: builtin.c:2584
+#: builtin.c:2727
#, c-format
msgid "lshift(%lf, %lf): too large shift value will give strange results"
msgstr "lshift(%lf, %lf): för stora skiftvärden kommer ge konstiga resultat"
-#: builtin.c:2610
+#: builtin.c:2753
msgid "rshift: received non-numeric first argument"
msgstr "rshift: fick ett ickenumeriskt första argument"
-#: builtin.c:2612
+#: builtin.c:2755
#, fuzzy
msgid "rshift: received non-numeric second argument"
msgstr "strftime: fick ett ickenumeriskt andra argument"
-#: builtin.c:2618
+#: builtin.c:2761
#, c-format
msgid "rshift(%lf, %lf): negative values will give strange results"
msgstr "rshift(%lf, %lf): negativa värden kommer ge konstiga resultat"
-#: builtin.c:2620
+#: builtin.c:2763
#, c-format
msgid "rshift(%lf, %lf): fractional values will be truncated"
msgstr "rshift(%lf, %lf): flyttalsvärden kommer trunkeras"
-#: builtin.c:2622
+#: builtin.c:2765
#, c-format
msgid "rshift(%lf, %lf): too large shift value will give strange results"
msgstr "rshift(%lf, %lf): för stora skiftvärden kommer ge konstiga resultat"
-#: builtin.c:2648
+#: builtin.c:2791
msgid "and: received non-numeric first argument"
msgstr "and: fick ett ickenumeriskt första argument"
-#: builtin.c:2650
+#: builtin.c:2793
#, fuzzy
msgid "and: received non-numeric second argument"
msgstr "atan2: fick ett ickenumeriskt andra argument"
-#: builtin.c:2656
+#: builtin.c:2799
#, c-format
msgid "and(%lf, %lf): negative values will give strange results"
msgstr "and(%lf, %lf): negativa värden kommer ge konstiga resultat"
-#: builtin.c:2658
+#: builtin.c:2801
#, c-format
msgid "and(%lf, %lf): fractional values will be truncated"
msgstr "and(%lf, %lf): flyttalsvärden kommer trunkeras"
-#: builtin.c:2684
+#: builtin.c:2827
msgid "or: received non-numeric first argument"
msgstr "or: fick ett ickenumeriskt första argument"
-#: builtin.c:2686
+#: builtin.c:2829
#, fuzzy
msgid "or: received non-numeric second argument"
msgstr "atan2: fick ett ickenumeriskt andra argument"
-#: builtin.c:2692
+#: builtin.c:2835
#, c-format
msgid "or(%lf, %lf): negative values will give strange results"
msgstr "or(%lf, %lf): negativa värden kommer ge konstiga resultat"
-#: builtin.c:2694
+#: builtin.c:2837
#, c-format
msgid "or(%lf, %lf): fractional values will be truncated"
msgstr "or(%lf, %lf): flyttalsvärden kommer trunkeras"
-#: builtin.c:2720
+#: builtin.c:2863
msgid "xor: received non-numeric first argument"
msgstr "xor: fick ett ickenumeriskt första argument"
-#: builtin.c:2722
+#: builtin.c:2865
#, fuzzy
msgid "xor: received non-numeric second argument"
msgstr "atan2: fick ett ickenumeriskt andra argument"
-#: builtin.c:2728
+#: builtin.c:2871
#, c-format
msgid "xor(%lf, %lf): negative values will give strange results"
msgstr "xor(%lf, %lf): negativa värden kommer ge konstiga resultat"
-#: builtin.c:2730
+#: builtin.c:2873
#, c-format
msgid "xor(%lf, %lf): fractional values will be truncated"
msgstr "xor(%lf, %lf): flyttalsvärden kommer trunkeras"
-#: builtin.c:2754
+#: builtin.c:2897
msgid "compl: received non-numeric argument"
msgstr "compl: fick ett ickenumeriskt argument"
-#: builtin.c:2760
+#: builtin.c:2903
#, c-format
msgid "compl(%lf): negative value will give strange results"
msgstr "compl(%lf): negativa värden kommer ge konstiga resultat"
-#: builtin.c:2762
+#: builtin.c:2905
#, c-format
msgid "compl(%lf): fractional value will be truncated"
msgstr "compl(%lf): flyttalsvärden kommer trunkeras"
-#: builtin.c:2935
+#: builtin.c:3078
#, c-format
msgid "dcgettext: `%s' is not a valid locale category"
msgstr "dcgettext: \"%s\" är inte en giltig lokalkategori"
@@ -760,123 +780,118 @@ msgstr "dcgettext: \"%s\" är inte en giltig lokalkategori"
msgid "unknown nodetype %d"
msgstr "okänd nodtyp %d"
-#: eval.c:350
+#: eval.c:353
msgid "buffer overflow in genflags2str"
msgstr "buffertöverflöd i genflags2str"
-#: eval.c:382 eval.c:388 profile.c:837
+#: eval.c:385 eval.c:391 profile.c:838
#, c-format
msgid "attempt to use array `%s' in a scalar context"
msgstr "försök att använda vektorn \"%s\" i skalärsammanhang"
-#: eval.c:730
+#: eval.c:733
#, c-format
msgid "for loop: array `%s' changed size from %ld to %ld during loop execution"
msgstr ""
"forslinga: vektorn \"%s\" ändrade storlek från %ld till %ld under "
"slingexekvering"
-#: eval.c:751
+#: eval.c:754
msgid "`break' outside a loop is not portable"
msgstr "\"break\" utanför en slinga är inte portabelt"
-#: eval.c:755
+#: eval.c:758
msgid "`break' outside a loop is not allowed"
msgstr "\"break\" utanför en slinga är inte tillåtet"
-#: eval.c:772
+#: eval.c:775
msgid "`continue' outside a loop is not portable"
msgstr "\"continue\" utanför en slinga är inte portabelt"
-#: eval.c:776
+#: eval.c:779
msgid "`continue' outside a loop is not allowed"
msgstr "\"continue\" utanför en slinga är inte tillåtet"
-#: eval.c:810
+#: eval.c:813
msgid "`next' cannot be called from a BEGIN rule"
msgstr "\"next\" kan inte anropas från en BEGIN-regel"
-#: eval.c:812
+#: eval.c:815
msgid "`next' cannot be called from an END rule"
msgstr "\"next\" kan inte anropas från en END-regel"
-#: eval.c:821
+#: eval.c:824
msgid "`nextfile' cannot be called from a BEGIN rule"
msgstr "\"nextfile\" kan inte anropas från en BEGIN-regel"
-#: eval.c:823
+#: eval.c:826
msgid "`nextfile' cannot be called from an END rule"
msgstr "\"nextfile\" kan inte anropas från en END-regel"
-#: eval.c:872
+#: eval.c:875
msgid "statement has no effect"
msgstr "kommandot har ingen effekt"
-#: eval.c:915 eval.c:1873
+#: eval.c:952 eval.c:1893
#, c-format
msgid "can't use function name `%s' as variable or array"
msgstr "kan inte använda funktionsnamnet \"%s\" som variabel eller vektor"
-#: eval.c:922 eval.c:928
+#: eval.c:959 eval.c:965
#, c-format
msgid "reference to uninitialized argument `%s'"
msgstr "referens till icke initierat argument \"%s\""
-#: eval.c:937 eval.c:1882
+#: eval.c:974 eval.c:1902
#, c-format
msgid "reference to uninitialized variable `%s'"
msgstr "referens till icke initierad variabel \"%s\""
-#: eval.c:1083
+#: eval.c:1120
msgid ""
"concatenation: side effects in one expression have changed the length of "
"another!"
msgstr ""
"concatenation: sidoeffekter i ett uttryck har ändrat längden av ett annat!"
-#: eval.c:1162
+#: eval.c:1200
msgid "assignment used in conditional context"
msgstr "tilldelning använt i jämförelsesammanhang"
-#: eval.c:1252
+#: eval.c:1278
msgid "division by zero attempted"
msgstr "försökte dividera med noll"
-#: eval.c:1267
+#: eval.c:1293
#, c-format
msgid "division by zero attempted in `%%'"
msgstr "försökte dividera med noll i \"%%\""
-#: eval.c:1282 profile.c:713
+#: eval.c:1308 profile.c:714
#, c-format
msgid "illegal type (%s) in tree_eval"
msgstr "otillåten typ (%s) i tree_eval"
-#: eval.c:1459
+#: eval.c:1471
msgid "division by zero attempted in `/='"
msgstr "försökte dividera med noll i \"/=\""
-#: eval.c:1477
+#: eval.c:1493
#, c-format
msgid "division by zero attempted in `%%='"
msgstr "försökte dividera med noll i \"%%=\""
-#: eval.c:1738
+#: eval.c:1758
#, c-format
msgid "function `%s' called with more arguments than declared"
msgstr "funktionen \"%s\" anropad med fler argument än vad som deklarerats"
-#: eval.c:1782
+#: eval.c:1802
#, c-format
msgid "function `%s' not defined"
msgstr "funktionen \"%s\" är inte definierad"
-#: eval.c:1788
-#, c-format
-msgid "function %s called\n"
-msgstr "funktionen %s anropad\n"
-
-#: eval.c:1845
+#: eval.c:1865
#, c-format
msgid ""
"\n"
@@ -887,42 +902,42 @@ msgstr ""
"\t# Funktionsanropsstack:\n"
"\n"
-#: eval.c:1848
+#: eval.c:1868
#, c-format
msgid "\t# -- main --\n"
msgstr "\t# -- main --\n"
-#: eval.c:2003
+#: eval.c:2023
msgid "attempt to field reference from non-numeric value"
msgstr "försök att fältreferera från ickenumeriskt värde"
-#: eval.c:2005
+#: eval.c:2025
msgid "attempt to reference from null string"
msgstr "försök att referera från tom sträng"
-#: eval.c:2011
+#: eval.c:2031
#, c-format
msgid "attempt to access field %d"
msgstr "försök att komma åt fält nummer %d"
-#: eval.c:2032 eval.c:2039 profile.c:934
+#: eval.c:2052 eval.c:2059 profile.c:935
msgid "assignment is not allowed to result of builtin function"
msgstr "det är inte tillåtet att tilldela resultatet från en inbyggd funktion"
-#: eval.c:2103
+#: eval.c:2123
msgid "`IGNORECASE' is a gawk extension"
msgstr "\"IGNORECASE\" är en gawk-utökning"
-#: eval.c:2133
+#: eval.c:2153
msgid "`BINMODE' is a gawk extension"
msgstr "\"BINMODE\" är en gawk-utökning"
-#: eval.c:2255
+#: eval.c:2275
#, c-format
msgid "bad `%sFMT' specification `%s'"
msgstr "felaktig \"%sFMT\"-specifikation \"%s\""
-#: eval.c:2333
+#: eval.c:2353
msgid "turning off `--lint' due to assignment to `LINT'"
msgstr "slår av \"--lint\" på grund av en tilldelning till \"LINT\""
@@ -970,9 +985,9 @@ msgid "extension: function name `%s' previously defined"
msgstr "funktionsnamnet \"%s\" är definierat sedan tidigare"
#: ext.c:201
-#, c-format
-msgid "function `%s' defined to take no more than `%d' argument(s)"
-msgstr ""
+#, fuzzy, c-format
+msgid "function `%s' defined to take no more than %d argument(s)"
+msgstr "funktionen \"%s\" definierad men aldrig anropad"
#: ext.c:204
#, fuzzy, c-format
@@ -993,549 +1008,554 @@ msgstr ""
msgid "Operation Not Supported"
msgstr "Operationen stöds inte"
-#: field.c:315
+#: field.c:326
msgid "NF set to negative value"
msgstr "NF satt till ett negativt värde"
-#: field.c:808
+#: field.c:819
msgid "split: second argument is not an array"
msgstr "split: andra argumentet är inte en vektor"
-#: field.c:842
+#: field.c:853
msgid "split: null string for third arg is a gawk extension"
msgstr "split: tom sträng som tredje argument är en gawk-utökning"
-#: field.c:894
+#: field.c:905
msgid "`FIELDWIDTHS' is a gawk extension"
msgstr "\"FIELDWIDTHS\" är en gawk-utökning"
-#: field.c:921
+#: field.c:935 field.c:946
#, c-format
-msgid "field %d in FIELDWIDTHS, must be > 0"
-msgstr "fält %d i FIELDWIDTHS måste vara > 0"
+msgid "invalid FIELDWIDTHS value, near `%s'"
+msgstr ""
-#: field.c:994
+#: field.c:1027
msgid "null string for `FS' is a gawk extension"
msgstr "tom sträng som \"FS\" är en gawk-utökning"
-#: getopt.c:692 getopt.c:711
+#: getopt.c:571 getopt.c:590
#, c-format
msgid "%s: option `%s' is ambiguous\n"
msgstr "%s: flaggan \"%s\" är tvetydig\n"
-#: getopt.c:744 getopt.c:748
+#: getopt.c:623 getopt.c:627
#, c-format
msgid "%s: option `--%s' doesn't allow an argument\n"
msgstr "%s: flaggan \"--%s\" tillåter inte argument\n"
-#: getopt.c:757 getopt.c:762
+#: getopt.c:636 getopt.c:641
#, c-format
msgid "%s: option `%c%s' doesn't allow an argument\n"
msgstr "%s: flaggan \"%c%s\" tillåter inte argument\n"
-#: getopt.c:807 getopt.c:829 getopt.c:1159 getopt.c:1181
+#: getopt.c:687 getopt.c:709 getopt.c:1040 getopt.c:1062
#, c-format
msgid "%s: option `%s' requires an argument\n"
msgstr "%s: flaggan \"%s\" kräver ett argument\n"
-#: getopt.c:867 getopt.c:870
+#: getopt.c:747 getopt.c:750
#, c-format
msgid "%s: unrecognized option `--%s'\n"
msgstr "%s: okänd flagga \"--%s\"\n"
-#: getopt.c:878 getopt.c:881
+#: getopt.c:758 getopt.c:761
#, c-format
msgid "%s: unrecognized option `%c%s'\n"
msgstr "%s: okänd flagga \"%c%s\"\n"
-#: getopt.c:936 getopt.c:939
+#: getopt.c:816 getopt.c:819
#, c-format
msgid "%s: illegal option -- %c\n"
msgstr "%s: otillåten flagga -- %c\n"
-#: getopt.c:945 getopt.c:948
+#: getopt.c:825 getopt.c:828
#, c-format
msgid "%s: invalid option -- %c\n"
msgstr "%s: ogiltig flagga -- %c\n"
-#: getopt.c:1003 getopt.c:1022 getopt.c:1234 getopt.c:1255 main.c:433
+#: getopt.c:883 getopt.c:902 getopt.c:1115 getopt.c:1136 main.c:448
#, c-format
msgid "%s: option requires an argument -- %c\n"
msgstr "%s: flaggan kräver ett argument -- %c\n"
-#: getopt.c:1074 getopt.c:1093
+#: getopt.c:955 getopt.c:974
#, c-format
msgid "%s: option `-W %s' is ambiguous\n"
msgstr "%s: flaggan \"-W %s\" är tvetydig\n"
-#: getopt.c:1117 getopt.c:1138
+#: getopt.c:998 getopt.c:1019
#, c-format
msgid "%s: option `-W %s' doesn't allow an argument\n"
msgstr "%s: flaggan \"-W %s\" tillåter inte något argument\n"
-#: io.c:308
+#: io.c:307
#, c-format
msgid "cannot open file `%s' for reading (%s)"
msgstr "kan inte öppna filen \"%s\" för läsning (%s)"
-#: io.c:395
+#: io.c:398
#, c-format
msgid "close of fd %d (`%s') failed (%s)"
msgstr "stängning av fd %d (\"%s\") misslyckades (%s)"
-#: io.c:533
+#: io.c:536
#, c-format
msgid "invalid tree type %s in redirect()"
msgstr "ogiltig trädtyp %s i redirect()"
-#: io.c:539
+#: io.c:542
#, c-format
msgid "expression in `%s' redirection only has numeric value"
msgstr "uttrycket i \"%s\"-omdirigering har bara numeriskt värde"
-#: io.c:545
+#: io.c:548
#, c-format
msgid "expression for `%s' redirection has null string value"
msgstr "uttrycket för \"%s\"-omdirigering har en tom sträng som värde"
-#: io.c:550
+#: io.c:553
#, c-format
msgid "filename `%s' for `%s' redirection may be result of logical expression"
msgstr ""
"filnamnet \"%s\" för \"%s\"-omdirigering kan vara resultatet av ett logiskt "
"uttryck"
-#: io.c:588
+#: io.c:591
#, c-format
msgid "unnecessary mixing of `>' and `>>' for file `%.*s'"
msgstr "onödig blandning av \">\" och \">>\" för filen \"%.*s\""
-#: io.c:640
+#: io.c:643
#, c-format
msgid "can't open pipe `%s' for output (%s)"
msgstr "kan inte öppna röret \"%s\" för utmatning (%s)"
-#: io.c:649
+#: io.c:652
#, c-format
msgid "can't open pipe `%s' for input (%s)"
msgstr "kan inte öppna röret \"%s\" för inmatning (%s)"
-#: io.c:662
+#: io.c:665
#, c-format
msgid "can't open two way socket `%s' for input/output (%s)"
msgstr "kan inte öppna tvåvägsuttaget \"%s\" för in-/utmatning (%s)"
-#: io.c:666
+#: io.c:669
#, c-format
msgid "can't open two way pipe `%s' for input/output (%s)"
msgstr "kan inte öppna tvåvägsröret \"%s\" för in-/utmatning (%s)"
-#: io.c:742
+#: io.c:745
#, c-format
msgid "can't redirect from `%s' (%s)"
msgstr "kan inte dirigera om från \"%s\" (%s)"
-#: io.c:745
+#: io.c:748
#, c-format
msgid "can't redirect to `%s' (%s)"
msgstr "kan inte dirigera om till \"%s\" (%s)"
-#: io.c:784
+#: io.c:787
msgid ""
"reached system limit for open files: starting to multiplex file descriptors"
msgstr ""
"nådde systembegränsningen för öppna filer: börjar multiplexa fildeskriptorer"
-#: io.c:800
+#: io.c:803
#, c-format
msgid "close of `%s' failed (%s)."
msgstr "stängning av \"%s\" misslyckades (%s)"
-#: io.c:808
+#: io.c:811
msgid "too many pipes or input files open"
msgstr "för många rör eller indatafiler öppna"
-#: io.c:831
+#: io.c:834
msgid "close: second argument must be `to' or `from'"
msgstr "close: andra argumentet måste vara \"to\" eller \"from\""
-#: io.c:845
+#: io.c:848
#, c-format
msgid "close: `%.*s' is not an open file, pipe or co-process"
msgstr "close: \"%.*s\" är inte en öppen fil, rör eller koprocess"
-#: io.c:849
+#: io.c:852
msgid "close of redirection that was never opened"
msgstr "stängning av omdirigering som aldrig öppnades"
-#: io.c:945
+#: io.c:948
#, c-format
msgid "close: redirection `%s' not opened with `|&', second argument ignored"
msgstr ""
"close: omdirigeringen \"%s\" öppnades inte med \"|&\", andra argumentet "
"ignorerat"
-#: io.c:960
+#: io.c:964
#, c-format
msgid "failure status (%d) on pipe close of `%s' (%s)"
msgstr "felstatus (%d) från rörstängning av \"%s\" (%s)"
-#: io.c:963
+#: io.c:967
#, c-format
msgid "failure status (%d) on file close of `%s' (%s)"
msgstr "felstatus (%d) från filstängning av \"%s\" (%s)"
-#: io.c:983
+#: io.c:987
#, c-format
msgid "no explicit close of socket `%s' provided"
msgstr "ingen explicit stängning av uttaget \"%s\" tillhandahållen"
-#: io.c:986
+#: io.c:990
#, c-format
msgid "no explicit close of co-process `%s' provided"
msgstr "ingen explicit stängning av koprocessen \"%s\" tillhandahållen"
-#: io.c:989
+#: io.c:993
#, c-format
msgid "no explicit close of pipe `%s' provided"
msgstr "ingen explicit stängning av röret \"%s\" tillhandahållen"
-#: io.c:992
+#: io.c:996
#, c-format
msgid "no explicit close of file `%s' provided"
msgstr "ingen explicit stängning av filen \"%s\" tillhandahållen"
-#: io.c:1021 io.c:1075
+#: io.c:1025 io.c:1080 main.c:718 main.c:756
#, c-format
msgid "error writing standard output (%s)"
msgstr "fel vid skrivning till standard ut (%s)"
-#: io.c:1025 io.c:1079
+#: io.c:1029 io.c:1085
#, c-format
msgid "error writing standard error (%s)"
msgstr "fel vid skrivning till standard fel (%s)"
-#: io.c:1033
+#: io.c:1037
#, c-format
msgid "pipe flush of `%s' failed (%s)."
msgstr "rörspolning av \"%s\" misslyckades (%s)"
-#: io.c:1036
+#: io.c:1040
#, c-format
msgid "co-process flush of pipe to `%s' failed (%s)."
msgstr "koprocesspolning av röret till \"%s\" misslyckades (%s)"
-#: io.c:1039
+#: io.c:1043
#, c-format
msgid "file flush of `%s' failed (%s)."
msgstr "filspolning av \"%s\" misslyckades (%s)"
-#: io.c:1198
+#: io.c:1205
msgid "/inet/raw client not ready yet, sorry"
msgstr "/inet/raw-klient är tyvärr inte klar än"
-#: io.c:1200 io.c:1237
+#: io.c:1207 io.c:1244
msgid "only root may use `/inet/raw'."
msgstr "bara root kan använda \"/inet/raw\"."
-#: io.c:1235
+#: io.c:1242
msgid "/inet/raw server not ready yet, sorry"
msgstr "/inet/raw-server inte redo än, ledsen"
-#: io.c:1325
+#: io.c:1332
#, c-format
msgid "no (known) protocol supplied in special filename `%s'"
msgstr ""
"inget (känt) protokoll tillhandahållet i det speciella filnamnet \"%s\""
-#: io.c:1343
+#: io.c:1350
#, c-format
msgid "special file name `%s' is incomplete"
msgstr "speciellt filnamn \"%s\" är ofullständigt"
-#: io.c:1355
+#: io.c:1362
#, c-format
msgid "local port invalid in `%s'"
msgstr "lokal port ogiltig i \"%s\""
-#: io.c:1367
+#: io.c:1374
msgid "must supply a remote hostname to `/inet'"
msgstr "måste tillhandahålla ett fjärrdatornamn till \"/inet\""
-#: io.c:1382
+#: io.c:1389
msgid "must supply a remote port to `/inet'"
msgstr "måste tillhandahålla en fjärrport till \"/inet\""
-#: io.c:1388
+#: io.c:1395
#, c-format
msgid "remote port invalid in `%s'"
msgstr "fjärrporten ogiltig i \"%s\""
-#: io.c:1398
+#: io.c:1405
msgid "TCP/IP communications are not supported"
msgstr "TCP/IP-kommunikation stöds inte"
-#: io.c:1407 io.c:1588
+#: io.c:1414 io.c:1595
#, c-format
msgid "file `%s' is a directory"
msgstr "filen \"%s\" är en katalog"
-#: io.c:1477
+#: io.c:1484
#, c-format
msgid "use `PROCINFO[\"%s\"]' instead of `%s'"
msgstr "använd \"PROCINFO[\"%s\"]\" istället för \"%s\""
-#: io.c:1509
+#: io.c:1516
msgid "use `PROCINFO[...]' instead of `/dev/user'"
msgstr "använd \"PROCINFO[...]\" istället för \"dev/user\""
-#: io.c:1574 io.c:1748
+#: io.c:1581 io.c:1763
#, c-format
msgid "could not open `%s', mode `%s'"
msgstr "kunde inte öppna \"%s\", läge \"%s\""
-#: io.c:1799
+#: io.c:1814
#, c-format
msgid "close of master pty failed (%s)"
msgstr "stängning av huvudpty misslyckades (%s)"
-#: io.c:1801 io.c:1953 io.c:2105
+#: io.c:1816 io.c:1968 io.c:2119
#, c-format
msgid "close of stdout in child failed (%s)"
msgstr "stängning av standard ut i barnet misslyckades (%s)"
-#: io.c:1804
+#: io.c:1819
#, c-format
msgid "moving slave pty to stdout in child failed (dup: %s)"
msgstr "flyttandet av slavpty till standard ut i barnet misslyckades (dup: %s)"
-#: io.c:1806 io.c:1958
+#: io.c:1821 io.c:1973
#, c-format
msgid "close of stdin in child failed (%s)"
msgstr "stängning av standard in i barnet misslyckades (%s)"
-#: io.c:1809
+#: io.c:1824
#, c-format
msgid "moving slave pty to stdin in child failed (dup: %s)"
msgstr "flyttandet av slavpty till standard in i barnet misslyckades (dup: %s)"
-#: io.c:1811 io.c:1830
+#: io.c:1826 io.c:1845
#, c-format
msgid "close of slave pty failed (%s)"
msgstr "stängning av slavpty misslyckades (%s)"
-#: io.c:1904 io.c:1956 io.c:2086 io.c:2108
+#: io.c:1919 io.c:1971 io.c:2100 io.c:2122
#, c-format
msgid "moving pipe to stdout in child failed (dup: %s)"
msgstr "flyttande av rör till standard ut i barnet misslyckades (dup: %s)"
-#: io.c:1908 io.c:1961
+#: io.c:1923 io.c:1976
#, c-format
msgid "moving pipe to stdin in child failed (dup: %s)"
msgstr "flyttande av rör till standard in i barnet misslyckades (dup: %s)"
-#: io.c:1925 io.c:2099
+#: io.c:1940 io.c:2113
msgid "restoring stdout in parent process failed\n"
msgstr "återställande av standard ut i förälderprocessen misslyckades\n"
-#: io.c:1930
+#: io.c:1945
msgid "restoring stdin in parent process failed\n"
msgstr "återställande av standard in i förälderprocessen misslyckades\n"
-#: io.c:1964 io.c:2110 io.c:2121
+#: io.c:1979 io.c:2124 io.c:2135
#, c-format
msgid "close of pipe failed (%s)"
msgstr "stängning av röret misslyckades (%s)"
-#: io.c:2009
+#: io.c:2024
msgid "`|&' not supported"
msgstr "\"|&\" stöds inte"
-#: io.c:2076
+#: io.c:2090
#, c-format
msgid "cannot open pipe `%s' (%s)"
msgstr "kan inte öppna röret \"%s\" (%s)"
-#: io.c:2117
+#: io.c:2131
#, c-format
msgid "cannot create child process for `%s' (fork: %s)"
msgstr "kan inte skapa barnprocess för \"%s\" (fork: %s)"
-#: io.c:2460
+#: io.c:2506
#, c-format
msgid "data file `%s' is empty"
msgstr "datafilen \"%s\" är tom"
-#: io.c:2503 io.c:2511
+#: io.c:2547 io.c:2555
msgid "could not allocate more input memory"
msgstr "kunde inte allokera mer indataminne"
-#: io.c:2869 io.c:2932
+#: io.c:2919 io.c:2984
#, c-format
msgid "error reading input file `%s': %s"
msgstr "fel vid läsning av indatafilen \"%s\": %s"
-#: io.c:3057
+#: io.c:3109
msgid "multicharacter value of `RS' is a gawk extension"
msgstr "flerteckensvärdet av \"RS\" är en gawk-utökning"
-#: main.c:323
+#: main.c:338
msgid "`-m[fr]' option irrelevant in gawk"
msgstr "\"-m[fr]\"-flaggan är irrelevant i gawk"
-#: main.c:325
+#: main.c:340
msgid "-m option usage: `-m[fr] nnn'"
msgstr "-m-flaggans användning: \"-m[fr] nnn\""
-#: main.c:342
+#: main.c:357
#, c-format
msgid "%s: option `-W %s' unrecognized, ignored\n"
msgstr "%s: flaggan \"-W %s\" okänd, ignorerad\n"
-#: main.c:379
+#: main.c:394
msgid "empty argument to `--source' ignored"
msgstr "tomt argument till \"--source\" ignorerat"
-#: main.c:450
+#: main.c:467
msgid "environment variable `POSIXLY_CORRECT' set: turning on `--posix'"
msgstr "miljövariabeln \"POSIXLY_CORRECT\" satt: slår på \"--posix\""
-#: main.c:455
+#: main.c:472
msgid "`--posix' overrides `--traditional'"
msgstr "\"--posix\" åsidosätter \"--traditional\""
-#: main.c:466
+#: main.c:483
msgid "`--posix'/`--traditional' overrides `--non-decimal-data'"
msgstr "\"--posix\"/\"--traditional\" åsidosätter \"--non-decimal-data\""
-#: main.c:470
+#: main.c:487
#, c-format
msgid "running %s setuid root may be a security problem"
msgstr "att köra %s setuid root kan vara ett säkerhetsproblem"
-#: main.c:511
+#: main.c:528
#, c-format
msgid "can't set binary mode on stdin (%s)"
msgstr "kan inte sätta binärläge på standard in (%s)"
-#: main.c:514
+#: main.c:531
#, c-format
msgid "can't set binary mode on stdout (%s)"
msgstr "kan inte sätta binärläge på standard ut (%s)"
-#: main.c:516
+#: main.c:533
#, c-format
msgid "can't set binary mode on stderr (%s)"
msgstr "kan inte sätta binärläge på standard fel (%s)"
-#: main.c:546
+#: main.c:572
msgid "no program text at all!"
msgstr "ingen programtext alls!"
-#: main.c:623
+#: main.c:665
#, c-format
msgid "Usage: %s [POSIX or GNU style options] -f progfile [--] file ...\n"
msgstr ""
"Användning: %s [POSIX- eller GNU-stilsflaggor] -f progfil [--] fil ...\n"
-#: main.c:625
+#: main.c:667
#, c-format
msgid "Usage: %s [POSIX or GNU style options] [--] %cprogram%c file ...\n"
msgstr "Användning: %s [POSIX- eller GNU-stilsflaggor] %cprogram%c fil ...\n"
-#: main.c:630
+#: main.c:672
msgid "POSIX options:\t\tGNU long options:\n"
msgstr "POSIX-flaggor:\t\tGNU långa flaggor:\n"
-#: main.c:631
+#: main.c:673
msgid "\t-f progfile\t\t--file=progfile\n"
msgstr "\t-f progfil\t\t--file=progfil\n"
-#: main.c:632
+#: main.c:674
msgid "\t-F fs\t\t\t--field-separator=fs\n"
msgstr "\t-F fs\t\t\t--field-separator=fs\n"
-#: main.c:633
+#: main.c:675
msgid "\t-v var=val\t\t--assign=var=val\n"
msgstr "\t-v var=värde\t\t--assign=var=värde\n"
-#: main.c:634
+#: main.c:676
msgid "\t-m[fr] val\n"
msgstr "\t-m[fr] värde\n"
-#: main.c:635
+#: main.c:677
msgid "\t-W compat\t\t--compat\n"
msgstr "\t-W compat\t\t--compat\n"
-#: main.c:636
+#: main.c:678
msgid "\t-W copyleft\t\t--copyleft\n"
msgstr "\t-W copyleft\t\t--copyleft\n"
-#: main.c:637
+#: main.c:679
msgid "\t-W copyright\t\t--copyright\n"
msgstr "\t-W copyright\t\t--copyright\n"
-#: main.c:638
+#: main.c:680
msgid "\t-W dump-variables[=file]\t--dump-variables[=file]\n"
msgstr "\t-W dump-variables[=fil]\t--dump-variables[=fil]\n"
-#: main.c:639
+#: main.c:681
+#, fuzzy
+msgid "\t-W exec=file\t\t--exec=file\n"
+msgstr "\t-W profile[=fil]\t--profile[=fil]\n"
+
+#: main.c:682
msgid "\t-W gen-po\t\t--gen-po\n"
msgstr "\t-W gen-po\t\t--gen-po\n"
-#: main.c:640
+#: main.c:683
msgid "\t-W help\t\t\t--help\n"
msgstr "\t-W help\t\t\t--help\n"
-#: main.c:641
+#: main.c:684
msgid "\t-W lint[=fatal]\t\t--lint[=fatal]\n"
msgstr "\t-W lint[=fatal]\t\t--lint[=fatal]\n"
-#: main.c:642
+#: main.c:685
msgid "\t-W lint-old\t\t--lint-old\n"
msgstr "\t-W lint-old\t\t--lint-old\n"
-#: main.c:643
+#: main.c:686
msgid "\t-W non-decimal-data\t--non-decimal-data\n"
msgstr "\t-W non-decimal-data\t--non-decimal-data\n"
-#: main.c:645
+#: main.c:688
msgid "\t-W nostalgia\t\t--nostalgia\n"
msgstr "\t-W nostalgia\t\t--nostalgia\n"
-#: main.c:648
+#: main.c:691
msgid "\t-W parsedebug\t\t--parsedebug\n"
msgstr "\t-W parsedebug\t\t--parsedebug\n"
-#: main.c:650
+#: main.c:693
msgid "\t-W profile[=file]\t--profile[=file]\n"
msgstr "\t-W profile[=fil]\t--profile[=fil]\n"
-#: main.c:651
+#: main.c:694
msgid "\t-W posix\t\t--posix\n"
msgstr "\t-W posix\t\t--posix\n"
-#: main.c:652
+#: main.c:695
msgid "\t-W re-interval\t\t--re-interval\n"
msgstr "\t-W re-interval\t\t--re-interval\n"
-#: main.c:653
+#: main.c:696
msgid "\t-W source=program-text\t--source=program-text\n"
msgstr "\t-W source=programtext\t--source=programtext\n"
-#: main.c:654
+#: main.c:697
msgid "\t-W traditional\t\t--traditional\n"
msgstr "\t-W traditional\t\t--traditional\n"
-#: main.c:655
+#: main.c:698
msgid "\t-W usage\t\t--usage\n"
msgstr "\t-W usage\t\t--usage\n"
-#: main.c:656
+#: main.c:699
msgid "\t-W version\t\t--version\n"
msgstr "\t-W version\t\t--version\n"
-#: main.c:660
+#: main.c:703
msgid ""
"\n"
"To report bugs, see node `Bugs' in `gawk.info', which is\n"
@@ -1549,7 +1569,7 @@ msgstr ""
"Rapportera synpunkter på översättningen till <sv@li.org>.\n"
"\n"
-#: main.c:664
+#: main.c:707
msgid ""
"gawk is a pattern scanning and processing language.\n"
"By default it reads standard input and writes standard output.\n"
@@ -1559,7 +1579,7 @@ msgstr ""
"Normalt läser det från standard in och skriver till standard ut.\n"
"\n"
-#: main.c:668
+#: main.c:711
msgid ""
"Examples:\n"
"\tgawk '{ sum += $1 }; END { print sum }' file\n"
@@ -1569,7 +1589,7 @@ msgstr ""
"\tgawk '{ sum += $1 }; END { print sum }' fil\n"
"\tgawk -F: '{print $1 }' /etc/passwd\n"
-#: main.c:685
+#: main.c:731
#, c-format
msgid ""
"Copyright (C) 1989, 1991-%d Free Software Foundation.\n"
@@ -1588,7 +1608,7 @@ msgstr ""
"någon senare version.\n"
"\n"
-#: main.c:693
+#: main.c:739
msgid ""
"This program is distributed in the hope that it will be useful,\n"
"but WITHOUT ANY WARRANTY; without even the implied warranty of\n"
@@ -1602,56 +1622,57 @@ msgstr ""
"General Public License för ytterligare information.\n"
"\n"
-#: main.c:699
+#: main.c:745
msgid ""
"You should have received a copy of the GNU General Public License\n"
"along with this program; if not, write to the Free Software\n"
-"Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.\n"
+"Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, "
+"USA.\n"
msgstr ""
"Du bör ha fått en kopia av GNU General Public License tillsammans\n"
"med detta program. Om inte, skriv till Free Software Foundation,\n"
-"Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.\n"
+"Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.\n"
-#: main.c:733
+#: main.c:781
msgid "-Ft does not set FS to tab in POSIX awk"
msgstr "-Ft sätter inte FS till tab i POSIX-awk"
-#: main.c:962
+#: main.c:1018
#, c-format
msgid ""
"%s: `%s' argument to `-v' not in `var=value' form\n"
"\n"
msgstr "%s: Argumentet \"%s\" till \"-v\" är inte på formatet \"var=värde\"\n"
-#: main.c:982
+#: main.c:1038
#, c-format
msgid "`%s' is not a legal variable name"
msgstr "\"%s\" är inte ett giltigt variabelnamn"
-#: main.c:985
+#: main.c:1041
#, c-format
msgid "`%s' is not a variable name, looking for file `%s=%s'"
msgstr "\"%s\" är inte ett variabelnamn, letar efter filen \"%s=%s\""
-#: main.c:1018
+#: main.c:1074
msgid "floating point exception"
msgstr "flyttalsundantag"
-#: main.c:1025
+#: main.c:1081
msgid "fatal error: internal error"
msgstr "ödesdigert fel: internt fel"
-#: main.c:1075
+#: main.c:1132
#, c-format
msgid "no pre-opened fd %d"
msgstr "ingen föröppnad fd %d"
-#: main.c:1082
+#: main.c:1139
#, c-format
msgid "could not pre-open /dev/null for fd %d"
msgstr "kunde inte föröppna /dev/null för fd %d"
-#: main.c:1105 main.c:1114
+#: main.c:1162 main.c:1171
#, c-format
msgid "could not find groups: %s"
msgstr "kunde inte hitta grupper: %s"
@@ -1673,23 +1694,23 @@ msgstr "fel: "
msgid "fatal: "
msgstr "ödesdigert: "
-#: node.c:58 node.c:65 node.c:74 node.c:88 node.c:115
+#: node.c:59 node.c:66 node.c:75 node.c:90 node.c:119
msgid "can't convert string to float"
msgstr "kan inte konvertera en sträng till flyttal"
-#: node.c:357
+#: node.c:414
msgid "backslash at end of string"
msgstr "omvänt snedstreck i slutet av strängen"
-#: node.c:541
+#: node.c:604
msgid "POSIX does not allow `\\x' escapes"
msgstr "POSIX tillåter inte \"\\x\"-kontrollsekvenser"
-#: node.c:547
+#: node.c:610
msgid "no hex digits in `\\x' escape sequence"
msgstr "inga hexadecimala siffror i \"\\x\"-kontrollsekvenser"
-#: node.c:581
+#: node.c:644
#, c-format
msgid "escape sequence `\\%c' treated as plain `%c'"
msgstr "kontrollsekvensen \"\\%c\" behandlad som bara \"%c\""
@@ -1709,21 +1730,21 @@ msgstr "kunde inte öppna \"%s\" för skrivning: %s"
msgid "internal error: %s with null vname"
msgstr "internt fel: Node_var med null vname"
-#: profile.c:530
+#: profile.c:531
msgid "# treated internally as `delete'"
msgstr "# behandlad internt som \"delete\""
-#: profile.c:1167
+#: profile.c:1168
#, c-format
msgid "# this is a dynamically loaded extension function"
msgstr ""
-#: profile.c:1198
+#: profile.c:1199
#, c-format
msgid "\t# gawk profile, created %s\n"
msgstr "\t# gawkprofil, skapad %s\n"
-#: profile.c:1201
+#: profile.c:1202
#, c-format
msgid ""
"\t# BEGIN block(s)\n"
@@ -1732,7 +1753,7 @@ msgstr ""
"\t# BEGIN-block\n"
"\n"
-#: profile.c:1211
+#: profile.c:1212
#, c-format
msgid ""
"\t# Rule(s)\n"
@@ -1741,7 +1762,7 @@ msgstr ""
"\t# Regel/regler\n"
"\n"
-#: profile.c:1217
+#: profile.c:1218
#, c-format
msgid ""
"\t# END block(s)\n"
@@ -1750,7 +1771,7 @@ msgstr ""
"\t# END-block\n"
"\n"
-#: profile.c:1237
+#: profile.c:1238
#, c-format
msgid ""
"\n"
@@ -1759,83 +1780,89 @@ msgstr ""
"\n"
"\t# Funktioner, listade alfabetiskt\n"
-#: profile.c:1452
+#: profile.c:1453
#, c-format
msgid "unexpected type %s in prec_level"
msgstr "oväntad typ %s i prec_level"
-#: regcomp.c:150
+#: regcomp.c:160
msgid "Success"
msgstr "Lyckades"
-#: regcomp.c:153
+#: regcomp.c:163
msgid "No match"
msgstr "Misslyckades"
-#: regcomp.c:156
+#: regcomp.c:166
msgid "Invalid regular expression"
msgstr "Ogiltigt reguljärt uttryck"
-#: regcomp.c:159
+#: regcomp.c:169
msgid "Invalid collation character"
msgstr "Ogiltigt kollationeringstecken"
-#: regcomp.c:162
+#: regcomp.c:172
msgid "Invalid character class name"
msgstr "Ogiltigt teckenklassnamn"
-#: regcomp.c:165
+#: regcomp.c:175
msgid "Trailing backslash"
msgstr "Eftersläpande omvänt snedstreck"
-#: regcomp.c:168
+#: regcomp.c:178
msgid "Invalid back reference"
msgstr "Ogiltig bakåtrerefens"
-#: regcomp.c:171
+#: regcomp.c:181
msgid "Unmatched [ or [^"
msgstr "Obalanserad [ eller [^"
-#: regcomp.c:174
+#: regcomp.c:184
msgid "Unmatched ( or \\("
msgstr "Obalanserad ( eller \\("
-#: regcomp.c:177
+#: regcomp.c:187
msgid "Unmatched \\{"
msgstr "Obalanserad \\{"
-#: regcomp.c:180
+#: regcomp.c:190
msgid "Invalid content of \\{\\}"
msgstr "Ogiltigt innehåll i \\{\\}"
-#: regcomp.c:183
+#: regcomp.c:193
msgid "Invalid range end"
msgstr "Ogiltigt omfångsslut"
-#: regcomp.c:186
+#: regcomp.c:196
msgid "Memory exhausted"
msgstr "Minnet slut"
-#: regcomp.c:189
+#: regcomp.c:199
msgid "Invalid preceding regular expression"
msgstr "Ogiltigt föregående reguljärt uttryck"
-#: regcomp.c:192
+#: regcomp.c:202
msgid "Premature end of regular expression"
msgstr "För tidigt slut på reguljärt uttryck"
-#: regcomp.c:195
+#: regcomp.c:205
msgid "Regular expression too big"
msgstr "Reguljärt uttryck för stort"
-#: regcomp.c:198
+#: regcomp.c:208
msgid "Unmatched ) or \\)"
msgstr "Obalanserad ) eller \\)"
-#: regcomp.c:668
+#: regcomp.c:688
msgid "No previous regular expression"
msgstr "Inget föregående reguljärt uttryck"
+#~ msgid "function %s called\n"
+#~ msgstr "funktionen %s anropad\n"
+
+#~ msgid "field %d in FIELDWIDTHS, must be > 0"
+#~ msgstr "fält %d i FIELDWIDTHS måste vara > 0"
+
#~ msgid "or used as a variable or an array"
#~ msgstr "eller använd som variabel eller vektor"
diff --git a/po/tr.gmo b/po/tr.gmo
index 923c0676..f835f4f7 100644
--- a/po/tr.gmo
+++ b/po/tr.gmo
Binary files differ
diff --git a/po/tr.po b/po/tr.po
index f6d98b86..b682b638 100644
--- a/po/tr.po
+++ b/po/tr.po
@@ -6,7 +6,7 @@ msgid ""
msgstr ""
"Project-Id-Version: gawk 3.1.3l\n"
"Report-Msgid-Bugs-To: arnold@skeeve.com\n"
-"POT-Creation-Date: 2004-07-15 13:02+0300\n"
+"POT-Creation-Date: 2005-07-06 17:20+0300\n"
"PO-Revision-Date: 2004-07-19 10:15+0300\n"
"Last-Translator: Nilgün Belma Bugüner <nilgun@superonline.com>\n"
"Language-Team: Turkish <gnu-tr-u12a@lists.sourceforge.net>\n"
@@ -89,278 +89,293 @@ msgstr "her kural bir eylem bölümü veya bir kalıp içermeli"
msgid "`%s' is a built-in function, it cannot be redefined"
msgstr "`%s' bir yerleÅŸik iÅŸlevdir, yeniden atanamaz"
-#: awkgram.y:314
+#: awkgram.y:313
+#, fuzzy
+msgid "regexp constant `//' looks like a C++ comment, but is not"
+msgstr "düzenli ifade sabiti `/%s/' bir C açıklaması gibi görünüyor ama değil"
+
+#: awkgram.y:316
#, c-format
msgid "regexp constant `/%s/' looks like a C comment, but is not"
msgstr "düzenli ifade sabiti `/%s/' bir C açıklaması gibi görünüyor ama değil"
-#: awkgram.y:341 awkgram.y:619
+#: awkgram.y:343 awkgram.y:623
msgid "statement may have no effect"
msgstr "deyim bir etkiye sahip olmayabilir"
-#: awkgram.y:436 awkgram.y:456
+#: awkgram.y:440 awkgram.y:460
#, c-format
msgid "`%s' used in %s action"
msgstr "`%s' %s eyleminde kullanılmış"
-#: awkgram.y:449 awkgram.y:452
+#: awkgram.y:453 awkgram.y:456
msgid "`nextfile' is a gawk extension"
msgstr "`nextfile' bir gawk uzantısıdır"
-#: awkgram.y:466
+#: awkgram.y:470
msgid "`return' used outside function context"
msgstr "`return' işlev bağlamının dışında kullanılmış"
-#: awkgram.y:508
+#: awkgram.y:512
msgid "plain `print' in BEGIN or END rule should probably be `print \"\"'"
msgstr "BEGIN veya END kuralındaki `print' aslında `print \"\"' olmalıydı"
-#: awkgram.y:521 awkgram.y:528
+#: awkgram.y:525 awkgram.y:532
msgid "`delete array' is a gawk extension"
msgstr "`delete array' bir gawk uzantısıdır"
-#: awkgram.y:536 awkgram.y:543
+#: awkgram.y:540 awkgram.y:547
msgid "`delete(array)' is a non-portable tawk extension"
msgstr "`delete array' uyarlanabilir olmayan bir gawk uzantısıdır"
-#: awkgram.y:587
+#: awkgram.y:591
#, c-format
msgid "duplicate case values in switch body: %s"
msgstr "switch içinde yinelenmiş case değerleri var: %s"
-#: awkgram.y:597
+#: awkgram.y:601
msgid "Duplicate `default' detected in switch body"
msgstr "switch içinde yinelenmiş `default' saptandı"
-#: awkgram.y:686
+#: awkgram.y:690
msgid "multistage two-way pipelines don't work"
msgstr "çok katlı iki yönlü veriyolları çalışmaz"
-#: awkgram.y:777
+#: awkgram.y:781
msgid "regular expression on right of assignment"
msgstr "düzenli ifade atamanın sağında"
-#: awkgram.y:800
+#: awkgram.y:804
msgid "regular expression on left of `~' or `!~' operator"
msgstr "düzenli ifade `~' ya da `!~' işlemiminin solunda"
-#: awkgram.y:808
+#: awkgram.y:812
msgid "regular expression on right of comparison"
msgstr "düzenli ifade karşılaştırmanın sağında"
-#: awkgram.y:875
+#: awkgram.y:879
msgid "non-redirected `getline' undefined inside END action"
msgstr "END eyleminin içinde yönlendirme yapmayan `getline' tanımsız"
-#: awkgram.y:902
+#: awkgram.y:906
msgid "call of `length' without parentheses is not portable"
msgstr "parantezsiz `length' çağrısı taşınabilir değil"
-#: awkgram.y:905
+#: awkgram.y:909
msgid "call of `length' without parentheses is deprecated by POSIX"
msgstr "parantezsiz `length' çağrısı POSIX'e uygun değil"
-#: awkgram.y:958
+#: awkgram.y:962
msgid "use of non-array as array"
msgstr "dizi olmayan değişken dizi olarak kullanılmış"
-#: awkgram.y:960
+#: awkgram.y:964
msgid "invalid subscript expression"
msgstr "indis ifadesi geçersiz"
-#: awkgram.y:1158
+#: awkgram.y:1171
msgid "unexpected newline or end of string"
msgstr "beklenmeyen satırsonu ya da dizge sonu"
-#: awkgram.y:1254
+#: awkgram.y:1267
msgid "empty program text on command line"
msgstr "komut satırında boş program metni"
-#: awkgram.y:1307
+#: awkgram.y:1320
#, c-format
msgid "can't open source file `%s' for reading (%s)"
msgstr "kaynak dosyası `%s' okumak için açılamıyor (%s)"
-#: awkgram.y:1384
+#: awkgram.y:1397
#, c-format
msgid "can't read sourcefile `%s' (%s)"
msgstr "kaynak dosyası `%s' okunamıyor (%s)"
-#: awkgram.y:1392
+#: awkgram.y:1405
#, c-format
msgid "source file `%s' is empty"
msgstr "kaynak dosyası `%s' boş"
-#: awkgram.y:1590 awkgram.y:1700 awkgram.y:1718 awkgram.y:2068 awkgram.y:2153
+#: awkgram.y:1596 awkgram.y:1718 awkgram.y:1736 awkgram.y:2107 awkgram.y:2194
msgid "source file does not end in newline"
msgstr "kaynak dosyasının sonunda satırsonu eksik"
-#: awkgram.y:1654
+#: awkgram.y:1658
msgid "unterminated regexp ends with `\\' at end of file"
msgstr "sonlandırılmamış düzenli ifade dosya sonunda `\\' ile bitiyor"
-#: awkgram.y:1674
+#: awkgram.y:1682
+#, c-format
+msgid "%s: %d: tawk regex modifier `/.../%c' doesn't work in gawk"
+msgstr ""
+
+#: awkgram.y:1686
+#, c-format
+msgid "tawk regex modifier `/.../%c' doesn't work in gawk"
+msgstr ""
+
+#: awkgram.y:1693
msgid "unterminated regexp"
msgstr "sonlandırılmamış düzenli ifade"
-#: awkgram.y:1677
+#: awkgram.y:1696
msgid "unterminated regexp at end of file"
msgstr "dosya sonunda sonlandırılmamış düzenli ifade"
-#: awkgram.y:1744
+#: awkgram.y:1762
msgid "use of `\\ #...' line continuation is not portable"
msgstr "`\\ #...' satır uzatma kullanımı taşınabilir değil"
-#: awkgram.y:1756
+#: awkgram.y:1774
msgid "backslash not last character on line"
msgstr "tersbölü satırdaki son karakter değil"
-#: awkgram.y:1801
+#: awkgram.y:1819
msgid "POSIX does not allow operator `**='"
msgstr "`**=' iÅŸlemimi POSIX uyumlu deÄŸil"
-#: awkgram.y:1803
+#: awkgram.y:1821
msgid "old awk does not support operator `**='"
msgstr "`**=' iÅŸlemimini eski awk desteklemiyor"
-#: awkgram.y:1812
+#: awkgram.y:1830
msgid "POSIX does not allow operator `**'"
msgstr "`**' iÅŸlemimi POSIX uyumlu deÄŸil"
-#: awkgram.y:1814
+#: awkgram.y:1832
msgid "old awk does not support operator `**'"
msgstr "`**' iÅŸlemimini eski awk desteklemiyor"
-#: awkgram.y:1845
+#: awkgram.y:1863
msgid "operator `^=' is not supported in old awk"
msgstr "`^=' iÅŸlemimini eski awk desteklemiyor"
-#: awkgram.y:1853
+#: awkgram.y:1871
msgid "operator `^' is not supported in old awk"
msgstr "`^' iÅŸlemimini eski awk desteklemiyor"
-#: awkgram.y:1937 awkgram.y:1954
+#: awkgram.y:1955 awkgram.y:1970
msgid "unterminated string"
msgstr "sonlandırılmamış dizge"
-#: awkgram.y:2114
+#: awkgram.y:2155
#, c-format
msgid "invalid char '%c' in expression"
msgstr "ifade içinde '%c' karakteri geçersiz"
-#: awkgram.y:2162
+#: awkgram.y:2203
#, c-format
msgid "`%s' is a gawk extension"
msgstr "`%s' bir gawk uzantısıdır"
-#: awkgram.y:2165
+#: awkgram.y:2206
#, c-format
msgid "`%s' is a Bell Labs extension"
msgstr "`%s' bir Bell Laboratuarları uzantısıdır"
-#: awkgram.y:2168
+#: awkgram.y:2209
#, c-format
msgid "POSIX does not allow `%s'"
msgstr "`%s' POSIX uyumlu deÄŸil"
-#: awkgram.y:2172
+#: awkgram.y:2213
#, c-format
msgid "`%s' is not supported in old awk"
msgstr "`%s' eski awk tarafından desteklemiyor"
-#: awkgram.y:2198
+#: awkgram.y:2239
msgid "`goto' considered harmful!\n"
msgstr "`goto' zararlı sayılır!\n"
-#: awkgram.y:2260
+#: awkgram.y:2301
#, c-format
msgid "%d is invalid as number of arguments for %s"
msgstr "%d argüman sayısı olarak %s için geçersiz"
-#: awkgram.y:2279 awkgram.y:2282
+#: awkgram.y:2320 awkgram.y:2323
msgid "match: third argument is a gawk extension"
msgstr "match: üçüncü argüman bir gawk uzantısı"
-#: awkgram.y:2295
+#: awkgram.y:2336
#, c-format
msgid "%s: string literal as last arg of substitute has no effect"
msgstr "%s: yerine kullanılan son argüman olarak dizge sabiti etkisiz"
-#: awkgram.y:2298
+#: awkgram.y:2339
#, c-format
msgid "%s third parameter is not a changeable object"
msgstr "üçüncü %s parametresi değiştirilebilir bir nesne değil"
-#: awkgram.y:2325 awkgram.y:2328
+#: awkgram.y:2366 awkgram.y:2369
msgid "close: second argument is a gawk extension"
msgstr "close: ikinci argüman bir gawk uzantısı"
-#: awkgram.y:2338
+#: awkgram.y:2379
msgid "use of dcgettext(_\"...\") is incorrect: remove leading underscore"
msgstr "dcgettext(_\"...\") kullanımı yanlış: altçizgiyi kaldırın"
-#: awkgram.y:2353
+#: awkgram.y:2394
msgid "use of dcngettext(_\"...\") is incorrect: remove leading underscore"
msgstr "dcngettext(_\"...\") kullanımı yanlış: altçizgiyi kaldırın"
-#: awkgram.y:2424
+#: awkgram.y:2465
#, c-format
msgid "function `%s': parameter #%d, `%s', duplicates parameter #%d"
msgstr "`%s' işlevi: %d. parametre, `%s', %d. parametrenin tekrarı"
-#: awkgram.y:2457
+#: awkgram.y:2498
#, c-format
msgid "function `%s': parameter `%s' shadows global variable"
msgstr "`%s' işlevi: parametre, `%s'global değişkeni gölgeliyor"
-#: awkgram.y:2569
+#: awkgram.y:2610
#, c-format
msgid "could not open `%s' for writing (%s)"
msgstr "`%s' yazmak için açılamadı (%s)"
-#: awkgram.y:2570 profile.c:93
+#: awkgram.y:2611 profile.c:93
msgid "sending profile to standard error"
msgstr "profil standart hataya gönderiliyor"
-#: awkgram.y:2602
+#: awkgram.y:2643
#, c-format
msgid "%s: close failed (%s)"
msgstr "%s: kapatma başarısız (%s)"
-#: awkgram.y:2723
+#: awkgram.y:2764
msgid "shadow_funcs() called twice!"
msgstr "shadow_funcs() iki kere çağrıldı!"
-#: awkgram.y:2750
+#: awkgram.y:2791
msgid "there were shadowed variables."
msgstr "gölgeli değişkenler vardı."
-#: awkgram.y:2823
+#: awkgram.y:2864
#, c-format
msgid "function `%s': can't use function name as parameter name"
msgstr "işlev `%s': işlev ismi parametre ismi olarak kullanılamaz"
-#: awkgram.y:2833
+#: awkgram.y:2874
#, c-format
msgid "function name `%s' previously defined"
msgstr "işlev ismi `%s' önceden atanmış"
-#: awkgram.y:2984 awkgram.y:2990
+#: awkgram.y:3025 awkgram.y:3031
#, c-format
msgid "function `%s' called but never defined"
msgstr "`%s' işlevi çağrıldı ama hiç atanmamış"
-#: awkgram.y:2993
+#: awkgram.y:3034
#, c-format
msgid "function `%s' defined but never called"
msgstr "`%s' işlevi atanmış ama hiç çağrılmadı"
-#: awkgram.y:3020
+#: awkgram.y:3061
#, c-format
msgid "regexp constant for parameter #%d yields boolean value"
msgstr "%d numaralı argüman bir düzenli ifade sabiti"
-#: awkgram.y:3033
+#: awkgram.y:3105
#, c-format
msgid ""
"function `%s' called with space between name and `(',\n"
@@ -369,197 +384,202 @@ msgstr ""
"`%s' işlevi `(' ile isim arasında boşlukla çağrılmış,\n"
"ya da bir değişken veya bir dizi olarak kullanılmış"
-#: builtin.c:149
+#: builtin.c:145
#, c-format
msgid "%s to \"%s\" failed (%s)"
msgstr "%s \"%s\"ya yazılamadı (%s)"
-#: builtin.c:150
+#: builtin.c:146
msgid "standard output"
msgstr "standart çıktı"
-#: builtin.c:151
+#: builtin.c:147
msgid "reason unknown"
msgstr "sebebi bilinmiyor"
-#: builtin.c:164
+#: builtin.c:160
msgid "exp: received non-numeric argument"
msgstr "exp: sayısal olmayan argüman alındı"
-#: builtin.c:170
+#: builtin.c:166
#, c-format
msgid "exp: argument %g is out of range"
msgstr "exp: %g kapsamdışı"
-#: builtin.c:228
+#: builtin.c:224
#, c-format
msgid "fflush: cannot flush: pipe `%s' opened for reading, not writing"
msgstr ""
"fflush: kanala yazılamadı: veriyolu `%s' okumak için açıldı, yazmak için "
"deÄŸil"
-#: builtin.c:231
+#: builtin.c:227
#, c-format
msgid "fflush: cannot flush: file `%s' opened for reading, not writing"
msgstr ""
"fflush: kanala yazılamadı: dosya `%s' okumak için açıldı, yazmak için değil"
-#: builtin.c:243
+#: builtin.c:239
#, c-format
msgid "fflush: `%s' is not an open file, pipe or co-process"
msgstr "fflush: `%s' bir açık dosya, veriyolu ya da bir yan işlem değil"
-#: builtin.c:338
+#: builtin.c:332
msgid "index: received non-string first argument"
msgstr "index: ilk argüman dizge olmayan türde alındı"
-#: builtin.c:340
+#: builtin.c:334
msgid "index: received non-string second argument"
msgstr "index: ikinci argüman dizge olmayan türde alındı"
-#: builtin.c:454
+#: builtin.c:449
msgid "int: received non-numeric argument"
msgstr "int: sayısal olmayan argüman alındı"
-#: builtin.c:471
+#: builtin.c:472
+#, fuzzy
+msgid "`length(array)' is a gawk extension"
+msgstr "`delete array' bir gawk uzantısıdır"
+
+#: builtin.c:481
msgid "length: received non-string argument"
msgstr "length: dizge olmayan argüman alındı"
-#: builtin.c:487
+#: builtin.c:506
msgid "log: received non-numeric argument"
msgstr "log: sayısal olmayan argüman alındı"
-#: builtin.c:490
+#: builtin.c:509
#, c-format
msgid "log: received negative argument %g"
msgstr "log: negatif argüman %g alındı"
-#: builtin.c:654 builtin.c:657
+#: builtin.c:673 builtin.c:676
msgid "must use `count$' on all formats or none"
msgstr "tüm biçemlerde ya `count$' kullanmalısınız ya da hiçbir şey"
-#: builtin.c:759
+#: builtin.c:778
msgid "`$' is not permitted in awk formats"
msgstr "`$' awk biçemlerde kullanılmaz"
-#: builtin.c:765
+#: builtin.c:784
msgid "arg count with `$' must be > 0"
msgstr "`$' ile birlikte verilen argüman sayısı > 0 olmalıdır"
-#: builtin.c:767
+#: builtin.c:786
#, c-format
msgid "arg count %ld greater than total number of supplied arguments"
msgstr "argüman sayısı %ld sağlanmış toplam argüman sayısından büyük"
-#: builtin.c:769
+#: builtin.c:788
msgid "`$' not permitted after period in format"
msgstr "`$' biçem içinde noktadan sonra kullanılmaz"
-#: builtin.c:782
+#: builtin.c:801
msgid "no `$' supplied for positional field width or precision"
msgstr "konumsal alan genişliği ya da duyarlığı için `$' kullanılmamış"
-#: builtin.c:848
+#: builtin.c:867
msgid "`l' is meaningless in awk formats; ignored"
msgstr "`l' awk biçemlerde anlamsız; yoksayıldı"
-#: builtin.c:852
+#: builtin.c:871
msgid "`l' is not permitted in POSIX awk formats"
msgstr "`l' POSIX awk biçemlerde kullanılmaz"
-#: builtin.c:863
+#: builtin.c:882
msgid "`L' is meaningless in awk formats; ignored"
msgstr "`L' awk biçemlerde anlamsız; yoksayıldı"
-#: builtin.c:867
+#: builtin.c:886
msgid "`L' is not permitted in POSIX awk formats"
msgstr "`L' POSIX awk biçemlerde kullanılmaz"
-#: builtin.c:878
+#: builtin.c:897
msgid "`h' is meaningless in awk formats; ignored"
msgstr "`h' awk biçemlerde anlamsız; yoksayıldı"
-#: builtin.c:882
+#: builtin.c:901
msgid "`h' is not permitted in POSIX awk formats"
msgstr "`h' POSIX awk biçemlerde kullanılmaz"
-#: builtin.c:1111
+#: builtin.c:1132
#, c-format
msgid "[s]printf: value %g is out of range for `%%%c' format"
msgstr "[s]printf: %g değeri `%%%c' biçimi için kapsamdışı"
-#: builtin.c:1171
+#: builtin.c:1198
msgid "not enough arguments to satisfy format string"
msgstr "biçem dizgesini oluşturacak yeterli argüman yok"
-#: builtin.c:1173
+#: builtin.c:1200
msgid "^ ran out for this one"
msgstr "bir bunun için ^ tükendi"
-#: builtin.c:1178
+#: builtin.c:1205
msgid "[s]printf: format specifier does not have control letter"
msgstr "[s]printf: biçem belirteci denetim karakteri içermiyor"
-#: builtin.c:1181
+#: builtin.c:1208
msgid "too many arguments supplied for format string"
msgstr "biçem dizgesi için çok fazla argüman sağlanmış"
-#: builtin.c:1247 builtin.c:1250
+#: builtin.c:1274 builtin.c:1277
msgid "printf: no arguments"
msgstr "printf: argüman yok"
-#: builtin.c:1274
+#: builtin.c:1301
msgid "sqrt: received non-numeric argument"
msgstr "sqrt: sayısal olmayan argüman alındı"
-#: builtin.c:1278
+#: builtin.c:1305
#, c-format
msgid "sqrt: called with negative argument %g"
msgstr "sqrt: negatif argüman %g ile çağrıldı"
-#: builtin.c:1301
+#: builtin.c:1329
#, c-format
msgid "substr: start index %g is invalid, using 1"
msgstr "substr: başlangıç indeksi olarak %g geçersiz, 1 kullanılıyor"
-#: builtin.c:1306
+#: builtin.c:1334
#, c-format
msgid "substr: non-integer start index %g will be truncated"
msgstr ""
"substr: tamsayı olmayan başlangıç indeksi %g den ondalık kısım çıkarılacak"
-#: builtin.c:1325
+#: builtin.c:1353
#, c-format
msgid "substr: length %g is not >= 1"
msgstr "substr: uzunluk %g >= 1 deÄŸil"
-#: builtin.c:1327
+#: builtin.c:1355
#, c-format
msgid "substr: length %g is not >= 0"
msgstr "substr: uzunluk %g => 0 deÄŸil"
-#: builtin.c:1334
+#: builtin.c:1362
#, c-format
msgid "substr: non-integer length %g will be truncated"
msgstr "substr: tamsayı olmayan uzunluk %g den ondalık kısım çıkarılacak"
-#: builtin.c:1339
+#: builtin.c:1367
#, c-format
msgid "substr: length %g too big for string indexing, truncating to %g"
msgstr ""
"substr: dizge indislemesi için uzunluk olarak %g çok fazla, %g den sonrası "
"gözardı ediliyor"
-#: builtin.c:1351
+#: builtin.c:1379
msgid "substr: source string is zero length"
msgstr "substr: kaynak dizge sıfır uzunlukta"
-#: builtin.c:1357
+#: builtin.c:1395
#, c-format
msgid "substr: start index %g is past end of string"
msgstr "substr: başlangıç indisi %g dizgenin sonundan sonra"
-#: builtin.c:1365
+#: builtin.c:1403
#, c-format
msgid ""
"substr: length %g at start index %g exceeds length of first argument (%lu)"
@@ -567,182 +587,182 @@ msgstr ""
"substr: uzunluk %g, %g başlangıç indisinde ilk argümanın uzunluğunu (%lu) "
"aÅŸar"
-#: builtin.c:1400
+#: builtin.c:1478
msgid "strftime: received non-string first argument"
msgstr "strftime: ilk argüman dizge olmayan türde alındı"
-#: builtin.c:1406
+#: builtin.c:1484
msgid "strftime: received empty format string"
msgstr "strftime: boş biçem dizgesi alındı"
-#: builtin.c:1415
+#: builtin.c:1493
msgid "strftime: received non-numeric second argument"
msgstr "strftime: ikinci argüman sayısal olmayan türde alındı"
-#: builtin.c:1478
+#: builtin.c:1556
msgid "mktime: received non-string argument"
msgstr "mktime: dizge olmayan argüman alındı"
-#: builtin.c:1523
+#: builtin.c:1601
msgid "system: received non-string argument"
msgstr "system: dizge olmayan argüman alındı"
-#: builtin.c:1644 eval.c:2019
+#: builtin.c:1722 eval.c:2039
#, c-format
msgid "reference to uninitialized field `$%d'"
msgstr "ilklendirilmemiş `$%d' alanına başvuru"
-#: builtin.c:1671
+#: builtin.c:1827
msgid "tolower: received non-string argument"
msgstr "tolower: dizge olmayan argüman alındı"
-#: builtin.c:1720
+#: builtin.c:1857
msgid "toupper: received non-string argument"
msgstr "toupper: dizge olmayan argüman alındı"
-#: builtin.c:1765
+#: builtin.c:1890
msgid "atan2: received non-numeric first argument"
msgstr "atan2: ilk argüman sayısal olmayan türde alındı"
-#: builtin.c:1767
+#: builtin.c:1892
msgid "atan2: received non-numeric second argument"
msgstr "atan2: ikinci argüman sayısal olmayan türde alındı"
-#: builtin.c:1786
+#: builtin.c:1911
msgid "sin: received non-numeric argument"
msgstr "sin: sayısal olmayan argüman alındı"
-#: builtin.c:1802
+#: builtin.c:1927
msgid "cos: received non-numeric argument"
msgstr "cos: sayısal olmayan argüman alındı"
-#: builtin.c:1852
+#: builtin.c:1977
msgid "srand: received non-numeric argument"
msgstr "srand: sayısal olmayan argüman alındı"
-#: builtin.c:1887
+#: builtin.c:2012
msgid "match: third argument is not an array"
msgstr "match: üçüncü argüman bir dizi değil"
-#: builtin.c:2414
+#: builtin.c:2555
msgid "gensub: third argument of 0 treated as 1"
msgstr "gensub: 0 olan 3. argüman 1 kabul edildi"
-#: builtin.c:2572
+#: builtin.c:2715
msgid "lshift: received non-numeric first argument"
msgstr "lshift: ilk argüman sayısal olmayan türde alındı"
-#: builtin.c:2574
+#: builtin.c:2717
msgid "lshift: received non-numeric second argument"
msgstr "lshift: ikinci argüman sayısal değil"
-#: builtin.c:2580
+#: builtin.c:2723
#, c-format
msgid "lshift(%lf, %lf): negative values will give strange results"
msgstr "lshift(%lf, %lf): negatif değerler tuhaf sonuçlar verecek"
-#: builtin.c:2582
+#: builtin.c:2725
#, c-format
msgid "lshift(%lf, %lf): fractional values will be truncated"
msgstr "lshift(%lf, %lf): tamsayı kısım kalacak şekilde kalanı atılacak"
-#: builtin.c:2584
+#: builtin.c:2727
#, c-format
msgid "lshift(%lf, %lf): too large shift value will give strange results"
msgstr "lshift(%lf, %lf): çok büyük kaydırma değeri tuhaf sonuçlar verecek"
-#: builtin.c:2610
+#: builtin.c:2753
msgid "rshift: received non-numeric first argument"
msgstr "rshift: ilk argüman sayısal olmayan türde alındı"
-#: builtin.c:2612
+#: builtin.c:2755
msgid "rshift: received non-numeric second argument"
msgstr "rshift: ikinci argüman sayısal değil"
-#: builtin.c:2618
+#: builtin.c:2761
#, c-format
msgid "rshift(%lf, %lf): negative values will give strange results"
msgstr "rshift(%lf, %lf): negatif değerler tuhaf sonuçlar verecek"
-#: builtin.c:2620
+#: builtin.c:2763
#, c-format
msgid "rshift(%lf, %lf): fractional values will be truncated"
msgstr "rshift(%lf, %lf): tamsayı kısım kalacak şekilde kalanı atılacak"
-#: builtin.c:2622
+#: builtin.c:2765
#, c-format
msgid "rshift(%lf, %lf): too large shift value will give strange results"
msgstr "rshift(%lf, %lf): çok büyük kaydırma değeri tuhaf sonuçlar verecek"
-#: builtin.c:2648
+#: builtin.c:2791
msgid "and: received non-numeric first argument"
msgstr "and: ilk argüman sayısal olmayan türde alındı"
-#: builtin.c:2650
+#: builtin.c:2793
msgid "and: received non-numeric second argument"
msgstr "and: ikinci argüman sayısal değil"
-#: builtin.c:2656
+#: builtin.c:2799
#, c-format
msgid "and(%lf, %lf): negative values will give strange results"
msgstr "and(%lf, %lf): negatif değerler tuhaf sonuçlar verecek"
-#: builtin.c:2658
+#: builtin.c:2801
#, c-format
msgid "and(%lf, %lf): fractional values will be truncated"
msgstr "and(%lf, %lf): tamsayı kısım kalacak şekilde kalanı atılacak"
-#: builtin.c:2684
+#: builtin.c:2827
msgid "or: received non-numeric first argument"
msgstr "or: ilk argüman sayısal olmayan türde alındı"
-#: builtin.c:2686
+#: builtin.c:2829
msgid "or: received non-numeric second argument"
msgstr "or: ikinci argüman sayısal değil"
-#: builtin.c:2692
+#: builtin.c:2835
#, c-format
msgid "or(%lf, %lf): negative values will give strange results"
msgstr "or(%lf, %lf): negatif değerler tuhaf sonuçlar verecek"
-#: builtin.c:2694
+#: builtin.c:2837
#, c-format
msgid "or(%lf, %lf): fractional values will be truncated"
msgstr "or(%lf, %lf): tamsayı kısım kalacak şekilde kalanı atılacak"
-#: builtin.c:2720
+#: builtin.c:2863
msgid "xor: received non-numeric first argument"
msgstr "xor: ilk argüman sayısal olmayan türde alındı"
-#: builtin.c:2722
+#: builtin.c:2865
msgid "xor: received non-numeric second argument"
msgstr "xor: ikinci argüman sayısal değil"
-#: builtin.c:2728
+#: builtin.c:2871
#, c-format
msgid "xor(%lf, %lf): negative values will give strange results"
msgstr "xor(%lf, %lf): negatif değerler tuhaf sonuçlar verecek"
-#: builtin.c:2730
+#: builtin.c:2873
#, c-format
msgid "xor(%lf, %lf): fractional values will be truncated"
msgstr "xor(%lf, %lf): tamsayı kısım kalacak şekilde kalanı atılacak"
-#: builtin.c:2754
+#: builtin.c:2897
msgid "compl: received non-numeric argument"
msgstr "compl: sayısal olmayan argüman alındı"
-#: builtin.c:2760
+#: builtin.c:2903
#, c-format
msgid "compl(%lf): negative value will give strange results"
msgstr "compl(%lf): negatif değerler tuhaf sonuçlar verecek"
-#: builtin.c:2762
+#: builtin.c:2905
#, c-format
msgid "compl(%lf): fractional value will be truncated"
msgstr "compl(%lf): tamsayı kısım kalacak şekilde kalanı atılacak"
-#: builtin.c:2935
+#: builtin.c:3078
#, c-format
msgid "dcgettext: `%s' is not a valid locale category"
msgstr "dcgettext: `%s' geçerli bir yerel kategori değil"
@@ -752,123 +772,118 @@ msgstr "dcgettext: `%s' geçerli bir yerel kategori değil"
msgid "unknown nodetype %d"
msgstr "%d. düğümtürü bilinmiyor"
-#: eval.c:350
+#: eval.c:353
msgid "buffer overflow in genflags2str"
msgstr "genflags2str içinde tampon taştı"
-#: eval.c:382 eval.c:388 profile.c:837
+#: eval.c:385 eval.c:391 profile.c:838
#, c-format
msgid "attempt to use array `%s' in a scalar context"
msgstr "`%s' dizisi bir sayısal bağlamda kullanılmaya çalışılıyor"
-#: eval.c:730
+#: eval.c:733
#, c-format
msgid "for loop: array `%s' changed size from %ld to %ld during loop execution"
msgstr ""
"for loop: `%s' dizisinin boyu döngünün yorumlanması sırasında %ld iken %ld "
"oldu"
-#: eval.c:751
+#: eval.c:754
msgid "`break' outside a loop is not portable"
msgstr "döngü dışında `break' kullanımı taşınabilir değil"
-#: eval.c:755
+#: eval.c:758
msgid "`break' outside a loop is not allowed"
msgstr "döngü dışında `break' kullanımı yasak"
-#: eval.c:772
+#: eval.c:775
msgid "`continue' outside a loop is not portable"
msgstr "döngü dışında `continue' kullanımı taşınabilir değil"
-#: eval.c:776
+#: eval.c:779
msgid "`continue' outside a loop is not allowed"
msgstr "döngü dışında `continue' kullanımı yasak"
-#: eval.c:810
+#: eval.c:813
msgid "`next' cannot be called from a BEGIN rule"
msgstr "`next' bir BEGIN kuralından çağrılamaz"
-#: eval.c:812
+#: eval.c:815
msgid "`next' cannot be called from an END rule"
msgstr "`next' bir END kuralından çağrılamaz"
-#: eval.c:821
+#: eval.c:824
msgid "`nextfile' cannot be called from a BEGIN rule"
msgstr "`nextfile' bir BEGIN kuralından çağrılamaz"
-#: eval.c:823
+#: eval.c:826
msgid "`nextfile' cannot be called from an END rule"
msgstr "`nextfile' bir END kuralından çağrılamaz"
-#: eval.c:872
+#: eval.c:875
msgid "statement has no effect"
msgstr "deyim etkisiz"
-#: eval.c:915 eval.c:1873
+#: eval.c:952 eval.c:1893
#, c-format
msgid "can't use function name `%s' as variable or array"
msgstr "`%s' işlev ismi bir değişken ya da dizi olarak kullanılamaz"
-#: eval.c:922 eval.c:928
+#: eval.c:959 eval.c:965
#, c-format
msgid "reference to uninitialized argument `%s'"
msgstr "başlangıç değeri olmayan `%s' argümanına başvuru"
-#: eval.c:937 eval.c:1882
+#: eval.c:974 eval.c:1902
#, c-format
msgid "reference to uninitialized variable `%s'"
msgstr "öndeğer ataması yapılmamış `%s' değişkenine başvuru"
-#: eval.c:1083
+#: eval.c:1120
msgid ""
"concatenation: side effects in one expression have changed the length of "
"another!"
msgstr ""
"bitiÅŸtirme: bir ifadenin yan etkileri diÄŸerinin uzunluÄŸunu deÄŸiÅŸtirmiÅŸ!"
-#: eval.c:1162
+#: eval.c:1200
msgid "assignment used in conditional context"
msgstr "koşul bağlamında atama yapılmış"
-#: eval.c:1252
+#: eval.c:1278
msgid "division by zero attempted"
msgstr "sıfırla bölme hatası"
-#: eval.c:1267
+#: eval.c:1293
#, c-format
msgid "division by zero attempted in `%%'"
msgstr "`%%'de sıfırla bölme hatası"
-#: eval.c:1282 profile.c:713
+#: eval.c:1308 profile.c:714
#, c-format
msgid "illegal type (%s) in tree_eval"
msgstr "tree_eval içinde kuraldışı tür (%s)"
-#: eval.c:1459
+#: eval.c:1471
msgid "division by zero attempted in `/='"
msgstr "`/='de sıfırla bölme hatası"
-#: eval.c:1477
+#: eval.c:1493
#, c-format
msgid "division by zero attempted in `%%='"
msgstr "`%%='de sıfırla bölme hatası"
-#: eval.c:1738
+#: eval.c:1758
#, c-format
msgid "function `%s' called with more arguments than declared"
msgstr "`%s' işlevi bildirilenden daha fazla argümanla çağrıldı"
-#: eval.c:1782
+#: eval.c:1802
#, c-format
msgid "function `%s' not defined"
msgstr "`%s' işlevi tanımsız"
-#: eval.c:1788
-#, c-format
-msgid "function %s called\n"
-msgstr "%s işlevi çağrıldı\n"
-
-#: eval.c:1845
+#: eval.c:1865
#, c-format
msgid ""
"\n"
@@ -879,42 +894,42 @@ msgstr ""
"\t# İşlev Çağrı Yığını:\n"
"\n"
-#: eval.c:1848
+#: eval.c:1868
#, c-format
msgid "\t# -- main --\n"
msgstr "\t# -- main --\n"
-#: eval.c:2003
+#: eval.c:2023
msgid "attempt to field reference from non-numeric value"
msgstr "sayısal olmayan değerden alan başvurusu"
-#: eval.c:2005
+#: eval.c:2025
msgid "attempt to reference from null string"
msgstr "null dizgeden alan baÅŸvurusu"
-#: eval.c:2011
+#: eval.c:2031
#, c-format
msgid "attempt to access field %d"
msgstr "%d. alana erişilmeye çalışılıyor"
-#: eval.c:2032 eval.c:2039 profile.c:934
+#: eval.c:2052 eval.c:2059 profile.c:935
msgid "assignment is not allowed to result of builtin function"
msgstr "deÄŸiÅŸken ismine yerleÅŸik iÅŸlevin sonucu atanamaz"
-#: eval.c:2103
+#: eval.c:2123
msgid "`IGNORECASE' is a gawk extension"
msgstr "`IGNORECASE' bir gawk uzantısıdır"
-#: eval.c:2133
+#: eval.c:2153
msgid "`BINMODE' is a gawk extension"
msgstr "`BINMODE' bir gawk uzantısıdır"
-#: eval.c:2255
+#: eval.c:2275
#, c-format
msgid "bad `%sFMT' specification `%s'"
msgstr "`%sFMT' özelliği `%s' hatalı"
-#: eval.c:2333
+#: eval.c:2353
msgid "turning off `--lint' due to assignment to `LINT'"
msgstr "`LINT' atamasından dolayı `--lint' kapatılıyor"
@@ -962,8 +977,8 @@ msgid "extension: function name `%s' previously defined"
msgstr "extension: işlev ismi `%s' evvelce tanımlanmış"
#: ext.c:201
-#, c-format
-msgid "function `%s' defined to take no more than `%d' argument(s)"
+#, fuzzy, c-format
+msgid "function `%s' defined to take no more than %d argument(s)"
msgstr "`%s' işlevi en çok `%d' argüman alabilecek şekilde tanımlı"
#: ext.c:204
@@ -989,551 +1004,556 @@ msgstr ""
msgid "Operation Not Supported"
msgstr "Ä°ÅŸlem Desteklenmiyor"
-#: field.c:315
+#: field.c:326
msgid "NF set to negative value"
msgstr "NF negatif değere ayarlı"
-#: field.c:808
+#: field.c:819
msgid "split: second argument is not an array"
msgstr "split: ikinci argüman bir dizi değil"
-#: field.c:842
+#: field.c:853
msgid "split: null string for third arg is a gawk extension"
msgstr "split: üçüncü argüman olan null dizge bir gawk uzantısı"
-#: field.c:894
+#: field.c:905
msgid "`FIELDWIDTHS' is a gawk extension"
msgstr "`FIELDWIDTHS' bir gawk uzantısıdır"
-#: field.c:921
+#: field.c:935 field.c:946
#, c-format
-msgid "field %d in FIELDWIDTHS, must be > 0"
-msgstr "FIELDWIDTHS içindeki %d. alan > 0 olmalı"
+msgid "invalid FIELDWIDTHS value, near `%s'"
+msgstr ""
-#: field.c:994
+#: field.c:1027
msgid "null string for `FS' is a gawk extension"
msgstr "`FS' için null dizge bir gawk uzantısıdır"
-#: getopt.c:692 getopt.c:711
+#: getopt.c:571 getopt.c:590
#, c-format
msgid "%s: option `%s' is ambiguous\n"
msgstr "%s: `%s' seçeneği belirsiz\n"
-#: getopt.c:744 getopt.c:748
+#: getopt.c:623 getopt.c:627
#, c-format
msgid "%s: option `--%s' doesn't allow an argument\n"
msgstr "%s: `--%s' seçeneği argümansız kullanılır\n"
-#: getopt.c:757 getopt.c:762
+#: getopt.c:636 getopt.c:641
#, c-format
msgid "%s: option `%c%s' doesn't allow an argument\n"
msgstr "%s: seçenek `%c%s' argümansız kullanılır\n"
-#: getopt.c:807 getopt.c:829 getopt.c:1159 getopt.c:1181
+#: getopt.c:687 getopt.c:709 getopt.c:1040 getopt.c:1062
#, c-format
msgid "%s: option `%s' requires an argument\n"
msgstr "%s: `%s' seçeneği bir argümanla kullanılır\n"
-#: getopt.c:867 getopt.c:870
+#: getopt.c:747 getopt.c:750
#, c-format
msgid "%s: unrecognized option `--%s'\n"
msgstr "%s: `--%s' seçeneği bilinmiyor\n"
-#: getopt.c:878 getopt.c:881
+#: getopt.c:758 getopt.c:761
#, c-format
msgid "%s: unrecognized option `%c%s'\n"
msgstr "%s: `%c%s' seçeneği bilinmiyor\n"
-#: getopt.c:936 getopt.c:939
+#: getopt.c:816 getopt.c:819
#, c-format
msgid "%s: illegal option -- %c\n"
msgstr "%s: kuraldışı seçenek -- %c\n"
-#: getopt.c:945 getopt.c:948
+#: getopt.c:825 getopt.c:828
#, c-format
msgid "%s: invalid option -- %c\n"
msgstr "%s: geçersiz seçenek -- %c\n"
-#: getopt.c:1003 getopt.c:1022 getopt.c:1234 getopt.c:1255 main.c:433
+#: getopt.c:883 getopt.c:902 getopt.c:1115 getopt.c:1136 main.c:448
#, c-format
msgid "%s: option requires an argument -- %c\n"
msgstr "%s: seçenek bir argümanla kullanılır -- %c\n"
-#: getopt.c:1074 getopt.c:1093
+#: getopt.c:955 getopt.c:974
#, c-format
msgid "%s: option `-W %s' is ambiguous\n"
msgstr "%s: `-W %s' seçeneği belirsiz\n"
-#: getopt.c:1117 getopt.c:1138
+#: getopt.c:998 getopt.c:1019
#, c-format
msgid "%s: option `-W %s' doesn't allow an argument\n"
msgstr "%s: `-W %s' seçeneği argümansız kullanılır\n"
-#: io.c:308
+#: io.c:307
#, c-format
msgid "cannot open file `%s' for reading (%s)"
msgstr "`%s' okumak için açılamıyor (%s)"
-#: io.c:395
+#: io.c:398
#, c-format
msgid "close of fd %d (`%s') failed (%s)"
msgstr "dosya tanımlayıcı %d (`%s') başarısız (%s)"
-#: io.c:533
+#: io.c:536
#, c-format
msgid "invalid tree type %s in redirect()"
msgstr "redirect() içindeki ağaç türü %s geçersiz"
-#: io.c:539
+#: io.c:542
#, c-format
msgid "expression in `%s' redirection only has numeric value"
msgstr "`%s' yönlendirmesi içindeki ifade sadece sayısal değer içeriyor"
-#: io.c:545
+#: io.c:548
#, c-format
msgid "expression for `%s' redirection has null string value"
msgstr "`%s' yönlendirmesi içindeki ifade null dizge değeri içeriyor"
-#: io.c:550
+#: io.c:553
#, c-format
msgid "filename `%s' for `%s' redirection may be result of logical expression"
msgstr ""
"`%s' dosya ismi (`%s' yönlendirmesi için) mantıksal ifadenin sonucu olabilir"
-#: io.c:588
+#: io.c:591
#, c-format
msgid "unnecessary mixing of `>' and `>>' for file `%.*s'"
msgstr "`%.*s' dosyası için `>' ve `>>' karışımı gereksiz"
-#: io.c:640
+#: io.c:643
#, c-format
msgid "can't open pipe `%s' for output (%s)"
msgstr "`%s' veriyolu çıktı için açılamadı (%s)"
-#: io.c:649
+#: io.c:652
#, c-format
msgid "can't open pipe `%s' for input (%s)"
msgstr "`%s' veriyolu girdi için açılamadı (%s)"
-#: io.c:662
+#: io.c:665
#, c-format
msgid "can't open two way socket `%s' for input/output (%s)"
msgstr "iki yönlü `%s' soketi G/Ç için açılamıyor (%s)"
-#: io.c:666
+#: io.c:669
#, c-format
msgid "can't open two way pipe `%s' for input/output (%s)"
msgstr "iki yönlü `%s' veriyolu G/Ç için açılamıyor (%s)"
-#: io.c:742
+#: io.c:745
#, c-format
msgid "can't redirect from `%s' (%s)"
msgstr "`%s'den yönlendirilemiyor (%s)"
-#: io.c:745
+#: io.c:748
#, c-format
msgid "can't redirect to `%s' (%s)"
msgstr "`%s'e yönlendirilemiyor (%s)"
-#: io.c:784
+#: io.c:787
msgid ""
"reached system limit for open files: starting to multiplex file descriptors"
msgstr ""
"açık dosyalar için sistem sınırı aşıldı: çoğul dosya tanımlayıcılara "
"baÅŸlarken"
-#: io.c:800
+#: io.c:803
#, c-format
msgid "close of `%s' failed (%s)."
msgstr "`%s' kapatılamadı (%s)."
-#: io.c:808
+#: io.c:811
msgid "too many pipes or input files open"
msgstr "çok fazla veriyolu ya da dosya açık"
-#: io.c:831
+#: io.c:834
msgid "close: second argument must be `to' or `from'"
msgstr "close: ikinci argüman `to' ya da `from' olmalı"
-#: io.c:845
+#: io.c:848
#, c-format
msgid "close: `%.*s' is not an open file, pipe or co-process"
msgstr "close: `%.*s' bir açık dosya, veriyolu ya da alt-işlem değil"
-#: io.c:849
+#: io.c:852
msgid "close of redirection that was never opened"
msgstr "hiç açılmamış bir yönlendirmenin kapatılması"
-#: io.c:945
+#: io.c:948
#, c-format
msgid "close: redirection `%s' not opened with `|&', second argument ignored"
msgstr ""
"close: `%s' yönlendirmesi bir `|&' ile açılmamış, ikinci argüman yoksayıldı"
-#: io.c:960
+#: io.c:964
#, c-format
msgid "failure status (%d) on pipe close of `%s' (%s)"
msgstr "başarısızlık durumu (%d): `%s' veriyolunun kapatılması (%s)"
-#: io.c:963
+#: io.c:967
#, c-format
msgid "failure status (%d) on file close of `%s' (%s)"
msgstr "başarısızlık durumu (%d): `%s' dosyasının kapatılması (%s)"
-#: io.c:983
+#: io.c:987
#, c-format
msgid "no explicit close of socket `%s' provided"
msgstr "`%s' soketinin açıkça kapatılması istenmedi"
-#: io.c:986
+#: io.c:990
#, c-format
msgid "no explicit close of co-process `%s' provided"
msgstr "`%s' alt-işleminin açıkça kapatılması istenmedi"
-#: io.c:989
+#: io.c:993
#, c-format
msgid "no explicit close of pipe `%s' provided"
msgstr "`%s' veriyolunun açıkça kapatılması istenmedi"
-#: io.c:992
+#: io.c:996
#, c-format
msgid "no explicit close of file `%s' provided"
msgstr "`%s' dosyasının açıkça kapatılması istenmedi"
-#: io.c:1021 io.c:1075
+#: io.c:1025 io.c:1080 main.c:718 main.c:756
#, c-format
msgid "error writing standard output (%s)"
msgstr "standart çıktıya yazarken hata (%s)"
-#: io.c:1025 io.c:1079
+#: io.c:1029 io.c:1085
#, c-format
msgid "error writing standard error (%s)"
msgstr "standart hataya yazarken hata (%s)"
-#: io.c:1033
+#: io.c:1037
#, c-format
msgid "pipe flush of `%s' failed (%s)."
msgstr "`%s'in veriyolu ile veri aktarımı başarısız (%s)."
-#: io.c:1036
+#: io.c:1040
#, c-format
msgid "co-process flush of pipe to `%s' failed (%s)."
msgstr "`%s'e veriyolunun alt-işlemi ile veri aktarımı başarısız (%s)."
-#: io.c:1039
+#: io.c:1043
#, c-format
msgid "file flush of `%s' failed (%s)."
msgstr "`%s'in dosya ile veri aktarımı başarısız (%s)."
-#: io.c:1198
+#: io.c:1205
msgid "/inet/raw client not ready yet, sorry"
msgstr "/inet/raw istemci henüz hazır değil"
-#: io.c:1200 io.c:1237
+#: io.c:1207 io.c:1244
msgid "only root may use `/inet/raw'."
msgstr "`/inet/raw' sadece root tarafından kullanılabilir"
-#: io.c:1235
+#: io.c:1242
msgid "/inet/raw server not ready yet, sorry"
msgstr "/inet/raw sunucu henüz hazır değil"
-#: io.c:1325
+#: io.c:1332
#, c-format
msgid "no (known) protocol supplied in special filename `%s'"
msgstr "özel dosya ismi `%s' içinde (bilinen) bir protokol sağlanmamış"
-#: io.c:1343
+#: io.c:1350
#, c-format
msgid "special file name `%s' is incomplete"
msgstr "özel dosya ismi `%s' tamamlanmamış"
-#: io.c:1355
+#: io.c:1362
#, c-format
msgid "local port invalid in `%s'"
msgstr "`%s' deki yerel port geçersiz"
-#: io.c:1367
+#: io.c:1374
msgid "must supply a remote hostname to `/inet'"
msgstr "`/inet' e bir karşı makina ismi sağlanmalı"
-#: io.c:1382
+#: io.c:1389
msgid "must supply a remote port to `/inet'"
msgstr "`/inet' e bir karşı port sağlanmalı"
-#: io.c:1388
+#: io.c:1395
#, c-format
msgid "remote port invalid in `%s'"
msgstr "`%s' de karşı port geçersiz"
-#: io.c:1398
+#: io.c:1405
msgid "TCP/IP communications are not supported"
msgstr "TCP/IP haberleÅŸmesi desteklenmiyor"
-#: io.c:1407 io.c:1588
+#: io.c:1414 io.c:1595
#, c-format
msgid "file `%s' is a directory"
msgstr "`%s' dosya deÄŸil dizin"
-#: io.c:1477
+#: io.c:1484
#, c-format
msgid "use `PROCINFO[\"%s\"]' instead of `%s'"
msgstr "`PROCINFO[\"%s\"]' kullanın (`%s' yerine)"
-#: io.c:1509
+#: io.c:1516
msgid "use `PROCINFO[...]' instead of `/dev/user'"
msgstr "`/dev/user' yerine `PROCINFO[...]' kullanın"
-#: io.c:1574 io.c:1748
+#: io.c:1581 io.c:1763
#, c-format
msgid "could not open `%s', mode `%s'"
msgstr "`%s', `%s' kipinde açılamadı"
-#: io.c:1799
+#: io.c:1814
#, c-format
msgid "close of master pty failed (%s)"
msgstr "ana pty kapatılamadı (%s)"
-#: io.c:1801 io.c:1953 io.c:2105
+#: io.c:1816 io.c:1968 io.c:2119
#, c-format
msgid "close of stdout in child failed (%s)"
msgstr "ast süreçte stdÇ kapatılamadı (%s)"
-#: io.c:1804
+#: io.c:1819
#, c-format
msgid "moving slave pty to stdout in child failed (dup: %s)"
msgstr "ast süreçte yardımcı pty standart çıktıya taşınamadı (dup: %s)"
-#: io.c:1806 io.c:1958
+#: io.c:1821 io.c:1973
#, c-format
msgid "close of stdin in child failed (%s)"
msgstr "ast süreçte stdG kapatılamadı (%s)"
-#: io.c:1809
+#: io.c:1824
#, c-format
msgid "moving slave pty to stdin in child failed (dup: %s)"
msgstr "ast süreçte yardımcı pty standart girdiye taşınamadı (dup: %s)"
-#: io.c:1811 io.c:1830
+#: io.c:1826 io.c:1845
#, c-format
msgid "close of slave pty failed (%s)"
msgstr "yardımcı pty kapatılamadı (%s)"
-#: io.c:1904 io.c:1956 io.c:2086 io.c:2108
+#: io.c:1919 io.c:1971 io.c:2100 io.c:2122
#, c-format
msgid "moving pipe to stdout in child failed (dup: %s)"
msgstr "ast süreçte veriyolu standart çıktıya taşınamadı (dup: %s)"
-#: io.c:1908 io.c:1961
+#: io.c:1923 io.c:1976
#, c-format
msgid "moving pipe to stdin in child failed (dup: %s)"
msgstr "ast süreçte veriyolu standart girdiye taşınamadı (dup: %s)"
-#: io.c:1925 io.c:2099
+#: io.c:1940 io.c:2113
msgid "restoring stdout in parent process failed\n"
msgstr "üst süreçte stdÇ eski durumuna getirilemedi\n"
-#: io.c:1930
+#: io.c:1945
msgid "restoring stdin in parent process failed\n"
msgstr "üst süreçte stdG eski durumuna getirilemedi\n"
-#: io.c:1964 io.c:2110 io.c:2121
+#: io.c:1979 io.c:2124 io.c:2135
#, c-format
msgid "close of pipe failed (%s)"
msgstr "veriyolu kapatılamadı (%s)"
-#: io.c:2009
+#: io.c:2024
msgid "`|&' not supported"
msgstr "`|&' desteklenmiyor"
-#: io.c:2076
+#: io.c:2090
#, c-format
msgid "cannot open pipe `%s' (%s)"
msgstr "`%s' veriyolu açılamıyor (%s)"
-#: io.c:2117
+#: io.c:2131
#, c-format
msgid "cannot create child process for `%s' (fork: %s)"
msgstr "`%s' için ast süreç oluşturulamıyor (fork: %s)"
-#: io.c:2460
+#: io.c:2506
#, c-format
msgid "data file `%s' is empty"
msgstr "veri dosyası `%s' boş"
-#: io.c:2503 io.c:2511
+#: io.c:2547 io.c:2555
msgid "could not allocate more input memory"
msgstr "daha fazla girdi belleği ayrılamadı"
-#: io.c:2869 io.c:2932
+#: io.c:2919 io.c:2984
#, c-format
msgid "error reading input file `%s': %s"
msgstr "`%s' girdi dosyası okunurken hata: %s"
-#: io.c:3057
+#: io.c:3109
msgid "multicharacter value of `RS' is a gawk extension"
msgstr "`RS' çoklu karakter değeri bir gawk uzantısıdır"
-#: main.c:323
+#: main.c:338
msgid "`-m[fr]' option irrelevant in gawk"
msgstr "`-m[fr]' seçeneği gawk'da böyle kullanılmaz"
-#: main.c:325
+#: main.c:340
msgid "-m option usage: `-m[fr] nnn'"
msgstr "-m seçeneğinin kullanımı: `-m[fr] nnn'"
-#: main.c:342
+#: main.c:357
#, c-format
msgid "%s: option `-W %s' unrecognized, ignored\n"
msgstr "%s: `-W %s' seçeneği tanımlı değil, yok sayıldı\n"
-#: main.c:379
+#: main.c:394
msgid "empty argument to `--source' ignored"
msgstr "`--source' seçeneği için boş argüman yoksayıldı"
-#: main.c:450
+#: main.c:467
msgid "environment variable `POSIXLY_CORRECT' set: turning on `--posix'"
msgstr "ortam değişkeni `POSIXLY_CORRECT' var: `--posix' kullanılıyor"
-#: main.c:455
+#: main.c:472
msgid "`--posix' overrides `--traditional'"
msgstr "`--posix' seçeneği `--traditional' seçeneğini etkisiz kılar"
-#: main.c:466
+#: main.c:483
msgid "`--posix'/`--traditional' overrides `--non-decimal-data'"
msgstr ""
"`--posix'/`--traditional' seçenekleri `--non-decimal-data' seçeneğini "
"etkisiz kılar"
-#: main.c:470
+#: main.c:487
#, c-format
msgid "running %s setuid root may be a security problem"
msgstr "%s root yetkileriyle çalıştırıldığında güvenlik sorunları olabilir"
-#: main.c:511
+#: main.c:528
#, c-format
msgid "can't set binary mode on stdin (%s)"
msgstr "standart girdi ikilik kipe ayarlanamaz (%s)"
-#: main.c:514
+#: main.c:531
#, c-format
msgid "can't set binary mode on stdout (%s)"
msgstr "standart çıktı ikilik kipe ayarlanamaz (%s)"
-#: main.c:516
+#: main.c:533
#, c-format
msgid "can't set binary mode on stderr (%s)"
msgstr "standart hata ikilik kipe ayarlanamaz (%s)"
-#: main.c:546
+#: main.c:572
msgid "no program text at all!"
msgstr "program metni hiç yok!"
-#: main.c:623
+#: main.c:665
#, c-format
msgid "Usage: %s [POSIX or GNU style options] -f progfile [--] file ...\n"
msgstr ""
"Kullanımı: %s [POSIX veya GNU tarzı seçenekler] -f progdosyası [--] "
"dosya ...\n"
-#: main.c:625
+#: main.c:667
#, c-format
msgid "Usage: %s [POSIX or GNU style options] [--] %cprogram%c file ...\n"
msgstr ""
"Kullanımı: %s [POSIX veya GNU tarzı seçenekler] %cprogram%c dosya ...\n"
-#: main.c:630
+#: main.c:672
msgid "POSIX options:\t\tGNU long options:\n"
msgstr "POSIX seçenekleri: GNU uzun seçenekleri:\n"
-#: main.c:631
+#: main.c:673
msgid "\t-f progfile\t\t--file=progfile\n"
msgstr " -f progDosyası --file=progDosyası\n"
-#: main.c:632
+#: main.c:674
msgid "\t-F fs\t\t\t--field-separator=fs\n"
msgstr " -F ayraç --field-separator=ayraç\n"
-#: main.c:633
+#: main.c:675
msgid "\t-v var=val\t\t--assign=var=val\n"
msgstr " -v var=deÄŸer --assign=var=deÄŸer\n"
-#: main.c:634
+#: main.c:676
msgid "\t-m[fr] val\n"
msgstr " -m[fr] deÄŸer\n"
-#: main.c:635
+#: main.c:677
msgid "\t-W compat\t\t--compat\n"
msgstr " -W compat --compat\n"
-#: main.c:636
+#: main.c:678
msgid "\t-W copyleft\t\t--copyleft\n"
msgstr " -W copyleft --copyleft\n"
-#: main.c:637
+#: main.c:679
msgid "\t-W copyright\t\t--copyright\n"
msgstr " -W copyright --copyright\n"
-#: main.c:638
+#: main.c:680
msgid "\t-W dump-variables[=file]\t--dump-variables[=file]\n"
msgstr " -W dump-variables[=dosya] --dump-variables[=dosya]\n"
-#: main.c:639
+#: main.c:681
+#, fuzzy
+msgid "\t-W exec=file\t\t--exec=file\n"
+msgstr " -W profile[=dosya] --profile[=dosya]\n"
+
+#: main.c:682
msgid "\t-W gen-po\t\t--gen-po\n"
msgstr " -W gen-po --gen-po\n"
-#: main.c:640
+#: main.c:683
msgid "\t-W help\t\t\t--help\n"
msgstr " -W help --help\n"
-#: main.c:641
+#: main.c:684
msgid "\t-W lint[=fatal]\t\t--lint[=fatal]\n"
msgstr " -W lint[=ölümcül] --lint[=ölümcül]\n"
-#: main.c:642
+#: main.c:685
msgid "\t-W lint-old\t\t--lint-old\n"
msgstr " -W lint-old --lint-old\n"
-#: main.c:643
+#: main.c:686
msgid "\t-W non-decimal-data\t--non-decimal-data\n"
msgstr " -W non-decimal-data --non-decimal-data\n"
-#: main.c:645
+#: main.c:688
msgid "\t-W nostalgia\t\t--nostalgia\n"
msgstr " -W nostalgia --nostalgia\n"
-#: main.c:648
+#: main.c:691
msgid "\t-W parsedebug\t\t--parsedebug\n"
msgstr " -W parsedebug --parsedebug\n"
-#: main.c:650
+#: main.c:693
msgid "\t-W profile[=file]\t--profile[=file]\n"
msgstr " -W profile[=dosya] --profile[=dosya]\n"
-#: main.c:651
+#: main.c:694
msgid "\t-W posix\t\t--posix\n"
msgstr " -W posix --posix\n"
-#: main.c:652
+#: main.c:695
msgid "\t-W re-interval\t\t--re-interval\n"
msgstr " -W re-interval --re-interval\n"
-#: main.c:653
+#: main.c:696
msgid "\t-W source=program-text\t--source=program-text\n"
msgstr " -W source=program-metni --source=program-metni\n"
-#: main.c:654
+#: main.c:697
msgid "\t-W traditional\t\t--traditional\n"
msgstr " -W traditional --traditional\n"
-#: main.c:655
+#: main.c:698
msgid "\t-W usage\t\t--usage\n"
msgstr " -W usage --usage\n"
-#: main.c:656
+#: main.c:699
msgid "\t-W version\t\t--version\n"
msgstr " -W version --version\n"
-#: main.c:660
+#: main.c:703
msgid ""
"\n"
"To report bugs, see node `Bugs' in `gawk.info', which is\n"
@@ -1547,7 +1567,7 @@ msgstr ""
"Çeviri hatalarını <gnu-tr-u12a@lists.sourceforge.net> adresine bildiriniz.\n"
"\n"
-#: main.c:664
+#: main.c:707
msgid ""
"gawk is a pattern scanning and processing language.\n"
"By default it reads standard input and writes standard output.\n"
@@ -1557,7 +1577,7 @@ msgstr ""
"Öntanımlı olarak standart girdiyi okur ve standart çıktıya yazar.\n"
"\n"
-#: main.c:668
+#: main.c:711
msgid ""
"Examples:\n"
"\tgawk '{ sum += $1 }; END { print sum }' file\n"
@@ -1567,7 +1587,7 @@ msgstr ""
"\tgawk '{ sum += $1 }; END { print sum }' dosya\n"
"\tgawk -F: '{ print $1 }' /etc/passwd\n"
-#: main.c:685
+#: main.c:731
#, c-format
msgid ""
"Copyright (C) 1989, 1991-%d Free Software Foundation.\n"
@@ -1586,7 +1606,7 @@ msgstr ""
"üzerinde değişiklik yapabilirsiniz.\n"
"\n"
-#: main.c:693
+#: main.c:739
msgid ""
"This program is distributed in the hope that it will be useful,\n"
"but WITHOUT ANY WARRANTY; without even the implied warranty of\n"
@@ -1600,21 +1620,22 @@ msgstr ""
"edinmek için GNU Genel Kamu Lisansına bakınız.\n"
"\n"
-#: main.c:699
+#: main.c:745
msgid ""
"You should have received a copy of the GNU General Public License\n"
"along with this program; if not, write to the Free Software\n"
-"Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.\n"
+"Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, "
+"USA.\n"
msgstr ""
"GNU Genel Kamu Lisansının bir kopyasını bu programla birlikte almış\n"
-"olacaksınız; yoksa Free Software Foundation, Inc., 59 Temple Place\n"
-"Suite 330, Boston, MA 02111-1307, USA. adresinden isteyebilirsiniz.\n"
+"olacaksınız; yoksa Free Software Foundation, Inc., 51 Franklin Street\n"
+"Fifth Floor, Boston, MA 02110-1301, USA. adresinden isteyebilirsiniz.\n"
-#: main.c:733
+#: main.c:781
msgid "-Ft does not set FS to tab in POSIX awk"
msgstr "POSIX awk -Ft ile dosya sistemini belirlemez"
-#: main.c:962
+#: main.c:1018
#, c-format
msgid ""
"%s: `%s' argument to `-v' not in `var=value' form\n"
@@ -1623,35 +1644,35 @@ msgstr ""
"%s: `-v' ile verilen `%s' argümanı `var=değer' biçiminde değil\n"
"\n"
-#: main.c:982
+#: main.c:1038
#, c-format
msgid "`%s' is not a legal variable name"
msgstr "`%s' kurala uygun bir deÄŸiÅŸken ismi deÄŸil"
-#: main.c:985
+#: main.c:1041
#, c-format
msgid "`%s' is not a variable name, looking for file `%s=%s'"
msgstr "`%2$s=%3$s' için dosyaya bakınca, `%1$s' bir değişken ismi değil"
-#: main.c:1018
+#: main.c:1074
msgid "floating point exception"
msgstr "Gerçel sayı istisnası"
-#: main.c:1025
+#: main.c:1081
msgid "fatal error: internal error"
msgstr "ölümcül iç hata"
-#: main.c:1075
+#: main.c:1132
#, c-format
msgid "no pre-opened fd %d"
msgstr "ön açılışlı bir %d dosya tanımlayıcısı yok"
-#: main.c:1082
+#: main.c:1139
#, c-format
msgid "could not pre-open /dev/null for fd %d"
msgstr "%d dosya tanımlayıcısı için /dev/null ön açılışı yapılamadı"
-#: main.c:1105 main.c:1114
+#: main.c:1162 main.c:1171
#, c-format
msgid "could not find groups: %s"
msgstr "gruplar bulunamadı: %s"
@@ -1673,23 +1694,23 @@ msgstr "hata: "
msgid "fatal: "
msgstr "ölümcül: "
-#: node.c:58 node.c:65 node.c:74 node.c:88 node.c:115
+#: node.c:59 node.c:66 node.c:75 node.c:90 node.c:119
msgid "can't convert string to float"
msgstr "dizge gerçel sayıya dönüştürülemiyor"
-#: node.c:357
+#: node.c:414
msgid "backslash at end of string"
msgstr "dizge sonunda tersbölü"
-#: node.c:541
+#: node.c:604
msgid "POSIX does not allow `\\x' escapes"
msgstr "POSIX `\\x' öncelemelerine izin vermez"
-#: node.c:547
+#: node.c:610
msgid "no hex digits in `\\x' escape sequence"
msgstr "`\\x' önceleme dizgesinde onaltılık rakamlar yok"
-#: node.c:581
+#: node.c:644
#, c-format
msgid "escape sequence `\\%c' treated as plain `%c'"
msgstr "`\\%c' önceleme dizgesi `%c' olarak kullanıldı"
@@ -1709,21 +1730,21 @@ msgstr "`%s' yazmak için açılamadı: %s"
msgid "internal error: %s with null vname"
msgstr "iç hata: null vname'li %s"
-#: profile.c:530
+#: profile.c:531
msgid "# treated internally as `delete'"
msgstr "# dahili olarak `delete' varsayıldı"
-#: profile.c:1167
+#: profile.c:1168
#, c-format
msgid "# this is a dynamically loaded extension function"
msgstr "# bu özdevimli olarak yüklenmiş bir ek işlevdir"
-#: profile.c:1198
+#: profile.c:1199
#, c-format
msgid "\t# gawk profile, created %s\n"
msgstr "\t# gawk profili, oluÅŸturuldu: %s\n"
-#: profile.c:1201
+#: profile.c:1202
#, c-format
msgid ""
"\t# BEGIN block(s)\n"
@@ -1732,7 +1753,7 @@ msgstr ""
"\t# BEGIN blokları\n"
"\n"
-#: profile.c:1211
+#: profile.c:1212
#, c-format
msgid ""
"\t# Rule(s)\n"
@@ -1741,7 +1762,7 @@ msgstr ""
"\t# Kurallar\n"
"\n"
-#: profile.c:1217
+#: profile.c:1218
#, c-format
msgid ""
"\t# END block(s)\n"
@@ -1750,7 +1771,7 @@ msgstr ""
"\t# END blokları\n"
"\n"
-#: profile.c:1237
+#: profile.c:1238
#, c-format
msgid ""
"\n"
@@ -1759,83 +1780,89 @@ msgstr ""
"\n"
"\t# İşlevler, alfabetik sırayla\n"
-#: profile.c:1452
+#: profile.c:1453
#, c-format
msgid "unexpected type %s in prec_level"
msgstr "prec_level'da anlaşılamayan tür %s"
-#: regcomp.c:150
+#: regcomp.c:160
msgid "Success"
msgstr "Başarılı"
-#: regcomp.c:153
+#: regcomp.c:163
msgid "No match"
msgstr "EÅŸleÅŸmez"
-#: regcomp.c:156
+#: regcomp.c:166
msgid "Invalid regular expression"
msgstr "Düzenli ifade geçersiz"
-#: regcomp.c:159
+#: regcomp.c:169
msgid "Invalid collation character"
msgstr "Karşılaştırma karakteri geçersiz"
-#: regcomp.c:162
+#: regcomp.c:172
msgid "Invalid character class name"
msgstr "Karakter sınıf ismi geçersiz"
-#: regcomp.c:165
+#: regcomp.c:175
msgid "Trailing backslash"
msgstr "İzleyen tersbölü"
-#: regcomp.c:168
+#: regcomp.c:178
msgid "Invalid back reference"
msgstr "Geriye başvuru geçersiz"
-#: regcomp.c:171
+#: regcomp.c:181
msgid "Unmatched [ or [^"
msgstr "[ ya da [^ eÅŸleÅŸmiyor"
-#: regcomp.c:174
+#: regcomp.c:184
msgid "Unmatched ( or \\("
msgstr "( ya da \\( eÅŸleÅŸmiyor"
-#: regcomp.c:177
+#: regcomp.c:187
msgid "Unmatched \\{"
msgstr "\\{ eÅŸleÅŸmiyor"
-#: regcomp.c:180
+#: regcomp.c:190
msgid "Invalid content of \\{\\}"
msgstr "\\{\\} içeriği geçersiz"
-#: regcomp.c:183
+#: regcomp.c:193
msgid "Invalid range end"
msgstr "Kapsam sonu geçersiz"
-#: regcomp.c:186
+#: regcomp.c:196
msgid "Memory exhausted"
msgstr "Bellek tükendi"
-#: regcomp.c:189
+#: regcomp.c:199
msgid "Invalid preceding regular expression"
msgstr "düzenli ifade önceliği geçersiz"
-#: regcomp.c:192
+#: regcomp.c:202
msgid "Premature end of regular expression"
msgstr "Düzenli ifade sonu eksik kalmış"
-#: regcomp.c:195
+#: regcomp.c:205
msgid "Regular expression too big"
msgstr "Düzenli ifade çok büyük"
-#: regcomp.c:198
+#: regcomp.c:208
msgid "Unmatched ) or \\)"
msgstr ") ya da \\) eÅŸleÅŸmiyor"
-#: regcomp.c:668
+#: regcomp.c:688
msgid "No previous regular expression"
msgstr "Daha önce düzenli ifade yok"
+#~ msgid "function %s called\n"
+#~ msgstr "%s işlevi çağrıldı\n"
+
+#~ msgid "field %d in FIELDWIDTHS, must be > 0"
+#~ msgstr "FIELDWIDTHS içindeki %d. alan > 0 olmalı"
+
#~ msgid "or used as a variable or an array"
#~ msgstr "ya da bir değişken ya da dizi olarak kullanılmış"
diff --git a/po/vi.gmo b/po/vi.gmo
new file mode 100644
index 00000000..628df455
--- /dev/null
+++ b/po/vi.gmo
Binary files differ
diff --git a/po/vi.po b/po/vi.po
new file mode 100644
index 00000000..324aa674
--- /dev/null
+++ b/po/vi.po
@@ -0,0 +1,2017 @@
+# Vietnamese translation for gawk.
+# Copyright © 2005 Free Software Foundation, Inc.
+# Clytie Siddall <clytie@riverland.net.au>, 2005.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: gawk 3.1.4l\n"
+"Report-Msgid-Bugs-To: arnold@skeeve.com\n"
+"POT-Creation-Date: 2005-07-06 17:20+0300\n"
+"PO-Revision-Date: 2005-06-28 14:46+0930\n"
+"Last-Translator: Clytie Siddall <clytie@riverland.net.au>\n"
+"Language-Team: Vietnamese <gnomevi-list@lists.sourceforge.net>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=utf-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"Plural-Forms: nplurals=1; plural=0\n"
+
+#: array.c:112
+#, c-format
+msgid "attempt to use function `%s' as an array"
+msgstr "cố dùng chức năng «%s» là một mảng"
+
+#: array.c:115
+#, c-format
+msgid "attempt to use scalar parameter `%s' as an array"
+msgstr "cố dùng tham số vô hướng «%s» là một mảng"
+
+#: array.c:118
+#, c-format
+msgid "attempt to use scalar `%s' as array"
+msgstr "cố dùng Ä‘iá»u cô hÆ°á»›ng «%s» là mảng"
+
+#: array.c:156
+#, c-format
+msgid "from %s"
+msgstr "từ %s"
+
+#: array.c:511
+#, c-format
+msgid "reference to uninitialized element `%s[\"%s\"]'"
+msgstr "tham chiếu đến phần tử chưa khởi động «%s[\"%s\"]»"
+
+#: array.c:517
+#, c-format
+msgid "subscript of array `%s' is null string"
+msgstr "chữ in dưới mảng «%s» là chuỗi rỗng"
+
+#: array.c:621
+#, c-format
+msgid "delete: index `%s' not in array `%s'"
+msgstr "delete: (xóa bá») số chỉ mục «%s» không phải trong mảng «%s»"
+
+#: array.c:791
+#, c-format
+msgid "%s: empty (null)\n"
+msgstr "%s: rỗng (vô giá trị)\n"
+
+#: array.c:796
+#, c-format
+msgid "%s: empty (zero)\n"
+msgstr "%s: rỗng (số không)\n"
+
+#: array.c:800
+#, c-format
+msgid "%s: table_size = %d, array_size = %d\n"
+msgstr "%s: cỡ_bảng = %d, cỡ_mảng = %d\n"
+
+#: array.c:829
+#, c-format
+msgid "%s: is parameter\n"
+msgstr "%s: là tham số\n"
+
+#: array.c:834
+#, c-format
+msgid "%s: array_ref to %s\n"
+msgstr "%s: «array_ref» (mảng tham chiếu) đến «%s»\n"
+
+#: awkgram.y:208
+#, c-format
+msgid "%s blocks must have an action part"
+msgstr "Má»i khối «%s» phải có má»™t phần là hành Ä‘á»™ng"
+
+#: awkgram.y:211
+msgid "each rule must have a pattern or an action part"
+msgstr "Má»i quy tắc phải có má»™t mẫu hoặc má»™t phần là hành Ä‘á»™ng"
+
+#: awkgram.y:267
+#, c-format
+msgid "`%s' is a built-in function, it cannot be redefined"
+msgstr "«%s» là một chức năng có sẵn nên không thể định nghĩa lái nó."
+
+#: awkgram.y:313
+msgid "regexp constant `//' looks like a C++ comment, but is not"
+msgstr ""
+"hằng biểu thức chính quy «//» hình như một chú thích C, nhưng mà không phải"
+
+#: awkgram.y:316
+#, c-format
+msgid "regexp constant `/%s/' looks like a C comment, but is not"
+msgstr ""
+"hằng biểu thức chính quy «/%s/» hình như một chú thích C, nhưng mà không phải"
+
+#: awkgram.y:343 awkgram.y:623
+msgid "statement may have no effect"
+msgstr "có lẽ câu sẽ không có tác dụng"
+
+#: awkgram.y:440 awkgram.y:460
+#, c-format
+msgid "`%s' used in %s action"
+msgstr "«%s» được dùng trong hành động «%s»"
+
+#: awkgram.y:453 awkgram.y:456
+msgid "`nextfile' is a gawk extension"
+msgstr "«nextfile» (tập tin kế tiếp) là một phần mở rộng gawk"
+
+#: awkgram.y:470
+msgid "`return' used outside function context"
+msgstr "đã dùng «return» (trở vá») ở ngoại ngữ cảnh chức năng"
+
+#: awkgram.y:512
+msgid "plain `print' in BEGIN or END rule should probably be `print \"\"'"
+msgstr ""
+"«print» (in) giản dị trong quy tắc «BEGIN» (bắt đầu) hay «END» (kết thức) "
+"thì rất có thể nên là «print\"\"»"
+
+#: awkgram.y:525 awkgram.y:532
+msgid "`delete array' is a gawk extension"
+msgstr "«delete array» (xóa bỠmảng) là một phần mở rộng gawk"
+
+#: awkgram.y:540 awkgram.y:547
+msgid "`delete(array)' is a non-portable tawk extension"
+msgstr "«delete array» (xóa bỠmảng) là một phần mở rộng tawk không thể mang"
+
+#: awkgram.y:591
+#, c-format
+msgid "duplicate case values in switch body: %s"
+msgstr "giá trị trÆ°á»ng hợp trùng trong ná»™i dung câu chuyển đổi nhánh: %s"
+
+#: awkgram.y:601
+msgid "Duplicate `default' detected in switch body"
+msgstr "Äã phát hiện «mặc định» trùng trong ná»™i dung câu chuyển đổi nhánh"
+
+#: awkgram.y:690
+msgid "multistage two-way pipelines don't work"
+msgstr "Ä‘Æ°á»ng ống dẫn hai chiếu Ä‘a giai Ä‘oạn không hoạt Ä‘á»™ng được"
+
+#: awkgram.y:781
+msgid "regular expression on right of assignment"
+msgstr "biểu thức chính quy bên phải Ä‘iá»u gán"
+
+#: awkgram.y:804
+msgid "regular expression on left of `~' or `!~' operator"
+msgstr "biểu thức chính quy bên trái toán tử «~» hay «!~»"
+
+#: awkgram.y:812
+msgid "regular expression on right of comparison"
+msgstr "biểu thức chính quy bên phải so sánh"
+
+#: awkgram.y:879
+msgid "non-redirected `getline' undefined inside END action"
+msgstr ""
+"trong hành động «END» (kết thức) có «getline» (lấy dòng) không được chuyển "
+"hướng và chưa được định nghĩa."
+
+#: awkgram.y:906
+msgid "call of `length' without parentheses is not portable"
+msgstr "không thể mang lá»i gá»i «length» (Ä‘á»™ dài) không có ngoặc"
+
+#: awkgram.y:909
+msgid "call of `length' without parentheses is deprecated by POSIX"
+msgstr "POSIX phản đối lá»i gá»i «length» (Ä‘á»™ dài) không có ngoặc"
+
+#: awkgram.y:962
+msgid "use of non-array as array"
+msgstr "đã dùng Ä‘iá»u là mảng mà không phải là mảng"
+
+#: awkgram.y:964
+msgid "invalid subscript expression"
+msgstr "biểu thức in thấp không hợp lệ"
+
+#: awkgram.y:1171
+msgid "unexpected newline or end of string"
+msgstr "dòng má»›i hay kết thức chuá»—i bất ngá»"
+
+#: awkgram.y:1267
+msgid "empty program text on command line"
+msgstr "chữ chương trình rỗng trên dòng lệnh"
+
+#: awkgram.y:1320
+#, c-format
+msgid "can't open source file `%s' for reading (%s)"
+msgstr "không mở được tập tin nguồn «%s» để Ä‘á»c (%s)"
+
+#: awkgram.y:1397
+#, c-format
+msgid "can't read sourcefile `%s' (%s)"
+msgstr "không Ä‘á»c được tập tin nguồn «%s» (%s)"
+
+#: awkgram.y:1405
+#, c-format
+msgid "source file `%s' is empty"
+msgstr "tập tin nguồn «%s» là rỗng"
+
+#: awkgram.y:1596 awkgram.y:1718 awkgram.y:1736 awkgram.y:2107 awkgram.y:2194
+msgid "source file does not end in newline"
+msgstr "tập tin nguồn không kết thức với dòng mới"
+
+#: awkgram.y:1658
+msgid "unterminated regexp ends with `\\' at end of file"
+msgstr ""
+"biểu thức chính quy chưa chấm dứt thì kết thức với «\\» tại kết thức tập tin"
+
+#: awkgram.y:1682
+#, c-format
+msgid "%s: %d: tawk regex modifier `/.../%c' doesn't work in gawk"
+msgstr ""
+"%s: %d: Ä‘iá»u sá»­a đổi biểu thức chính quy tawk «/.../%c» không hoạt Ä‘á»™ng "
+"trong trình gawk"
+
+#: awkgram.y:1686
+#, c-format
+msgid "tawk regex modifier `/.../%c' doesn't work in gawk"
+msgstr ""
+"Ä‘iá»u sá»­a đổi biểu thức chính quy tawk «/.../%c» không hoạt Ä‘á»™ng trong trình "
+"gawk"
+
+#: awkgram.y:1693
+msgid "unterminated regexp"
+msgstr "biểu thức chính quy chưa chấm dứt "
+
+#: awkgram.y:1696
+msgid "unterminated regexp at end of file"
+msgstr "biểu thức chính quy chưa chấm dứt tại kết thức tập tin"
+
+#: awkgram.y:1762
+msgid "use of `\\ #...' line continuation is not portable"
+msgstr "không thể mang khi sử dụng «\\#...» để tiếp tục dòng"
+
+#: awkgram.y:1774
+msgid "backslash not last character on line"
+msgstr "xuyệc ngược không phải là ký tự cuối cùng trên dòng"
+
+#: awkgram.y:1819
+msgid "POSIX does not allow operator `**='"
+msgstr "POSIX không cho phép toán tử «**=»"
+
+#: awkgram.y:1821
+msgid "old awk does not support operator `**='"
+msgstr "awk cũ không hỗ trợ toán tử «**=»"
+
+#: awkgram.y:1830
+msgid "POSIX does not allow operator `**'"
+msgstr "POSIX không cho phép toán tử «**»"
+
+#: awkgram.y:1832
+msgid "old awk does not support operator `**'"
+msgstr "awk cũ không hỗ trợ toán tử «**»"
+
+#: awkgram.y:1863
+msgid "operator `^=' is not supported in old awk"
+msgstr "awk cũ không hỗ trợ toán tử «^=»"
+
+#: awkgram.y:1871
+msgid "operator `^' is not supported in old awk"
+msgstr "awk cũ không hỗ trợ toán tử «^»"
+
+#: awkgram.y:1955 awkgram.y:1970
+msgid "unterminated string"
+msgstr "chuỗi không được chấm dứt"
+
+#: awkgram.y:2155
+#, c-format
+msgid "invalid char '%c' in expression"
+msgstr "có một ký tự không hợp lệ «%c» trong biểu thức"
+
+#: awkgram.y:2203
+#, c-format
+msgid "`%s' is a gawk extension"
+msgstr "«%s» là một phần mở rộng gawk"
+
+#: awkgram.y:2206
+#, c-format
+msgid "`%s' is a Bell Labs extension"
+msgstr "«%s» là một phần mở rộng Bell Labs (Phòng thí nghiệm Bell)"
+
+#: awkgram.y:2209
+#, c-format
+msgid "POSIX does not allow `%s'"
+msgstr "POSIX không cho phép «%s»"
+
+#: awkgram.y:2213
+#, c-format
+msgid "`%s' is not supported in old awk"
+msgstr "awk cũ không hỗ trợ «%s»"
+
+#: awkgram.y:2239
+msgid "`goto' considered harmful!\n"
+msgstr "đã thấy là «goto» gây tai hại\n"
+
+#: awkgram.y:2301
+#, c-format
+msgid "%d is invalid as number of arguments for %s"
+msgstr "«%d» không hợp lệ là số đối số cho «%s»"
+
+#: awkgram.y:2320 awkgram.y:2323
+msgid "match: third argument is a gawk extension"
+msgstr "match: (khớp) đối số thứ ba là phần mở rộng gawk"
+
+#: awkgram.y:2336
+#, c-format
+msgid "%s: string literal as last arg of substitute has no effect"
+msgstr ""
+"%s: khi đối số cuối cùng của thay thế, hằng mã nguồn chuỗi không có tác dụng"
+
+#: awkgram.y:2339
+#, c-format
+msgid "%s third parameter is not a changeable object"
+msgstr "tham số thứ ba «%s» không phải là một đối tượng có thể thay đổi"
+
+#: awkgram.y:2366 awkgram.y:2369
+msgid "close: second argument is a gawk extension"
+msgstr "close: (đóng) đối số thứ hai là phần mở rộng gawk"
+
+#: awkgram.y:2379
+msgid "use of dcgettext(_\"...\") is incorrect: remove leading underscore"
+msgstr "dùng «dcgettext(_\"...\")» không đúng: hãy loại bỠgạch dưới đi trước"
+
+#: awkgram.y:2394
+msgid "use of dcngettext(_\"...\") is incorrect: remove leading underscore"
+msgstr "dùng «dcgettext(_\"...\")» không đúng: hãy loại bỠgạch dưới đi trước"
+
+#: awkgram.y:2465
+#, c-format
+msgid "function `%s': parameter #%d, `%s', duplicates parameter #%d"
+msgstr "chức năng «%s»: tham số «#%d», «%s», nhân đôi tham số «#%d»"
+
+#: awkgram.y:2498
+#, c-format
+msgid "function `%s': parameter `%s' shadows global variable"
+msgstr "chức năng «%s»: tham số «%s» che biến toàn cục"
+
+#: awkgram.y:2610
+#, c-format
+msgid "could not open `%s' for writing (%s)"
+msgstr "không mở được «%s» để ghi (%s)"
+
+#: awkgram.y:2611 profile.c:93
+msgid "sending profile to standard error"
+msgstr "đang gởi tiểu sở sơ lược cho thiết bị lỗi chuẩn"
+
+#: awkgram.y:2643
+#, c-format
+msgid "%s: close failed (%s)"
+msgstr "%s: đóng thất bại (%s)"
+
+#: awkgram.y:2764
+msgid "shadow_funcs() called twice!"
+msgstr "shadow_funcs() (chức năng bóng) được gá»i hai lần!"
+
+#: awkgram.y:2791
+msgid "there were shadowed variables."
+msgstr "đã có một số biến bị che"
+
+#: awkgram.y:2864
+#, c-format
+msgid "function `%s': can't use function name as parameter name"
+msgstr "chức năng «%s»: không dùng được tên chức năng là tên tham số"
+
+#: awkgram.y:2874
+#, c-format
+msgid "function name `%s' previously defined"
+msgstr "tên chức năng «%s» được định nghĩa trước"
+
+#: awkgram.y:3025 awkgram.y:3031
+#, c-format
+msgid "function `%s' called but never defined"
+msgstr "chức năng «%s» được gá»i nhÆ°ng mà chÆ°a định nghÄ©a"
+
+#: awkgram.y:3034
+#, c-format
+msgid "function `%s' defined but never called"
+msgstr "chức năng «%s» được định nghÄ©a nhÆ°ng mà chÆ°a gá»i"
+
+#: awkgram.y:3061
+#, c-format
+msgid "regexp constant for parameter #%d yields boolean value"
+msgstr "hằng biểu thức chính quy cho tham số «#%d» làm giá trị luận lý"
+
+#: awkgram.y:3105
+#, c-format
+msgid ""
+"function `%s' called with space between name and `(',\n"
+"or used as a variable or an array"
+msgstr ""
+"chức năng «%s» được gá»i khi có dấu cách giữa tên và «(»\n"
+"hoặc được dùng là một biến hay là một mảng"
+
+#: builtin.c:145
+#, c-format
+msgid "%s to \"%s\" failed (%s)"
+msgstr "%s đến «%s» thất bại (%s)"
+
+#: builtin.c:146
+msgid "standard output"
+msgstr "thiết bị xuất chuẩn"
+
+#: builtin.c:147
+msgid "reason unknown"
+msgstr "không biết sao"
+
+#: builtin.c:160
+msgid "exp: received non-numeric argument"
+msgstr "exp: đã nhận đối số không phải thuộc số"
+
+#: builtin.c:166
+#, c-format
+msgid "exp: argument %g is out of range"
+msgstr "exp: đối số «%g» ở ngoại phạm vị"
+
+#: builtin.c:224
+#, c-format
+msgid "fflush: cannot flush: pipe `%s' opened for reading, not writing"
+msgstr ""
+"fflush: không thể xóa sạch: ống dẫn «%s» được mở để Ä‘á»c, không phải để ghi"
+
+#: builtin.c:227
+#, c-format
+msgid "fflush: cannot flush: file `%s' opened for reading, not writing"
+msgstr ""
+"fflush: không thể xóa sạch: tập tin «%s» được mở để Ä‘á»c, không phải để ghi"
+
+#: builtin.c:239
+#, c-format
+msgid "fflush: `%s' is not an open file, pipe or co-process"
+msgstr ""
+"fflush: «%s» không phải là một tập tin đã mở, một ống dẫn hay một đồng tiến "
+"trình"
+
+#: builtin.c:332
+msgid "index: received non-string first argument"
+msgstr "index: (số chỉ mục) đã nhận đối số đầu không phải là chuỗi"
+
+#: builtin.c:334
+msgid "index: received non-string second argument"
+msgstr "index: (số chỉ mục) đã nhận đối số thứ hai không phải là chuỗi"
+
+#: builtin.c:449
+msgid "int: received non-numeric argument"
+msgstr "int: (số nguyên) đã nhận đối số không phải thuộc số"
+
+#: builtin.c:472
+#, fuzzy
+msgid "`length(array)' is a gawk extension"
+msgstr "«delete array» (xóa bỠmảng) là một phần mở rộng gawk"
+
+#: builtin.c:481
+msgid "length: received non-string argument"
+msgstr "length: (độ dài) đã nhận đối số không phải chuỗi"
+
+#: builtin.c:506
+msgid "log: received non-numeric argument"
+msgstr "log: (bản ghi) đã nhận đối số không phải thuộc số"
+
+#: builtin.c:509
+#, c-format
+msgid "log: received negative argument %g"
+msgstr "log: (bản ghi) đã nhận đối số âm «%g»"
+
+#: builtin.c:673 builtin.c:676
+msgid "must use `count$' on all formats or none"
+msgstr ""
+"phải sá»­ dụng «count$» hoặc vá»›i má»i định dạng hoặc không vá»›i định dạng nào"
+
+#: builtin.c:778
+msgid "`$' is not permitted in awk formats"
+msgstr "không cho phép «$» trong định dạng awk"
+
+#: builtin.c:784
+msgid "arg count with `$' must be > 0"
+msgstr "khi dùng «$» thì số đếm đối số phải là >0"
+
+#: builtin.c:786
+#, c-format
+msgid "arg count %ld greater than total number of supplied arguments"
+msgstr "số đếm đối số «%ld» lớn hơn tổng số đối số được cung cấp"
+
+#: builtin.c:788
+msgid "`$' not permitted after period in format"
+msgstr "không cho phép «$» sau dấu chấm trong định dạng"
+
+#: builtin.c:801
+msgid "no `$' supplied for positional field width or precision"
+msgstr ""
+"chÆ°a cung cấp «$» cho Ä‘á»™ rá»™ng trÆ°á»ng thuá»™c vị trí hoặc cho Ä‘á»™ chính xác"
+
+#: builtin.c:867
+msgid "`l' is meaningless in awk formats; ignored"
+msgstr "chữ «l» không có nghĩa trong định dạng awk nên bị bỠqua"
+
+#: builtin.c:871
+msgid "`l' is not permitted in POSIX awk formats"
+msgstr "không cho phép chữ «l» trong định dạng awk POSIX"
+
+#: builtin.c:882
+msgid "`L' is meaningless in awk formats; ignored"
+msgstr "chữ «L» không có nghĩa trong định dạng awk nên bị bỠqua"
+
+#: builtin.c:886
+msgid "`L' is not permitted in POSIX awk formats"
+msgstr "không cho phép chữ «L» trong định dạng awk POSIX"
+
+#: builtin.c:897
+msgid "`h' is meaningless in awk formats; ignored"
+msgstr "chữ «h» không có nghĩa trong định dạng awk nên bị bỠqua"
+
+#: builtin.c:901
+msgid "`h' is not permitted in POSIX awk formats"
+msgstr "không cho phép chữ «h» trong định dạng awk POSIX"
+
+#: builtin.c:1132
+#, c-format
+msgid "[s]printf: value %g is out of range for `%%%c' format"
+msgstr "[s]printf: giá trị «%g» ở ngoại phạm vị cho định dạng «%%%c»"
+
+#: builtin.c:1198
+msgid "not enough arguments to satisfy format string"
+msgstr "chưa có đủ đối số để đáp ứng chuỗi định dạng"
+
+#: builtin.c:1200
+msgid "^ ran out for this one"
+msgstr "hết «^» cho Ä‘iá»u này"
+
+#: builtin.c:1205
+msgid "[s]printf: format specifier does not have control letter"
+msgstr "[s]printf: Ä‘iá»u ghi rõ định dạng không có chữ Ä‘iá»u khiển"
+
+#: builtin.c:1208
+msgid "too many arguments supplied for format string"
+msgstr "đã cung cấp quá nhiá»u đối số cho chuá»—i định dạng"
+
+#: builtin.c:1274 builtin.c:1277
+msgid "printf: no arguments"
+msgstr "printf: không có đối số nào"
+
+#: builtin.c:1301
+msgid "sqrt: received non-numeric argument"
+msgstr "sqrt: (căn bậc hai) đã nhận đối số không phải thuộc số"
+
+#: builtin.c:1305
+#, c-format
+msgid "sqrt: called with negative argument %g"
+msgstr "sqrt: (căn bậc hai) đã gá»i vá»›i đối số âm «%g»"
+
+#: builtin.c:1329
+#, c-format
+msgid "substr: start index %g is invalid, using 1"
+msgstr "substr: (chuỗi con) số chỉ mục đầu «%g» không hợp lệ nên dùng «1»"
+
+#: builtin.c:1334
+#, c-format
+msgid "substr: non-integer start index %g will be truncated"
+msgstr "substr: (chuỗi con) sẽ cắt xén số chỉ mục không phải số nguyên «%g»"
+
+#: builtin.c:1353
+#, c-format
+msgid "substr: length %g is not >= 1"
+msgstr "substr: (chuỗi con) độ dài «%g» không phải ≥1"
+
+#: builtin.c:1355
+#, c-format
+msgid "substr: length %g is not >= 0"
+msgstr "substr: (chuỗi con) độ dài «%g» không phải ≥0"
+
+#: builtin.c:1362
+#, c-format
+msgid "substr: non-integer length %g will be truncated"
+msgstr "substr: (chuỗi con) sẽ cắt xén độ dài không phải số nguyên «%g»"
+
+#: builtin.c:1367
+#, c-format
+msgid "substr: length %g too big for string indexing, truncating to %g"
+msgstr ""
+"substr: (chuỗi con) độ dài «%g» quá lớn cho chỉ mục chuỗi nên cắt xén xuống "
+"«%g»"
+
+#: builtin.c:1379
+msgid "substr: source string is zero length"
+msgstr "substr: (chuỗi con) chuỗi nguồn có độ dài số không"
+
+#: builtin.c:1395
+#, c-format
+msgid "substr: start index %g is past end of string"
+msgstr "substr: (chuỗi con) chỉ mục đầu «%g» sau kết thức chuỗi"
+
+#: builtin.c:1403
+#, c-format
+msgid ""
+"substr: length %g at start index %g exceeds length of first argument (%lu)"
+msgstr ""
+"substr: (chuỗi con) độ dài «%g» tại chỉ mục đầu «%g» thì vượt quá độ dài của "
+"đối số đầu («%lu»)"
+
+#: builtin.c:1478
+msgid "strftime: received non-string first argument"
+msgstr "strftime: đã nhận đối số đầu không phải chuỗi"
+
+#: builtin.c:1484
+msgid "strftime: received empty format string"
+msgstr "strftime: đã nhận chuỗi định dạng rỗng"
+
+#: builtin.c:1493
+msgid "strftime: received non-numeric second argument"
+msgstr "strftime: đã nhận đối số thứ hai không phải thuộc số"
+
+#: builtin.c:1556
+msgid "mktime: received non-string argument"
+msgstr "mktime: đã nhận đối số không phải chuỗi"
+
+#: builtin.c:1601
+msgid "system: received non-string argument"
+msgstr "system: (hệ thống) đã nhận đối số không phải chuỗi"
+
+#: builtin.c:1722 eval.c:2039
+#, c-format
+msgid "reference to uninitialized field `$%d'"
+msgstr "tham chiếu đến trÆ°á»ng chÆ°a khởi Ä‘á»™ng «$%d»"
+
+#: builtin.c:1827
+msgid "tolower: received non-string argument"
+msgstr "tolower: (đến thấp hơn) đã nhận đối số không phải chuỗi"
+
+#: builtin.c:1857
+msgid "toupper: received non-string argument"
+msgstr "toupper: (đến cao hơn) đã nhận đối số không phải chuỗi"
+
+#: builtin.c:1890
+msgid "atan2: received non-numeric first argument"
+msgstr "atan2: đã nhận đối số đầu không phải thuộc số"
+
+#: builtin.c:1892
+msgid "atan2: received non-numeric second argument"
+msgstr "atan2: đã nhận đối số thứ hai không phải thuộc số"
+
+#: builtin.c:1911
+msgid "sin: received non-numeric argument"
+msgstr "sin: đã nhận đối số không phải thuộc số"
+
+#: builtin.c:1927
+msgid "cos: received non-numeric argument"
+msgstr "cos: đã nhận đối số không phải thuộc số"
+
+#: builtin.c:1977
+msgid "srand: received non-numeric argument"
+msgstr "srand: đã nhận đối số không phải thuộc số"
+
+#: builtin.c:2012
+msgid "match: third argument is not an array"
+msgstr "match: (khớp) đối số thứ ba không phải là một mảng"
+
+#: builtin.c:2555
+msgid "gensub: third argument of 0 treated as 1"
+msgstr "gensub: (tạo Ä‘iá»u con) đối số thứ ba là «0» thì được xá»­ lý là «1»"
+
+#: builtin.c:2715
+msgid "lshift: received non-numeric first argument"
+msgstr "lshift: (dịch trái) đã nhận đối số đầu không phải thuộc số"
+
+#: builtin.c:2717
+msgid "lshift: received non-numeric second argument"
+msgstr "lshift: (dịch trái) đã nhận đối số thứ hai không phải thuộc số"
+
+#: builtin.c:2723
+#, c-format
+msgid "lshift(%lf, %lf): negative values will give strange results"
+msgstr "lshift(%lf, %lf): giá trị âm thì sẽ gây ra kết quả lạ"
+
+#: builtin.c:2725
+#, c-format
+msgid "lshift(%lf, %lf): fractional values will be truncated"
+msgstr "lshift(%lf, %lf): giá trị thuộc phân số thì sẽ bị cắt xén"
+
+#: builtin.c:2727
+#, c-format
+msgid "lshift(%lf, %lf): too large shift value will give strange results"
+msgstr "lshift(%lf, %lf): giá trị dịch quá lớn thì sẽ gây ra kết quả lạ"
+
+#: builtin.c:2753
+msgid "rshift: received non-numeric first argument"
+msgstr "rshift: đã nhận đối số đầu không phải thuộc số"
+
+#: builtin.c:2755
+msgid "rshift: received non-numeric second argument"
+msgstr "rshift: (dịch phải) đã nhận đối số thứ hai không phải thuộc số"
+
+#: builtin.c:2761
+#, c-format
+msgid "rshift(%lf, %lf): negative values will give strange results"
+msgstr "rshift(%lf, %lf): giá trị âm thì sẽ gây ra kết quả lạ"
+
+#: builtin.c:2763
+#, c-format
+msgid "rshift(%lf, %lf): fractional values will be truncated"
+msgstr "rshift(%lf, %lf): giá trị thuộc phân số thì sẽ bị cắt xén"
+
+#: builtin.c:2765
+#, c-format
+msgid "rshift(%lf, %lf): too large shift value will give strange results"
+msgstr "rshift(%lf, %lf): giá trị dịch quá lớn thì sẽ gây ra kết quả lạ"
+
+#: builtin.c:2791
+msgid "and: received non-numeric first argument"
+msgstr "and: (và) đã nhận đối số đầu không phải thuộc số"
+
+#: builtin.c:2793
+msgid "and: received non-numeric second argument"
+msgstr "and: (và) đã nhận đối số thứ hai không phải thuộc số"
+
+#: builtin.c:2799
+#, c-format
+msgid "and(%lf, %lf): negative values will give strange results"
+msgstr "and(%lf, %lf): (và) giá trị âm thì sẽ gây ra kết quả lạ"
+
+#: builtin.c:2801
+#, c-format
+msgid "and(%lf, %lf): fractional values will be truncated"
+msgstr "and(%lf, %lf): (và) giá trị thuộc phân số thì sẽ bị cắt xén"
+
+#: builtin.c:2827
+msgid "or: received non-numeric first argument"
+msgstr "or: (hoặc) đã nhận đối số đầu không phải thuộc số"
+
+#: builtin.c:2829
+msgid "or: received non-numeric second argument"
+msgstr "or: (hoặc) đã nhận đối số thứ hai không phải thuộc số"
+
+#: builtin.c:2835
+#, c-format
+msgid "or(%lf, %lf): negative values will give strange results"
+msgstr "or(%lf, %lf): (hoặc) giá trị âm thì sẽ gây ra kết quả lạ"
+
+#: builtin.c:2837
+#, c-format
+msgid "or(%lf, %lf): fractional values will be truncated"
+msgstr "or(%lf, %lf): (hoặc) giá trị thuộc phân số thì sẽ bị cắt xén"
+
+#: builtin.c:2863
+msgid "xor: received non-numeric first argument"
+msgstr "xor: (không hoặc) đã nhận đối số đầu không phải thuộc số"
+
+#: builtin.c:2865
+msgid "xor: received non-numeric second argument"
+msgstr "xor: (không hoặc) đã nhận đối số thứ hai không phải thuộc số"
+
+#: builtin.c:2871
+#, c-format
+msgid "xor(%lf, %lf): negative values will give strange results"
+msgstr "xor(%lf, %lf): (không hoặc) giá trị âm thì sẽ gây ra kết quả lạ"
+
+#: builtin.c:2873
+#, c-format
+msgid "xor(%lf, %lf): fractional values will be truncated"
+msgstr "xor(%lf, %lf): (không hoặc) giá trị thuộc phân số thì sẽ bị cắt xén"
+
+#: builtin.c:2897
+msgid "compl: received non-numeric argument"
+msgstr "compl: (biên dịch) đã nhận đối số không phải thuộc số"
+
+#: builtin.c:2903
+#, c-format
+msgid "compl(%lf): negative value will give strange results"
+msgstr "compl(%lf): (biên dịch) giá trị âm thì sẽ gây ra kết quả lạ"
+
+#: builtin.c:2905
+#, c-format
+msgid "compl(%lf): fractional value will be truncated"
+msgstr "compl(%lf): (biên dịch) giá trị thuộc phân số thì sẽ bị cắt xén"
+
+#: builtin.c:3078
+#, c-format
+msgid "dcgettext: `%s' is not a valid locale category"
+msgstr "dcgettext: «%s» không phải là má»™t phân loại miá»n địa phÆ°Æ¡ng hợp lệ"
+
+#: eval.c:303
+#, c-format
+msgid "unknown nodetype %d"
+msgstr "không biết kiểu nút «%d»"
+
+#: eval.c:353
+msgid "buffer overflow in genflags2str"
+msgstr "vùng đệm vượt quá trong «genflags2str» (tạo ra cỠđến chuỗi)"
+
+#: eval.c:385 eval.c:391 profile.c:838
+#, c-format
+msgid "attempt to use array `%s' in a scalar context"
+msgstr "cố dùng mảng «%s» trong một ngữ cảnh vô hướng"
+
+#: eval.c:733
+#, c-format
+msgid "for loop: array `%s' changed size from %ld to %ld during loop execution"
+msgstr ""
+"for loop: (cho vòng lặp) mảng «%s» đã thay đổi kích thước từ «%ld» đến «%ld» "
+"trong khi thực hiện vòng lặp"
+
+#: eval.c:754
+msgid "`break' outside a loop is not portable"
+msgstr "không thể mang «break» (ngắt) ở ngoại một vòng lặp"
+
+#: eval.c:758
+msgid "`break' outside a loop is not allowed"
+msgstr "không cho phép «break» (ngắt) ở ngoại một vòng lặp"
+
+#: eval.c:775
+msgid "`continue' outside a loop is not portable"
+msgstr "không thể mang «continue» (tiếp tục) ở ngoại một vòng lặp"
+
+#: eval.c:779
+msgid "`continue' outside a loop is not allowed"
+msgstr "không cho phép «continue» (tiếp tục) ở ngoại một vòng lặp"
+
+#: eval.c:813
+msgid "`next' cannot be called from a BEGIN rule"
+msgstr "không gá»i được «next» (kế tiếp) từ má»™t quy tắc «BEGIN» (bắt đầu)"
+
+#: eval.c:815
+msgid "`next' cannot be called from an END rule"
+msgstr "không gá»i được «next» (kế tiếp) từ má»™t quy tắc «END» kết thức)"
+
+#: eval.c:824
+msgid "`nextfile' cannot be called from a BEGIN rule"
+msgstr ""
+"không gá»i được «nextfile» (tập tin kế tiếp) từ má»™t quy tắc «BEGIN» (bắt đầu)"
+
+#: eval.c:826
+msgid "`nextfile' cannot be called from an END rule"
+msgstr ""
+"không gá»i được «nextfile» (tập tin kế tiếp) từ má»™t quy tắc «END» kết thức)"
+
+#: eval.c:875
+msgid "statement has no effect"
+msgstr "câu không có tác dụng"
+
+#: eval.c:952 eval.c:1893
+#, c-format
+msgid "can't use function name `%s' as variable or array"
+msgstr "không thể dùng tên chức năng «%s» với là biến hay mảng"
+
+#: eval.c:959 eval.c:965
+#, c-format
+msgid "reference to uninitialized argument `%s'"
+msgstr "tham chiếu đến đối số chưa khởi động «%s»"
+
+#: eval.c:974 eval.c:1902
+#, c-format
+msgid "reference to uninitialized variable `%s'"
+msgstr "tham chiếu đến biến chưa khởi động «%s»"
+
+#: eval.c:1120
+msgid ""
+"concatenation: side effects in one expression have changed the length of "
+"another!"
+msgstr ""
+"concatenation: (nối chuỗi) hiệu ứng khác trong một biểu thức nào đó đã thay "
+"đổi độ dài của một biểu thức khác."
+
+#: eval.c:1200
+msgid "assignment used in conditional context"
+msgstr "đã dùng Ä‘iá»u gán trong ngữ cảnh chỉ Ä‘iá»u kiện"
+
+#: eval.c:1278
+msgid "division by zero attempted"
+msgstr "cố chia cho số không"
+
+#: eval.c:1293
+#, c-format
+msgid "division by zero attempted in `%%'"
+msgstr "cố chia cho số không trong «%%»"
+
+#: eval.c:1308 profile.c:714
+#, c-format
+msgid "illegal type (%s) in tree_eval"
+msgstr "không cho phép kiểu (%s) trong «tree_eval» (ước lượng cây)"
+
+#: eval.c:1471
+msgid "division by zero attempted in `/='"
+msgstr "cố chia cho số không trong «/=»"
+
+#: eval.c:1493
+#, c-format
+msgid "division by zero attempted in `%%='"
+msgstr "cố chia cho số không trong «%%=»"
+
+#: eval.c:1758
+#, c-format
+msgid "function `%s' called with more arguments than declared"
+msgstr "đã gá»i chức năng «%s» vá»›i nhiá»u đối số hÆ¡n được tuyên bố"
+
+#: eval.c:1802
+#, c-format
+msgid "function `%s' not defined"
+msgstr "chưa định nghĩa chức năng «%s»"
+
+#: eval.c:1865
+#, c-format
+msgid ""
+"\n"
+"\t# Function Call Stack:\n"
+"\n"
+msgstr ""
+"\n"
+"\t# Äống gá»i chức năng:\n"
+"\n"
+
+#: eval.c:1868
+#, c-format
+msgid "\t# -- main --\n"
+msgstr ""
+"\t# -- main --\n"
+"(chính)\n"
+
+#: eval.c:2023
+msgid "attempt to field reference from non-numeric value"
+msgstr "cố tham chiếu trÆ°á»ng từ giá trị không thuá»™c số"
+
+#: eval.c:2025
+msgid "attempt to reference from null string"
+msgstr "cố tham chiếu từ chuỗi vô giá trị"
+
+#: eval.c:2031
+#, c-format
+msgid "attempt to access field %d"
+msgstr "cố truy cập trÆ°á»ng «%d»"
+
+#: eval.c:2052 eval.c:2059 profile.c:935
+msgid "assignment is not allowed to result of builtin function"
+msgstr "không cho phép gán cho kết quả của chức năng «builtin» (có sẵn)"
+
+#: eval.c:2123
+msgid "`IGNORECASE' is a gawk extension"
+msgstr "«IGNORECASE» (bá» qua chữ hoa/thÆ°á»ng) là má»™t phần mở rá»™ng gawk"
+
+#: eval.c:2153
+msgid "`BINMODE' is a gawk extension"
+msgstr "«BINMODE» (chế độ nhị phân) là một phần mở rộng gawk"
+
+#: eval.c:2275
+#, c-format
+msgid "bad `%sFMT' specification `%s'"
+msgstr "Ä‘iá»u ghi rõ «%s» «%sFMT» sai"
+
+#: eval.c:2353
+msgid "turning off `--lint' due to assignment to `LINT'"
+msgstr "đang tắt «--lint» vì gán cho «LINT»"
+
+#: ext.c:60 ext.c:64
+msgid "`extension' is a gawk extension"
+msgstr "«extension» là một phần mở rộng gawk"
+
+#: ext.c:74
+#, c-format
+msgid "extension: cannot open `%s' (%s)\n"
+msgstr "extension: (phần mở rộng) không mở được «%s» (%s)\n"
+
+#: ext.c:82
+#, c-format
+msgid "extension: library `%s': cannot call function `%s' (%s)\n"
+msgstr ""
+"extension: (phần mở rá»™ng) thÆ° viên «%s»: không gá»i được chức năng «%s» (%s)\n"
+
+#: ext.c:102
+msgid "extension: missing function name"
+msgstr "extension: (phần mở rộng) thiếu tên chức năng"
+
+#: ext.c:107
+#, c-format
+msgid "extension: illegal character `%c' in function name `%s'"
+msgstr ""
+"extension: (phần mở rộng) không cho phép ký tự «%c» trong tên chức năng «%s»"
+
+#: ext.c:113
+#, c-format
+msgid "extension: can't redefine function `%s'"
+msgstr "extension: (phần mở rộng) không thể định nghĩa lại chức nắng «%s»"
+
+#: ext.c:117
+#, c-format
+msgid "extension: function `%s' already defined"
+msgstr "extension: (phần mở rộng) đã định nghĩa chức năng «%s» rồi"
+
+#: ext.c:122
+#, c-format
+msgid "extension: can't use gawk built-in `%s' as function name"
+msgstr ""
+"extension: (phần mở rộng) không thể dùng «%s» có sẵn gawk là tên chức năng"
+
+#: ext.c:124
+#, c-format
+msgid "extension: function name `%s' previously defined"
+msgstr "extension: (phần mở rộng) tên chức năng «%s» được định nghĩa trước"
+
+#: ext.c:201
+#, c-format
+msgid "function `%s' defined to take no more than %d argument(s)"
+msgstr "chức năng «%s» được định nghÄ©a để chấp nhận nhiá»u nhất «%d» đối số"
+
+#: ext.c:204
+#, c-format
+msgid "function `%s': missing argument #%d"
+msgstr "chức năng «%s» thiếu đối số «#%d»"
+
+#: ext.c:214
+#, c-format
+msgid "function `%s': argument #%d: attempt to use scalar as an array"
+msgstr "chức năng «%s»: đối số «#%d»: cố dùng Ä‘iá»u vô hÆ°á»›ng là má»™t mảng"
+
+#: ext.c:218
+#, c-format
+msgid "function `%s': argument #%d: attempt to use array as a scalar"
+msgstr "chức năng «%s»: đối số «#%d»: cố dùng mảng là má»™t Ä‘iá»u vô hÆ°á»›ng"
+
+#: ext.c:243
+msgid "Operation Not Supported"
+msgstr "Không hỗ trợ thao tác ấy"
+
+#: field.c:326
+msgid "NF set to negative value"
+msgstr "đã lập «NF» là giá trị âm"
+
+#: field.c:819
+msgid "split: second argument is not an array"
+msgstr "split: (chia tách) đối số thứ hai không phải là một mảng"
+
+#: field.c:853
+msgid "split: null string for third arg is a gawk extension"
+msgstr ""
+"split: (chia tách) chuỗi vô giá trị cho đối số thứ ba là một phần mở rộng "
+"gawk"
+
+#: field.c:905
+msgid "`FIELDWIDTHS' is a gawk extension"
+msgstr "«FIELDWIDTHS» (Ä‘á»™ rá»™ng trÆ°á»ng) là má»™t phần mở rá»™ng gawk"
+
+#: field.c:935 field.c:946
+#, c-format
+msgid "invalid FIELDWIDTHS value, near `%s'"
+msgstr "Giá trị «FIELDWIDTHS» (Ä‘á»™ rá»™ng trÆ°á»ng) không hợp lệ, gần «%s»"
+
+#: field.c:1027
+msgid "null string for `FS' is a gawk extension"
+msgstr "chuỗi vô giá trị cho «FS» là một phần mở rộng gawk"
+
+#: getopt.c:571 getopt.c:590
+#, c-format
+msgid "%s: option `%s' is ambiguous\n"
+msgstr "%s: tùy chá»n «%s» là mÆ¡ hồ\n"
+
+#: getopt.c:623 getopt.c:627
+#, c-format
+msgid "%s: option `--%s' doesn't allow an argument\n"
+msgstr "%s: tùy chá»n «--%s» không cho phép đối số\n"
+
+#: getopt.c:636 getopt.c:641
+#, c-format
+msgid "%s: option `%c%s' doesn't allow an argument\n"
+msgstr "%s: tùy chá»n «%c%s» không cho phép đối số\n"
+
+#: getopt.c:687 getopt.c:709 getopt.c:1040 getopt.c:1062
+#, c-format
+msgid "%s: option `%s' requires an argument\n"
+msgstr "%s: tùy chá»n «%s» cần đến đối số\n"
+
+#: getopt.c:747 getopt.c:750
+#, c-format
+msgid "%s: unrecognized option `--%s'\n"
+msgstr "%s: không chấp nhận tùy chá»n «--%s»\n"
+
+#: getopt.c:758 getopt.c:761
+#, c-format
+msgid "%s: unrecognized option `%c%s'\n"
+msgstr "%s: không chấp nhận tùy chá»n «%c%s»\n"
+
+#: getopt.c:816 getopt.c:819
+#, c-format
+msgid "%s: illegal option -- %c\n"
+msgstr "%s: không cho phép tùy chá»n «-- %c»\n"
+
+#: getopt.c:825 getopt.c:828
+#, c-format
+msgid "%s: invalid option -- %c\n"
+msgstr "%s: tùy chá»n không hợp lệ «-- %c»\n"
+
+#: getopt.c:883 getopt.c:902 getopt.c:1115 getopt.c:1136 main.c:448
+#, c-format
+msgid "%s: option requires an argument -- %c\n"
+msgstr "%s: tùy chá»n cần đến đối số «-- %c»\n"
+
+#: getopt.c:955 getopt.c:974
+#, c-format
+msgid "%s: option `-W %s' is ambiguous\n"
+msgstr "%s: tùy chá»n «-W %s» là mÆ¡ hồ\n"
+
+#: getopt.c:998 getopt.c:1019
+#, c-format
+msgid "%s: option `-W %s' doesn't allow an argument\n"
+msgstr "%s: tùy chá»n «-W %s» không cho phép đối số\n"
+
+#: io.c:307
+#, c-format
+msgid "cannot open file `%s' for reading (%s)"
+msgstr "không mở được tập tin «%s» để ghi (%s)"
+
+#: io.c:398
+#, c-format
+msgid "close of fd %d (`%s') failed (%s)"
+msgstr "đóng «fd %d» («%s») thất bại (%s)"
+
+#: io.c:536
+#, c-format
+msgid "invalid tree type %s in redirect()"
+msgstr "kiểu cây không hợp lệ «%s» trong «redirect()»"
+
+#: io.c:542
+#, c-format
+msgid "expression in `%s' redirection only has numeric value"
+msgstr "biểu thức trong Ä‘iá»u chuyển hÆ°á»›ng «%s» chỉ có giá trị thuá»™c số"
+
+#: io.c:548
+#, c-format
+msgid "expression for `%s' redirection has null string value"
+msgstr "biểu thức cho Ä‘iá»u chuyển hÆ°á»›ng «%s» có giá trị chuá»—i vô giá trị"
+
+#: io.c:553
+#, c-format
+msgid "filename `%s' for `%s' redirection may be result of logical expression"
+msgstr ""
+"tên tập tin «%s» cho Ä‘iá»u chuyển hÆ°á»›ng «%s» có lẽ là kết quả của biểu thức "
+"luận lý"
+
+#: io.c:591
+#, c-format
+msgid "unnecessary mixing of `>' and `>>' for file `%.*s'"
+msgstr "không cần hợp «>» vào «>>» cho tập tin «%.*s»"
+
+#: io.c:643
+#, c-format
+msgid "can't open pipe `%s' for output (%s)"
+msgstr "không mở được ống dẫn «%s» để xuất (%s)"
+
+#: io.c:652
+#, c-format
+msgid "can't open pipe `%s' for input (%s)"
+msgstr "không mở được ống dẫn «%s» để gõ (%s)"
+
+#: io.c:665
+#, c-format
+msgid "can't open two way socket `%s' for input/output (%s)"
+msgstr "không mở được ổ cắm hai chiá»u «%s» để gõ/xuất (%s)"
+
+#: io.c:669
+#, c-format
+msgid "can't open two way pipe `%s' for input/output (%s)"
+msgstr "không mở được ống dẫn hai chiá»u «%s» để gõ/xuất (%s)"
+
+#: io.c:745
+#, c-format
+msgid "can't redirect from `%s' (%s)"
+msgstr "không thể chuyển hướng từ «%s» (%s)"
+
+#: io.c:748
+#, c-format
+msgid "can't redirect to `%s' (%s)"
+msgstr "không thể chuyển hướng đến «%s» (%s)"
+
+#: io.c:787
+msgid ""
+"reached system limit for open files: starting to multiplex file descriptors"
+msgstr ""
+"đã gặp giá»›i hạn hệ thống cho tập tin Ä‘ang mở nên bắt đầu phối hợp nhiá»u dòng "
+"Ä‘iá»u diá»…n tả tâp tin"
+
+#: io.c:803
+#, c-format
+msgid "close of `%s' failed (%s)."
+msgstr "đóng «%s» thất bại (%s)"
+
+#: io.c:811
+msgid "too many pipes or input files open"
+msgstr "quá nhiá»u ống dẫn hay tập tin gõ Ä‘ang mở"
+
+#: io.c:834
+msgid "close: second argument must be `to' or `from'"
+msgstr "close: (đóng) đối số thứ hai phải là «to» (đến) hay «from» (từ)"
+
+#: io.c:848
+#, c-format
+msgid "close: `%.*s' is not an open file, pipe or co-process"
+msgstr ""
+"close: (đóng) «%.*s» không phải là một tập tin đang mở, một ống dẫn hay tiến "
+"trình với nhau"
+
+#: io.c:852
+msgid "close of redirection that was never opened"
+msgstr "đã đóng Ä‘iá»u chuyển hÆ°á»›ng chÆ°a mở"
+
+#: io.c:948
+#, c-format
+msgid "close: redirection `%s' not opened with `|&', second argument ignored"
+msgstr ""
+"close: (đóng) Ä‘iá»u chuyển hÆ°á»›ng «%s» không do «|&» mở nên đối số thứ hai bị "
+"bá» qua"
+
+#: io.c:964
+#, c-format
+msgid "failure status (%d) on pipe close of `%s' (%s)"
+msgstr "trạng thái thất bại (%d) khi đóng ống dẫn «%s» (%s)"
+
+#: io.c:967
+#, c-format
+msgid "failure status (%d) on file close of `%s' (%s)"
+msgstr "trạng thái thất bại (%d) khi đóng tập tin «%s» (%s)"
+
+#: io.c:987
+#, c-format
+msgid "no explicit close of socket `%s' provided"
+msgstr "chÆ°a cung cấp Ä‘iá»u đóng ổ cắm «%s» dứt khoát"
+
+#: io.c:990
+#, c-format
+msgid "no explicit close of co-process `%s' provided"
+msgstr "chÆ°a cung cấp Ä‘iá»u đóng tiến trình vá»›i nhau «%s» dứt khoát"
+
+#: io.c:993
+#, c-format
+msgid "no explicit close of pipe `%s' provided"
+msgstr "chÆ°a cung cấp Ä‘iá»u đóng ống dẫn «%s» dứt khoát"
+
+#: io.c:996
+#, c-format
+msgid "no explicit close of file `%s' provided"
+msgstr "chÆ°a cung cấp Ä‘iá»u đóng tập tin «%s» dứt khoát"
+
+#: io.c:1025 io.c:1080 main.c:718 main.c:756
+#, c-format
+msgid "error writing standard output (%s)"
+msgstr "gặp lỗi khi ghi thiết bị xụất chuẩn (%s)"
+
+#: io.c:1029 io.c:1085
+#, c-format
+msgid "error writing standard error (%s)"
+msgstr "gặp lỗi khi ghi thiết bị lỗi chuẩn (%s)"
+
+#: io.c:1037
+#, c-format
+msgid "pipe flush of `%s' failed (%s)."
+msgstr "xóa sạch ống dẫn «%s» thất bại (%s)"
+
+#: io.c:1040
+#, c-format
+msgid "co-process flush of pipe to `%s' failed (%s)."
+msgstr "xóa sạch ống dẫn đồng tiến trình đến «%s» thất bại (%s)"
+
+#: io.c:1043
+#, c-format
+msgid "file flush of `%s' failed (%s)."
+msgstr "xóa sạch tập tin «%s» thất bại (%s)"
+
+#: io.c:1205
+msgid "/inet/raw client not ready yet, sorry"
+msgstr "tiếc là trình khách «/inet/raw» chưa sẵn sàng"
+
+#: io.c:1207 io.c:1244
+msgid "only root may use `/inet/raw'."
+msgstr "chỉ ngÆ°á»i chủ (root) có thể sá»­ dụng «/inet/raw» thôi"
+
+#: io.c:1242
+msgid "/inet/raw server not ready yet, sorry"
+msgstr "tiếc là trình phục vụ «/inet/raw» chưa sẵn sàng"
+
+#: io.c:1332
+#, c-format
+msgid "no (known) protocol supplied in special filename `%s'"
+msgstr "trong tên tập tin đặc biệt «%s» không cung cấp giao thức (đã biết) nào"
+
+#: io.c:1350
+#, c-format
+msgid "special file name `%s' is incomplete"
+msgstr "tên tập tin đặc biệt «%s» chưa xong"
+
+#: io.c:1362
+#, c-format
+msgid "local port invalid in `%s'"
+msgstr "trong «%s» cổng địa phương không hợp lệ"
+
+#: io.c:1374
+msgid "must supply a remote hostname to `/inet'"
+msgstr "phải cung cấp một tên máy từ xa cho «/inet»"
+
+#: io.c:1389
+msgid "must supply a remote port to `/inet'"
+msgstr "phải cung cấp một cổng từ xa cho «/inet»"
+
+#: io.c:1395
+#, c-format
+msgid "remote port invalid in `%s'"
+msgstr "trong «%s» cổng từ xa không hợp lệ"
+
+#: io.c:1405
+msgid "TCP/IP communications are not supported"
+msgstr "không há»— trợ truyá»n thông TCP/IP"
+
+#: io.c:1414 io.c:1595
+#, c-format
+msgid "file `%s' is a directory"
+msgstr "tập tin «%s» là một thư mục"
+
+#: io.c:1484
+#, c-format
+msgid "use `PROCINFO[\"%s\"]' instead of `%s'"
+msgstr "hãy dùng «PROCINFO[\"%s\"]» (thông tin tiến trình) thay vào «%s»"
+
+#: io.c:1516
+msgid "use `PROCINFO[...]' instead of `/dev/user'"
+msgstr "hãy dùng «PROCINFO[...]» (thông tin tiến trình) thay vào «/dev/user»"
+
+#: io.c:1581 io.c:1763
+#, c-format
+msgid "could not open `%s', mode `%s'"
+msgstr "không mở được «%s», chế độ «%s»"
+
+#: io.c:1814
+#, c-format
+msgid "close of master pty failed (%s)"
+msgstr "đóng pty cái thất bại (%s)"
+
+#: io.c:1816 io.c:1968 io.c:2119
+#, c-format
+msgid "close of stdout in child failed (%s)"
+msgstr "đóng thiết bị xuất chuẩn trong tiến trình con thất bại (%s)"
+
+#: io.c:1819
+#, c-format
+msgid "moving slave pty to stdout in child failed (dup: %s)"
+msgstr ""
+"di chuyển pty phụ đến thiết bị xuất chuẩn thất bại trong tiến trình con "
+"(dup: %s) (nhân đôi)"
+
+#: io.c:1821 io.c:1973
+#, c-format
+msgid "close of stdin in child failed (%s)"
+msgstr "đóng thiết bị gõ chuẩn trong tiến trình con thất bại (%s)"
+
+#: io.c:1824
+#, c-format
+msgid "moving slave pty to stdin in child failed (dup: %s)"
+msgstr ""
+"di chuyển Ä‘iá»u phụ đến thiết bị gõ chuẩn thất bại trong tiến trình con (dup: "
+"%s) (nhân đôi)"
+
+#: io.c:1826 io.c:1845
+#, c-format
+msgid "close of slave pty failed (%s)"
+msgstr "đóng Ä‘iá»u phụ thất bại (%s)"
+
+#: io.c:1919 io.c:1971 io.c:2100 io.c:2122
+#, c-format
+msgid "moving pipe to stdout in child failed (dup: %s)"
+msgstr ""
+"di chuyển ống dẫn đến thiết bị xuất chuẩn thất bại trong tiến trình con "
+"(dup: %s) (nhân đôi)"
+
+#: io.c:1923 io.c:1976
+#, c-format
+msgid "moving pipe to stdin in child failed (dup: %s)"
+msgstr ""
+"di chuyển ống dẫn đến thiết bị gõ chuẩn thất bại trong tiến trình con (dup: %"
+"s) (nhân đôi)"
+
+#: io.c:1940 io.c:2113
+msgid "restoring stdout in parent process failed\n"
+msgstr "phục hồi thiết bị xuất chuẩn trong tiến trình mẹ thất bại\n"
+
+#: io.c:1945
+msgid "restoring stdin in parent process failed\n"
+msgstr "phục hồi thiết bị gõ chuẩn trong tiến trình mẹ thất bại\n"
+
+#: io.c:1979 io.c:2124 io.c:2135
+#, c-format
+msgid "close of pipe failed (%s)"
+msgstr "đóng ống dẫn thất bại (%s)"
+
+#: io.c:2024
+msgid "`|&' not supported"
+msgstr "không hỗ trợ «|&»"
+
+#: io.c:2090
+#, c-format
+msgid "cannot open pipe `%s' (%s)"
+msgstr "không mở được «%s» (%s)"
+
+#: io.c:2131
+#, c-format
+msgid "cannot create child process for `%s' (fork: %s)"
+msgstr "không tạo được tiến trình con cho «%s» (fork: %s)"
+
+#: io.c:2506
+#, c-format
+msgid "data file `%s' is empty"
+msgstr "tập tin dữ liệu «%s» là rỗng"
+
+#: io.c:2547 io.c:2555
+msgid "could not allocate more input memory"
+msgstr "không thể cấp phát bá»™ nhá»› gõ nhiá»u hÆ¡n"
+
+#: io.c:2919 io.c:2984
+#, c-format
+msgid "error reading input file `%s': %s"
+msgstr "gặp lá»—i khi Ä‘á»c tập tin gõ «%s»: %s"
+
+#: io.c:3109
+msgid "multicharacter value of `RS' is a gawk extension"
+msgstr "giá trị đa ký tự của «RS» là một phần mở rộng gawk"
+
+#: main.c:338
+msgid "`-m[fr]' option irrelevant in gawk"
+msgstr "«-m[fr]» tùy chá»n không thích Ä‘ang trong gawk"
+
+#: main.c:340
+msgid "-m option usage: `-m[fr] nnn'"
+msgstr "cách sá»­ dụng tùy chá»n «-m»: «-m[fr] nnn»"
+
+#: main.c:357
+#, c-format
+msgid "%s: option `-W %s' unrecognized, ignored\n"
+msgstr "%s: tùy chá»n «-W %s» không được nhận diện nên bị bá» qua\n"
+
+#: main.c:394
+msgid "empty argument to `--source' ignored"
+msgstr "đối số rỗng tới «--source» (nguồn) bị bỠqua"
+
+#: main.c:467
+msgid "environment variable `POSIXLY_CORRECT' set: turning on `--posix'"
+msgstr ""
+"đã lập biến môi trÆ°á»ng «POSIXLY_CORRECT» (đúng cách POSIX) thì Ä‘ang bật tùy "
+"chá»n «--posix»"
+
+#: main.c:472
+msgid "`--posix' overrides `--traditional'"
+msgstr "tùy chá»n «--posix» đè «--traditional» (truyá»n thống)"
+
+#: main.c:483
+msgid "`--posix'/`--traditional' overrides `--non-decimal-data'"
+msgstr ""
+"«--posix»/«--traditional» (truyá»n thống) đè «--non-decimal-data» (dữ liệu "
+"không phải thập phân)"
+
+#: main.c:487
+#, c-format
+msgid "running %s setuid root may be a security problem"
+msgstr "chạy «%s» với tư cách «setuid root» thì có lẽ sẽ rủi rỠbảo mật"
+
+#: main.c:528
+#, c-format
+msgid "can't set binary mode on stdin (%s)"
+msgstr "không lập được chế độ nhị phân trên thiết bị gõ chuẩn (%s)"
+
+#: main.c:531
+#, c-format
+msgid "can't set binary mode on stdout (%s)"
+msgstr "không lập được chế độ nhị phân trên thiết bị xuất chuẩn (%s)"
+
+#: main.c:533
+#, c-format
+msgid "can't set binary mode on stderr (%s)"
+msgstr "không lập được chế độ nhị phân trên thiết bị lỗi chuẩn (%s)"
+
+#: main.c:572
+msgid "no program text at all!"
+msgstr "không có chữ chương trình nào cả!"
+
+#: main.c:665
+#, c-format
+msgid "Usage: %s [POSIX or GNU style options] -f progfile [--] file ...\n"
+msgstr ""
+"Cách sá»­ dụng: %s [tùy chá»n kiểu POSIX hay GNU] -f tập_tin_chÆ°Æ¡ng_trình [--] "
+"tập_tin ...\n"
+
+#: main.c:667
+#, c-format
+msgid "Usage: %s [POSIX or GNU style options] [--] %cprogram%c file ...\n"
+msgstr ""
+"Cách sá»­ dụng: %s [tùy chá»n kiểu POSIX hay GNU] [--] %cchÆ°Æ¡ng_trình%c "
+"tập_tin ...\n"
+
+#: main.c:672
+msgid "POSIX options:\t\tGNU long options:\n"
+msgstr "tùy chá»n POSIX:\t\ttùy chá»n dài GNU:\n"
+
+#: main.c:673
+msgid "\t-f progfile\t\t--file=progfile\n"
+msgstr "\t-f tập_tin_chương_trình\t\t--tập_tin=tập_tin_chương_trình\n"
+
+#: main.c:674
+msgid "\t-F fs\t\t\t--field-separator=fs\n"
+msgstr "\t-F fs\t\t\t--field-separator=fs\t\tÄ‘iá»u phân cách trÆ°á»ngs\n"
+
+#: main.c:675
+msgid "\t-v var=val\t\t--assign=var=val\n"
+msgstr ""
+"\t-v var=val\t\t--assign=var=val\n"
+"(var là viết tắt cho variable: biến\n"
+"val là viết tắt cho value: giá trị\n"
+"assign: gán)\n"
+
+#: main.c:676
+msgid "\t-m[fr] val\n"
+msgstr "\t-m[fr] val\n"
+
+#: main.c:677
+msgid "\t-W compat\t\t--compat\n"
+msgstr ""
+"\t-W compat\t\t--compat\n"
+"(compat là viết tắt cho compatible: tương thích)\n"
+
+#: main.c:678
+msgid "\t-W copyleft\t\t--copyleft\n"
+msgstr ""
+"\t-W copyleft\t\t--copyleft\n"
+"(sao chép trái)\n"
+
+#: main.c:679
+msgid "\t-W copyright\t\t--copyright\n"
+msgstr ""
+"\t-W copyright\t\t--copyright\n"
+"(sao chép phải hoặc bản quyá»n)\n"
+
+#: main.c:680
+msgid "\t-W dump-variables[=file]\t--dump-variables[=file]\n"
+msgstr ""
+"\t-W dump-variables[=tập_tin]\t--dump-variables[=tập_tin]\n"
+"(đổ các biến)\n"
+
+#: main.c:681
+msgid "\t-W exec=file\t\t--exec=file\n"
+msgstr "\t-W exec=file\t\t--exec=file\n"
+
+#: main.c:682
+msgid "\t-W gen-po\t\t--gen-po\n"
+msgstr ""
+"\t-W gen-po\t\t--gen-po\n"
+"(gen là viết tắt cho generate: tạo ra)\n"
+
+#: main.c:683
+msgid "\t-W help\t\t\t--help\n"
+msgstr ""
+"\t-W help\t\t\t--help\n"
+"(trợ giúp)\n"
+
+#: main.c:684
+msgid "\t-W lint[=fatal]\t\t--lint[=fatal]\n"
+msgstr ""
+"\t-W lint[=fatal]\t\t--lint[=fatal]\n"
+"(l? int là viết tắt cho integer: số nguyên\n"
+"fatal: nghiêm trá»ng)\n"
+
+#: main.c:685
+msgid "\t-W lint-old\t\t--lint-old\n"
+msgstr ""
+"\t-W lint-old\t\t--lint-old\n"
+"(old: cũ)\n"
+
+#: main.c:686
+msgid "\t-W non-decimal-data\t--non-decimal-data\n"
+msgstr ""
+"\t-W non-decimal-data\t--non-decimal-data\n"
+"(dữ liệu không phải thập phân)\n"
+
+#: main.c:688
+msgid "\t-W nostalgia\t\t--nostalgia\n"
+msgstr ""
+"\t-W nostalgia\t\t--nostalgia\n"
+"(nỗi luyến tiếc quá khứ)\n"
+
+#: main.c:691
+msgid "\t-W parsedebug\t\t--parsedebug\n"
+msgstr ""
+"\t-W parsedebug\t\t--parsedebug\n"
+"(parse: phân tách\n"
+"debug: gỡ lỗi)\n"
+
+#: main.c:693
+msgid "\t-W profile[=file]\t--profile[=file]\n"
+msgstr ""
+"\t-W profile[=tập_tin]\t--profile[=tập_tin]\n"
+"(profile: tiểu sử sơ lược)\n"
+
+#: main.c:694
+msgid "\t-W posix\t\t--posix\n"
+msgstr "\t-W posix\t\t--posix\n"
+
+#: main.c:695
+msgid "\t-W re-interval\t\t--re-interval\n"
+msgstr ""
+"\t-W re-interval\t\t--re-interval\n"
+"(re-[động từ]: [làm] lại\n"
+"interval: thá»i gian giữa hai lúc)\n"
+
+#: main.c:696
+msgid "\t-W source=program-text\t--source=program-text\n"
+msgstr ""
+"\t-W source=program-text\t--source=program-text\n"
+"(source: nguồn\n"
+"program-text: các văn bản trong chương trình)\n"
+
+#: main.c:697
+msgid "\t-W traditional\t\t--traditional\n"
+msgstr ""
+"\t-W traditional\t\t--traditional\n"
+"(truyá»n thống)\n"
+
+#: main.c:698
+msgid "\t-W usage\t\t--usage\n"
+msgstr ""
+"\t-W usage\t\t--usage\n"
+"(cách sử dụng)\n"
+
+#: main.c:699
+msgid "\t-W version\t\t--version\n"
+msgstr ""
+"\t-W version\t\t--version\n"
+"(phiên bản)\n"
+
+#: main.c:703
+msgid ""
+"\n"
+"To report bugs, see node `Bugs' in `gawk.info', which is\n"
+"section `Reporting Problems and Bugs' in the printed version.\n"
+"\n"
+msgstr ""
+"\n"
+"Äể thông báo lá»—i, hãy xem phần «Bugs» (Lá»—i) trong tập tin «gawk.info»\n"
+"trong phần «Reporting Problems and Bugs» (thông báo vấn đỠvà lỗi)\n"
+"trong bản in.\n"
+
+#: main.c:707
+msgid ""
+"gawk is a pattern scanning and processing language.\n"
+"By default it reads standard input and writes standard output.\n"
+"\n"
+msgstr ""
+"gawk là một ngôn ngữ quét mẫu và xử lý.\n"
+"Mặc định là nó Ä‘á»c từ thiết bị gõ chuẩn và ghi vào thiết bị xuất chuẩn.\n"
+"\n"
+
+#: main.c:711
+msgid ""
+"Examples:\n"
+"\tgawk '{ sum += $1 }; END { print sum }' file\n"
+"\tgawk -F: '{ print $1 }' /etc/passwd\n"
+msgstr ""
+"Thí dụ:\n"
+"\tgawk '{ sum += $1 }; END { print sum }' file\n"
+"\tgawk -F: '{ print $1 }' /etc/passwd\n"
+
+#: main.c:731
+#, c-format
+msgid ""
+"Copyright (C) 1989, 1991-%d Free Software Foundation.\n"
+"\n"
+"This program is free software; you can redistribute it and/or modify\n"
+"it under the terms of the GNU General Public License as published by\n"
+"the Free Software Foundation; either version 2 of the License, or\n"
+"(at your option) any later version.\n"
+"\n"
+msgstr ""
+"Bản quyá»n © 1989, 1991-%d Tổ chức Phần má»m Tá»± do.\n"
+"\n"
+"ChÆ°Æ¡ng trình này là phần má»m tá»± do; bạn có thể phân phối lại nó\n"
+"và/hay sá»­a đổi nó vá»›i Ä‘iá»u kiện của Quyá»n Công Chung GNU (GPL)\n"
+"nhÆ° do Tổ chức Phần má»m Tá»± do xuất bản, hoặc phiên bản 2\n"
+"của Quyá»n ấy, hoặc (tùy chá»n) bất cứ phiên bản sau nào.\n"
+"\n"
+
+#: main.c:739
+msgid ""
+"This program is distributed in the hope that it will be useful,\n"
+"but WITHOUT ANY WARRANTY; without even the implied warranty of\n"
+"MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n"
+"GNU General Public License for more details.\n"
+"\n"
+msgstr ""
+"Chúng tôi phân phối chương trình này vì mong muốn nó hữu ích,\n"
+"nhÆ°ng mà KHÔNG BẢO ÄẢM GÃŒ CẢ, không ngay cả ngụ ý bảo đảm\n"
+"KHẢ NÄ‚NG BÃN hoặc KHẢ NÄ‚NG LÀM VIỆC DỨT KHOÃT.\n"
+"Hãy xem Quyá»n Công Chung GNU (GNU General Public Licence)\n"
+"để tìm chi tiết.\n"
+"\n"
+
+#: main.c:745
+msgid ""
+"You should have received a copy of the GNU General Public License\n"
+"along with this program; if not, write to the Free Software\n"
+"Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, "
+"USA.\n"
+msgstr ""
+"Bện nên đã nhận má»™t bản sao của Quyá»n Công Chung GNU\n"
+"cũng với chương trình này; nếu không thì hãy viết cho\n"
+"Tổ chức Phần má»m Tá»± do:\n"
+"Free Software Foundation, Inc.,\n"
+"51 Franklin Street, Fifth Floor,\n"
+"Boston, MA 02110-1301, USA. (Mỹ)\n"
+
+#: main.c:781
+msgid "-Ft does not set FS to tab in POSIX awk"
+msgstr "-Ft không lập FS là tab trong awk POSIX"
+
+#: main.c:1018
+#, c-format
+msgid ""
+"%s: `%s' argument to `-v' not in `var=value' form\n"
+"\n"
+msgstr ""
+"%s: đối số «%s» với «-v» không phải có dạng «biến=giá_trị» \n"
+"\n"
+
+#: main.c:1038
+#, c-format
+msgid "`%s' is not a legal variable name"
+msgstr "«%s» không phải là một tên biến cho phép"
+
+#: main.c:1041
+#, c-format
+msgid "`%s' is not a variable name, looking for file `%s=%s'"
+msgstr "«%s» không phải là một tên biến nên đang tìm tập tin «%s=%s»"
+
+#: main.c:1074
+msgid "floating point exception"
+msgstr "ngoại lệ điểm phù động"
+
+#: main.c:1081
+msgid "fatal error: internal error"
+msgstr "lá»—i nghiêm trá»ng: lá»—i ná»™i bá»™"
+
+#: main.c:1132
+#, c-format
+msgid "no pre-opened fd %d"
+msgstr "không có «fd %d» đã mở trước"
+
+#: main.c:1139
+#, c-format
+msgid "could not pre-open /dev/null for fd %d"
+msgstr "không mở được «/dev/null» trước cho «fd %d»"
+
+#: main.c:1162 main.c:1171
+#, c-format
+msgid "could not find groups: %s"
+msgstr "không tìm được nhóm: %s"
+
+#: msg.c:54
+#, c-format
+msgid "cmd. line:"
+msgstr "dòng lệnh:"
+
+#: msg.c:120
+msgid "warning: "
+msgstr "cảnh báo:"
+
+#: msg.c:142
+msgid "error: "
+msgstr "lá»—i: "
+
+#: msg.c:178
+msgid "fatal: "
+msgstr "nghiêm trá»ng:"
+
+#: node.c:59 node.c:66 node.c:75 node.c:90 node.c:119
+msgid "can't convert string to float"
+msgstr "không thể chuyển đổi chuá»—i sang Ä‘iá»u lÆ¡ lá»­ng"
+
+#: node.c:414
+msgid "backslash at end of string"
+msgstr "xuyệc ngoặc tại kết thức chuỗi"
+
+#: node.c:604
+msgid "POSIX does not allow `\\x' escapes"
+msgstr "POSIX không cho phép Ä‘iá»u thoát «\\x»"
+
+#: node.c:610
+msgid "no hex digits in `\\x' escape sequence"
+msgstr "không có số thập lúc phân trong dây thoát «\\x»"
+
+#: node.c:644
+#, c-format
+msgid "escape sequence `\\%c' treated as plain `%c'"
+msgstr "dây thoát «\\%c» được xử lý là «%c» giản dị"
+
+#: posix/gawkmisc.c:172
+#, c-format
+msgid "%s %s `%s': could not set close-on-exec: (fcntl: %s)"
+msgstr ""
+"%s %s «%s»: không lập được «close-on-exec» (đóng một khi thực hiện) (fcntl: %"
+"s)"
+
+#: profile.c:91
+#, c-format
+msgid "could not open `%s' for writing: %s"
+msgstr "không mở được «%s» để ghi: %s"
+
+#: profile.c:467
+#, c-format
+msgid "internal error: %s with null vname"
+msgstr "lỗi nội bộ: «%s» với vname (tên biến) vô giá trị"
+
+#: profile.c:531
+msgid "# treated internally as `delete'"
+msgstr "# được xá»­ lý ná»™i bá»™ là «xóa bá»Â»"
+
+#: profile.c:1168
+#, c-format
+msgid "# this is a dynamically loaded extension function"
+msgstr "# đây là một chức năng mở rộng được tải một cách động"
+
+#: profile.c:1199
+#, c-format
+msgid "\t# gawk profile, created %s\n"
+msgstr "\t# tiểu sở sơ lược gawk, được tạo %s\n"
+
+#: profile.c:1202
+#, c-format
+msgid ""
+"\t# BEGIN block(s)\n"
+"\n"
+msgstr ""
+"\t# khối BEGIN (bắt đầu)\n"
+"\n"
+
+#: profile.c:1212
+#, c-format
+msgid ""
+"\t# Rule(s)\n"
+"\n"
+msgstr ""
+"\t# Quy tắc\n"
+"\n"
+
+#: profile.c:1218
+#, c-format
+msgid ""
+"\t# END block(s)\n"
+"\n"
+msgstr ""
+"\t# khối END (kết thức)\n"
+"\n"
+
+#: profile.c:1238
+#, c-format
+msgid ""
+"\n"
+"\t# Functions, listed alphabetically\n"
+msgstr ""
+"\n"
+"\t# Các chức năng theo thứ tự abc\n"
+
+#: profile.c:1453
+#, c-format
+msgid "unexpected type %s in prec_level"
+msgstr "gặp kiểu bất ngỠ«%s» trong «prec_level» (cấp trước?)"
+
+#: regcomp.c:160
+msgid "Success"
+msgstr "Thành công"
+
+#: regcomp.c:163
+msgid "No match"
+msgstr "Không khớp với gì"
+
+#: regcomp.c:166
+msgid "Invalid regular expression"
+msgstr "Biểu thức chính quy không hợp lệ"
+
+#: regcomp.c:169
+msgid "Invalid collation character"
+msgstr "Ký tự đối chiếu không hợp lệ"
+
+#: regcomp.c:172
+msgid "Invalid character class name"
+msgstr "Tên hạng ký tự không hợp lệ"
+
+#: regcomp.c:175
+msgid "Trailing backslash"
+msgstr "Có xuyệc ngược theo sau"
+
+#: regcomp.c:178
+msgid "Invalid back reference"
+msgstr "Tham chiếu trở lại không hợp lệ"
+
+#: regcomp.c:181
+msgid "Unmatched [ or [^"
+msgstr "Chưa khớp «[» hay «[^»"
+
+#: regcomp.c:184
+msgid "Unmatched ( or \\("
+msgstr "Chưa khớp «(» hay «\\(»"
+
+#: regcomp.c:187
+msgid "Unmatched \\{"
+msgstr "Chưa khớp «\\{»"
+
+#: regcomp.c:190
+msgid "Invalid content of \\{\\}"
+msgstr "Nội dụng «\\{\\}» không hợp lệ"
+
+#: regcomp.c:193
+msgid "Invalid range end"
+msgstr "Kết thức miá»n không hợp lệ"
+
+#: regcomp.c:196
+msgid "Memory exhausted"
+msgstr "Hết bộ nhớ rồi"
+
+#: regcomp.c:199
+msgid "Invalid preceding regular expression"
+msgstr "Biểu thức chính quy đi trước không hợp lệ"
+
+#: regcomp.c:202
+msgid "Premature end of regular expression"
+msgstr "Kết thức quá sớm của biểu thức chính quy"
+
+#: regcomp.c:205
+msgid "Regular expression too big"
+msgstr "Biểu thức chính quy quá lớn"
+
+#: regcomp.c:208
+msgid "Unmatched ) or \\)"
+msgstr "Chưa khớp «)» hay «\\)»"
+
+#: regcomp.c:688
+msgid "No previous regular expression"
+msgstr "Không có biểu thức chính quy đi trước"
+
+#~ msgid "delete: illegal use of variable `%s' as array"
+#~ msgstr "delete: (xóa bá») không cho phép cách dùng biến «%s» là mảng"
+
+#~ msgid "asort: first argument is not an array"
+#~ msgstr "asort: (sắp xếp) đối số đầu không phải là một mảng"
+
+#~ msgid "asort: second argument is not an array"
+#~ msgstr "asort: (sắp xếp) đối số thứ hai không phải là một mảng"
+
+#~ msgid ""
+#~ "\n"
+#~ "To report bugs, see node `Bugs' in `gawk.info', which is\n"
+#~ msgstr ""
+#~ "\n"
+#~ "Äể thông báo lá»—i, hãy xem phần «Bugs» (lá»—i) trong tập tin «gawk.info», \n"
+
+#~ msgid "invalid syntax in name `%s' for variable assignment"
+#~ msgstr "cú pháp không hợp lệ trong tên «%s» trong Ä‘iá»u gán biến"
+
+#~ msgid "internal error: Node_var_array with null vname"
+#~ msgstr "lỗi nội bộ: «Node_var_array» với vname (tên biến) vô giá trị"
+
+#~ msgid "or used in other expression context"
+#~ msgstr "hoặc được dùng trong ngữ cảnh biểu thức khác"
+
+#~ msgid "`%s' is a function, assignment is not allowed"
+#~ msgstr "«%s» là một chức năng thì không cho phép gán"
+
+#~ msgid "BEGIN blocks must have an action part"
+#~ msgstr "Má»i khối BEGIN (bắt đầu) phải có má»™t phần là hành Ä‘á»™ng"
+
+#~ msgid "`nextfile' used in BEGIN or END action"
+#~ msgstr ""
+#~ "đã dùng «nextfile» (tập tin kế tiếp) trong hành động «BEGIN» (bắt đầu) "
+#~ "hay «END» (kết thức)"
+
+#~ msgid "non-redirected `getline' undefined inside BEGIN or END action"
+#~ msgstr ""
+#~ "trong hành động «BEGIN» (đầu) hay «END» (kết thức), có «getline» (lấy "
+#~ "dòng) không được chuyển hướng và chưa được định nghĩa."
+
+#~ msgid "fptr %x not in tokentab\n"
+#~ msgstr "«fptr %x» không phải trong «tokentab»\n"
+
+#~ msgid "gsub third parameter is not a changeable object"
+#~ msgstr "tham số thứ ba gsub không phải là một đối tượng có thể thay đổi"
+
+#~ msgid "Unfinished \\ escape"
+#~ msgstr "«\\ escape» chưa xong"
+
+#~ msgid "unfinished repeat count"
+#~ msgstr "việc đếm lần nữa chưa xong"
+
+#~ msgid "malformed repeat count"
+#~ msgstr "việc đếm lần nữa dạng sai"
+
+#~ msgid "Unbalanced ["
+#~ msgstr "Chưa cân bằng «[»"
+
+#~ msgid "Unbalanced ("
+#~ msgstr "Chưa cân bằng «(»"
+
+#~ msgid "No regexp syntax bits specified"
+#~ msgstr "Chưa ghi rõ bit cú pháp biểu thức chính quy"
+
+#~ msgid "Unbalanced )"
+#~ msgstr "Chưa cân bằng «)»"
+
+#~ msgid "out of memory"
+#~ msgstr "hết bộ nhớ"
+
+#~ msgid "field %d in FIELDWIDTHS, must be > 0"
+#~ msgstr "trÆ°á»ng %d trong «FIELDWIDTHS», phải > 0"
+
+#~ msgid "function %s called\n"
+#~ msgstr "đã gá»i chức năng «%s»\n"
+
+#~ msgid "internal error: file `%s', line %d\n"
+#~ msgstr "lỗi nội bộ: tập tin «%s», dòng %d\n"
diff --git a/posix/ChangeLog b/posix/ChangeLog
index e219a40e..54fd5144 100644
--- a/posix/ChangeLog
+++ b/posix/ChangeLog
@@ -1,3 +1,7 @@
+Tue Jul 26 21:46:16 2005 Arnold D. Robbins <arnold@skeeve.com>
+
+ * Release 3.1.5: Release tar file made.
+
Mon Aug 2 12:18:15 2004 Arnold D. Robbins <arnold@skeeve.com>
* Release 3.1.4: Release tar file made.
diff --git a/posix/gawkmisc.c b/posix/gawkmisc.c
index 6ee973cc..5f9dec82 100644
--- a/posix/gawkmisc.c
+++ b/posix/gawkmisc.c
@@ -14,7 +14,7 @@
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. */
+ Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. */
char quote = '\'';
char *defpath = DEFPATH;
diff --git a/profile.c b/profile.c
index 956f971f..0f96457c 100644
--- a/profile.c
+++ b/profile.c
@@ -3,7 +3,7 @@
*/
/*
- * Copyright (C) 1999-2004 the Free Software Foundation, Inc.
+ * Copyright (C) 1999-2005 the Free Software Foundation, Inc.
*
* This file is part of GAWK, the GNU implementation of the
* AWK Programming Language.
@@ -20,7 +20,7 @@
*
* 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
+ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA
*/
#include "awk.h"
@@ -491,6 +491,7 @@ tree_eval(register NODE *tree)
return;
case Node_not:
+ fprintf(prof_fp, "! ");
parenthesize(tree->type, tree->lnode);
return;
diff --git a/profile_p.c b/profile_p.c
index bfd58d37..54e2320c 100644
--- a/profile_p.c
+++ b/profile_p.c
@@ -20,7 +20,7 @@
*
* 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
+ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA
*/
#define PROFILING 1
diff --git a/protos.h b/protos.h
index b7b80074..c7850210 100644
--- a/protos.h
+++ b/protos.h
@@ -20,7 +20,7 @@
*
* 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
+ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA
*/
#ifdef __STDC__
diff --git a/random.c b/random.c
index 73d078dc..bb56cbc8 100644
--- a/random.c
+++ b/random.c
@@ -29,45 +29,43 @@
* LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
* OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
* SUCH DAMAGE.
- *
- * $FreeBSD: src/lib/libc/stdlib/random.c,v 1.13 2000/01/27 23:06:49 jasone Exp $
- *
*/
#if defined(LIBC_SCCS) && !defined(lint)
static const char sccsid[] = "@(#)random.c 8.2 (Berkeley) 5/19/95";
#endif /* LIBC_SCCS and not lint */
-#include "random.h" /* gawk addition */
-
-/*
- * srandomdev() isn't used by gawk, and it causes numerous
- * compile headaches, so just blow it away.
- */
-#if 0
-#if !defined (_MSC_VER) && !defined (__MINGW32__) && !defined (VMS)
-#include <sys/time.h> /* for srandomdev() */
-#else
-#include <time.h> /* for clock() */
-#define ssize_t size_t
-#endif /* !defined (_MSC_VER) && !defined (__MINGW32__) && !defined (VMS) */
+#ifdef HAVE_CONFIG_H /* gawk addition */
+#include <config.h>
#endif
+#ifdef HAVE_FCNTL_H
+#include <fcntl.h>
+#endif
#include <stdio.h>
-
-/* For gawk, don't this, use the decl of random() in random.h */
-#if 0
#include <stdlib.h>
+#ifdef HAVE_UNISTD_H
+#include <unistd.h>
#endif
-/* same thing here: */
-#if 0
-#ifdef HAVE_UNISTD_H
-#include <unistd.h> /* for srandomdev() */
+#include "random.h" /* gawk addition */
+
+#ifdef HAVE_SYS_TIME_H /* gawk addition */
+#include <sys/time.h>
#endif
-#ifdef HAVE_FCNTL_H
+
+#if 0
+#include <sys/cdefs.h>
+__FBSDID("$FreeBSD: /repoman/r/ncvs/src/lib/libc/stdlib/random.c,v 1.24 2004/01/20 03:02:18 das Exp $");
+
+#include "namespace.h"
+#include <sys/time.h> /* for srandomdev() */
#include <fcntl.h> /* for srandomdev() */
-#endif
+#include <stdint.h>
+#include <stdio.h>
+#include <stdlib.h>
+#include <unistd.h> /* for srandomdev() */
+#include "un-namespace.h"
#endif
/*
@@ -86,10 +84,10 @@ static const char sccsid[] = "@(#)random.c 8.2 (Berkeley) 5/19/95";
* congruential generator. If the amount of state information is less than
* 32 bytes, a simple linear congruential R.N.G. is used.
*
- * Internally, the state information is treated as an array of longs; the
+ * Internally, the state information is treated as an array of uint32_t's; the
* zeroeth element of the array is the type of R.N.G. being used (small
* integer); the remainder of the array is the state information for the
- * R.N.G. Thus, 32 bytes of state information will give 7 longs worth of
+ * R.N.G. Thus, 32 bytes of state information will give 7 ints worth of
* state information, which will allow a degree seven polynomial. (Note:
* the zeroeth word of state information also has some other information
* stored in it -- see setstate() for details).
@@ -105,7 +103,7 @@ static const char sccsid[] = "@(#)random.c 8.2 (Berkeley) 5/19/95";
* period of the generator is approximately deg*(2**deg - 1); thus doubling
* the amount of state information has a vast influence on the period of the
* generator. Note: the deg*(2**deg - 1) is an approximation only good for
- * large deg, when the period of the shift register is the dominant factor.
+ * large deg, when the period of the shift is the dominant factor.
* With deg equal to seven, the period is actually much longer than the
* 7*(2**7 - 1) predicted by this formula.
*
@@ -167,8 +165,14 @@ static const char sccsid[] = "@(#)random.c 8.2 (Berkeley) 5/19/95";
*/
#define MAX_TYPES 5 /* max number of types above */
-static long degrees[MAX_TYPES] = { DEG_0, DEG_1, DEG_2, DEG_3, DEG_4 };
-static long seps [MAX_TYPES] = { SEP_0, SEP_1, SEP_2, SEP_3, SEP_4 };
+#ifdef USE_WEAK_SEEDING
+#define NSHUFF 0
+#else /* !USE_WEAK_SEEDING */
+#define NSHUFF 50 /* to drop some "seed -> 1st value" linearity */
+#endif /* !USE_WEAK_SEEDING */
+
+static const int degrees[MAX_TYPES] = { DEG_0, DEG_1, DEG_2, DEG_3, DEG_4 };
+static const int seps [MAX_TYPES] = { SEP_0, SEP_1, SEP_2, SEP_3, SEP_4 };
/*
* Initially, everything is set up as if from:
@@ -184,7 +188,7 @@ static long seps [MAX_TYPES] = { SEP_0, SEP_1, SEP_2, SEP_3, SEP_4 };
* MAX_TYPES * (rptr - state) + TYPE_3 == TYPE_3.
*/
-static long randtbl[DEG_3 + 1] = {
+static uint32_t randtbl[DEG_3 + 1] = {
TYPE_3,
#ifdef USE_WEAK_SEEDING
/* Historic implementation compatibility */
@@ -219,8 +223,8 @@ static long randtbl[DEG_3 + 1] = {
* in the initialization of randtbl) because the state table pointer is set
* to point to randtbl[1] (as explained below).
*/
-static long *fptr = &randtbl[SEP_3 + 1];
-static long *rptr = &randtbl[1];
+static uint32_t *fptr = &randtbl[SEP_3 + 1];
+static uint32_t *rptr = &randtbl[1];
/*
* The following things are the pointer to the state information table, the
@@ -232,16 +236,16 @@ static long *rptr = &randtbl[1];
* this is more efficient than indexing every time to find the address of
* the last element to see if the front and rear pointers have wrapped.
*/
-static long *state = &randtbl[1];
-static long rand_type = TYPE_3;
-static long rand_deg = DEG_3;
-static long rand_sep = SEP_3;
-static long *end_ptr = &randtbl[DEG_3 + 1];
+static uint32_t *state = &randtbl[1];
+static int rand_type = TYPE_3;
+static int rand_deg = DEG_3;
+static int rand_sep = SEP_3;
+static uint32_t *end_ptr = &randtbl[DEG_3 + 1];
-static long good_rand __P((long));
+static inline uint32_t good_rand(int32_t);
-static long good_rand (x)
- register long x;
+static inline uint32_t good_rand (x)
+ int32_t x;
{
#ifdef USE_WEAK_SEEDING
/*
@@ -259,12 +263,15 @@ static long good_rand (x)
* Park and Miller, Communications of the ACM, vol. 31, no. 10,
* October 1988, p. 1195.
*/
- register long hi, lo;
+ int32_t hi, lo;
+ /* Can't be initialized with 0, so use another value. */
+ if (x == 0)
+ x = 123459876;
hi = x / 127773;
lo = x % 127773;
x = 16807 * lo - 2836 * hi;
- if (x <= 0)
+ if (x < 0)
x += 0x7fffffff;
return (x);
#endif /* !USE_WEAK_SEEDING */
@@ -286,33 +293,34 @@ void
srandom(x)
unsigned long x;
{
- register long i;
+ int i, lim;
+ state[0] = (uint32_t)x;
if (rand_type == TYPE_0)
- state[0] = x;
+ lim = NSHUFF;
else {
- state[0] = x;
for (i = 1; i < rand_deg; i++)
state[i] = good_rand(state[i - 1]);
fptr = &state[rand_sep];
rptr = &state[0];
- for (i = 0; i < 10 * rand_deg; i++)
- (void)random();
+ lim = 10 * rand_deg;
}
+ for (i = 0; i < lim; i++)
+ (void)random();
}
+#if 0 /* gawk doesn't use this */
/*
* srandomdev:
*
* Many programs choose the seed value in a totally predictable manner.
* This often causes problems. We seed the generator using the much more
- * secure urandom(4) interface. Note that this particular seeding
+ * secure random(4) interface. Note that this particular seeding
* procedure can generate states which are impossible to reproduce by
* calling srandom() with any value, since the succeeding terms in the
* state buffer are no longer derived from the LC algorithm applied to
* a fixed seed.
*/
-#if 0
void
srandomdev()
{
@@ -325,32 +333,19 @@ srandomdev()
len = rand_deg * sizeof state[0];
done = 0;
-#ifdef O_RDONLY
- fd = open("/dev/urandom", O_RDONLY, 0);
+ fd = open("/dev/random", O_RDONLY, 0);
if (fd >= 0) {
if (read(fd, (void *) state, len) == (ssize_t) len)
done = 1;
close(fd);
}
-#endif /*O_RDONLY*/
if (!done) {
- unsigned long junk;
-#if !defined (_MSC_VER) && !defined (__MINGW32__)
struct timeval tv;
+ unsigned long junk;
gettimeofday(&tv, NULL);
- srandom(getpid() ^ tv.tv_sec ^ tv.tv_usec ^ junk);
-#else
- clock_t ret_clock_t = clock();
- /*
- * I don't like the idea of reading uninitialized memory
- * even to generate a random number, but we do it anyway.
- * SD.
- */
- srandom(getpid() ^ ret_clock_t ^ junk);
-#endif
-
+ srandom((getpid() << 16) ^ tv.tv_sec ^ tv.tv_usec ^ junk);
return;
}
@@ -380,7 +375,7 @@ srandomdev()
*
* Returns a pointer to the old state.
*
- * Note: The Sparc platform requires that arg_state begin on a long
+ * Note: The Sparc platform requires that arg_state begin on an int
* word boundary; otherwise a bus error will occur. Even so, lint will
* complain about mis-alignment, but you should disregard these messages.
*/
@@ -390,8 +385,8 @@ initstate(seed, arg_state, n)
char *arg_state; /* pointer to state array */
long n; /* # bytes of state info */
{
- register char *ostate = (char *)(&state[-1]);
- register long *long_arg_state = (long *) arg_state;
+ char *ostate = (char *)(&state[-1]);
+ uint32_t *int_arg_state = (uint32_t *)arg_state;
if (rand_type == TYPE_0)
state[-1] = rand_type;
@@ -423,13 +418,13 @@ initstate(seed, arg_state, n)
rand_deg = DEG_4;
rand_sep = SEP_4;
}
- state = (long *) (long_arg_state + 1); /* first location */
+ state = int_arg_state + 1; /* first location */
end_ptr = &state[rand_deg]; /* must set end_ptr before srandom */
srandom(seed);
if (rand_type == TYPE_0)
- long_arg_state[0] = rand_type;
+ int_arg_state[0] = rand_type;
else
- long_arg_state[0] = MAX_TYPES * (rptr - state) + rand_type;
+ int_arg_state[0] = MAX_TYPES * (rptr - state) + rand_type;
return(ostate);
}
@@ -448,7 +443,7 @@ initstate(seed, arg_state, n)
*
* Returns a pointer to the old state information.
*
- * Note: The Sparc platform requires that arg_state begin on a long
+ * Note: The Sparc platform requires that arg_state begin on an int
* word boundary; otherwise a bus error will occur. Even so, lint will
* complain about mis-alignment, but you should disregard these messages.
*/
@@ -456,9 +451,9 @@ char *
setstate(arg_state)
char *arg_state; /* pointer to state array */
{
- register long *new_state = (long *) arg_state;
- register long type = new_state[0] % MAX_TYPES;
- register long rear = new_state[0] / MAX_TYPES;
+ uint32_t *new_state = (uint32_t *)arg_state;
+ uint32_t type = new_state[0] % MAX_TYPES;
+ uint32_t rear = new_state[0] / MAX_TYPES;
char *ostate = (char *)(&state[-1]);
if (rand_type == TYPE_0)
@@ -479,7 +474,7 @@ setstate(arg_state)
(void)fprintf(stderr,
"random: state info corrupted; not changed.\n");
}
- state = (long *) (new_state + 1);
+ state = new_state + 1;
if (rand_type != TYPE_0) {
rptr = &state[rear];
fptr = &state[(rear + rand_sep) % rand_deg];
@@ -508,8 +503,8 @@ setstate(arg_state)
long
random()
{
- register long i;
- register long *f, *r;
+ uint32_t i;
+ uint32_t *f, *r;
if (rand_type == TYPE_0) {
i = state[0];
@@ -531,5 +526,5 @@ random()
fptr = f; rptr = r;
}
- return(i);
+ return((long)i);
}
diff --git a/random.h b/random.h
index aea7a8ff..f24d5f71 100644
--- a/random.h
+++ b/random.h
@@ -3,7 +3,7 @@
*/
/*
- * Copyright (C) 1996, 2001 the Free Software Foundation, Inc.
+ * Copyright (C) 1996, 2001, 2004, 2005 the Free Software Foundation, Inc.
*
* This file is part of GAWK, the GNU implementation of the
* AWK Programming Language.
@@ -20,18 +20,26 @@
*
* 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
+ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA
*/
-#ifdef HAVE_CONFIG_H
-#include <config.h>
-#endif
-
#define initstate gawk_initstate
#define setstate gawk_setstate
#define random gawk_random
#define srandom gawk_srandom
+#if SIZEOF_UNSIGNED_INT == 4
+typedef unsigned int gawk_uint32_t;
+typedef int gawk_int32_t;
+#else
+#if SIZEOF_UNSIGNED_LONG == 4
+typedef unsigned long gawk_uint32_t;
+typedef long gawk_int32_t;
+#endif
+#endif
+#define uint32_t gawk_uint32_t
+#define int32_t gawk_int32_t
+
#ifdef __STDC__
#undef __P
#define __P(s) s
diff --git a/re.c b/re.c
index 55245f75..c0375b98 100644
--- a/re.c
+++ b/re.c
@@ -3,7 +3,7 @@
*/
/*
- * Copyright (C) 1991-2004 the Free Software Foundation, Inc.
+ * Copyright (C) 1991-2005 the Free Software Foundation, Inc.
*
* This file is part of GAWK, the GNU implementation of the
* AWK Programming Language.
@@ -20,7 +20,7 @@
*
* 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
+ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA
*/
#include "awk.h"
@@ -42,10 +42,11 @@ make_regexp(const char *s, size_t len, int ignorecase, int dfa)
static short first = TRUE;
static short no_dfa = FALSE;
int has_anchor = FALSE;
-#ifdef MBS_SUPPORT
- /* The number of bytes in the current multbyte character.
+
+ /* The number of bytes in the current multibyte character.
It is 0, when the current character is a singlebyte character. */
size_t is_multibyte = 0;
+#ifdef MBS_SUPPORT
mbstate_t mbs;
if (gawk_mb_cur_max > 1)
@@ -69,7 +70,7 @@ make_regexp(const char *s, size_t len, int ignorecase, int dfa)
while (src < end) {
#ifdef MBS_SUPPORT
- if (gawk_mb_cur_max > 1 && !is_multibyte) {
+ if (gawk_mb_cur_max > 1 && ! is_multibyte) {
/* The previous byte is a singlebyte character, or last byte
of a multibyte character. We check the next character. */
is_multibyte = mbrlen(src, end - src, &mbs);
@@ -81,12 +82,9 @@ make_regexp(const char *s, size_t len, int ignorecase, int dfa)
}
#endif
- if (
-#ifdef MBS_SUPPORT
/* We skip multibyte character, since it must not be a special
character. */
- (gawk_mb_cur_max == 1 || ! is_multibyte) &&
-#endif
+ if ((gawk_mb_cur_max == 1 || ! is_multibyte) &&
(*src == '\\')) {
c = *++src;
switch (c) {
@@ -145,10 +143,8 @@ make_regexp(const char *s, size_t len, int ignorecase, int dfa)
has_anchor = TRUE;
*dest++ = *src++; /* not '\\' */
}
-#ifdef MBS_SUPPORT
if (gawk_mb_cur_max > 1 && is_multibyte)
is_multibyte--;
-#endif
} /* while */
*dest = '\0' ; /* Only necessary if we print dest ? */
@@ -171,7 +167,7 @@ make_regexp(const char *s, size_t len, int ignorecase, int dfa)
* also think it's probably better for portability. See the
* discussion by the definition of casetable[] in eval.c.
*/
-#ifdef MBS_SUPPORT
+
if (ignorecase) {
if (gawk_mb_cur_max > 1) {
syn |= RE_ICASE;
@@ -184,12 +180,6 @@ make_regexp(const char *s, size_t len, int ignorecase, int dfa)
rp->pat.translate = NULL;
syn &= ~RE_ICASE;
}
-#else /* ! MBS_SUPPORT */
- if (ignorecase)
- rp->pat.translate = (char *) casetable;
- else
- rp->pat.translate = NULL;
-#endif /* ! MBS_SUPPORT */
dfasyntax(syn | (ignorecase ? RE_ICASE : 0), ignorecase ? TRUE : FALSE, '\n');
re_set_syntax(syn);
@@ -215,16 +205,28 @@ make_regexp(const char *s, size_t len, int ignorecase, int dfa)
int
research(Regexp *rp, register char *str, int start,
- register size_t len, int need_start)
+ register size_t len, int flags)
{
const char *ret = str;
int try_backref;
+ int need_start;
+ int no_bol;
+ int res;
+
+ need_start = ((flags & RE_NEED_START) != 0);
+ no_bol = ((flags & RE_NO_BOL) != 0);
+
+ if (no_bol)
+ rp->pat.not_bol = 1;
/*
* Always do dfa search if can; if it fails, then even if
* need_start is true, we won't bother with the regex search.
+ *
+ * The dfa matcher doesn't have a no_bol flag, so don't bother
+ * trying it in that case.
*/
- if (rp->dfa) {
+ if (rp->dfa && ! no_bol) {
char save;
int count = 0;
/*
@@ -243,14 +245,15 @@ research(Regexp *rp, register char *str, int start,
* Passing NULL as last arg speeds up search for cases
* where we don't need the start/end info.
*/
- int res = re_search(&(rp->pat), str, start+len,
+ res = re_search(&(rp->pat), str, start+len,
start, len, need_start ? &(rp->regs) : NULL);
-
- return res;
} else
- return 1;
+ res = 1;
} else
- return -1;
+ res = -1;
+
+ rp->pat.not_bol = 0;
+ return res;
}
/* refree --- free up the dynamic memory used by a compiled regexp */
@@ -386,7 +389,7 @@ reisstring(const char *text, size_t len, Regexp *re, const char *buf)
/* make accessable to gdb */
matched = &buf[RESTART(re, buf)];
- res = STREQN(text, matched, len);
+ res = (memcmp(text, matched, len) == 0);
return res;
}
@@ -434,6 +437,9 @@ reflags2str(int flagval)
{ RE_DEBUG, "RE_DEBUG" },
{ RE_INVALID_INTERVAL_ORD, "RE_INVALID_INTERVAL_ORD" },
{ RE_ICASE, "RE_ICASE" },
+ { RE_CARET_ANCHORS_HERE, "RE_CARET_ANCHORS_HERE" },
+ { RE_CONTEXT_INVALID_DUP, "RE_CONTEXT_INVALID_DUP" },
+ { RE_NO_SUB, "RE_NO_SUB" },
{ 0, NULL },
};
diff --git a/regcomp.c b/regcomp.c
index 075566fd..9692cc30 100644
--- a/regcomp.c
+++ b/regcomp.c
@@ -1,5 +1,5 @@
/* Extended regular expression matching and search library.
- Copyright (C) 2002, 2003, 2004 Free Software Foundation, Inc.
+ Copyright (C) 2002, 2003, 2004, 2005 Free Software Foundation, Inc.
This file is part of the GNU C Library.
Contributed by Isamu Hasegawa <isamu@yamato.ibm.com>.
@@ -15,8 +15,8 @@
You should have received a copy of the GNU Lesser General Public
License along with the GNU C Library; if not, write to the Free
- Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
- 02111-1307 USA. */
+ Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+ 02110-1301 USA. */
static reg_errcode_t re_compile_internal (regex_t *preg, const char * pattern,
int length, reg_syntax_t syntax);
@@ -33,11 +33,21 @@ static reg_errcode_t create_initial_state (re_dfa_t *dfa);
#ifdef RE_ENABLE_I18N
static void optimize_utf8 (re_dfa_t *dfa);
#endif
-static reg_errcode_t analyze (re_dfa_t *dfa);
-static reg_errcode_t analyze_tree (re_dfa_t *dfa, bin_tree_t *node);
-static void calc_first (re_dfa_t *dfa, bin_tree_t *node);
-static void calc_next (re_dfa_t *dfa, bin_tree_t *node);
-static void calc_epsdest (re_dfa_t *dfa, bin_tree_t *node);
+static reg_errcode_t analyze (regex_t *preg);
+static reg_errcode_t create_initial_state (re_dfa_t *dfa);
+static reg_errcode_t preorder (bin_tree_t *root,
+ reg_errcode_t (fn (void *, bin_tree_t *)),
+ void *extra);
+static reg_errcode_t postorder (bin_tree_t *root,
+ reg_errcode_t (fn (void *, bin_tree_t *)),
+ void *extra);
+static reg_errcode_t optimize_subexps (void *extra, bin_tree_t *node);
+static reg_errcode_t lower_subexps (void *extra, bin_tree_t *node);
+static bin_tree_t *lower_subexp (reg_errcode_t *err, regex_t *preg,
+ bin_tree_t *node);
+static reg_errcode_t calc_first (void *extra, bin_tree_t *node);
+static reg_errcode_t calc_next (void *extra, bin_tree_t *node);
+static reg_errcode_t link_nfa_nodes (void *extra, bin_tree_t *node);
static reg_errcode_t duplicate_node_closure (re_dfa_t *dfa, int top_org_node,
int top_clone_node, int root_node,
unsigned int constraint);
@@ -48,7 +58,7 @@ static int search_duplicated_node (re_dfa_t *dfa, int org_node,
static reg_errcode_t calc_eclosure (re_dfa_t *dfa);
static reg_errcode_t calc_eclosure_iter (re_node_set *new_set, re_dfa_t *dfa,
int node, int root);
-static void calc_inveclosure (re_dfa_t *dfa);
+static reg_errcode_t calc_inveclosure (re_dfa_t *dfa);
static int fetch_number (re_string_t *input, re_token_t *token,
reg_syntax_t syntax);
static void fetch_token (re_token_t *result, re_string_t *input,
@@ -130,72 +140,73 @@ static bin_tree_t *build_charclass_op (re_dfa_t *dfa,
int non_match, reg_errcode_t *err);
static bin_tree_t *create_tree (re_dfa_t *dfa,
bin_tree_t *left, bin_tree_t *right,
- re_token_type_t type, int index);
-static bin_tree_t *re_dfa_add_tree_node (re_dfa_t *dfa,
- bin_tree_t *left, bin_tree_t *right,
- const re_token_t *token)
- __attribute ((noinline));
+ re_token_type_t type);
+static bin_tree_t *create_token_tree (re_dfa_t *dfa,
+ bin_tree_t *left, bin_tree_t *right,
+ const re_token_t *token);
static bin_tree_t *duplicate_tree (const bin_tree_t *src, re_dfa_t *dfa);
-static void mark_opt_subexp (const bin_tree_t *src, re_dfa_t *dfa);
-static void mark_opt_subexp_iter (const bin_tree_t *src, re_dfa_t *dfa, int idx);
+static void free_token (re_token_t *node);
+static reg_errcode_t free_tree (void *extra, bin_tree_t *node);
+static reg_errcode_t mark_opt_subexp (void *extra, bin_tree_t *node);
/* This table gives an error message for each of the error codes listed
in regex.h. Obviously the order here has to be same as there.
POSIX doesn't require that we do anything for REG_NOERROR,
but why not be nice? */
-const char __re_error_msgid[] attribute_hidden =
+const ERRMSG_TYPE __re_error_msgid[] attribute_hidden =
{
#define REG_NOERROR_IDX 0
gettext_noop ("Success") /* REG_NOERROR */
- "\0"
+ ERRMSG_SEPARATOR
#define REG_NOMATCH_IDX (REG_NOERROR_IDX + sizeof "Success")
gettext_noop ("No match") /* REG_NOMATCH */
- "\0"
+ ERRMSG_SEPARATOR
#define REG_BADPAT_IDX (REG_NOMATCH_IDX + sizeof "No match")
gettext_noop ("Invalid regular expression") /* REG_BADPAT */
- "\0"
+ ERRMSG_SEPARATOR
#define REG_ECOLLATE_IDX (REG_BADPAT_IDX + sizeof "Invalid regular expression")
gettext_noop ("Invalid collation character") /* REG_ECOLLATE */
- "\0"
+ ERRMSG_SEPARATOR
#define REG_ECTYPE_IDX (REG_ECOLLATE_IDX + sizeof "Invalid collation character")
gettext_noop ("Invalid character class name") /* REG_ECTYPE */
- "\0"
+ ERRMSG_SEPARATOR
#define REG_EESCAPE_IDX (REG_ECTYPE_IDX + sizeof "Invalid character class name")
gettext_noop ("Trailing backslash") /* REG_EESCAPE */
- "\0"
+ ERRMSG_SEPARATOR
#define REG_ESUBREG_IDX (REG_EESCAPE_IDX + sizeof "Trailing backslash")
gettext_noop ("Invalid back reference") /* REG_ESUBREG */
- "\0"
+ ERRMSG_SEPARATOR
#define REG_EBRACK_IDX (REG_ESUBREG_IDX + sizeof "Invalid back reference")
gettext_noop ("Unmatched [ or [^") /* REG_EBRACK */
- "\0"
+ ERRMSG_SEPARATOR
#define REG_EPAREN_IDX (REG_EBRACK_IDX + sizeof "Unmatched [ or [^")
gettext_noop ("Unmatched ( or \\(") /* REG_EPAREN */
- "\0"
+ ERRMSG_SEPARATOR
#define REG_EBRACE_IDX (REG_EPAREN_IDX + sizeof "Unmatched ( or \\(")
gettext_noop ("Unmatched \\{") /* REG_EBRACE */
- "\0"
+ ERRMSG_SEPARATOR
#define REG_BADBR_IDX (REG_EBRACE_IDX + sizeof "Unmatched \\{")
gettext_noop ("Invalid content of \\{\\}") /* REG_BADBR */
- "\0"
+ ERRMSG_SEPARATOR
#define REG_ERANGE_IDX (REG_BADBR_IDX + sizeof "Invalid content of \\{\\}")
gettext_noop ("Invalid range end") /* REG_ERANGE */
- "\0"
+ ERRMSG_SEPARATOR
#define REG_ESPACE_IDX (REG_ERANGE_IDX + sizeof "Invalid range end")
gettext_noop ("Memory exhausted") /* REG_ESPACE */
- "\0"
+ ERRMSG_SEPARATOR
#define REG_BADRPT_IDX (REG_ESPACE_IDX + sizeof "Memory exhausted")
gettext_noop ("Invalid preceding regular expression") /* REG_BADRPT */
- "\0"
+ ERRMSG_SEPARATOR
#define REG_EEND_IDX (REG_BADRPT_IDX + sizeof "Invalid preceding regular expression")
gettext_noop ("Premature end of regular expression") /* REG_EEND */
- "\0"
+ ERRMSG_SEPARATOR
#define REG_ESIZE_IDX (REG_EEND_IDX + sizeof "Premature end of regular expression")
gettext_noop ("Regular expression too big") /* REG_ESIZE */
- "\0"
+ ERRMSG_SEPARATOR
#define REG_ERPAREN_IDX (REG_ESIZE_IDX + sizeof "Regular expression too big")
gettext_noop ("Unmatched ) or \\)") /* REG_ERPAREN */
+ ERRMSG_SEPARATOR
};
const size_t __re_error_msgid_idx[] attribute_hidden =
@@ -238,8 +249,8 @@ re_compile_pattern (pattern, length, bufp)
/* And GNU code determines whether or not to get register information
by passing null for the REGS argument to re_match, etc., not by
- setting no_sub. */
- bufp->no_sub = 0;
+ setting no_sub, unless RE_NO_SUB is set. */
+ bufp->no_sub = !!(re_syntax_options & RE_NO_SUB);
/* Match anchors at newline. */
bufp->newline_anchor = 1;
@@ -248,7 +259,7 @@ re_compile_pattern (pattern, length, bufp)
if (!ret)
return NULL;
- return gettext (__re_error_msgid + __re_error_msgid_idx[(int) ret]);
+ return gettext (RE_ERRMSG(ret));
}
#ifdef _LIBC
weak_alias (__re_compile_pattern, re_compile_pattern)
@@ -336,7 +347,7 @@ re_compile_fastmap_iter (bufp, init_state, fastmap)
#ifdef RE_ENABLE_I18N
if ((bufp->syntax & RE_ICASE) && dfa->mb_cur_max > 1)
{
- unsigned char *buf = alloca (dfa->mb_cur_max), *p;
+ unsigned char *buf = re_malloc (unsigned char, dfa->mb_cur_max), *p;
wchar_t wc;
mbstate_t state;
@@ -351,6 +362,7 @@ re_compile_fastmap_iter (bufp, init_state, fastmap)
&state) == p - buf
&& __wcrtomb ((char *) buf, towlower (wc), &state) > 0)
re_set_fastmap (fastmap, 0, buf[0]);
+ re_free (buf);
}
#endif
}
@@ -540,7 +552,7 @@ regerror (errcode, preg, errbuf, errbuf_size)
Dump core so we can fix it. */
abort ();
- msg = gettext (__re_error_msgid + __re_error_msgid_idx[errcode]);
+ msg = gettext (RE_ERRMSG(errcode));
msg_size = strlen (msg) + 1; /* Includes the null. */
@@ -562,25 +574,31 @@ weak_alias (__regerror, regerror)
#endif
+#ifdef RE_ENABLE_I18N
+/* This static array is used for the map to single-byte characters when
+ UTF-8 is used. Otherwise we would allocate memory just to initialize
+ it the same all the time. UTF-8 is the preferred encoding so this is
+ a worthwhile optimization. */
+static const bitset utf8_sb_map =
+{
+ /* Set the first 128 bits. */
+# if UINT_MAX == 0xffffffff
+ 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff
+# else
+# error "Add case for new unsigned int size"
+# endif
+};
+#endif
+
+
static void
free_dfa_content (re_dfa_t *dfa)
{
int i, j;
- re_free (dfa->subexps);
-
if (dfa->nodes)
for (i = 0; i < dfa->nodes_len; ++i)
- {
- re_token_t *node = dfa->nodes + i;
-#ifdef RE_ENABLE_I18N
- if (node->type == COMPLEX_BRACKET && node->duplicated == 0)
- free_charset (node->opr.mbcset);
- else
-#endif /* RE_ENABLE_I18N */
- if (node->type == SIMPLE_BRACKET && node->duplicated == 0)
- re_free (node->opr.sbcset);
- }
+ free_token (dfa->nodes + i);
re_free (dfa->nexts);
for (i = 0; i < dfa->nodes_len; ++i)
{
@@ -609,8 +627,10 @@ free_dfa_content (re_dfa_t *dfa)
}
re_free (dfa->state_table);
#ifdef RE_ENABLE_I18N
- re_free (dfa->sb_char);
+ if (dfa->sb_char != utf8_sb_map)
+ re_free (dfa->sb_char);
#endif
+ re_free (dfa->subexp_map);
#ifdef DEBUG
re_free (dfa->re_str);
#endif
@@ -682,8 +702,7 @@ re_comp (s)
{
re_comp_buf.fastmap = (char *) malloc (SBC_MAX);
if (re_comp_buf.fastmap == NULL)
- return (char *) gettext (__re_error_msgid
- + __re_error_msgid_idx[(int) REG_ESPACE]);
+ return (char *) gettext (RE_ERRMSG(REG_ESPACE_IDX));
}
/* Since `re_exec' always passes NULL for the `regs' argument, we
@@ -698,7 +717,7 @@ re_comp (s)
return NULL;
/* Yes, we're discarding `const' here if !HAVE_LIBINTL. */
- return (char *) gettext (__re_error_msgid + __re_error_msgid_idx[(int) ret]);
+ return (char *) gettext (RE_ERRMSG(ret));
}
#ifdef _LIBC
@@ -782,18 +801,17 @@ re_compile_internal (preg, pattern, length, syntax)
if (BE (dfa->str_tree == NULL, 0))
goto re_compile_internal_free_return;
+ /* Analyze the tree and create the nfa. */
+ err = analyze (preg);
+ if (BE (err != REG_NOERROR, 0))
+ goto re_compile_internal_free_return;
+
#ifdef RE_ENABLE_I18N
/* If possible, do searching in single byte encoding to speed things up. */
if (dfa->is_utf8 && !(syntax & RE_ICASE) && preg->translate == NULL)
optimize_utf8 (dfa);
#endif
- /* Analyze the tree and collect information which is necessary to
- create the dfa. */
- err = analyze (dfa);
- if (BE (err != REG_NOERROR, 0))
- goto re_compile_internal_free_return;
-
/* Then create the initial state of the dfa. */
err = create_initial_state (dfa);
@@ -820,6 +838,9 @@ init_dfa (dfa, pat_len)
int pat_len;
{
int table_size;
+#ifndef _LIBC
+ char *codeset_name;
+#endif
memset (dfa, '\0', sizeof (re_dfa_t));
@@ -839,9 +860,6 @@ init_dfa (dfa, pat_len)
dfa->state_table = calloc (sizeof (struct re_state_table_entry), table_size);
dfa->state_hash_mask = table_size - 1;
- dfa->subexps_alloc = 1;
- dfa->subexps = re_malloc (re_subexp_t, dfa->subexps_alloc);
-
dfa->mb_cur_max = MB_CUR_MAX;
#ifdef _LIBC
if (dfa->mb_cur_max == 6
@@ -849,27 +867,74 @@ init_dfa (dfa, pat_len)
dfa->is_utf8 = 1;
dfa->map_notascii = (_NL_CURRENT_WORD (LC_CTYPE, _NL_CTYPE_MAP_TO_NONASCII)
!= 0);
+#else
+# ifdef HAVE_LANGINFO_CODESET
+ codeset_name = nl_langinfo (CODESET);
+# else
+ codeset_name = getenv ("LC_ALL");
+ if (codeset_name == NULL || codeset_name[0] == '\0')
+ codeset_name = getenv ("LC_CTYPE");
+ if (codeset_name == NULL || codeset_name[0] == '\0')
+ codeset_name = getenv ("LANG");
+ if (codeset_name == NULL)
+ codeset_name = "";
+ else if (strchr (codeset_name, '.') != NULL)
+ codeset_name = strchr (codeset_name, '.') + 1;
+# endif
+
+ /* strcasecmp isn't a standard interface. brute force check */
+#if 0
+ if (strcasecmp (codeset_name, "UTF-8") == 0
+ || strcasecmp (codeset_name, "UTF8") == 0)
+ dfa->is_utf8 = 1;
+#else
+ if ( (codeset_name[0] == 'U' || codeset_name[0] == 'u')
+ && (codeset_name[1] == 'T' || codeset_name[1] == 't')
+ && (codeset_name[2] == 'F' || codeset_name[2] == 'f')
+ && (codeset_name[3] == '-'
+ ? codeset_name[4] == '8' && codeset_name[5] == '\0'
+ : codeset_name[3] == '8' && codeset_name[4] == '\0'))
+ dfa->is_utf8 = 1;
+#endif
+
+ /* We check exhaustively in the loop below if this charset is a
+ superset of ASCII. */
+ dfa->map_notascii = 0;
#endif
+
#ifdef RE_ENABLE_I18N
if (dfa->mb_cur_max > 1)
{
- int i, j, ch;
-
- dfa->sb_char = (re_bitset_ptr_t) calloc (sizeof (bitset), 1);
- if (BE (dfa->sb_char == NULL, 0))
- return REG_ESPACE;
if (dfa->is_utf8)
- memset (dfa->sb_char, 255, sizeof (unsigned int) * BITSET_UINTS / 2);
+ dfa->sb_char = (re_bitset_ptr_t) utf8_sb_map;
else
- for (i = 0, ch = 0; i < BITSET_UINTS; ++i)
- for (j = 0; j < UINT_BITS; ++j, ++ch)
- if (btowc (ch) != WEOF)
- dfa->sb_char[i] |= 1 << j;
+ {
+ int i, j, ch;
+
+ dfa->sb_char = (re_bitset_ptr_t) calloc (sizeof (bitset), 1);
+ if (BE (dfa->sb_char == NULL, 0))
+ return REG_ESPACE;
+
+ /* Clear all bits by, then set those corresponding to single
+ byte chars. */
+ bitset_empty (dfa->sb_char);
+
+ for (i = 0, ch = 0; i < BITSET_UINTS; ++i)
+ for (j = 0; j < UINT_BITS; ++j, ++ch)
+ {
+ wchar_t wch = __btowc (ch);
+ if (wch != WEOF)
+ dfa->sb_char[i] |= 1 << j;
+# ifndef _LIBC
+ if (isascii (ch) && wch != (wchar_t) ch)
+ dfa->map_notascii = 1;
+# endif
+ }
+ }
}
#endif
- if (BE (dfa->nodes == NULL || dfa->state_table == NULL
- || dfa->subexps == NULL, 0))
+ if (BE (dfa->nodes == NULL || dfa->state_table == NULL, 0))
return REG_ESPACE;
return REG_NOERROR;
}
@@ -922,7 +987,7 @@ create_initial_state (dfa)
/* Initial states have the epsilon closure of the node which is
the first node of the regular expression. */
- first = dfa->str_tree->first;
+ first = dfa->str_tree->first->node_idx;
dfa->init_node = first;
err = re_node_set_init_copy (&init_nodes, dfa->eclosures + first);
if (BE (err != REG_NOERROR, 0))
@@ -946,7 +1011,7 @@ create_initial_state (dfa)
re_token_t *clexp_node;
clexp_node = dfa->nodes + init_nodes.elems[clexp_idx];
if (clexp_node->type == OP_CLOSE_SUBEXP
- && clexp_node->opr.idx + 1 == dfa->nodes[node_idx].opr.idx)
+ && clexp_node->opr.idx == dfa->nodes[node_idx].opr.idx)
break;
}
if (clexp_idx == init_nodes.nelem)
@@ -1028,10 +1093,11 @@ optimize_utf8 (dfa)
case OP_ALT:
case END_OF_RE:
case OP_DUP_ASTERISK:
- case OP_DUP_QUESTION:
case OP_OPEN_SUBEXP:
case OP_CLOSE_SUBEXP:
break;
+ case COMPLEX_BRACKET:
+ return;
case SIMPLE_BRACKET:
/* Just double check. */
for (i = 0x80 / UINT_BITS; i < BITSET_UINTS; ++i)
@@ -1039,7 +1105,7 @@ optimize_utf8 (dfa)
return;
break;
default:
- return;
+ abort ();
}
if (mb_chars || has_period)
@@ -1063,10 +1129,10 @@ optimize_utf8 (dfa)
"eclosure", and "inveclosure". */
static reg_errcode_t
-analyze (dfa)
- re_dfa_t *dfa;
+analyze (preg)
+ regex_t *preg;
{
- int i;
+ re_dfa_t *dfa = (re_dfa_t *) preg->buffer;
reg_errcode_t ret;
/* Allocate arrays. */
@@ -1074,225 +1140,321 @@ analyze (dfa)
dfa->org_indices = re_malloc (int, dfa->nodes_alloc);
dfa->edests = re_malloc (re_node_set, dfa->nodes_alloc);
dfa->eclosures = re_malloc (re_node_set, dfa->nodes_alloc);
- dfa->inveclosures = re_malloc (re_node_set, dfa->nodes_alloc);
if (BE (dfa->nexts == NULL || dfa->org_indices == NULL || dfa->edests == NULL
- || dfa->eclosures == NULL || dfa->inveclosures == NULL, 0))
+ || dfa->eclosures == NULL, 0))
return REG_ESPACE;
- /* Initialize them. */
- for (i = 0; i < dfa->nodes_len; ++i)
+
+ dfa->subexp_map = re_malloc (int, preg->re_nsub);
+ if (dfa->subexp_map != NULL)
{
- dfa->nexts[i] = -1;
- re_node_set_init_empty (dfa->edests + i);
- re_node_set_init_empty (dfa->eclosures + i);
- re_node_set_init_empty (dfa->inveclosures + i);
+ int i;
+ for (i = 0; i < preg->re_nsub; i++)
+ dfa->subexp_map[i] = i;
+ preorder (dfa->str_tree, optimize_subexps, dfa);
+ for (i = 0; i < preg->re_nsub; i++)
+ if (dfa->subexp_map[i] != i)
+ break;
+ if (i == preg->re_nsub)
+ {
+ free (dfa->subexp_map);
+ dfa->subexp_map = NULL;
+ }
}
- ret = analyze_tree (dfa, dfa->str_tree);
- if (BE (ret == REG_NOERROR, 1))
+ ret = postorder (dfa->str_tree, lower_subexps, preg);
+ if (BE (ret != REG_NOERROR, 0))
+ return ret;
+ ret = postorder (dfa->str_tree, calc_first, dfa);
+ if (BE (ret != REG_NOERROR, 0))
+ return ret;
+ preorder (dfa->str_tree, calc_next, dfa);
+ ret = preorder (dfa->str_tree, link_nfa_nodes, dfa);
+ if (BE (ret != REG_NOERROR, 0))
+ return ret;
+ ret = calc_eclosure (dfa);
+ if (BE (ret != REG_NOERROR, 0))
+ return ret;
+
+ /* We only need this during the prune_impossible_nodes pass in regexec.c;
+ skip it if p_i_n will not run, as calc_inveclosure can be quadratic. */
+ if ((!preg->no_sub && preg->re_nsub > 0 && dfa->has_plural_match)
+ || dfa->nbackref)
{
- ret = calc_eclosure (dfa);
- if (ret == REG_NOERROR)
- calc_inveclosure (dfa);
+ dfa->inveclosures = re_malloc (re_node_set, dfa->nodes_len);
+ if (BE (dfa->inveclosures == NULL, 0))
+ return REG_ESPACE;
+ ret = calc_inveclosure (dfa);
}
+
return ret;
}
-/* Helper functions for analyze.
- This function calculate "first", "next", and "edest" for the subtree
- whose root is NODE. */
+/* Our parse trees are very unbalanced, so we cannot use a stack to
+ implement parse tree visits. Instead, we use parent pointers and
+ some hairy code in these two functions. */
+static reg_errcode_t
+postorder (root, fn, extra)
+ bin_tree_t *root;
+ reg_errcode_t (fn (void *, bin_tree_t *));
+ void *extra;
+{
+ bin_tree_t *node, *prev;
+
+ for (node = root; ; )
+ {
+ /* Descend down the tree, preferably to the left (or to the right
+ if that's the only child). */
+ while (node->left || node->right)
+ if (node->left)
+ node = node->left;
+ else
+ node = node->right;
+
+ do
+ {
+ reg_errcode_t err = fn (extra, node);
+ if (BE (err != REG_NOERROR, 0))
+ return err;
+ if (node->parent == NULL)
+ return REG_NOERROR;
+ prev = node;
+ node = node->parent;
+ }
+ /* Go up while we have a node that is reached from the right. */
+ while (node->right == prev || node->right == NULL);
+ node = node->right;
+ }
+}
static reg_errcode_t
-analyze_tree (dfa, node)
- re_dfa_t *dfa;
+preorder (root, fn, extra)
+ bin_tree_t *root;
+ reg_errcode_t (fn (void *, bin_tree_t *));
+ void *extra;
+{
+ bin_tree_t *node;
+
+ for (node = root; ; )
+ {
+ reg_errcode_t err = fn (extra, node);
+ if (BE (err != REG_NOERROR, 0))
+ return err;
+
+ /* Go to the left node, or up and to the right. */
+ if (node->left)
+ node = node->left;
+ else
+ {
+ bin_tree_t *prev = NULL;
+ while (node->right == prev || node->right == NULL)
+ {
+ prev = node;
+ node = node->parent;
+ if (!node)
+ return REG_NOERROR;
+ }
+ node = node->right;
+ }
+ }
+}
+
+/* Optimization pass: if a SUBEXP is entirely contained, strip it and tell
+ re_search_internal to map the inner one's opr.idx to this one's. Adjust
+ backreferences as well. Requires a preorder visit. */
+static reg_errcode_t
+optimize_subexps (extra, node)
+ void *extra;
bin_tree_t *node;
{
- reg_errcode_t ret;
- if (node->first == -1)
- calc_first (dfa, node);
- if (node->next == -1)
- calc_next (dfa, node);
- if (node->eclosure.nelem == 0)
- calc_epsdest (dfa, node);
- /* Calculate "first" etc. for the left child. */
- if (node->left != NULL)
- {
- ret = analyze_tree (dfa, node->left);
- if (BE (ret != REG_NOERROR, 0))
- return ret;
+ re_dfa_t *dfa = (re_dfa_t *) extra;
+
+ if (node->token.type == OP_BACK_REF && dfa->subexp_map)
+ {
+ int idx = node->token.opr.idx;
+ node->token.opr.idx = dfa->subexp_map[idx];
+ dfa->used_bkref_map |= 1 << node->token.opr.idx;
}
- /* Calculate "first" etc. for the right child. */
- if (node->right != NULL)
+
+ else if (node->token.type == SUBEXP
+ && node->left && node->left->token.type == SUBEXP)
{
- ret = analyze_tree (dfa, node->right);
- if (BE (ret != REG_NOERROR, 0))
- return ret;
+ int other_idx = node->left->token.opr.idx;
+
+ node->left = node->left->left;
+ if (node->left)
+ node->left->parent = node;
+
+ dfa->subexp_map[other_idx] = dfa->subexp_map[node->token.opr.idx];
+ if (other_idx < 8 * sizeof (dfa->used_bkref_map))
+ dfa->used_bkref_map &= ~(1 << other_idx);
}
+
return REG_NOERROR;
}
-/* Calculate "first" for the node NODE. */
-static void
-calc_first (dfa, node)
- re_dfa_t *dfa;
+/* Lowering pass: Turn each SUBEXP node into the appropriate concatenation
+ of OP_OPEN_SUBEXP, the body of the SUBEXP (if any) and OP_CLOSE_SUBEXP. */
+static reg_errcode_t
+lower_subexps (extra, node)
+ void *extra;
bin_tree_t *node;
{
- int idx, type;
- idx = node->node_idx;
- type = (node->type == 0) ? dfa->nodes[idx].type : node->type;
+ regex_t *preg = (regex_t *) extra;
+ reg_errcode_t err = REG_NOERROR;
- switch (type)
+ if (node->left && node->left->token.type == SUBEXP)
{
-#ifdef DEBUG
- case OP_OPEN_BRACKET:
- case OP_CLOSE_BRACKET:
- case OP_OPEN_DUP_NUM:
- case OP_CLOSE_DUP_NUM:
- case OP_DUP_PLUS:
- case OP_NON_MATCH_LIST:
- case OP_OPEN_COLL_ELEM:
- case OP_CLOSE_COLL_ELEM:
- case OP_OPEN_EQUIV_CLASS:
- case OP_CLOSE_EQUIV_CLASS:
- case OP_OPEN_CHAR_CLASS:
- case OP_CLOSE_CHAR_CLASS:
- /* These must not appear here. */
- assert (0);
-#endif
- case END_OF_RE:
- case CHARACTER:
- case OP_PERIOD:
- case OP_DUP_ASTERISK:
- case OP_DUP_QUESTION:
-#ifdef RE_ENABLE_I18N
- case OP_UTF8_PERIOD:
- case COMPLEX_BRACKET:
-#endif /* RE_ENABLE_I18N */
- case SIMPLE_BRACKET:
- case OP_BACK_REF:
- case ANCHOR:
- case OP_OPEN_SUBEXP:
- case OP_CLOSE_SUBEXP:
- node->first = idx;
- break;
- case OP_ALT:
- node->first = idx;
- break;
- /* else fall through */
- default:
-#ifdef DEBUG
- assert (node->left != NULL);
-#endif
- if (node->left->first == -1)
- calc_first (dfa, node->left);
- node->first = node->left->first;
- break;
+ node->left = lower_subexp (&err, preg, node->left);
+ if (node->left)
+ node->left->parent = node;
+ }
+ if (node->right && node->right->token.type == SUBEXP)
+ {
+ node->right = lower_subexp (&err, preg, node->right);
+ if (node->right)
+ node->right->parent = node;
}
-}
-/* Calculate "next" for the node NODE. */
+ return err;
+}
-static void
-calc_next (dfa, node)
- re_dfa_t *dfa;
+static bin_tree_t *
+lower_subexp (err, preg, node)
+ reg_errcode_t *err;
+ regex_t *preg;
bin_tree_t *node;
{
- int idx, type;
- bin_tree_t *parent = node->parent;
- if (parent == NULL)
+ re_dfa_t *dfa = (re_dfa_t *) preg->buffer;
+ bin_tree_t *body = node->left;
+ bin_tree_t *op, *cls, *tree1, *tree;
+
+ if (preg->no_sub
+ && (node->token.opr.idx >= 8 * sizeof (dfa->used_bkref_map)
+ || !(dfa->used_bkref_map & (1 << node->token.opr.idx))))
+ return node->left;
+
+ /* Convert the SUBEXP node to the concatenation of an
+ OP_OPEN_SUBEXP, the contents, and an OP_CLOSE_SUBEXP. */
+ op = create_tree (dfa, NULL, NULL, OP_OPEN_SUBEXP);
+ cls = create_tree (dfa, NULL, NULL, OP_CLOSE_SUBEXP);
+ tree1 = body ? create_tree (dfa, body, cls, CONCAT) : cls;
+ tree = create_tree (dfa, op, tree1, CONCAT);
+ if (BE (tree == NULL || tree1 == NULL || op == NULL || cls == NULL, 0))
{
- node->next = -1;
- idx = node->node_idx;
- if (node->type == 0)
- dfa->nexts[idx] = node->next;
- return;
+ *err = REG_ESPACE;
+ return NULL;
}
- idx = parent->node_idx;
- type = (parent->type == 0) ? dfa->nodes[idx].type : parent->type;
+ op->token.opr.idx = cls->token.opr.idx = node->token.opr.idx;
+ op->token.opt_subexp = cls->token.opt_subexp = node->token.opt_subexp;
+ return tree;
+}
+
+/* Pass 1 in building the NFA: compute FIRST and create unlinked automaton
+ nodes. Requires a postorder visit. */
+static reg_errcode_t
+calc_first (extra, node)
+ void *extra;
+ bin_tree_t *node;
+{
+ re_dfa_t *dfa = (re_dfa_t *) extra;
+ if (node->token.type == CONCAT)
+ {
+ node->first = node->left->first;
+ node->node_idx = node->left->node_idx;
+ }
+ else
+ {
+ node->first = node;
+ node->node_idx = re_dfa_add_node (dfa, node->token);
+ if (BE (node->node_idx == -1, 0))
+ return REG_ESPACE;
+ }
+ return REG_NOERROR;
+}
- switch (type)
+/* Pass 2: compute NEXT on the tree. Preorder visit. */
+static reg_errcode_t
+calc_next (extra, node)
+ void *extra;
+ bin_tree_t *node;
+{
+ switch (node->token.type)
{
case OP_DUP_ASTERISK:
- node->next = idx;
+ node->left->next = node;
break;
case CONCAT:
- if (parent->left == node)
- {
- if (parent->right->first == -1)
- calc_first (dfa, parent->right);
- node->next = parent->right->first;
- break;
- }
- /* else fall through */
+ node->left->next = node->right->first;
+ node->right->next = node->next;
+ break;
default:
- if (parent->next == -1)
- calc_next (dfa, parent);
- node->next = parent->next;
+ if (node->left)
+ node->left->next = node->next;
+ if (node->right)
+ node->right->next = node->next;
break;
}
- idx = node->node_idx;
- if (node->type == 0)
- dfa->nexts[idx] = node->next;
+ return REG_NOERROR;
}
-/* Calculate "edest" for the node NODE. */
-
-static void
-calc_epsdest (dfa, node)
- re_dfa_t *dfa;
+/* Pass 3: link all DFA nodes to their NEXT node (any order will do). */
+static reg_errcode_t
+link_nfa_nodes (extra, node)
+ void *extra;
bin_tree_t *node;
{
- int idx;
- idx = node->node_idx;
- if (node->type == 0)
+ re_dfa_t *dfa = (re_dfa_t *) extra;
+ int idx = node->node_idx;
+ reg_errcode_t err = REG_NOERROR;
+
+ switch (node->token.type)
{
- if (dfa->nodes[idx].type == OP_DUP_ASTERISK
- || dfa->nodes[idx].type == OP_DUP_QUESTION)
- {
- if (node->left->first == -1)
- calc_first (dfa, node->left);
- if (node->next == -1)
- calc_next (dfa, node);
- re_node_set_init_2 (dfa->edests + idx, node->left->first,
- node->next);
- }
- else if (dfa->nodes[idx].type == OP_ALT)
- {
- int left, right;
- if (node->left != NULL)
- {
- if (node->left->first == -1)
- calc_first (dfa, node->left);
- left = node->left->first;
- }
- else
- {
- if (node->next == -1)
- calc_next (dfa, node);
- left = node->next;
- }
- if (node->right != NULL)
- {
- if (node->right->first == -1)
- calc_first (dfa, node->right);
- right = node->right->first;
- }
- else
- {
- if (node->next == -1)
- calc_next (dfa, node);
- right = node->next;
- }
- re_node_set_init_2 (dfa->edests + idx, left, right);
- }
- else if (dfa->nodes[idx].type == ANCHOR
- || dfa->nodes[idx].type == OP_OPEN_SUBEXP
- || dfa->nodes[idx].type == OP_CLOSE_SUBEXP
- || dfa->nodes[idx].type == OP_BACK_REF)
- re_node_set_init_1 (dfa->edests + idx, node->next);
- else
- assert (!IS_EPSILON_NODE (dfa->nodes[idx].type));
+ case CONCAT:
+ break;
+
+ case END_OF_RE:
+ assert (node->next == NULL);
+ break;
+
+ case OP_DUP_ASTERISK:
+ case OP_ALT:
+ {
+ int left, right;
+ dfa->has_plural_match = 1;
+ if (node->left != NULL)
+ left = node->left->first->node_idx;
+ else
+ left = node->next->node_idx;
+ if (node->right != NULL)
+ right = node->right->first->node_idx;
+ else
+ right = node->next->node_idx;
+ assert (left > -1);
+ assert (right > -1);
+ err = re_node_set_init_2 (dfa->edests + idx, left, right);
+ }
+ break;
+
+ case ANCHOR:
+ case OP_OPEN_SUBEXP:
+ case OP_CLOSE_SUBEXP:
+ err = re_node_set_init_1 (dfa->edests + idx, node->next->node_idx);
+ break;
+
+ case OP_BACK_REF:
+ dfa->nexts[idx] = node->next->node_idx;
+ if (node->token.type == OP_BACK_REF)
+ re_node_set_init_1 (dfa->edests + idx, dfa->nexts[idx]);
+ break;
+
+ default:
+ assert (!IS_EPSILON_NODE (node->token.type));
+ dfa->nexts[idx] = node->next->node_idx;
+ break;
}
+
+ return err;
}
/* Duplicate the epsilon closure of the node ROOT_NODE.
@@ -1368,7 +1530,7 @@ duplicate_node_closure (dfa, top_org_node, top_clone_node, root_node,
else /* dfa->edests[org_node].nelem == 2 */
{
/* In case of the node can epsilon-transit, and it has two
- destinations. E.g. '|', '*', '+', '?'. */
+ destinations. In the bin_tree_t and DFA, that's '|' and '*'. */
org_dest = dfa->edests[org_node].elems[0];
re_node_set_empty (dfa->edests + clone_node);
/* Search for a duplicated node which satisfies the constraint. */
@@ -1439,16 +1601,13 @@ duplicate_node (new_idx, dfa, org_idx, constraint)
int *new_idx, org_idx;
unsigned int constraint;
{
- int dup_idx = re_dfa_add_node (dfa, dfa->nodes[org_idx], 1);
+ int dup_idx = re_dfa_add_node (dfa, dfa->nodes[org_idx]);
if (BE (dup_idx == -1, 0))
return REG_ESPACE;
dfa->nodes[dup_idx].constraint = constraint;
if (dfa->nodes[org_idx].type == ANCHOR)
dfa->nodes[dup_idx].constraint |= dfa->nodes[org_idx].opr.ctx_type;
dfa->nodes[dup_idx].duplicated = 1;
- re_node_set_init_empty (dfa->edests + dup_idx);
- re_node_set_init_empty (dfa->eclosures + dup_idx);
- re_node_set_init_empty (dfa->inveclosures + dup_idx);
/* Store the index of the original node. */
dfa->org_indices[dup_idx] = org_idx;
@@ -1456,19 +1615,26 @@ duplicate_node (new_idx, dfa, org_idx, constraint)
return REG_NOERROR;
}
-static void
+static reg_errcode_t
calc_inveclosure (dfa)
re_dfa_t *dfa;
{
- int src, idx, dest;
+ int src, idx, ret;
+ for (idx = 0; idx < dfa->nodes_len; ++idx)
+ re_node_set_init_empty (dfa->inveclosures + idx);
+
for (src = 0; src < dfa->nodes_len; ++src)
{
+ int *elems = dfa->eclosures[src].elems;
for (idx = 0; idx < dfa->eclosures[src].nelem; ++idx)
{
- dest = dfa->eclosures[src].elems[idx];
- re_node_set_insert (dfa->inveclosures + dest, src);
+ ret = re_node_set_insert_last (dfa->inveclosures + elems[idx], src);
+ if (BE (ret == -1, 0))
+ return REG_ESPACE;
}
}
+
+ return REG_NOERROR;
}
/* Calculate "eclosure" for all the node in DFA. */
@@ -1498,6 +1664,7 @@ calc_eclosure (dfa)
#ifdef DEBUG
assert (dfa->eclosures[node_idx].nelem != -1);
#endif
+
/* If we have already calculated, skip it. */
if (dfa->eclosures[node_idx].nelem != 0)
continue;
@@ -1540,7 +1707,9 @@ calc_eclosure_iter (new_set, dfa, node, root)
? dfa->nodes[node].opr.ctx_type : 0);
/* If the current node has constraints, duplicate all nodes.
Since they must inherit the constraints. */
- if (constraint && !dfa->nodes[dfa->edests[node].elems[0]].duplicated)
+ if (constraint
+ && dfa->edests[node].nelem
+ && !dfa->nodes[dfa->edests[node].elems[0]].duplicated)
{
int org_node, cur_node;
org_node = cur_node = node;
@@ -1672,7 +1841,7 @@ peek_token (token, input, syntax)
if (!(syntax & RE_NO_BK_REFS))
{
token->type = OP_BACK_REF;
- token->opr.idx = c2 - '0';
+ token->opr.idx = c2 - '1';
}
break;
case '<':
@@ -1700,7 +1869,7 @@ peek_token (token, input, syntax)
if (!(syntax & RE_NO_GNU_OPS))
{
token->type = ANCHOR;
- token->opr.ctx_type = INSIDE_WORD;
+ token->opr.ctx_type = NOT_WORD_DELIM;
}
break;
case 'w':
@@ -1967,9 +2136,9 @@ parse (regexp, preg, syntax, err)
tree = parse_reg_exp (regexp, preg, &current_token, syntax, 0, err);
if (BE (*err != REG_NOERROR && tree == NULL, 0))
return NULL;
- eor = re_dfa_add_tree_node (dfa, NULL, NULL, &current_token);
+ eor = create_tree (dfa, NULL, NULL, END_OF_RE);
if (tree != NULL)
- root = create_tree (dfa, tree, eor, CONCAT, 0);
+ root = create_tree (dfa, tree, eor, CONCAT);
else
root = eor;
if (BE (eor == NULL || root == NULL, 0))
@@ -2006,7 +2175,6 @@ parse_reg_exp (regexp, preg, token, syntax, nest, err)
while (token->type == OP_ALT)
{
- re_token_t alt_token = *token;
fetch_token (token, regexp, syntax | RE_CARET_ANCHORS_HERE);
if (token->type != OP_ALT && token->type != END_OF_RE
&& (nest == 0 || token->type != OP_CLOSE_SUBEXP))
@@ -2017,13 +2185,12 @@ parse_reg_exp (regexp, preg, token, syntax, nest, err)
}
else
branch = NULL;
- tree = re_dfa_add_tree_node (dfa, tree, branch, &alt_token);
+ tree = create_tree (dfa, tree, branch, OP_ALT);
if (BE (tree == NULL, 0))
{
*err = REG_ESPACE;
return NULL;
}
- dfa->has_plural_match = 1;
}
return tree;
}
@@ -2062,7 +2229,7 @@ parse_branch (regexp, preg, token, syntax, nest, err)
}
if (tree != NULL && exp != NULL)
{
- tree = create_tree (dfa, tree, exp, CONCAT, 0);
+ tree = create_tree (dfa, tree, exp, CONCAT);
if (tree == NULL)
{
*err = REG_ESPACE;
@@ -2096,7 +2263,7 @@ parse_expression (regexp, preg, token, syntax, nest, err)
switch (token->type)
{
case CHARACTER:
- tree = re_dfa_add_tree_node (dfa, NULL, NULL, token);
+ tree = create_token_tree (dfa, NULL, NULL, token);
if (BE (tree == NULL, 0))
{
*err = REG_ESPACE;
@@ -2110,8 +2277,8 @@ parse_expression (regexp, preg, token, syntax, nest, err)
{
bin_tree_t *mbc_remain;
fetch_token (token, regexp, syntax);
- mbc_remain = re_dfa_add_tree_node (dfa, NULL, NULL, token);
- tree = create_tree (dfa, tree, mbc_remain, CONCAT, 0);
+ mbc_remain = create_token_tree (dfa, NULL, NULL, token);
+ tree = create_tree (dfa, tree, mbc_remain, CONCAT);
if (BE (mbc_remain == NULL || tree == NULL, 0))
{
*err = REG_ESPACE;
@@ -2132,14 +2299,13 @@ parse_expression (regexp, preg, token, syntax, nest, err)
return NULL;
break;
case OP_BACK_REF:
- if (BE (preg->re_nsub < token->opr.idx
- || dfa->subexps[token->opr.idx - 1].end == -1, 0))
+ if (!BE (dfa->completed_bkref_map & (1 << token->opr.idx), 1))
{
*err = REG_ESUBREG;
return NULL;
}
- dfa->used_bkref_map |= 1 << (token->opr.idx - 1);
- tree = re_dfa_add_tree_node (dfa, NULL, NULL, token);
+ dfa->used_bkref_map |= 1 << token->opr.idx;
+ tree = create_token_tree (dfa, NULL, NULL, token);
if (BE (tree == NULL, 0))
{
*err = REG_ESPACE;
@@ -2184,7 +2350,7 @@ parse_expression (regexp, preg, token, syntax, nest, err)
token->type = CHARACTER;
/* mb_partial and word_char bits should be initialized already
by peek_token. */
- tree = re_dfa_add_tree_node (dfa, NULL, NULL, token);
+ tree = create_token_tree (dfa, NULL, NULL, token);
if (BE (tree == NULL, 0))
{
*err = REG_ESPACE;
@@ -2193,18 +2359,27 @@ parse_expression (regexp, preg, token, syntax, nest, err)
break;
case ANCHOR:
if ((token->opr.ctx_type
- & (WORD_DELIM | INSIDE_WORD | WORD_FIRST | WORD_LAST))
+ & (WORD_DELIM | NOT_WORD_DELIM | WORD_FIRST | WORD_LAST))
&& dfa->word_ops_used == 0)
init_word_char (dfa);
- if (token->opr.ctx_type == WORD_DELIM)
+ if (token->opr.ctx_type == WORD_DELIM
+ || token->opr.ctx_type == NOT_WORD_DELIM)
{
bin_tree_t *tree_first, *tree_last;
- token->opr.ctx_type = WORD_FIRST;
- tree_first = re_dfa_add_tree_node (dfa, NULL, NULL, token);
- token->opr.ctx_type = WORD_LAST;
- tree_last = re_dfa_add_tree_node (dfa, NULL, NULL, token);
- token->type = OP_ALT;
- tree = re_dfa_add_tree_node (dfa, tree_first, tree_last, token);
+ if (token->opr.ctx_type == WORD_DELIM)
+ {
+ token->opr.ctx_type = WORD_FIRST;
+ tree_first = create_token_tree (dfa, NULL, NULL, token);
+ token->opr.ctx_type = WORD_LAST;
+ }
+ else
+ {
+ token->opr.ctx_type = INSIDE_WORD;
+ tree_first = create_token_tree (dfa, NULL, NULL, token);
+ token->opr.ctx_type = INSIDE_NOTWORD;
+ }
+ tree_last = create_token_tree (dfa, NULL, NULL, token);
+ tree = create_tree (dfa, tree_first, tree_last, OP_ALT);
if (BE (tree_first == NULL || tree_last == NULL || tree == NULL, 0))
{
*err = REG_ESPACE;
@@ -2213,7 +2388,7 @@ parse_expression (regexp, preg, token, syntax, nest, err)
}
else
{
- tree = re_dfa_add_tree_node (dfa, NULL, NULL, token);
+ tree = create_token_tree (dfa, NULL, NULL, token);
if (BE (tree == NULL, 0))
{
*err = REG_ESPACE;
@@ -2227,7 +2402,7 @@ parse_expression (regexp, preg, token, syntax, nest, err)
fetch_token (token, regexp, syntax);
return tree;
case OP_PERIOD:
- tree = re_dfa_add_tree_node (dfa, NULL, NULL, token);
+ tree = create_token_tree (dfa, NULL, NULL, token);
if (BE (tree == NULL, 0))
{
*err = REG_ESPACE;
@@ -2237,22 +2412,20 @@ parse_expression (regexp, preg, token, syntax, nest, err)
dfa->has_mb_node = 1;
break;
case OP_WORD:
- tree = build_charclass_op (dfa, regexp->trans, "alnum", "_", 0, err);
- if (BE (*err != REG_NOERROR && tree == NULL, 0))
- return NULL;
- break;
case OP_NOTWORD:
- tree = build_charclass_op (dfa, regexp->trans, "alnum", "_", 1, err);
+ tree = build_charclass_op (dfa, regexp->trans,
+ (const char *) "alnum",
+ (const char *) "_",
+ token->type == OP_NOTWORD, err);
if (BE (*err != REG_NOERROR && tree == NULL, 0))
return NULL;
break;
case OP_SPACE:
- tree = build_charclass_op (dfa, regexp->trans, "space", "", 0, err);
- if (BE (*err != REG_NOERROR && tree == NULL, 0))
- return NULL;
- break;
case OP_NOTSPACE:
- tree = build_charclass_op (dfa, regexp->trans, "space", "", 1, err);
+ tree = build_charclass_op (dfa, regexp->trans,
+ (const char *) "space",
+ (const char *) "",
+ token->type == OP_NOTSPACE, err);
if (BE (*err != REG_NOERROR && tree == NULL, 0))
return NULL;
break;
@@ -2285,7 +2458,6 @@ parse_expression (regexp, preg, token, syntax, nest, err)
*err = REG_BADRPT;
return NULL;
}
- dfa->has_plural_match = 1;
}
return tree;
@@ -2308,32 +2480,10 @@ parse_sub_exp (regexp, preg, token, syntax, nest, err)
reg_errcode_t *err;
{
re_dfa_t *dfa = (re_dfa_t *) preg->buffer;
- bin_tree_t *tree, *left_par, *right_par;
+ bin_tree_t *tree;
size_t cur_nsub;
cur_nsub = preg->re_nsub++;
- if (BE (dfa->subexps_alloc < preg->re_nsub, 0))
- {
- re_subexp_t *new_array;
- dfa->subexps_alloc *= 2;
- new_array = re_realloc (dfa->subexps, re_subexp_t, dfa->subexps_alloc);
- if (BE (new_array == NULL, 0))
- {
- dfa->subexps_alloc /= 2;
- *err = REG_ESPACE;
- return NULL;
- }
- dfa->subexps = new_array;
- }
- dfa->subexps[cur_nsub].start = dfa->nodes_len;
- dfa->subexps[cur_nsub].end = -1;
- left_par = re_dfa_add_tree_node (dfa, NULL, NULL, token);
- if (BE (left_par == NULL, 0))
- {
- *err = REG_ESPACE;
- return NULL;
- }
- dfa->nodes[left_par->node_idx].opr.idx = cur_nsub;
fetch_token (token, regexp, syntax | RE_CARET_ANCHORS_HERE);
/* The subexpression may be a null string. */
@@ -2342,26 +2492,20 @@ parse_sub_exp (regexp, preg, token, syntax, nest, err)
else
{
tree = parse_reg_exp (regexp, preg, token, syntax, nest, err);
- if (BE (*err != REG_NOERROR && tree == NULL, 0))
+ if (BE (*err == REG_NOERROR && token->type != OP_CLOSE_SUBEXP, 0))
+ *err = REG_EPAREN;
+ if (BE (*err != REG_NOERROR, 0))
return NULL;
}
- if (BE (token->type != OP_CLOSE_SUBEXP, 0))
- {
- *err = REG_EPAREN;
- return NULL;
- }
- right_par = re_dfa_add_tree_node (dfa, NULL, NULL, token);
- dfa->subexps[cur_nsub].end = dfa->nodes_len;
- tree = ((tree == NULL) ? right_par
- : create_tree (dfa, tree, right_par, CONCAT, 0));
- tree = create_tree (dfa, left_par, tree, CONCAT, 0);
- if (BE (right_par == NULL || tree == NULL, 0))
+ dfa->completed_bkref_map |= 1 << cur_nsub;
+
+ tree = create_tree (dfa, tree, NULL, SUBEXP);
+ if (BE (tree == NULL, 0))
{
*err = REG_ESPACE;
return NULL;
}
- dfa->nodes[right_par->node_idx].opr.idx = cur_nsub;
-
+ tree->token.opr.idx = cur_nsub;
return tree;
}
@@ -2376,10 +2520,15 @@ parse_dup_op (elem, regexp, dfa, token, syntax, err)
reg_syntax_t syntax;
reg_errcode_t *err;
{
- re_token_t dup_token;
- bin_tree_t *tree = NULL;
+ bin_tree_t *tree = NULL, *old_tree = NULL;
int i, start, end, start_idx = re_string_cur_idx (regexp);
+#ifndef RE_TOKEN_INIT_BUG
re_token_t start_token = *token;
+#else
+ re_token_t start_token;
+
+ memcpy ((void *) &start_token, (void *) token, sizeof start_token);
+#endif
if (token->type == OP_OPEN_DUP_NUM)
{
@@ -2437,67 +2586,63 @@ parse_dup_op (elem, regexp, dfa, token, syntax, err)
end = (token->type == OP_DUP_QUESTION) ? 1 : -1;
}
- /* Treat "<re>{0}*" etc. as "<re>{0}". */
+ fetch_token (token, regexp, syntax);
+
if (BE (elem == NULL, 0))
- start = end = 0;
+ return NULL;
+ if (BE (start == 0 && end == 0, 0))
+ {
+ postorder (elem, free_tree, NULL);
+ return NULL;
+ }
/* Extract "<re>{n,m}" to "<re><re>...<re><re>{0,<m-n>}". */
- else if (BE (start > 0, 0))
+ if (BE (start > 0, 0))
{
tree = elem;
for (i = 2; i <= start; ++i)
{
elem = duplicate_tree (elem, dfa);
- tree = create_tree (dfa, tree, elem, CONCAT, 0);
+ tree = create_tree (dfa, tree, elem, CONCAT);
if (BE (elem == NULL || tree == NULL, 0))
goto parse_dup_op_espace;
}
- }
- if (BE (end != start, 1))
- {
- dup_token.type = (end == -1 ? OP_DUP_ASTERISK : OP_DUP_QUESTION);
- if (BE (start > 0, 0))
- {
- elem = duplicate_tree (elem, dfa);
- if (BE (elem == NULL, 0))
- goto parse_dup_op_espace;
+ if (start == end)
+ return tree;
+
+ /* Duplicate ELEM before it is marked optional. */
+ elem = duplicate_tree (elem, dfa);
+ old_tree = tree;
+ }
+ else
+ old_tree = NULL;
- /* This subexpression will be marked as optional, so that
- empty matches do not touch the registers. */
- mark_opt_subexp (elem, dfa);
+ if (elem->token.type == SUBEXP)
+ postorder (elem, mark_opt_subexp, (void *) (long) elem->token.opr.idx);
- /* Prepare the tree with the modifier. */
- elem = re_dfa_add_tree_node (dfa, elem, NULL, &dup_token);
- tree = create_tree (dfa, tree, elem, CONCAT, 0);
- }
- else
- {
- /* We do not need to duplicate the tree because we have not
- created it yet. */
- mark_opt_subexp (elem, dfa);
- tree = elem = re_dfa_add_tree_node (dfa, elem, NULL, &dup_token);
- }
+ tree = create_tree (dfa, elem, NULL, (end == -1 ? OP_DUP_ASTERISK : OP_ALT));
+ if (BE (tree == NULL, 0))
+ goto parse_dup_op_espace;
+ /* This loop is actually executed only when end != -1,
+ to rewrite <re>{0,n} as (<re>(<re>...<re>?)?)?... We have
+ already created the start+1-th copy. */
+ for (i = start + 2; i <= end; ++i)
+ {
+ elem = duplicate_tree (elem, dfa);
+ tree = create_tree (dfa, tree, elem, CONCAT);
if (BE (elem == NULL || tree == NULL, 0))
goto parse_dup_op_espace;
- /* This loop is actually executed only when end != -1,
- to rewrite <re>{0,n} as <re>?<re>?<re>?... We have
- already created the start+1-th copy. */
- for (i = start + 2; i <= end; ++i)
- {
- elem = duplicate_tree (elem, dfa);
- tree = create_tree (dfa, tree, elem, CONCAT, 0);
- if (BE (elem == NULL || tree == NULL, 0))
- {
- *err = REG_ESPACE;
- return NULL;
- }
- }
+ tree = create_tree (dfa, tree, NULL, OP_ALT);
+ if (BE (tree == NULL, 0))
+ goto parse_dup_op_espace;
}
- fetch_token (token, regexp, syntax);
+ if (old_tree)
+ tree = create_tree (dfa, old_tree, tree, CONCAT);
+
return tree;
parse_dup_op_espace:
@@ -2558,8 +2703,10 @@ build_range_exp (sbcset, start_elem, end_elem)
? __btowc (start_ch) : start_elem->opr.wch);
end_wc = ((end_elem->type == SB_CHAR || end_elem->type == COLL_SYM)
? __btowc (end_ch) : end_elem->opr.wch);
- cmp_buf[0] = start_wc != WEOF ? start_wc : start_ch;
- cmp_buf[4] = end_wc != WEOF ? end_wc : end_ch;
+ if (start_wc == WEOF || end_wc == WEOF)
+ return REG_ECOLLATE;
+ cmp_buf[0] = start_wc;
+ cmp_buf[4] = end_wc;
if (wcscoll (cmp_buf, cmp_buf + 4) > 0)
return REG_ERANGE;
@@ -2599,7 +2746,7 @@ build_range_exp (sbcset, start_elem, end_elem)
}
/* Build the table for single byte characters. */
- for (wc = 0; wc <= SBC_MAX; ++wc)
+ for (wc = 0; wc < SBC_MAX; ++wc)
{
cmp_buf[2] = wc;
if (wcscoll (cmp_buf, cmp_buf + 2) <= 0
@@ -2619,7 +2766,7 @@ build_range_exp (sbcset, start_elem, end_elem)
if (start_ch > end_ch)
return REG_ERANGE;
/* Build the table for single byte characters. */
- for (ch = 0; ch <= SBC_MAX; ++ch)
+ for (ch = 0; ch < SBC_MAX; ++ch)
if (start_ch <= ch && ch <= end_ch)
bitset_set (sbcset, ch);
}
@@ -2680,7 +2827,7 @@ parse_bracket_exp (regexp, dfa, token, syntax, err)
Seek the collating symbol entry correspondings to NAME.
Return the index of the symbol in the SYMB_TABLE. */
- static inline int32_t
+ auto inline int32_t
__attribute ((always_inline))
seek_collating_symbol_entry (name, name_len)
const unsigned char *name;
@@ -2713,7 +2860,7 @@ parse_bracket_exp (regexp, dfa, token, syntax, err)
Look up the collation sequence value of BR_ELEM.
Return the value if succeeded, UINT_MAX otherwise. */
- static inline unsigned int
+ auto inline unsigned int
__attribute ((always_inline))
lookup_collation_sequence_value (br_elem)
bracket_elem_t *br_elem;
@@ -2781,7 +2928,7 @@ parse_bracket_exp (regexp, dfa, token, syntax, err)
mbcset->range_ends, is a pointer argument sinse we may
update it. */
- static inline reg_errcode_t
+ auto inline reg_errcode_t
__attribute ((always_inline))
build_range_exp (sbcset, mbcset, range_alloc, start_elem, end_elem)
re_charset_t *mbcset;
@@ -2842,7 +2989,7 @@ parse_bracket_exp (regexp, dfa, token, syntax, err)
}
/* Build the table for single byte characters. */
- for (ch = 0; ch <= SBC_MAX; ch++)
+ for (ch = 0; ch < SBC_MAX; ch++)
{
uint32_t ch_collseq;
/*
@@ -2864,7 +3011,7 @@ parse_bracket_exp (regexp, dfa, token, syntax, err)
COLL_SYM_ALLOC is the allocated size of mbcset->coll_sym, is a
pointer argument sinse we may update it. */
- static inline reg_errcode_t
+ auto inline reg_errcode_t
__attribute ((always_inline))
build_collating_symbol (sbcset, mbcset, coll_sym_alloc, name)
re_charset_t *mbcset;
@@ -3122,7 +3269,7 @@ parse_bracket_exp (regexp, dfa, token, syntax, err)
#ifdef RE_ENABLE_I18N
mbcset, &char_class_alloc,
#endif /* RE_ENABLE_I18N */
- start_elem.opr.name, syntax);
+ (const char *) start_elem.opr.name, syntax);
if (BE (*err != REG_NOERROR, 0))
goto parse_bracket_exp_free_return;
break;
@@ -3150,57 +3297,59 @@ parse_bracket_exp (regexp, dfa, token, syntax, err)
/* Ensure only single byte characters are set. */
if (dfa->mb_cur_max > 1)
bitset_mask (sbcset, dfa->sb_char);
-#endif /* RE_ENABLE_I18N */
- /* Build a tree for simple bracket. */
- br_token.type = SIMPLE_BRACKET;
- br_token.opr.sbcset = sbcset;
- work_tree = re_dfa_add_tree_node (dfa, NULL, NULL, &br_token);
- if (BE (work_tree == NULL, 0))
- goto parse_bracket_exp_espace;
-
-#ifdef RE_ENABLE_I18N
if (mbcset->nmbchars || mbcset->ncoll_syms || mbcset->nequiv_classes
|| mbcset->nranges || (dfa->mb_cur_max > 1 && (mbcset->nchar_classes
|| mbcset->non_match)))
{
- re_token_t alt_token;
bin_tree_t *mbc_tree;
int sbc_idx;
/* Build a tree for complex bracket. */
dfa->has_mb_node = 1;
+ br_token.type = COMPLEX_BRACKET;
+ br_token.opr.mbcset = mbcset;
+ mbc_tree = create_token_tree (dfa, NULL, NULL, &br_token);
+ if (BE (mbc_tree == NULL, 0))
+ goto parse_bracket_exp_espace;
for (sbc_idx = 0; sbc_idx < BITSET_UINTS; ++sbc_idx)
if (sbcset[sbc_idx])
break;
/* If there are no bits set in sbcset, there is no point
of having both SIMPLE_BRACKET and COMPLEX_BRACKET. */
- if (sbc_idx == BITSET_UINTS)
+ if (sbc_idx < BITSET_UINTS)
+ {
+ /* Build a tree for simple bracket. */
+ br_token.type = SIMPLE_BRACKET;
+ br_token.opr.sbcset = sbcset;
+ work_tree = create_token_tree (dfa, NULL, NULL, &br_token);
+ if (BE (work_tree == NULL, 0))
+ goto parse_bracket_exp_espace;
+
+ /* Then join them by ALT node. */
+ work_tree = create_tree (dfa, work_tree, mbc_tree, OP_ALT);
+ if (BE (work_tree == NULL, 0))
+ goto parse_bracket_exp_espace;
+ }
+ else
{
re_free (sbcset);
- dfa->nodes[work_tree->node_idx].type = COMPLEX_BRACKET;
- dfa->nodes[work_tree->node_idx].opr.mbcset = mbcset;
- return work_tree;
+ work_tree = mbc_tree;
}
- br_token.type = COMPLEX_BRACKET;
- br_token.opr.mbcset = mbcset;
- mbc_tree = re_dfa_add_tree_node (dfa, NULL, NULL, &br_token);
- if (BE (mbc_tree == NULL, 0))
- goto parse_bracket_exp_espace;
- /* Then join them by ALT node. */
- alt_token.type = OP_ALT;
- dfa->has_plural_match = 1;
- work_tree = re_dfa_add_tree_node (dfa, work_tree, mbc_tree, &alt_token);
- if (BE (mbc_tree != NULL, 1))
- return work_tree;
}
else
+#endif /* not RE_ENABLE_I18N */
{
+#ifdef RE_ENABLE_I18N
free_charset (mbcset);
- return work_tree;
+#endif
+ /* Build a tree for simple bracket. */
+ br_token.type = SIMPLE_BRACKET;
+ br_token.opr.sbcset = sbcset;
+ work_tree = create_token_tree (dfa, NULL, NULL, &br_token);
+ if (BE (work_tree == NULL, 0))
+ goto parse_bracket_exp_espace;
}
-#else /* not RE_ENABLE_I18N */
return work_tree;
-#endif /* not RE_ENABLE_I18N */
parse_bracket_exp_espace:
*err = REG_ESPACE;
@@ -3469,8 +3618,14 @@ build_charclass (trans, sbcset, class_name, syntax)
BUILD_CHARCLASS_LOOP (isprint)
else if (strcmp (class_name, "upper") == 0)
BUILD_CHARCLASS_LOOP (isupper)
+#ifndef GAWK
else if (strcmp (class_name, "blank") == 0)
BUILD_CHARCLASS_LOOP (isblank)
+#else
+ /* see comments above */
+ else if (strcmp (class_name, "blank") == 0)
+ BUILD_CHARCLASS_LOOP (is_blank)
+#endif
else if (strcmp (class_name, "graph") == 0)
BUILD_CHARCLASS_LOOP (isgraph)
else if (strcmp (class_name, "punct") == 0)
@@ -3560,26 +3715,23 @@ build_charclass_op (dfa, trans, class_name, extra, non_match, err)
/* Build a tree for simple bracket. */
br_token.type = SIMPLE_BRACKET;
br_token.opr.sbcset = sbcset;
- tree = re_dfa_add_tree_node (dfa, NULL, NULL, &br_token);
+ tree = create_token_tree (dfa, NULL, NULL, &br_token);
if (BE (tree == NULL, 0))
goto build_word_op_espace;
#ifdef RE_ENABLE_I18N
if (dfa->mb_cur_max > 1)
{
- re_token_t alt_token;
bin_tree_t *mbc_tree;
/* Build a tree for complex bracket. */
br_token.type = COMPLEX_BRACKET;
br_token.opr.mbcset = mbcset;
dfa->has_mb_node = 1;
- mbc_tree = re_dfa_add_tree_node (dfa, NULL, NULL, &br_token);
+ mbc_tree = create_token_tree (dfa, NULL, NULL, &br_token);
if (BE (mbc_tree == NULL, 0))
goto build_word_op_espace;
/* Then join them by ALT node. */
- alt_token.type = OP_ALT;
- dfa->has_plural_match = 1;
- tree = re_dfa_add_tree_node (dfa, tree, mbc_tree, &alt_token);
+ tree = create_tree (dfa, tree, mbc_tree, OP_ALT);
if (BE (mbc_tree != NULL, 1))
return tree;
}
@@ -3650,12 +3802,23 @@ free_charset (re_charset_t *cset)
/* Create a tree node. */
static bin_tree_t *
-create_tree (dfa, left, right, type, index)
+create_tree (dfa, left, right, type)
re_dfa_t *dfa;
bin_tree_t *left;
bin_tree_t *right;
re_token_type_t type;
- int index;
+{
+ re_token_t t;
+ t.type = type;
+ return create_token_tree (dfa, left, right, &t);
+}
+
+static bin_tree_t *
+create_token_tree (dfa, left, right, token)
+ re_dfa_t *dfa;
+ bin_tree_t *left;
+ bin_tree_t *right;
+ const re_token_t *token;
{
bin_tree_t *tree;
if (BE (dfa->str_tree_storage_idx == BIN_TREE_STORAGE_SIZE, 0))
@@ -3673,11 +3836,12 @@ create_tree (dfa, left, right, type, index)
tree->parent = NULL;
tree->left = left;
tree->right = right;
- tree->type = type;
- tree->node_idx = index;
- tree->first = -1;
- tree->next = -1;
- re_node_set_init_empty (&tree->eclosure);
+ tree->token = *token;
+ tree->token.duplicated = 0;
+ tree->token.opt_subexp = 0;
+ tree->first = NULL;
+ tree->next = NULL;
+ tree->node_idx = -1;
if (left != NULL)
left->parent = tree;
@@ -3686,103 +3850,89 @@ create_tree (dfa, left, right, type, index)
return tree;
}
-/* Create both a DFA node and a tree for it. */
+/* Mark the tree SRC as an optional subexpression.
+ To be called from preorder or postorder. */
-static bin_tree_t *
-re_dfa_add_tree_node (dfa, left, right, token)
- re_dfa_t *dfa;
- bin_tree_t *left;
- bin_tree_t *right;
- const re_token_t *token;
+static reg_errcode_t
+mark_opt_subexp (extra, node)
+ void *extra;
+ bin_tree_t *node;
{
- int new_idx = re_dfa_add_node (dfa, *token, 0);
+ int idx = (int) (long) extra;
+ if (node->token.type == SUBEXP && node->token.opr.idx == idx)
+ node->token.opt_subexp = 1;
- if (new_idx == -1)
- return NULL;
-
- return create_tree (dfa, left, right, 0, new_idx);
+ return REG_NOERROR;
}
-/* Mark the tree SRC as an optional subexpression. */
+/* Free the allocated memory inside NODE. */
static void
-mark_opt_subexp (src, dfa)
- const bin_tree_t *src;
- re_dfa_t *dfa;
+free_token (re_token_t *node)
{
- /* Pass an OPT_SUBEXP_IDX which is != 1 if the duplicated tree is
- a subexpression. */
- if (src->type == CONCAT
- && src->left->type == NON_TYPE
- && dfa->nodes[src->left->node_idx].type == OP_OPEN_SUBEXP)
- mark_opt_subexp_iter (src, dfa, dfa->nodes[src->left->node_idx].opr.idx);
+#ifdef RE_ENABLE_I18N
+ if (node->type == COMPLEX_BRACKET && node->duplicated == 0)
+ free_charset (node->opr.mbcset);
+ else
+#endif /* RE_ENABLE_I18N */
+ if (node->type == SIMPLE_BRACKET && node->duplicated == 0)
+ re_free (node->opr.sbcset);
}
+/* Worker function for tree walking. Free the allocated memory inside NODE
+ and its children. */
-/* Recursive tree walker for mark_opt_subexp. */
-
-static void
-mark_opt_subexp_iter (src, dfa, idx)
- const bin_tree_t *src;
- re_dfa_t *dfa;
- int idx;
+static reg_errcode_t
+free_tree (void *extra, bin_tree_t *node)
{
- int node_idx;
-
- if (src->type == NON_TYPE)
- {
- node_idx = src->node_idx;
- if ((dfa->nodes[node_idx].type == OP_OPEN_SUBEXP
- || dfa->nodes[node_idx].type == OP_CLOSE_SUBEXP)
- && dfa->nodes[node_idx].opr.idx == idx)
- dfa->nodes[node_idx].opt_subexp = 1;
- }
-
- if (src->left != NULL)
- mark_opt_subexp_iter (src->left, dfa, idx);
-
- if (src->right != NULL)
- mark_opt_subexp_iter (src->right, dfa, idx);
+ free_token (&node->token);
+ return REG_NOERROR;
}
-/* Duplicate the node SRC, and return new node. */
+/* Duplicate the node SRC, and return new node. This is a preorder
+ visit similar to the one implemented by the generic visitor, but
+ we need more infrastructure to maintain two parallel trees --- so,
+ it's easier to duplicate. */
static bin_tree_t *
-duplicate_tree (src, dfa)
- const bin_tree_t *src;
+duplicate_tree (root, dfa)
+ const bin_tree_t *root;
re_dfa_t *dfa;
{
- bin_tree_t *left = NULL, *right = NULL, *new_tree;
- int new_node_idx;
- /* Since node indies must be according to Post-order of the tree,
- we must duplicate the left at first. */
- if (src->left != NULL)
- {
- left = duplicate_tree (src->left, dfa);
- if (left == NULL)
- return NULL;
- }
+ const bin_tree_t *node;
+ bin_tree_t *dup_root;
+ bin_tree_t **p_new = &dup_root, *dup_node = root->parent;
- /* Secondaly, duplicate the right. */
- if (src->right != NULL)
+ for (node = root; ; )
{
- right = duplicate_tree (src->right, dfa);
- if (right == NULL)
+ /* Create a new tree and link it back to the current parent. */
+ *p_new = create_token_tree (dfa, NULL, NULL, &node->token);
+ if (*p_new == NULL)
return NULL;
- }
+ (*p_new)->parent = dup_node;
+ (*p_new)->token.duplicated = 1;
+ dup_node = *p_new;
- /* At last, duplicate itself. */
- if (src->type == NON_TYPE)
- {
- new_node_idx = re_dfa_add_node (dfa, dfa->nodes[src->node_idx], 0);
- dfa->nodes[new_node_idx].duplicated = 1;
- if (BE (new_node_idx == -1, 0))
- return NULL;
+ /* Go to the left node, or up and to the right. */
+ if (node->left)
+ {
+ node = node->left;
+ p_new = &dup_node->left;
+ }
+ else
+ {
+ const bin_tree_t *prev = NULL;
+ while (node->right == prev || node->right == NULL)
+ {
+ prev = node;
+ node = node->parent;
+ dup_node = dup_node->parent;
+ if (!node)
+ return dup_root;
+ }
+ node = node->right;
+ p_new = &dup_node->right;
+ }
}
- else
- new_node_idx = src->type;
-
- new_tree = create_tree (dfa, left, right, src->type, new_node_idx);
- return new_tree;
}
diff --git a/regex.c b/regex.c
index bf63f2ec..7ea28deb 100644
--- a/regex.c
+++ b/regex.c
@@ -15,37 +15,13 @@
You should have received a copy of the GNU Lesser General Public
License along with the GNU C Library; if not, write to the Free
- Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
- 02111-1307 USA. */
+ Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+ 02110-1301 USA. */
#ifdef HAVE_CONFIG_H
#include "config.h"
#endif
-#ifdef _AIX
-#pragma alloca
-#else
-# ifndef allocax /* predefined by HP cc +Olibcalls */
-# ifdef __GNUC__
-# define alloca(size) __builtin_alloca (size)
-# else
-# if HAVE_ALLOCA_H
-# include <alloca.h>
-# else
-# ifdef __hpux
- void *alloca ();
-# else
-# if !defined __OS2__ && !defined WIN32
- char *alloca ();
-# else
-# include <malloc.h> /* OS/2 defines alloca in here */
-# endif
-# endif
-# endif
-# endif
-# endif
-#endif
-
#ifdef _LIBC
/* We have to keep the namespace clean. */
# define regfree(preg) __regfree (preg)
@@ -71,19 +47,21 @@
# include "../locale/localeinfo.h"
#endif
-#ifdef HAVE_CONFIG_H
-#include "config.h"
-#endif
-
+#ifdef HAVE_SYS_TYPES_H
/* POSIX says that <sys/types.h> must be included (by the caller) before
<regex.h>. */
#include <sys/types.h>
+#endif
#if defined (_MSC_VER)
#include <stdio.h> /* for size_t */
#endif
+/* On some systems, limits.h sets RE_DUP_MAX to a lower value than
+ GNU regex allows. Include it before <regex.h>, which correctly
+ #undefs RE_DUP_MAX and sets it to the right value. */
#include <limits.h>
+
#include <regex.h>
#include "regex_internal.h"
diff --git a/regex.h b/regex.h
index e0e76201..f05a870b 100644
--- a/regex.h
+++ b/regex.h
@@ -16,13 +16,15 @@
You should have received a copy of the GNU Lesser General Public
License along with the GNU C Library; if not, write to the Free
- Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
- 02111-1307 USA. */
+ Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+ 02110-1301 USA. */
#ifndef _REGEX_H
#define _REGEX_H 1
+#ifdef HAVE_SYS_TYPES_H
#include <sys/types.h>
+#endif
/* Allow the use in C++ code. */
#ifdef __cplusplus
@@ -179,6 +181,10 @@ typedef unsigned long int reg_syntax_t;
immediately after an alternation or begin-group operator. */
#define RE_CONTEXT_INVALID_DUP (RE_CARET_ANCHORS_HERE << 1)
+/* If this bit is set, then no_sub will be set to 1 during
+ re_compile_pattern. */
+#define RE_NO_SUB (RE_CONTEXT_INVALID_DUP << 1)
+
/* This global variable defines the particular regexp syntax to use (for
some interfaces). When a regexp is compiled, the syntax used is
stored in the pattern buffer, so changing this does not affect
@@ -298,6 +304,10 @@ extern reg_syntax_t re_syntax_options;
/* Like REG_NOTBOL, except for the end-of-line. */
#define REG_NOTEOL (1 << 1)
+/* Use PMATCH[0] to delimit the start and end of the search in the
+ buffer. */
+#define REG_STARTEND (1 << 2)
+
/* If any error codes are removed, changed, or added, update the
`re_error_msg' table in regex.c. */
@@ -313,7 +323,7 @@ typedef enum
/* POSIX regcomp return error codes. (In the order listed in the
standard.) */
REG_BADPAT, /* Invalid pattern. */
- REG_ECOLLATE, /* Not implemented. */
+ REG_ECOLLATE, /* Inalid collating element. */
REG_ECTYPE, /* Invalid character class name. */
REG_EESCAPE, /* Trailing backslash. */
REG_ESUBREG, /* Invalid back reference. */
@@ -543,8 +553,6 @@ extern int re_exec _RE_ARGS ((const char *));
# else
# define __restrict
# endif
-# elif defined __APPLE_CC__
-# define __restrict
# endif
#endif
/* gcc 3.1 and up support the [restrict] syntax. */
diff --git a/regex_internal.c b/regex_internal.c
index d970e15c..b849f7b0 100644
--- a/regex_internal.c
+++ b/regex_internal.c
@@ -15,8 +15,8 @@
You should have received a copy of the GNU Lesser General Public
License along with the GNU C Library; if not, write to the Free
- Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
- 02111-1307 USA. */
+ Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+ 02110-1301 USA. */
static void re_string_construct_common (const char *str, int len,
re_string_t *pstr,
@@ -26,9 +26,6 @@ static void re_string_construct_common (const char *str, int len,
static int re_string_skip_chars (re_string_t *pstr, int new_raw_idx,
wint_t *last_wc) internal_function;
#endif /* RE_ENABLE_I18N */
-static re_dfastate_t *create_newstate_common (re_dfa_t *dfa,
- const re_node_set *nodes,
- unsigned int hash) internal_function;
static reg_errcode_t register_state (re_dfa_t *dfa, re_dfastate_t *newstate,
unsigned int hash) internal_function;
static re_dfastate_t *create_ci_newstate (re_dfa_t *dfa,
@@ -242,7 +239,7 @@ build_wcs_buffer (pstr)
for (i = 0; i < pstr->mb_cur_max && i < remain_len; ++i)
{
ch = pstr->raw_mbs [pstr->raw_mbs_idx + byte_idx + i];
- buf[i] = pstr->trans[ch];
+ buf[i] = pstr->mbs[byte_idx + i] = pstr->trans[ch];
}
p = (const char *) buf;
}
@@ -293,9 +290,8 @@ build_wcs_upper_buffer (pstr)
byte_idx = pstr->valid_len;
end_idx = (pstr->bufs_len > pstr->len) ? pstr->len : pstr->bufs_len;
-#ifdef _LIBC
- /* The following optimization assumes that the wchar_t encoding is
- always ISO 10646. */
+ /* The following optimization assumes that ASCII characters can be
+ mapped to wide characters with a simple cast. */
if (! pstr->map_notascii && pstr->trans == NULL && !pstr->offsets_needed)
{
while (byte_idx < end_idx)
@@ -309,8 +305,7 @@ build_wcs_upper_buffer (pstr)
pstr->mbs[byte_idx]
= toupper (pstr->raw_mbs[pstr->raw_mbs_idx + byte_idx]);
/* The next step uses the assumption that wchar_t is encoded
- with ISO 10646: all ASCII values can be converted like
- this. */
+ ASCII-safe: all ASCII values can be converted like this. */
pstr->wcs[byte_idx] = (wchar_t) pstr->mbs[byte_idx];
++byte_idx;
continue;
@@ -329,7 +324,7 @@ build_wcs_upper_buffer (pstr)
int mbcdlen;
wcu = towupper (wc);
- mbcdlen = wcrtomb (buf, wcu, &prev_st);
+ mbcdlen = wcrtomb ((char *)buf, wcu, &prev_st);
if (BE (mbclen == mbcdlen, 1))
memcpy (pstr->mbs + byte_idx, buf, mbclen);
else
@@ -368,14 +363,12 @@ build_wcs_upper_buffer (pstr)
return REG_NOERROR;
}
else
-#endif
for (src_idx = pstr->valid_raw_len; byte_idx < end_idx;)
{
wchar_t wc;
const char *p;
-#ifdef _LIBC
-offsets_needed:
-#endif
+
+ offsets_needed:
remain_len = end_idx - byte_idx;
prev_st = pstr->cur_state;
if (BE (pstr->trans != NULL, 0))
@@ -400,7 +393,7 @@ offsets_needed:
int mbcdlen;
wcu = towupper (wc);
- mbcdlen = wcrtomb ((char *)buf, wcu, &prev_st);
+ mbcdlen = wcrtomb ((char *) buf, wcu, &prev_st);
if (BE (mbclen == mbcdlen, 1))
memcpy (pstr->mbs + byte_idx, buf, mbclen);
else
@@ -581,7 +574,7 @@ re_string_reconstruct (pstr, idx, eflags)
int idx, eflags;
{
int offset = idx - pstr->raw_mbs_idx;
- if (offset < 0)
+ if (BE (offset < 0, 0))
{
/* Reset buffer. */
#ifdef RE_ENABLE_I18N
@@ -601,10 +594,10 @@ re_string_reconstruct (pstr, idx, eflags)
offset = idx;
}
- if (offset != 0)
+ if (BE (offset != 0, 1))
{
/* Are the characters which are already checked remain? */
- if (offset < pstr->valid_raw_len
+ if (BE (offset < pstr->valid_raw_len, 1)
#ifdef RE_ENABLE_I18N
/* Handling this would enlarge the code too much.
Accept a slowdown in that case. */
@@ -619,7 +612,7 @@ re_string_reconstruct (pstr, idx, eflags)
memmove (pstr->wcs, pstr->wcs + offset,
(pstr->valid_len - offset) * sizeof (wint_t));
#endif /* RE_ENABLE_I18N */
- if (pstr->mbs_allocated)
+ if (BE (pstr->mbs_allocated, 0))
memmove (pstr->mbs, pstr->mbs + offset,
pstr->valid_len - offset);
pstr->valid_len -= offset;
@@ -647,7 +640,6 @@ re_string_reconstruct (pstr, idx, eflags)
int wcs_idx;
wint_t wc = WEOF;
-#ifdef _LIBC
if (pstr->is_utf8)
{
const unsigned char *raw, *p, *q, *end;
@@ -687,7 +679,7 @@ re_string_reconstruct (pstr, idx, eflags)
break;
}
}
-#endif
+
if (wc == WEOF)
pstr->valid_len = re_string_skip_chars (pstr, idx, &wc) - idx;
if (BE (pstr->valid_len, 0))
@@ -717,7 +709,7 @@ re_string_reconstruct (pstr, idx, eflags)
? CONTEXT_NEWLINE : 0));
}
}
- if (!pstr->mbs_allocated)
+ if (!BE (pstr->mbs_allocated, 0))
pstr->mbs += offset;
}
pstr->raw_mbs_idx = idx;
@@ -739,16 +731,17 @@ re_string_reconstruct (pstr, idx, eflags)
}
else
#endif /* RE_ENABLE_I18N */
+ if (BE (pstr->mbs_allocated, 0))
{
if (pstr->icase)
build_upper_buffer (pstr);
else if (pstr->trans != NULL)
re_string_translate_buffer (pstr);
- else
- pstr->valid_len = pstr->len;
}
- pstr->cur_idx = 0;
+ else
+ pstr->valid_len = pstr->len;
+ pstr->cur_idx = 0;
return REG_NOERROR;
}
@@ -846,16 +839,13 @@ re_string_context_at (input, idx, eflags)
int idx, eflags;
{
int c;
- if (idx < 0 || idx == input->len)
- {
- if (idx < 0)
- /* In this case, we use the value stored in input->tip_context,
- since we can't know the character in input->mbs[-1] here. */
- return input->tip_context;
- else /* (idx == input->len) */
- return ((eflags & REG_NOTEOL) ? CONTEXT_ENDBUF
- : CONTEXT_NEWLINE | CONTEXT_ENDBUF);
- }
+ if (BE (idx < 0, 0))
+ /* In this case, we use the value stored in input->tip_context,
+ since we can't know the character in input->mbs[-1] here. */
+ return input->tip_context;
+ if (BE (idx == input->len, 0))
+ return ((eflags & REG_NOTEOL) ? CONTEXT_ENDBUF
+ : CONTEXT_NEWLINE | CONTEXT_ENDBUF);
#ifdef RE_ENABLE_I18N
if (input->mb_cur_max > 1)
{
@@ -894,6 +884,16 @@ re_node_set_alloc (set, size)
re_node_set *set;
int size;
{
+ /*
+ * ADR: valgrind says size can be 0, which then doesn't
+ * free the block of size 0. Harumph. This seems
+ * to work ok, though.
+ */
+ if (size == 0)
+ {
+ memset(set, 0, sizeof(*set));
+ return REG_NOERROR;
+ }
set->alloc = size;
set->nelem = 0;
set->elems = re_malloc (int, size);
@@ -1258,6 +1258,31 @@ re_node_set_insert (set, elem)
return 1;
}
+/* Insert the new element ELEM to the re_node_set* SET.
+ SET should not already have any element greater than or equal to ELEM.
+ Return -1 if an error is occured, return 1 otherwise. */
+
+static int
+re_node_set_insert_last (set, elem)
+ re_node_set *set;
+ int elem;
+{
+ /* Realloc if we need. */
+ if (set->alloc == set->nelem)
+ {
+ int *new_array;
+ set->alloc = (set->alloc + 1) * 2;
+ new_array = re_realloc (set->elems, int, set->alloc);
+ if (BE (new_array == NULL, 0))
+ return -1;
+ set->elems = new_array;
+ }
+
+ /* Insert the new element. */
+ set->elems[set->nelem++] = elem;
+ return 1;
+}
+
/* Compare two node sets SET1 and SET2.
return 1 if SET1 and SET2 are equivalent, return 0 otherwise. */
@@ -1281,7 +1306,7 @@ re_node_set_contains (set, elem)
const re_node_set *set;
int elem;
{
- int idx, right, mid;
+ unsigned int idx, right, mid;
if (set->nelem <= 0)
return 0;
@@ -1316,47 +1341,43 @@ re_node_set_remove_at (set, idx)
Or return -1, if an error will be occured. */
static int
-re_dfa_add_node (dfa, token, mode)
+re_dfa_add_node (dfa, token)
re_dfa_t *dfa;
re_token_t token;
- int mode;
{
if (BE (dfa->nodes_len >= dfa->nodes_alloc, 0))
{
int new_nodes_alloc = dfa->nodes_alloc * 2;
+ int *new_nexts, *new_indices;
+ re_node_set *new_edests, *new_eclosures;
+
re_token_t *new_array = re_realloc (dfa->nodes, re_token_t,
new_nodes_alloc);
if (BE (new_array == NULL, 0))
return -1;
dfa->nodes = new_array;
- if (mode)
- {
- int *new_nexts, *new_indices;
- re_node_set *new_edests, *new_eclosures, *new_inveclosures;
-
- new_nexts = re_realloc (dfa->nexts, int, new_nodes_alloc);
- new_indices = re_realloc (dfa->org_indices, int, new_nodes_alloc);
- new_edests = re_realloc (dfa->edests, re_node_set, new_nodes_alloc);
- new_eclosures = re_realloc (dfa->eclosures, re_node_set,
- new_nodes_alloc);
- new_inveclosures = re_realloc (dfa->inveclosures, re_node_set,
- new_nodes_alloc);
- if (BE (new_nexts == NULL || new_indices == NULL
- || new_edests == NULL || new_eclosures == NULL
- || new_inveclosures == NULL, 0))
- return -1;
- dfa->nexts = new_nexts;
- dfa->org_indices = new_indices;
- dfa->edests = new_edests;
- dfa->eclosures = new_eclosures;
- dfa->inveclosures = new_inveclosures;
- }
+ new_nexts = re_realloc (dfa->nexts, int, new_nodes_alloc);
+ new_indices = re_realloc (dfa->org_indices, int, new_nodes_alloc);
+ new_edests = re_realloc (dfa->edests, re_node_set, new_nodes_alloc);
+ new_eclosures = re_realloc (dfa->eclosures, re_node_set, new_nodes_alloc);
+ if (BE (new_nexts == NULL || new_indices == NULL
+ || new_edests == NULL || new_eclosures == NULL, 0))
+ return -1;
+ dfa->nexts = new_nexts;
+ dfa->org_indices = new_indices;
+ dfa->edests = new_edests;
+ dfa->eclosures = new_eclosures;
dfa->nodes_alloc = new_nodes_alloc;
}
dfa->nodes[dfa->nodes_len] = token;
- dfa->nodes[dfa->nodes_len].opt_subexp = 0;
- dfa->nodes[dfa->nodes_len].duplicated = 0;
dfa->nodes[dfa->nodes_len].constraint = 0;
+#ifdef RE_ENABLE_I18N
+ dfa->nodes[dfa->nodes_len].accept_mb =
+ (token.type == OP_PERIOD && dfa->mb_cur_max > 1) || token.type == COMPLEX_BRACKET;
+#endif
+ dfa->nexts[dfa->nodes_len] = -1;
+ re_node_set_init_empty (dfa->edests + dfa->nodes_len);
+ re_node_set_init_empty (dfa->eclosures + dfa->nodes_len);
return dfa->nodes_len++;
}
@@ -1467,43 +1488,32 @@ re_acquire_state_context (err, dfa, nodes, context)
}
}
-/* Allocate memory for DFA state and initialize common properties.
- Return the new state if succeeded, otherwise return NULL. */
+/* Finish initialization of the new state NEWSTATE, and using its hash value
+ HASH put in the appropriate bucket of DFA's state table. Return value
+ indicates the error code if failed. */
-static re_dfastate_t *
-create_newstate_common (dfa, nodes, hash)
+static reg_errcode_t
+register_state (dfa, newstate, hash)
re_dfa_t *dfa;
- const re_node_set *nodes;
+ re_dfastate_t *newstate;
unsigned int hash;
{
- re_dfastate_t *newstate;
+ struct re_state_table_entry *spot;
reg_errcode_t err;
- newstate = (re_dfastate_t *) calloc (sizeof (re_dfastate_t), 1);
- if (BE (newstate == NULL, 0))
- return NULL;
- err = re_node_set_init_copy (&newstate->nodes, nodes);
+ int i;
+
+ newstate->hash = hash;
+ err = re_node_set_alloc (&newstate->non_eps_nodes, newstate->nodes.nelem);
if (BE (err != REG_NOERROR, 0))
+ return REG_ESPACE;
+ for (i = 0; i < newstate->nodes.nelem; i++)
{
- re_free (newstate);
- return NULL;
+ int elem = newstate->nodes.elems[i];
+ if (!IS_EPSILON_NODE (dfa->nodes[elem].type))
+ re_node_set_insert_last (&newstate->non_eps_nodes, elem);
}
- newstate->trtable = NULL;
- newstate->hash = hash;
- return newstate;
-}
-
-/* Store the new state NEWSTATE whose hash value is HASH in appropriate
- position. Return value indicate the error code if failed. */
-static reg_errcode_t
-register_state (dfa, newstate, hash)
- re_dfa_t *dfa;
- re_dfastate_t *newstate;
- unsigned int hash;
-{
- struct re_state_table_entry *spot;
spot = dfa->state_table + (hash & dfa->state_hash_mask);
-
if (BE (spot->alloc <= spot->num, 0))
{
int new_alloc = 2 * spot->num + 2;
@@ -1530,27 +1540,31 @@ create_ci_newstate (dfa, nodes, hash)
int i;
reg_errcode_t err;
re_dfastate_t *newstate;
- newstate = create_newstate_common (dfa, nodes, hash);
+
+ newstate = (re_dfastate_t *) calloc (sizeof (re_dfastate_t), 1);
if (BE (newstate == NULL, 0))
return NULL;
- newstate->entrance_nodes = &newstate->nodes;
+ err = re_node_set_init_copy (&newstate->nodes, nodes);
+ if (BE (err != REG_NOERROR, 0))
+ {
+ re_free (newstate);
+ return NULL;
+ }
+ newstate->entrance_nodes = &newstate->nodes;
for (i = 0 ; i < nodes->nelem ; i++)
{
re_token_t *node = dfa->nodes + nodes->elems[i];
re_token_type_t type = node->type;
if (type == CHARACTER && !node->constraint)
continue;
+#ifdef RE_ENABLE_I18N
+ newstate->accept_mb |= node->accept_mb;
+#endif /* RE_ENABLE_I18N */
/* If the state has the halt node, the state is a halt state. */
- else if (type == END_OF_RE)
+ if (type == END_OF_RE)
newstate->halt = 1;
-#ifdef RE_ENABLE_I18N
- else if (type == COMPLEX_BRACKET
- || type == OP_UTF8_PERIOD
- || (type == OP_PERIOD && dfa->mb_cur_max > 1))
- newstate->accept_mb = 1;
-#endif /* RE_ENABLE_I18N */
else if (type == OP_BACK_REF)
newstate->has_backref = 1;
else if (type == ANCHOR || node->constraint)
@@ -1578,9 +1592,16 @@ create_cd_newstate (dfa, nodes, context, hash)
reg_errcode_t err;
re_dfastate_t *newstate;
- newstate = create_newstate_common (dfa, nodes, hash);
+ newstate = (re_dfastate_t *) calloc (sizeof (re_dfastate_t), 1);
if (BE (newstate == NULL, 0))
return NULL;
+ err = re_node_set_init_copy (&newstate->nodes, nodes);
+ if (BE (err != REG_NOERROR, 0))
+ {
+ re_free (newstate);
+ return NULL;
+ }
+
newstate->context = context;
newstate->entrance_nodes = &newstate->nodes;
@@ -1594,15 +1615,13 @@ create_cd_newstate (dfa, nodes, context, hash)
if (type == CHARACTER && !constraint)
continue;
- /* If the state has the halt node, the state is a halt state. */
- else if (type == END_OF_RE)
- newstate->halt = 1;
#ifdef RE_ENABLE_I18N
- else if (type == COMPLEX_BRACKET
- || type == OP_UTF8_PERIOD
- || (type == OP_PERIOD && dfa->mb_cur_max > 1))
- newstate->accept_mb = 1;
+ newstate->accept_mb |= node->accept_mb;
#endif /* RE_ENABLE_I18N */
+
+ /* If the state has the halt node, the state is a halt state. */
+ if (type == END_OF_RE)
+ newstate->halt = 1;
else if (type == OP_BACK_REF)
newstate->has_backref = 1;
else if (type == ANCHOR)
@@ -1643,12 +1662,15 @@ static void
free_state (state)
re_dfastate_t *state;
{
+ re_node_set_free (&state->non_eps_nodes);
+ re_node_set_free (&state->inveclosure);
if (state->entrance_nodes != &state->nodes)
{
re_node_set_free (state->entrance_nodes);
re_free (state->entrance_nodes);
}
re_node_set_free (&state->nodes);
+ re_free (state->word_trtable);
re_free (state->trtable);
re_free (state);
}
diff --git a/regex_internal.h b/regex_internal.h
index 6bc09b36..2e7b451c 100644
--- a/regex_internal.h
+++ b/regex_internal.h
@@ -1,5 +1,5 @@
/* Extended regular expression matching and search library.
- Copyright (C) 2002, 2003, 2004 Free Software Foundation, Inc.
+ Copyright (C) 2002, 2003, 2004, 2005 Free Software Foundation, Inc.
This file is part of the GNU C Library.
Contributed by Isamu Hasegawa <isamu@yamato.ibm.com>.
@@ -15,26 +15,21 @@
You should have received a copy of the GNU Lesser General Public
License along with the GNU C Library; if not, write to the Free
- Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
- 02111-1307 USA. */
+ Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+ 02110-1301 USA. */
#ifndef _REGEX_INTERNAL_H
#define _REGEX_INTERNAL_H 1
#include <assert.h>
#include <ctype.h>
-#if 0
-/* Don't include this here. On some systems it sets RE_DUP_MAX to a
- * lower value than GNU regex allows. Instead, include it in
- * regex.c, before include of <regex.h>, which correctly
- * #undefs RE_DUP_MAX and sets it to the right value.
- */
-#include <limits.h>
-#endif
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
+#if defined HAVE_LANGINFO_H || defined HAVE_LANGINFO_CODESET || defined _LIBC
+# include <langinfo.h>
+#endif
#if defined HAVE_LOCALE_H || defined _LIBC
# include <locale.h>
#endif
@@ -45,10 +40,25 @@
# include <wctype.h>
#endif /* HAVE_WCTYPE_H || _LIBC */
+#ifndef GAWK
/* In case that the system doesn't have isblank(). */
#if !defined _LIBC && !defined HAVE_ISBLANK && !defined isblank
# define isblank(ch) ((ch) == ' ' || (ch) == '\t')
#endif
+#else /* GAWK */
+/*
+ * This is a freaking mess. On glibc systems you have to define
+ * a magic constant to get isblank() out of <ctype.h>, since it's
+ * a C99 function. To heck wiht all that and borrow a page from
+ * dfa.c's book.
+ */
+
+static int
+is_blank (int c)
+{
+ return (c == ' ' || c == '\t');
+}
+#endif /* GAWK */
#ifdef _LIBC
# ifndef _RE_DEFINE_LOCALE_FUNCTIONS
@@ -77,7 +87,12 @@
# define gettext_noop(String) String
#endif
+#ifndef NO_MBSUPPORT
#include "mbsupport.h" /* gawk */
+#endif
+#ifndef MB_CUR_MAX
+#define MB_CUR_MAX 1
+#endif
#if (defined MBS_SUPPORT) || _LIBC
# define RE_ENABLE_I18N
@@ -108,6 +123,7 @@
# define __btowc btowc
# define __mempcpy mempcpy
# define __wcrtomb wcrtomb
+# define __regfree regfree
# define attribute_hidden
#endif /* not _LIBC */
@@ -117,14 +133,20 @@
# define __attribute(arg)
#endif
-#if _LIBC || __GNUC__ >= 3
-# define BE(expr, val) __builtin_expect (expr, val)
-#else
-# define BE(expr, val) (expr)
-# define inline
+/* Error messages (regcomp.c), with hackery to support very old compilers. */
+#ifdef NO_TOKEN_PASTING
+#define RE_ERRMSG(idx) __re_error_msgid[(int) (idx)]
+#define ERRMSG_TYPE char * const /* pointers */
+#define ERRMSG_OFFSET(base,offset) ((base)+1) /* array index */
+#define ERRMSG_SEPARATOR ,
+#else
+#define RE_ERRMSG(idx) (__re_error_msgid + __re_error_msgid_idx[(int) (idx)])
+#define ERRMSG_TYPE char /* one string */
+#define ERRMSG_OFFSET(base,offset) ((base)+(offset)) /* substring index */
+#define ERRMSG_SEPARATOR "\0"
#endif
-extern const char __re_error_msgid[] attribute_hidden;
+extern const ERRMSG_TYPE __re_error_msgid[] attribute_hidden;
extern const size_t __re_error_msgid_idx[] attribute_hidden;
/* Number of bits in an unsinged int. */
@@ -156,18 +178,21 @@ static inline void bitset_mask (bitset dest, const bitset src);
#define NEXT_NEWLINE_CONSTRAINT 0x0020
#define PREV_BEGBUF_CONSTRAINT 0x0040
#define NEXT_ENDBUF_CONSTRAINT 0x0080
-#define DUMMY_CONSTRAINT 0x0100
+#define WORD_DELIM_CONSTRAINT 0x0100
+#define NOT_WORD_DELIM_CONSTRAINT 0x0200
typedef enum
{
INSIDE_WORD = PREV_WORD_CONSTRAINT | NEXT_WORD_CONSTRAINT,
WORD_FIRST = PREV_NOTWORD_CONSTRAINT | NEXT_WORD_CONSTRAINT,
WORD_LAST = PREV_WORD_CONSTRAINT | NEXT_NOTWORD_CONSTRAINT,
+ INSIDE_NOTWORD = PREV_NOTWORD_CONSTRAINT | NEXT_NOTWORD_CONSTRAINT,
LINE_FIRST = PREV_NEWLINE_CONSTRAINT,
LINE_LAST = NEXT_NEWLINE_CONSTRAINT,
BUF_FIRST = PREV_BEGBUF_CONSTRAINT,
BUF_LAST = NEXT_ENDBUF_CONSTRAINT,
- WORD_DELIM = DUMMY_CONSTRAINT
+ WORD_DELIM = WORD_DELIM_CONSTRAINT,
+ NOT_WORD_DELIM = NOT_WORD_DELIM_CONSTRAINT
} re_context_type;
typedef struct
@@ -199,15 +224,16 @@ typedef enum
OP_CLOSE_SUBEXP = EPSILON_BIT | 1,
OP_ALT = EPSILON_BIT | 2,
OP_DUP_ASTERISK = EPSILON_BIT | 3,
- OP_DUP_PLUS = EPSILON_BIT | 4,
- OP_DUP_QUESTION = EPSILON_BIT | 5,
- ANCHOR = EPSILON_BIT | 6,
+ ANCHOR = EPSILON_BIT | 4,
/* Tree type, these are used only by tree. */
CONCAT = 16,
+ SUBEXP = 17,
/* Token type, these are used only by token. */
- OP_OPEN_BRACKET = 17,
+ OP_DUP_PLUS = 18,
+ OP_DUP_QUESTION,
+ OP_OPEN_BRACKET,
OP_CLOSE_BRACKET,
OP_CHARSET_RANGE,
OP_OPEN_DUP_NUM,
@@ -296,6 +322,7 @@ typedef struct
unsigned int duplicated : 1;
unsigned int opt_subexp : 1;
#ifdef RE_ENABLE_I18N
+ unsigned int accept_mb : 1;
/* These 2 bits can be moved into the union if needed (e.g. if running out
of bits; move opr.c to opr.c.c and move the flags to opr.c.flags). */
unsigned int mb_partial : 1;
@@ -304,8 +331,6 @@ typedef struct
} re_token_t;
#define IS_EPSILON_NODE(type) ((type) & EPSILON_BIT)
-#define ACCEPT_MB_NODE(type) \
- ((type) >= OP_PERIOD && (type) <= OP_UTF8_PERIOD)
struct re_string_t
{
@@ -400,18 +425,20 @@ static void re_string_translate_buffer (re_string_t *pstr) internal_function;
static void re_string_destruct (re_string_t *pstr) internal_function;
# ifdef RE_ENABLE_I18N
static int re_string_elem_size_at (const re_string_t *pstr, int idx)
- internal_function;
+ internal_function __attribute ((pure));
static inline int re_string_char_size_at (const re_string_t *pstr, int idx)
- internal_function;
+ internal_function __attribute ((pure));
static inline wint_t re_string_wchar_at (const re_string_t *pstr, int idx)
- internal_function;
+ internal_function __attribute ((pure));
# endif /* RE_ENABLE_I18N */
static unsigned int re_string_context_at (const re_string_t *input, int idx,
- int eflags) internal_function;
+ int eflags)
+ internal_function __attribute ((pure));
static unsigned char re_string_peek_byte_case (const re_string_t *pstr,
- int idx) internal_function;
+ int idx)
+ internal_function __attribute ((pure));
static unsigned char re_string_fetch_byte_case (re_string_t *pstr)
- internal_function;
+ internal_function __attribute ((pure));
#endif
#define re_string_peek_byte(pstr, offset) \
((pstr)->mbs[(pstr)->cur_idx + offset])
@@ -433,7 +460,6 @@ static unsigned char re_string_fetch_byte_case (re_string_t *pstr)
#define re_malloc(t,n) ((t *) malloc ((n) * sizeof (t)))
/* SunOS 4.1.x realloc doesn't accept null pointers: pre-Standard C. Sigh. */
#define re_realloc(p,t,n) ((p != NULL) ? (t *) realloc (p,(n)*sizeof(t)) : (t *) calloc(n,sizeof(t)))
-
#define re_free(p) free (p)
struct bin_tree_t
@@ -441,15 +467,14 @@ struct bin_tree_t
struct bin_tree_t *parent;
struct bin_tree_t *left;
struct bin_tree_t *right;
+ struct bin_tree_t *first;
+ struct bin_tree_t *next;
+
+ re_token_t token;
/* `node_idx' is the index in dfa->nodes, if `type' == 0.
Otherwise `type' indicate the type of this node. */
- re_token_type_t type;
int node_idx;
-
- int first;
- int next;
- re_node_set eclosure;
};
typedef struct bin_tree_t bin_tree_t;
@@ -495,8 +520,10 @@ struct re_dfastate_t
{
unsigned int hash;
re_node_set nodes;
+ re_node_set non_eps_nodes;
+ re_node_set inveclosure;
re_node_set *entrance_nodes;
- struct re_dfastate_t **trtable;
+ struct re_dfastate_t **trtable, **word_trtable;
unsigned int context : 4;
unsigned int halt : 1;
/* If this state can accept `multi byte'.
@@ -506,17 +533,9 @@ struct re_dfastate_t
/* If this state has backreference node(s). */
unsigned int has_backref : 1;
unsigned int has_constraint : 1;
- unsigned int word_trtable : 1;
};
typedef struct re_dfastate_t re_dfastate_t;
-typedef struct
-{
- /* start <= node < end */
- int start;
- int end;
-} re_subexp_t;
-
struct re_state_table_entry
{
int num;
@@ -563,7 +582,9 @@ struct re_backref_cache_entry
int str_idx;
int subexp_from;
int subexp_to;
- int flag;
+ char more;
+ char unused;
+ unsigned short int eps_reachable_subexps_map;
};
typedef struct
@@ -595,17 +616,11 @@ typedef struct
typedef struct
{
- int cur_bkref;
- int cls_subexp_idx;
-
re_dfastate_t **sifted_states;
re_dfastate_t **limited_states;
-
- re_node_set limits;
-
int last_node;
int last_str_idx;
- int check_subexp;
+ re_node_set limits;
} re_sift_context_t;
struct re_fail_stack_ent_t
@@ -625,7 +640,6 @@ struct re_fail_stack_t
struct re_dfa_t
{
- re_subexp_t *subexps;
re_token_t *nodes;
int nodes_alloc;
int nodes_len;
@@ -645,13 +659,15 @@ struct re_dfa_t
int str_tree_storage_idx;
/* number of subexpressions `re_nsub' is in regex_t. */
- int subexps_alloc;
unsigned int state_hash_mask;
int states_alloc;
int init_node;
int nbackref; /* The number of backreference in this dfa. */
+
/* Bitmap expressing which backreference is used. */
unsigned int used_bkref_map;
+ unsigned int completed_bkref_map;
+
unsigned int has_plural_match : 1;
/* If this dfa has "multibyte node", which is a backreference or
a node which can accept multibyte character or multi character
@@ -663,6 +679,7 @@ struct re_dfa_t
int mb_cur_max;
bitset word_char;
reg_syntax_t syntax;
+ int *subexp_map;
#ifdef DEBUG
char* re_str;
#endif
@@ -685,15 +702,19 @@ static reg_errcode_t re_node_set_init_union (re_node_set *dest,
static reg_errcode_t re_node_set_merge (re_node_set *dest,
const re_node_set *src) internal_function;
static int re_node_set_insert (re_node_set *set, int elem) internal_function;
+static int re_node_set_insert_last (re_node_set *set,
+ int elem) internal_function;
static int re_node_set_compare (const re_node_set *set1,
- const re_node_set *set2) internal_function;
-static int re_node_set_contains (const re_node_set *set, int elem) internal_function;
+ const re_node_set *set2)
+ internal_function __attribute ((pure));
+static int re_node_set_contains (const re_node_set *set, int elem)
+ internal_function __attribute ((pure));
static void re_node_set_remove_at (re_node_set *set, int idx) internal_function;
#define re_node_set_remove(set,id) \
(re_node_set_remove_at (set, re_node_set_contains (set, id) - 1))
#define re_node_set_empty(p) ((p)->nelem = 0)
#define re_node_set_free(set) re_free ((set)->elems)
-static int re_dfa_add_node (re_dfa_t *dfa, re_token_t token, int mode) internal_function;
+static int re_dfa_add_node (re_dfa_t *dfa, re_token_t token) internal_function;
static re_dfastate_t *re_acquire_state (reg_errcode_t *err, re_dfa_t *dfa,
const re_node_set *nodes) internal_function;
static re_dfastate_t *re_acquire_state_context (reg_errcode_t *err,
diff --git a/regexec.c b/regexec.c
index 8a4f57c7..560cc4c2 100644
--- a/regexec.c
+++ b/regexec.c
@@ -15,21 +15,18 @@
You should have received a copy of the GNU Lesser General Public
License along with the GNU C Library; if not, write to the Free
- Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
- 02111-1307 USA. */
+ Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+ 02110-1301 USA. */
static reg_errcode_t match_ctx_init (re_match_context_t *cache, int eflags,
int n) internal_function;
static void match_ctx_clean (re_match_context_t *mctx) internal_function;
static void match_ctx_free (re_match_context_t *cache) internal_function;
-static void match_ctx_free_subtops (re_match_context_t *mctx)
- internal_function;
static reg_errcode_t match_ctx_add_entry (re_match_context_t *cache, int node,
int str_idx, int from, int to)
internal_function;
static int search_cur_bkref_entry (re_match_context_t *mctx, int str_idx)
internal_function;
-static void match_ctx_clear_flag (re_match_context_t *mctx) internal_function;
static reg_errcode_t match_ctx_add_subtop (re_match_context_t *mctx, int node,
int str_idx) internal_function;
static re_sub_match_last_t * match_ctx_add_sublast (re_sub_match_top_t *subtop,
@@ -37,7 +34,7 @@ static re_sub_match_last_t * match_ctx_add_sublast (re_sub_match_top_t *subtop,
internal_function;
static void sift_ctx_init (re_sift_context_t *sctx, re_dfastate_t **sifted_sts,
re_dfastate_t **limited_sts, int last_node,
- int last_str_idx, int check_subexp)
+ int last_str_idx)
internal_function;
static reg_errcode_t re_search_internal (const regex_t *preg,
const char *string, int length,
@@ -76,7 +73,7 @@ static int proceed_next_node (const re_match_context_t *mctx,
int *pidx, int node, re_node_set *eps_via_nodes,
struct re_fail_stack_t *fs) internal_function;
static reg_errcode_t push_fail_stack (struct re_fail_stack_t *fs,
- int str_idx, int *dests, int nregs,
+ int str_idx, int dest_node, int nregs,
regmatch_t *regs,
re_node_set *eps_via_nodes) internal_function;
static int pop_fail_stack (struct re_fail_stack_t *fs, int *pidx, int nregs,
@@ -94,6 +91,9 @@ static int sift_states_iter_mb (const re_match_context_t *mctx,
#endif /* RE_ENABLE_I18N */
static reg_errcode_t sift_states_backward (re_match_context_t *mctx,
re_sift_context_t *sctx) internal_function;
+static reg_errcode_t build_sifted_states (re_match_context_t *mctx,
+ re_sift_context_t *sctx, int str_idx,
+ re_node_set *cur_dest) internal_function;
static reg_errcode_t update_cur_sifted_state (re_match_context_t *mctx,
re_sift_context_t *sctx,
int str_idx,
@@ -107,9 +107,13 @@ static reg_errcode_t sub_epsilon_src_nodes (re_dfa_t *dfa, int node,
static int check_dst_limits (re_match_context_t *mctx, re_node_set *limits,
int dst_node, int dst_idx, int src_node,
int src_idx) internal_function;
+static int check_dst_limits_calc_pos_1 (re_match_context_t *mctx,
+ int boundaries, int subexp_idx,
+ int from_node, int bkref_idx) internal_function;
static int check_dst_limits_calc_pos (re_match_context_t *mctx,
- int limit, re_node_set *eclosures,
- int subexp_idx, int node, int str_idx) internal_function;
+ int limit, int subexp_idx,
+ int node, int str_idx,
+ int bkref_idx) internal_function;
static reg_errcode_t check_subexp_limits (re_dfa_t *dfa,
re_node_set *dest_nodes,
const re_node_set *candidates,
@@ -118,14 +122,19 @@ static reg_errcode_t check_subexp_limits (re_dfa_t *dfa,
int str_idx) internal_function;
static reg_errcode_t sift_states_bkref (re_match_context_t *mctx,
re_sift_context_t *sctx,
- int str_idx, re_node_set *dest_nodes) internal_function;
+ int str_idx, const re_node_set *candidates) internal_function;
static reg_errcode_t clean_state_log_if_needed (re_match_context_t *mctx,
int next_state_log_idx) internal_function;
static reg_errcode_t merge_state_array (re_dfa_t *dfa, re_dfastate_t **dst,
re_dfastate_t **src, int num) internal_function;
+static re_dfastate_t *find_recover_state (reg_errcode_t *err,
+ re_match_context_t *mctx) internal_function;
static re_dfastate_t *transit_state (reg_errcode_t *err,
re_match_context_t *mctx,
re_dfastate_t *state) internal_function;
+static re_dfastate_t *merge_state_with_log (reg_errcode_t *err,
+ re_match_context_t *mctx,
+ re_dfastate_t *next_state) internal_function;
static reg_errcode_t check_subexp_matching_top (re_match_context_t *mctx,
re_node_set *cur_nodes,
int str_idx) internal_function;
@@ -165,10 +174,9 @@ static reg_errcode_t check_arrival_expand_ecl_sub (re_dfa_t *dfa,
int type) internal_function;
static reg_errcode_t expand_bkref_cache (re_match_context_t *mctx,
re_node_set *cur_nodes, int cur_str,
- int last_str, int subexp_num,
- int type) internal_function;
-static re_dfastate_t **build_trtable (re_dfa_t *dfa,
- re_dfastate_t *state) internal_function;
+ int subexp_num, int type) internal_function;
+static int build_trtable (re_dfa_t *dfa,
+ re_dfastate_t *state) internal_function;
#ifdef RE_ENABLE_I18N
static int check_node_accept_bytes (re_dfa_t *dfa, int node_idx,
const re_string_t *input, int idx) internal_function;
@@ -210,17 +218,48 @@ regexec (preg, string, nmatch, pmatch, eflags)
int eflags;
{
reg_errcode_t err;
- int length = strlen (string);
+ int start, length;
+
+ if (eflags & ~(REG_NOTBOL | REG_NOTEOL | REG_STARTEND))
+ return REG_BADPAT;
+
+ if (eflags & REG_STARTEND)
+ {
+ start = pmatch[0].rm_so;
+ length = pmatch[0].rm_eo;
+ }
+ else
+ {
+ start = 0;
+ length = strlen (string);
+ }
if (preg->no_sub)
- err = re_search_internal (preg, string, length, 0, length, length, 0,
- NULL, eflags);
+ err = re_search_internal (preg, string, length, start, length - start,
+ length, 0, NULL, eflags);
else
- err = re_search_internal (preg, string, length, 0, length, length, nmatch,
- pmatch, eflags);
+ err = re_search_internal (preg, string, length, start, length - start,
+ length, nmatch, pmatch, eflags);
return err != REG_NOERROR;
}
+
#ifdef _LIBC
-weak_alias (__regexec, regexec)
+# include <shlib-compat.h>
+versioned_symbol (libc, __regexec, regexec, GLIBC_2_3_4);
+
+# if SHLIB_COMPAT (libc, GLIBC_2_0, GLIBC_2_3_4)
+__typeof__ (__regexec) __compat_regexec;
+
+int
+attribute_compat_text_section
+__compat_regexec (const regex_t *__restrict preg,
+ const char *__restrict string, size_t nmatch,
+ regmatch_t pmatch[], int eflags)
+{
+ return regexec (preg, string, nmatch, pmatch,
+ eflags & (REG_NOTBOL | REG_NOTEOL));
+}
+compat_symbol (libc, __compat_regexec, regexec, GLIBC_2_0);
+# endif
#endif
/* Entry points for GNU code. */
@@ -542,8 +581,6 @@ re_exec (s)
}
#endif /* _REGEX_RE_COMP */
-static re_node_set empty_set;
-
/* Internal entry point. */
/* Searches for a compiled pattern PREG in the string STRING, whose
@@ -567,21 +604,26 @@ re_search_internal (preg, string, length, start, range, stop, nmatch, pmatch,
reg_errcode_t err;
re_dfa_t *dfa = (re_dfa_t *)preg->buffer;
int left_lim, right_lim, incr;
- int fl_longest_match, match_first, match_last = -1;
- int fast_translate, sb;
+ int fl_longest_match, match_first, match_kind, match_last = -1;
+ int extra_nmatch;
+ int sb, ch;
#if defined _LIBC || (defined __STDC_VERSION__ && __STDC_VERSION__ >= 199901L)
re_match_context_t mctx = { .dfa = dfa };
#else
re_match_context_t mctx;
#endif
- char *fastmap = ((preg->fastmap != NULL && preg->fastmap_accurate
- && range && !preg->can_be_null) ? preg->fastmap : NULL);
+ char *fastmap = (preg->fastmap != NULL && preg->fastmap_accurate
+ && range && !preg->can_be_null) ? preg->fastmap : NULL;
+ unsigned RE_TRANSLATE_TYPE t = (unsigned RE_TRANSLATE_TYPE) preg->translate;
#if !(defined _LIBC || (defined __STDC_VERSION__ && __STDC_VERSION__ >= 199901L))
memset (&mctx, '\0', sizeof (re_match_context_t));
mctx.dfa = dfa;
#endif
+ extra_nmatch = (nmatch > preg->re_nsub) ? nmatch - (preg->re_nsub + 1) : 0;
+ nmatch -= extra_nmatch;
+
/* Check if the DFA haven't been compiled. */
if (BE (preg->used == 0 || dfa->init_state == NULL
|| dfa->init_state_word == NULL || dfa->init_state_nl == NULL
@@ -606,8 +648,6 @@ re_search_internal (preg, string, length, start, range, stop, nmatch, pmatch,
start = range = 0;
}
- re_node_set_init_empty (&empty_set);
-
/* We must check the longest matching, if nmatch > 0. */
fl_longest_match = (nmatch != 0 || dfa->nbackref);
@@ -648,88 +688,100 @@ re_search_internal (preg, string, length, start, range, stop, nmatch, pmatch,
left_lim = (range < 0) ? start + range : start;
right_lim = (range < 0) ? start : start + range;
sb = dfa->mb_cur_max == 1;
- fast_translate = sb || !(preg->syntax & RE_ICASE || preg->translate);
-
- for (;;)
+ match_kind =
+ (fastmap
+ ? ((sb || !(preg->syntax & RE_ICASE || t) ? 4 : 0)
+ | (range >= 0 ? 2 : 0)
+ | (t != NULL ? 1 : 0))
+ : 8);
+
+ for (;; match_first += incr)
{
- /* At first get the current byte from input string. */
- if (fastmap)
+ err = REG_NOMATCH;
+ if (match_first < left_lim || right_lim < match_first)
+ goto free_return;
+
+ /* Advance as rapidly as possible through the string, until we
+ find a plausible place to start matching. This may be done
+ with varying efficiency, so there are various possibilities:
+ only the most common of them are specialized, in order to
+ save on code size. We use a switch statement for speed. */
+ switch (match_kind)
{
- if (BE (fast_translate, 1))
+ case 8:
+ /* No fastmap. */
+ break;
+
+ case 7:
+ /* Fastmap with single-byte translation, match forward. */
+ while (BE (match_first < right_lim, 1)
+ && !fastmap[t[(unsigned char) string[match_first]]])
+ ++match_first;
+ goto forward_match_found_start_or_reached_end;
+
+ case 6:
+ /* Fastmap without translation, match forward. */
+ while (BE (match_first < right_lim, 1)
+ && !fastmap[(unsigned char) string[match_first]])
+ ++match_first;
+
+ forward_match_found_start_or_reached_end:
+ if (BE (match_first == right_lim, 0))
{
- unsigned RE_TRANSLATE_TYPE t
- = (unsigned RE_TRANSLATE_TYPE) preg->translate;
- if (BE (range >= 0, 1))
- {
- if (BE (t != NULL, 0))
- {
- while (BE (match_first < right_lim, 1)
- && !fastmap[t[(unsigned char) string[match_first]]])
- ++match_first;
- }
- else
- {
- while (BE (match_first < right_lim, 1)
- && !fastmap[(unsigned char) string[match_first]])
- ++match_first;
- }
- if (BE (match_first == right_lim, 0))
- {
- int ch = match_first >= length
- ? 0 : (unsigned char) string[match_first];
- if (!fastmap[t ? t[ch] : ch])
- break;
- }
- }
- else
- {
- while (match_first >= left_lim)
- {
- int ch = match_first >= length
- ? 0 : (unsigned char) string[match_first];
- if (fastmap[t ? t[ch] : ch])
- break;
- --match_first;
- }
- if (match_first < left_lim)
- break;
- }
+ ch = match_first >= length
+ ? 0 : (unsigned char) string[match_first];
+ if (!fastmap[t ? t[ch] : ch])
+ goto free_return;
}
- else
+ break;
+
+ case 4:
+ case 5:
+ /* Fastmap without multi-byte translation, match backwards. */
+ while (match_first >= left_lim)
{
- int ch;
+ ch = match_first >= length
+ ? 0 : (unsigned char) string[match_first];
+ if (fastmap[t ? t[ch] : ch])
+ break;
+ --match_first;
+ }
+ if (match_first < left_lim)
+ goto free_return;
+ break;
- do
+ default:
+ /* In this case, we can't determine easily the current byte,
+ since it might be a component byte of a multibyte
+ character. Then we use the constructed buffer instead. */
+ for (;;)
+ {
+ /* If MATCH_FIRST is out of the valid range, reconstruct the
+ buffers. */
+ unsigned int offset = match_first - mctx.input.raw_mbs_idx;
+ if (BE (offset >= (unsigned int) mctx.input.valid_raw_len, 0))
{
- /* In this case, we can't determine easily the current byte,
- since it might be a component byte of a multibyte
- character. Then we use the constructed buffer
- instead. */
- /* If MATCH_FIRST is out of the valid range, reconstruct the
- buffers. */
- if (mctx.input.raw_mbs_idx + mctx.input.valid_raw_len
- <= match_first
- || match_first < mctx.input.raw_mbs_idx)
- {
- err = re_string_reconstruct (&mctx.input, match_first,
- eflags);
- if (BE (err != REG_NOERROR, 0))
- goto free_return;
- }
- /* If MATCH_FIRST is out of the buffer, leave it as '\0'.
- Note that MATCH_FIRST must not be smaller than 0. */
- ch = ((match_first >= length) ? 0
- : re_string_byte_at (&mctx.input,
- match_first
- - mctx.input.raw_mbs_idx));
- if (fastmap[ch])
- break;
- match_first += incr;
+ err = re_string_reconstruct (&mctx.input, match_first,
+ eflags);
+ if (BE (err != REG_NOERROR, 0))
+ goto free_return;
+
+ offset = match_first - mctx.input.raw_mbs_idx;
}
- while (match_first >= left_lim && match_first <= right_lim);
- if (! fastmap[ch])
+ /* If MATCH_FIRST is out of the buffer, leave it as '\0'.
+ Note that MATCH_FIRST must not be smaller than 0. */
+ ch = (match_first >= length
+ ? 0 : re_string_byte_at (&mctx.input, offset));
+ if (fastmap[ch])
break;
+ match_first += incr;
+ if (match_first < left_lim || match_first > right_lim)
+ {
+ err = REG_NOMATCH;
+ goto free_return;
+ }
}
+ break;
}
/* Reconstruct the buffers so that the matcher can assume that
@@ -737,57 +789,60 @@ re_search_internal (preg, string, length, start, range, stop, nmatch, pmatch,
err = re_string_reconstruct (&mctx.input, match_first, eflags);
if (BE (err != REG_NOERROR, 0))
goto free_return;
+
#ifdef RE_ENABLE_I18N
- /* Eliminate it when it is a component of a multibyte character
- and isn't the head of a multibyte character. */
- if (sb || re_string_first_byte (&mctx.input, 0))
+ /* Don't consider this char as a possible match start if it part,
+ yet isn't the head, of a multibyte character. */
+ if (!sb && !re_string_first_byte (&mctx.input, 0))
+ continue;
#endif
+
+ /* It seems to be appropriate one, then use the matcher. */
+ /* We assume that the matching starts from 0. */
+ mctx.state_log_top = mctx.nbkref_ents = mctx.max_mb_elem_len = 0;
+ match_last = check_matching (&mctx, fl_longest_match,
+ range >= 0 ? &match_first : NULL);
+ if (match_last != -1)
{
- /* It seems to be appropriate one, then use the matcher. */
- /* We assume that the matching starts from 0. */
- mctx.state_log_top = mctx.nbkref_ents = mctx.max_mb_elem_len = 0;
- match_last = check_matching (&mctx, fl_longest_match,
- range >= 0 ? &match_first : NULL);
- if (match_last != -1)
+ if (BE (match_last == -2, 0))
{
- if (BE (match_last == -2, 0))
+ err = REG_ESPACE;
+ goto free_return;
+ }
+ else
+ {
+ mctx.match_last = match_last;
+ if ((!preg->no_sub && nmatch > 1) || dfa->nbackref)
{
- err = REG_ESPACE;
- goto free_return;
+ re_dfastate_t *pstate = mctx.state_log[match_last];
+ mctx.last_node = check_halt_state_context (&mctx, pstate,
+ match_last);
}
- else
+ if ((!preg->no_sub && nmatch > 1 && dfa->has_plural_match)
+ || dfa->nbackref)
{
- mctx.match_last = match_last;
- if ((!preg->no_sub && nmatch > 1) || dfa->nbackref)
- {
- re_dfastate_t *pstate = mctx.state_log[match_last];
- mctx.last_node = check_halt_state_context (&mctx, pstate,
- match_last);
- }
- if ((!preg->no_sub && nmatch > 1 && dfa->has_plural_match)
- || dfa->nbackref)
- {
- err = prune_impossible_nodes (&mctx);
- if (err == REG_NOERROR)
- break;
- if (BE (err != REG_NOMATCH, 0))
- goto free_return;
- match_last = -1;
- }
- else
- break; /* We found a match. */
+ err = prune_impossible_nodes (&mctx);
+ if (err == REG_NOERROR)
+ break;
+ if (BE (err != REG_NOMATCH, 0))
+ goto free_return;
+ match_last = -1;
}
+ else
+ break; /* We found a match. */
}
- match_ctx_clean (&mctx);
}
- /* Update counter. */
- match_first += incr;
- if (match_first < left_lim || right_lim < match_first)
- break;
+
+ match_ctx_clean (&mctx);
}
+#ifdef DEBUG
+ assert (match_last != -1);
+ assert (err == REG_NOERROR);
+#endif
+
/* Set pmatch[] if we need. */
- if (match_last != -1 && nmatch > 0)
+ if (nmatch > 0)
{
int reg_idx;
@@ -831,8 +886,23 @@ re_search_internal (preg, string, length, start, range, stop, nmatch, pmatch,
pmatch[reg_idx].rm_so += match_first;
pmatch[reg_idx].rm_eo += match_first;
}
+ for (reg_idx = 0; reg_idx < extra_nmatch; ++reg_idx)
+ {
+ pmatch[nmatch + reg_idx].rm_so = -1;
+ pmatch[nmatch + reg_idx].rm_eo = -1;
+ }
+
+ if (dfa->subexp_map)
+ for (reg_idx = 0; reg_idx + 1 < nmatch; reg_idx++)
+ if (dfa->subexp_map[reg_idx] != reg_idx)
+ {
+ pmatch[reg_idx + 1].rm_so
+ = pmatch[dfa->subexp_map[reg_idx] + 1].rm_so;
+ pmatch[reg_idx + 1].rm_eo
+ = pmatch[dfa->subexp_map[reg_idx] + 1].rm_eo;
+ }
}
- err = (match_last == -1) ? REG_NOMATCH : REG_NOERROR;
+
free_return:
re_free (mctx.state_log);
if (dfa->nbackref)
@@ -874,9 +944,8 @@ prune_impossible_nodes (mctx)
{
memset (lim_states, '\0',
sizeof (re_dfastate_t *) * (match_last + 1));
- match_ctx_clear_flag (mctx);
sift_ctx_init (&sctx, sifted_states, lim_states, halt_node,
- match_last, 0);
+ match_last);
ret = sift_states_backward (mctx, &sctx);
re_node_set_free (&sctx.limits);
if (BE (ret != REG_NOERROR, 0))
@@ -906,8 +975,7 @@ prune_impossible_nodes (mctx)
}
else
{
- sift_ctx_init (&sctx, sifted_states, lim_states, halt_node,
- match_last, 0);
+ sift_ctx_init (&sctx, sifted_states, lim_states, halt_node, match_last);
ret = sift_states_backward (mctx, &sctx);
re_node_set_free (&sctx.limits);
if (BE (ret != REG_NOERROR, 0))
@@ -936,7 +1004,6 @@ acquire_init_state_context (err, mctx, idx)
int idx;
{
re_dfa_t *const dfa = mctx->dfa;
- *err = REG_NOERROR;
if (dfa->init_state->has_constraint)
{
unsigned int context;
@@ -952,9 +1019,9 @@ acquire_init_state_context (err, mctx, idx)
else if (IS_BEGBUF_CONTEXT (context))
{
/* It is relatively rare case, then calculate on demand. */
- return re_acquire_state_context (err, dfa,
- dfa->init_state->entrance_nodes,
- context);
+ return re_acquire_state_context (err, dfa,
+ dfa->init_state->entrance_nodes,
+ context);
}
else
/* Must not happen? */
@@ -985,29 +1052,37 @@ check_matching (mctx, fl_longest_match, p_match_first)
int match_last = -1;
int cur_str_idx = re_string_cur_idx (&mctx->input);
re_dfastate_t *cur_state;
- int at_init_state = p_match_first != NULL, skipped = 0;
+ int at_init_state = p_match_first != NULL;
+ int next_start_idx = cur_str_idx;
+ err = REG_NOERROR;
cur_state = acquire_init_state_context (&err, mctx, cur_str_idx);
- /* An initial state must not be NULL(invalid state). */
+ /* An initial state must not be NULL (invalid). */
if (BE (cur_state == NULL, 0))
- return -2;
- if (mctx->state_log != NULL)
- mctx->state_log[cur_str_idx] = cur_state;
+ {
+ assert (err == REG_ESPACE);
+ return -2;
+ }
- /* Check OP_OPEN_SUBEXP in the initial state in case that we use them
- later. E.g. Processing back references. */
- if (BE (dfa->nbackref, 0))
+ if (mctx->state_log != NULL)
{
- at_init_state = 0;
- err = check_subexp_matching_top (mctx, &cur_state->nodes, 0);
- if (BE (err != REG_NOERROR, 0))
- return err;
+ mctx->state_log[cur_str_idx] = cur_state;
- if (cur_state->has_backref)
+ /* Check OP_OPEN_SUBEXP in the initial state in case that we use them
+ later. E.g. Processing back references. */
+ if (BE (dfa->nbackref, 0))
{
- err = transit_state_bkref (mctx, &cur_state->nodes);
+ at_init_state = 0;
+ err = check_subexp_matching_top (mctx, &cur_state->nodes, 0);
if (BE (err != REG_NOERROR, 0))
return err;
+
+ if (cur_state->has_backref)
+ {
+ err = transit_state_bkref (mctx, &cur_state->nodes);
+ if (BE (err != REG_NOERROR, 0))
+ return err;
+ }
}
}
@@ -1030,41 +1105,49 @@ check_matching (mctx, fl_longest_match, p_match_first)
while (!re_string_eoi (&mctx->input))
{
re_dfastate_t *old_state = cur_state;
+ int next_char_idx = re_string_cur_idx (&mctx->input) + 1;
+
+ if (BE (next_char_idx >= mctx->input.bufs_len, 0)
+ || (BE (next_char_idx >= mctx->input.valid_len, 0)
+ && mctx->input.valid_len < mctx->input.len))
+ {
+ err = extend_buffers (mctx);
+ if (BE (err != REG_NOERROR, 0))
+ {
+ assert (err == REG_ESPACE);
+ return -2;
+ }
+ }
+
cur_state = transit_state (&err, mctx, cur_state);
- if (at_init_state)
- {
- if (old_state == cur_state)
- skipped++;
- else
- at_init_state = 0;
- }
+ if (mctx->state_log != NULL)
+ cur_state = merge_state_with_log (&err, mctx, cur_state);
- if (cur_state == NULL) /* Reached at the invalid state or an error. */
+ if (cur_state == NULL)
{
- cur_str_idx = re_string_cur_idx (&mctx->input);
+ /* Reached the invalid state or an error. Try to recover a valid
+ state using the state log, if available and if we have not
+ already found a valid (even if not the longest) match. */
if (BE (err != REG_NOERROR, 0))
return -2;
- if (!fl_longest_match && match)
+
+ if (mctx->state_log == NULL
+ || (match && !fl_longest_match)
+ || (cur_state = find_recover_state (&err, mctx)) == NULL)
break;
+ }
+
+ if (BE (at_init_state, 0))
+ {
+ if (old_state == cur_state)
+ next_start_idx = next_char_idx;
else
- {
- if (mctx->state_log == NULL)
- break;
- else
- {
- int max = mctx->state_log_top;
- for (; cur_str_idx <= max; ++cur_str_idx)
- if (mctx->state_log[cur_str_idx] != NULL)
- break;
- if (cur_str_idx > max)
- break;
- }
- }
+ at_init_state = 0;
}
- if (cur_state != NULL && cur_state->halt)
+ if (cur_state->halt)
{
- /* Reached at a halt state.
+ /* Reached a halt state.
Check the halt state can satisfy the current context. */
if (!cur_state->has_constraint
|| check_halt_state_context (mctx, cur_state,
@@ -1073,14 +1156,17 @@ check_matching (mctx, fl_longest_match, p_match_first)
/* We found an appropriate halt state. */
match_last = re_string_cur_idx (&mctx->input);
match = 1;
+
+ /* We found a match, do not modify match_first below. */
+ p_match_first = NULL;
if (!fl_longest_match)
break;
}
}
- }
+ }
- if (match_last == -1 && skipped)
- *p_match_first += skipped;
+ if (p_match_first)
+ *p_match_first += next_start_idx;
return match_last;
}
@@ -1144,30 +1230,38 @@ proceed_next_node (mctx, nregs, regs, pidx, node, eps_via_nodes, fs)
if (IS_EPSILON_NODE (dfa->nodes[node].type))
{
re_node_set *cur_nodes = &mctx->state_log[*pidx]->nodes;
- int ndest, dest_nodes[2];
+ re_node_set *edests = &dfa->edests[node];
+ int dest_node;
err = re_node_set_insert (eps_via_nodes, node);
if (BE (err < 0, 0))
return -2;
- /* Pick up valid destinations. */
- for (ndest = 0, i = 0; i < dfa->edests[node].nelem; ++i)
+ /* Pick up a valid destination, or return -1 if none is found. */
+ for (dest_node = -1, i = 0; i < edests->nelem; ++i)
{
- int candidate = dfa->edests[node].elems[i];
+ int candidate = edests->elems[i];
if (!re_node_set_contains (cur_nodes, candidate))
continue;
- dest_nodes[0] = (ndest == 0) ? candidate : dest_nodes[0];
- dest_nodes[1] = (ndest == 1) ? candidate : dest_nodes[1];
- ++ndest;
+ if (dest_node == -1)
+ dest_node = candidate;
+
+ else
+ {
+ /* In order to avoid infinite loop like "(a*)*", return the second
+ epsilon-transition if the first was already considered. */
+ if (re_node_set_contains (eps_via_nodes, dest_node))
+ return candidate;
+
+ /* Otherwise, push the second epsilon-transition on the fail stack. */
+ else if (fs != NULL
+ && push_fail_stack (fs, *pidx, candidate, nregs, regs,
+ eps_via_nodes) != REG_NOERROR)
+ return -2;
+
+ /* We know we are going to exit. */
+ break;
+ }
}
- if (ndest <= 1)
- return ndest == 0 ? -1 : (ndest == 1 ? dest_nodes[0] : 0);
- /* In order to avoid infinite loop like "(a*)*". */
- if (re_node_set_contains (eps_via_nodes, dest_nodes[0]))
- return dest_nodes[1];
- if (fs != NULL
- && push_fail_stack (fs, *pidx, dest_nodes, nregs, regs,
- eps_via_nodes))
- return -2;
- return dest_nodes[0];
+ return dest_node;
}
else
{
@@ -1175,13 +1269,13 @@ proceed_next_node (mctx, nregs, regs, pidx, node, eps_via_nodes, fs)
re_token_type_t type = dfa->nodes[node].type;
#ifdef RE_ENABLE_I18N
- if (ACCEPT_MB_NODE (type))
+ if (dfa->nodes[node].accept_mb)
naccepted = check_node_accept_bytes (dfa, node, &mctx->input, *pidx);
else
#endif /* RE_ENABLE_I18N */
if (type == OP_BACK_REF)
{
- int subexp_idx = dfa->nodes[node].opr.idx;
+ int subexp_idx = dfa->nodes[node].opr.idx + 1;
naccepted = regs[subexp_idx].rm_eo - regs[subexp_idx].rm_so;
if (fs != NULL)
{
@@ -1225,9 +1319,9 @@ proceed_next_node (mctx, nregs, regs, pidx, node, eps_via_nodes, fs)
}
static reg_errcode_t
-push_fail_stack (fs, str_idx, dests, nregs, regs, eps_via_nodes)
+push_fail_stack (fs, str_idx, dest_node, nregs, regs, eps_via_nodes)
struct re_fail_stack_t *fs;
- int str_idx, *dests, nregs;
+ int str_idx, dest_node, nregs;
regmatch_t *regs;
re_node_set *eps_via_nodes;
{
@@ -1244,7 +1338,7 @@ push_fail_stack (fs, str_idx, dests, nregs, regs, eps_via_nodes)
fs->stack = new_array;
}
fs->stack[num].idx = str_idx;
- fs->stack[num].node = dests[1];
+ fs->stack[num].node = dest_node;
fs->stack[num].regs = re_malloc (regmatch_t, nregs);
if (fs->stack[num].regs == NULL)
return REG_ESPACE;
@@ -1284,7 +1378,7 @@ set_regs (preg, mctx, nmatch, pmatch, fl_backtrack)
int fl_backtrack;
{
re_dfa_t *dfa = (re_dfa_t *) preg->buffer;
- int idx, cur_node, real_nmatch;
+ int idx, cur_node;
re_node_set eps_via_nodes;
struct re_fail_stack_t *fs;
struct re_fail_stack_t fs_body = { 0, 2, NULL };
@@ -1305,15 +1399,14 @@ set_regs (preg, mctx, nmatch, pmatch, fl_backtrack)
fs = NULL;
cur_node = dfa->init_node;
- real_nmatch = (nmatch <= preg->re_nsub) ? nmatch : preg->re_nsub + 1;
re_node_set_init_empty (&eps_via_nodes);
- prev_idx_match = (regmatch_t *) alloca (sizeof (regmatch_t) * real_nmatch);
- memcpy (prev_idx_match, pmatch, sizeof (regmatch_t) * real_nmatch);
+ prev_idx_match = re_malloc (regmatch_t, nmatch);
+ memcpy (prev_idx_match, pmatch, sizeof (regmatch_t) * nmatch);
for (idx = pmatch[0].rm_so; idx <= pmatch[0].rm_eo ;)
{
- update_regs (dfa, pmatch, prev_idx_match, cur_node, idx, real_nmatch);
+ update_regs (dfa, pmatch, prev_idx_match, cur_node, idx, nmatch);
if (idx == pmatch[0].rm_eo && cur_node == mctx->last_node)
{
@@ -1326,6 +1419,7 @@ set_regs (preg, mctx, nmatch, pmatch, fl_backtrack)
if (reg_idx == nmatch)
{
re_node_set_free (&eps_via_nodes);
+ re_free (prev_idx_match);
return free_fail_stack_return (fs);
}
cur_node = pop_fail_stack (fs, &idx, nmatch, pmatch,
@@ -1334,6 +1428,7 @@ set_regs (preg, mctx, nmatch, pmatch, fl_backtrack)
else
{
re_node_set_free (&eps_via_nodes);
+ re_free (prev_idx_match);
return REG_NOERROR;
}
}
@@ -1348,6 +1443,7 @@ set_regs (preg, mctx, nmatch, pmatch, fl_backtrack)
{
re_node_set_free (&eps_via_nodes);
free_fail_stack_return (fs);
+ re_free (prev_idx_match);
return REG_ESPACE;
}
if (fs)
@@ -1356,11 +1452,13 @@ set_regs (preg, mctx, nmatch, pmatch, fl_backtrack)
else
{
re_node_set_free (&eps_via_nodes);
+ re_free (prev_idx_match);
return REG_NOMATCH;
}
}
}
re_node_set_free (&eps_via_nodes);
+ re_free (prev_idx_match);
return free_fail_stack_return (fs);
}
@@ -1459,17 +1557,14 @@ sift_states_backward (mctx, sctx)
re_match_context_t *mctx;
re_sift_context_t *sctx;
{
- re_dfa_t *const dfa = mctx->dfa;
reg_errcode_t err;
int null_cnt = 0;
int str_idx = sctx->last_str_idx;
re_node_set cur_dest;
- re_node_set *cur_src; /* Points the state_log[str_idx]->nodes */
#ifdef DEBUG
assert (mctx->state_log != NULL && mctx->state_log[str_idx] != NULL);
#endif
- cur_src = &mctx->state_log[str_idx]->nodes;
/* Build sifted state_log[str_idx]. It has the nodes which can epsilon
transit to the last_node and the last_node itself. */
@@ -1483,7 +1578,6 @@ sift_states_backward (mctx, sctx)
/* Then check each states in the state_log. */
while (str_idx > 0)
{
- int i, ret;
/* Update counters. */
null_cnt = (sctx->sifted_states[str_idx] == NULL) ? null_cnt + 1 : 0;
if (null_cnt > mctx->max_mb_elem_len)
@@ -1495,56 +1589,12 @@ sift_states_backward (mctx, sctx)
}
re_node_set_empty (&cur_dest);
--str_idx;
- cur_src = ((mctx->state_log[str_idx] == NULL) ? &empty_set
- : &mctx->state_log[str_idx]->nodes);
-
- /* Then build the next sifted state.
- We build the next sifted state on `cur_dest', and update
- `sifted_states[str_idx]' with `cur_dest'.
- Note:
- `cur_dest' is the sifted state from `state_log[str_idx + 1]'.
- `cur_src' points the node_set of the old `state_log[str_idx]'. */
- for (i = 0; i < cur_src->nelem; i++)
- {
- int prev_node = cur_src->elems[i];
- int naccepted = 0;
- re_token_type_t type = dfa->nodes[prev_node].type;
-
- if (IS_EPSILON_NODE (type))
- continue;
-#ifdef RE_ENABLE_I18N
- /* If the node may accept `multi byte'. */
- if (ACCEPT_MB_NODE (type))
- naccepted = sift_states_iter_mb (mctx, sctx, prev_node,
- str_idx, sctx->last_str_idx);
-#endif /* RE_ENABLE_I18N */
- /* We don't check backreferences here.
- See update_cur_sifted_state(). */
-
- if (!naccepted
- && check_node_accept (mctx, dfa->nodes + prev_node, str_idx)
- && STATE_NODE_CONTAINS (sctx->sifted_states[str_idx + 1],
- dfa->nexts[prev_node]))
- naccepted = 1;
-
- if (naccepted == 0)
- continue;
-
- if (sctx->limits.nelem)
- {
- int to_idx = str_idx + naccepted;
- if (check_dst_limits (mctx, &sctx->limits,
- dfa->nexts[prev_node], to_idx,
- prev_node, str_idx))
- continue;
- }
- ret = re_node_set_insert (&cur_dest, prev_node);
- if (BE (ret == -1, 0))
- {
- err = REG_ESPACE;
- goto free_return;
- }
+ if (mctx->state_log[str_idx])
+ {
+ err = build_sifted_states (mctx, sctx, str_idx, &cur_dest);
+ if (BE (err != REG_NOERROR, 0))
+ goto free_return;
}
/* Add all the nodes which satisfy the following conditions:
@@ -1561,6 +1611,68 @@ sift_states_backward (mctx, sctx)
return err;
}
+static reg_errcode_t
+build_sifted_states (mctx, sctx, str_idx, cur_dest)
+ re_match_context_t *mctx;
+ re_sift_context_t *sctx;
+ int str_idx;
+ re_node_set *cur_dest;
+{
+ re_dfa_t *const dfa = mctx->dfa;
+ re_node_set *cur_src = &mctx->state_log[str_idx]->non_eps_nodes;
+ int i;
+
+ /* Then build the next sifted state.
+ We build the next sifted state on `cur_dest', and update
+ `sifted_states[str_idx]' with `cur_dest'.
+ Note:
+ `cur_dest' is the sifted state from `state_log[str_idx + 1]'.
+ `cur_src' points the node_set of the old `state_log[str_idx]'
+ (with the epsilon nodes pre-filtered out). */
+ for (i = 0; i < cur_src->nelem; i++)
+ {
+ int prev_node = cur_src->elems[i];
+ int naccepted = 0;
+ int ret;
+
+#ifdef DEBUG
+ re_token_type_t type = dfa->nodes[prev_node].type;
+ assert (!IS_EPSILON_NODE (type));
+#endif
+#ifdef RE_ENABLE_I18N
+ /* If the node may accept `multi byte'. */
+ if (dfa->nodes[prev_node].accept_mb)
+ naccepted = sift_states_iter_mb (mctx, sctx, prev_node,
+ str_idx, sctx->last_str_idx);
+#endif /* RE_ENABLE_I18N */
+
+ /* We don't check backreferences here.
+ See update_cur_sifted_state(). */
+ if (!naccepted
+ && check_node_accept (mctx, dfa->nodes + prev_node, str_idx)
+ && STATE_NODE_CONTAINS (sctx->sifted_states[str_idx + 1],
+ dfa->nexts[prev_node]))
+ naccepted = 1;
+
+ if (naccepted == 0)
+ continue;
+
+ if (sctx->limits.nelem)
+ {
+ int to_idx = str_idx + naccepted;
+ if (check_dst_limits (mctx, &sctx->limits,
+ dfa->nexts[prev_node], to_idx,
+ prev_node, str_idx))
+ continue;
+ }
+ ret = re_node_set_insert (cur_dest, prev_node);
+ if (BE (ret == -1, 0))
+ return REG_ESPACE;
+ }
+
+ return REG_NOERROR;
+}
+
/* Helper functions. */
static reg_errcode_t
@@ -1628,36 +1740,39 @@ update_cur_sifted_state (mctx, sctx, str_idx, dest_nodes)
re_dfa_t *const dfa = mctx->dfa;
reg_errcode_t err;
const re_node_set *candidates;
- candidates = ((mctx->state_log[str_idx] == NULL) ? &empty_set
+ candidates = ((mctx->state_log[str_idx] == NULL) ? NULL
: &mctx->state_log[str_idx]->nodes);
- /* At first, add the nodes which can epsilon transit to a node in
- DEST_NODE. */
- if (dest_nodes->nelem)
+ if (dest_nodes->nelem == 0)
+ sctx->sifted_states[str_idx] = NULL;
+ else
{
- err = add_epsilon_src_nodes (dfa, dest_nodes, candidates);
- if (BE (err != REG_NOERROR, 0))
- return err;
- }
+ if (candidates)
+ {
+ /* At first, add the nodes which can epsilon transit to a node in
+ DEST_NODE. */
+ err = add_epsilon_src_nodes (dfa, dest_nodes, candidates);
+ if (BE (err != REG_NOERROR, 0))
+ return err;
- /* Then, check the limitations in the current sift_context. */
- if (dest_nodes->nelem && sctx->limits.nelem)
- {
- err = check_subexp_limits (dfa, dest_nodes, candidates, &sctx->limits,
- mctx->bkref_ents, str_idx);
+ /* Then, check the limitations in the current sift_context. */
+ if (sctx->limits.nelem)
+ {
+ err = check_subexp_limits (dfa, dest_nodes, candidates, &sctx->limits,
+ mctx->bkref_ents, str_idx);
+ if (BE (err != REG_NOERROR, 0))
+ return err;
+ }
+ }
+
+ sctx->sifted_states[str_idx] = re_acquire_state (&err, dfa, dest_nodes);
if (BE (err != REG_NOERROR, 0))
return err;
}
- /* Update state_log. */
- sctx->sifted_states[str_idx] = re_acquire_state (&err, dfa, dest_nodes);
- if (BE (sctx->sifted_states[str_idx] == NULL && err != REG_NOERROR, 0))
- return err;
-
- if ((mctx->state_log[str_idx] != NULL
- && mctx->state_log[str_idx]->has_backref))
+ if (candidates && mctx->state_log[str_idx]->has_backref)
{
- err = sift_states_bkref (mctx, sctx, str_idx, dest_nodes);
+ err = sift_states_bkref (mctx, sctx, str_idx, candidates);
if (BE (err != REG_NOERROR, 0))
return err;
}
@@ -1670,26 +1785,24 @@ add_epsilon_src_nodes (dfa, dest_nodes, candidates)
re_node_set *dest_nodes;
const re_node_set *candidates;
{
- reg_errcode_t err;
- int src_idx;
- re_node_set src_copy;
+ reg_errcode_t err = REG_NOERROR;
+ int i;
- err = re_node_set_init_copy (&src_copy, dest_nodes);
+ re_dfastate_t *state = re_acquire_state (&err, dfa, dest_nodes);
if (BE (err != REG_NOERROR, 0))
return err;
- for (src_idx = 0; src_idx < src_copy.nelem; ++src_idx)
+
+ if (!state->inveclosure.alloc)
{
- err = re_node_set_add_intersect (dest_nodes, candidates,
- dfa->inveclosures
- + src_copy.elems[src_idx]);
+ err = re_node_set_alloc (&state->inveclosure, dest_nodes->nelem);
if (BE (err != REG_NOERROR, 0))
- {
- re_node_set_free (&src_copy);
- return err;
- }
+ return REG_ESPACE;
+ for (i = 0; i < dest_nodes->nelem; i++)
+ re_node_set_merge (&state->inveclosure,
+ dfa->inveclosures + dest_nodes->elems[i]);
}
- re_node_set_free (&src_copy);
- return REG_NOERROR;
+ return re_node_set_add_intersect (dest_nodes, candidates,
+ &state->inveclosure);
}
static reg_errcode_t
@@ -1752,19 +1865,21 @@ check_dst_limits (mctx, limits, dst_node, dst_idx, src_node, src_idx)
re_dfa_t *const dfa = mctx->dfa;
int lim_idx, src_pos, dst_pos;
+ int dst_bkref_idx = search_cur_bkref_entry (mctx, dst_idx);
+ int src_bkref_idx = search_cur_bkref_entry (mctx, src_idx);
for (lim_idx = 0; lim_idx < limits->nelem; ++lim_idx)
{
int subexp_idx;
struct re_backref_cache_entry *ent;
ent = mctx->bkref_ents + limits->elems[lim_idx];
- subexp_idx = dfa->nodes[ent->node].opr.idx - 1;
+ subexp_idx = dfa->nodes[ent->node].opr.idx;
dst_pos = check_dst_limits_calc_pos (mctx, limits->elems[lim_idx],
- dfa->eclosures + dst_node,
- subexp_idx, dst_node, dst_idx);
+ subexp_idx, dst_node, dst_idx,
+ dst_bkref_idx);
src_pos = check_dst_limits_calc_pos (mctx, limits->elems[lim_idx],
- dfa->eclosures + src_node,
- subexp_idx, src_node, src_idx);
+ subexp_idx, src_node, src_idx,
+ src_bkref_idx);
/* In case of:
<src> <dst> ( <subexp> )
@@ -1779,27 +1894,14 @@ check_dst_limits (mctx, limits, dst_node, dst_idx, src_node, src_idx)
}
static int
-check_dst_limits_calc_pos (mctx, limit, eclosures, subexp_idx, from_node,
- str_idx)
+check_dst_limits_calc_pos_1 (mctx, boundaries, subexp_idx, from_node, bkref_idx)
re_match_context_t *mctx;
- re_node_set *eclosures;
- int limit, subexp_idx, from_node, str_idx;
+ int boundaries, subexp_idx, from_node, bkref_idx;
{
re_dfa_t *const dfa = mctx->dfa;
- struct re_backref_cache_entry *lim = mctx->bkref_ents + limit;
+ re_node_set *eclosures = dfa->eclosures + from_node;
int node_idx;
- /* If we are outside the range of the subexpression, return -1 or 1. */
- if (str_idx < lim->subexp_from)
- return -1;
-
- if (lim->subexp_to < str_idx)
- return 1;
-
- /* If we are within the subexpression, return 0. */
- if (str_idx != lim->subexp_from && str_idx != lim->subexp_to)
- return 0;
-
/* Else, we are on the boundary: examine the nodes on the epsilon
closure. */
for (node_idx = 0; node_idx < eclosures->nelem; ++node_idx)
@@ -1808,57 +1910,56 @@ check_dst_limits_calc_pos (mctx, limit, eclosures, subexp_idx, from_node,
switch (dfa->nodes[node].type)
{
case OP_BACK_REF:
- {
- int bi = search_cur_bkref_entry (mctx, str_idx);
- for (; bi < mctx->nbkref_ents; ++bi)
- {
- struct re_backref_cache_entry *ent = mctx->bkref_ents + bi;
- int dst, cpos;
-
- /* If this backreference goes beyond the point we're
- examining, don't go any further. */
- if (ent->str_idx > str_idx)
- break;
+ if (bkref_idx != -1)
+ {
+ struct re_backref_cache_entry *ent = mctx->bkref_ents + bkref_idx;
+ do
+ {
+ int dst, cpos;
- if (ent->node != node || ent->subexp_from != ent->subexp_to)
- continue;
+ if (ent->node != node)
+ continue;
- /* Recurse trying to reach the OP_OPEN_SUBEXP and
- OP_CLOSE_SUBEXP cases below. But, if the
- destination node is the same node as the source
- node, don't recurse because it would cause an
- infinite loop: a regex that exhibits this behavior
- is ()\1*\1* */
- dst = dfa->edests[node].elems[0];
- if (dst == from_node)
- {
- if (str_idx == lim->subexp_from)
- return -1;
- else /* if (str_idx == lim->subexp_to) */
- return 0;
- }
+ if (subexp_idx <= 8 * sizeof (ent->eps_reachable_subexps_map)
+ && !(ent->eps_reachable_subexps_map & (1 << subexp_idx)))
+ continue;
- cpos = check_dst_limits_calc_pos (mctx, limit,
- dfa->eclosures + dst,
- subexp_idx, dst,
- str_idx);
+ /* Recurse trying to reach the OP_OPEN_SUBEXP and
+ OP_CLOSE_SUBEXP cases below. But, if the
+ destination node is the same node as the source
+ node, don't recurse because it would cause an
+ infinite loop: a regex that exhibits this behavior
+ is ()\1*\1* */
+ dst = dfa->edests[node].elems[0];
+ if (dst == from_node)
+ {
+ if (boundaries & 1)
+ return -1;
+ else /* if (boundaries & 2) */
+ return 0;
+ }
- if (cpos == -1 && str_idx == lim->subexp_from)
- return -1;
+ cpos =
+ check_dst_limits_calc_pos_1 (mctx, boundaries, subexp_idx,
+ dst, bkref_idx);
+ if (cpos == -1 /* && (boundaries & 1) */)
+ return -1;
+ if (cpos == 0 && (boundaries & 2))
+ return 0;
- if (cpos == 0 /* && str_idx == lim->lim->subexp_to */)
- return 0;
- }
- break;
+ ent->eps_reachable_subexps_map &= ~(1 << subexp_idx);
+ }
+ while (ent++->more);
}
+ break;
case OP_OPEN_SUBEXP:
- if (str_idx == lim->subexp_from && subexp_idx == dfa->nodes[node].opr.idx)
+ if ((boundaries & 1) && subexp_idx == dfa->nodes[node].opr.idx)
return -1;
break;
case OP_CLOSE_SUBEXP:
- if (str_idx == lim->subexp_to && subexp_idx == dfa->nodes[node].opr.idx)
+ if ((boundaries & 2) && subexp_idx == dfa->nodes[node].opr.idx)
return 0;
break;
@@ -1867,10 +1968,33 @@ check_dst_limits_calc_pos (mctx, limit, eclosures, subexp_idx, from_node,
}
}
- if (str_idx == lim->subexp_to)
+ return (boundaries & 2) ? 1 : 0;
+}
+
+static int
+check_dst_limits_calc_pos (mctx, limit, subexp_idx, from_node, str_idx, bkref_idx)
+ re_match_context_t *mctx;
+ int limit, subexp_idx, from_node, str_idx, bkref_idx;
+{
+ struct re_backref_cache_entry *lim = mctx->bkref_ents + limit;
+ int boundaries;
+
+ /* If we are outside the range of the subexpression, return -1 or 1. */
+ if (str_idx < lim->subexp_from)
+ return -1;
+
+ if (lim->subexp_to < str_idx)
return 1;
- else
+
+ /* If we are within the subexpression, return 0. */
+ boundaries = (str_idx == lim->subexp_from);
+ boundaries |= (str_idx == lim->subexp_to) << 1;
+ if (boundaries == 0)
return 0;
+
+ /* Else, examine epsilon closure. */
+ return check_dst_limits_calc_pos_1 (mctx, boundaries, subexp_idx,
+ from_node, bkref_idx);
}
/* Check the limitations of sub expressions LIMITS, and remove the nodes
@@ -1897,7 +2021,7 @@ check_subexp_limits (dfa, dest_nodes, candidates, limits, bkref_ents, str_idx)
if (str_idx <= ent->subexp_from || ent->str_idx < str_idx)
continue; /* This is unrelated limitation. */
- subexp_idx = dfa->nodes[ent->node].opr.idx - 1;
+ subexp_idx = dfa->nodes[ent->node].opr.idx;
if (ent->subexp_to == str_idx)
{
int ops_node = -1;
@@ -1954,16 +2078,12 @@ check_subexp_limits (dfa, dest_nodes, candidates, limits, bkref_ents, str_idx)
{
if (subexp_idx != dfa->nodes[node].opr.idx)
continue;
- if ((type == OP_CLOSE_SUBEXP && ent->subexp_to != str_idx)
- || (type == OP_OPEN_SUBEXP))
- {
- /* It is against this limitation.
- Remove it form the current sifted state. */
- err = sub_epsilon_src_nodes (dfa, node, dest_nodes,
- candidates);
- if (BE (err != REG_NOERROR, 0))
- return err;
- }
+ /* It is against this limitation.
+ Remove it form the current sifted state. */
+ err = sub_epsilon_src_nodes (dfa, node, dest_nodes,
+ candidates);
+ if (BE (err != REG_NOERROR, 0))
+ return err;
}
}
}
@@ -1972,115 +2092,91 @@ check_subexp_limits (dfa, dest_nodes, candidates, limits, bkref_ents, str_idx)
}
static reg_errcode_t
-sift_states_bkref (mctx, sctx, str_idx, dest_nodes)
+sift_states_bkref (mctx, sctx, str_idx, candidates)
re_match_context_t *mctx;
re_sift_context_t *sctx;
int str_idx;
- re_node_set *dest_nodes;
+ const re_node_set *candidates;
{
re_dfa_t *const dfa = mctx->dfa;
reg_errcode_t err;
int node_idx, node;
re_sift_context_t local_sctx;
- const re_node_set *candidates;
- candidates = ((mctx->state_log[str_idx] == NULL) ? &empty_set
- : &mctx->state_log[str_idx]->nodes);
+ int first_idx = search_cur_bkref_entry (mctx, str_idx);
+
+ if (first_idx == -1)
+ return REG_NOERROR;
+
local_sctx.sifted_states = NULL; /* Mark that it hasn't been initialized. */
for (node_idx = 0; node_idx < candidates->nelem; ++node_idx)
{
- int cur_bkref_idx = re_string_cur_idx (&mctx->input);
+ int enabled_idx;
re_token_type_t type;
+ struct re_backref_cache_entry *entry;
node = candidates->elems[node_idx];
type = dfa->nodes[node].type;
- if (node == sctx->cur_bkref && str_idx == cur_bkref_idx)
- continue;
/* Avoid infinite loop for the REs like "()\1+". */
if (node == sctx->last_node && str_idx == sctx->last_str_idx)
continue;
- if (type == OP_BACK_REF)
+ if (type != OP_BACK_REF)
+ continue;
+
+ entry = mctx->bkref_ents + first_idx;
+ enabled_idx = first_idx;
+ do
{
- int enabled_idx = search_cur_bkref_entry (mctx, str_idx);
- for (; enabled_idx < mctx->nbkref_ents; ++enabled_idx)
- {
- int disabled_idx, subexp_len, to_idx, dst_node;
- struct re_backref_cache_entry *entry;
- entry = mctx->bkref_ents + enabled_idx;
- if (entry->str_idx > str_idx)
- break;
- if (entry->node != node)
- continue;
- subexp_len = entry->subexp_to - entry->subexp_from;
- to_idx = str_idx + subexp_len;
- dst_node = (subexp_len ? dfa->nexts[node]
- : dfa->edests[node].elems[0]);
-
- if (to_idx > sctx->last_str_idx
- || sctx->sifted_states[to_idx] == NULL
- || !STATE_NODE_CONTAINS (sctx->sifted_states[to_idx],
- dst_node)
- || check_dst_limits (mctx, &sctx->limits, node,
- str_idx, dst_node, to_idx))
- continue;
- {
- re_dfastate_t *cur_state;
- entry->flag = 0;
- for (disabled_idx = enabled_idx + 1;
- disabled_idx < mctx->nbkref_ents; ++disabled_idx)
- {
- struct re_backref_cache_entry *entry2;
- entry2 = mctx->bkref_ents + disabled_idx;
- if (entry2->str_idx > str_idx)
- break;
- entry2->flag = (entry2->node == node) ? 1 : entry2->flag;
- }
+ int subexp_len, to_idx, dst_node;
+ re_dfastate_t *cur_state;
- if (local_sctx.sifted_states == NULL)
- {
- local_sctx = *sctx;
- err = re_node_set_init_copy (&local_sctx.limits,
- &sctx->limits);
- if (BE (err != REG_NOERROR, 0))
- goto free_return;
- }
- local_sctx.last_node = node;
- local_sctx.last_str_idx = str_idx;
- err = re_node_set_insert (&local_sctx.limits, enabled_idx);
- if (BE (err < 0, 0))
- {
- err = REG_ESPACE;
- goto free_return;
- }
- cur_state = local_sctx.sifted_states[str_idx];
- err = sift_states_backward (mctx, &local_sctx);
- if (BE (err != REG_NOERROR, 0))
- goto free_return;
- if (sctx->limited_states != NULL)
- {
- err = merge_state_array (dfa, sctx->limited_states,
- local_sctx.sifted_states,
- str_idx + 1);
- if (BE (err != REG_NOERROR, 0))
- goto free_return;
- }
- local_sctx.sifted_states[str_idx] = cur_state;
- re_node_set_remove (&local_sctx.limits, enabled_idx);
- /* We must not use the variable entry here, since
- mctx->bkref_ents might be realloced. */
- mctx->bkref_ents[enabled_idx].flag = 1;
- }
+ if (entry->node != node)
+ continue;
+ subexp_len = entry->subexp_to - entry->subexp_from;
+ to_idx = str_idx + subexp_len;
+ dst_node = (subexp_len ? dfa->nexts[node]
+ : dfa->edests[node].elems[0]);
+
+ if (to_idx > sctx->last_str_idx
+ || sctx->sifted_states[to_idx] == NULL
+ || !STATE_NODE_CONTAINS (sctx->sifted_states[to_idx], dst_node)
+ || check_dst_limits (mctx, &sctx->limits, node,
+ str_idx, dst_node, to_idx))
+ continue;
+
+ if (local_sctx.sifted_states == NULL)
+ {
+ local_sctx = *sctx;
+ err = re_node_set_init_copy (&local_sctx.limits, &sctx->limits);
+ if (BE (err != REG_NOERROR, 0))
+ goto free_return;
}
- enabled_idx = search_cur_bkref_entry (mctx, str_idx);
- for (; enabled_idx < mctx->nbkref_ents; ++enabled_idx)
+ local_sctx.last_node = node;
+ local_sctx.last_str_idx = str_idx;
+ err = re_node_set_insert (&local_sctx.limits, enabled_idx);
+ if (BE (err < 0, 0))
{
- struct re_backref_cache_entry *entry;
- entry = mctx->bkref_ents + enabled_idx;
- if (entry->str_idx > str_idx)
- break;
- if (entry->node == node)
- entry->flag = 0;
+ err = REG_ESPACE;
+ goto free_return;
}
+ cur_state = local_sctx.sifted_states[str_idx];
+ err = sift_states_backward (mctx, &local_sctx);
+ if (BE (err != REG_NOERROR, 0))
+ goto free_return;
+ if (sctx->limited_states != NULL)
+ {
+ err = merge_state_array (dfa, sctx->limited_states,
+ local_sctx.sifted_states,
+ str_idx + 1);
+ if (BE (err != REG_NOERROR, 0))
+ goto free_return;
+ }
+ local_sctx.sifted_states[str_idx] = cur_state;
+ re_node_set_remove (&local_sctx.limits, enabled_idx);
+
+ /* mctx->bkref_ents may have changed, reload the pointer. */
+ entry = mctx->bkref_ents + enabled_idx;
}
+ while (enabled_idx++, entry++->more);
}
err = REG_NOERROR;
free_return:
@@ -2131,127 +2227,111 @@ transit_state (err, mctx, state)
re_match_context_t *mctx;
re_dfastate_t *state;
{
- re_dfa_t *const dfa = mctx->dfa;
- re_dfastate_t **trtable, *next_state;
+ re_dfastate_t **trtable;
unsigned char ch;
- int cur_idx;
- if (re_string_cur_idx (&mctx->input) + 1 >= mctx->input.bufs_len
- || (re_string_cur_idx (&mctx->input) + 1 >= mctx->input.valid_len
- && mctx->input.valid_len < mctx->input.len))
+#ifdef RE_ENABLE_I18N
+ /* If the current state can accept multibyte. */
+ if (BE (state->accept_mb, 0))
{
- *err = extend_buffers (mctx);
+ *err = transit_state_mb (mctx, state);
if (BE (*err != REG_NOERROR, 0))
return NULL;
}
-
- *err = REG_NOERROR;
- if (state == NULL)
- {
- next_state = state;
- re_string_skip_bytes (&mctx->input, 1);
- }
- else
- {
-#ifdef RE_ENABLE_I18N
- /* If the current state can accept multibyte. */
- if (state->accept_mb)
- {
- *err = transit_state_mb (mctx, state);
- if (BE (*err != REG_NOERROR, 0))
- return NULL;
- }
#endif /* RE_ENABLE_I18N */
- /* Then decide the next state with the single byte. */
- if (1)
- {
- /* Use transition table */
- ch = re_string_fetch_byte (&mctx->input);
- trtable = state->trtable;
- if (trtable == NULL)
- {
- trtable = build_trtable (dfa, state);
- if (trtable == NULL)
- {
- *err = REG_ESPACE;
- return NULL;
- }
- }
- if (BE (state->word_trtable, 0))
- {
- unsigned int context;
- context
- = re_string_context_at (&mctx->input,
- re_string_cur_idx (&mctx->input) - 1,
- mctx->eflags);
- if (IS_WORD_CONTEXT (context))
- next_state = trtable[ch + SBC_MAX];
- else
- next_state = trtable[ch];
- }
- else
- next_state = trtable[ch];
- }
+ /* Then decide the next state with the single byte. */
#if 0
- else
- {
- /* don't use transition table */
- next_state = transit_state_sb (err, mctx, state);
- if (BE (next_state == NULL && err != REG_NOERROR, 0))
- return NULL;
- }
+ if (0)
+ /* don't use transition table */
+ return transit_state_sb (err, mctx, state);
#endif
- }
- cur_idx = re_string_cur_idx (&mctx->input);
- /* Update the state_log if we need. */
- if (mctx->state_log != NULL)
+ /* Use transition table */
+ ch = re_string_fetch_byte (&mctx->input);
+ for (;;)
{
- if (cur_idx > mctx->state_log_top)
- {
- mctx->state_log[cur_idx] = next_state;
- mctx->state_log_top = cur_idx;
+ trtable = state->trtable;
+ if (BE (trtable != NULL, 1))
+ return trtable[ch];
+
+ trtable = state->word_trtable;
+ if (BE (trtable != NULL, 1))
+ {
+ unsigned int context;
+ context
+ = re_string_context_at (&mctx->input,
+ re_string_cur_idx (&mctx->input) - 1,
+ mctx->eflags);
+ if (IS_WORD_CONTEXT (context))
+ return trtable[ch + SBC_MAX];
+ else
+ return trtable[ch];
}
- else if (mctx->state_log[cur_idx] == 0)
+
+ if (!build_trtable (mctx->dfa, state))
{
- mctx->state_log[cur_idx] = next_state;
+ *err = REG_ESPACE;
+ return NULL;
}
- else
- {
- re_dfastate_t *pstate;
- unsigned int context;
- re_node_set next_nodes, *log_nodes, *table_nodes = NULL;
- /* If (state_log[cur_idx] != 0), it implies that cur_idx is
- the destination of a multibyte char/collating element/
- back reference. Then the next state is the union set of
- these destinations and the results of the transition table. */
- pstate = mctx->state_log[cur_idx];
- log_nodes = pstate->entrance_nodes;
- if (next_state != NULL)
- {
- table_nodes = next_state->entrance_nodes;
- *err = re_node_set_init_union (&next_nodes, table_nodes,
- log_nodes);
- if (BE (*err != REG_NOERROR, 0))
- return NULL;
- }
- else
- next_nodes = *log_nodes;
- /* Note: We already add the nodes of the initial state,
- then we don't need to add them here. */
- context = re_string_context_at (&mctx->input,
- re_string_cur_idx (&mctx->input) - 1,
- mctx->eflags);
- next_state = mctx->state_log[cur_idx]
- = re_acquire_state_context (err, dfa, &next_nodes, context);
- /* We don't need to check errors here, since the return value of
- this function is next_state and ERR is already set. */
+ /* Retry, we now have a transition table. */
+ }
+}
- if (table_nodes != NULL)
- re_node_set_free (&next_nodes);
- }
+/* Update the state_log if we need */
+re_dfastate_t *
+merge_state_with_log (err, mctx, next_state)
+ reg_errcode_t *err;
+ re_match_context_t *mctx;
+ re_dfastate_t *next_state;
+{
+ re_dfa_t *const dfa = mctx->dfa;
+ int cur_idx = re_string_cur_idx (&mctx->input);
+
+ if (cur_idx > mctx->state_log_top)
+ {
+ mctx->state_log[cur_idx] = next_state;
+ mctx->state_log_top = cur_idx;
+ }
+ else if (mctx->state_log[cur_idx] == 0)
+ {
+ mctx->state_log[cur_idx] = next_state;
+ }
+ else
+ {
+ re_dfastate_t *pstate;
+ unsigned int context;
+ re_node_set next_nodes, *log_nodes, *table_nodes = NULL;
+ /* If (state_log[cur_idx] != 0), it implies that cur_idx is
+ the destination of a multibyte char/collating element/
+ back reference. Then the next state is the union set of
+ these destinations and the results of the transition table. */
+ pstate = mctx->state_log[cur_idx];
+ log_nodes = pstate->entrance_nodes;
+ if (next_state != NULL)
+ {
+ table_nodes = next_state->entrance_nodes;
+ *err = re_node_set_init_union (&next_nodes, table_nodes,
+ log_nodes);
+ if (BE (*err != REG_NOERROR, 0))
+ return NULL;
+ }
+ else
+ next_nodes = *log_nodes;
+ /* Note: We already add the nodes of the initial state,
+ then we don't need to add them here. */
+
+ context = re_string_context_at (&mctx->input,
+ re_string_cur_idx (&mctx->input) - 1,
+ mctx->eflags);
+ next_state = mctx->state_log[cur_idx]
+ = re_acquire_state_context (err, dfa, &next_nodes, context);
+ /* We don't need to check errors here, since the return value of
+ this function is next_state and ERR is already set. */
+
+ if (table_nodes != NULL)
+ re_node_set_free (&next_nodes);
}
if (BE (dfa->nbackref, 0) && next_state != NULL)
@@ -2273,9 +2353,38 @@ transit_state (err, mctx, state)
next_state = mctx->state_log[cur_idx];
}
}
+
return next_state;
}
+/* Skip bytes in the input that correspond to part of a
+ multi-byte match, then look in the log for a state
+ from which to restart matching. */
+re_dfastate_t *
+find_recover_state (err, mctx)
+ reg_errcode_t *err;
+ re_match_context_t *mctx;
+{
+ re_dfastate_t *cur_state = NULL;
+ do
+ {
+ int max = mctx->state_log_top;
+ int cur_str_idx = re_string_cur_idx (&mctx->input);
+
+ do
+ {
+ if (++cur_str_idx > max)
+ return NULL;
+ re_string_skip_bytes (&mctx->input, 1);
+ }
+ while (mctx->state_log[cur_str_idx] == NULL);
+
+ cur_state = merge_state_with_log (err, mctx, NULL);
+ }
+ while (err == REG_NOERROR && cur_state == NULL);
+ return cur_state;
+}
+
/* Helper functions for transit_state. */
/* From the node set CUR_NODES, pick up the nodes whose types are
@@ -2371,10 +2480,13 @@ transit_state_mb (mctx, pstate)
{
re_node_set dest_nodes, *new_nodes;
int cur_node_idx = pstate->nodes.elems[i];
- int naccepted = 0, dest_idx;
+ int naccepted, dest_idx;
unsigned int context;
re_dfastate_t *dest_state;
+ if (!dfa->nodes[cur_node_idx].accept_mb)
+ continue;
+
if (dfa->nodes[cur_node_idx].constraint)
{
context = re_string_context_at (&mctx->input,
@@ -2386,9 +2498,8 @@ transit_state_mb (mctx, pstate)
}
/* How many bytes the node can accept? */
- if (ACCEPT_MB_NODE (dfa->nodes[cur_node_idx].type))
- naccepted = check_node_accept_bytes (dfa, cur_node_idx, &mctx->input,
- re_string_cur_idx (&mctx->input));
+ naccepted = check_node_accept_bytes (dfa, cur_node_idx, &mctx->input,
+ re_string_cur_idx (&mctx->input));
if (naccepted == 0)
continue;
@@ -2402,9 +2513,7 @@ transit_state_mb (mctx, pstate)
#ifdef DEBUG
assert (dfa->nexts[cur_node_idx] != -1);
#endif
- /* `cur_node_idx' may point the entity of the OP_CONTEXT_NODE,
- then we use pstate->nodes.elems[i] instead. */
- new_nodes = dfa->eclosures + dfa->nexts[pstate->nodes.elems[i]];
+ new_nodes = dfa->eclosures + dfa->nexts[cur_node_idx];
dest_state = mctx->state_log[dest_idx];
if (dest_state == NULL)
@@ -2553,16 +2662,16 @@ get_subexp (mctx, bkref_node, bkref_str_idx)
const char *buf = (const char *) re_string_get_buffer (&mctx->input);
/* Return if we have already checked BKREF_NODE at BKREF_STR_IDX. */
int cache_idx = search_cur_bkref_entry (mctx, bkref_str_idx);
- for (; cache_idx < mctx->nbkref_ents; ++cache_idx)
+ if (cache_idx != -1)
{
- const struct re_backref_cache_entry *entry
- = &mctx->bkref_ents[cache_idx];
- if (entry->str_idx > bkref_str_idx)
- break;
- if (entry->node == bkref_node)
- return REG_NOERROR; /* We already checked it. */
+ const struct re_backref_cache_entry *entry = mctx->bkref_ents + cache_idx;
+ do
+ if (entry->node == bkref_node)
+ return REG_NOERROR; /* We already checked it. */
+ while (entry++->more);
}
- subexp_num = dfa->nodes[bkref_node].opr.idx - 1;
+
+ subexp_num = dfa->nodes[bkref_node].opr.idx;
/* For each sub expression */
for (sub_top_idx = 0; sub_top_idx < mctx->nsub_tops; ++sub_top_idx)
@@ -2571,7 +2680,6 @@ get_subexp (mctx, bkref_node, bkref_str_idx)
re_sub_match_top_t *sub_top = mctx->sub_tops[sub_top_idx];
re_sub_match_last_t *sub_last;
int sub_last_idx, sl_str, bkref_str_off;
- const char *bkref_str;
if (dfa->nodes[sub_top->node].opr.idx != subexp_num)
continue; /* It isn't related. */
@@ -2587,9 +2695,24 @@ get_subexp (mctx, bkref_node, bkref_str_idx)
sl_str_diff = sub_last->str_idx - sl_str;
/* The matched string by the sub expression match with the substring
at the back reference? */
- if (sl_str_diff > 0
- && memcmp (buf + bkref_str_off, buf + sl_str, sl_str_diff) != 0)
- break; /* We don't need to search this sub expression any more. */
+ if (sl_str_diff > 0)
+ {
+ if (BE (bkref_str_off + sl_str_diff > mctx->input.valid_len, 0))
+ {
+ /* Not enough chars for a successful match. */
+ if (bkref_str_off + sl_str_diff > mctx->input.len)
+ break;
+
+ err = clean_state_log_if_needed (mctx,
+ bkref_str_off
+ + sl_str_diff);
+ if (BE (err != REG_NOERROR, 0))
+ return err;
+ buf = (const char *) re_string_get_buffer (&mctx->input);
+ }
+ if (memcmp (buf + bkref_str_off, buf + sl_str, sl_str_diff) != 0)
+ break; /* We don't need to search this sub expression any more. */
+ }
bkref_str_off += sl_str_diff;
sl_str += sl_str_diff;
err = get_subexp_sub (mctx, sub_top, sub_last, bkref_node,
@@ -2604,7 +2727,6 @@ get_subexp (mctx, bkref_node, bkref_str_idx)
if (BE (err != REG_NOERROR, 0))
return err;
}
- bkref_str = buf + bkref_str_off;
if (sub_last_idx < sub_top->nlasts)
continue;
@@ -2618,8 +2740,24 @@ get_subexp (mctx, bkref_node, bkref_str_idx)
sl_str_off = sl_str - sub_top->str_idx;
/* The matched string by the sub expression match with the substring
at the back reference? */
- if (sl_str_off > 0 && *bkref_str++ != buf[sl_str - 1])
- break; /* We don't need to search this sub expression any more. */
+ if (sl_str_off > 0)
+ {
+ if (BE (bkref_str_off >= mctx->input.valid_len, 0))
+ {
+ /* If we are at the end of the input, we cannot match. */
+ if (bkref_str_off >= mctx->input.len)
+ break;
+
+ err = extend_buffers (mctx);
+ if (BE (err != REG_NOERROR, 0))
+ return err;
+
+ buf = (const char *) re_string_get_buffer (&mctx->input);
+ }
+ if (buf [bkref_str_off++] != buf[sl_str - 1])
+ break; /* We don't need to search this sub expression
+ any more. */
+ }
if (mctx->state_log[sl_str] == NULL)
continue;
/* Does this state have a ')' of the sub expression? */
@@ -2679,8 +2817,7 @@ get_subexp_sub (mctx, sub_top, sub_last, bkref_node, bkref_str)
if (BE (err != REG_NOERROR, 0))
return err;
to_idx = bkref_str + sub_last->str_idx - sub_top->str_idx;
- clean_state_log_if_needed (mctx, to_idx);
- return REG_NOERROR;
+ return clean_state_log_if_needed (mctx, to_idx);
}
/* Find the first node which is '(' or ')' and whose index is SUBEXP_IDX.
@@ -2785,7 +2922,7 @@ check_arrival (mctx, path, top_node, top_str, last_node, last_str,
{
if (next_nodes.nelem)
{
- err = expand_bkref_cache (mctx, &next_nodes, str_idx, last_str,
+ err = expand_bkref_cache (mctx, &next_nodes, str_idx,
subexp_num, type);
if (BE ( err != REG_NOERROR, 0))
{
@@ -2818,7 +2955,7 @@ check_arrival (mctx, path, top_node, top_str, last_node, last_str,
if (cur_state)
{
err = check_arrival_add_next_nodes (mctx, str_idx,
- &cur_state->nodes, &next_nodes);
+ &cur_state->non_eps_nodes, &next_nodes);
if (BE (err != REG_NOERROR, 0))
{
re_node_set_free (&next_nodes);
@@ -2834,7 +2971,7 @@ check_arrival (mctx, path, top_node, top_str, last_node, last_str,
re_node_set_free (&next_nodes);
return err;
}
- err = expand_bkref_cache (mctx, &next_nodes, str_idx, last_str,
+ err = expand_bkref_cache (mctx, &next_nodes, str_idx,
subexp_num, type);
if (BE ( err != REG_NOERROR, 0))
{
@@ -2883,21 +3020,24 @@ check_arrival_add_next_nodes (mctx, str_idx, cur_nodes, next_nodes)
re_node_set *cur_nodes, *next_nodes;
{
re_dfa_t *const dfa = mctx->dfa;
+ int result;
int cur_idx;
- reg_errcode_t err;
re_node_set union_set;
re_node_set_init_empty (&union_set);
for (cur_idx = 0; cur_idx < cur_nodes->nelem; ++cur_idx)
{
int naccepted = 0;
int cur_node = cur_nodes->elems[cur_idx];
+#ifdef DEBUG
re_token_type_t type = dfa->nodes[cur_node].type;
- if (IS_EPSILON_NODE (type))
- continue;
+ assert (!IS_EPSILON_NODE (type));
+#endif
#ifdef RE_ENABLE_I18N
/* If the node may accept `multi byte'. */
- if (ACCEPT_MB_NODE (type))
+ if (dfa->nodes[cur_node].accept_mb)
{
+ reg_errcode_t err;
+
naccepted = check_node_accept_bytes (dfa, cur_node, &mctx->input,
str_idx);
if (naccepted > 1)
@@ -2916,8 +3056,8 @@ check_arrival_add_next_nodes (mctx, str_idx, cur_nodes, next_nodes)
return err;
}
}
- err = re_node_set_insert (&union_set, next_node);
- if (BE (err < 0, 0))
+ result = re_node_set_insert (&union_set, next_node);
+ if (BE (result < 0, 0))
{
re_node_set_free (&union_set);
return REG_ESPACE;
@@ -2936,8 +3076,8 @@ check_arrival_add_next_nodes (mctx, str_idx, cur_nodes, next_nodes)
if (naccepted
|| check_node_accept (mctx, dfa->nodes + cur_node, str_idx))
{
- err = re_node_set_insert (next_nodes, dfa->nexts[cur_node]);
- if (BE (err < 0, 0))
+ result = re_node_set_insert (next_nodes, dfa->nexts[cur_node]);
+ if (BE (result < 0, 0))
{
re_node_set_free (&union_set);
return REG_ESPACE;
@@ -3054,24 +3194,26 @@ check_arrival_expand_ecl_sub (dfa, dst_nodes, target, ex_subexp, type)
in MCTX->BKREF_ENTS. */
static reg_errcode_t
-expand_bkref_cache (mctx, cur_nodes, cur_str, last_str, subexp_num,
+expand_bkref_cache (mctx, cur_nodes, cur_str, subexp_num,
type)
re_match_context_t *mctx;
- int cur_str, last_str, subexp_num, type;
+ int cur_str, subexp_num, type;
re_node_set *cur_nodes;
{
re_dfa_t *const dfa = mctx->dfa;
reg_errcode_t err;
- int cache_idx, cache_idx_start;
- /* The current state. */
+ int cache_idx_start = search_cur_bkref_entry (mctx, cur_str);
+ struct re_backref_cache_entry *ent;
- cache_idx_start = search_cur_bkref_entry (mctx, cur_str);
- for (cache_idx = cache_idx_start; cache_idx < mctx->nbkref_ents; ++cache_idx)
+ if (cache_idx_start == -1)
+ return REG_NOERROR;
+
+ restart:
+ ent = mctx->bkref_ents + cache_idx_start;
+ do
{
int to_idx, next_node;
- struct re_backref_cache_entry *ent = mctx->bkref_ents + cache_idx;
- if (ent->str_idx > cur_str)
- break;
+
/* Is this entry ENT is appropriate? */
if (!re_node_set_contains (cur_nodes, ent->node))
continue; /* No. */
@@ -3100,8 +3242,7 @@ expand_bkref_cache (mctx, cur_nodes, cur_str, last_str, subexp_num,
return err;
}
/* TODO: It is still inefficient... */
- cache_idx = cache_idx_start - 1;
- continue;
+ goto restart;
}
else
{
@@ -3136,19 +3277,20 @@ expand_bkref_cache (mctx, cur_nodes, cur_str, last_str, subexp_num,
return err;
}
}
+ while (ent++->more);
return REG_NOERROR;
}
/* Build transition table for the state.
- Return the new table if succeeded, otherwise return NULL. */
+ Return 1 if succeeded, otherwise return NULL. */
-static re_dfastate_t **
+static int
build_trtable (dfa, state)
re_dfa_t *dfa;
re_dfastate_t *state;
{
reg_errcode_t err;
- int i, j, ch;
+ int i, j, ch, need_word_trtable = 0;
unsigned int elem, mask;
int dests_node_malloced = 0, dest_states_malloced = 0;
int ndests; /* Number of the destination states from `state'. */
@@ -3165,20 +3307,20 @@ build_trtable (dfa, state)
#ifdef _LIBC
if (__libc_use_alloca ((sizeof (re_node_set) + sizeof (bitset)) * SBC_MAX))
dests_node = (re_node_set *)
- alloca ((sizeof (re_node_set) + sizeof (bitset)) * SBC_MAX);
+ alloca ((sizeof (re_node_set) + sizeof (bitset)) * SBC_MAX);
else
#endif
{
dests_node = (re_node_set *)
- malloc ((sizeof (re_node_set) + sizeof (bitset)) * SBC_MAX);
+ malloc ((sizeof (re_node_set) + sizeof (bitset)) * SBC_MAX);
if (BE (dests_node == NULL, 0))
- return NULL;
+ return 0;
dests_node_malloced = 1;
}
dests_ch = (bitset *) (dests_node + SBC_MAX);
/* Initialize transiton table. */
- state->word_trtable = 0;
+ state->word_trtable = state->trtable = NULL;
/* At first, group all nodes belonging to `state' into several
destinations. */
@@ -3187,14 +3329,14 @@ build_trtable (dfa, state)
{
if (dests_node_malloced)
free (dests_node);
- /* Return NULL in case of an error, trtable otherwise. */
+ /* Return 0 in case of an error, 1 otherwise. */
if (ndests == 0)
{
state->trtable = (re_dfastate_t **)
- calloc (sizeof (re_dfastate_t *), SBC_MAX);;
- return state->trtable;
+ calloc (sizeof (re_dfastate_t *), SBC_MAX);
+ return 1;
}
- return NULL;
+ return 0;
}
err = re_node_set_alloc (&follows, ndests + 1);
@@ -3205,12 +3347,12 @@ build_trtable (dfa, state)
if (__libc_use_alloca ((sizeof (re_node_set) + sizeof (bitset)) * SBC_MAX
+ ndests * 3 * sizeof (re_dfastate_t *)))
dest_states = (re_dfastate_t **)
- alloca (ndests * 3 * sizeof (re_dfastate_t *));
+ alloca (ndests * 3 * sizeof (re_dfastate_t *));
else
#endif
{
dest_states = (re_dfastate_t **)
- malloc (ndests * 3 * sizeof (re_dfastate_t *));
+ malloc (ndests * 3 * sizeof (re_dfastate_t *));
if (BE (dest_states == NULL, 0))
{
out_free:
@@ -3221,7 +3363,7 @@ out_free:
re_node_set_free (dests_node + i);
if (dests_node_malloced)
free (dests_node);
- return NULL;
+ return 0;
}
dest_states_malloced = 1;
}
@@ -3257,9 +3399,8 @@ out_free:
if (BE (dest_states_word[i] == NULL && err != REG_NOERROR, 0))
goto out_free;
- if (dest_states[i] != dest_states_word[i]
- && dfa->mb_cur_max > 1)
- state->word_trtable = 1;
+ if (dest_states[i] != dest_states_word[i] && dfa->mb_cur_max > 1)
+ need_word_trtable = 1;
dest_states_nl[i] = re_acquire_state_context (&err, dfa, &follows,
CONTEXT_NEWLINE);
@@ -3274,13 +3415,14 @@ out_free:
bitset_merge (acceptable, dests_ch[i]);
}
- if (!BE (state->word_trtable, 0))
+ if (!BE (need_word_trtable, 0))
{
/* We don't care about whether the following character is a word
character, or we are in a single-byte character set so we can
discern by looking at the character code: allocate a
256-entry transition table. */
- trtable = (re_dfastate_t **) calloc (sizeof (re_dfastate_t *), SBC_MAX);
+ trtable = state->trtable =
+ (re_dfastate_t **) calloc (sizeof (re_dfastate_t *), SBC_MAX);
if (BE (trtable == NULL, 0))
goto out_free;
@@ -3310,8 +3452,8 @@ out_free:
by looking at the character code: build two 256-entry
transition tables, one starting at trtable[0] and one
starting at trtable[SBC_MAX]. */
- trtable = (re_dfastate_t **) calloc (sizeof (re_dfastate_t *),
- 2 * SBC_MAX);
+ trtable = state->word_trtable =
+ (re_dfastate_t **) calloc (sizeof (re_dfastate_t *), 2 * SBC_MAX);
if (BE (trtable == NULL, 0))
goto out_free;
@@ -3342,7 +3484,7 @@ out_free:
{
/* k-th destination accepts newline character. */
trtable[NEWLINE_CHAR] = dest_states_nl[j];
- if (state->word_trtable)
+ if (need_word_trtable)
trtable[NEWLINE_CHAR + SBC_MAX] = dest_states_nl[j];
/* There must be only one destination which accepts
newline. See group_nodes_into_DFAstates. */
@@ -3360,8 +3502,7 @@ out_free:
if (dests_node_malloced)
free (dests_node);
- state->trtable = trtable;
- return trtable;
+ return 1;
}
/* Group all nodes belonging to STATE into several destinations.
@@ -3377,6 +3518,7 @@ group_nodes_into_DFAstates (dfa, state, dests_node, dests_ch)
bitset *dests_ch;
{
reg_errcode_t err;
+ int result;
int i, j, k;
int ndests; /* Number of the destinations from `state'. */
bitset accepts; /* Characters a node can accept. */
@@ -3525,8 +3667,8 @@ group_nodes_into_DFAstates (dfa, state, dests_node, dests_ch)
}
/* Put the position in the current group. */
- err = re_node_set_insert (&dests_node[j], cur_nodes->elems[i]);
- if (BE (err < 0, 0))
+ result = re_node_set_insert (&dests_node[j], cur_nodes->elems[i]);
+ if (BE (result < 0, 0))
goto error_return;
/* If all characters are consumed, go to next node. */
@@ -3638,7 +3780,7 @@ check_node_accept_bytes (dfa, node_idx, input, str_idx)
}
elem_len = re_string_elem_size_at (input, str_idx);
- if (elem_len <= 1 && char_len <= 1)
+ if ((elem_len <= 1 && char_len <= 1) || char_len == 0)
return 0;
if (node->type == COMPLEX_BRACKET)
@@ -3819,8 +3961,10 @@ find_collation_sequence_value (mbs, mbs_len)
int32_t idx;
const unsigned char *extra = (const unsigned char *)
_NL_CURRENT (LC_COLLATE, _NL_COLLATE_SYMB_EXTRAMB);
+ int32_t extrasize = (const unsigned char *)
+ _NL_CURRENT (LC_COLLATE, _NL_COLLATE_SYMB_EXTRAMB + 1) - extra;
- for (idx = 0; ;)
+ for (idx = 0; idx < extrasize;)
{
int mbs_cnt, found = 0;
int32_t elem_mbs_len;
@@ -3850,6 +3994,7 @@ find_collation_sequence_value (mbs, mbs_len)
/* Skip the collation sequence value. */
idx += sizeof (uint32_t);
}
+ return UINT_MAX;
}
}
# endif /* _LIBC */
@@ -3864,24 +4009,20 @@ check_node_accept (mctx, node, idx)
const re_token_t *node;
int idx;
{
- re_dfa_t *const dfa = mctx->dfa;
unsigned char ch;
- if (node->constraint)
- {
- /* The node has constraints. Check whether the current context
- satisfies the constraints. */
- unsigned int context = re_string_context_at (&mctx->input, idx,
- mctx->eflags);
- if (NOT_SATISFY_NEXT_CONSTRAINT (node->constraint, context))
- return 0;
- }
ch = re_string_byte_at (&mctx->input, idx);
switch (node->type)
{
case CHARACTER:
- return node->opr.c == ch;
+ if (node->opr.c != ch)
+ return 0;
+ break;
+
case SIMPLE_BRACKET:
- return bitset_contain (node->opr.sbcset, ch);
+ if (!bitset_contain (node->opr.sbcset, ch))
+ return 0;
+ break;
+
#ifdef RE_ENABLE_I18N
case OP_UTF8_PERIOD:
if (ch >= 0x80)
@@ -3889,11 +4030,26 @@ check_node_accept (mctx, node, idx)
/* FALLTHROUGH */
#endif
case OP_PERIOD:
- return !((ch == '\n' && !(dfa->syntax & RE_DOT_NEWLINE))
- || (ch == '\0' && (dfa->syntax & RE_DOT_NOT_NULL)));
+ if ((ch == '\n' && !(mctx->dfa->syntax & RE_DOT_NEWLINE))
+ || (ch == '\0' && (mctx->dfa->syntax & RE_DOT_NOT_NULL)))
+ return 0;
+ break;
+
default:
return 0;
}
+
+ if (node->constraint)
+ {
+ /* The node has constraints. Check whether the current context
+ satisfies the constraints. */
+ unsigned int context = re_string_context_at (&mctx->input, idx,
+ mctx->eflags);
+ if (NOT_SATISFY_NEXT_CONSTRAINT (node->constraint, context))
+ return 0;
+ }
+
+ return 1;
}
/* Extend the buffers, if the buffers have run out. */
@@ -3990,28 +4146,6 @@ static void
match_ctx_clean (mctx)
re_match_context_t *mctx;
{
- match_ctx_free_subtops (mctx);
- mctx->nsub_tops = 0;
- mctx->nbkref_ents = 0;
-}
-
-/* Free all the memory associated with MCTX. */
-
-static void
-match_ctx_free (mctx)
- re_match_context_t *mctx;
-{
- match_ctx_free_subtops (mctx);
- re_free (mctx->sub_tops);
- re_free (mctx->bkref_ents);
-}
-
-/* Free all the memory associated with MCTX->SUB_TOPS. */
-
-static void
-match_ctx_free_subtops (mctx)
- re_match_context_t *mctx;
-{
int st_idx;
for (st_idx = 0; st_idx < mctx->nsub_tops; ++st_idx)
{
@@ -4031,6 +4165,21 @@ match_ctx_free_subtops (mctx)
}
free (top);
}
+
+ mctx->nsub_tops = 0;
+ mctx->nbkref_ents = 0;
+}
+
+/* Free all the memory associated with MCTX. */
+
+static void
+match_ctx_free (mctx)
+ re_match_context_t *mctx;
+{
+ /* First, free all the memory associated with MCTX->SUB_TOPS. */
+ match_ctx_clean (mctx);
+ re_free (mctx->sub_tops);
+ re_free (mctx->bkref_ents);
}
/* Add a new backreference entry to MCTX.
@@ -4058,26 +4207,42 @@ match_ctx_add_entry (mctx, node, str_idx, from, to)
sizeof (struct re_backref_cache_entry) * mctx->abkref_ents);
mctx->abkref_ents *= 2;
}
+ if (mctx->nbkref_ents > 0
+ && mctx->bkref_ents[mctx->nbkref_ents - 1].str_idx == str_idx)
+ mctx->bkref_ents[mctx->nbkref_ents - 1].more = 1;
+
mctx->bkref_ents[mctx->nbkref_ents].node = node;
mctx->bkref_ents[mctx->nbkref_ents].str_idx = str_idx;
mctx->bkref_ents[mctx->nbkref_ents].subexp_from = from;
mctx->bkref_ents[mctx->nbkref_ents].subexp_to = to;
- mctx->bkref_ents[mctx->nbkref_ents++].flag = 0;
+
+ /* This is a cache that saves negative results of check_dst_limits_calc_pos.
+ If bit N is clear, means that this entry won't epsilon-transition to
+ an OP_OPEN_SUBEXP or OP_CLOSE_SUBEXP for the N+1-th subexpression. If
+ it is set, check_dst_limits_calc_pos_1 will recurse and try to find one
+ such node.
+
+ A backreference does not epsilon-transition unless it is empty, so set
+ to all zeros if FROM != TO. */
+ mctx->bkref_ents[mctx->nbkref_ents].eps_reachable_subexps_map
+ = (from == to ? ~0 : 0);
+
+ mctx->bkref_ents[mctx->nbkref_ents++].more = 0;
if (mctx->max_mb_elem_len < to - from)
mctx->max_mb_elem_len = to - from;
return REG_NOERROR;
}
-/* Search for the first entry which has the same str_idx.
- Note that MCTX->BKREF_ENTS is already sorted by MCTX->STR_IDX. */
+/* Search for the first entry which has the same str_idx, or -1 if none is
+ found. Note that MCTX->BKREF_ENTS is already sorted by MCTX->STR_IDX. */
static int
search_cur_bkref_entry (mctx, str_idx)
re_match_context_t *mctx;
int str_idx;
{
- int left, right, mid;
- right = mctx->nbkref_ents;
+ int left, right, mid, last;
+ last = right = mctx->nbkref_ents;
for (left = 0; left < right;)
{
mid = (left + right) / 2;
@@ -4086,16 +4251,10 @@ search_cur_bkref_entry (mctx, str_idx)
else
right = mid;
}
- return left;
-}
-
-static void
-match_ctx_clear_flag (mctx)
- re_match_context_t *mctx;
-{
- int i;
- for (i = 0; i < mctx->nbkref_ents; ++i)
- mctx->bkref_ents[i].flag = 0;
+ if (left < last && mctx->bkref_ents[left].str_idx == str_idx)
+ return left;
+ else
+ return -1;
}
/* Register the node NODE, whose type is OP_OPEN_SUBEXP, and which matches
@@ -4161,18 +4320,14 @@ match_ctx_add_sublast (subtop, node, str_idx)
}
static void
-sift_ctx_init (sctx, sifted_sts, limited_sts, last_node, last_str_idx,
- check_subexp)
+sift_ctx_init (sctx, sifted_sts, limited_sts, last_node, last_str_idx)
re_sift_context_t *sctx;
re_dfastate_t **sifted_sts, **limited_sts;
- int last_node, last_str_idx, check_subexp;
+ int last_node, last_str_idx;
{
sctx->sifted_states = sifted_sts;
sctx->limited_states = limited_sts;
sctx->last_node = last_node;
sctx->last_str_idx = last_str_idx;
- sctx->check_subexp = check_subexp;
- sctx->cur_bkref = -1;
- sctx->cls_subexp_idx = -1;
re_node_set_init_empty (&sctx->limits);
}
diff --git a/test/ChangeLog b/test/ChangeLog
index 16b03278..2ce66aee 100644
--- a/test/ChangeLog
+++ b/test/ChangeLog
@@ -1,3 +1,75 @@
+Tue Jul 26 21:46:16 2005 Arnold D. Robbins <arnold@skeeve.com>
+
+ * Release 3.1.5: Release tar file made.
+
+Sun Jul 10 18:31:45 2005 Scott Deifik <scottd@amgen.com>
+
+ * regtest.sh: Changed to use diff instead of cmp for djgpp.
+ This addresses DOS vs. UNIX end-of-line issues.
+
+Thu Jun 9 23:40:14 2005 Arnold D. Robbins <arnold@skeeve.com>
+
+ * Makefile.am (Maketests): Don't use $< in rule, it breaks
+ on some non-GNU versions of make. Sigh.
+
+Wed Apr 27 22:22:05 2005 Arnold D. Robbins <arnold@skeeve.com>
+
+ * Makefile.am (longdbl): new test.
+ * longdbl.awk, longdbl.in, longdbl.ok: new files.
+
+Wed Feb 2 16:44:41 2005 Arnold D. Robbins <arnold@skeeve.com>
+
+ * Makefile.am (exitval2): new test.
+ * exitval2.awk, exitval2.ok: new files.
+
+Mon Jan 31 10:00:52 2005 Arnold D. Robbins <arnold@skeeve.com>
+
+ * Makefile.am (gnuops3): new test.
+ * gnuops3.awk, gnuops3.ok: new files.
+
+Wed Jan 19 18:04:40 2005 Arnold D. Robbins <arnold@skeeve.com>
+
+ * Makefile.am (hex): new test.
+ * hex.awk, hex.ok: new files.
+
+Sun Jan 9 11:53:09 2005 Arnold D. Robbins <arnold@skeeve.com>
+
+ * Makefile.am (strftime, igncras2, subamp): Use `GAWKLOCALE',
+ not `GAWK_LOCALE'. Grrr!
+
+Mon Jan 3 12:20:08 2005 William J. Poser <wjposer@ldc.upenn.edu>
+
+ * Makefile.am (wjposer1): new test.
+ * wjposer1.awk, wjposer1.in, wjposer1.ok: new files.
+
+Mon Jan 3 11:55:48 2005 Arnold D. Robbins <arnold@skeeve.com>
+
+ * Makefile.am (rsstart1, rsstart2, rsstart3): new tests.
+ * rsstart1.in, rsstart1.awk, rsstart1.ok, rsstart2.awk,
+ rsstart2.ok, rsstart3.ok: new files.
+
+Sun Dec 19 17:31:48 2004 Arnold D. Robbins <arnold@skeeve.com>
+
+ * Makefile.am (gensub2): new test.
+ * gensub2.awk, gensub2.ok: new files.
+
+ Thanks to "John H. DuBois III" <spcecdt@armory.com>.
+
+Thu Dec 9 15:22:58 2004 Arnold D. Robbins <arnold@skeeve.com>
+
+ * Makefile.am (fsspcoln): new test.
+ * fsspcoln.awk, fsspcoln.in, fsspcoln.ok: new files.
+
+Mon Nov 29 18:41:33 2004 Arnold D. Robbins <arnold@skeeve.com>
+
+ * Makefile.am (iobug1): new test.
+ * iobug1.awk, iobug1.ok: new files.
+
+Tue Sep 28 18:39:53 2004 Arnold D. Robbins <arnold@skeeve.com>
+
+ * nondec.awk, nondec.ok: Add 00.34 as value to print, it should
+ not be treated as octal.
+
Mon Aug 2 12:18:15 2004 Arnold D. Robbins <arnold@skeeve.com>
* Release 3.1.4: Release tar file made.
diff --git a/test/Makefile.am b/test/Makefile.am
index db23d1f0..ada5d393 100644
--- a/test/Makefile.am
+++ b/test/Makefile.am
@@ -1,7 +1,7 @@
#
# test/Makefile.am --- automake input file for gawk
#
-# Copyright (C) 1988-2004 the Free Software Foundation, Inc.
+# Copyright (C) 1988-2005 the Free Software Foundation, Inc.
#
# This file is part of GAWK, the GNU implementation of the
# AWK Programming Language.
@@ -18,7 +18,7 @@
#
# 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
+# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA
#
## process this file with automake to produce Makefile.in
@@ -140,6 +140,8 @@ EXTRA_DIST = \
eofsplit.ok \
exitval1.awk \
exitval1.ok \
+ exitval2.awk \
+ exitval2.ok \
fflush.ok \
fflush.sh \
fieldwdth.awk \
@@ -184,6 +186,9 @@ EXTRA_DIST = \
fsrs.awk \
fsrs.in \
fsrs.ok \
+ fsspcoln.awk \
+ fsspcoln.in \
+ fsspcoln.ok \
fstabplus.awk \
fstabplus.in \
fstabplus.ok \
@@ -197,6 +202,8 @@ EXTRA_DIST = \
gensub.awk \
gensub.in \
gensub.ok \
+ gensub2.awk \
+ gensub2.ok \
getline.awk \
getline.in \
getline.ok \
@@ -217,6 +224,8 @@ EXTRA_DIST = \
getnr2tm.ok \
gnuops2.awk \
gnuops2.ok \
+ gnuops3.awk \
+ gnuops3.ok \
gnureops.awk \
gnureops.ok \
gsubasgn.awk \
@@ -234,6 +243,8 @@ EXTRA_DIST = \
gsubtst5.in \
gsubtst5.ok \
gtlnbufv.awk \
+ hex.awk \
+ hex.ok \
hsprint.awk \
hsprint.ok \
icasefs.awk \
@@ -260,6 +271,8 @@ EXTRA_DIST = \
intest.ok \
intprec.awk \
intprec.ok \
+ iobug1.awk \
+ iobug1.ok \
leaddig.awk \
leaddig.ok \
leadnl.awk \
@@ -269,6 +282,9 @@ EXTRA_DIST = \
lint.ok \
litoct.awk \
litoct.ok \
+ longdbl.awk \
+ longdbl.in \
+ longdbl.ok \
longsub.awk \
longsub.in \
longsub.ok \
@@ -330,6 +346,8 @@ EXTRA_DIST = \
noloop2.ok \
nondec.awk \
nondec.ok \
+ nondec2.awk \
+ nondec2.ok \
nonl.awk \
nonl.ok \
noparms.awk \
@@ -452,6 +470,12 @@ EXTRA_DIST = \
rsnul1nl.ok \
rsnulbig.ok \
rsnulbig2.ok \
+ rsstart1.awk \
+ rsstart1.in \
+ rsstart1.ok \
+ rsstart2.awk \
+ rsstart2.ok \
+ rsstart3.ok \
rstest1.awk \
rstest1.ok \
rstest2.awk \
@@ -540,11 +564,16 @@ EXTRA_DIST = \
whiny.awk \
whiny.in \
whiny.ok \
+ wjposer1.awk \
+ wjposer1.in \
+ wjposer1.ok \
zeroe0.awk \
zeroe0.ok \
zeroflag.awk \
zeroflag.ok
+TESTS_WE_ARE_NOT_DOING_YET_FIXME_ONE_DAY = longdbl
+
# Get rid of core files when cleaning
CLEANFILES = core core.*
@@ -554,12 +583,12 @@ BASIC_TESTS = addcomma anchgsub argarray arrayparm arrayref arrymem1 \
arynocls aryprm1 aryprm2 aryprm3 aryprm4 aryprm5 aryprm6 aryprm7 \
aryprm8 arysubnm asgext awkpath back89 backgsub childin clobber \
clsflnam compare compare2 concat1 concat2 concat3 convfmt datanonl defref \
- delarprm delarpm2 delfunc dynlj eofsplit exitval1 fldchg fldchgnf fmttest fnamedat \
+ delarprm delarpm2 delfunc dynlj eofsplit exitval1 exitval2 fldchg fldchgnf fmttest fnamedat \
fnarray fnarray2 fnarydel fnaryscl fnasgnm fnmisc fnparydl \
- fordel forsimp fsbs fsrs fstabplus funsemnl funsmnam funstack getline \
+ fordel forsimp fsbs fsspcoln fsrs fstabplus funsemnl funsmnam funstack getline \
getline2 getline3 getlnbuf getnr2tb getnr2tm gsubasgn gsubtest \
- gsubtst2 gsubtst3 gsubtst4 gsubtst5 hsprint inputred intest \
- intprec leaddig leadnl litoct longsub longwrds manglprm math membug1 \
+ gsubtst2 gsubtst3 gsubtst4 gsubtst5 hex hsprint inputred intest \
+ intprec iobug1 leaddig leadnl litoct longsub longwrds manglprm math membug1 \
messages minusstr mmap8k nasty nasty2 negexp nested nfldstr \
nfneg nfset nlfldsep nlinstr nlstrina noeffect nofmtch noloop1 \
noloop2 nonl noparms nors nulrsend numindex numsubstr octsub ofmt \
@@ -570,14 +599,16 @@ BASIC_TESTS = addcomma anchgsub argarray arrayparm arrayref arrymem1 \
rstest2 rstest3 rstest4 rstest5 rswhite scalar sclforin sclifin \
sortempty splitargv splitarr splitdef splitvar splitwht sprintfc \
strcat1 strtod subamp subsepnm subslash substr swaplns synerr1 tradanch \
- tweakfld uninit2 uninit3 uninit4 uninitialized unterm zeroe0 zeroflag
+ tweakfld uninit2 uninit3 uninit4 uninitialized unterm wjposer1 \
+ zeroe0 zeroflag
UNIX_TESTS = fflush getlnhd pid pipeio1 pipeio2 poundbang space strftlng
GAWK_EXT_TESTS = argtest asort asorti backw badargs clos1way fieldwdth fsfwfs \
- gensub gnuops2 gnureops icasefs icasers igncdym igncfs ignrcase \
- ignrcas2 lint match1 match2 manyfiles nondec posix procinfs \
- printfbad1 regx8bit rebuf reint rstest6 shadow sort1 strtonum strftime whiny
+ gensub gensub2 gnuops2 gnuops3 gnureops icasefs icasers igncdym igncfs ignrcase \
+ ignrcas2 lint match1 match2 manyfiles nondec nondec2 posix procinfs \
+ printfbad1 regx8bit rebuf reint rsstart1 rsstart2 rsstart3 \
+ rstest6 shadow sort1 strtonum strftime whiny
EXTRA_TESTS = regtest inftest
@@ -739,7 +770,7 @@ strftime::
@echo This test could fail on slow machines or on a minute boundary,
@echo so if it does, double check the actual results:
@echo $@
- @GAWK_LOCALE=C; export GAWK_LOCALE; \
+ @GAWKLOCALE=C; export GAWKLOCALE; \
TZ=GMT0; export TZ; \
(LC_ALL=C date) | $(AWK) -v OUTPUT=_$@ -f $(srcdir)/strftime.awk
@-$(CMP) strftime.ok _$@ && rm -f _$@ strftime.ok || exit 0
@@ -894,13 +925,13 @@ whiny::
ignrcas2::
@echo $@
- @GAWK_LOCALE=en_US ; export GAWK_LOCALE ; \
+ @GAWKLOCALE=en_US ; export GAWKLOCALE ; \
$(AWK) -f $(srcdir)/$@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >> _$@
@-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
subamp::
@echo $@
- @GAWK_LOCALE=en_US.UTF-8 ; export GAWK_LOCALE ; \
+ @GAWKLOCALE=en_US.UTF-8 ; export GAWKLOCALE ; \
$(AWK) -f $(srcdir)/$@.awk $(srcdir)/$@.in >_$@ 2>&1 || echo EXIT CODE: $$? >> _$@
@-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
@@ -911,11 +942,36 @@ exitval1::
@$(AWK) -f $(srcdir)/exitval1.awk >_$@ 2>&1; echo EXIT CODE: $$? >>_$@
@-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
+fsspcoln::
+ @echo $@
+ @$(AWK) -f $(srcdir)/$@.awk 'FS=[ :]+' $(srcdir)/$@.in >_$@
+ @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
+
+rsstart1::
+ @echo $@
+ @$(AWK) -f $(srcdir)/$@.awk $(srcdir)/rsstart1.in >_$@
+ @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
+
+rsstart2::
+ @echo $@
+ @$(AWK) -f $(srcdir)/$@.awk $(srcdir)/rsstart1.in >_$@
+ @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
+
+rsstart3::
+ @echo $@
+ @head $(srcdir)/rsstart1.in | $(AWK) -f $(srcdir)/rsstart2.awk >_$@
+ @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
+
+nondec2::
+ @echo $@
+ @$(AWK) --non-decimal-data -v a=0x1 -f $(srcdir)/$@.awk >_$@
+ @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
+
# Targets generated for other tests:
include Maketests
$(srcdir)/Maketests: $(srcdir)/Makefile.am $(srcdir)/Gentests
- $(AWK) -f $(srcdir)/Gentests "$<" *.awk *.in > $(srcdir)/Maketests
+ $(AWK) -f $(srcdir)/Gentests "$(srcdir)/Makefile.am" *.awk *.in > $(srcdir)/Maketests
clean:
rm -fr _* core core.* junk out1 out2 out3 strftime.ok test1 test2 seq *~
diff --git a/test/Makefile.in b/test/Makefile.in
index 5619fdc9..0ce9b099 100644
--- a/test/Makefile.in
+++ b/test/Makefile.in
@@ -1,8 +1,8 @@
-# Makefile.in generated by automake 1.8.5 from Makefile.am.
+# Makefile.in generated by automake 1.9.5 from Makefile.am.
# @configure_input@
# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
-# 2003, 2004 Free Software Foundation, Inc.
+# 2003, 2004, 2005 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.
@@ -17,7 +17,7 @@
#
# test/Makefile.am --- automake input file for gawk
#
-# Copyright (C) 1988-2004 the Free Software Foundation, Inc.
+# Copyright (C) 1988-2005 the Free Software Foundation, Inc.
#
# This file is part of GAWK, the GNU implementation of the
# AWK Programming Language.
@@ -34,7 +34,7 @@
#
# 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
+# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA
#
srcdir = @srcdir@
top_srcdir = @top_srcdir@
@@ -56,27 +56,21 @@ POST_INSTALL = :
NORMAL_UNINSTALL = :
PRE_UNINSTALL = :
POST_UNINSTALL = :
+build_triplet = @build@
host_triplet = @host@
DIST_COMMON = README $(srcdir)/Makefile.am $(srcdir)/Makefile.in \
$(srcdir)/Maketests ChangeLog
subdir = test
ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
am__aclocal_m4_deps = $(top_srcdir)/m4/arch.m4 \
- $(top_srcdir)/m4/codeset.m4 $(top_srcdir)/m4/gettext.m4 \
- $(top_srcdir)/m4/glibc21.m4 $(top_srcdir)/m4/iconv.m4 \
- $(top_srcdir)/m4/intdiv0.m4 $(top_srcdir)/m4/intmax.m4 \
- $(top_srcdir)/m4/intmax_t.m4 $(top_srcdir)/m4/inttypes-pri.m4 \
- $(top_srcdir)/m4/inttypes.m4 $(top_srcdir)/m4/inttypes_h.m4 \
- $(top_srcdir)/m4/lcmessage.m4 $(top_srcdir)/m4/lib-ld.m4 \
- $(top_srcdir)/m4/lib-link.m4 $(top_srcdir)/m4/lib-prefix.m4 \
- $(top_srcdir)/m4/longdouble.m4 $(top_srcdir)/m4/longlong.m4 \
+ $(top_srcdir)/m4/gettext.m4 $(top_srcdir)/m4/iconv.m4 \
+ $(top_srcdir)/m4/intmax_t.m4 $(top_srcdir)/m4/inttypes_h.m4 \
+ $(top_srcdir)/m4/lib-ld.m4 $(top_srcdir)/m4/lib-link.m4 \
+ $(top_srcdir)/m4/lib-prefix.m4 $(top_srcdir)/m4/longlong.m4 \
$(top_srcdir)/m4/nls.m4 $(top_srcdir)/m4/po.m4 \
- $(top_srcdir)/m4/printf-posix.m4 $(top_srcdir)/m4/progtest.m4 \
- $(top_srcdir)/m4/signed.m4 $(top_srcdir)/m4/size_max.m4 \
- $(top_srcdir)/m4/socket.m4 $(top_srcdir)/m4/stdint_h.m4 \
- $(top_srcdir)/m4/strtod.m4 $(top_srcdir)/m4/uintmax_t.m4 \
- $(top_srcdir)/m4/ulonglong.m4 $(top_srcdir)/m4/wchar_t.m4 \
- $(top_srcdir)/m4/wint_t.m4 $(top_srcdir)/m4/xsize.m4 \
+ $(top_srcdir)/m4/progtest.m4 $(top_srcdir)/m4/socket.m4 \
+ $(top_srcdir)/m4/stdint_h.m4 $(top_srcdir)/m4/strtod.m4 \
+ $(top_srcdir)/m4/uintmax_t.m4 $(top_srcdir)/m4/ulonglong.m4 \
$(top_srcdir)/configure.ac
am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
$(ACLOCAL_M4)
@@ -87,7 +81,6 @@ SOURCES =
DIST_SOURCES =
DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
ACLOCAL = @ACLOCAL@
-ALLOCA = @ALLOCA@
AMDEP_FALSE = @AMDEP_FALSE@
AMDEP_TRUE = @AMDEP_TRUE@
AMTAR = @AMTAR@
@@ -101,15 +94,12 @@ AUTOMAKE = @AUTOMAKE@
# This can also be done in individual tests where we wish to
# check things specifically not in the C locale.
AWK = LC_ALL=$${GAWKLOCALE:-C} LANG=$${GAWKLOCALE:-C} $(AWKPROG)
-BUILD_INCLUDED_LIBINTL = @BUILD_INCLUDED_LIBINTL@
-CATOBJEXT = @CATOBJEXT@
CC = @CC@
CCDEPMODE = @CCDEPMODE@
CFLAGS = @CFLAGS@
CPP = @CPP@
CPPFLAGS = @CPPFLAGS@
CYGPATH_W = @CYGPATH_W@
-DATADIRNAME = @DATADIRNAME@
DEFS = @DEFS@
DEPDIR = @DEPDIR@
ECHO_C = @ECHO_C@
@@ -117,22 +107,13 @@ 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@
+INTL_MACOSX_LIBS = @INTL_MACOSX_LIBS@
LDFLAGS = @LDFLAGS@
LIBICONV = @LIBICONV@
LIBINTL = @LIBINTL@
@@ -161,7 +142,6 @@ SHELL = @SHELL@
SOCKET_LIBS = @SOCKET_LIBS@
STRIP = @STRIP@
U = @U@
-USE_INCLUDED_LIBINTL = @USE_INCLUDED_LIBINTL@
USE_NLS = @USE_NLS@
VERSION = @VERSION@
XGETTEXT = @XGETTEXT@
@@ -174,6 +154,8 @@ am__fastdepCC_TRUE = @am__fastdepCC_TRUE@
am__include = @am__include@
am__leading_dot = @am__leading_dot@
am__quote = @am__quote@
+am__tar = @am__tar@
+am__untar = @am__untar@
bindir = @bindir@
build = @build@
build_alias = @build_alias@
@@ -319,6 +301,8 @@ EXTRA_DIST = \
eofsplit.ok \
exitval1.awk \
exitval1.ok \
+ exitval2.awk \
+ exitval2.ok \
fflush.ok \
fflush.sh \
fieldwdth.awk \
@@ -363,6 +347,9 @@ EXTRA_DIST = \
fsrs.awk \
fsrs.in \
fsrs.ok \
+ fsspcoln.awk \
+ fsspcoln.in \
+ fsspcoln.ok \
fstabplus.awk \
fstabplus.in \
fstabplus.ok \
@@ -376,6 +363,8 @@ EXTRA_DIST = \
gensub.awk \
gensub.in \
gensub.ok \
+ gensub2.awk \
+ gensub2.ok \
getline.awk \
getline.in \
getline.ok \
@@ -396,6 +385,8 @@ EXTRA_DIST = \
getnr2tm.ok \
gnuops2.awk \
gnuops2.ok \
+ gnuops3.awk \
+ gnuops3.ok \
gnureops.awk \
gnureops.ok \
gsubasgn.awk \
@@ -413,6 +404,8 @@ EXTRA_DIST = \
gsubtst5.in \
gsubtst5.ok \
gtlnbufv.awk \
+ hex.awk \
+ hex.ok \
hsprint.awk \
hsprint.ok \
icasefs.awk \
@@ -439,6 +432,8 @@ EXTRA_DIST = \
intest.ok \
intprec.awk \
intprec.ok \
+ iobug1.awk \
+ iobug1.ok \
leaddig.awk \
leaddig.ok \
leadnl.awk \
@@ -448,6 +443,9 @@ EXTRA_DIST = \
lint.ok \
litoct.awk \
litoct.ok \
+ longdbl.awk \
+ longdbl.in \
+ longdbl.ok \
longsub.awk \
longsub.in \
longsub.ok \
@@ -509,6 +507,8 @@ EXTRA_DIST = \
noloop2.ok \
nondec.awk \
nondec.ok \
+ nondec2.awk \
+ nondec2.ok \
nonl.awk \
nonl.ok \
noparms.awk \
@@ -631,6 +631,12 @@ EXTRA_DIST = \
rsnul1nl.ok \
rsnulbig.ok \
rsnulbig2.ok \
+ rsstart1.awk \
+ rsstart1.in \
+ rsstart1.ok \
+ rsstart2.awk \
+ rsstart2.ok \
+ rsstart3.ok \
rstest1.awk \
rstest1.ok \
rstest2.awk \
@@ -719,11 +725,15 @@ EXTRA_DIST = \
whiny.awk \
whiny.in \
whiny.ok \
+ wjposer1.awk \
+ wjposer1.in \
+ wjposer1.ok \
zeroe0.awk \
zeroe0.ok \
zeroflag.awk \
zeroflag.ok
+TESTS_WE_ARE_NOT_DOING_YET_FIXME_ONE_DAY = longdbl
# Get rid of core files when cleaning
CLEANFILES = core core.*
@@ -734,12 +744,12 @@ BASIC_TESTS = addcomma anchgsub argarray arrayparm arrayref arrymem1 \
arynocls aryprm1 aryprm2 aryprm3 aryprm4 aryprm5 aryprm6 aryprm7 \
aryprm8 arysubnm asgext awkpath back89 backgsub childin clobber \
clsflnam compare compare2 concat1 concat2 concat3 convfmt datanonl defref \
- delarprm delarpm2 delfunc dynlj eofsplit exitval1 fldchg fldchgnf fmttest fnamedat \
+ delarprm delarpm2 delfunc dynlj eofsplit exitval1 exitval2 fldchg fldchgnf fmttest fnamedat \
fnarray fnarray2 fnarydel fnaryscl fnasgnm fnmisc fnparydl \
- fordel forsimp fsbs fsrs fstabplus funsemnl funsmnam funstack getline \
+ fordel forsimp fsbs fsspcoln fsrs fstabplus funsemnl funsmnam funstack getline \
getline2 getline3 getlnbuf getnr2tb getnr2tm gsubasgn gsubtest \
- gsubtst2 gsubtst3 gsubtst4 gsubtst5 hsprint inputred intest \
- intprec leaddig leadnl litoct longsub longwrds manglprm math membug1 \
+ gsubtst2 gsubtst3 gsubtst4 gsubtst5 hex hsprint inputred intest \
+ intprec iobug1 leaddig leadnl litoct longsub longwrds manglprm math membug1 \
messages minusstr mmap8k nasty nasty2 negexp nested nfldstr \
nfneg nfset nlfldsep nlinstr nlstrina noeffect nofmtch noloop1 \
noloop2 nonl noparms nors nulrsend numindex numsubstr octsub ofmt \
@@ -750,13 +760,15 @@ BASIC_TESTS = addcomma anchgsub argarray arrayparm arrayref arrymem1 \
rstest2 rstest3 rstest4 rstest5 rswhite scalar sclforin sclifin \
sortempty splitargv splitarr splitdef splitvar splitwht sprintfc \
strcat1 strtod subamp subsepnm subslash substr swaplns synerr1 tradanch \
- tweakfld uninit2 uninit3 uninit4 uninitialized unterm zeroe0 zeroflag
+ tweakfld uninit2 uninit3 uninit4 uninitialized unterm wjposer1 \
+ zeroe0 zeroflag
UNIX_TESTS = fflush getlnhd pid pipeio1 pipeio2 poundbang space strftlng
GAWK_EXT_TESTS = argtest asort asorti backw badargs clos1way fieldwdth fsfwfs \
- gensub gnuops2 gnureops icasefs icasers igncdym igncfs ignrcase \
- ignrcas2 lint match1 match2 manyfiles nondec posix procinfs \
- printfbad1 regx8bit rebuf reint rstest6 shadow sort1 strtonum strftime whiny
+ gensub gensub2 gnuops2 gnuops3 gnureops icasefs icasers igncdym igncfs ignrcase \
+ ignrcas2 lint match1 match2 manyfiles nondec nondec2 posix procinfs \
+ printfbad1 regx8bit rebuf reint rsstart1 rsstart2 rsstart3 \
+ rstest6 shadow sort1 strtonum strftime whiny
EXTRA_TESTS = regtest inftest
INET_TESTS = inetechu inetecht inetdayu inetdayt
@@ -859,7 +871,7 @@ clean-generic:
-test -z "$(CLEANFILES)" || rm -f $(CLEANFILES)
distclean-generic:
- -rm -f $(CONFIG_CLEAN_FILES)
+ -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES)
maintainer-clean-generic:
@echo "This command is intended for maintainers to use"
@@ -1057,7 +1069,7 @@ strftime::
@echo This test could fail on slow machines or on a minute boundary,
@echo so if it does, double check the actual results:
@echo $@
- @GAWK_LOCALE=C; export GAWK_LOCALE; \
+ @GAWKLOCALE=C; export GAWKLOCALE; \
TZ=GMT0; export TZ; \
(LC_ALL=C date) | $(AWK) -v OUTPUT=_$@ -f $(srcdir)/strftime.awk
@-$(CMP) strftime.ok _$@ && rm -f _$@ strftime.ok || exit 0
@@ -1212,13 +1224,13 @@ whiny::
ignrcas2::
@echo $@
- @GAWK_LOCALE=en_US ; export GAWK_LOCALE ; \
+ @GAWKLOCALE=en_US ; export GAWKLOCALE ; \
$(AWK) -f $(srcdir)/$@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >> _$@
@-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
subamp::
@echo $@
- @GAWK_LOCALE=en_US.UTF-8 ; export GAWK_LOCALE ; \
+ @GAWKLOCALE=en_US.UTF-8 ; export GAWKLOCALE ; \
$(AWK) -f $(srcdir)/$@.awk $(srcdir)/$@.in >_$@ 2>&1 || echo EXIT CODE: $$? >> _$@
@-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
@@ -1228,6 +1240,31 @@ exitval1::
@echo $@
@$(AWK) -f $(srcdir)/exitval1.awk >_$@ 2>&1; echo EXIT CODE: $$? >>_$@
@-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
+
+fsspcoln::
+ @echo $@
+ @$(AWK) -f $(srcdir)/$@.awk 'FS=[ :]+' $(srcdir)/$@.in >_$@
+ @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
+
+rsstart1::
+ @echo $@
+ @$(AWK) -f $(srcdir)/$@.awk $(srcdir)/rsstart1.in >_$@
+ @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
+
+rsstart2::
+ @echo $@
+ @$(AWK) -f $(srcdir)/$@.awk $(srcdir)/rsstart1.in >_$@
+ @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
+
+rsstart3::
+ @echo $@
+ @head $(srcdir)/rsstart1.in | $(AWK) -f $(srcdir)/rsstart2.awk >_$@
+ @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
+
+nondec2::
+ @echo $@
+ @$(AWK) --non-decimal-data -v a=0x1 -f $(srcdir)/$@.awk >_$@
+ @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
Gt-dummy:
# file Maketests, generated from Makefile.am by the Gentests program
addcomma:
@@ -1420,6 +1457,11 @@ eofsplit:
@AWKPATH=$(srcdir) $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
@-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
+exitval2:
+ @echo exitval2
+ @AWKPATH=$(srcdir) $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
+ @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
+
fldchg:
@echo fldchg
@AWKPATH=$(srcdir) $(AWK) -f $@.awk < $(srcdir)/$@.in >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
@@ -1560,6 +1602,11 @@ gsubtst5:
@AWKPATH=$(srcdir) $(AWK) -f $@.awk < $(srcdir)/$@.in >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
@-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
+hex:
+ @echo hex
+ @AWKPATH=$(srcdir) $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
+ @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
+
hsprint:
@echo hsprint
@AWKPATH=$(srcdir) $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
@@ -1580,6 +1627,11 @@ intprec:
@AWKPATH=$(srcdir) $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
@-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
+iobug1:
+ @echo iobug1
+ @AWKPATH=$(srcdir) $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
+ @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
+
leadnl:
@echo leadnl
@AWKPATH=$(srcdir) $(AWK) -f $@.awk < $(srcdir)/$@.in >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
@@ -1990,6 +2042,11 @@ unterm:
@AWKPATH=$(srcdir) $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
@-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
+wjposer1:
+ @echo wjposer1
+ @AWKPATH=$(srcdir) $(AWK) -f $@.awk < $(srcdir)/$@.in >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
+ @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
+
zeroe0:
@echo zeroe0
@AWKPATH=$(srcdir) $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
@@ -2040,11 +2097,21 @@ gensub:
@AWKPATH=$(srcdir) $(AWK) -f $@.awk < $(srcdir)/$@.in >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
@-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
+gensub2:
+ @echo gensub2
+ @AWKPATH=$(srcdir) $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
+ @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
+
gnuops2:
@echo gnuops2
@AWKPATH=$(srcdir) $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
@-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
+gnuops3:
+ @echo gnuops3
+ @AWKPATH=$(srcdir) $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
+ @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
+
gnureops:
@echo gnureops
@AWKPATH=$(srcdir) $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
@@ -2145,7 +2212,7 @@ strtonum:
# Targets generated for other tests:
$(srcdir)/Maketests: $(srcdir)/Makefile.am $(srcdir)/Gentests
- $(AWK) -f $(srcdir)/Gentests "$<" *.awk *.in > $(srcdir)/Maketests
+ $(AWK) -f $(srcdir)/Gentests "$(srcdir)/Makefile.am" *.awk *.in > $(srcdir)/Maketests
clean:
rm -fr _* core core.* junk out1 out2 out3 strftime.ok test1 test2 seq *~
diff --git a/test/Maketests b/test/Maketests
index 2a0100b0..cb117521 100644
--- a/test/Maketests
+++ b/test/Maketests
@@ -190,6 +190,11 @@ eofsplit:
@AWKPATH=$(srcdir) $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
@-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
+exitval2:
+ @echo exitval2
+ @AWKPATH=$(srcdir) $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
+ @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
+
fldchg:
@echo fldchg
@AWKPATH=$(srcdir) $(AWK) -f $@.awk < $(srcdir)/$@.in >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
@@ -330,6 +335,11 @@ gsubtst5:
@AWKPATH=$(srcdir) $(AWK) -f $@.awk < $(srcdir)/$@.in >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
@-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
+hex:
+ @echo hex
+ @AWKPATH=$(srcdir) $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
+ @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
+
hsprint:
@echo hsprint
@AWKPATH=$(srcdir) $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
@@ -350,6 +360,11 @@ intprec:
@AWKPATH=$(srcdir) $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
@-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
+iobug1:
+ @echo iobug1
+ @AWKPATH=$(srcdir) $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
+ @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
+
leadnl:
@echo leadnl
@AWKPATH=$(srcdir) $(AWK) -f $@.awk < $(srcdir)/$@.in >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
@@ -760,6 +775,11 @@ unterm:
@AWKPATH=$(srcdir) $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
@-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
+wjposer1:
+ @echo wjposer1
+ @AWKPATH=$(srcdir) $(AWK) -f $@.awk < $(srcdir)/$@.in >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
+ @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
+
zeroe0:
@echo zeroe0
@AWKPATH=$(srcdir) $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
@@ -810,11 +830,21 @@ gensub:
@AWKPATH=$(srcdir) $(AWK) -f $@.awk < $(srcdir)/$@.in >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
@-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
+gensub2:
+ @echo gensub2
+ @AWKPATH=$(srcdir) $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
+ @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
+
gnuops2:
@echo gnuops2
@AWKPATH=$(srcdir) $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
@-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
+gnuops3:
+ @echo gnuops3
+ @AWKPATH=$(srcdir) $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
+ @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
+
gnureops:
@echo gnureops
@AWKPATH=$(srcdir) $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
diff --git a/test/badargs.ok b/test/badargs.ok
index 443edc7c..5c3bba71 100644
--- a/test/badargs.ok
+++ b/test/badargs.ok
@@ -10,6 +10,7 @@ POSIX options: GNU long options:
-W copyleft --copyleft
-W copyright --copyright
-W dump-variables[=file] --dump-variables[=file]
+ -W exec=file --exec=file
-W gen-po --gen-po
-W help --help
-W lint[=fatal] --lint[=fatal]
diff --git a/test/clobber.awk b/test/clobber.awk
index d6635f26..6526de05 100644
--- a/test/clobber.awk
+++ b/test/clobber.awk
@@ -40,7 +40,7 @@ BEGIN {
#
# 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.
+# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
# bash$ gdb gawk
# GDB is free software and you are welcome to distribute copies of it
# under certain conditions; type "show copying" to see the conditions.
diff --git a/test/concat1.awk b/test/concat1.awk
index 6e77846a..4ccb1179 100644
--- a/test/concat1.awk
+++ b/test/concat1.awk
@@ -59,7 +59,7 @@
#
#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.
+#Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
#
#I am running this on a i686 machine that is running RedHat 7.2 (out of the box).
#
diff --git a/test/exitval2.awk b/test/exitval2.awk
new file mode 100644
index 00000000..ed05e76b
--- /dev/null
+++ b/test/exitval2.awk
@@ -0,0 +1,3 @@
+BEGIN { print "foo" | "read x ; echo $x ; exit 12" }
+# this should still exit 0, as pointed out by kenny mccormack in
+# comp.lang.awk on 2 feb 2005
diff --git a/test/exitval2.ok b/test/exitval2.ok
new file mode 100644
index 00000000..257cc564
--- /dev/null
+++ b/test/exitval2.ok
@@ -0,0 +1 @@
+foo
diff --git a/test/fsspcoln.awk b/test/fsspcoln.awk
new file mode 100644
index 00000000..8087c2e5
--- /dev/null
+++ b/test/fsspcoln.awk
@@ -0,0 +1,41 @@
+# Date: Wed, 08 Dec 2004 12:59:42 +0600
+# From: Alexander Sashnov <asashnov@sw-soft.com>
+# Subject: addon to gawk test suite
+# Sender: asashnov@sashnov.plesk.ru
+# To: "Arnold D. Robbins" <arnold@skeeve.com>
+# Message-id: <lzy8g9xokh.fsf@sashnov.plesk.ru>
+#
+#
+# Hello, Arnold.
+#
+# I'm hit bug on SuSE 9.1 with awk:
+#
+# vsuse91:~ # echo "a:b:c" | awk '{ print $2 }' 'FS=[ :]'
+# b
+# vsuse91:~ # echo "a:b:c" | awk '{ print $2 }' 'FS=[ :]+'
+# awk: cmd. line:2: fatal: Trailing backslash: /[ :]+/
+#
+# vsuse91:~ # awk --version
+# GNU Awk 3.1.3
+#
+#
+#
+# But on my Debian machine all OK:
+#
+# asashnov@sashnov:~$ echo "a:b:c" | awk '{ print $2 }' 'FS=[ :]'
+# b
+# asashnov@sashnov:~$ echo "a:b:c" | awk '{ print $2 }' 'FS=[ :]+'
+# b
+# asashnov@sashnov:~$ awk --version
+# GNU Awk 3.1.4
+#
+#
+# Need add test for this sample to gawk test suite for avoid this problems in future.
+# --
+# Alexander Sashnov
+# Plesk QA Engineer
+# SWsoft, Inc.
+# E-mail: asashnov@sw-soft.com
+# ICQ UIN: 79404252
+
+{ print $2 }
diff --git a/test/fsspcoln.in b/test/fsspcoln.in
new file mode 100644
index 00000000..af0abb2c
--- /dev/null
+++ b/test/fsspcoln.in
@@ -0,0 +1 @@
+a:b:c
diff --git a/test/fsspcoln.ok b/test/fsspcoln.ok
new file mode 100644
index 00000000..61780798
--- /dev/null
+++ b/test/fsspcoln.ok
@@ -0,0 +1 @@
+b
diff --git a/test/gensub2.awk b/test/gensub2.awk
new file mode 100644
index 00000000..53554dae
--- /dev/null
+++ b/test/gensub2.awk
@@ -0,0 +1,5 @@
+BEGIN {
+ print gensub("x","y",2,"xx")
+ print gensub("x","y","2","xx")
+ print gensub("x","y","a","xx")
+}
diff --git a/test/gensub2.ok b/test/gensub2.ok
new file mode 100644
index 00000000..89824140
--- /dev/null
+++ b/test/gensub2.ok
@@ -0,0 +1,3 @@
+xy
+xy
+yx
diff --git a/test/gnuops3.awk b/test/gnuops3.awk
new file mode 100644
index 00000000..bcd40aa1
--- /dev/null
+++ b/test/gnuops3.awk
@@ -0,0 +1,14 @@
+# Mon Jan 31 09:57:30 IST 2005
+# test both dfa and regex matchers on \B
+# tests from Stepan Kasal, kasal@ucw.cz
+BEGIN {
+
+ print (" " ~ / \B /) # test dfa matcher
+ print ("a b" ~ /\B/)
+ print (" b" ~ /\B/)
+ print ("a " ~ /\B/)
+
+ a = " "
+ gsub(/\B/, "x", a) # test regex matcher
+ print a
+}
diff --git a/test/gnuops3.ok b/test/gnuops3.ok
new file mode 100644
index 00000000..27db3078
--- /dev/null
+++ b/test/gnuops3.ok
@@ -0,0 +1,5 @@
+1
+0
+1
+1
+x x x
diff --git a/test/hex.awk b/test/hex.awk
new file mode 100644
index 00000000..f9d1ad58
--- /dev/null
+++ b/test/hex.awk
@@ -0,0 +1,22 @@
+# Test program from Paul Eggert, eggert@cs.ucla.edu, Jan. 14, 2005
+
+BEGIN {
+ e = "1(e)"
+ ex = "3e2(ex)"
+ x = "6e5(x)"
+
+ print e+0, x+0
+ print 0x
+ print 0e+x
+ print 0ex
+ print 010e2
+ print 0e9.3
+}
+
+# Expected results:
+# 1 600000
+# 06e5(x)
+# 0600001
+# 03e2(ex)
+# 1000
+# 00.3
diff --git a/test/hex.ok b/test/hex.ok
new file mode 100644
index 00000000..59714c30
--- /dev/null
+++ b/test/hex.ok
@@ -0,0 +1,6 @@
+1 600000
+06e5(x)
+0600001
+03e2(ex)
+1000
+00.3
diff --git a/test/iobug1.awk b/test/iobug1.awk
new file mode 100644
index 00000000..5606d022
--- /dev/null
+++ b/test/iobug1.awk
@@ -0,0 +1,53 @@
+# From arnold@f7.net Fri Nov 26 11:53:12 2004
+# X-Envelope-From: james@nocrew.org
+# X-Envelope-To: <arnold@skeeve.com>
+# To: bug-gawk@gnu.org
+# Subject: gawk 3.1.4: reproducible hang, regression from 3.1.3
+# From: James Troup <james@nocrew.org>
+# Date: Fri, 26 Nov 2004 03:14:05 +0000
+# Message-ID: <877jo9qp36.fsf@shiri.gloaming.local>
+# User-Agent: Gnus/5.1006 (Gnus v5.10.6) Emacs/21.3 (gnu/linux)
+# MIME-Version: 1.0
+# Content-Type: text/plain; charset=us-ascii
+#
+#
+# Hi,
+#
+# A Debian user reported[0] gawk 3.1.4 broke a (relatively) complex
+# program that makes extensive use of awk, called 'apt-move'. I finally
+# managed to reduced the problem down to a 3 line test case, enclosed
+# below[1].
+#
+# I believe the problem comes from the following code, introduced in
+# 3.1.4:
+#
+# [io.c, line 560]
+# | for (rp = red_head; rp != NULL; rp = rp->next) {
+# | if ((rp->flag & RED_EOF) && tree->type == Node_redirect_pipein) {
+# | if (rp->pid != -1)
+# | wait_any(0);
+# | }
+#
+# The problem is that, if we have an existing redirect which is a simple
+# file redirect[b] and it's hit EOF and we try to create a new '|'
+# redirect[c], this new code will try to wait(2) and if there are any
+# other redirects which _did_ spawn a child (like [a]) the wait() will
+# hang indefinitely waiting for it to exit.
+#
+# Hope that makes sense :)
+#
+# --
+# James
+#
+# [0] http://bugs.debian.org/263964
+#
+# [1]
+# ================================================================================
+#!/usr/bin/gawk -f
+
+BEGIN {
+ printf "" | "cat" # [a]
+ getline line < "/dev/null" # [b]
+ "true" | getline line # [c]
+}
+# ================================================================================
diff --git a/test/iobug1.ok b/test/iobug1.ok
new file mode 100644
index 00000000..e69de29b
--- /dev/null
+++ b/test/iobug1.ok
diff --git a/test/longdbl.awk b/test/longdbl.awk
new file mode 100644
index 00000000..bbe8abae
--- /dev/null
+++ b/test/longdbl.awk
@@ -0,0 +1,159 @@
+# From arnold@f7.net Wed Apr 27 09:48:37 2005
+# Return-Path: <arnold@f7.net>
+# Received: from localhost (skeeve [127.0.0.1])
+# by skeeve.com (8.12.11/8.12.11) with ESMTP id j3R6mZVm015791
+# for <arnold@localhost>; Wed, 27 Apr 2005 09:48:37 +0300
+# Received: from pop.012.net.il [84.95.5.221]
+# by localhost with POP3 (fetchmail-6.2.5)
+# for arnold@localhost (single-drop); Wed, 27 Apr 2005 09:48:37 +0300 (IDT)
+# Received: from mtain3.012.net.il ([10.220.5.7])
+# by i_mss3.012.net.il (HyperSendmail v2004.12)
+# with ESMTP id <0IFK00L1DIZ02530@i_mss3.012.net.il> for arobbins@012.net.il;
+# Tue, 26 Apr 2005 22:18:36 +0300 (IDT)
+# Received: from VScan3 ([10.220.20.3])
+# by i_mtain3.012.net.il (HyperSendmail v2004.12)
+# with ESMTP id <0IFK007U1IZ0U980@i_mtain3.012.net.il> for arobbins@012.net.il
+# (ORCPT arobbins@012.net.il); Tue, 26 Apr 2005 22:18:36 +0300 (IDT)
+# Received: from i_mtain1.012.net.il ([10.220.5.1])
+# by VScan3 with InterScan Messaging Security Suite; Tue,
+# 26 Apr 2005 22:15:22 +0300
+# Received: from f7.net ([209.61.216.22])
+# by i_mtain1.012.net.il (HyperSendmail v2004.12)
+# with ESMTP id <0IFK009SIIYRN7G0@i_mtain1.012.net.il> for arobbins@012.net.il;
+# Tue, 26 Apr 2005 22:18:33 +0300 (IDT)
+# Received: (from arnold@localhost) by f7.net (8.11.7-20030920/8.11.7)
+# id j3QJFAg18376 for arobbins@012.net.il; Tue, 26 Apr 2005 15:15:10 -0400
+# Received: from fencepost.gnu.org (fencepost.gnu.org [199.232.76.164])
+# by f7.net (8.11.7-20030920/8.11.7) with ESMTP id j3QJF5J18304 for
+# <arnold@skeeve.com>; Tue, 26 Apr 2005 15:15:06 -0400
+# Received: from monty-python.gnu.org ([199.232.76.173])
+# by fencepost.gnu.org with esmtp (Exim 4.34)
+# id 1DQVVh-0004gD-CH for bug-gawk@gnu.org; Tue, 26 Apr 2005 15:14:17 -0400
+# Received: from Debian-exim by monty-python.gnu.org with spam-scanned
+# (Exim 4.34) id 1DQVYa-0002PR-2b for bug-gawk@gnu.org; Tue,
+# 26 Apr 2005 15:17:56 -0400
+# Received: from [129.183.4.8] (helo=ecfrec.frec.bull.fr)
+# by monty-python.gnu.org with esmtp (Exim 4.34)
+# id 1DQVYZ-0002Lr-EF for bug-gawk@gnu.org; Tue, 26 Apr 2005 15:17:15 -0400
+# Received: from localhost (localhost [127.0.0.1])
+# by ecfrec.frec.bull.fr (Postfix) with ESMTP id 5782819D907 for
+# <bug-gawk@gnu.org>; Tue, 26 Apr 2005 21:12:53 +0200 (CEST)
+# Received: from ecfrec.frec.bull.fr ([127.0.0.1])
+# by localhost (ecfrec.frec.bull.fr [127.0.0.1]) (amavisd-new, port 10024)
+# with ESMTP id 06763-10 for <bug-gawk@gnu.org>; Tue,
+# 26 Apr 2005 21:12:51 +0200 (CEST)
+# Received: from ecn002.frec.bull.fr (ecn002.frec.bull.fr [129.183.4.6])
+# by ecfrec.frec.bull.fr (Postfix) with ESMTP id 4488B19D906 for
+# <bug-gawk@gnu.org>; Tue, 26 Apr 2005 21:12:51 +0200 (CEST)
+# Received: from daphne ([129.183.192.6])
+# by ecn002.frec.bull.fr (Lotus Domino Release 5.0.12)
+# with ESMTP id 2005042621231613:3312 ; Tue, 26 Apr 2005 21:23:16 +0200
+# Date: Tue, 26 Apr 2005 21:12:49 +0200 (CEST)
+# From: Jean-Marc Saffroy <jean-marc.saffroy@ext.bull.net>
+# Subject: GNU awk unable to handle 64-bit ints on IA64
+# X-X-Sender: saffroyj@daphne.frec.bull.fr
+# To: bug-gawk@gnu.org
+# Message-id: <Pine.LNX.4.61.0504261916140.22370@daphne.frec.bull.fr>
+# MIME-version: 1.0
+# Content-type: TEXT/PLAIN; charset=US-ASCII; format=flowed
+# X-MIMETrack: Itemize by SMTP Server on ECN002/FR/BULL(Release 5.0.12 |February
+# 13, 2003) at 26/04/2005 21:23:16,
+# Serialize by Router on ECN002/FR/BULL(Release 5.0.12 |February 13,
+# 2003) at 26/04/2005 21:23:16, Serialize complete at 26/04/2005 21:23:16
+# X-Virus-Scanned: by amavisd-new at frec.bull.fr
+# Original-recipient: rfc822;arobbins@012.net.il
+# X-Spam-Checker-Version: SpamAssassin 2.63 (2004-01-11) on skeeve.com
+# X-Spam-Level:
+# X-Spam-Status: No, hits=-4.9 required=5.0 tests=BAYES_00 autolearn=ham
+# version=2.63
+# Status: RO
+#
+#
+# Hello,
+#
+# I have rounding problems when manipulating 64-bit ints (actually they are
+# addresses) on Linux/IA64:
+#
+# $ echo 0xa000000100000813|./gawk '{printf("0x%lx\n",strtonum($1));}'
+# 0xa000000100000800
+# $ echo 0xffffffffffffffff|./gawk '{printf("0x%lx\n",strtonum($1));}'
+# 0x8000000000000000
+# $ ./gawk --version|head -1
+# GNU Awk 3.1.4
+#
+# The problem seems to be that AWKNUM is defined to be a double, which has a
+# 53-bit mantissa. On IA64 with gcc 3.2.3 (maybe other compilers as well)
+# there is a long double type with a larger mantissa:
+#
+# $ grep define.*LDBL_MANT_DIG /usr/lib/gcc-lib/ia64-redhat-linux/3.2.3/include/float.h
+# #define LDBL_MANT_DIG 64
+#
+# So I changed AWKNUM to be a long double; this does not seem to be
+# sufficient, because of some dubious casts to double (there may be others
+# left, I didn't check), see patch below. Now it's much nicer:
+#
+# $ echo 0xa000000100000813|./gawk '{printf("0x%lx\n",strtonum($1));}'
+# 0xa000000100000813
+# $ echo 0xffffffffffffffff|./gawk '{printf("0x%lx\n",strtonum($1));}'
+# 0xffffffffffffffff
+#
+# Maybe the gawk configure script should set AWKNUM to be a long double on
+# Linux/IA64?
+#
+#
+# Regards,
+#
+# --
+# Jean-Marc Saffroy - jean-marc.saffroy@ext.bull.net
+#
+#
+# diff -ru gawk-3.1.4/awk.h gawk/awk.h
+# --- gawk-3.1.4/awk.h 2004-07-26 16:11:05.000000000 +0200
+# +++ gawk/awk.h 2005-04-26 19:19:10.545419273 +0200
+# @@ -273,7 +273,7 @@
+# /* ------------------ Constants, Structures, Typedefs ------------------ */
+#
+# #ifndef AWKNUM
+# -#define AWKNUM double
+# +#define AWKNUM long double
+# #endif
+#
+# #ifndef TRUE
+# diff -ru gawk-3.1.4/builtin.c gawk/builtin.c
+# --- gawk-3.1.4/builtin.c 2004-07-13 09:55:28.000000000 +0200
+# +++ gawk/builtin.c 2005-04-26 20:53:41.211365432 +0200
+# @@ -578,7 +578,7 @@
+# char *cend = &cpbuf[30];/* chars, we lose, but seems unlikely */
+# char *cp;
+# const char *fill;
+# - double tmpval;
+# + AWKNUM tmpval;
+# char signchar = FALSE;
+# size_t len;
+# int zero_flag = FALSE;
+# @@ -2773,16 +2773,16 @@
+# do_strtonum(NODE *tree)
+# {
+# NODE *tmp;
+# - double d;
+# + AWKNUM d;
+#
+# tmp = tree_eval(tree->lnode);
+#
+# if ((tmp->flags & (NUMBER|NUMCUR)) != 0)
+# - d = (double) force_number(tmp);
+# + d = (AWKNUM) force_number(tmp);
+# else if (isnondecimal(tmp->stptr))
+# d = nondec2awknum(tmp->stptr, tmp->stlen);
+# else
+# - d = (double) force_number(tmp);
+# + d = (AWKNUM) force_number(tmp);
+#
+# free_temp(tmp);
+# return tmp_number((AWKNUM) d);
+#
+#
+# #####################################################################################
+# This Mail Was Scanned by 012.net Anti Virus Service - Powered by TrendMicro Interscan
+#
+{ printf("0x%lx\n",strtonum($1)); }
diff --git a/test/longdbl.in b/test/longdbl.in
new file mode 100644
index 00000000..d50f0c44
--- /dev/null
+++ b/test/longdbl.in
@@ -0,0 +1,2 @@
+0xa000000100000813
+0xffffffffffffffff
diff --git a/test/longdbl.ok b/test/longdbl.ok
new file mode 100644
index 00000000..d50f0c44
--- /dev/null
+++ b/test/longdbl.ok
@@ -0,0 +1,2 @@
+0xa000000100000813
+0xffffffffffffffff
diff --git a/test/nondec.awk b/test/nondec.awk
index a6801101..a070c910 100644
--- a/test/nondec.awk
+++ b/test/nondec.awk
@@ -1 +1 @@
-BEGIN { print 0x81c3e8, 0x744018 }
+BEGIN { print 0x81c3e8, 0x744018, 00.34 }
diff --git a/test/nondec.ok b/test/nondec.ok
index 560f3d1c..8f0404a9 100644
--- a/test/nondec.ok
+++ b/test/nondec.ok
@@ -1 +1 @@
-8504296 7618584
+8504296 7618584 0.34
diff --git a/test/nondec2.awk b/test/nondec2.awk
new file mode 100644
index 00000000..681d283c
--- /dev/null
+++ b/test/nondec2.awk
@@ -0,0 +1,104 @@
+# From arnold@f7.net Wed Jun 15 08:25:21 2005
+# Return-Path: <arnold@f7.net>
+# Received: from localhost (skeeve [127.0.0.1])
+# by skeeve.com (8.12.11/8.12.11) with ESMTP id j5F5P3VC014658
+# for <arnold@localhost>; Wed, 15 Jun 2005 08:25:21 +0300
+# Received: from pop.012.net.il [84.95.5.221]
+# by localhost with POP3 (fetchmail-6.2.5)
+# for arnold@localhost (single-drop); Wed, 15 Jun 2005 08:25:21 +0300 (IDT)
+# Received: from mtain2.012.net.il ([10.220.5.4])
+# by i_mss3.012.net.il (HyperSendmail v2004.12)
+# with ESMTP id <0II300LQOPS7DA10@i_mss3.012.net.il> for arobbins@012.net.il;
+# Wed, 15 Jun 2005 04:07:19 +0300 (IDT)
+# Received: from VSCAN1 ([10.220.20.1])
+# by i_mtain2.012.net.il (HyperSendmail v2004.12)
+# with ESMTP id <0II300ETQPS7IEZ4@i_mtain2.012.net.il> for arobbins@012.net.il
+# (ORCPT arobbins@012.net.il); Wed, 15 Jun 2005 04:07:19 +0300 (IDT)
+# Received: from i_mtain2.012.net.il ([10.220.5.4])
+# by VSCAN1 with InterScan Messaging Security Suite; Wed,
+# 15 Jun 2005 04:03:15 +0300
+# Received: from f7.net ([209.61.216.22])
+# by i_mtain2.012.net.il (HyperSendmail v2004.12)
+# with ESMTP id <0II300H7VPS5P1O2@i_mtain2.012.net.il> for arobbins@012.net.il;
+# Wed, 15 Jun 2005 04:07:18 +0300 (IDT)
+# Received: (from arnold@localhost) by f7.net (8.11.7-20030920/8.11.7)
+# id j5F13DT21530 for arobbins@012.net.il; Tue, 14 Jun 2005 21:03:14 -0400
+# Received: from fencepost.gnu.org (fencepost.gnu.org [199.232.76.164])
+# by f7.net (8.11.7-20030920/8.11.7) with ESMTP id j5F136p21454 for
+# <arnold@skeeve.com>; Tue, 14 Jun 2005 21:03:06 -0400
+# Received: from monty-python.gnu.org ([199.232.76.173])
+# by fencepost.gnu.org with esmtp (Exim 4.34)
+# id 1DiMJ6-0002fe-Av for bug-gawk@gnu.org; Tue, 14 Jun 2005 21:03:04 -0400
+# Received: from Debian-exim by monty-python.gnu.org with spam-scanned
+# (Exim 4.34) id 1DiMIp-0003lM-I4 for bug-gawk@gnu.org; Tue,
+# 14 Jun 2005 21:02:47 -0400
+# Received: from [66.187.233.31] (helo=mx1.redhat.com)
+# by monty-python.gnu.org with esmtp (TLS-1.0:DHE_RSA_3DES_EDE_CBC_SHA:24)
+# (Exim 4.34) id 1DiMIp-0003l4-8g for bug-gawk@gnu.org; Tue,
+# 14 Jun 2005 21:02:47 -0400
+# Received: from int-mx1.corp.redhat.com
+# (int-mx1.corp.redhat.com [172.16.52.254]) by mx1.redhat.com (8.12.11/8.12.11)
+# with ESMTP id j5F11EGn027669 for <bug-gawk@gnu.org>; Tue,
+# 14 Jun 2005 21:01:14 -0400
+# Received: from lacrosse.corp.redhat.com
+# (lacrosse.corp.redhat.com [172.16.52.154]) by int-mx1.corp.redhat.com
+# (8.11.6/8.11.6) with ESMTP id j5F11Eu01536 for <bug-gawk@gnu.org>; Tue,
+# 14 Jun 2005 21:01:14 -0400
+# Received: from [192.168.7.71] (vpn50-10.rdu.redhat.com [172.16.50.10])
+# by lacrosse.corp.redhat.com (8.11.6/8.11.6) with ESMTP id j5F118s03225 for
+# <bug-gawk@gnu.org>; Tue, 14 Jun 2005 21:01:09 -0400
+# Date: Tue, 14 Jun 2005 17:57:55 -0700
+# From: Ulrich Drepper <drepper@redhat.com>
+# Subject: non-decimal variable parameters cause crashes
+# To: bug-gawk@gnu.org
+# Message-id: <42AF7D13.5010901@redhat.com>
+# Organization: Red Hat, Inc.
+# MIME-version: 1.0
+# Content-type: multipart/signed; micalg=pgp-sha1;
+# protocol="application/pgp-signature";
+# boundary=------------enig9DEC74140126C224E7DE3E54
+# X-Accept-Language: en-us, en
+# X-Enigmail-Version: 0.91.0.0
+# User-Agent: Mozilla Thunderbird 1.0.2-6 (X11/20050513)
+# Original-recipient: rfc822;arobbins@012.net.il
+# X-Spam-Checker-Version: SpamAssassin 2.63 (2004-01-11) on skeeve.com
+# X-Spam-Level:
+# X-Spam-Status: No, hits=-4.3 required=5.0 tests=AWL,BAYES_00 autolearn=ham
+# version=2.63
+# Status: R
+#
+# This is an OpenPGP/MIME signed message (RFC 2440 and 3156)
+# --------------enig9DEC74140126C224E7DE3E54
+# Content-Type: text/plain; charset=UTF-8
+# Content-Transfer-Encoding: quoted-printable
+#
+# Running
+#
+# gawk --non-decimal-data -v a=3D0x1 'BEGIN { print a+0 }'
+#
+# currently crashes. More details including a patch at
+#
+# https://bugzilla.redhat.com/bugzilla/show_bug.cgi?id=3D160421
+#
+# --=20
+# =E2=9E=A7 Ulrich Drepper =E2=9E=A7 Red Hat, Inc. =E2=9E=A7 444 Castro St =
+# =E2=9E=A7 Mountain View, CA =E2=9D=96
+#
+#
+# --------------enig9DEC74140126C224E7DE3E54
+# Content-Type: application/pgp-signature; name="signature.asc"
+# Content-Description: OpenPGP digital signature
+# Content-Disposition: attachment; filename="signature.asc"
+#
+# -----BEGIN PGP SIGNATURE-----
+# Version: GnuPG v1.4.1 (GNU/Linux)
+# Comment: Using GnuPG with Fedora - http://enigmail.mozdev.org
+#
+# iD8DBQFCr30T2ijCOnn/RHQRAp9LAKC+w/vhXW73ps1Pxcy+VGPrT1Su+ACguPnV
+# VstZcFJgJ5GZ1YvDExsOZZI=
+# =xmXh
+# -----END PGP SIGNATURE-----
+#
+# --------------enig9DEC74140126C224E7DE3E54--
+#
+BEGIN { print a+0 }
diff --git a/test/nondec2.ok b/test/nondec2.ok
new file mode 100644
index 00000000..d00491fd
--- /dev/null
+++ b/test/nondec2.ok
@@ -0,0 +1 @@
+1
diff --git a/test/nulrsend.awk b/test/nulrsend.awk
index ef70b81b..6b8cb8ca 100644
--- a/test/nulrsend.awk
+++ b/test/nulrsend.awk
@@ -103,7 +103,7 @@ NR==3 {
#
# 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.
+# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
# ==
#
# --
diff --git a/test/ofmtfidl.awk b/test/ofmtfidl.awk
index 67f173c8..181e0715 100644
--- a/test/ofmtfidl.awk
+++ b/test/ofmtfidl.awk
@@ -79,7 +79,7 @@
#
# 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.
+# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
#
#
{ OFMT="%."NR"f"; print NR }
diff --git a/test/reg/func2.out b/test/reg/func2.out
new file mode 100644
index 00000000..a6515c97
--- /dev/null
+++ b/test/reg/func2.out
@@ -0,0 +1,2 @@
+gawk: reg/func2.awk:2: fatal: function `dummy' called with space between name and `(',
+or used as a variable or an array
diff --git a/test/regtest.sh b/test/regtest.sh
index 72b0dbf9..37472b1c 100755
--- a/test/regtest.sh
+++ b/test/regtest.sh
@@ -9,7 +9,7 @@ for i in reg/*.awk
do
it=`basename $i .awk`
$AWK -f $i <reg/$it.in >reg/$it.out 2>&1
- if cmp -s reg/$it.out reg/$it.good
+ if diff reg/$it.out reg/$it.good
then
rm -f reg/$it.out
else
diff --git a/test/rsstart1.awk b/test/rsstart1.awk
new file mode 100644
index 00000000..53e5b425
--- /dev/null
+++ b/test/rsstart1.awk
@@ -0,0 +1,32 @@
+# From arnold@f7.net Wed Dec 15 11:32:46 2004
+# Date: Tue, 14 Dec 2004 14:48:58 +0100
+# From: Stepan Kasal <kasal@ucw.cz>
+# Subject: gawk bug with RS="^..."
+# To: bug-gawk@gnu.org
+# Message-id: <20041214134858.GA15490@matsrv.math.cas.cz>
+#
+# Hello,
+# I've noticed a problem with "^" in RS in gawk. In most cases, it seems
+# to match only the beginning of the file. But in fact it matches the
+# beginning of gawk's internal buffer.
+#
+# Observe the following example:
+#
+# $ gawk 'BEGIN{for(i=1;i<=100;i++) print "Axxxxxx"}' >file
+# $ gawk 'BEGIN{RS="^A"} END{print NR}' file
+# 2
+# $ gawk 'BEGIN{RS="^Ax*\n"} END{print NR}' file
+# 100
+# $ head file | gawk 'BEGIN{RS="^Ax*\n"} END{print NR}'
+# 10
+# $
+#
+# I think this calls for some clarification/fix. But I don't have any
+# fixed opinion how the solution should look like.
+#
+# Have a nice day,
+# Stepan Kasal
+#
+# PS: See also the discussion of the issue in the comp.lang.awk newsgroup.
+BEGIN { RS = "^A" }
+END { print NR }
diff --git a/test/rsstart1.in b/test/rsstart1.in
new file mode 100644
index 00000000..aabdf028
--- /dev/null
+++ b/test/rsstart1.in
@@ -0,0 +1,10000 @@
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
diff --git a/test/rsstart1.ok b/test/rsstart1.ok
new file mode 100644
index 00000000..0cfbf088
--- /dev/null
+++ b/test/rsstart1.ok
@@ -0,0 +1 @@
+2
diff --git a/test/rsstart2.awk b/test/rsstart2.awk
new file mode 100644
index 00000000..14c14153
--- /dev/null
+++ b/test/rsstart2.awk
@@ -0,0 +1,2 @@
+BEGIN { RS = "^Ax*\n" }
+END { print NR }
diff --git a/test/rsstart2.ok b/test/rsstart2.ok
new file mode 100644
index 00000000..0cfbf088
--- /dev/null
+++ b/test/rsstart2.ok
@@ -0,0 +1 @@
+2
diff --git a/test/rsstart3.ok b/test/rsstart3.ok
new file mode 100644
index 00000000..0cfbf088
--- /dev/null
+++ b/test/rsstart3.ok
@@ -0,0 +1 @@
+2
diff --git a/test/wjposer1.awk b/test/wjposer1.awk
new file mode 100644
index 00000000..396089b2
--- /dev/null
+++ b/test/wjposer1.awk
@@ -0,0 +1,75 @@
+# From arnold@f7.net Sun Sep 5 12:30:53 2004
+# Date: Fri, 3 Sep 2004 00:54:32 -0400 (EDT)
+# From: William J Poser <wjposer@ldc.upenn.edu>
+# To: arnold@skeeve.com
+# Subject: gawk bug
+# Message-ID: <20040903004347.W80049@lorax.ldc.upenn.edu>
+#
+# Here is a revised version of my previous message, modified to describe
+# the accompanying files.
+#
+# IhSplit.awk should replicate every record with exactly one entry in the
+# IH field, delete records lacking an IH field, and produce as many copies
+# of records with two or more entries in the IH field as there are entries.
+# In the latter case, the original IH field should be relabelled OIH and
+# a new IH field be added at the beginning of the record.
+#
+# This has worked properly for many years, since at least 1997. It worked properly with gawk 3.0.5
+# and possibly later versions. Unfortunately I didn't keep track of exactly what version it
+# broke on, but it was whatever came with Mandrake Linux 9.0. It continued to fail with version
+# 3.1.2. However, the problem was eliminated with version 3.1.3 and remains
+# eliminated in version 3.1.4.
+#
+# The problem was that an apparently random subset of records would loose some
+# or all of their fields. Running the script on the same input always produces
+# the same output with the same errors.
+#
+# The file Input is a subset of a real lexicon that produces errors using
+# gawk 3.1.2. GoodOutput is the expected output. BadOutput is the erroneous
+# output. A diff will show that there are actually two errors. One record
+# has fields stripped as described above. Another is omitted in its entirety.
+#
+#
+# Bill Poser, Linguistics, University of Pennsylvania
+# http://www.ling.upenn.edu/~wjposer/ billposer@alum.mit.edu
+# ----------------------------------------------------------------------------
+#For each record that contains multiple items in its inverse headword (IH)
+#field, generate a set of new records each containing exactly one item
+#in the inverse headword field, otherwise copies of the original.
+
+function CleanUp() #Clean up for next input record.
+{
+ for(i in rec) delete rec[i];
+}
+
+BEGIN {
+RS = "";
+FS = "\n?%"
+}
+{
+
+# First, create an associative array with the tags as indices.
+ for(i = 2; i <= NF; i++) { # The leading FS creates an initial empty field
+ split($i, f, ":");
+ rec[f[1]]=substr($i,index($i,":")+1);
+ }
+
+ if(!("IH" in rec)) next;
+
+# Parse out the inverse headwords
+
+ items = split(rec["IH"],ihs,"/");
+
+# Replace the old IH field.
+
+ sub(/%IH:/,"%OIH:",$0);
+
+# Generate a new copy of the record for each inverse headword
+
+ for(i = 1; i <= items; i++){
+ entries+=1;
+ printf("%%IH:%s\n",ihs[i]);
+ printf("%s\n\n",$0);
+ }
+ CleanUp();
+ }
diff --git a/test/wjposer1.in b/test/wjposer1.in
new file mode 100644
index 00000000..bdcd4a81
--- /dev/null
+++ b/test/wjposer1.in
@@ -0,0 +1,1527 @@
+%P:nut'i
+%G:exertion
+%IH:exertion
+%C:N
+%SF:abstractions-misc
+%S:JOPA/EDFR/VESE
+%ES:000088
+%UID:002463
+%MD:1999/03/15
+
+%P:ts'iyantsuk t'eooninzun
+%G:information
+%IH:information
+%C:N
+%SF:abstractions-misc
+%S:JOPA/BRBI
+%UID:000986
+%MD:1997/12/17
+
+%P:k'et'uk
+%G:interval
+%IH:interval
+%C:N
+%SF:abstractions-misc
+%S:MAGO
+%ES:001077
+%UID:000873
+%MD:1997/12/11
+
+%P:khunek
+%G:language, word, message
+%IH:language/word/message
+%POSS:ghunek
+%P1p:neghunek
+%C:N
+%SF:abstractions-misc
+%S:MAGO/BRBI/JOPA/EDFR/VESE/JEKO
+%UID:000928
+%MD:2001/02/10
+
+%P:gal
+%G:running
+%IH:running
+%C:N
+%R:Dugal ndesda. He got hurt while running.
+%SF:abstractions-misc
+%S:JOPA
+%ES:000535
+%UID:002462
+%MD:1999/03/15
+
+%P:t'en
+%G:work
+%IH:work
+%C:N
+%SF:abstractions-misc
+%S:VESE/PEJO
+%ES:000672
+%UID:003028
+%POCKET:N
+%MD:2000/10/04
+
+%P:'ut'en
+%G:work
+%IH:work
+%C:N
+%SF:abstractions-misc
+%P1p:neye'ut'en
+%S:JOPA
+%ES:001041
+%UID:004264
+%POCKET:Y
+%MD:2001/03/15
+
+%P:dulkw'ah
+%G:Spotted Frog
+%IH:Spotted Frog/Frog, Spotted
+%SN:Rana pretiosa
+%MN:Lives in water and has red markings on the belly.
+%PICTURE:/home/poser/Research/Dakelh/Pictures/psfiles/SpottedFrog.ps
+%CAPTION:{\qc Tsasdli} --- Spotted Frog
+%PICPERMISSION:N
+%PICCREDIT:Drawing of Spotted Frog from {\it The Amphibians of British Columbia\/}.
+%C:N
+%SF:amphibiansandreptiles
+%S:EDFR
+%UID:004111
+%POCKET:Y
+%MD:2001/03/07
+
+%P:chunlai
+%G:salamander, lizard
+%IH:lizard/salamander
+%MN:The only species of salamander found in the region is the
+ Long-toed Salamander {\it Ambystoma macrodactylum\/}. No lizards
+ are found in the region. However, this term is applied to other
+ varieties of salamander and to lizards, such as the gekkos sold as
+ pets.
+%FGREF:Corkran \& Thoms (1996;39)
+%SN:Ambystoma macrodactylum
+%C:N
+%SF:amphibiansandreptiles
+%S:LITM/JOPA/BRBI
+%UID:000157
+%MD:1998/05/16
+
+%P:tl'ughus
+%G:snake
+%IH:snake
+%C:N
+%MN:The only snake found in the region is the Common Garter Snake
+ {\it Thamnophis sirtalis\/}. However, the term is applied to all snakes.
+%SN:Thamnophis sirtalis
+%SF:amphibiansandreptiles
+%S:LITM/JOPA/BRBI/MAGO
+%UID:000250
+%MD:1998/12/07
+
+%P:tsasdli
+%G:Western Toad
+%SN:Bufo boreas
+%IH:Western Toad/Toad, Western
+%MN:Lives on land.
+%SF:amphibiansandreptiles
+%C:N
+%S:LITM/JOPA/BRBI/MAGO/STJA/EDFR
+%UID:000059
+%MD:2001/03/07
+
+%P:lhits'e
+%G:bitch, female dog
+%IH:bitch/dog, female
+%C:N
+%SF:animals-domestic
+%S:JOPA/EDFR/VESE
+%UID:002446
+%MD:1999/03/15
+
+%P:musdus
+%G:cow
+%IH:cow
+%C:N
+%P2s:nmusdus
+%ETYM:Loan from Cree {\qf mostos} ``buffalo''.
+%LOANSOURCE:Cree
+%SF:animals-domestic
+%S:LITM/JOPA/BRBI/MAGO
+%UID:000036
+%MD:1997/06/12
+
+%P:lhi
+%G:dog
+%IH:dog
+%C:N
+%DUOPLURAL:lhike
+%SF:animals-domestic
+%POSS:lik
+%P1s:slik
+%P1p:nelik
+%DUOPLURAL:lhike
+%S:LITM/JOPA/BRBI/STJA/VESE/EDFR/JEKO
+%UID:000270
+%MD:2001/02/15
+
+%P:budzocho
+%G:donkey, mule
+%IH:donkey/mule
+%SF:animals-domestic
+%ETYM:``big ears''.
+%C:N
+%S:JOPA/BRBI
+%UID:000376
+%MD:1997/11/14
+
+%P:yeztli
+%G:horse
+%IH:horse
+%SF:animals-domestic
+%ETYM:A contraction of {\qc yezihlhi} ``elk dog''.
+%C:N
+%S:LITM/JOPA/BRBI/PEJO
+%UID:000042
+%MD:2000/10/21
+
+%P:lhike
+%G:Irregular plural of {\qc lhi}, q.v.
+%IH:dogs
+%C:N
+%SF:animals-domestic
+%S:LITM/BRBI/JOPA/STJA
+%UID:000293
+%MD:1999/01/26
+
+%P:sbaiyaz
+%G:lamb
+%IH:lamb
+%C:N
+%SF:animals-domestic
+%S:LITM
+%UID:000254
+%MD:1997/06/16
+
+%P:gugoos
+%G:pig
+%IH:pig
+%C:N
+%ETYM:Ultimately borrowed from French {\qf coche}, probably via Cree.
+%LOANSOURCE:Cree
+%SF:animals-domestic
+%S:LITM/JOPA/BRBI
+%UID:000133
+%MD:1997/06/16
+
+%P:'ut'az
+%G:bat
+%IH:bat
+%SF:animals-land
+%C:N
+%S:JOPA/BRBI
+%UID:000390
+%MD:1997/11/14
+
+%P:liyabdut'ai
+%G:bat
+%MN:The only kind of bat found in the region is the Little Brown Myotis.
+%IH:bat
+%SF:animals-land
+%SN:Myotis lucifugus
+%ETYM:Literally, ``devil bird'', a compound of {\qc liyab} ``devil'', a loan from
+ French {\qf le diable}, and {\qc dut'ai} ``bird''.
+%LOANSOURCE:French
+%C:N
+%S:JOPA/BRBI
+%UID:000215
+%MD:1997/06/16
+
+%P:sus
+%G:black bear
+%IH:black bear
+%C:N
+%SF:animals-land
+%SN:Ursus americanus
+%S:LITM/JOPA/BRBI/STJA/EDFR/VESE/JEKO
+%UID:000048
+%MD:1998/12/19
+
+%P:musduscho dughai
+%G:buffalo
+%IH:buffalo
+%SF:animals-land
+%C:N
+%ETYM:``big hairy cow''.
+%S:JOPA/EDFR
+%UID:003478
+%POCKET:Y
+%MD:2000/11/04
+
+%P:tl'ok'umusdus
+%G:buffalo
+%IH:buffalo
+%SF:animals-land
+%C:N
+%S:JOPA/BRBI
+%UID:000374
+%MD:2000/11/01
+
+%P:jenyo
+%G:bull moose
+%IH:bull moose/moose, bull
+%SF:animals-land
+%C:N
+%S:MAGO/JOPA/VESE/EDFR/JEKO
+%UID:000474
+%MD:1999/05/11
+
+%P:denyo
+%G:bull moose
+%IH:moose, bull
+%SF:animals-land
+%C:N
+%S:LITM/JOPA
+%UID:000348
+%MD:1997/06/18
+
+%P:tsiyeyaz
+%G:calf moose
+%IH:calf moose/moose, calf
+%SF:animals-land
+%C:N
+%S:JOPA/BRBI
+%UID:000380
+%MD:1997/11/14
+
+%P:duniyaz
+%G:calf moose
+%IH:calf moose/moose, calf
+%C:N
+%SF:animals-land
+%S:LITM/JOPA/BRBI
+%UID:000245
+%MD:1997/06/16
+
+%P:whudzih
+%G:caribou
+%IH:caribou
+%C:N
+%SF:animals-land
+%SN:Rangifer tarandus
+%S:JOPA/BRBI/MAGO/EDFR/VESE/JEKO
+%UID:000274
+%MD:1999/05/11
+
+%P:boos
+%G:cat
+%IH:cat
+%C:N
+%SN:Felis domesticus
+%ETYM:Loan from English {\qf puss}, possibly via Chinook Jargon.
+%LOANSOURCE:English
+%SF:animals-land
+%S:LITM/JOPA/BRBI
+%UID:000137
+%MD:1997/12/17
+
+%P:ts'uwhuljos
+%G:chipmunk
+%IH:chipmunk
+%C:N
+%SF:animals-land
+%S:LITM/JOPA/BRBI
+%UID:000146
+%MD:1997/06/16
+
+%P:booscho
+%G:cougar
+%IH:cougar
+%SF:animals-land
+%SN:Felis concolor
+%C:N
+%ETYM:Literally, ``big cat'', where {\qc boos} ``cat'' is a loan from English
+ {\qf puss}, possibly via Chinook Jargon.
+%S:JOPA/BRBI
+%UID:000050
+%MD:1997/11/14
+
+%P:duni'at
+%G:cow moose
+%IH:cow moose/moose, cow
+%SF:animals-land
+%C:N
+%S:JOPA/BRBI
+%UID:000377
+%MD:1997/11/14
+
+%P:tintulhi
+%G:coyote
+%IH:coyote
+%C:N
+%SF:animals-land
+%SN:Canis latrans
+%S:JOPA/BRBI
+%R:LITM has chuntulhi.
+%UID:000155
+%MD:1997/06/16
+
+%P:yests'e
+%G:deer
+%IH:deer
+%SF:animals-land
+%C:N
+%S:LITM/JOPA/BRBI/EDFR
+%UID:000132
+%MD:1998/12/16
+
+%P:dets'it
+%G:dry cow moose
+%IH:dry cow moose/moose, dry cow
+%SF:animals-land
+%C:N
+%S:JOPA/BRBI
+%UID:000378
+%MD:1997/11/14
+
+%P:yezih
+%G:elk
+%IH:elk
+%SF:animals-land
+%C:N
+%R:STJA doesn't use this.
+%S:JOPA/BRBI
+%UID:000382
+%MD:1997/11/14
+
+%P:tsa'at
+%G:female beaver
+%IH:beaver, female
+%C:N
+%SF:animals-land
+%S:STJA
+%UID:001295
+%MD:1998/12/08
+
+%P:chunihcho
+%G:fisher
+%IH:fisher
+%ETYM:``big marten''.
+%SF:animals-land
+%SN:Martes pennanti
+%C:N
+%S:JOPA/BRBI/MAGO
+%UID:000385
+%MD:2000/06/18
+
+%P:ts'unalhbuz
+%G:flying squirrel
+%IH:flying squirrel
+%SF:animals-land
+%SN:Glaucomys sabrinus alpinus
+%PICTURE:/home/poser/Research/Dakelh/Pictures/psfiles/FlyingSquirrel.ps
+%CAPTION:{\qc ts'unulhbuz} --- Flying Squirrel
+%PICPERMISSION:N
+%PICCREDIT:Drawing of Flying Squirrel from {\it The Mammals of British Columbia\/}.
+%C:N
+%S:JOPA/BRBI
+%UID:000389
+%MD:1997/11/14
+
+%P:nanguz
+%G:fox
+%IH:fox
+%C:N
+%SF:animals-land
+%S:MAGO
+%UID:000139
+%MD:2001/02/26
+
+%P:shas
+%G:grizzly bear
+%IH:grizzly bear
+%C:N
+%SF:animals-land
+%S:LITM/JOPA/BRBI/VESE/EDFR/JEKO
+%UID:000039
+%MD:1997/06/12
+
+%P:shasyaz
+%G:grizzly bear cub
+%IH:grizzly bear cub/cub, grizzly bear
+%C:N
+%SF:animals-land
+%S:STJA
+%UID:002114
+%MD:1999/02/20
+
+%P:shas'at
+%G:grizzly bear sow
+%IH:grizzly bear sow/sow, grizzly bear
+%C:N
+%SF:animals-land
+%ETYM:``grizzly bear's wife''.
+%S:STJA
+%UID:002113
+%MD:1999/02/20
+
+%P:-lik
+%G:irregular possessed stem of {\qc lhi}, q.v.
+%C:N
+%SF:animals-land
+%S:MAGO
+%UID:000564
+%MD:1997/12/11
+
+%P:wasi
+%G:lynx
+%IH:lynx
+%C:N
+%SF:animals-land
+%SN:Felis lynx
+%ETYM:Loan from Gitksan {\qf wish}.
+%LOANSOURCE:Gitksan
+%S:JOPA/BRBI/STJA/EDFR/VESE/JEKO/MAGO
+%UID:000049
+%MD:2001/04/20
+
+%P:k'ani
+%G:woodchuck
+%IH:woodchuck
+%C:N
+%SF:animals-land
+%SN:Marmota monax
+%S:JOPA/BRBI/PEJO
+%R:Clarified with Josie and Peter 2001/05/28.
+%UID:000391
+%POCKET:Y
+%MD:2001/05/28
+
+%P:dutni
+%G:marmot
+%IH:marmot
+%SF:animals-land
+%C:N
+%SN:Marmota caligata
+%R:Josie and Peter are not really familiar with marmots but have heard older
+ people talk about them.
+%S:JOPA/PEJO
+%UID:000143
+%MD:1998/02/10
+
+%P:chunih
+%G:marten
+%IH:marten
+%SF:animals-land
+%SN:Martes americana
+%C:N
+%S:JOPA/BRBI/VESE/EDFR/JEKO/MAGO
+%UID:000016
+%MD:2001/04/20
+
+%P:telhjoos
+%G:mink
+%IH:mink
+%C:N
+%SF:animals-land
+%SN:Mustela vison
+%S:LITM/JOPA/BRBI
+%UID:000167
+%MD:1997/06/16
+
+%P:duni
+%G:moose
+%IH:moose
+%C:N
+%SF:animals-land
+%SN:Alces alces andersoni
+%S:LITM-EDFR/JOPA/BRBI
+%UID:000346
+%MD:1997/06/18
+
+%P:dats'ooz
+%G:mouse
+%IH:mouse
+%SF:animals-land
+%C:N
+%S:LITM/JOPA/MAGO/VESE/JEKO
+%UID:000156
+%MD:2001/01/22
+
+%P:tsek'et
+%G:muskrat
+%IH:muskrat
+%C:N
+%SF:animals-land
+%SN:Ondatra zibethicus
+%S:JOPA/BRBI/STJA/MAGO
+%UID:000335
+%MD:1998/12/08
+
+%P:chanjo
+%G:newly sexually mature cow moose
+%IH:moose, newly sexually mature cow
+%SF:animals-land
+%C:N
+%S:JOPA/BRBI
+%UID:000379
+%MD:1997/11/14
+
+%P:looncho
+%G:pack rat
+%IH:pack rat
+%C:N
+%SF:animals-land
+%S:VESE/JEKO/MAGO
+%UID:000149
+%MD:1999/05/10
+
+%P:dlooncho
+%G:packrat
+%IH:packrat
+%C:N
+%SF:animals-land
+%S:JOPA
+%UID:002701
+%MD:1999/05/11
+
+%P:duneza
+%G:porcupine
+%IH:porcupine
+%SF:animals-land
+%C:N
+%S:JOPA/BRBI/MAGO
+%UID:000388
+%MD:2001/03/06
+
+%P:ts'it
+%G:porcupine
+%IH:porcupine
+%SF:animals-land
+%SN:Erethizon dorsatum
+%C:N
+%ETYM:Perhaps derived from the interjection {\qc ts'it} ``don't touch it!''.
+%S:JOPA/BRBI/MAGO/BEMC/STJA
+%UID:000387
+%MD:1998/12/08
+
+%P:lhiyaz
+%G:puppy
+%IH:puppy
+%C:N
+%SF:animals-land
+%DUOPLURAL:lhiyazke
+%DUOPLURAL:lhikeyaz
+%R:Josie prefers {\qc lhikeyaz}.
+%S:LITM/BRBI/JOPA/EDFR/MAGO-JEKO
+%UID:000182
+%MD:2001/05/26
+
+%P:nats'ildelh
+%G:Red Squirrel
+%IH:squirrel/Red Squirrel
+%SN:Tamiasciurus hudsonicus colum.
+%C:N
+%SF:animals-land
+%S:LITM/JOPA/BRBI/STJA
+%UID:000034
+%MD:1999/02/17
+
+%P:goh
+%G:rabbit
+%IH:rabbit
+%C:N
+%SF:animals-land
+%S:LITM/JOPA/VESE/EDFR/JEKO
+%UID:000023
+%MD:1999/05/11
+
+%P:ooch'ainischoot
+%G:recently weaned calf moose
+%IH:moose, recently weaned calf
+%SF:animals-land
+%C:N
+%S:JOPA/BRBI
+%UID:000381
+%MD:1997/11/14
+
+%P:sbai
+%G:sheep
+%IH:sheep
+%C:N
+%SF:animals-land
+%S:MAGO
+%UID:001131
+%MD:1998/02/10
+
+%P:'usbai
+%G:sheep
+%IH:sheep
+%SF:animals-land
+%C:N
+%S:JOPA/BRBI
+%UID:000375
+%MD:1997/11/14
+
+%P:'ulhguk
+%G:shrew
+%IH:shrew
+%SF:animals-land
+%C:N
+%S:MAGO/VESE/JEKO
+%UID:000526
+%MD:2001/01/22
+
+%P:hoonliz
+%G:skunk
+%IH:skunk
+%C:N
+%P2s:unhoonliz
+%SF:animals-land
+%S:LITM/JOPA/BRBI/MAGO/VESE/EDFR/JEKO
+%UID:000052
+%MD:1997/06/12
+
+%P:nohbai
+%G:weasel
+%IH:weasel
+%C:N
+%SF:animals-land
+%S:JOPA/BRBI/MAGO
+%UID:000141
+%MD:1997/06/16
+
+%P:yus
+%G:wolf
+%IH:wolf
+%C:N
+%SF:animals-land
+%SN:Canis lupus
+%S:LITM/JOPA/BRBI
+%UID:000051
+%MD:1997/06/12
+
+%P:noostel
+%G:wolverine
+%IH:wolverine
+%C:N
+%SF:animals-land
+%SN:Gulo gulo
+%S:JOPA/BRBI/MAGO/VESE/EDFR/JEKO
+%UID:000140
+%MD:2001/04/20
+
+%P:tsatsul
+%G:young beaver
+%IH:beaver, young
+%SF:animals-land
+%C:N
+%S:JOPA/BRBI/STJA
+%UID:000384
+%MD:1998/12/08
+
+%P:lht'at
+%G:beaver dam
+%IH:beaver dam/dam, beaver
+%C:N
+%SF:animals-misc
+%S:STJA
+%UID:001287
+%MD:1998/12/08
+
+%P:'ulh
+%G:beaver dam
+%IH:beaver dam/dam, beaver
+%C:N
+%SF:animals-misc
+%S:STJA
+%UID:001288
+%MD:1998/12/08
+
+%P:tsaken
+%G:beaver lodge
+%IH:beaver lodge
+%C:N
+%SF:animals-misc
+%S:JOPA/BRBI/STJA
+%UID:000405
+%MD:1998/12/08
+
+%P:tunyohtsati
+%G:beaver path under the ice
+%IH:beaver path under the ice
+%C:N
+%SF:animals-misc
+%S:JOPA/EDFR
+%UID:003769
+%POCKET:Y
+%MD:2001/02/13
+
+%P:sus'an
+%G:black bear den
+%IH:black bear den
+%C:N
+%SF:animals-misc
+%S:LITM/STJA
+%UID:000131
+%MD:1998/12/08
+
+%P:shask'oh
+%G:grizzly bear tracks
+%IH:tracks, grizzly bear
+%C:N
+%SF:animals-misc
+%S:MAGO
+%UID:001132
+%MD:1998/02/10
+
+%P:hoolht'ukw
+%G:leech
+%IH:leech
+%SF:animals-misc
+%C:N
+%S:JOPA/PEJO/EDFR
+%UID:003410
+%POCKET:Y
+%MD:2000/11/01
+
+%P:hoot'ub
+%G:leech
+%IH:leech
+%SF:bugs
+%C:N
+%S:JOPA/BRBI/MAGO
+%UID:000370
+%MD:2000/11/01
+
+%P:dunik'oh
+%G:moose tracks
+%IH:moose tracks
+%C:N
+%SF:animals-misc
+%S:PEJO/JOPA
+%ES:000491
+%UID:003121
+%POCKET:Y
+%MD:2000/09/28
+
+%P:gohk'oh
+%G:rabbit tracks
+%IH:tracks, rabbit
+%C:N
+%SF:animals-misc
+%S:LITM
+%UID:000073
+%MD:1997/06/12
+
+%P:tsa
+%G:beaver
+%IH:beaver
+%C:N
+%SN:Castor canadensis
+%UID:000044
+%SF:animals-water
+%S:JOPA/BRBI/STJA/EDFR/VESE/JEKO/MAGO
+%MD:2001/04/18
+
+%P:tsayaz
+%G:beaver kit
+%IH:kit, beaver/beaver, baby
+%SF:animals-water
+%C:N
+%S:STJA
+%UID:001294
+%MD:2000/06/18
+
+%P:tsati
+%G:big beaver, old beaver
+%IH:beaver, big/beaver, old
+%C:N
+%SF:animals-water
+%S:LITM/JOPA/BRBI/STJA
+%UID:000206
+%MD:1998/12/08
+
+%P:tsis
+%G:otter
+%IH:otter
+%SF:animals-water
+%SN:Lutra canadensis
+%C:N
+%S:JOPA/BRBI
+%UID:000386
+%MD:1997/11/14
+
+%P:datsan
+%G:American Crow
+%C:N
+%SF:bird-gen
+%SN:Corvus brachyrhynchos
+%IH:crow/American Crow
+%S:LITM/PEJO
+%UID:000158
+%MD:2000/10/21
+
+%P:sewh
+%G:American Robin
+%IH:Robin, American
+%SN:Turdus migratorius
+%C:N
+%SF:bird-gen
+%S:LITM/JOPA/BRBI/PEJO
+%UID:000181
+%MD:2000/10/21
+
+%P:tsebalyan
+%G:Bald Eagle
+%IH:Bald Eagle
+%C:N
+%SF:bird-gen
+%SN:Haliaeetus leucocephalus
+%S:LITM/JOPA/BRBI
+%UID:000150
+%MD:1997/06/16
+
+%P:dut'ai
+%G:bird, duck
+%IH:bird/duck
+%C:N
+%SF:bird-gen
+%S:LITM/JOPA/BRBI/MAGO/STJA/PEJO
+%UID:000081
+%MD:2000/09/28
+
+%P:delh
+%G:crane
+%IH:crane
+%C:N
+%SF:bird-gen
+%S:LITM
+%UID:000255
+%MD:1997/06/16
+
+%P:khoh
+%G:goose
+%IH:goose
+%C:N
+%P1s:skhoh
+%P2s:nkhoh
+%P1p:nekhoh
+%POSS:khoh
+%SF:bird-gen
+%S:JOPA/BRBI/MAGO/VESE/EDFR/JEKO
+%UID:000031
+%MD:2001/02/15
+
+%P:ts'unalhduz
+%G:hummingbird
+%IH:hummingbird
+%C:N
+%SF:bird-gen
+%S:LITM/BRBI/JOPA
+%UID:000242
+%MD:1997/06/16
+
+%P:gagiyaz
+%G:little bird
+%IH:bird, little
+%C:N
+%QCHECK:Any little bird?
+%SF:bird-gen
+%S:PEJO
+%UID:003115
+%POCKET:Y
+%MD:2000/09/28
+
+%P:dut'aiyaz
+%G:little bird
+%IH:bird, little
+%C:N
+%SF:bird-gen
+%S:STJA/JOPA/EDFR/VESE/PEJO
+%UID:001818
+%MD:2000/09/28
+
+%P:dadzi
+%G:loon
+%IH:loon
+%SF:bird-gen
+%SN:Gavia immer
+%C:N
+%S:LITM/JOPA/BRBI
+%UID:000020
+%MD:1997/06/12
+
+%P:t'ugicho
+%G:Mallard Duck
+%IH:Mallard Duck
+%C:N
+%SN:Anas platyrhynchos
+%SF:bird-gen
+%S:LITM/JOPA/BRBI/MAGO/VESE/EDFR/JEKO
+%UID:000041
+%MD:1999/05/11
+
+%P:musdzoon
+%G:owl
+%IH:owl
+%C:N
+%SF:bird-gen
+%S:LITM/BRBI/JOPA/MAGO
+%UID:000135
+%MD:1997/12/11
+
+%P:ts'olh
+%G:Red-necked Grebe
+%MN:A variety of duck locally known as the Helldiver.
+%IH:Red-Necked Grebe/Helldiver/Grebe, Red-Necked
+%SN:Podiceps grisegena
+%SF:bird-gen
+%C:N
+%S:BRBI/JOPA
+%UID:000263
+%MD:2001/03/08
+
+%P:'utsut
+%G:Ruffed grouse
+%IH:Ruffed grouse
+%C:N
+%SF:bird-gen
+%S:LITM
+%UID:000218
+%MD:1997/06/16
+
+%P:nat'oh
+%G:Spruce Grouse, Fool Hen
+%IH:Spruce Grouse/Grouse, Spruce/Fool Hen
+%SF:bird-gen
+%SN:Dendragapus canadensis
+%C:N
+%S:MAGO/LITM
+%UID:000539
+%MD:1997/12/04
+
+%P:tehgwuzeh
+%G:Steller's Jay, commonly known locally as ``bluejay''.
+%IH:Steller's Jay/jay, Steller's/Bluejay (Steller's Jay)
+%SF:bird-gen
+%SN:Cyanocitta stelleri
+%C:N
+%S:JOPA/BRBI
+%UID:000356
+%MD:1997/11/14
+
+%P:wedlew
+%G:sandpiper
+%IH:sandpiper
+%C:N
+%SN:Eremophila alpestris et sim.
+%SF:bird-gen
+%S:LITM
+%UID:000237
+%MD:2002/07/19
+
+%P:besk'i
+%G:seagull
+%IH:seagull
+%C:N
+%SN:Larus species
+%SF:bird-gen
+%S:LITM
+%UID:000136
+%MD:2002/07/19
+
+%P:ts'incho
+%G:swan
+%IH:swan
+%C:N
+%SF:bird-gen
+%S:LITM
+%UID:000222
+%MD:1997/06/16
+
+%P:'uschas
+%G:Tree Swallow
+%IH:Tree Swallow
+%SF:bird-gen
+%SN:Tachycineta bicolor
+%C:N
+%S:MAGO
+%UID:000535
+%MD:1997/11/22
+
+%P:gwuzeh
+%G:Whiskey Jack, Gray Jay, Canadian Jay
+%IH:Whiskey Jack/Jay, Gray/Jay, Canadian
+%C:N
+%SN:Perisoreus canadensis
+%SF:bird-gen
+%S:LITM/JOPA/BRBI/MAGO
+%UID:000148
+%MD:1997/11/22
+
+%P:chundulkw'uz
+%G:woodpecker
+%IH:woodpecker
+%C:N
+%SF:bird-gen
+%S:JOPA/BRBI/STJA
+%UID:000138
+%MD:1999/03/31
+
+%P:-t'o
+%G:nest
+%IH:nest
+%C:N
+%Pind:'ut'o
+%P3s:but'o
+%Pref:dut'o
+%SF:bird-misc/bugs
+%S:STJA/PEJO/JOPA/BRBI/EDFR
+%ES:001353
+%UID:000226
+%MD:2001/03/07
+
+%P:-nak'uz
+%G:a single eye
+%IH:eye, a single
+%C:N
+%SF:body-ext
+%S:JOPA/EDFR
+%ES:000457
+%UID:003770
+%POCKET:Y
+%MD:2001/02/13
+
+%P:-kechunoh
+%G:ankle
+%IH:ankle
+%P1s:skechunoh
+%P2s:nkechunoh
+%C:N
+%S:MAGO/STJA
+%SF:body-ext
+%UID:000865
+%MD:1999/03/03
+
+%P:-de
+%G:antler, horn
+%IH:antler/horn
+%C:N
+%SF:body-ext
+%P3s:bude
+%S:STJA
+%UID:002266
+%MD:1999/03/02
+
+%P:-de_zu_s
+%G:antler velvet
+%IH:velvet, antler
+%C:N
+%SF:body-ext
+%P3s:bude_zu_s
+%S:STJA
+%UID:002267
+%MD:1999/03/02
+
+%P:-tsul
+%G:anus, asshole
+%IH:anus/asshole
+%C:N
+%P1s:stsul
+%SF:body-ext
+%S:STJA
+%UID:002171
+%MD:1999/02/23
+
+%P:-gan
+%G:arm
+%IH:arm
+%P1s:sgan
+%P2s:ngan
+%Pref:dugan
+%C:N
+%S:LITM/MAGO/STJA/JOPA/VESE/EDFR/JEKO
+%SF:body-ext
+%UID:000863
+%MD:1999/02/22
+
+%P:-chak'ests'oh
+%G:armpit
+%IH:armpit
+%P1s:schak'ests'oh
+%C:N
+%S:MAGO
+%UID:000859
+%SF:body-ext
+%MD:1997/12/11
+
+%P:-t'ak
+%G:back (of body)
+%IH:back (of body)
+%P1s:st'ak
+%P3s:but'ak
+%C:N
+%S:MAGO/EDFR/VESE/JEKO
+%SF:body-ext
+%UID:000899
+%MD:1997/12/11
+
+%P:-lat'ak
+%G:back of hand
+%IH:back of hand
+%P1s:slat'ak
+%C:N
+%S:MAGO
+%SF:body-ext
+%UID:000871
+%MD:1997/12/11
+
+%P:tsake
+%G:beaver paws
+%IH:beaver paws
+%C:N
+%SF:body-ext
+%S:LITM-EDFR
+%UID:000329
+%MD:1997/06/18
+
+%P:tsache
+%G:beaver tail
+%IH:beaver tail
+%C:N
+%SF:body-ext
+%S:LITM
+%UID:000207
+%MD:1997/06/16
+
+%P:-but
+%G:belly
+%IH:belly
+%P1s:sbut
+%C:N
+%S:MAGO
+%SF:body-ext
+%UID:000937
+%MD:1997/12/11
+
+%P:-ts'oo
+%G:breast
+%IH:breast
+%P1s:sts'oo
+%C:N
+%S:MAGO
+%UID:000855
+%SF:body-ext
+%MD:1997/12/11
+
+%P:-tl'a
+%G:bum, buttocks
+%IH:bum/buttocks
+%P1s:stl'a
+%C:N
+%S:MAGO
+%SF:body-ext
+%UID:000936
+%MD:1997/12/11
+
+%P:-kechunch'ooz
+%G:calf of leg
+%IH:calf of leg
+%C:N
+%SF:body-ext
+%S:JOPA/EDFR
+%UID:004458
+%POCKET:Y
+%MD:2001/04/20
+
+%P:-nembus
+%G:cheek
+%IH:cheek
+%P1s:snimbus
+%C:N
+%S:MAGO/JOPA/BRBI
+%SF:body-ext
+%UID:000889
+%MD:1997/12/11
+
+%P:-yoh
+%G:chest
+%IH:chest
+%C:N
+%SF:body-ext
+%S:JOPA/EDFR
+%ES:000660
+%UID:003777
+%POCKET:Y
+%MD:2001/02/13
+
+%P:-yeda'
+%G:chin
+%IH:chin
+%P1s:syeda'
+%C:N
+%S:MAGO
+%SF:body-ext
+%UID:000882
+%MD:1997/12/11
+
+%P:-tsidakwhudutle
+%G:cranial fontanelle, baby's soft spot
+%IH:cranial fontanelle/baby's soft spot
+%C:N
+%P3s:butsidakwhudutle
+%S:MAGO
+%SF:body-ext
+%UID:000898
+%MD:1997/12/11
+
+%P:-dzo
+%G:ear
+%IH:ear
+%MN:This refers to the ear considered as a whole, especially the exterior.
+ When the canal in particular is referred to, one uses {\qc -dzek}, q.v.
+%C:N
+%P1s:sdzo
+%S:MAGO
+%SF:body-ext
+%UID:000879
+%MD:1997/12/11
+
+%P:-dzobal
+%G:earlobe
+%IH:earlobe
+%C:N
+%P1s:sdzobal
+%SF:body-ext
+%S:BRBI/MAGO
+%UID:000641
+%MD:1997/12/17
+
+%P:-nints'uzti
+%G:elbow
+%IH:elbow
+%P1s:snints'uzti
+%C:N
+%S:MAGO
+%SF:body-ext
+%UID:000916
+%MD:1997/12/11
+
+%P:-na
+%G:eye
+%IH:eye
+%P1s:sna
+%P3s:buna
+%C:N
+%S:MAGO/JOPA/EDFR
+%SF:body-ext
+%UID:000891
+%MD:1998/12/18
+
+%P:-nak'et
+%G:eye socket
+%IH:eye socket
+%P1s:snak'et
+%C:N
+%S:MAGO
+%SF:body-ext
+%UID:000892
+%MD:1997/12/11
+
+%P:-nach'usdooz
+%G:eyebrow
+%IH:eyebrow
+%P1s:snach'usdooz
+%C:N
+%S:MAGO
+%SF:body-ext
+%UID:000896
+%MD:1997/12/11
+
+%P:-nalusgha
+%G:eyelash
+%IH:eyelash
+%P1s:snalusgha
+%C:N
+%S:MAGO
+%SF:body-ext
+%UID:000895
+%MD:1997/12/11
+
+%P:-nalus
+%G:eyelid
+%IH:eyelid
+%P1s:snalus
+%C:N
+%S:MAGO
+%SF:body-ext
+%UID:000894
+%MD:1997/12/11
+
+%P:-nen
+%G:face
+%IH:face
+%P1s:snen
+%P2s:nyunen
+%P3s:bunen
+%C:N
+%S:MAGO/PEJO/STJA/JOPA/VESE/EDFR
+%SF:body-ext
+%ES:000369
+%UID:000890
+%MD:2001/04/20
+
+%P:ts'uz
+%G:feather, down
+%IH:feather/down
+%C:N
+%SF:body-ext
+%S:LITM/STJA/PEJO
+%UID:000271
+%MD:2000/10/16
+
+%P:dut'aits'uz
+%G:feathers, down
+%IH:feathers/down
+%C:N
+%SF:body-ext
+%S:STJA
+%UID:002647
+%MD:2001/02/27
+
+%P:-lasge
+%G:finger other than thumb or pinkie
+%IH:finger other than thumb or pinkie
+%P1s:slasge
+%C:N
+%S:MAGO/STJA/JOPA/PEJO/EDFR
+%SF:body-ext
+%UID:000869
+%MD:2000/11/01
+
+%P:-lagui
+%G:fingernails, claws of forepaws
+%IH:fingernails/claws of forepaws
+%P1s:slagui
+%C:N
+%S:MAGO
+%SF:body-ext
+%UID:000875
+%MD:1997/12/11
+
+%P:-ke
+%G:foot
+%IH:foot
+%C:N
+%P1s:ske
+%Pref:duke
+%S:MAGO/STJA/JOPA/VESE/EDFR/JEKO
+%UID:000851
+%SF:body-ext
+%MD:1999/05/11
+
+%P:-gha
+%G:hair
+%MN:This refers to hair in general and where no more specific term exists, as on the
+ arms and chest. It is not used to refer to the hair of the head, for which the
+ more specific term {\qc -tsigha} is always used.
+%IH:hair
+%C:N
+%S:MAGO
+%SF:body-ext
+%UID:000888
+%MD:1997/12/11
+
+%P:-tsigha
+%G:hair of the head
+%IH:hair of the head
+%P1s:stsigha
+%P2s:ntsigha
+%P3s:butsigha
+%C:N
+%S:MAGO/LITM/PEJO
+%SF:body-ext
+%UID:000887
+%MD:2000/10/20
+
+%P:-la
+%G:hand
+%IH:hand
+%P1s:sla
+%P2s:nla
+%C:N
+%S:MAGO/STJA
+%SF:body-ext
+%POCKET:Y
+%UID:000866
+%MD:1999/02/17
+
+%P:-tsi
+%G:head
+%IH:head
+%Pref:dutsi
+%C:N
+%SF:body-ext
+%S:STJA
+%UID:002965
+%POCKET:Y
+%MD:1999/06/24
+
+%P:-kelatsul
+%G:heel
+%IH:heel
+%P1s:skelatsul
+%C:N
+%S:MAGO
+%SF:body-ext
+%UID:000917
+%MD:1997/12/11
+
+%P:-k'ui
+%G:hip
+%IH:hip
+%P1s:sk'ui
+%C:N
+%S:MAGO/JOPA
+%SF:body-ext
+%UID:000923
+%MD:2001/03/15
+
+%P:-gwut
+%G:knee
+%IH:knee
+%P1s:sgwut
+%C:N
+%S:MAGO
+%SF:body-ext
+%UID:000933
+%MD:1997/12/11
+
+%P:-gwutlasi'ai
+%G:kneecap
+%IH:kneecap
+%P1s:sgwutlasi'ai
+%R:has something to do with floating at tip of knee
+%C:N
+%S:MAGO
+%SF:body-ext
+%UID:000925
+%MD:1997/12/11
+
+%P:-langwut
+%G:knuckles at boundary between hand and fingers
+%IH:knuckles at boundary between hand and fingers
+%P1s:slangwut
+%SF:body-ext
+%C:N
+%S:JOPA/BRBI
+%UID:000967
+%MD:1997/12/17
+
+%P:-kechun
+%G:leg
+%IH:leg
+%P1s:skechun
+%C:N
+%S:MAGO
+%UID:000852
+%SF:body-ext
+%MD:1997/12/11
diff --git a/test/wjposer1.ok b/test/wjposer1.ok
new file mode 100644
index 00000000..16cde6a7
--- /dev/null
+++ b/test/wjposer1.ok
@@ -0,0 +1,2068 @@
+%IH:exertion
+%P:nut'i
+%G:exertion
+%OIH:exertion
+%C:N
+%SF:abstractions-misc
+%S:JOPA/EDFR/VESE
+%ES:000088
+%UID:002463
+%MD:1999/03/15
+
+%IH:information
+%P:ts'iyantsuk t'eooninzun
+%G:information
+%OIH:information
+%C:N
+%SF:abstractions-misc
+%S:JOPA/BRBI
+%UID:000986
+%MD:1997/12/17
+
+%IH:interval
+%P:k'et'uk
+%G:interval
+%OIH:interval
+%C:N
+%SF:abstractions-misc
+%S:MAGO
+%ES:001077
+%UID:000873
+%MD:1997/12/11
+
+%IH:language
+%P:khunek
+%G:language, word, message
+%OIH:language/word/message
+%POSS:ghunek
+%P1p:neghunek
+%C:N
+%SF:abstractions-misc
+%S:MAGO/BRBI/JOPA/EDFR/VESE/JEKO
+%UID:000928
+%MD:2001/02/10
+
+%IH:word
+%P:khunek
+%G:language, word, message
+%OIH:language/word/message
+%POSS:ghunek
+%P1p:neghunek
+%C:N
+%SF:abstractions-misc
+%S:MAGO/BRBI/JOPA/EDFR/VESE/JEKO
+%UID:000928
+%MD:2001/02/10
+
+%IH:message
+%P:khunek
+%G:language, word, message
+%OIH:language/word/message
+%POSS:ghunek
+%P1p:neghunek
+%C:N
+%SF:abstractions-misc
+%S:MAGO/BRBI/JOPA/EDFR/VESE/JEKO
+%UID:000928
+%MD:2001/02/10
+
+%IH:running
+%P:gal
+%G:running
+%OIH:running
+%C:N
+%R:Dugal ndesda. He got hurt while running.
+%SF:abstractions-misc
+%S:JOPA
+%ES:000535
+%UID:002462
+%MD:1999/03/15
+
+%IH:work
+%P:t'en
+%G:work
+%OIH:work
+%C:N
+%SF:abstractions-misc
+%S:VESE/PEJO
+%ES:000672
+%UID:003028
+%POCKET:N
+%MD:2000/10/04
+
+%IH:work
+%P:'ut'en
+%G:work
+%OIH:work
+%C:N
+%SF:abstractions-misc
+%P1p:neye'ut'en
+%S:JOPA
+%ES:001041
+%UID:004264
+%POCKET:Y
+%MD:2001/03/15
+
+%IH:Spotted Frog
+%P:dulkw'ah
+%G:Spotted Frog
+%OIH:Spotted Frog/Frog, Spotted
+%SN:Rana pretiosa
+%MN:Lives in water and has red markings on the belly.
+%PICTURE:/home/poser/Research/Dakelh/Pictures/psfiles/SpottedFrog.ps
+%CAPTION:{\qc Tsasdli} --- Spotted Frog
+%PICPERMISSION:N
+%PICCREDIT:Drawing of Spotted Frog from {\it The Amphibians of British Columbia\/}.
+%C:N
+%SF:amphibiansandreptiles
+%S:EDFR
+%UID:004111
+%POCKET:Y
+%MD:2001/03/07
+
+%IH:Frog, Spotted
+%P:dulkw'ah
+%G:Spotted Frog
+%OIH:Spotted Frog/Frog, Spotted
+%SN:Rana pretiosa
+%MN:Lives in water and has red markings on the belly.
+%PICTURE:/home/poser/Research/Dakelh/Pictures/psfiles/SpottedFrog.ps
+%CAPTION:{\qc Tsasdli} --- Spotted Frog
+%PICPERMISSION:N
+%PICCREDIT:Drawing of Spotted Frog from {\it The Amphibians of British Columbia\/}.
+%C:N
+%SF:amphibiansandreptiles
+%S:EDFR
+%UID:004111
+%POCKET:Y
+%MD:2001/03/07
+
+%IH:lizard
+%P:chunlai
+%G:salamander, lizard
+%OIH:lizard/salamander
+%MN:The only species of salamander found in the region is the
+ Long-toed Salamander {\it Ambystoma macrodactylum\/}. No lizards
+ are found in the region. However, this term is applied to other
+ varieties of salamander and to lizards, such as the gekkos sold as
+ pets.
+%FGREF:Corkran \& Thoms (1996;39)
+%SN:Ambystoma macrodactylum
+%C:N
+%SF:amphibiansandreptiles
+%S:LITM/JOPA/BRBI
+%UID:000157
+%MD:1998/05/16
+
+%IH:salamander
+%P:chunlai
+%G:salamander, lizard
+%OIH:lizard/salamander
+%MN:The only species of salamander found in the region is the
+ Long-toed Salamander {\it Ambystoma macrodactylum\/}. No lizards
+ are found in the region. However, this term is applied to other
+ varieties of salamander and to lizards, such as the gekkos sold as
+ pets.
+%FGREF:Corkran \& Thoms (1996;39)
+%SN:Ambystoma macrodactylum
+%C:N
+%SF:amphibiansandreptiles
+%S:LITM/JOPA/BRBI
+%UID:000157
+%MD:1998/05/16
+
+%IH:snake
+%P:tl'ughus
+%G:snake
+%OIH:snake
+%C:N
+%MN:The only snake found in the region is the Common Garter Snake
+ {\it Thamnophis sirtalis\/}. However, the term is applied to all snakes.
+%SN:Thamnophis sirtalis
+%SF:amphibiansandreptiles
+%S:LITM/JOPA/BRBI/MAGO
+%UID:000250
+%MD:1998/12/07
+
+%IH:Western Toad
+%P:tsasdli
+%G:Western Toad
+%SN:Bufo boreas
+%OIH:Western Toad/Toad, Western
+%MN:Lives on land.
+%SF:amphibiansandreptiles
+%C:N
+%S:LITM/JOPA/BRBI/MAGO/STJA/EDFR
+%UID:000059
+%MD:2001/03/07
+
+%IH:Toad, Western
+%P:tsasdli
+%G:Western Toad
+%SN:Bufo boreas
+%OIH:Western Toad/Toad, Western
+%MN:Lives on land.
+%SF:amphibiansandreptiles
+%C:N
+%S:LITM/JOPA/BRBI/MAGO/STJA/EDFR
+%UID:000059
+%MD:2001/03/07
+
+%IH:bitch
+%P:lhits'e
+%G:bitch, female dog
+%OIH:bitch/dog, female
+%C:N
+%SF:animals-domestic
+%S:JOPA/EDFR/VESE
+%UID:002446
+%MD:1999/03/15
+
+%IH:dog, female
+%P:lhits'e
+%G:bitch, female dog
+%OIH:bitch/dog, female
+%C:N
+%SF:animals-domestic
+%S:JOPA/EDFR/VESE
+%UID:002446
+%MD:1999/03/15
+
+%IH:cow
+%P:musdus
+%G:cow
+%OIH:cow
+%C:N
+%P2s:nmusdus
+%ETYM:Loan from Cree {\qf mostos} ``buffalo''.
+%LOANSOURCE:Cree
+%SF:animals-domestic
+%S:LITM/JOPA/BRBI/MAGO
+%UID:000036
+%MD:1997/06/12
+
+%IH:dog
+%P:lhi
+%G:dog
+%OIH:dog
+%C:N
+%DUOPLURAL:lhike
+%SF:animals-domestic
+%POSS:lik
+%P1s:slik
+%P1p:nelik
+%DUOPLURAL:lhike
+%S:LITM/JOPA/BRBI/STJA/VESE/EDFR/JEKO
+%UID:000270
+%MD:2001/02/15
+
+%IH:donkey
+%P:budzocho
+%G:donkey, mule
+%OIH:donkey/mule
+%SF:animals-domestic
+%ETYM:``big ears''.
+%C:N
+%S:JOPA/BRBI
+%UID:000376
+%MD:1997/11/14
+
+%IH:mule
+%P:budzocho
+%G:donkey, mule
+%OIH:donkey/mule
+%SF:animals-domestic
+%ETYM:``big ears''.
+%C:N
+%S:JOPA/BRBI
+%UID:000376
+%MD:1997/11/14
+
+%IH:horse
+%P:yeztli
+%G:horse
+%OIH:horse
+%SF:animals-domestic
+%ETYM:A contraction of {\qc yezihlhi} ``elk dog''.
+%C:N
+%S:LITM/JOPA/BRBI/PEJO
+%UID:000042
+%MD:2000/10/21
+
+%IH:dogs
+%P:lhike
+%G:Irregular plural of {\qc lhi}, q.v.
+%OIH:dogs
+%C:N
+%SF:animals-domestic
+%S:LITM/BRBI/JOPA/STJA
+%UID:000293
+%MD:1999/01/26
+
+%IH:lamb
+%P:sbaiyaz
+%G:lamb
+%OIH:lamb
+%C:N
+%SF:animals-domestic
+%S:LITM
+%UID:000254
+%MD:1997/06/16
+
+%IH:pig
+%P:gugoos
+%G:pig
+%OIH:pig
+%C:N
+%ETYM:Ultimately borrowed from French {\qf coche}, probably via Cree.
+%LOANSOURCE:Cree
+%SF:animals-domestic
+%S:LITM/JOPA/BRBI
+%UID:000133
+%MD:1997/06/16
+
+%IH:bat
+%P:'ut'az
+%G:bat
+%OIH:bat
+%SF:animals-land
+%C:N
+%S:JOPA/BRBI
+%UID:000390
+%MD:1997/11/14
+
+%IH:bat
+%P:liyabdut'ai
+%G:bat
+%MN:The only kind of bat found in the region is the Little Brown Myotis.
+%OIH:bat
+%SF:animals-land
+%SN:Myotis lucifugus
+%ETYM:Literally, ``devil bird'', a compound of {\qc liyab} ``devil'', a loan from
+ French {\qf le diable}, and {\qc dut'ai} ``bird''.
+%LOANSOURCE:French
+%C:N
+%S:JOPA/BRBI
+%UID:000215
+%MD:1997/06/16
+
+%IH:black bear
+%P:sus
+%G:black bear
+%OIH:black bear
+%C:N
+%SF:animals-land
+%SN:Ursus americanus
+%S:LITM/JOPA/BRBI/STJA/EDFR/VESE/JEKO
+%UID:000048
+%MD:1998/12/19
+
+%IH:buffalo
+%P:musduscho dughai
+%G:buffalo
+%OIH:buffalo
+%SF:animals-land
+%C:N
+%ETYM:``big hairy cow''.
+%S:JOPA/EDFR
+%UID:003478
+%POCKET:Y
+%MD:2000/11/04
+
+%IH:buffalo
+%P:tl'ok'umusdus
+%G:buffalo
+%OIH:buffalo
+%SF:animals-land
+%C:N
+%S:JOPA/BRBI
+%UID:000374
+%MD:2000/11/01
+
+%IH:bull moose
+%P:jenyo
+%G:bull moose
+%OIH:bull moose/moose, bull
+%SF:animals-land
+%C:N
+%S:MAGO/JOPA/VESE/EDFR/JEKO
+%UID:000474
+%MD:1999/05/11
+
+%IH:moose, bull
+%P:jenyo
+%G:bull moose
+%OIH:bull moose/moose, bull
+%SF:animals-land
+%C:N
+%S:MAGO/JOPA/VESE/EDFR/JEKO
+%UID:000474
+%MD:1999/05/11
+
+%IH:moose, bull
+%P:denyo
+%G:bull moose
+%OIH:moose, bull
+%SF:animals-land
+%C:N
+%S:LITM/JOPA
+%UID:000348
+%MD:1997/06/18
+
+%IH:calf moose
+%P:tsiyeyaz
+%G:calf moose
+%OIH:calf moose/moose, calf
+%SF:animals-land
+%C:N
+%S:JOPA/BRBI
+%UID:000380
+%MD:1997/11/14
+
+%IH:moose, calf
+%P:tsiyeyaz
+%G:calf moose
+%OIH:calf moose/moose, calf
+%SF:animals-land
+%C:N
+%S:JOPA/BRBI
+%UID:000380
+%MD:1997/11/14
+
+%IH:calf moose
+%P:duniyaz
+%G:calf moose
+%OIH:calf moose/moose, calf
+%C:N
+%SF:animals-land
+%S:LITM/JOPA/BRBI
+%UID:000245
+%MD:1997/06/16
+
+%IH:moose, calf
+%P:duniyaz
+%G:calf moose
+%OIH:calf moose/moose, calf
+%C:N
+%SF:animals-land
+%S:LITM/JOPA/BRBI
+%UID:000245
+%MD:1997/06/16
+
+%IH:caribou
+%P:whudzih
+%G:caribou
+%OIH:caribou
+%C:N
+%SF:animals-land
+%SN:Rangifer tarandus
+%S:JOPA/BRBI/MAGO/EDFR/VESE/JEKO
+%UID:000274
+%MD:1999/05/11
+
+%IH:cat
+%P:boos
+%G:cat
+%OIH:cat
+%C:N
+%SN:Felis domesticus
+%ETYM:Loan from English {\qf puss}, possibly via Chinook Jargon.
+%LOANSOURCE:English
+%SF:animals-land
+%S:LITM/JOPA/BRBI
+%UID:000137
+%MD:1997/12/17
+
+%IH:chipmunk
+%P:ts'uwhuljos
+%G:chipmunk
+%OIH:chipmunk
+%C:N
+%SF:animals-land
+%S:LITM/JOPA/BRBI
+%UID:000146
+%MD:1997/06/16
+
+%IH:cougar
+%P:booscho
+%G:cougar
+%OIH:cougar
+%SF:animals-land
+%SN:Felis concolor
+%C:N
+%ETYM:Literally, ``big cat'', where {\qc boos} ``cat'' is a loan from English
+ {\qf puss}, possibly via Chinook Jargon.
+%S:JOPA/BRBI
+%UID:000050
+%MD:1997/11/14
+
+%IH:cow moose
+%P:duni'at
+%G:cow moose
+%OIH:cow moose/moose, cow
+%SF:animals-land
+%C:N
+%S:JOPA/BRBI
+%UID:000377
+%MD:1997/11/14
+
+%IH:moose, cow
+%P:duni'at
+%G:cow moose
+%OIH:cow moose/moose, cow
+%SF:animals-land
+%C:N
+%S:JOPA/BRBI
+%UID:000377
+%MD:1997/11/14
+
+%IH:coyote
+%P:tintulhi
+%G:coyote
+%OIH:coyote
+%C:N
+%SF:animals-land
+%SN:Canis latrans
+%S:JOPA/BRBI
+%R:LITM has chuntulhi.
+%UID:000155
+%MD:1997/06/16
+
+%IH:deer
+%P:yests'e
+%G:deer
+%OIH:deer
+%SF:animals-land
+%C:N
+%S:LITM/JOPA/BRBI/EDFR
+%UID:000132
+%MD:1998/12/16
+
+%IH:dry cow moose
+%P:dets'it
+%G:dry cow moose
+%OIH:dry cow moose/moose, dry cow
+%SF:animals-land
+%C:N
+%S:JOPA/BRBI
+%UID:000378
+%MD:1997/11/14
+
+%IH:moose, dry cow
+%P:dets'it
+%G:dry cow moose
+%OIH:dry cow moose/moose, dry cow
+%SF:animals-land
+%C:N
+%S:JOPA/BRBI
+%UID:000378
+%MD:1997/11/14
+
+%IH:elk
+%P:yezih
+%G:elk
+%OIH:elk
+%SF:animals-land
+%C:N
+%R:STJA doesn't use this.
+%S:JOPA/BRBI
+%UID:000382
+%MD:1997/11/14
+
+%IH:beaver, female
+%P:tsa'at
+%G:female beaver
+%OIH:beaver, female
+%C:N
+%SF:animals-land
+%S:STJA
+%UID:001295
+%MD:1998/12/08
+
+%IH:fisher
+%P:chunihcho
+%G:fisher
+%OIH:fisher
+%ETYM:``big marten''.
+%SF:animals-land
+%SN:Martes pennanti
+%C:N
+%S:JOPA/BRBI/MAGO
+%UID:000385
+%MD:2000/06/18
+
+%IH:flying squirrel
+%P:ts'unalhbuz
+%G:flying squirrel
+%OIH:flying squirrel
+%SF:animals-land
+%SN:Glaucomys sabrinus alpinus
+%PICTURE:/home/poser/Research/Dakelh/Pictures/psfiles/FlyingSquirrel.ps
+%CAPTION:{\qc ts'unulhbuz} --- Flying Squirrel
+%PICPERMISSION:N
+%PICCREDIT:Drawing of Flying Squirrel from {\it The Mammals of British Columbia\/}.
+%C:N
+%S:JOPA/BRBI
+%UID:000389
+%MD:1997/11/14
+
+%IH:fox
+%P:nanguz
+%G:fox
+%OIH:fox
+%C:N
+%SF:animals-land
+%S:MAGO
+%UID:000139
+%MD:2001/02/26
+
+%IH:grizzly bear
+%P:shas
+%G:grizzly bear
+%OIH:grizzly bear
+%C:N
+%SF:animals-land
+%S:LITM/JOPA/BRBI/VESE/EDFR/JEKO
+%UID:000039
+%MD:1997/06/12
+
+%IH:grizzly bear cub
+%P:shasyaz
+%G:grizzly bear cub
+%OIH:grizzly bear cub/cub, grizzly bear
+%C:N
+%SF:animals-land
+%S:STJA
+%UID:002114
+%MD:1999/02/20
+
+%IH:cub, grizzly bear
+%P:shasyaz
+%G:grizzly bear cub
+%OIH:grizzly bear cub/cub, grizzly bear
+%C:N
+%SF:animals-land
+%S:STJA
+%UID:002114
+%MD:1999/02/20
+
+%IH:grizzly bear sow
+%P:shas'at
+%G:grizzly bear sow
+%OIH:grizzly bear sow/sow, grizzly bear
+%C:N
+%SF:animals-land
+%ETYM:``grizzly bear's wife''.
+%S:STJA
+%UID:002113
+%MD:1999/02/20
+
+%IH:sow, grizzly bear
+%P:shas'at
+%G:grizzly bear sow
+%OIH:grizzly bear sow/sow, grizzly bear
+%C:N
+%SF:animals-land
+%ETYM:``grizzly bear's wife''.
+%S:STJA
+%UID:002113
+%MD:1999/02/20
+
+%IH:lynx
+%P:wasi
+%G:lynx
+%OIH:lynx
+%C:N
+%SF:animals-land
+%SN:Felis lynx
+%ETYM:Loan from Gitksan {\qf wish}.
+%LOANSOURCE:Gitksan
+%S:JOPA/BRBI/STJA/EDFR/VESE/JEKO/MAGO
+%UID:000049
+%MD:2001/04/20
+
+%IH:woodchuck
+%P:k'ani
+%G:woodchuck
+%OIH:woodchuck
+%C:N
+%SF:animals-land
+%SN:Marmota monax
+%S:JOPA/BRBI/PEJO
+%R:Clarified with Josie and Peter 2001/05/28.
+%UID:000391
+%POCKET:Y
+%MD:2001/05/28
+
+%IH:marmot
+%P:dutni
+%G:marmot
+%OIH:marmot
+%SF:animals-land
+%C:N
+%SN:Marmota caligata
+%R:Josie and Peter are not really familiar with marmots but have heard older
+ people talk about them.
+%S:JOPA/PEJO
+%UID:000143
+%MD:1998/02/10
+
+%IH:marten
+%P:chunih
+%G:marten
+%OIH:marten
+%SF:animals-land
+%SN:Martes americana
+%C:N
+%S:JOPA/BRBI/VESE/EDFR/JEKO/MAGO
+%UID:000016
+%MD:2001/04/20
+
+%IH:mink
+%P:telhjoos
+%G:mink
+%OIH:mink
+%C:N
+%SF:animals-land
+%SN:Mustela vison
+%S:LITM/JOPA/BRBI
+%UID:000167
+%MD:1997/06/16
+
+%IH:moose
+%P:duni
+%G:moose
+%OIH:moose
+%C:N
+%SF:animals-land
+%SN:Alces alces andersoni
+%S:LITM-EDFR/JOPA/BRBI
+%UID:000346
+%MD:1997/06/18
+
+%IH:mouse
+%P:dats'ooz
+%G:mouse
+%OIH:mouse
+%SF:animals-land
+%C:N
+%S:LITM/JOPA/MAGO/VESE/JEKO
+%UID:000156
+%MD:2001/01/22
+
+%IH:muskrat
+%P:tsek'et
+%G:muskrat
+%OIH:muskrat
+%C:N
+%SF:animals-land
+%SN:Ondatra zibethicus
+%S:JOPA/BRBI/STJA/MAGO
+%UID:000335
+%MD:1998/12/08
+
+%IH:moose, newly sexually mature cow
+%P:chanjo
+%G:newly sexually mature cow moose
+%OIH:moose, newly sexually mature cow
+%SF:animals-land
+%C:N
+%S:JOPA/BRBI
+%UID:000379
+%MD:1997/11/14
+
+%IH:pack rat
+%P:looncho
+%G:pack rat
+%OIH:pack rat
+%C:N
+%SF:animals-land
+%S:VESE/JEKO/MAGO
+%UID:000149
+%MD:1999/05/10
+
+%IH:packrat
+%P:dlooncho
+%G:packrat
+%OIH:packrat
+%C:N
+%SF:animals-land
+%S:JOPA
+%UID:002701
+%MD:1999/05/11
+
+%IH:porcupine
+%P:duneza
+%G:porcupine
+%OIH:porcupine
+%SF:animals-land
+%C:N
+%S:JOPA/BRBI/MAGO
+%UID:000388
+%MD:2001/03/06
+
+%IH:porcupine
+%P:ts'it
+%G:porcupine
+%OIH:porcupine
+%SF:animals-land
+%SN:Erethizon dorsatum
+%C:N
+%ETYM:Perhaps derived from the interjection {\qc ts'it} ``don't touch it!''.
+%S:JOPA/BRBI/MAGO/BEMC/STJA
+%UID:000387
+%MD:1998/12/08
+
+%IH:puppy
+%P:lhiyaz
+%G:puppy
+%OIH:puppy
+%C:N
+%SF:animals-land
+%DUOPLURAL:lhiyazke
+%DUOPLURAL:lhikeyaz
+%R:Josie prefers {\qc lhikeyaz}.
+%S:LITM/BRBI/JOPA/EDFR/MAGO-JEKO
+%UID:000182
+%MD:2001/05/26
+
+%IH:squirrel
+%P:nats'ildelh
+%G:Red Squirrel
+%OIH:squirrel/Red Squirrel
+%SN:Tamiasciurus hudsonicus colum.
+%C:N
+%SF:animals-land
+%S:LITM/JOPA/BRBI/STJA
+%UID:000034
+%MD:1999/02/17
+
+%IH:Red Squirrel
+%P:nats'ildelh
+%G:Red Squirrel
+%OIH:squirrel/Red Squirrel
+%SN:Tamiasciurus hudsonicus colum.
+%C:N
+%SF:animals-land
+%S:LITM/JOPA/BRBI/STJA
+%UID:000034
+%MD:1999/02/17
+
+%IH:rabbit
+%P:goh
+%G:rabbit
+%OIH:rabbit
+%C:N
+%SF:animals-land
+%S:LITM/JOPA/VESE/EDFR/JEKO
+%UID:000023
+%MD:1999/05/11
+
+%IH:moose, recently weaned calf
+%P:ooch'ainischoot
+%G:recently weaned calf moose
+%OIH:moose, recently weaned calf
+%SF:animals-land
+%C:N
+%S:JOPA/BRBI
+%UID:000381
+%MD:1997/11/14
+
+%IH:sheep
+%P:sbai
+%G:sheep
+%OIH:sheep
+%C:N
+%SF:animals-land
+%S:MAGO
+%UID:001131
+%MD:1998/02/10
+
+%IH:sheep
+%P:'usbai
+%G:sheep
+%OIH:sheep
+%SF:animals-land
+%C:N
+%S:JOPA/BRBI
+%UID:000375
+%MD:1997/11/14
+
+%IH:shrew
+%P:'ulhguk
+%G:shrew
+%OIH:shrew
+%SF:animals-land
+%C:N
+%S:MAGO/VESE/JEKO
+%UID:000526
+%MD:2001/01/22
+
+%IH:skunk
+%P:hoonliz
+%G:skunk
+%OIH:skunk
+%C:N
+%P2s:unhoonliz
+%SF:animals-land
+%S:LITM/JOPA/BRBI/MAGO/VESE/EDFR/JEKO
+%UID:000052
+%MD:1997/06/12
+
+%IH:weasel
+%P:nohbai
+%G:weasel
+%OIH:weasel
+%C:N
+%SF:animals-land
+%S:JOPA/BRBI/MAGO
+%UID:000141
+%MD:1997/06/16
+
+%IH:wolf
+%P:yus
+%G:wolf
+%OIH:wolf
+%C:N
+%SF:animals-land
+%SN:Canis lupus
+%S:LITM/JOPA/BRBI
+%UID:000051
+%MD:1997/06/12
+
+%IH:wolverine
+%P:noostel
+%G:wolverine
+%OIH:wolverine
+%C:N
+%SF:animals-land
+%SN:Gulo gulo
+%S:JOPA/BRBI/MAGO/VESE/EDFR/JEKO
+%UID:000140
+%MD:2001/04/20
+
+%IH:beaver, young
+%P:tsatsul
+%G:young beaver
+%OIH:beaver, young
+%SF:animals-land
+%C:N
+%S:JOPA/BRBI/STJA
+%UID:000384
+%MD:1998/12/08
+
+%IH:beaver dam
+%P:lht'at
+%G:beaver dam
+%OIH:beaver dam/dam, beaver
+%C:N
+%SF:animals-misc
+%S:STJA
+%UID:001287
+%MD:1998/12/08
+
+%IH:dam, beaver
+%P:lht'at
+%G:beaver dam
+%OIH:beaver dam/dam, beaver
+%C:N
+%SF:animals-misc
+%S:STJA
+%UID:001287
+%MD:1998/12/08
+
+%IH:beaver dam
+%P:'ulh
+%G:beaver dam
+%OIH:beaver dam/dam, beaver
+%C:N
+%SF:animals-misc
+%S:STJA
+%UID:001288
+%MD:1998/12/08
+
+%IH:dam, beaver
+%P:'ulh
+%G:beaver dam
+%OIH:beaver dam/dam, beaver
+%C:N
+%SF:animals-misc
+%S:STJA
+%UID:001288
+%MD:1998/12/08
+
+%IH:beaver lodge
+%P:tsaken
+%G:beaver lodge
+%OIH:beaver lodge
+%C:N
+%SF:animals-misc
+%S:JOPA/BRBI/STJA
+%UID:000405
+%MD:1998/12/08
+
+%IH:beaver path under the ice
+%P:tunyohtsati
+%G:beaver path under the ice
+%OIH:beaver path under the ice
+%C:N
+%SF:animals-misc
+%S:JOPA/EDFR
+%UID:003769
+%POCKET:Y
+%MD:2001/02/13
+
+%IH:black bear den
+%P:sus'an
+%G:black bear den
+%OIH:black bear den
+%C:N
+%SF:animals-misc
+%S:LITM/STJA
+%UID:000131
+%MD:1998/12/08
+
+%IH:tracks, grizzly bear
+%P:shask'oh
+%G:grizzly bear tracks
+%OIH:tracks, grizzly bear
+%C:N
+%SF:animals-misc
+%S:MAGO
+%UID:001132
+%MD:1998/02/10
+
+%IH:leech
+%P:hoolht'ukw
+%G:leech
+%OIH:leech
+%SF:animals-misc
+%C:N
+%S:JOPA/PEJO/EDFR
+%UID:003410
+%POCKET:Y
+%MD:2000/11/01
+
+%IH:leech
+%P:hoot'ub
+%G:leech
+%OIH:leech
+%SF:bugs
+%C:N
+%S:JOPA/BRBI/MAGO
+%UID:000370
+%MD:2000/11/01
+
+%IH:moose tracks
+%P:dunik'oh
+%G:moose tracks
+%OIH:moose tracks
+%C:N
+%SF:animals-misc
+%S:PEJO/JOPA
+%ES:000491
+%UID:003121
+%POCKET:Y
+%MD:2000/09/28
+
+%IH:tracks, rabbit
+%P:gohk'oh
+%G:rabbit tracks
+%OIH:tracks, rabbit
+%C:N
+%SF:animals-misc
+%S:LITM
+%UID:000073
+%MD:1997/06/12
+
+%IH:beaver
+%P:tsa
+%G:beaver
+%OIH:beaver
+%C:N
+%SN:Castor canadensis
+%UID:000044
+%SF:animals-water
+%S:JOPA/BRBI/STJA/EDFR/VESE/JEKO/MAGO
+%MD:2001/04/18
+
+%IH:kit, beaver
+%P:tsayaz
+%G:beaver kit
+%OIH:kit, beaver/beaver, baby
+%SF:animals-water
+%C:N
+%S:STJA
+%UID:001294
+%MD:2000/06/18
+
+%IH:beaver, baby
+%P:tsayaz
+%G:beaver kit
+%OIH:kit, beaver/beaver, baby
+%SF:animals-water
+%C:N
+%S:STJA
+%UID:001294
+%MD:2000/06/18
+
+%IH:beaver, big
+%P:tsati
+%G:big beaver, old beaver
+%OIH:beaver, big/beaver, old
+%C:N
+%SF:animals-water
+%S:LITM/JOPA/BRBI/STJA
+%UID:000206
+%MD:1998/12/08
+
+%IH:beaver, old
+%P:tsati
+%G:big beaver, old beaver
+%OIH:beaver, big/beaver, old
+%C:N
+%SF:animals-water
+%S:LITM/JOPA/BRBI/STJA
+%UID:000206
+%MD:1998/12/08
+
+%IH:otter
+%P:tsis
+%G:otter
+%OIH:otter
+%SF:animals-water
+%SN:Lutra canadensis
+%C:N
+%S:JOPA/BRBI
+%UID:000386
+%MD:1997/11/14
+
+%IH:crow
+%P:datsan
+%G:American Crow
+%C:N
+%SF:bird-gen
+%SN:Corvus brachyrhynchos
+%OIH:crow/American Crow
+%S:LITM/PEJO
+%UID:000158
+%MD:2000/10/21
+
+%IH:American Crow
+%P:datsan
+%G:American Crow
+%C:N
+%SF:bird-gen
+%SN:Corvus brachyrhynchos
+%OIH:crow/American Crow
+%S:LITM/PEJO
+%UID:000158
+%MD:2000/10/21
+
+%IH:Robin, American
+%P:sewh
+%G:American Robin
+%OIH:Robin, American
+%SN:Turdus migratorius
+%C:N
+%SF:bird-gen
+%S:LITM/JOPA/BRBI/PEJO
+%UID:000181
+%MD:2000/10/21
+
+%IH:Bald Eagle
+%P:tsebalyan
+%G:Bald Eagle
+%OIH:Bald Eagle
+%C:N
+%SF:bird-gen
+%SN:Haliaeetus leucocephalus
+%S:LITM/JOPA/BRBI
+%UID:000150
+%MD:1997/06/16
+
+%IH:bird
+%P:dut'ai
+%G:bird, duck
+%OIH:bird/duck
+%C:N
+%SF:bird-gen
+%S:LITM/JOPA/BRBI/MAGO/STJA/PEJO
+%UID:000081
+%MD:2000/09/28
+
+%IH:duck
+%P:dut'ai
+%G:bird, duck
+%OIH:bird/duck
+%C:N
+%SF:bird-gen
+%S:LITM/JOPA/BRBI/MAGO/STJA/PEJO
+%UID:000081
+%MD:2000/09/28
+
+%IH:crane
+%P:delh
+%G:crane
+%OIH:crane
+%C:N
+%SF:bird-gen
+%S:LITM
+%UID:000255
+%MD:1997/06/16
+
+%IH:goose
+%P:khoh
+%G:goose
+%OIH:goose
+%C:N
+%P1s:skhoh
+%P2s:nkhoh
+%P1p:nekhoh
+%POSS:khoh
+%SF:bird-gen
+%S:JOPA/BRBI/MAGO/VESE/EDFR/JEKO
+%UID:000031
+%MD:2001/02/15
+
+%IH:hummingbird
+%P:ts'unalhduz
+%G:hummingbird
+%OIH:hummingbird
+%C:N
+%SF:bird-gen
+%S:LITM/BRBI/JOPA
+%UID:000242
+%MD:1997/06/16
+
+%IH:bird, little
+%P:gagiyaz
+%G:little bird
+%OIH:bird, little
+%C:N
+%QCHECK:Any little bird?
+%SF:bird-gen
+%S:PEJO
+%UID:003115
+%POCKET:Y
+%MD:2000/09/28
+
+%IH:bird, little
+%P:dut'aiyaz
+%G:little bird
+%OIH:bird, little
+%C:N
+%SF:bird-gen
+%S:STJA/JOPA/EDFR/VESE/PEJO
+%UID:001818
+%MD:2000/09/28
+
+%IH:loon
+%P:dadzi
+%G:loon
+%OIH:loon
+%SF:bird-gen
+%SN:Gavia immer
+%C:N
+%S:LITM/JOPA/BRBI
+%UID:000020
+%MD:1997/06/12
+
+%IH:Mallard Duck
+%P:t'ugicho
+%G:Mallard Duck
+%OIH:Mallard Duck
+%C:N
+%SN:Anas platyrhynchos
+%SF:bird-gen
+%S:LITM/JOPA/BRBI/MAGO/VESE/EDFR/JEKO
+%UID:000041
+%MD:1999/05/11
+
+%IH:owl
+%P:musdzoon
+%G:owl
+%OIH:owl
+%C:N
+%SF:bird-gen
+%S:LITM/BRBI/JOPA/MAGO
+%UID:000135
+%MD:1997/12/11
+
+%IH:Red-Necked Grebe
+%P:ts'olh
+%G:Red-necked Grebe
+%MN:A variety of duck locally known as the Helldiver.
+%OIH:Red-Necked Grebe/Helldiver/Grebe, Red-Necked
+%SN:Podiceps grisegena
+%SF:bird-gen
+%C:N
+%S:BRBI/JOPA
+%UID:000263
+%MD:2001/03/08
+
+%IH:Helldiver
+%P:ts'olh
+%G:Red-necked Grebe
+%MN:A variety of duck locally known as the Helldiver.
+%OIH:Red-Necked Grebe/Helldiver/Grebe, Red-Necked
+%SN:Podiceps grisegena
+%SF:bird-gen
+%C:N
+%S:BRBI/JOPA
+%UID:000263
+%MD:2001/03/08
+
+%IH:Grebe, Red-Necked
+%P:ts'olh
+%G:Red-necked Grebe
+%MN:A variety of duck locally known as the Helldiver.
+%OIH:Red-Necked Grebe/Helldiver/Grebe, Red-Necked
+%SN:Podiceps grisegena
+%SF:bird-gen
+%C:N
+%S:BRBI/JOPA
+%UID:000263
+%MD:2001/03/08
+
+%IH:Ruffed grouse
+%P:'utsut
+%G:Ruffed grouse
+%OIH:Ruffed grouse
+%C:N
+%SF:bird-gen
+%S:LITM
+%UID:000218
+%MD:1997/06/16
+
+%IH:Spruce Grouse
+%P:nat'oh
+%G:Spruce Grouse, Fool Hen
+%OIH:Spruce Grouse/Grouse, Spruce/Fool Hen
+%SF:bird-gen
+%SN:Dendragapus canadensis
+%C:N
+%S:MAGO/LITM
+%UID:000539
+%MD:1997/12/04
+
+%IH:Grouse, Spruce
+%P:nat'oh
+%G:Spruce Grouse, Fool Hen
+%OIH:Spruce Grouse/Grouse, Spruce/Fool Hen
+%SF:bird-gen
+%SN:Dendragapus canadensis
+%C:N
+%S:MAGO/LITM
+%UID:000539
+%MD:1997/12/04
+
+%IH:Fool Hen
+%P:nat'oh
+%G:Spruce Grouse, Fool Hen
+%OIH:Spruce Grouse/Grouse, Spruce/Fool Hen
+%SF:bird-gen
+%SN:Dendragapus canadensis
+%C:N
+%S:MAGO/LITM
+%UID:000539
+%MD:1997/12/04
+
+%IH:Steller's Jay
+%P:tehgwuzeh
+%G:Steller's Jay, commonly known locally as ``bluejay''.
+%OIH:Steller's Jay/jay, Steller's/Bluejay (Steller's Jay)
+%SF:bird-gen
+%SN:Cyanocitta stelleri
+%C:N
+%S:JOPA/BRBI
+%UID:000356
+%MD:1997/11/14
+
+%IH:jay, Steller's
+%P:tehgwuzeh
+%G:Steller's Jay, commonly known locally as ``bluejay''.
+%OIH:Steller's Jay/jay, Steller's/Bluejay (Steller's Jay)
+%SF:bird-gen
+%SN:Cyanocitta stelleri
+%C:N
+%S:JOPA/BRBI
+%UID:000356
+%MD:1997/11/14
+
+%IH:Bluejay (Steller's Jay)
+%P:tehgwuzeh
+%G:Steller's Jay, commonly known locally as ``bluejay''.
+%OIH:Steller's Jay/jay, Steller's/Bluejay (Steller's Jay)
+%SF:bird-gen
+%SN:Cyanocitta stelleri
+%C:N
+%S:JOPA/BRBI
+%UID:000356
+%MD:1997/11/14
+
+%IH:sandpiper
+%P:wedlew
+%G:sandpiper
+%OIH:sandpiper
+%C:N
+%SN:Eremophila alpestris et sim.
+%SF:bird-gen
+%S:LITM
+%UID:000237
+%MD:2002/07/19
+
+%IH:seagull
+%P:besk'i
+%G:seagull
+%OIH:seagull
+%C:N
+%SN:Larus species
+%SF:bird-gen
+%S:LITM
+%UID:000136
+%MD:2002/07/19
+
+%IH:swan
+%P:ts'incho
+%G:swan
+%OIH:swan
+%C:N
+%SF:bird-gen
+%S:LITM
+%UID:000222
+%MD:1997/06/16
+
+%IH:Tree Swallow
+%P:'uschas
+%G:Tree Swallow
+%OIH:Tree Swallow
+%SF:bird-gen
+%SN:Tachycineta bicolor
+%C:N
+%S:MAGO
+%UID:000535
+%MD:1997/11/22
+
+%IH:Whiskey Jack
+%P:gwuzeh
+%G:Whiskey Jack, Gray Jay, Canadian Jay
+%OIH:Whiskey Jack/Jay, Gray/Jay, Canadian
+%C:N
+%SN:Perisoreus canadensis
+%SF:bird-gen
+%S:LITM/JOPA/BRBI/MAGO
+%UID:000148
+%MD:1997/11/22
+
+%IH:Jay, Gray
+%P:gwuzeh
+%G:Whiskey Jack, Gray Jay, Canadian Jay
+%OIH:Whiskey Jack/Jay, Gray/Jay, Canadian
+%C:N
+%SN:Perisoreus canadensis
+%SF:bird-gen
+%S:LITM/JOPA/BRBI/MAGO
+%UID:000148
+%MD:1997/11/22
+
+%IH:Jay, Canadian
+%P:gwuzeh
+%G:Whiskey Jack, Gray Jay, Canadian Jay
+%OIH:Whiskey Jack/Jay, Gray/Jay, Canadian
+%C:N
+%SN:Perisoreus canadensis
+%SF:bird-gen
+%S:LITM/JOPA/BRBI/MAGO
+%UID:000148
+%MD:1997/11/22
+
+%IH:woodpecker
+%P:chundulkw'uz
+%G:woodpecker
+%OIH:woodpecker
+%C:N
+%SF:bird-gen
+%S:JOPA/BRBI/STJA
+%UID:000138
+%MD:1999/03/31
+
+%IH:nest
+%P:-t'o
+%G:nest
+%OIH:nest
+%C:N
+%Pind:'ut'o
+%P3s:but'o
+%Pref:dut'o
+%SF:bird-misc/bugs
+%S:STJA/PEJO/JOPA/BRBI/EDFR
+%ES:001353
+%UID:000226
+%MD:2001/03/07
+
+%IH:eye, a single
+%P:-nak'uz
+%G:a single eye
+%OIH:eye, a single
+%C:N
+%SF:body-ext
+%S:JOPA/EDFR
+%ES:000457
+%UID:003770
+%POCKET:Y
+%MD:2001/02/13
+
+%IH:ankle
+%P:-kechunoh
+%G:ankle
+%OIH:ankle
+%P1s:skechunoh
+%P2s:nkechunoh
+%C:N
+%S:MAGO/STJA
+%SF:body-ext
+%UID:000865
+%MD:1999/03/03
+
+%IH:antler
+%P:-de
+%G:antler, horn
+%OIH:antler/horn
+%C:N
+%SF:body-ext
+%P3s:bude
+%S:STJA
+%UID:002266
+%MD:1999/03/02
+
+%IH:horn
+%P:-de
+%G:antler, horn
+%OIH:antler/horn
+%C:N
+%SF:body-ext
+%P3s:bude
+%S:STJA
+%UID:002266
+%MD:1999/03/02
+
+%IH:velvet, antler
+%P:-de_zu_s
+%G:antler velvet
+%OIH:velvet, antler
+%C:N
+%SF:body-ext
+%P3s:bude_zu_s
+%S:STJA
+%UID:002267
+%MD:1999/03/02
+
+%IH:anus
+%P:-tsul
+%G:anus, asshole
+%OIH:anus/asshole
+%C:N
+%P1s:stsul
+%SF:body-ext
+%S:STJA
+%UID:002171
+%MD:1999/02/23
+
+%IH:asshole
+%P:-tsul
+%G:anus, asshole
+%OIH:anus/asshole
+%C:N
+%P1s:stsul
+%SF:body-ext
+%S:STJA
+%UID:002171
+%MD:1999/02/23
+
+%IH:arm
+%P:-gan
+%G:arm
+%OIH:arm
+%P1s:sgan
+%P2s:ngan
+%Pref:dugan
+%C:N
+%S:LITM/MAGO/STJA/JOPA/VESE/EDFR/JEKO
+%SF:body-ext
+%UID:000863
+%MD:1999/02/22
+
+%IH:armpit
+%P:-chak'ests'oh
+%G:armpit
+%OIH:armpit
+%P1s:schak'ests'oh
+%C:N
+%S:MAGO
+%UID:000859
+%SF:body-ext
+%MD:1997/12/11
+
+%IH:back (of body)
+%P:-t'ak
+%G:back (of body)
+%OIH:back (of body)
+%P1s:st'ak
+%P3s:but'ak
+%C:N
+%S:MAGO/EDFR/VESE/JEKO
+%SF:body-ext
+%UID:000899
+%MD:1997/12/11
+
+%IH:back of hand
+%P:-lat'ak
+%G:back of hand
+%OIH:back of hand
+%P1s:slat'ak
+%C:N
+%S:MAGO
+%SF:body-ext
+%UID:000871
+%MD:1997/12/11
+
+%IH:beaver paws
+%P:tsake
+%G:beaver paws
+%OIH:beaver paws
+%C:N
+%SF:body-ext
+%S:LITM-EDFR
+%UID:000329
+%MD:1997/06/18
+
+%IH:beaver tail
+%P:tsache
+%G:beaver tail
+%OIH:beaver tail
+%C:N
+%SF:body-ext
+%S:LITM
+%UID:000207
+%MD:1997/06/16
+
+%IH:belly
+%P:-but
+%G:belly
+%OIH:belly
+%P1s:sbut
+%C:N
+%S:MAGO
+%SF:body-ext
+%UID:000937
+%MD:1997/12/11
+
+%IH:breast
+%P:-ts'oo
+%G:breast
+%OIH:breast
+%P1s:sts'oo
+%C:N
+%S:MAGO
+%UID:000855
+%SF:body-ext
+%MD:1997/12/11
+
+%IH:bum
+%P:-tl'a
+%G:bum, buttocks
+%OIH:bum/buttocks
+%P1s:stl'a
+%C:N
+%S:MAGO
+%SF:body-ext
+%UID:000936
+%MD:1997/12/11
+
+%IH:buttocks
+%P:-tl'a
+%G:bum, buttocks
+%OIH:bum/buttocks
+%P1s:stl'a
+%C:N
+%S:MAGO
+%SF:body-ext
+%UID:000936
+%MD:1997/12/11
+
+%IH:calf of leg
+%P:-kechunch'ooz
+%G:calf of leg
+%OIH:calf of leg
+%C:N
+%SF:body-ext
+%S:JOPA/EDFR
+%UID:004458
+%POCKET:Y
+%MD:2001/04/20
+
+%IH:cheek
+%P:-nembus
+%G:cheek
+%OIH:cheek
+%P1s:snimbus
+%C:N
+%S:MAGO/JOPA/BRBI
+%SF:body-ext
+%UID:000889
+%MD:1997/12/11
+
+%IH:chest
+%P:-yoh
+%G:chest
+%OIH:chest
+%C:N
+%SF:body-ext
+%S:JOPA/EDFR
+%ES:000660
+%UID:003777
+%POCKET:Y
+%MD:2001/02/13
+
+%IH:chin
+%P:-yeda'
+%G:chin
+%OIH:chin
+%P1s:syeda'
+%C:N
+%S:MAGO
+%SF:body-ext
+%UID:000882
+%MD:1997/12/11
+
+%IH:cranial fontanelle
+%P:-tsidakwhudutle
+%G:cranial fontanelle, baby's soft spot
+%OIH:cranial fontanelle/baby's soft spot
+%C:N
+%P3s:butsidakwhudutle
+%S:MAGO
+%SF:body-ext
+%UID:000898
+%MD:1997/12/11
+
+%IH:baby's soft spot
+%P:-tsidakwhudutle
+%G:cranial fontanelle, baby's soft spot
+%OIH:cranial fontanelle/baby's soft spot
+%C:N
+%P3s:butsidakwhudutle
+%S:MAGO
+%SF:body-ext
+%UID:000898
+%MD:1997/12/11
+
+%IH:ear
+%P:-dzo
+%G:ear
+%OIH:ear
+%MN:This refers to the ear considered as a whole, especially the exterior.
+ When the canal in particular is referred to, one uses {\qc -dzek}, q.v.
+%C:N
+%P1s:sdzo
+%S:MAGO
+%SF:body-ext
+%UID:000879
+%MD:1997/12/11
+
+%IH:earlobe
+%P:-dzobal
+%G:earlobe
+%OIH:earlobe
+%C:N
+%P1s:sdzobal
+%SF:body-ext
+%S:BRBI/MAGO
+%UID:000641
+%MD:1997/12/17
+
+%IH:elbow
+%P:-nints'uzti
+%G:elbow
+%OIH:elbow
+%P1s:snints'uzti
+%C:N
+%S:MAGO
+%SF:body-ext
+%UID:000916
+%MD:1997/12/11
+
+%IH:eye
+%P:-na
+%G:eye
+%OIH:eye
+%P1s:sna
+%P3s:buna
+%C:N
+%S:MAGO/JOPA/EDFR
+%SF:body-ext
+%UID:000891
+%MD:1998/12/18
+
+%IH:eye socket
+%P:-nak'et
+%G:eye socket
+%OIH:eye socket
+%P1s:snak'et
+%C:N
+%S:MAGO
+%SF:body-ext
+%UID:000892
+%MD:1997/12/11
+
+%IH:eyebrow
+%P:-nach'usdooz
+%G:eyebrow
+%OIH:eyebrow
+%P1s:snach'usdooz
+%C:N
+%S:MAGO
+%SF:body-ext
+%UID:000896
+%MD:1997/12/11
+
+%IH:eyelash
+%P:-nalusgha
+%G:eyelash
+%OIH:eyelash
+%P1s:snalusgha
+%C:N
+%S:MAGO
+%SF:body-ext
+%UID:000895
+%MD:1997/12/11
+
+%IH:eyelid
+%P:-nalus
+%G:eyelid
+%OIH:eyelid
+%P1s:snalus
+%C:N
+%S:MAGO
+%SF:body-ext
+%UID:000894
+%MD:1997/12/11
+
+%IH:face
+%P:-nen
+%G:face
+%OIH:face
+%P1s:snen
+%P2s:nyunen
+%P3s:bunen
+%C:N
+%S:MAGO/PEJO/STJA/JOPA/VESE/EDFR
+%SF:body-ext
+%ES:000369
+%UID:000890
+%MD:2001/04/20
+
+%IH:feather
+%P:ts'uz
+%G:feather, down
+%OIH:feather/down
+%C:N
+%SF:body-ext
+%S:LITM/STJA/PEJO
+%UID:000271
+%MD:2000/10/16
+
+%IH:down
+%P:ts'uz
+%G:feather, down
+%OIH:feather/down
+%C:N
+%SF:body-ext
+%S:LITM/STJA/PEJO
+%UID:000271
+%MD:2000/10/16
+
+%IH:feathers
+%P:dut'aits'uz
+%G:feathers, down
+%OIH:feathers/down
+%C:N
+%SF:body-ext
+%S:STJA
+%UID:002647
+%MD:2001/02/27
+
+%IH:down
+%P:dut'aits'uz
+%G:feathers, down
+%OIH:feathers/down
+%C:N
+%SF:body-ext
+%S:STJA
+%UID:002647
+%MD:2001/02/27
+
+%IH:finger other than thumb or pinkie
+%P:-lasge
+%G:finger other than thumb or pinkie
+%OIH:finger other than thumb or pinkie
+%P1s:slasge
+%C:N
+%S:MAGO/STJA/JOPA/PEJO/EDFR
+%SF:body-ext
+%UID:000869
+%MD:2000/11/01
+
+%IH:fingernails
+%P:-lagui
+%G:fingernails, claws of forepaws
+%OIH:fingernails/claws of forepaws
+%P1s:slagui
+%C:N
+%S:MAGO
+%SF:body-ext
+%UID:000875
+%MD:1997/12/11
+
+%IH:claws of forepaws
+%P:-lagui
+%G:fingernails, claws of forepaws
+%OIH:fingernails/claws of forepaws
+%P1s:slagui
+%C:N
+%S:MAGO
+%SF:body-ext
+%UID:000875
+%MD:1997/12/11
+
+%IH:foot
+%P:-ke
+%G:foot
+%OIH:foot
+%C:N
+%P1s:ske
+%Pref:duke
+%S:MAGO/STJA/JOPA/VESE/EDFR/JEKO
+%UID:000851
+%SF:body-ext
+%MD:1999/05/11
+
+%IH:hair
+%P:-gha
+%G:hair
+%MN:This refers to hair in general and where no more specific term exists, as on the
+ arms and chest. It is not used to refer to the hair of the head, for which the
+ more specific term {\qc -tsigha} is always used.
+%OIH:hair
+%C:N
+%S:MAGO
+%SF:body-ext
+%UID:000888
+%MD:1997/12/11
+
+%IH:hair of the head
+%P:-tsigha
+%G:hair of the head
+%OIH:hair of the head
+%P1s:stsigha
+%P2s:ntsigha
+%P3s:butsigha
+%C:N
+%S:MAGO/LITM/PEJO
+%SF:body-ext
+%UID:000887
+%MD:2000/10/20
+
+%IH:hand
+%P:-la
+%G:hand
+%OIH:hand
+%P1s:sla
+%P2s:nla
+%C:N
+%S:MAGO/STJA
+%SF:body-ext
+%POCKET:Y
+%UID:000866
+%MD:1999/02/17
+
+%IH:head
+%P:-tsi
+%G:head
+%OIH:head
+%Pref:dutsi
+%C:N
+%SF:body-ext
+%S:STJA
+%UID:002965
+%POCKET:Y
+%MD:1999/06/24
+
+%IH:heel
+%P:-kelatsul
+%G:heel
+%OIH:heel
+%P1s:skelatsul
+%C:N
+%S:MAGO
+%SF:body-ext
+%UID:000917
+%MD:1997/12/11
+
+%IH:hip
+%P:-k'ui
+%G:hip
+%OIH:hip
+%P1s:sk'ui
+%C:N
+%S:MAGO/JOPA
+%SF:body-ext
+%UID:000923
+%MD:2001/03/15
+
+%IH:knee
+%P:-gwut
+%G:knee
+%OIH:knee
+%P1s:sgwut
+%C:N
+%S:MAGO
+%SF:body-ext
+%UID:000933
+%MD:1997/12/11
+
+%IH:kneecap
+%P:-gwutlasi'ai
+%G:kneecap
+%OIH:kneecap
+%P1s:sgwutlasi'ai
+%R:has something to do with floating at tip of knee
+%C:N
+%S:MAGO
+%SF:body-ext
+%UID:000925
+%MD:1997/12/11
+
+%IH:knuckles at boundary between hand and fingers
+%P:-langwut
+%G:knuckles at boundary between hand and fingers
+%OIH:knuckles at boundary between hand and fingers
+%P1s:slangwut
+%SF:body-ext
+%C:N
+%S:JOPA/BRBI
+%UID:000967
+%MD:1997/12/17
+
+%IH:leg
+%P:-kechun
+%G:leg
+%OIH:leg
+%P1s:skechun
+%C:N
+%S:MAGO
+%UID:000852
+%SF:body-ext
+%MD:1997/12/11
+
diff --git a/unsupported/atari/ChangeLog b/unsupported/atari/ChangeLog
index c6a9e11e..ab54b6e9 100644
--- a/unsupported/atari/ChangeLog
+++ b/unsupported/atari/ChangeLog
@@ -1,3 +1,7 @@
+Tue Jul 26 21:46:16 2005 Arnold D. Robbins <arnold@skeeve.com>
+
+ * Release 3.1.5: Release tar file made.
+
Mon Aug 2 12:18:15 2004 Arnold D. Robbins <arnold@skeeve.com>
* Release 3.1.4: Release tar file made.
diff --git a/unsupported/atari/Makefile.awklib b/unsupported/atari/Makefile.awklib
index abdc1649..baa06f98 100644
--- a/unsupported/atari/Makefile.awklib
+++ b/unsupported/atari/Makefile.awklib
@@ -22,7 +22,7 @@
#
# 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
+# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA
SHELL = /bin/sh
diff --git a/unsupported/atari/Makefile.st b/unsupported/atari/Makefile.st
index 20664a48..c322de87 100644
--- a/unsupported/atari/Makefile.st
+++ b/unsupported/atari/Makefile.st
@@ -26,7 +26,7 @@
#
# 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
+# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA
MAKEINFO = makeinfo --no-split
diff --git a/unsupported/atari/config.h b/unsupported/atari/config.h
index 1e40b132..9acb6a4c 100644
--- a/unsupported/atari/config.h
+++ b/unsupported/atari/config.h
@@ -24,7 +24,7 @@
*
* 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
+ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA
*/
/* Define if using alloca.c. */
diff --git a/unsupported/atari/gawkmisc.atr b/unsupported/atari/gawkmisc.atr
index 0425c796..a10ccbcf 100644
--- a/unsupported/atari/gawkmisc.atr
+++ b/unsupported/atari/gawkmisc.atr
@@ -20,7 +20,7 @@
*
* 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
+ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA
*/
#include <string.h>
diff --git a/unsupported/atari/redirect.h b/unsupported/atari/redirect.h
index 6452778f..c84cad0c 100644
--- a/unsupported/atari/redirect.h
+++ b/unsupported/atari/redirect.h
@@ -20,7 +20,7 @@
*
* 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
+ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA
*/
/* This file is already conditioned on atarist in awk.h */
diff --git a/unsupported/tandem/ChangeLog b/unsupported/tandem/ChangeLog
index ea426f25..4cda1d1a 100644
--- a/unsupported/tandem/ChangeLog
+++ b/unsupported/tandem/ChangeLog
@@ -1,3 +1,7 @@
+Tue Jul 26 21:46:16 2005 Arnold D. Robbins <arnold@skeeve.com>
+
+ * Release 3.1.5: Release tar file made.
+
Mon Aug 2 12:18:15 2004 Arnold D. Robbins <arnold@skeeve.com>
* Release 3.1.4: Release tar file made.
diff --git a/unsupported/tandem/config.h b/unsupported/tandem/config.h
index c18ae485..a8458577 100644
--- a/unsupported/tandem/config.h
+++ b/unsupported/tandem/config.h
@@ -22,7 +22,7 @@
*
* 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
+ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA
*/
diff --git a/unsupported/tandem/tmisc.c b/unsupported/tandem/tmisc.c
index 550898f3..10663258 100644
--- a/unsupported/tandem/tmisc.c
+++ b/unsupported/tandem/tmisc.c
@@ -45,7 +45,7 @@ int fd;
*
* 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
+ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA
*/
char quote = '"';
diff --git a/version.c b/version.c
index bbc93d60..cf0f7da4 100644
--- a/version.c
+++ b/version.c
@@ -1,6 +1,6 @@
#include "config.h"
-const char *version_string = "@(#)GNU Awk 3.1.4";
+const char *version_string = "@(#)GNU Awk 3.1.5";
/* 1.02 fixed /= += *= etc to return the new Left Hand Side instead
of the Right Hand Side */
diff --git a/version.in b/version.in
index 63074d7f..053cc175 100644
--- a/version.in
+++ b/version.in
@@ -1,6 +1,6 @@
#include "config.h"
-const char *version_string = "@(#)GNU Awk @VERSION@";
+const char *version_string = "@(#)@PACKAGE_STRING@";
/* 1.02 fixed /= += *= etc to return the new Left Hand Side instead
of the Right Hand Side */
diff --git a/vms/ChangeLog b/vms/ChangeLog
index 4c836875..9a477d7f 100644
--- a/vms/ChangeLog
+++ b/vms/ChangeLog
@@ -1,3 +1,63 @@
+Tue Jul 26 21:46:16 2005 Arnold D. Robbins <arnold@skeeve.com>
+
+ * Release 3.1.5: Release tar file made.
+
+Mon May 23 20:54:31 2005 Pat Rankin <rankin@pactechdata.com>
+
+ * vms_gawk.c [gawk_cmd, #if __ia64__]: Switch from globalvalue
+ to strict_refdef and then take gawk_cmd's address during use.
+
+ * vmstest.com (concat1, longsub, arrayprm2, arrayprm3, arryref2,
+ arryref3, arryref4, arryref5, aryprm1, aryprm2, aryprm3,
+ aryprm4, aryprm5, aryprm6, aryprm7, aryprm8, concat2, concat3,
+ delarpm2, delfunc, exitval2, fmttest, fnarray2, fnmisc, fordel,
+ getline3, gsubasgn, gsubtest, gsubtst2, gsubtst4, gsubtst5,
+ hex, inputred, iobug1, manglprm, nested, nfneg, noloop1,
+ noloop2, nulrsend, prec, prtoeval, rstest1, rstest2, rstest3,
+ rstest4, rstest5, scalar, sortempty, splitarr, strcat1,
+ subsepnm, synerr1, uninit2, uninit3, uninit4, uninitialized,
+ unterm, wjposer1, zeroe0): New tests.
+
+Wed May 18 21:22:09 2005 Pat Rankin <rankin@pactechdata.com>
+
+ * vms_gawk.c [#if __ia64__]: Use #pragma extern_model globalvalue
+ for the declaration of gawk_cmd.
+
+Mon May 9 21:17:33 2005 Pat Rankin <rankin@pactechdata.com>
+
+ * vms-conf.h [#if DECC]: Use #pragma to suppress "new feature in C99"
+ diagnostic for structure field designator style initialization in
+ regexec.c.
+
+Thu May 5 21:17:48 2005 Anders Wallin <anders_s_wallin@yahoo.se>
+
+ * vms_gawk.c [__ia64__]: Change to lower case, then Itanium
+ VMS is happy.
+
+Sun May 1 08:20:00 2005 Pat Rankin <rankin@pactechdata.com>
+
+ * vms_gawk.c [gawk_cmd]: Declare as ordinary data symbol rather
+ than as a fake routine for Itanium. (Can't do that for other
+ configurations without getting tangled up in compiler-specific
+ details like `#pragma extern_model' and VAX C's `globalref'.)
+
+Fri Mar 4 20:46:20 2005 Pat Rankin <rankin@pactechdata.com>
+
+ * vms-conf.h: Define VAXCRTL when appropriate; used in builtin.c.
+
+Sat Feb 19 20:13:28 2005 Pat Rankin <rankin@pactechdata.com>
+
+ * vms-conf.h [RE_TOKEN_INIT_BUG]: Define for regcomp.c.
+
+Wed Feb 16 20:45:21 2005 Pat Rankin <rankin@pactechdata.com>
+
+ * vms-conf.h [NO_MBSUPPORT]: Define when compiling with VAX C.
+ [inline]: Define as empty when compiling with VAX C.
+
+Thu Jan 20 19:09:52 2005 Pat Rankin <rankin@pactechdata.com>
+
+ * vms-conf.h: Synchronize with configh.in.
+
Mon Aug 2 12:18:15 2004 Arnold D. Robbins <arnold@skeeve.com>
* Release 3.1.4: Release tar file made.
diff --git a/vms/descrip.mms b/vms/descrip.mms
index 9c3b2efd..975b0fec 100644
--- a/vms/descrip.mms
+++ b/vms/descrip.mms
@@ -122,7 +122,7 @@ DOCS= $(DOCDIR)gawk.1,$(DOCDIR)gawk.texi,$(DOCDIR)texinfo.tex
# Release of gawk
REL=3.1
-PATCHLVL=4
+PATCHLVL=5
# generic target
all : gawk
diff --git a/vms/gawkmisc.vms b/vms/gawkmisc.vms
index a364801d..28e06544 100644
--- a/vms/gawkmisc.vms
+++ b/vms/gawkmisc.vms
@@ -20,7 +20,7 @@
*
* 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
+ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA
*/
char quote = '\'';
diff --git a/vms/redirect.h b/vms/redirect.h
index 707e2a28..a0de1729 100644
--- a/vms/redirect.h
+++ b/vms/redirect.h
@@ -20,7 +20,7 @@
*
* 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
+ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA
*/
/* This file is included by custom.h for VMS-POSIX, or first
diff --git a/vms/vms-conf.h b/vms/vms-conf.h
index dd862b2e..5bfa3f88 100644
--- a/vms/vms-conf.h
+++ b/vms/vms-conf.h
@@ -7,7 +7,7 @@
*/
/*
- * Copyright (C) 1991-1992, 1995-1996, 1999, 2001, 2002, 2003 the Free Software Foundation, Inc.
+ * Copyright (C) 1991-1992, 1995-1996, 1999, 2001, 2002, 2003, 2005 the Free Software Foundation, Inc.
*
* This file is part of GAWK, the GNU implementation of the
* AWK Programming Language.
@@ -24,7 +24,7 @@
*
* 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
+ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA
*/
/* switch statements are enabled in awk programs */
@@ -69,31 +69,48 @@
/* Define to 1 if you have the <argz.h> header file. */
#undef HAVE_ARGZ_H
+/* Define to 1 if you have the `asprintf' function. */
+#undef HAVE_ASPRINTF
+
/* Define if the GNU dcgettext() function is already present or preinstalled.
*/
#undef HAVE_DCGETTEXT
+/* Define to 1 if you have the declaration of `feof_unlocked', and to 0 if you
+ don't. */
+#define HAVE_DECL_FEOF_UNLOCKED 0
+
+/* Define to 1 if you have the declaration of `fgets_unlocked', and to 0 if
+ you don't. */
+#define HAVE_DECL_FGETS_UNLOCKED 0
+
+/* Define to 1 if you have the declaration of `getc_unlocked', and to 0 if you
+ don't. */
+#define HAVE_DECL_GETC_UNLOCKED 0
+
+/* Define to 1 if you have the declaration of `_snprintf', and to 0 if you
+ don't. */
+#define HAVE_DECL__SNPRINTF 0
+
+/* Define to 1 if you have the declaration of `_snwprintf', and to 0 if you
+ don't. */
+#define HAVE_DECL__SNWPRINTF 0
+
/* Define to 1 if you don't have `vprintf' but do have `_doprnt.' */
#undef HAVE_DOPRNT
/* Define to 1 if you have the <fcntl.h> header file. */
#undef HAVE_FCNTL_H
-/* Define to 1 if you have the `feof_unlocked' function. */
-#undef HAVE_FEOF_UNLOCKED
-
-/* Define to 1 if you have the `fgets_unlocked' function. */
-#undef HAVE_FGETS_UNLOCKED
-
/* Define to 1 if you have the `fmod' function. */
#define HAVE_FMOD 1
+/* Define to 1 if you have the `fwprintf' function. */
+#undef HAVE_FWPRINTF
+
/* Define to 1 if you have the `getcwd' function. */
#define HAVE_GETCWD 1
-/* Define to 1 if you have the `getc_unlocked' function. */
-#undef HAVE_GETC_UNLOCKED
-
/* Define to 1 if you have the `getegid' function. */
#undef HAVE_GETEGID
@@ -124,9 +141,25 @@
/* Define if you have the iconv() function. */
#undef HAVE_ICONV
+/* Define if you have the 'intmax_t' type in <stdint.h> or <inttypes.h>. */
+#undef HAVE_INTMAX_T
+
/* Define if <inttypes.h> exists and doesn't clash with <sys/types.h>. */
#undef HAVE_INTTYPES_H
+/* Define if <inttypes.h> exists, doesn't clash with <sys/types.h>, and
+ declares uintmax_t. */
+#undef HAVE_INTTYPES_H_WITH_UINTMAX
+
+/* Define to 1 if you have the `iswctype' function. */
+#undef HAVE_ISWCTYPE
+
+/* Define to 1 if you have the `iswlower' function. */
+#undef HAVE_ISWLOWER
+
+/* Define to 1 if you have the `iswupper' function. */
+#undef HAVE_ISWUPPER
+
/* Define if you have <langinfo.h> and nl_langinfo(CODESET). */
#undef HAVE_LANGINFO_CODESET
@@ -148,7 +181,10 @@
/* Define to 1 if you have the <locale.h> header file. */
#undef HAVE_LOCALE_H
-/* Define if you have the long long type. */
+/* Define if you have the 'long double' type. */
+#undef HAVE_LONG_DOUBLE
+
+/* Define if you have the 'long long' type. */
#undef HAVE_LONG_LONG
/* Define to 1 if you have the <malloc.h> header file. */
@@ -157,7 +193,7 @@
/* Define to 1 if you have the `mbrlen' function. */
#undef HAVE_MBRLEN
-/* Define to 1 if you have the `mbrtowc' function. */
+/* Define to 1 if mbrtowc and mbstate_t are properly declared. */
#undef HAVE_MBRTOWC
/* Define to 1 if you have the <mcheck.h> header file. */
@@ -169,6 +205,9 @@
/* Define to 1 if you have the `memcpy' function. */
#define HAVE_MEMCPY 1
+/* Define to 1 if you have the `memmove' function. */
+#define HAVE_MEMMOVE 1
+
/* Define to 1 if you have the <memory.h> header file. */
#undef HAVE_MEMORY_H
@@ -199,6 +238,9 @@
/* we have portals on /p on this system */
#undef HAVE_PORTALS
+/* Define if your printf() function supports format strings with positions. */
+#undef HAVE_POSIX_PRINTF
+
/* Define to 1 if you have the `putenv' function. */
#undef HAVE_PUTENV
@@ -226,6 +268,10 @@
/* Define to 1 if you have the <stdint.h> header file. */
#undef HAVE_STDINT_H
+/* Define if <stdint.h> exists, doesn't clash with <sys/types.h>, and declares
+ uintmax_t. */
+#undef HAVE_STDINT_H_WITH_UINTMAX
+
/* Define to 1 if you have the <stdlib.h> header file. */
#define HAVE_STDLIB_H 1
@@ -310,6 +356,12 @@
`HAVE_STRUCT_TM_TM_ZONE' instead. */
#undef HAVE_TM_ZONE
+/* Define to 1 if you have the `towlower' function. */
+#undef HAVE_TOWLOWER
+
+/* Define to 1 if you have the `towupper' function. */
+#undef HAVE_TOWUPPER
+
/* Define to 1 if you have the `tsearch' function. */
#undef HAVE_TSEARCH
@@ -320,6 +372,9 @@
/* Define to 1 if you have the `tzset' function. */
#define HAVE_TZSET 1 /* (faked in vms/vms_misc.c) */
+/* Define if you have the 'uintmax_t' type in <stdint.h> or <inttypes.h>. */
+#undef HAVE_UINTMAX_T
+
/* Define to 1 if you have the <unistd.h> header file. */
#ifdef __DECC
#define HAVE_UNISTD_H 1
@@ -336,15 +391,30 @@
/* Define to 1 if you have the <wchar.h> header file. */
#undef HAVE_WCHAR_H
+/* Define if you have the 'wchar_t' type. */
+#undef HAVE_WCHAR_T
+
/* Define to 1 if you have the `wcrtomb' function. */
#undef HAVE_WCRTOMB
/* Define to 1 if you have the `wcscoll' function. */
#undef HAVE_WCSCOLL
+/* Define to 1 if you have the `wcslen' function. */
+#undef HAVE_WCSLEN
+
+/* Define to 1 if you have the `wctype' function. */
+#undef HAVE_WCTYPE
+
/* Define to 1 if you have the <wctype.h> header file. */
#undef HAVE_WCTYPE_H
+/* systems should define this type here */
+#undef HAVE_WCTYPE_T
+
+/* systems should define this type here */
+#undef HAVE_WINT_T
+
/* Define to 1 if you have the `__argz_count' function. */
#undef HAVE___ARGZ_COUNT
@@ -354,6 +424,9 @@
/* Define to 1 if you have the `__argz_stringify' function. */
#undef HAVE___ARGZ_STRINGIFY
+/* Define to 1 if you have the `__fsetlocking' function. */
+#undef HAVE___FSETLOCKING
+
/* Define as const if the declaration of iconv() needs const. */
#undef ICONV_CONST
@@ -373,13 +446,16 @@
#define PACKAGE_NAME "GNU Awk"
/* Define to the full name and version of this package. */
-#define PACKAGE_STRING "GNU Awk 3.1.2"
+#define PACKAGE_STRING "GNU Awk 3.1.4c"
/* Define to the one symbol short name of this package. */
#define PACKAGE_TARNAME "gawk"
/* Define to the version of this package. */
-#define PACKAGE_VERSION "3.1.2"
+#define PACKAGE_VERSION "3.1.4c"
+
+/* Define to 1 if *printf supports %F format */
+#undef PRINTF_HAS_F_FORMAT
/* Define if <inttypes.h> exists and defines unusable PRI* macros. */
#undef PRI_MACROS_BROKEN
@@ -387,12 +463,19 @@
/* Define if compiler has function prototypes */
#define PROTOTYPES 1
-/* use malloc instead of alloca in regex.c */
-#define REGEX_MALLOC 1
-
/* Define as the return type of signal handlers (`int' or `void'). */
#define RETSIGTYPE void
+/* The size of a `unsigned int', as computed by sizeof. */
+#define SIZEOF_UNSIGNED_INT 4
+
+/* The size of a `unsigned long', as computed by sizeof. */
+#define SIZEOF_UNSIGNED_LONG 4
+
+/* Define as the maximum value of type 'size_t', if the system doesn't define
+ it. */
+#define SIZE_MAX 0xffffffffUL
+
/* return type of sprintf */
#define SPRINTF_RET int
@@ -423,7 +506,7 @@
#define USE_INCLUDED_STRFTIME 1
/* Version number of package */
-#define VERSION "3.1.2"
+#define VERSION "3.1.4"
/* Define to 1 if on AIX 3.
System headers sometimes define this.
@@ -453,15 +536,20 @@
# undef __CHAR_UNSIGNED__
#endif
+/* Define like PROTOTYPES; this can be used by system headers. */
+#define __PROTOTYPES 1
+
/* Define to empty if `const' does not conform to ANSI C. */
#undef const
/* Define to `int' if <sys/types.h> doesn't define. */
#undef gid_t
-/* Define as `__inline' if that's what the C compiler calls it, or to nothing
- if it is not supported. */
+/* Define to `__inline__' or `__inline' if that's what the C compiler
+ calls it, or to nothing if 'inline' is not supported under any name. */
+#ifndef __cplusplus
#undef inline
+#endif
/* Define to widest signed type if <inttypes.h> doesn't define. */
#define intmax_t long int
@@ -472,6 +560,13 @@
/* Define to `int' if <sys/types.h> doesn't define. */
#undef pid_t
+/* Define as the type of the result of subtracting two pointers, if the system
+ doesn't define it. */
+#undef ptrdiff_t
+
+/* Define to empty if the C compiler doesn't support this keyword. */
+#undef signed
+
/* Define to `unsigned' if <sys/types.h> doesn't define. */
#undef size_t
@@ -481,7 +576,8 @@
/* Define to `int' if <sys/types.h> doesn't define. */
#undef uid_t
-/* Define to widest unsigned type if <inttypes.h> doesn't define. */
+/* Define to unsigned long or unsigned long long if <stdint.h> and
+ <inttypes.h> don't define. */
#define uintmax_t unsigned long
#if 0
@@ -520,9 +616,15 @@
#define PIPES_SIMULATED 1
/*
- * %g format in VAXCRTL is broken (chooses %e format when should use %f).
+ * VAXCRTL is pre-ANSI and does some variations of numeric formatting
+ * differently than gawk expects.
*/
+#if defined(VAX) && !defined(__DECC)
+/* '0' format modifier for %e,%f,%g gives wrong results in many cases */
+#define VAXCRTL
+/* %g format chooses %e format when should use %f */
#define GFMT_WORKAROUND 1
+#endif
/*
* VAX C
@@ -534,10 +636,14 @@
#if defined(VAXC) && !defined(__STDC__)
#define __STDC__ 0
#define NO_TOKEN_PASTING
+#define signed /*empty*/
+#define inline /*empty*/
#ifndef __DECC /* DEC C does not support #pragma builtins even in VAXC mode */
#define VAXC_BUILTINS
#endif
/* #define YYDEBUG 0 */
+#define NO_MBSUPPORT /* VAX C's preprocessor can't handle mbsupport.h */
+#define RE_TOKEN_INIT_BUG /* regcomp.c */
#endif
/*
@@ -562,6 +668,11 @@
# undef __CRTL_VER
# define __CRTL_VER 60100000
#endif
+#if __DECC_VER >= 60400000 && !defined(DEBUG)
+/* disable "new feature in C99" diagnostics (for regex code);
+ NEWC99 ought to suffice but doesn't (at least in V6.4) */
+#pragma message disable (NEWC99,DESIGNATORUSE)
+#endif
#endif /* __DECC */
/*
diff --git a/vms/vms_args.c b/vms/vms_args.c
index e63758f7..e349925c 100644
--- a/vms/vms_args.c
+++ b/vms/vms_args.c
@@ -15,7 +15,7 @@
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. */
+ Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. */
/*
* [.vms]vms_arg_fixup - emulate shell's command line processing: handle
diff --git a/vms/vms_fwrite.c b/vms/vms_fwrite.c
index 2e9153f0..5e8669eb 100644
--- a/vms/vms_fwrite.c
+++ b/vms/vms_fwrite.c
@@ -14,7 +14,7 @@
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. */
+ Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. */
#include "awk.h" /* really "../awk.h" */
diff --git a/vms/vms_gawk.c b/vms/vms_gawk.c
index 619144bf..de19c732 100644
--- a/vms/vms_gawk.c
+++ b/vms/vms_gawk.c
@@ -1,6 +1,6 @@
/* vms_gawk.c -- parse GAWK command line using DCL syntax
- Copyright (C) 1991-1993, 1996, 2003 the Free Software Foundation, Inc.
+ Copyright (C) 1991-1993, 1996, 2003, 2005 the 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
@@ -14,7 +14,7 @@
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. */
+ Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. */
/*
@@ -36,8 +36,17 @@
#define Present(arg) vmswork(Cli_Present(arg))
#define Get_Value(arg,buf,siz) vmswork(Cli_Get_Value(arg,buf,siz))
+#ifndef __ia64__
extern void gawk_cmd(); /* created with $ SET COMMAND/OBJECT */
#define GAWK_CMD ((const void *)gawk_cmd)
+#else /* linker on Itanium is much pickier about such things */
+#pragma extern_model save
+#pragma extern_model strict_refdef
+/* (could use globalvalue rather than _refdef if we omit GAWK_CMD's `&') */
+extern void *gawk_cmd;
+#pragma extern_model restore
+#define GAWK_CMD ((const void *)&gawk_cmd)
+#endif
extern void _exit(int);
static int vms_usage(int);
diff --git a/vms/vms_misc.c b/vms/vms_misc.c
index 46c87ef1..cbc51c3a 100644
--- a/vms/vms_misc.c
+++ b/vms/vms_misc.c
@@ -14,7 +14,7 @@
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. */
+ Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. */
#define creat creat_dummy /* one of gcc-vms's headers has bad prototype */
#include "awk.h"
diff --git a/vms/vms_popen.c b/vms/vms_popen.c
index cfc5ecfc..599713fc 100644
--- a/vms/vms_popen.c
+++ b/vms/vms_popen.c
@@ -14,7 +14,7 @@
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. */
+ Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. */
#ifndef NO_VMS_PIPES
diff --git a/vms/vmsbuild.com b/vms/vmsbuild.com
index 2e169c77..107523bd 100644
--- a/vms/vmsbuild.com
+++ b/vms/vmsbuild.com
@@ -9,7 +9,7 @@ $! gawk 3.1.0 revised, Mar'01
$! gawk 3.1.1 revised, Apr'02
$!
$ REL = "3.1" !release version number
-$ PATCHLVL = "4"
+$ PATCHLVL = "5"
$!
$!
$ CCFLAGS = "/noList" ! "/noOpt/Debug"
diff --git a/vms/vmstest.com b/vms/vmstest.com
index 23e46e56..130411c6 100644
--- a/vms/vmstest.com
+++ b/vms/vmstest.com
@@ -51,7 +51,17 @@ $ basic_lst2 = "nlfldsep splitvar intest nfldstr nors" -
+ " psx96sub addcomma"
$ basic_lst3 = "rebt8b1 rebt8b2 leadnl funsemnl ofmtfidl" -
+ " onlynl arrymem1 compare2 minusstr membug1 forsimp" -
- + " concat1 longsub"
+ + " concat1 longsub arrayprm2 arrayprm3 arryref2" -
+ + " arryref3 arryref4 arryref5 aryprm1 aryprm2 aryprm3" -
+ + " aryprm4 aryprm5 aryprm6 aryprm7 aryprm8 concat2" -
+ + " concat3 delarpm2 delfunc exitval2 fmttest fnarray2" -
+ + " fnmisc fordel getline getline3 gsubasgn gsubtest" -
+ + " gsubtst2 gsubtst4 gsubtst5 hex inputred iobug1"
+$ basic_lst4 = "manglprm nested nfneg noloop1 noloop2" -
+ + " nulrsend prec prtoeval rstest1 rstest2 rstest3" -
+ + " rstest4 rstest5 scalar sortempty splitarr strcat1" -
+ + " subsepnm synerr1 uninit2 uninit3 uninit4" -
+ + " uninitialized unterm wjposer1 zeroe0"
$ echo "basic"
$basic_loop1: basic_test = f$element(0," ",basic_lst1)
$ basic_lst1 = basic_lst1 - basic_test - " "
@@ -65,6 +75,10 @@ $basic_loop3: basic_test = f$element(0," ",basic_lst3)
$ basic_lst3 = basic_lst3 - basic_test - " "
$ if basic_test.nes." " then gosub 'basic_test'
$ if basic_lst3.nes."" then goto basic_loop3
+$basic_loop4: basic_test = f$element(0," ",basic_lst4)
+$ basic_lst4 = basic_lst4 - basic_test - " "
+$ if basic_test.nes." " then gosub 'basic_test'
+$ if basic_lst4.nes."" then goto basic_loop4
$ return
$
$unix_tests: unix_tst_list = "fflush getlnhd pid pipeio1" -
@@ -1212,6 +1226,430 @@ $!! cmp longsub.ok tmp.
$ if $status then rm tmp.;
$ return
$
+$arrayprm2: echo "arrayprm2"
+$ gawk -f arrayprm2.awk arrayprm2.in >tmp.
+$ cmp arrayprm2.ok tmp.
+$ if $status then rm tmp.;
+$ return
+$
+$arrayprm3: echo "arrayprm3"
+$ gawk -f arrayprm3.awk arrayprm3.in >tmp.
+$ cmp arrayprm3.ok tmp.
+$ if $status then rm tmp.;
+$ return
+$
+$arryref2: echo "arryref2"
+$ gawk -f arryref2.awk arryref2.in >tmp.
+$ cmp arryref2.ok tmp.
+$ if $status then rm tmp.;
+$ return
+$
+$arryref3: echo "arryref3"
+$ set noOn
+$ gawk -f arryref3.awk arryref3.in >tmp. 2>&1
+$ if .not.$status then call exit_code 2
+$ set On
+$ cmp arryref3.ok tmp.
+$ if $status then rm tmp.;
+$ return
+$
+$arryref4: echo "arryref4"
+$ set noOn
+$ gawk -f arryref4.awk arryref4.in >tmp. 2>&1
+$ if .not.$status then call exit_code 2
+$ set On
+$ cmp arryref4.ok tmp.
+$ if $status then rm tmp.;
+$ return
+$
+$arryref5: echo "arryref5"
+$ set noOn
+$ gawk -f arryref5.awk arryref5.in >tmp. 2>&1
+$ if .not.$status then call exit_code 2
+$ set On
+$ cmp arryref5.ok tmp.
+$ if $status then rm tmp.;
+$ return
+$
+$aryprm1: echo "aryprm1"
+$ set noOn
+$ gawk -f aryprm1.awk aryprm1.in >tmp. 2>&1
+$ if .not.$status then call exit_code 2
+$ set On
+$ cmp aryprm1.ok tmp.
+$ if $status then rm tmp.;
+$ return
+$
+$aryprm2: echo "aryprm2"
+$ set noOn
+$ gawk -f aryprm2.awk aryprm2.in >tmp. 2>&1
+$ if .not.$status then call exit_code 2
+$ set On
+$ cmp aryprm2.ok tmp.
+$ if $status then rm tmp.;
+$ return
+$
+$aryprm3: echo "aryprm3"
+$ set noOn
+$ gawk -f aryprm3.awk aryprm3.in >tmp. 2>&1
+$ if .not.$status then call exit_code 2
+$ set On
+$ cmp aryprm3.ok tmp.
+$ if $status then rm tmp.;
+$ return
+$
+$aryprm4: echo "aryprm4"
+$ set noOn
+$ gawk -f aryprm4.awk aryprm4.in >tmp. 2>&1
+$ if .not.$status then call exit_code 2
+$ set On
+$ cmp aryprm4.ok tmp.
+$ if $status then rm tmp.;
+$ return
+$
+$aryprm5: echo "aryprm5"
+$ set noOn
+$ gawk -f aryprm5.awk aryprm5.in >tmp. 2>&1
+$ if .not.$status then call exit_code 2
+$ set On
+$ cmp aryprm5.ok tmp.
+$ if $status then rm tmp.;
+$ return
+$
+$aryprm6: echo "aryprm6"
+$ set noOn
+$ gawk -f aryprm6.awk aryprm6.in >tmp. 2>&1
+$ if .not.$status then call exit_code 2
+$ set On
+$ cmp aryprm6.ok tmp.
+$ if $status then rm tmp.;
+$ return
+$
+$aryprm7: echo "aryprm7"
+$ set noOn
+$ gawk -f aryprm7.awk aryprm7.in >tmp. 2>&1
+$ if .not.$status then call exit_code 2
+$ set On
+$ cmp aryprm7.ok tmp.
+$ if $status then rm tmp.;
+$ return
+$
+$aryprm8: echo "aryprm8"
+$ gawk -f aryprm8.awk aryprm8.in >tmp.
+$ cmp aryprm8.ok tmp.
+$ if $status then rm tmp.;
+$ return
+$
+$concat2: echo "concat2"
+$ gawk -f concat2.awk concat2.in >tmp.
+$ cmp concat2.ok tmp.
+$ if $status then rm tmp.;
+$ return
+$
+$concat3: echo "concat3"
+$ gawk -f concat3.awk concat3.in >tmp.
+$ cmp concat3.ok tmp.
+$ if $status then rm tmp.;
+$ return
+$
+$delarpm2: echo "delarpm2"
+$ gawk -f delarpm2.awk delarpm2.in >tmp.
+$ cmp delarpm2.ok tmp.
+$ if $status then rm tmp.;
+$ return
+$
+$delfunc: echo "delfunc"
+$ set noOn
+$ gawk -f delfunc.awk delfunc.in >tmp. 2>&1
+$ if .not.$status then call exit_code 2
+$ set On
+$ cmp delfunc.ok tmp.
+$ if $status then rm tmp.;
+$ return
+$
+$exitval2: echo "exitval2 skipped"
+$ return
+$!!exitval2: echo "exitval2"
+$ gawk -f exitval2.awk exitval2.in >tmp.
+$ cmp exitval2.ok tmp.
+$ if $status then rm tmp.;
+$ return
+$
+$fmttest: echo "fmttest"
+$ gawk -f fmttest.awk fmttest.in >tmp.
+$ cmp fmttest.ok tmp.
+$ if $status then rm tmp.;
+$ return
+$
+$fnarray2: echo "fnarray2"
+$ set noOn
+$ gawk -f fnarray2.awk fnarray2.in >tmp. 2>&1
+$ if .not.$status then call exit_code 1
+$ set On
+$ cmp fnarray2.ok tmp.
+$ if $status then rm tmp.;
+$ return
+$
+$fnmisc: echo "fnmisc"
+$ set noOn
+$ gawk -f fnmisc.awk fnmisc.in >tmp. 2>&1
+$ if .not.$status then call exit_code 1
+$ set On
+$ cmp fnmisc.ok tmp.
+$ if $status then rm tmp.;
+$ return
+$
+$fordel: echo "fordel"
+$ gawk -f fordel.awk fordel.in >tmp.
+$ cmp fordel.ok tmp.
+$ if $status then rm tmp.;
+$ return
+$
+$getline: echo "getline skipped"
+$ return
+$!!getline: echo "getline"
+$ gawk -f getline.awk getline.in >tmp.
+$ cmp getline.ok tmp.
+$ if $status then rm tmp.;
+$ return
+$
+$getline3: echo "getline3"
+$ gawk -f getline3.awk getline3.in >tmp.
+$ cmp getline3.ok tmp.
+$ if $status then rm tmp.;
+$ return
+$
+$gsubasgn: echo "gsubasgn"
+$ set noOn
+$ gawk -f gsubasgn.awk gsubasgn.in >tmp. 2>&1
+$ if .not.$status then call exit_code 1
+$ set On
+$ cmp gsubasgn.ok tmp.
+$ if $status then rm tmp.;
+$ return
+$
+$gsubtest: echo "gsubtest"
+$ gawk -f gsubtest.awk gsubtest.in >tmp.
+$ cmp gsubtest.ok tmp.
+$ if $status then rm tmp.;
+$ return
+$
+$gsubtst2: echo "gsubtst2"
+$ gawk -f gsubtst2.awk gsubtst2.in >tmp.
+$ cmp gsubtst2.ok tmp.
+$ if $status then rm tmp.;
+$ return
+$
+$gsubtst3: echo "gsubtst3"
+$ gawk --re-interval -f gsubtst3.awk gsubtst3.in >tmp.
+$ cmp gsubtst3.ok tmp.
+$ if $status then rm tmp.;
+$ return
+$
+$gsubtst4: echo "gsubtst4"
+$ gawk -f gsubtst4.awk gsubtst4.in >tmp.
+$ cmp gsubtst4.ok tmp.
+$ if $status then rm tmp.;
+$ return
+$
+$gsubtst5: echo "gsubtst5"
+$ gawk -f gsubtst5.awk gsubtst5.in >tmp.
+$ cmp gsubtst5.ok tmp.
+$ if $status then rm tmp.;
+$ return
+$
+$hex: echo "hex"
+$ gawk -f hex.awk hex.in >tmp.
+$ cmp hex.ok tmp.
+$ if $status then rm tmp.;
+$ return
+$
+$inputred: echo "inputred"
+$ gawk -f inputred.awk inputred.in >tmp.
+$ cmp inputred.ok tmp.
+$ if $status then rm tmp.;
+$ return
+$
+$iobug1: echo "iobug1"
+$ cat = "TYPE sys$input:"
+$ true = "exit 1" !success
+$ gawk -f iobug1.awk iobug1.in >tmp.
+$ cmp iobug1.ok tmp.
+$ if $status then rm tmp.;
+$ return
+$
+$manglprm: echo "manglprm"
+$ gawk -f manglprm.awk manglprm.in >tmp.
+$ cmp manglprm.ok tmp.
+$ if $status then rm tmp.;
+$ return
+$
+$nested: echo "nested"
+$ gawk -f nested.awk nested.in >tmp.
+$ cmp nested.ok tmp.
+$ if $status then rm tmp.;
+$ return
+$
+$nfneg: echo "nfneg"
+$ set noOn
+$ gawk -f nfneg.awk nfneg.in >tmp. 2>&1
+$ if .not.$status then call exit_code 2
+$ set On
+$ cmp nfneg.ok tmp.
+$ if $status then rm tmp.;
+$ return
+$
+$noloop1: echo "noloop1"
+$ gawk -f noloop1.awk noloop1.in >tmp.
+$ cmp noloop1.ok tmp.
+$ if $status then rm tmp.;
+$ return
+$
+$noloop2: echo "noloop2"
+$ gawk -f noloop2.awk noloop2.in >tmp.
+$ cmp noloop2.ok tmp.
+$ if $status then rm tmp.;
+$ return
+$
+$nulrsend: echo "nulrsend"
+$ gawk -f nulrsend.awk nulrsend.in >tmp.
+$ cmp nulrsend.ok tmp.
+$ if $status then rm tmp.;
+$ return
+$
+$prec: echo "prec"
+$ gawk -f prec.awk prec.in >tmp.
+$ cmp prec.ok tmp.
+$ if $status then rm tmp.;
+$ return
+$
+$prtoeval: echo "prtoeval"
+$ gawk -f prtoeval.awk prtoeval.in >tmp.
+$ cmp prtoeval.ok tmp.
+$ if $status then rm tmp.;
+$ return
+$
+$rstest1: echo "rstest1"
+$ gawk -f rstest1.awk rstest1.in >tmp.
+$ cmp rstest1.ok tmp.
+$ if $status then rm tmp.;
+$ return
+$
+$rstest2: echo "rstest2"
+$ gawk -f rstest2.awk rstest2.in >tmp.
+$ cmp rstest2.ok tmp.
+$ if $status then rm tmp.;
+$ return
+$
+$rstest3: echo "rstest3"
+$ gawk -f rstest3.awk rstest3.in >tmp.
+$ cmp rstest3.ok tmp.
+$ if $status then rm tmp.;
+$ return
+$
+$rstest4: echo "rstest4 skipped"
+$ return
+$!!rstest4: echo "rstest4"
+$ gawk -f rstest4.awk rstest4.in >tmp.
+$ cmp rstest4.ok tmp.
+$ if $status then rm tmp.;
+$ return
+$
+$rstest5: echo "rstest5 skipped"
+$ return
+$!!rstest5: echo "rstest5"
+$ gawk -f rstest5.awk rstest5.in >tmp.
+$ cmp rstest5.ok tmp.
+$ if $status then rm tmp.;
+$ return
+$
+$scalar: echo "scalar"
+$ set noOn
+$ gawk -f scalar.awk scalar.in >tmp. 2>&1
+$ if .not.$status then call exit_code 2
+$ set On
+$ cmp scalar.ok tmp.
+$ if $status then rm tmp.;
+$ return
+$
+$sortempty: echo "sortempty"
+$ gawk -f sortempty.awk sortempty.in >tmp.
+$ cmp sortempty.ok tmp.
+$ if $status then rm tmp.;
+$ return
+$
+$splitarr: echo "splitarr"
+$ gawk -f splitarr.awk splitarr.in >tmp.
+$ cmp splitarr.ok tmp.
+$ if $status then rm tmp.;
+$ return
+$
+$strcat1: echo "strcat1"
+$ gawk -f strcat1.awk strcat1.in >tmp.
+$ cmp strcat1.ok tmp.
+$ if $status then rm tmp.;
+$ return
+$
+$subsepnm: echo "subsepnm"
+$ gawk -f subsepnm.awk subsepnm.in >tmp.
+$ cmp subsepnm.ok tmp.
+$ if $status then rm tmp.;
+$ return
+$
+$synerr1: echo "synerr1"
+$ set noOn
+$ gawk -f synerr1.awk synerr1.in >tmp. 2>&1
+$ if .not.$status then call exit_code 1
+$ set On
+$ cmp synerr1.ok tmp.
+$ if $status then rm tmp.;
+$ return
+$
+$uninitialized: echo "uninitialized"
+$ gawk --lint -f uninitialized.awk uninitialized.in >tmp. 2>&1
+$ cmp uninitialized.ok tmp.
+$ if $status then rm tmp.;
+$ return
+$
+$uninit2: echo "uninit2"
+$ gawk --lint -f uninit2.awk uninit2.in >tmp. 2>&1
+$ cmp uninit2.ok tmp.
+$ if $status then rm tmp.;
+$ return
+$
+$uninit3: echo "uninit3"
+$ gawk --lint -f uninit3.awk uninit3.in >tmp. 2>&1
+$ cmp uninit3.ok tmp.
+$ if $status then rm tmp.;
+$ return
+$
+$uninit4: echo "uninit4"
+$ gawk --lint -f uninit4.awk uninit4.in >tmp. 2>&1
+$ cmp uninit4.ok tmp.
+$ if $status then rm tmp.;
+$ return
+$
+$unterm: echo "unterm"
+$ set noOn
+$ gawk -f unterm.awk unterm.in >tmp. 2>&1
+$ if .not.$status then call exit_code 1
+$ set On
+$ cmp unterm.ok tmp.
+$ if $status then rm tmp.;
+$ return
+$
+$wjposer1: echo "wjposer1"
+$ gawk -f wjposer1.awk wjposer1.in >tmp.
+$ cmp wjposer1.ok tmp.
+$ if $status then rm tmp.;
+$ return
+$
+$zeroe0: echo "zeroe0"
+$ gawk -f zeroe0.awk zeroe0.in >tmp.
+$ cmp zeroe0.ok tmp.
+$ if $status then rm tmp.;
+$ return
+$
$vms_io1: echo "vms_io1"
$ if f$search("vms_io1.ok").eqs.""
$ then create vms_io1.ok
diff --git a/ylwrap b/ylwrap
index f86e2173..77eb34c3 100755
--- a/ylwrap
+++ b/ylwrap
@@ -1,9 +1,9 @@
#! /bin/sh
# ylwrap - wrapper for lex/yacc invocations.
-scriptversion=2003-11-18.20
+scriptversion=2005-02-02.22
-# Copyright (C) 1996, 1997, 1998, 1999, 2001, 2002, 2003
+# Copyright (C) 1996, 1997, 1998, 1999, 2001, 2002, 2003, 2004, 2005
# Free Software Foundation, Inc.
#
# Written by Tom Tromey <tromey@cygnus.com>.
@@ -20,7 +20,7 @@ scriptversion=2003-11-18.20
#
# 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.
+# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
# As a special exception to the GNU General Public License, if you
# distribute this file as part of a program that contains a
@@ -56,11 +56,11 @@ Any number of OUTPUT,DESIRED pairs may be used.
Report bugs to <bug-automake@gnu.org>.
EOF
- exit 0
+ exit $?
;;
-v|--v*)
echo "ylwrap $scriptversion"
- exit 0
+ exit $?
;;
esac
@@ -109,9 +109,9 @@ case $# in
0) $prog "$input" ;;
*) $prog "$@" "$input" ;;
esac
-status=$?
+ret=$?
-if test $status -eq 0; then
+if test $ret -eq 0; then
set X $pairlist
shift
first=yes
@@ -177,7 +177,7 @@ if test $status -eq 0; then
-e 's/[^ABCDEFGHIJKLMNOPQRSTUVWXYZ]/_/g'`
sed -e "/^#/!b" -e "s,$input_rx,," -e "s,$from,$2," \
- -e "s,$FROM,$TARGET," "$from" >"$target" || status=$?
+ -e "s,$FROM,$TARGET," "$from" >"$target" || ret=$?
# Check whether header files must be updated.
if test $first = no; then
@@ -195,7 +195,7 @@ if test $status -eq 0; then
# is not specified, we don't want an error when the header
# file is "missing".
if test $first = yes; then
- status=1
+ ret=1
fi
fi
shift
@@ -203,14 +203,14 @@ if test $status -eq 0; then
first=no
done
else
- status=$?
+ ret=$?
fi
# Remove the directory.
cd ..
rm -rf $dirname
-exit $status
+exit $ret
# Local Variables:
# mode: shell-script