#! /bin/sh # # This is patch #4 to gawk 4.1. cd to gawk-4.1.3 and sh this file. # Then remove all the .orig files and rename the directory gawk-4.1.4 # Changes to files that are automatically recreated have been omitted. # They will be recreated the first time you run make. # First, slight rearranging rm ABOUT-NLS # Create updated and new files cat > ABOUT-NLS << \EOF 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 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, itself available at your nearest GNU archive site. But you do _not_ need to install GNU 'gettext' prior to configuring, installing or using this package with messages translated. 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 on translations can contact the appropriate team. 1.1 INSTALL Matters =================== Some packages are "localizable" when properly installed; the programs they contain can be made to speak your own native language. Most such packages use GNU 'gettext'. Other packages have their own ways to internationalization, predating GNU 'gettext'. 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. Installers may use special options at configuration time for changing the default behaviour. The command: ./configure --disable-nls will _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' library and will decide to use it. If not, you may have to to use the '--with-libintl-prefix' option to tell 'configure' where to look for it. 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 together with the package. However, the environment variable 'LINGUAS' 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. 1.2 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 'LL_CC' combination. If you happen to have the 'LC_ALL' or some other 'LC_xxx' environment variables set, you should unset them before setting 'LANG', otherwise the setting of 'LANG' will not have the desired effect. Here 'LL' is an ISO 639 two-letter language code, and 'CC' is an ISO 3166 two-letter country code. For example, let's suppose that you speak German and live in Germany. At the shell prompt, merely execute 'setenv LANG de_DE' (in 'csh'), 'export LANG; LANG=de_DE' (in 'sh') or 'export LANG=de_DE' (in 'bash'). This can be done from your '.login' or '.profile' file, once and for all. You might think that the country code specification is redundant. But in fact, some languages have dialects in different countries. For example, 'de_AT' is used for Austria, and 'pt_BR' for Brazil. The country code serves to distinguish the dialects. The locale naming convention of 'LL_CC', with 'LL' denoting the language and 'CC' denoting the country, is the one use on systems based on GNU libc. On other systems, some variations of this scheme are used, such as 'LL' or 'LL_CC.ENCODING'. You can get the list of locales supported by your system for your language by running the command 'locale -a | grep '^LL''. Not all programs have translations for all languages. By default, an English message is shown in place of a nonexistent translation. If you understand other languages, you can set up a priority list of languages. This is done through a different environment variable, called 'LANGUAGE'. GNU 'gettext' gives preference to 'LANGUAGE' over 'LANG' for the purpose of message handling, but you still need to have 'LANG' set to the primary language; this is required by other parts of the system libraries. For example, some Swedish users who would rather read translations in German than English for when Swedish is not available, set 'LANGUAGE' to 'sv:de' while leaving 'LANG' to 'sv_SE'. Special advice for Norwegian users: The language code for Norwegian bokma*l changed from 'no' to 'nb' recently (in 2003). During the transition period, while some message catalogs for this language are installed under 'nb' and some older ones under 'no', it's recommended for Norwegian users to set 'LANGUAGE' to 'nb:no' so that both newer and older translations are used. In the 'LANGUAGE' environment variable, but not in the 'LANG' environment variable, 'LL_CC' combinations can be abbreviated as 'LL' to denote the language's main dialect. For example, 'de' is equivalent to 'de_DE' (German as spoken in Germany), and 'pt' to 'pt_PT' (Portuguese as spoken in Portugal) in this context. 1.3 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 able to synergize with other translators speaking the same language. Each translation team has its own mailing list. The up-to-date list of teams can be found at the Free Translation Project's homepage, 'http://translationproject.org/', in the "Teams" area. If you'd like to volunteer to _work_ at translating messages, you should become a member of the translating team for your own language. The subscribing address is _not_ the same as the list itself, it has '-request' appended. For example, speakers of Swedish can send a message to 'sv-request@li.org', having this message body: subscribe Keep in mind that team members are expected to participate _actively_ in translations, or at solving translational difficulties, rather than merely lurking around. If your team does not exist yet and you want to start one, or if you are unsure about what to do or how to get started, please write to 'coordinator@translationproject.org' to reach the coordinator for all translator teams. The English team is special. It works at improving and uniformizing the terminology in use. Proven linguistic skills are praised more than programming skills, here. 1.4 Available Packages ====================== Languages are not equally supported in all packages. The following matrix shows the current state of internationalization, as of Jun 2014. 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 an ar as ast az be bg bn bn_IN bs ca crh cs +---------------------------------------------------+ a2ps | [] [] [] | aegis | | anubis | | aspell | [] [] [] | bash | [] [] [] | bfd | | binutils | [] | bison | | bison-runtime | [] | buzztrax | [] | ccd2cue | | ccide | | cflow | | clisp | | coreutils | [] [] | cpio | | cppi | | cpplib | [] | cryptsetup | [] | datamash | | denemo | [] [] | dfarc | [] | dialog | [] [] [] | dico | | diffutils | [] | dink | [] | direvent | | doodle | [] | dos2unix | | dos2unix-man | | e2fsprogs | [] [] | enscript | [] | exif | [] | fetchmail | [] [] | findutils | [] | flex | [] | freedink | [] [] | fusionforge | | gas | | gawk | [] | gcal | [] | gcc | | gdbm | | gettext-examples | [] [] [] [] [] | gettext-runtime | [] [] [] | gettext-tools | [] [] | gjay | | glunarclock | [] [] [] | gnubiff | [] | gnubik | [] | gnucash | () () [] | gnuchess | | gnulib | [] | gnunet | | gnunet-gtk | | gold | | gphoto2 | [] | gprof | [] | gramadoir | | grep | [] [] [] | grub | [] | gsasl | | gss | | gst-plugins-bad | [] | gst-plugins-base | [] [] [] | gst-plugins-good | [] [] [] | gst-plugins-ugly | [] [] [] | gstreamer | [] [] [] [] | gtick | [] | gtkam | [] [] | gtkspell | [] [] [] [] [] | guix | | guix-packages | | gutenprint | [] | hello | [] | help2man | | help2man-texi | | hylafax | | idutils | | iso_15924 | [] | iso_3166 | [] [] [] [] [] [] [] [] [] [] | iso_3166_2 | | iso_4217 | [] | iso_639 | [] [] [] [] [] [] [] [] [] | iso_639_3 | [] [] | iso_639_5 | | jwhois | | kbd | [] | klavaro | [] [] [] [] [] | latrine | | ld | [] | leafpad | [] [] [] [] | libc | [] [] [] | libexif | () | libextractor | | libgnutls | [] | libgphoto2 | [] | libgphoto2_port | [] | libgsasl | | libiconv | [] [] | libidn | [] | liferea | [] [] [] [] | lilypond | [] [] | lordsawar | [] | lprng | | lynx | [] [] | m4 | [] | mailfromd | | mailutils | | make | [] | man-db | [] [] | man-db-manpages | | midi-instruments | [] [] [] | minicom | [] | mkisofs | [] | myserver | [] | nano | [] [] [] | opcodes | | parted | [] | pies | | popt | [] | procps-ng | | procps-ng-man | | psmisc | [] | pspp | [] | pushover | [] | pwdutils | | pyspread | | radius | [] | recode | [] [] [] | recutils | | rpm | | rush | | sarg | | sed | [] [] [] | sharutils | [] | shishi | | skribilo | | solfege | [] | solfege-manual | | spotmachine | | sudo | [] [] | sudoers | [] [] | sysstat | [] | tar | [] [] [] | texinfo | [] [] | texinfo_document | [] | tigervnc | [] | tin | | tin-man | | tracgoogleappsa... | | trader | | util-linux | [] | ve | | vice | | vmm | | vorbis-tools | [] | wastesedge | | wcd | | wcd-man | | wdiff | [] [] | wget | [] | wyslij-po | | xboard | | xdg-user-dirs | [] [] [] [] [] [] [] [] [] [] | xkeyboard-config | [] [] [] | +---------------------------------------------------+ af am an ar as ast az be bg bn bn_IN bs ca crh cs 4 0 2 5 3 11 0 8 23 3 3 1 54 4 73 da de el en en_GB en_ZA eo es et eu fa fi fr +--------------------------------------------------+ a2ps | [] [] [] [] [] [] [] [] [] | aegis | [] [] [] [] | anubis | [] [] [] [] [] | aspell | [] [] [] [] [] [] [] | bash | [] [] [] | bfd | [] [] [] [] | binutils | [] [] [] | bison | [] [] [] [] [] [] [] [] | bison-runtime | [] [] [] [] [] [] [] [] | buzztrax | [] [] [] [] | ccd2cue | [] [] [] | ccide | [] [] [] [] [] [] | cflow | [] [] [] [] [] | clisp | [] [] [] [] [] | coreutils | [] [] [] [] [] | cpio | [] [] [] [] [] | cppi | [] [] [] [] [] | cpplib | [] [] [] [] [] [] | cryptsetup | [] [] [] [] [] | datamash | [] [] [] [] | denemo | [] | dfarc | [] [] [] [] [] [] | dialog | [] [] [] [] [] [] [] [] [] | dico | [] [] [] [] | diffutils | [] [] [] [] [] [] | dink | [] [] [] [] [] [] | direvent | [] [] [] [] | doodle | [] [] [] [] | dos2unix | [] [] [] [] [] | dos2unix-man | [] [] [] | e2fsprogs | [] [] [] [] [] | enscript | [] [] [] [] [] [] | exif | [] [] [] [] [] [] | fetchmail | [] () [] [] [] [] [] | findutils | [] [] [] [] [] [] [] [] | flex | [] [] [] [] [] [] | freedink | [] [] [] [] [] [] [] [] | fusionforge | [] [] [] | gas | [] [] [] | gawk | [] [] [] [] [] | gcal | [] [] [] [] | gcc | [] [] | gdbm | [] [] [] [] [] | gettext-examples | [] [] [] [] [] [] [] | gettext-runtime | [] [] [] [] [] [] | gettext-tools | [] [] [] [] [] | gjay | [] [] [] [] | glunarclock | [] [] [] [] [] | gnubiff | () [] [] () | gnubik | [] [] [] [] [] | gnucash | [] () () () () () () | gnuchess | [] [] [] [] | gnulib | [] [] [] [] [] [] [] | gnunet | [] | gnunet-gtk | [] | gold | [] [] [] | gphoto2 | [] () [] [] | gprof | [] [] [] [] [] [] | gramadoir | [] [] [] [] [] | grep | [] [] [] [] [] [] [] | grub | [] [] [] [] [] | gsasl | [] [] [] [] [] | gss | [] [] [] [] [] | gst-plugins-bad | [] [] | gst-plugins-base | [] [] [] [] [] [] | gst-plugins-good | [] [] [] [] [] [] [] | gst-plugins-ugly | [] [] [] [] [] [] [] [] | gstreamer | [] [] [] [] [] [] [] | gtick | [] () [] [] [] | gtkam | [] () [] [] [] [] | gtkspell | [] [] [] [] [] [] [] [] | guix | [] [] | guix-packages | | gutenprint | [] [] [] [] | hello | [] [] [] [] [] [] [] [] | help2man | [] [] [] [] [] [] [] | help2man-texi | [] [] [] | hylafax | [] [] | idutils | [] [] [] [] [] | iso_15924 | [] () [] [] () [] () | iso_3166 | [] () [] [] [] [] () [] () | iso_3166_2 | [] () () () | iso_4217 | [] () [] [] [] () [] () | iso_639 | [] () [] [] () [] () | iso_639_3 | () () () | iso_639_5 | () () () | jwhois | [] [] [] [] [] | kbd | [] [] [] [] [] [] | klavaro | [] [] [] [] [] [] [] | latrine | [] () [] [] | ld | [] [] [] [] | leafpad | [] [] [] [] [] [] [] [] | libc | [] [] [] [] [] | libexif | [] [] () [] [] | libextractor | [] | libgnutls | [] [] [] [] | libgphoto2 | [] () [] | libgphoto2_port | [] () [] [] [] [] | libgsasl | [] [] [] [] [] | libiconv | [] [] [] [] [] [] [] | libidn | [] [] [] [] [] | liferea | [] () [] [] [] [] [] | lilypond | [] [] [] [] [] [] | lordsawar | [] [] | lprng | | lynx | [] [] [] [] [] [] | m4 | [] [] [] [] [] [] | mailfromd | [] | mailutils | [] [] [] [] | make | [] [] [] [] [] | man-db | [] [] [] [] | man-db-manpages | [] [] | midi-instruments | [] [] [] [] [] [] [] [] [] | minicom | [] [] [] [] [] | mkisofs | [] [] [] | myserver | [] [] [] [] | nano | [] [] [] [] [] [] [] | opcodes | [] [] [] [] [] | parted | [] [] [] | pies | [] | popt | [] [] [] [] [] [] | procps-ng | [] [] | procps-ng-man | [] [] | psmisc | [] [] [] [] [] [] [] | pspp | [] [] [] | pushover | () [] [] [] | pwdutils | [] [] [] | pyspread | [] [] [] | radius | [] [] | recode | [] [] [] [] [] [] [] | recutils | [] [] [] [] | rpm | [] [] [] [] [] | rush | [] [] [] | sarg | [] [] | sed | [] [] [] [] [] [] [] [] | sharutils | [] [] [] [] | shishi | [] [] [] | skribilo | [] [] | solfege | [] [] [] [] [] [] [] [] | solfege-manual | [] [] [] [] [] | spotmachine | [] [] [] [] | sudo | [] [] [] [] [] [] | sudoers | [] [] [] [] [] [] | sysstat | [] [] [] [] [] [] | tar | [] [] [] [] [] [] [] | texinfo | [] [] [] [] [] | texinfo_document | [] [] [] [] | tigervnc | [] [] [] [] [] [] | tin | [] [] [] [] | tin-man | [] | tracgoogleappsa... | [] [] [] [] [] | trader | [] [] [] [] [] [] | util-linux | [] [] [] [] | ve | [] [] [] [] [] | vice | () () () | vmm | [] [] | vorbis-tools | [] [] [] [] | wastesedge | [] () | wcd | [] [] [] [] | wcd-man | [] | wdiff | [] [] [] [] [] [] [] | wget | [] [] [] [] [] [] | wyslij-po | [] [] [] [] | xboard | [] [] [] [] | xdg-user-dirs | [] [] [] [] [] [] [] [] [] [] | xkeyboard-config | [] [] [] [] [] [] [] | +--------------------------------------------------+ da de el en en_GB en_ZA eo es et eu fa fi fr 120 130 32 1 6 0 94 95 22 13 4 103 136 ga gd gl gu he hi hr hu hy ia id is it ja ka kk +-------------------------------------------------+ a2ps | [] [] [] [] | aegis | [] | anubis | [] [] [] [] | aspell | [] [] [] [] [] | bash | [] [] [] | bfd | [] [] | binutils | [] [] [] | bison | [] | bison-runtime | [] [] [] [] [] [] [] [] | buzztrax | | ccd2cue | [] | ccide | [] [] | cflow | [] [] [] | clisp | | coreutils | [] [] [] | cpio | [] [] [] [] [] [] | cppi | [] [] [] [] [] | cpplib | [] [] | cryptsetup | [] | datamash | | denemo | [] | dfarc | [] [] [] | dialog | [] [] [] [] [] [] [] [] [] [] | dico | | diffutils | [] [] [] [] | dink | [] | direvent | [] | doodle | [] [] | dos2unix | [] [] | dos2unix-man | | e2fsprogs | [] | enscript | [] [] [] | exif | [] [] [] [] [] [] | fetchmail | [] [] [] | findutils | [] [] [] [] [] [] [] | flex | [] | freedink | [] [] [] [] | fusionforge | | gas | [] | gawk | [] () [] | gcal | | gcc | | gdbm | | gettext-examples | [] [] [] [] [] [] [] | gettext-runtime | [] [] [] [] [] [] [] | gettext-tools | [] [] [] | gjay | [] | glunarclock | [] [] [] [] [] [] | gnubiff | [] [] () | gnubik | [] [] [] | gnucash | () () () () () [] | gnuchess | | gnulib | [] [] [] [] [] | gnunet | | gnunet-gtk | | gold | [] [] | gphoto2 | [] [] [] [] | gprof | [] [] [] [] | gramadoir | [] [] [] | grep | [] [] [] [] [] [] [] | grub | [] [] [] | gsasl | [] [] [] [] [] | gss | [] [] [] [] [] | gst-plugins-bad | [] | gst-plugins-base | [] [] [] [] | gst-plugins-good | [] [] [] [] [] [] | gst-plugins-ugly | [] [] [] [] [] [] | gstreamer | [] [] [] [] [] | gtick | [] [] [] [] [] | gtkam | [] [] [] [] [] | gtkspell | [] [] [] [] [] [] [] [] [] [] | guix | | guix-packages | | gutenprint | [] [] [] | hello | [] [] [] [] [] | help2man | [] [] [] | help2man-texi | | hylafax | [] | idutils | [] [] | iso_15924 | [] [] [] [] [] [] | iso_3166 | [] [] [] [] [] [] [] [] [] [] [] [] [] | iso_3166_2 | [] [] | iso_4217 | [] [] [] [] [] [] | iso_639 | [] [] [] [] [] [] [] [] [] | iso_639_3 | [] [] | iso_639_5 | | jwhois | [] [] [] [] | kbd | [] [] [] | klavaro | [] [] [] [] [] | latrine | [] | ld | [] [] [] [] | leafpad | [] [] [] [] [] [] [] () | libc | [] [] [] [] [] | libexif | [] | libextractor | | libgnutls | [] | libgphoto2 | [] [] | libgphoto2_port | [] [] | libgsasl | [] [] [] [] | libiconv | [] [] [] [] [] [] [] | libidn | [] [] [] [] | liferea | [] [] [] [] [] | lilypond | [] | lordsawar | | lprng | [] | lynx | [] [] [] [] | m4 | [] [] [] [] [] | mailfromd | | mailutils | | make | [] [] [] [] | man-db | [] [] | man-db-manpages | [] [] | midi-instruments | [] [] [] [] [] [] [] [] [] | minicom | [] [] [] | mkisofs | [] [] | myserver | [] | nano | [] [] [] [] [] | opcodes | [] [] [] | parted | [] [] [] [] | pies | | popt | [] [] [] [] [] [] [] [] [] [] | procps-ng | | procps-ng-man | | psmisc | [] [] [] [] | pspp | [] [] | pushover | [] | pwdutils | [] | pyspread | | radius | [] | recode | [] [] [] [] [] [] [] | recutils | | rpm | [] | rush | [] | sarg | | sed | [] [] [] [] [] [] [] | sharutils | | shishi | | skribilo | [] | solfege | [] [] | solfege-manual | | spotmachine | | sudo | [] [] [] [] | sudoers | [] [] [] | sysstat | [] [] [] | tar | [] [] [] [] [] [] | texinfo | [] [] [] | texinfo_document | [] [] | tigervnc | | tin | | tin-man | | tracgoogleappsa... | [] [] [] [] | trader | [] [] | util-linux | [] | ve | [] | vice | () () | vmm | | vorbis-tools | [] [] | wastesedge | () | wcd | | wcd-man | | wdiff | [] [] [] | wget | [] [] [] | wyslij-po | [] [] [] | xboard | | xdg-user-dirs | [] [] [] [] [] [] [] [] [] [] [] [] [] [] | xkeyboard-config | [] [] [] [] [] | +-------------------------------------------------+ ga gd gl gu he hi hr hu hy ia id is it ja ka kk 35 2 47 4 8 2 53 69 2 6 80 11 86 58 0 3 kn ko ku ky lg lt lv mk ml mn mr ms mt nb ne nl +--------------------------------------------------+ a2ps | [] [] | aegis | [] | anubis | [] [] [] | aspell | [] [] | bash | [] [] | bfd | | binutils | | bison | [] | bison-runtime | [] [] [] [] [] [] | buzztrax | | ccd2cue | | ccide | [] [] | cflow | [] | clisp | [] | coreutils | [] [] | cpio | [] | cppi | | cpplib | [] | cryptsetup | [] | datamash | [] [] | denemo | | dfarc | [] [] | dialog | [] [] [] [] [] [] | dico | | diffutils | [] [] [] | dink | [] | direvent | [] | doodle | [] | dos2unix | [] [] | dos2unix-man | [] | e2fsprogs | [] | enscript | [] | exif | [] [] | fetchmail | [] | findutils | [] [] | flex | [] | freedink | [] [] | fusionforge | | gas | | gawk | [] | gcal | | gcc | | gdbm | | gettext-examples | [] [] [] [] [] [] | gettext-runtime | [] [] | gettext-tools | [] | gjay | | glunarclock | [] [] | gnubiff | [] | gnubik | [] [] | gnucash | () () () () () () () [] | gnuchess | [] [] | gnulib | [] | gnunet | | gnunet-gtk | | gold | | gphoto2 | [] | gprof | [] [] | gramadoir | [] | grep | [] [] | grub | [] [] [] | gsasl | [] | gss | | gst-plugins-bad | [] [] | gst-plugins-base | [] [] [] | gst-plugins-good | [] [] [] [] | gst-plugins-ugly | [] [] [] [] [] | gstreamer | [] [] | gtick | [] | gtkam | [] [] | gtkspell | [] [] [] [] [] [] [] | guix | | guix-packages | | gutenprint | [] | hello | [] [] [] | help2man | [] | help2man-texi | | hylafax | [] | idutils | [] | iso_15924 | () [] [] | iso_3166 | [] [] [] () [] [] [] [] [] [] | iso_3166_2 | () [] | iso_4217 | () [] [] [] | iso_639 | [] [] () [] [] [] [] | iso_639_3 | [] () [] | iso_639_5 | () | jwhois | [] [] | kbd | [] | klavaro | [] [] | latrine | | ld | | leafpad | [] [] [] [] [] | libc | [] [] | libexif | [] | libextractor | [] | libgnutls | [] [] | libgphoto2 | [] | libgphoto2_port | [] | libgsasl | [] | libiconv | [] [] | libidn | [] | liferea | [] [] [] | lilypond | [] | lordsawar | | lprng | | lynx | [] | m4 | [] | mailfromd | | mailutils | | make | [] [] | man-db | [] | man-db-manpages | [] | midi-instruments | [] [] [] [] [] [] [] | minicom | [] | mkisofs | [] | myserver | | nano | [] [] [] | opcodes | [] | parted | [] | pies | | popt | [] [] [] [] [] | procps-ng | | procps-ng-man | | psmisc | [] | pspp | [] [] | pushover | | pwdutils | [] | pyspread | | radius | [] | recode | [] [] | recutils | [] | rpm | [] | rush | [] | sarg | | sed | [] [] | sharutils | [] | shishi | | skribilo | | solfege | [] [] | solfege-manual | [] | spotmachine | [] | sudo | [] [] | sudoers | [] [] | sysstat | [] [] | tar | [] [] [] | texinfo | [] | texinfo_document | [] | tigervnc | [] | tin | | tin-man | | tracgoogleappsa... | [] [] [] | trader | [] | util-linux | [] | ve | [] | vice | [] | vmm | [] | vorbis-tools | [] | wastesedge | [] | wcd | [] | wcd-man | [] | wdiff | [] | wget | [] [] | wyslij-po | [] | xboard | [] | xdg-user-dirs | [] [] [] [] [] [] [] [] [] [] [] | xkeyboard-config | [] [] [] | +--------------------------------------------------+ kn ko ku ky lg lt lv mk ml mn mr ms mt nb ne nl 5 11 4 6 0 13 22 3 3 3 4 11 2 40 1 124 nn or os pa pl ps pt pt_BR ro ru rw sk sl sq sr +--------------------------------------------------+ a2ps | [] [] [] [] [] [] [] | aegis | [] [] | anubis | [] [] [] | aspell | [] [] [] [] [] [] [] | bash | [] [] [] [] [] | bfd | [] | binutils | [] [] | bison | [] [] [] | bison-runtime | [] [] [] [] [] [] [] [] | buzztrax | | ccd2cue | [] | ccide | [] [] [] | cflow | [] [] | clisp | [] | coreutils | [] [] [] [] | cpio | [] [] [] | cppi | [] [] [] | cpplib | [] [] [] | cryptsetup | [] [] | datamash | [] [] | denemo | | dfarc | [] [] [] | dialog | [] [] [] [] [] [] [] | dico | [] | diffutils | [] [] | dink | | direvent | [] [] | doodle | [] [] | dos2unix | [] [] [] [] | dos2unix-man | [] [] | e2fsprogs | [] | enscript | [] [] [] [] [] [] | exif | [] [] [] [] [] [] | fetchmail | [] [] [] | findutils | [] [] [] [] [] | flex | [] [] [] [] [] | freedink | [] [] [] [] [] | fusionforge | | gas | | gawk | [] | gcal | | gcc | | gdbm | [] [] [] | gettext-examples | [] [] [] [] [] [] [] [] | gettext-runtime | [] [] [] [] [] [] [] [] [] | gettext-tools | [] [] [] [] [] [] [] | gjay | [] | glunarclock | [] [] [] [] [] [] | gnubiff | [] | gnubik | [] [] [] [] | gnucash | () () () () [] | gnuchess | [] [] | gnulib | [] [] [] [] [] | gnunet | | gnunet-gtk | | gold | | gphoto2 | [] [] [] [] [] | gprof | [] [] [] [] | gramadoir | [] [] | grep | [] [] [] [] [] [] | grub | [] [] [] [] [] | gsasl | [] [] [] | gss | [] [] [] [] | gst-plugins-bad | [] [] [] [] | gst-plugins-base | [] [] [] [] [] [] | gst-plugins-good | [] [] [] [] [] [] [] | gst-plugins-ugly | [] [] [] [] [] [] [] | gstreamer | [] [] [] [] [] [] [] | gtick | [] [] [] [] [] | gtkam | [] [] [] [] [] [] | gtkspell | [] [] [] [] [] [] [] [] [] | guix | | guix-packages | | gutenprint | [] [] | hello | [] [] [] [] [] [] | help2man | [] [] [] [] | help2man-texi | [] | hylafax | | idutils | [] [] [] | iso_15924 | [] () [] [] [] [] | iso_3166 | [] [] [] [] () [] [] [] [] [] [] [] [] | iso_3166_2 | [] () [] | iso_4217 | [] [] () [] [] [] [] [] | iso_639 | [] [] [] () [] [] [] [] [] [] | iso_639_3 | [] () | iso_639_5 | () [] | jwhois | [] [] [] [] | kbd | [] [] | klavaro | [] [] [] [] [] | latrine | [] | ld | | leafpad | [] [] [] [] [] [] [] [] [] | libc | [] [] [] | libexif | [] () [] | libextractor | [] | libgnutls | [] | libgphoto2 | [] | libgphoto2_port | [] [] [] [] [] | libgsasl | [] [] [] [] | libiconv | [] [] [] [] [] | libidn | [] [] [] | liferea | [] [] [] [] () [] [] | lilypond | | lordsawar | | lprng | [] | lynx | [] [] | m4 | [] [] [] [] [] | mailfromd | [] | mailutils | [] | make | [] [] [] | man-db | [] [] [] | man-db-manpages | [] [] [] | midi-instruments | [] [] [] [] [] [] [] [] | minicom | [] [] [] [] | mkisofs | [] [] [] | myserver | [] [] | nano | [] [] [] [] [] [] | opcodes | | parted | [] [] [] [] [] [] | pies | [] | popt | [] [] [] [] [] [] | procps-ng | [] | procps-ng-man | [] | psmisc | [] [] [] [] | pspp | [] [] | pushover | | pwdutils | [] | pyspread | [] [] | radius | [] [] | recode | [] [] [] [] [] [] [] [] | recutils | [] | rpm | [] | rush | [] [] [] | sarg | [] [] | sed | [] [] [] [] [] [] [] [] | sharutils | [] [] [] | shishi | [] [] | skribilo | | solfege | [] [] [] | solfege-manual | [] [] | spotmachine | [] [] | sudo | [] [] [] [] [] [] | sudoers | [] [] [] [] | sysstat | [] [] [] [] [] | tar | [] [] [] [] [] | texinfo | [] [] [] | texinfo_document | [] [] | tigervnc | [] | tin | [] | tin-man | | tracgoogleappsa... | [] [] [] [] | trader | [] | util-linux | [] [] | ve | [] [] [] | vice | | vmm | | vorbis-tools | [] [] [] | wastesedge | | wcd | | wcd-man | | wdiff | [] [] [] [] [] | wget | [] [] [] [] | wyslij-po | [] [] [] [] | xboard | [] [] [] | xdg-user-dirs | [] [] [] [] [] [] [] [] [] [] [] [] [] | xkeyboard-config | [] [] [] [] | +--------------------------------------------------+ nn or os pa pl ps pt pt_BR ro ru rw sk sl sq sr 7 3 1 6 114 1 12 83 32 80 3 38 45 7 94 sv sw ta te tg th tr uk ur vi wa wo zh_CN zh_HK +---------------------------------------------------+ a2ps | [] [] [] [] [] | aegis | [] | anubis | [] [] [] [] | aspell | [] [] [] [] | bash | [] [] [] [] | bfd | [] [] | binutils | [] [] [] | bison | [] [] [] [] | bison-runtime | [] [] [] [] [] [] | buzztrax | [] [] [] | ccd2cue | [] [] [] | ccide | [] [] [] [] | cflow | [] [] [] [] | clisp | | coreutils | [] [] [] [] | cpio | [] [] [] [] [] | cppi | [] [] [] [] | cpplib | [] [] [] [] [] | cryptsetup | [] [] [] | datamash | [] [] [] | denemo | | dfarc | [] | dialog | [] [] [] [] [] [] | dico | [] | diffutils | [] [] [] [] [] | dink | | direvent | [] [] | doodle | [] [] | dos2unix | [] [] [] [] | dos2unix-man | [] [] [] | e2fsprogs | [] [] [] [] | enscript | [] [] [] [] | exif | [] [] [] [] [] | fetchmail | [] [] [] [] | findutils | [] [] [] [] [] | flex | [] [] [] [] | freedink | [] [] | fusionforge | | gas | [] | gawk | [] [] | gcal | [] [] | gcc | [] [] | gdbm | [] [] | gettext-examples | [] [] [] [] [] [] | gettext-runtime | [] [] [] [] [] [] | gettext-tools | [] [] [] [] [] | gjay | [] [] | glunarclock | [] [] [] [] | gnubiff | [] [] | gnubik | [] [] [] [] | gnucash | () () () () [] | gnuchess | [] [] | gnulib | [] [] [] [] | gnunet | | gnunet-gtk | | gold | [] [] | gphoto2 | [] [] [] [] | gprof | [] [] [] [] | gramadoir | [] [] [] | grep | [] [] [] [] [] | grub | [] [] [] [] | gsasl | [] [] [] [] | gss | [] [] [] | gst-plugins-bad | [] [] [] [] | gst-plugins-base | [] [] [] [] [] | gst-plugins-good | [] [] [] [] [] | gst-plugins-ugly | [] [] [] [] [] | gstreamer | [] [] [] [] [] | gtick | [] [] [] | gtkam | [] [] [] [] | gtkspell | [] [] [] [] [] [] [] [] | guix | [] | guix-packages | | gutenprint | [] [] [] [] | hello | [] [] [] [] [] [] | help2man | [] [] [] | help2man-texi | [] | hylafax | [] | idutils | [] [] [] | iso_15924 | [] () [] [] () [] | iso_3166 | [] [] () [] [] () [] [] [] | iso_3166_2 | () [] [] () [] | iso_4217 | [] () [] [] () [] [] | iso_639 | [] [] [] () [] [] () [] [] [] | iso_639_3 | [] () [] [] () | iso_639_5 | () [] () | jwhois | [] [] [] [] | kbd | [] [] [] | klavaro | [] [] [] [] [] [] | latrine | [] [] | ld | [] [] [] [] [] | leafpad | [] [] [] [] [] [] | libc | [] [] [] [] [] | libexif | [] () | libextractor | [] [] | libgnutls | [] [] [] [] | libgphoto2 | [] [] | libgphoto2_port | [] [] [] [] | libgsasl | [] [] [] [] | libiconv | [] [] [] [] [] | libidn | () [] [] [] | liferea | [] [] [] [] [] | lilypond | [] | lordsawar | | lprng | [] | lynx | [] [] [] [] | m4 | [] [] [] | mailfromd | [] [] | mailutils | [] | make | [] [] [] [] | man-db | [] [] | man-db-manpages | [] | midi-instruments | [] [] [] [] [] [] | minicom | [] [] | mkisofs | [] [] [] | myserver | [] | nano | [] [] [] [] | opcodes | [] [] [] | parted | [] [] [] [] [] | pies | [] [] | popt | [] [] [] [] [] [] [] | procps-ng | [] [] | procps-ng-man | [] | psmisc | [] [] [] [] | pspp | [] [] [] | pushover | [] | pwdutils | [] [] | pyspread | [] | radius | [] [] | recode | [] [] [] [] | recutils | [] [] [] | rpm | [] [] [] [] | rush | [] [] | sarg | | sed | [] [] [] [] [] | sharutils | [] [] [] | shishi | [] [] | skribilo | [] | solfege | [] [] [] | solfege-manual | [] | spotmachine | [] [] [] | sudo | [] [] [] [] | sudoers | [] [] [] | sysstat | [] [] [] [] [] | tar | [] [] [] [] [] | texinfo | [] [] [] | texinfo_document | [] | tigervnc | [] [] | tin | [] | tin-man | | tracgoogleappsa... | [] [] [] [] [] | trader | [] | util-linux | [] [] [] | ve | [] [] [] [] | vice | () () | vmm | | vorbis-tools | [] [] | wastesedge | | wcd | [] [] [] | wcd-man | [] | wdiff | [] [] [] [] | wget | [] [] [] | wyslij-po | [] [] | xboard | [] | xdg-user-dirs | [] [] [] [] [] [] [] [] [] | xkeyboard-config | [] [] [] [] | +---------------------------------------------------+ sv sw ta te tg th tr uk ur vi wa wo zh_CN zh_HK 91 1 4 3 0 13 50 113 1 126 7 1 95 7 zh_TW +-------+ a2ps | | 30 aegis | | 9 anubis | | 19 aspell | | 28 bash | [] | 21 bfd | | 9 binutils | | 12 bison | [] | 18 bison-runtime | [] | 38 buzztrax | | 8 ccd2cue | | 8 ccide | | 17 cflow | | 15 clisp | | 10 coreutils | | 20 cpio | | 20 cppi | | 17 cpplib | [] | 19 cryptsetup | | 13 datamash | | 11 denemo | | 4 dfarc | | 16 dialog | [] | 42 dico | | 6 diffutils | | 21 dink | | 9 direvent | | 10 doodle | | 12 dos2unix | [] | 18 dos2unix-man | | 9 e2fsprogs | | 14 enscript | | 21 exif | | 26 fetchmail | | 19 findutils | | 28 flex | [] | 19 freedink | | 23 fusionforge | | 3 gas | | 5 gawk | | 12 gcal | | 7 gcc | | 4 gdbm | | 10 gettext-examples | [] | 40 gettext-runtime | [] | 34 gettext-tools | [] | 24 gjay | | 8 glunarclock | [] | 27 gnubiff | | 9 gnubik | | 19 gnucash | () | 7 gnuchess | | 10 gnulib | | 23 gnunet | | 1 gnunet-gtk | | 1 gold | | 7 gphoto2 | [] | 19 gprof | | 21 gramadoir | | 14 grep | [] | 31 grub | | 21 gsasl | [] | 19 gss | | 17 gst-plugins-bad | | 14 gst-plugins-base | | 27 gst-plugins-good | | 32 gst-plugins-ugly | | 34 gstreamer | [] | 31 gtick | | 19 gtkam | | 24 gtkspell | [] | 48 guix | | 3 guix-packages | | 0 gutenprint | | 15 hello | [] | 30 help2man | | 18 help2man-texi | | 5 hylafax | | 5 idutils | | 14 iso_15924 | [] | 23 iso_3166 | [] | 58 iso_3166_2 | | 9 iso_4217 | [] | 28 iso_639 | [] | 46 iso_639_3 | | 10 iso_639_5 | | 2 jwhois | [] | 20 kbd | | 16 klavaro | | 30 latrine | | 7 ld | [] | 15 leafpad | [] | 40 libc | [] | 24 libexif | | 9 libextractor | | 5 libgnutls | | 13 libgphoto2 | | 9 libgphoto2_port | [] | 19 libgsasl | | 18 libiconv | [] | 29 libidn | | 17 liferea | | 29 lilypond | | 11 lordsawar | | 3 lprng | | 3 lynx | | 19 m4 | [] | 22 mailfromd | | 4 mailutils | | 6 make | | 19 man-db | | 14 man-db-manpages | | 9 midi-instruments | [] | 43 minicom | [] | 17 mkisofs | | 13 myserver | | 9 nano | [] | 29 opcodes | | 12 parted | [] | 21 pies | | 4 popt | [] | 36 procps-ng | | 5 procps-ng-man | | 4 psmisc | [] | 22 pspp | | 13 pushover | | 6 pwdutils | | 8 pyspread | | 6 radius | | 9 recode | | 31 recutils | | 9 rpm | [] | 13 rush | | 10 sarg | | 4 sed | [] | 34 sharutils | | 12 shishi | | 7 skribilo | | 4 solfege | | 19 solfege-manual | | 9 spotmachine | | 10 sudo | | 24 sudoers | | 20 sysstat | | 22 tar | [] | 30 texinfo | | 17 texinfo_document | | 11 tigervnc | | 11 tin | [] | 7 tin-man | | 1 tracgoogleappsa... | [] | 22 trader | | 11 util-linux | | 12 ve | | 14 vice | | 1 vmm | | 3 vorbis-tools | | 13 wastesedge | | 2 wcd | | 8 wcd-man | | 3 wdiff | [] | 23 wget | | 19 wyslij-po | | 14 xboard | | 9 xdg-user-dirs | [] | 68 xkeyboard-config | [] | 27 +-------+ 90 teams zh_TW 166 domains 42 2748 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 used for implementing regional variants of languages, or language dialects. For a PO file in the matrix above to be effective, the package to which it applies should also have been internationalized and 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 Jun 2014 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://translationproject.org/extra/matrix.html'. 1.5 Using 'gettext' in new packages =================================== If you are writing a freely available program and want to internationalize it you are welcome to use GNU 'gettext' in your package. Of course you have to respect the GNU Lesser General Public License which covers the use of the GNU 'gettext' library. This means in particular that even non-free programs can use 'libintl' as a shared library, whereas only free software can use 'libintl' as a static library or use modified versions of 'libintl'. Once the sources are changed appropriately and the setup can handle the use of 'gettext' the only thing missing are the translations. The Free Translation Project is also available for packages which are not developed inside the GNU project. Therefore the information given above applies also for every other Free Software Project. Contact 'coordinator@translationproject.org' to make the '.pot' files available to the translation teams. EOF cat > extension/m4/ChangeLog << \EOF 2016-08-25 Arnold D. Robbins * 4.1.4: Release tar ball made. 2015-05-19 Arnold D. Robbins * 4.1.3: Release tar ball made. 2015-04-29 Arnold D. Robbins * 4.1.2: Release tar ball made. 2015-03-18 Arnold D. Robbins * libtoolm4, ltversion.m4: Updated to libtool 2.4.6. 2015-01-24 Arnold D. Robbins * gettext.m4, iconv.m4, intlmacosx.m4, po.m4: Removed. 2014-04-08 Arnold D. Robbins * 4.1.1: Release tar ball made. 2013-12-21 Arnold D. Robbins * libtool.m4, ltoptions.m4, ltversion.m4: Update to libtool 2.4.2.418. 2013-05-09 Arnold D. Robbins * 4.1.0: Release tar ball made. 2013-01-27 Arnold D. Robbins * dirfd.m4: New file. 2012-08-24 Arnold D. Robbins * intlmacosx.m4: New file. 2012-07-30 Arnold D. Robbins * gettext.m4, iconv.m4, lib-ld.m4, lib-link.m4, lib-prefix.m4, nls.m4, po.m4, progtest.m4: New files for gettext support. 2012-05-21 Andrew J. Schorr * libtool.m4, ltoptions.m4, ltsugar.m4, ltversion.m4, lt~obsolete.m4: New files to support libtool. EOF cat > po/id.po << \EOF # Pesan bahasa indonesia untuk gawk. # Copyright (C) 2008 Free Software Foundation, Inc. # This file is distributed under the same license as the gawk package. # Arif E. Nugroho , 2008, 2009, 2010, 2011, 2012, 2013, 2014. # msgid "" msgstr "" "Project-Id-Version: gawk 4.1.0b\n" "Report-Msgid-Bugs-To: bug-gawk@gnu.org\n" "POT-Creation-Date: 2016-08-25 06:19+0300\n" "PO-Revision-Date: 2014-08-03 07:30+0700\n" "Last-Translator: Arif E. Nugroho \n" "Language-Team: Indonesian \n" "Language: id\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=ISO-8859-1\n" "Content-Transfer-Encoding: 8bit\n" #: array.c:259 #, c-format msgid "from %s" msgstr "dari %s" #: array.c:360 msgid "attempt to use a scalar value as array" msgstr "mencoba untuk menggunakan skalar sebagai sebuah array" #: array.c:362 #, c-format msgid "attempt to use scalar parameter `%s' as an array" msgstr "mencoba untuk menggunakan parameter `%s' sebagai sebuah array" #: array.c:365 #, c-format msgid "attempt to use scalar `%s' as an array" msgstr "mencoba untuk menggunakan skalar `%s' sebagai sebuah array" #: array.c:412 array.c:579 builtin.c:85 builtin.c:1612 builtin.c:1658 #: builtin.c:1671 builtin.c:2160 builtin.c:2179 eval.c:1141 eval.c:1145 #: eval.c:1556 #, c-format msgid "attempt to use array `%s' in a scalar context" msgstr "mencoba menggunakan array `%s' dalam sebuah konteks skalar" #: array.c:586 #, c-format msgid "delete: index `%s' not in array `%s'" msgstr "delete: indeks `%s' tidak dalam array `%s'" #: array.c:600 #, c-format msgid "attempt to use scalar `%s[\"%.*s\"]' as an array" msgstr "mencoba untuk menggunakan skalar `%s[\"%.*s\"]' sebagai sebuah array" #: array.c:779 msgid "adump: first argument not an array" msgstr "adump: argumen ketiga bukan sebuah array" #: array.c:818 msgid "asort: second argument not an array" msgstr "asort: argumen kedua bukan sebuah array" #: array.c:819 msgid "asorti: second argument not an array" msgstr "asorti: argumen kedua bukan sebuah array" #: array.c:826 msgid "asort: first argument not an array" msgstr "asort: argumen ketiga bukan sebuah array" #: array.c:827 msgid "asorti: first argument not an array" msgstr "asorti: argumen ketiga bukan sebuah array" #: array.c:834 msgid "asort: cannot use a subarray of first arg for second arg" msgstr "asort: cannot use a subarray of first arg for second arg" #: array.c:835 msgid "asorti: cannot use a subarray of first arg for second arg" msgstr "asorti: cannot use a subarray of first arg for second arg" #: array.c:840 msgid "asort: cannot use a subarray of second arg for first arg" msgstr "asort: cannot use a subarray of second arg for first arg" #: array.c:841 msgid "asorti: cannot use a subarray of second arg for first arg" msgstr "asorti: cannot use a subarray of second arg for first arg" #: array.c:1316 #, c-format msgid "`%s' is invalid as a function name" msgstr "`%s' digunakan dalam aksi" #: array.c:1320 #, c-format msgid "sort comparison function `%s' is not defined" msgstr "fungsi `%s' tidak didefinisikan" #: awkgram.y:225 #, c-format msgid "%s blocks must have an action part" msgstr "%s blok harus memiliki sebuah bagian aksi" #: awkgram.y:228 msgid "each rule must have a pattern or an action part" msgstr "setiap aturan harus memiliki sebuah pola atau sebuah bagian aksi" #: awkgram.y:319 awkgram.y:330 msgid "old awk does not support multiple `BEGIN' or `END' rules" msgstr "awk lama tidak mendukung multiple aturan `BEGIN' atau `END'" #: awkgram.y:367 #, c-format msgid "`%s' is a built-in function, it cannot be redefined" msgstr "`%s' adalah sebuah fungsi bawaan, ini tidak dapat di redefinisi" #: awkgram.y:416 msgid "regexp constant `//' looks like a C++ comment, but is not" msgstr "konstanta regexp `//' tampak seperti sebuah komentar C++, tetapi bukan" #: awkgram.y:420 #, c-format msgid "regexp constant `/%s/' looks like a C comment, but is not" msgstr "konstanta regexp `/%s/' tampak seperti sebuah komentar C, tetapi bukan" #: awkgram.y:512 #, c-format msgid "duplicate case values in switch body: %s" msgstr "duplikasi nilai case dalam tubuh switch: %s" #: awkgram.y:533 msgid "duplicate `default' detected in switch body" msgstr "Duplikasi `default' terdeteksi dalam tubuh switch" #: awkgram.y:793 awkgram.y:3774 msgid "`break' is not allowed outside a loop or switch" msgstr "`break' diluar sebuah loop tidak diijinkan" #: awkgram.y:802 awkgram.y:3766 msgid "`continue' is not allowed outside a loop" msgstr "`continue' diluar sebuah loop tidak diijinkan" #: awkgram.y:812 #, c-format msgid "`next' used in %s action" msgstr "`next' digunakan dalam aksi %s" #: awkgram.y:821 #, c-format msgid "`nextfile' used in %s action" msgstr "`nextfile' digunakan dalam aksi %s" #: awkgram.y:845 msgid "`return' used outside function context" msgstr "`return' digunakan diluar konteks fungsi" #: awkgram.y:919 msgid "plain `print' in BEGIN or END rule should probably be `print \"\"'" msgstr "" "plain `print' dalam aturan BEGIN atau AKHIR seharusnya berupa `print \"\"'" #: awkgram.y:985 awkgram.y:1034 msgid "`delete' is not allowed with SYMTAB" msgstr "`delete' is not allowed with SYMTAB" #: awkgram.y:987 awkgram.y:1036 msgid "`delete' is not allowed with FUNCTAB" msgstr "`delete' is not allowed with FUNCTAB" #: awkgram.y:1021 awkgram.y:1025 msgid "`delete(array)' is a non-portable tawk extension" msgstr "`delete(array)' adalah sebuah ekstensi tidak portabel tawk" #: awkgram.y:1146 msgid "multistage two-way pipelines don't work" msgstr "multi tahap dua jalur pipe lines tidak bekerja" #: awkgram.y:1264 msgid "regular expression on right of assignment" msgstr "ekspresi regular di penempatan kanan" #: awkgram.y:1275 msgid "regular expression on left of `~' or `!~' operator" msgstr "ekspresi regular di kiri dari operator `~' atau `!~'" #: awkgram.y:1291 awkgram.y:1433 msgid "old awk does not support the keyword `in' except after `for'" msgstr "awk lama tidak mendukung kata kunci `in' kecuali setelah `for'" #: awkgram.y:1301 msgid "regular expression on right of comparison" msgstr "ekspresi regular di kanan dari perbandingan" #: awkgram.y:1413 #, fuzzy, c-format msgid "non-redirected `getline' invalid inside `%s' rule" msgstr "`getline' invalid inside `%s' rule" #: awkgram.y:1416 msgid "non-redirected `getline' undefined inside END action" msgstr "tidak terdireksi `getline' tidak terdefinisi didalam aksi END" #: awkgram.y:1435 msgid "old awk does not support multidimensional arrays" msgstr "awk lama tidak mendukung array multi dimensi" #: awkgram.y:1532 msgid "call of `length' without parentheses is not portable" msgstr "panggilan dari `length' tanpa tanda kurung tidak portabel" #: awkgram.y:1598 msgid "indirect function calls are a gawk extension" msgstr "indirect adalah sebuah ekstensi gawk" #: awkgram.y:1611 #, c-format msgid "can not use special variable `%s' for indirect function call" msgstr "tidak dapat menggunakan variabel `%s' sebagai fungsi parameter" #: awkgram.y:1637 #, fuzzy, c-format msgid "attempt to use non-function `%s' in function call" msgstr "mencoba untuk menggunakan fungsi `%s' sebagai sebuah array" #: awkgram.y:1701 msgid "invalid subscript expression" msgstr "ekspresi subscript tidak valid" #: awkgram.y:2047 awkgram.y:2067 gawkapi.c:206 gawkapi.c:223 msg.c:126 msgid "warning: " msgstr "peringatan: " #: awkgram.y:2065 gawkapi.c:192 gawkapi.c:221 msg.c:158 msgid "fatal: " msgstr "fatal: " #: awkgram.y:2116 msgid "unexpected newline or end of string" msgstr "tidak terduga baris baru atau akhir dari string" #: awkgram.y:2397 awkgram.y:2473 awkgram.y:2696 debug.c:523 debug.c:539 #: debug.c:2812 debug.c:5101 #, c-format msgid "can't open source file `%s' for reading (%s)" msgstr "tidak dapat membuka berkas sumber `%s' untuk pembacaan (%s)" #: awkgram.y:2398 awkgram.y:2523 #, c-format msgid "can't open shared library `%s' for reading (%s)" msgstr "tidak dapat membuka berkas sumber `%s' untuk pembacaan (%s)" #: awkgram.y:2400 awkgram.y:2474 awkgram.y:2524 builtin.c:135 debug.c:5252 msgid "reason unknown" msgstr "alasan tidak diketahui" #: awkgram.y:2409 awkgram.y:2433 #, c-format msgid "can't include `%s' and use it as a program file" msgstr "can't include `%s' and use it as a program file" #: awkgram.y:2422 #, c-format msgid "already included source file `%s'" msgstr "tidak dapat membaca berkas sumber `%s'" #: awkgram.y:2423 #, c-format msgid "already loaded shared library `%s'" msgstr "already loaded shared library `%s'" #: awkgram.y:2458 msgid "@include is a gawk extension" msgstr "@include adalah sebuah ekstensi gawk" #: awkgram.y:2464 msgid "empty filename after @include" msgstr "empty filename after @include" #: awkgram.y:2508 msgid "@load is a gawk extension" msgstr "@load adalah sebuah ekstensi gawk" #: awkgram.y:2514 msgid "empty filename after @load" msgstr "empty filename after @load" #: awkgram.y:2648 msgid "empty program text on command line" msgstr "aplikasi teks kosong di baris perintah" #: awkgram.y:2763 #, c-format msgid "can't read sourcefile `%s' (%s)" msgstr "tidak dapat membaca berkas sumber `%s' (%s)" #: awkgram.y:2774 #, c-format msgid "source file `%s' is empty" msgstr "berkas sumber `%s' kosong" #: awkgram.y:2833 #, c-format msgid "PEBKAC error: invalid character '\\%03o' in source code" msgstr "" #: awkgram.y:2964 msgid "source file does not end in newline" msgstr "berkas sumber tidak berakhir dalam baris baru" #: awkgram.y:3081 msgid "unterminated regexp ends with `\\' at end of file" msgstr "tidak terakhiri regexp akhir denga `\\' diakhir dari berkas" #: awkgram.y:3108 #, c-format msgid "%s: %d: tawk regex modifier `/.../%c' doesn't work in gawk" msgstr "%s: %d: tawk regex pemodifikasi `/.../%c' tidak bekerja dalam gawk" #: awkgram.y:3112 #, c-format msgid "tawk regex modifier `/.../%c' doesn't work in gawk" msgstr "tawk regex pemodifikasi `/.../%c' tidak bekerja dalam gawk" #: awkgram.y:3119 msgid "unterminated regexp" msgstr "tidak terselesaikan regexp" #: awkgram.y:3123 msgid "unterminated regexp at end of file" msgstr "tidak terselesaikan di akhir dari berkas" #: awkgram.y:3181 msgid "use of `\\ #...' line continuation is not portable" msgstr "penggunaan dari `\\ #...' kelanjutan baris tidak portabel" #: awkgram.y:3197 msgid "backslash not last character on line" msgstr "backslash bukan karakter terakhir di baris" #: awkgram.y:3235 awkgram.y:3237 #, fuzzy msgid "multidimensional arrays are a gawk extension" msgstr "indirect adalah sebuah ekstensi gawk" #: awkgram.y:3262 msgid "POSIX does not allow operator `**='" msgstr "POSIX tidak mengijinkan operator `**='" #: awkgram.y:3264 msgid "old awk does not support operator `**='" msgstr "awk lama tidak mendukung operator `**='" #: awkgram.y:3273 msgid "POSIX does not allow operator `**'" msgstr "POSIX tidak mengijinkan operator `**'" #: awkgram.y:3275 msgid "old awk does not support operator `**'" msgstr "awk lama tidak mendukung operator `**'" #: awkgram.y:3310 msgid "operator `^=' is not supported in old awk" msgstr "operator `^=' tidak didukung dalam awk lama" #: awkgram.y:3318 msgid "operator `^' is not supported in old awk" msgstr "operator `^' tidak didukung dalam awk lama" #: awkgram.y:3415 awkgram.y:3433 command.y:1187 msgid "unterminated string" msgstr "string tidak terselesaikan" #: awkgram.y:3654 #, c-format msgid "invalid char '%c' in expression" msgstr "karakter '%c' tidak valid dalam ekspresi" #: awkgram.y:3701 #, c-format msgid "`%s' is a gawk extension" msgstr "`%s' adalah sebuah ekstensi gawk" #: awkgram.y:3706 #, c-format msgid "POSIX does not allow `%s'" msgstr "POSIX tidak mengijinkan `%s'" #: awkgram.y:3714 #, c-format msgid "`%s' is not supported in old awk" msgstr "`%s' tidak didukung dalam awk lama" #: awkgram.y:3804 msgid "`goto' considered harmful!\n" msgstr "`goto' dipertimbangkan berbahaya!\n" #: awkgram.y:3873 #, c-format msgid "%d is invalid as number of arguments for %s" msgstr "%d tidak valid sebagai jumlah dari argumen untuk %s" #: awkgram.y:3908 #, c-format msgid "%s: string literal as last arg of substitute has no effect" msgstr "" "%s: literal string sebagai argumen terakhir dari pergantian tidak memiliki " "efek" #: awkgram.y:3913 #, c-format msgid "%s third parameter is not a changeable object" msgstr "%s parameter ketika bukan sebuah objek yang dapat diubah" #: awkgram.y:3996 awkgram.y:3999 msgid "match: third argument is a gawk extension" msgstr "cocok: argumen ketiga adalah sebuah ekstensi gawk" #: awkgram.y:4053 awkgram.y:4056 msgid "close: second argument is a gawk extension" msgstr "tutup: argumen kedua adalah sebuah ekstensi gawk" #: awkgram.y:4068 msgid "use of dcgettext(_\"...\") is incorrect: remove leading underscore" msgstr "" "penggunaan dari dcgettext(_\"...\") adalah tidak benar: hapus garis bawah " "yang mengawali" #: awkgram.y:4083 msgid "use of dcngettext(_\"...\") is incorrect: remove leading underscore" msgstr "" "penggunaan dari dcngettext(_\"...\") adalah tidak benar: hapus garis bawah " "yang mengawali" #: awkgram.y:4102 msgid "index: regexp constant as second argument is not allowed" msgstr "index: diterima argumen kedua bukan string" #: awkgram.y:4155 #, c-format msgid "function `%s': parameter `%s' shadows global variable" msgstr "fungsi `%s': parameter `%s' bayangan variabel global" #: awkgram.y:4214 debug.c:4087 debug.c:4130 debug.c:5250 #, c-format msgid "could not open `%s' for writing (%s)" msgstr "tidak dapat membuka `%s' untuk menulis (%s)" #: awkgram.y:4215 msgid "sending variable list to standard error" msgstr "mengirim profile ke standar error" #: awkgram.y:4223 #, c-format msgid "%s: close failed (%s)" msgstr "%s: tutup gagal (%s)" #: awkgram.y:4248 msgid "shadow_funcs() called twice!" msgstr "shadow_funcs() dipanggil dua kali!" #: awkgram.y:4256 msgid "there were shadowed variables." msgstr "disana tidak ada variabel bayangan." #: awkgram.y:4327 #, c-format msgid "function name `%s' previously defined" msgstr "nama fungsi `%s' sebelumnya telah didefinisikan" #: awkgram.y:4373 #, c-format msgid "function `%s': can't use function name as parameter name" msgstr "" "fungsi `%s': tidak dapat menggunakan nama fungsi sebagai nama parameter" #: awkgram.y:4376 #, c-format msgid "function `%s': can't use special variable `%s' as a function parameter" msgstr "" "fungsi `%s': tidak dapat menggunakan variabel `%s' sebagai fungsi parameter" #: awkgram.y:4384 #, c-format msgid "function `%s': parameter #%d, `%s', duplicates parameter #%d" msgstr "fungsi `%s': parameter #%d, `%s', duplikasi paramter #%d" #: awkgram.y:4471 awkgram.y:4477 #, c-format msgid "function `%s' called but never defined" msgstr "fungsi `%s' dipanggil tetapi tidak pernah didefinisikan" #: awkgram.y:4481 #, c-format msgid "function `%s' defined but never called directly" msgstr "fungsi `%s' didefinisikan tetapi tidak pernah dipanggil" #: awkgram.y:4513 #, c-format msgid "regexp constant for parameter #%d yields boolean value" msgstr "konstanta regexp untuk parameter #%d menghasilkan nilai boolean" #: awkgram.y:4528 #, c-format msgid "" "function `%s' called with space between name and `(',\n" "or used as a variable or an array" msgstr "" "fungsi `%s' dipanggil dengan spasi diantara nama dan `(',\n" "atau gunakan sebagai sebuah variabel atau sebuah array" #: awkgram.y:4734 msgid "division by zero attempted" msgstr "pembagian dengan nol telah dicoba" #: awkgram.y:4743 #, c-format msgid "division by zero attempted in `%%'" msgstr "pembagian dengan nol dicoba dalam `%%'" #: awkgram.y:5064 msgid "" "cannot assign a value to the result of a field post-increment expression" msgstr "" "cannot assign a value to the result of a field post-increment expression" #: awkgram.y:5067 #, c-format msgid "invalid target of assignment (opcode %s)" msgstr "tidak valid sebagai jumlah dari argumen untuk %s" #: builtin.c:133 #, c-format msgid "%s to \"%s\" failed (%s)" msgstr "%s ke \"%s\" gagal (%s)" #: builtin.c:134 msgid "standard output" msgstr "standar keluaran" #: builtin.c:148 msgid "exp: received non-numeric argument" msgstr "exp: diterima argumen bukan-numerik" #: builtin.c:154 #, c-format msgid "exp: argument %g is out of range" msgstr "exp: argumen %g diluar dari jangkauan" #: builtin.c:229 #, c-format msgid "fflush: cannot flush: pipe `%s' opened for reading, not writing" msgstr "" "fflush: tidak dapat flush: pipe `%s' dibuka untuk dibaca, bukan ditulis" #: builtin.c:232 #, c-format msgid "fflush: cannot flush: file `%s' opened for reading, not writing" msgstr "" "fflush: tidak dapat flush: berkas `%s' dibuka untuk dibaca, bukan ditulis" #: builtin.c:241 #, fuzzy, c-format msgid "fflush: cannot flush: two-way pipe `%s' has closed write end" msgstr "" "fflush: tidak dapat flush: pipe `%s' dibuka untuk dibaca, bukan ditulis" #: builtin.c:247 #, c-format msgid "fflush: `%s' is not an open file, pipe or co-process" msgstr "fflush: `%s' bukan sebuah berkas terbuka, pipe atau co-proses" #: builtin.c:354 msgid "index: received non-string first argument" msgstr "indeks: diterima argumen pertama bukan string" #: builtin.c:356 msgid "index: received non-string second argument" msgstr "indeks: diterima argumen kedua bukan string" #: builtin.c:469 mpfr.c:781 msgid "int: received non-numeric argument" msgstr "int: diterima argumen bukan numerik" #: builtin.c:506 msgid "length: received array argument" msgstr "length: diterima argumen bukan-string" #: builtin.c:509 msgid "`length(array)' is a gawk extension" msgstr "`length(array)' adalah sebuah ekstensi gawk" #: builtin.c:528 msgid "length: received non-string argument" msgstr "length: diterima argumen bukan-string" #: builtin.c:557 msgid "log: received non-numeric argument" msgstr "log: diterima argumen bukan numerik" #: builtin.c:560 #, c-format msgid "log: received negative argument %g" msgstr "log: diterima argumen negatif %g" #: builtin.c:758 builtin.c:763 builtin.c:914 msgid "fatal: must use `count$' on all formats or none" msgstr "harus menggunakan `count$' di semua format atau tidak sama sekali" #: builtin.c:833 #, c-format msgid "field width is ignored for `%%' specifier" msgstr "lebar daerah diabaikan untuk penspesifikasi `%%'" #: builtin.c:835 #, c-format msgid "precision is ignored for `%%' specifier" msgstr "ketepatan diabaikan untuk penspesifikasi `%%'" #: builtin.c:837 #, c-format msgid "field width and precision are ignored for `%%' specifier" msgstr "lebar daerah dan presisi diabaikan untuk penspesifikasi `%%'" #: builtin.c:888 msgid "fatal: `$' is not permitted in awk formats" msgstr "`$' tidak diijinkan dalam format awk" #: builtin.c:897 msgid "fatal: arg count with `$' must be > 0" msgstr "arg count dengan `$' harus > 0" #: builtin.c:901 #, c-format msgid "fatal: arg count %ld greater than total number of supplied arguments" msgstr "" "arg count %ld lebih besar dari jumlah total dari argumen yang diberikan" #: builtin.c:905 msgid "fatal: `$' not permitted after period in format" msgstr "`$' tidak diijinkan setelah periode dalam format" #: builtin.c:924 msgid "fatal: no `$' supplied for positional field width or precision" msgstr "tidak ada `$' yang diberikan untuk posisional field width atau presisi" #: builtin.c:994 msgid "`l' is meaningless in awk formats; ignored" msgstr "`l' tidak berarti dalam format awk; diabaikan" #: builtin.c:998 msgid "fatal: `l' is not permitted in POSIX awk formats" msgstr "`l' tidak diijinkan dalam format POSIX awk" #: builtin.c:1011 msgid "`L' is meaningless in awk formats; ignored" msgstr "`L' tidak berarti dalam format awk; diabaikan" #: builtin.c:1015 msgid "fatal: `L' is not permitted in POSIX awk formats" msgstr "`L' tidak diijinkan dalam format awk POSIX" #: builtin.c:1028 msgid "`h' is meaningless in awk formats; ignored" msgstr "`h' tidak berarti dalam format awk; diabaikan" #: builtin.c:1032 msgid "fatal: `h' is not permitted in POSIX awk formats" msgstr "`h' tidak diijinkan dalam format awk POSIX" #: builtin.c:1058 #, fuzzy, c-format msgid "[s]printf: value %g is too big for %%c format" msgstr "[s]printf: nilai %g diluar dari jangkauan untuk format `%%%c'" #: builtin.c:1071 #, fuzzy, c-format msgid "[s]printf: value %g is not a valid wide character" msgstr "[s]printf: nilai %g diluar dari jangkauan untuk format `%%%c'" #: builtin.c:1457 #, c-format msgid "[s]printf: value %g is out of range for `%%%c' format" msgstr "[s]printf: nilai %g diluar dari jangkauan untuk format `%%%c'" #: builtin.c:1555 #, c-format msgid "ignoring unknown format specifier character `%c': no argument converted" msgstr "" "mengabaikan format tidak dikenal karakter penspesifikasi `%c': tidak ada " "argumen yang diubah" #: builtin.c:1560 msgid "fatal: not enough arguments to satisfy format string" msgstr "tidak cukup argumen untuk memuaskan format string" #: builtin.c:1562 msgid "^ ran out for this one" msgstr "^ kehabisan untuk yang ini" #: builtin.c:1569 msgid "[s]printf: format specifier does not have control letter" msgstr "[s]printf: penspesifikasi format tidak memiliki pengontrol huruf" #: builtin.c:1572 msgid "too many arguments supplied for format string" msgstr "terlalu banyak argumen diberikan untuk format string" #: builtin.c:1631 msgid "sprintf: no arguments" msgstr "sprintf: tidak ada argumen" #: builtin.c:1654 builtin.c:1665 msgid "printf: no arguments" msgstr "printf: tidak ada argumen" #: builtin.c:1676 msgid "printf: attempt to write to closed write end of two-way pipe" msgstr "" #: builtin.c:1713 msgid "sqrt: received non-numeric argument" msgstr "sqrt: diterima argumen bukan numerik" #: builtin.c:1717 #, c-format msgid "sqrt: called with negative argument %g" msgstr "sqrt: dipanggil dengan argumen %g negatif" #: builtin.c:1748 #, c-format msgid "substr: length %g is not >= 1" msgstr "substr: panjang %g tidak >= 1" #: builtin.c:1750 #, c-format msgid "substr: length %g is not >= 0" msgstr "substr: panjang %g tidak >= 0" #: builtin.c:1764 #, c-format msgid "substr: non-integer length %g will be truncated" msgstr "substr: panjang bukan integer %g akan dipotong" #: builtin.c:1769 #, c-format msgid "substr: length %g too big for string indexing, truncating to %g" msgstr "" "substr: panjang %g terlalu besar untuk pengindeksan string, dipotong ke %g" #: builtin.c:1781 #, c-format msgid "substr: start index %g is invalid, using 1" msgstr "substr: awal indeks %g tidak valid, menggunakan 1" #: builtin.c:1786 #, c-format msgid "substr: non-integer start index %g will be truncated" msgstr "substr: awal indeks %g bukan integer akan dipotong" #: builtin.c:1809 msgid "substr: source string is zero length" msgstr "substr: sumber string memiliki panjang nol" #: builtin.c:1823 #, c-format msgid "substr: start index %g is past end of string" msgstr "substr: awal indeks %g melewati akhir dari string" #: builtin.c:1831 #, c-format msgid "" "substr: length %g at start index %g exceeds length of first argument (%lu)" msgstr "" "substr: panjang %g di awal indeks %g melewati panjang dari argumen pertama " "(%lu)" #: builtin.c:1903 msgid "strftime: format value in PROCINFO[\"strftime\"] has numeric type" msgstr "strftime: format value in PROCINFO[\"strftime\"] has numeric type" #: builtin.c:1926 msgid "strftime: received non-numeric second argument" msgstr "strftime: diterima argumen kedua bukan numerik" #: builtin.c:1936 msgid "strftime: second argument less than 0 or too big for time_t" msgstr "strftime: second argument less than 0 or too big for time_t" #: builtin.c:1943 #, fuzzy msgid "strftime: second argument out of range for time_t" msgstr "strftime: second argument less than 0 or too big for time_t" #: builtin.c:1952 msgid "strftime: received non-string first argument" msgstr "strftime: diterima argumen pertama bukan string" #: builtin.c:1959 msgid "strftime: received empty format string" msgstr "strftime: diterima format string kosong" #: builtin.c:2028 msgid "mktime: received non-string argument" msgstr "mktime: diterima argumen bukan string" #: builtin.c:2045 msgid "mktime: at least one of the values is out of the default range" msgstr "mktime: at least one of the values is out of the default range" #: builtin.c:2081 msgid "'system' function not allowed in sandbox mode" msgstr "'system' function not allowed in sandbox mode" #: builtin.c:2086 msgid "system: received non-string argument" msgstr "system: diterima argumen bukan string" #: builtin.c:2165 builtin.c:2230 msgid "print: attempt to write to closed write end of two-way pipe" msgstr "" #: builtin.c:2248 #, c-format msgid "reference to uninitialized field `$%d'" msgstr "referensi ke field tidak terinisialisasi `$%d'" #: builtin.c:2333 msgid "tolower: received non-string argument" msgstr "tolower: diterima argumen bukan string" #: builtin.c:2364 msgid "toupper: received non-string argument" msgstr "toupper: diterima argumen bukan string" #: builtin.c:2397 mpfr.c:681 msgid "atan2: received non-numeric first argument" msgstr "atan2: diterima argumen pertama bukan numerik" #: builtin.c:2399 mpfr.c:683 msgid "atan2: received non-numeric second argument" msgstr "atan2: diterima argumen kedua bukan numerik" #: builtin.c:2418 msgid "sin: received non-numeric argument" msgstr "sin: diterima argumen bukan numerik" #: builtin.c:2434 msgid "cos: received non-numeric argument" msgstr "cos: diterima argumen bukan numerik" #: builtin.c:2487 mpfr.c:1180 msgid "srand: received non-numeric argument" msgstr "srand: diterima argumen bukan numerik" #: builtin.c:2518 msgid "match: third argument is not an array" msgstr "match: argumen ketiga bukan sebuah array" #: builtin.c:2779 #, fuzzy, c-format msgid "gensub: third argument `%.*s' treated as 1" msgstr "gensub: argumen ketiga dari 0 diperlakukan sebagai 1" #: builtin.c:2794 #, fuzzy, c-format msgid "gensub: third argument %g treated as 1" msgstr "gensub: argumen ketiga dari 0 diperlakukan sebagai 1" #: builtin.c:3096 #, fuzzy, c-format msgid "%s: can be called indirectly only with two arguments" msgstr "and: dipanggil dengan argumen negatif" #: builtin.c:3186 #, fuzzy, c-format msgid "indirect call to %s requires at least two arguments" msgstr "and: dipanggil dengan argumen negatif" #: builtin.c:3238 msgid "lshift: received non-numeric first argument" msgstr "lshift: diterima argumen pertama bukan numerik" #: builtin.c:3240 msgid "lshift: received non-numeric second argument" msgstr "lshift: diterima argumen kedua bukan numerik" #: builtin.c:3246 #, c-format msgid "lshift(%f, %f): negative values will give strange results" msgstr "lshift(%f, %f): nilai negatif akan memberikan hasil aneh" #: builtin.c:3248 #, c-format msgid "lshift(%f, %f): fractional values will be truncated" msgstr "lshift(%f, %f): nilai pecahan akan dipotong" #: builtin.c:3250 #, c-format msgid "lshift(%f, %f): too large shift value will give strange results" msgstr "lshift(%f, %f): nilai shift terlalu besar akan memberikan hasil aneh" #: builtin.c:3275 msgid "rshift: received non-numeric first argument" msgstr "rshift: diterima argumen pertama bukan numerik" #: builtin.c:3277 msgid "rshift: received non-numeric second argument" msgstr "rshift: diterima argumen kedua bukan-numerik" #: builtin.c:3283 #, c-format msgid "rshift(%f, %f): negative values will give strange results" msgstr "rshift(%f. %f): nilai negatif akan memberikan hasil aneh" #: builtin.c:3285 #, c-format msgid "rshift(%f, %f): fractional values will be truncated" msgstr "rshift(%f, %f): nilai pecahan akan dipotong" #: builtin.c:3287 #, c-format msgid "rshift(%f, %f): too large shift value will give strange results" msgstr "rshift(%f, %f): nilai shift terlalu besar akan memberikan hasil aneh" #: builtin.c:3312 mpfr.c:992 msgid "and: called with less than two arguments" msgstr "and: dipanggil dengan argumen negatif" #: builtin.c:3317 #, c-format msgid "and: argument %d is non-numeric" msgstr "and: argumen %d diluar dari jangkauan" #: builtin.c:3321 #, c-format msgid "and: argument %d negative value %g will give strange results" msgstr "and: nilai %d negatif akan memberikan %g hasil aneh" #: builtin.c:3344 mpfr.c:1024 msgid "or: called with less than two arguments" msgstr "or: dipanggil dengan argumen negatif" #: builtin.c:3349 #, c-format msgid "or: argument %d is non-numeric" msgstr "or: argumen %d diluar dari jangkauan" #: builtin.c:3353 #, c-format msgid "or: argument %d negative value %g will give strange results" msgstr "or: nilai %d negatif akan memberikan %g hasil aneh" #: builtin.c:3375 mpfr.c:1055 msgid "xor: called with less than two arguments" msgstr "xor: dipanggil dengan argumen negatif" #: builtin.c:3381 #, c-format msgid "xor: argument %d is non-numeric" msgstr "xor: argumen %d diluar dari jangkauan" #: builtin.c:3385 #, c-format msgid "xor: argument %d negative value %g will give strange results" msgstr "xor: nilai %d negatif akan memberikan %g hasil aneh" #: builtin.c:3410 mpfr.c:811 msgid "compl: received non-numeric argument" msgstr "compl: diterima argumen bukan numerik" #: builtin.c:3416 #, c-format msgid "compl(%f): negative value will give strange results" msgstr "compl(%f): nilai negatif akan memberikan hasil aneh" #: builtin.c:3418 #, c-format msgid "compl(%f): fractional value will be truncated" msgstr "compl(%f): nilai pecahan akan dipotong" #: builtin.c:3588 #, c-format msgid "dcgettext: `%s' is not a valid locale category" msgstr "dcgettext: `%s' bukan sebuah kategori lokal yang valid" #: command.y:226 #, c-format msgid "Type (g)awk statement(s). End with the command \"end\"\n" msgstr "Type (g)awk statement(s). End with the command \"end\"\n" #: command.y:290 #, c-format msgid "invalid frame number: %d" msgstr "Akhir jangkauan tidak valid: %d" #: command.y:296 #, c-format msgid "info: invalid option - \"%s\"" msgstr "info: pilihan tidak valid - \"%s\"" #: command.y:322 #, c-format msgid "source \"%s\": already sourced." msgstr "source \"%s\": already sourced." #: command.y:327 #, c-format msgid "save \"%s\": command not permitted." msgstr "save \"%s\": command not permitted." #: command.y:340 msgid "Can't use command `commands' for breakpoint/watchpoint commands" msgstr "Can't use command `commands' for breakpoint/watchpoint commands" #: command.y:342 msgid "no breakpoint/watchpoint has been set yet" msgstr "no breakpoint/watchpoint has been set yet" #: command.y:344 msgid "invalid breakpoint/watchpoint number" msgstr "invalid breakpoint/watchpoint number" #: command.y:349 #, c-format msgid "Type commands for when %s %d is hit, one per line.\n" msgstr "Type commands for when %s %d is hit, one per line.\n" #: command.y:351 #, c-format msgid "End with the command \"end\"\n" msgstr "End with the command \"end\"\n" #: command.y:358 msgid "`end' valid only in command `commands' or `eval'" msgstr "`end' valid only in command `commands' or `eval'" #: command.y:368 msgid "`silent' valid only in command `commands'" msgstr "`silent' valid only in command `commands'" #: command.y:374 #, c-format msgid "trace: invalid option - \"%s\"" msgstr "trace: pilihan tidak valid - \"%s\"" #: command.y:388 msgid "condition: invalid breakpoint/watchpoint number" msgstr "condition: invalid breakpoint/watchpoint number" #: command.y:450 msgid "argument not a string" msgstr "tidak cukup argumen untuk memuaskan format string" #: command.y:460 command.y:465 #, c-format msgid "option: invalid parameter - \"%s\"" msgstr "option: invalid parameter - \"%s\"" #: command.y:475 #, c-format msgid "no such function - \"%s\"" msgstr "no such function - \"%s\"" #: command.y:532 #, c-format msgid "enable: invalid option - \"%s\"" msgstr "enable: pilihan tidak valid - \"%s\"" #: command.y:598 #, c-format msgid "invalid range specification: %d - %d" msgstr "Akhir jangkauan tidak valid: %d - %d" #: command.y:660 msgid "non-numeric value for field number" msgstr "non-numeric value for field number" #: command.y:681 command.y:688 msgid "non-numeric value found, numeric expected" msgstr "non-numeric value found, numeric expected" #: command.y:713 command.y:719 msgid "non-zero integer value" msgstr "non-zero integer value" #: command.y:818 msgid "" "backtrace [N] - print trace of all or N innermost (outermost if N < 0) " "frames." msgstr "" "backtrace [N] - print trace of all or N innermost (outermost if N < 0) " "frames." #: command.y:820 msgid "" "break [[filename:]N|function] - set breakpoint at the specified location." msgstr "" "break [[filename:]N|function] - set breakpoint at the specified location." #: command.y:822 msgid "clear [[filename:]N|function] - delete breakpoints previously set." msgstr "clear [[filename:]N|function] - delete breakpoints previously set." #: command.y:824 msgid "" "commands [num] - starts a list of commands to be executed at a " "breakpoint(watchpoint) hit." msgstr "" "commands [num] - starts a list of commands to be executed at a " "breakpoint(watchpoint) hit." #: command.y:826 msgid "condition num [expr] - set or clear breakpoint or watchpoint condition." msgstr "" "condition num [expr] - set or clear breakpoint or watchpoint condition." #: command.y:828 msgid "continue [COUNT] - continue program being debugged." msgstr "continue [COUNT] - continue program being debugged." #: command.y:830 msgid "delete [breakpoints] [range] - delete specified breakpoints." msgstr "delete [breakpoints] [range] - delete specified breakpoints." #: command.y:832 msgid "disable [breakpoints] [range] - disable specified breakpoints." msgstr "disable [breakpoints] [range] - disable specified breakpoints." #: command.y:834 msgid "display [var] - print value of variable each time the program stops." msgstr "display [var] - print value of variable each time the program stops." #: command.y:836 msgid "down [N] - move N frames down the stack." msgstr "down [N] - move N frames down the stack." #: command.y:838 msgid "dump [filename] - dump instructions to file or stdout." msgstr "dump [filename] - dump instructions to file or stdout." #: command.y:840 msgid "enable [once|del] [breakpoints] [range] - enable specified breakpoints." msgstr "" "enable [once|del] [breakpoints] [range] - enable specified breakpoints." #: command.y:842 msgid "end - end a list of commands or awk statements." msgstr "end - end a list of commands or awk statements." #: command.y:844 msgid "eval stmt|[p1, p2, ...] - evaluate awk statement(s)." msgstr "eval stmt|[p1, p2, ...] - evaluate awk statement(s)." #: command.y:846 #, fuzzy msgid "exit - (same as quit) exit debugger." msgstr "quit - exit debugger." #: command.y:848 msgid "finish - execute until selected stack frame returns." msgstr "finish - execute until selected stack frame returns." #: command.y:850 msgid "frame [N] - select and print stack frame number N." msgstr "frame [N] - select and print stack frame number N." #: command.y:852 msgid "help [command] - print list of commands or explanation of command." msgstr "help [command] - print list of commands or explanation of command." #: command.y:854 msgid "ignore N COUNT - set ignore-count of breakpoint number N to COUNT." msgstr "ignore N COUNT - set ignore-count of breakpoint number N to COUNT." #: command.y:856 msgid "" "info topic - source|sources|variables|functions|break|frame|args|locals|" "display|watch." msgstr "" "info topic - source|sources|variables|functions|break|frame|args|locals|" "display|watch." #: command.y:858 msgid "list [-|+|[filename:]lineno|function|range] - list specified line(s)." msgstr "list [-|+|[filename:]lineno|function|range] - list specified line(s)." #: command.y:860 msgid "next [COUNT] - step program, proceeding through subroutine calls." msgstr "next [COUNT] - step program, proceeding through subroutine calls." #: command.y:862 msgid "" "nexti [COUNT] - step one instruction, but proceed through subroutine calls." msgstr "" "nexti [COUNT] - stepp one instruction, but proceed through subroutine calls." #: command.y:864 msgid "option [name[=value]] - set or display debugger option(s)." msgstr "option [name[=value]] - set or display debugger option(s)." #: command.y:866 msgid "print var [var] - print value of a variable or array." msgstr "print var [var] - print value of a variable or array." #: command.y:868 msgid "printf format, [arg], ... - formatted output." msgstr "printf format, [arg], ... - formatted output." #: command.y:870 msgid "quit - exit debugger." msgstr "quit - exit debugger." #: command.y:872 msgid "return [value] - make selected stack frame return to its caller." msgstr "return [value] - make selected stack frame return to its caller." #: command.y:874 msgid "run - start or restart executing program." msgstr "run - start or restart executing program." #: command.y:877 msgid "save filename - save commands from the session to file." msgstr "save filename - save commands from the session to file." #: command.y:880 msgid "set var = value - assign value to a scalar variable." msgstr "set var = value - assign value to a scalar variable." #: command.y:882 msgid "" "silent - suspends usual message when stopped at a breakpoint/watchpoint." msgstr "" "silent - suspends usual message when stopped at a breakpoint/watchpoint." #: command.y:884 msgid "source file - execute commands from file." msgstr "source file - execute commads from file." #: command.y:886 msgid "step [COUNT] - step program until it reaches a different source line." msgstr "step [COUNT] - step program until it reaches a different source line." #: command.y:888 msgid "stepi [COUNT] - step one instruction exactly." msgstr "stepi [COUNT] - step one instruction exactly." #: command.y:890 msgid "tbreak [[filename:]N|function] - set a temporary breakpoint." msgstr "tbreak [[filename:]N|function] - set a temporary breakpoint." #: command.y:892 msgid "trace on|off - print instruction before executing." msgstr "trace on|off - print instruction before executing." #: command.y:894 msgid "undisplay [N] - remove variable(s) from automatic display list." msgstr "undisplay [N] - remove variable(s) from automatic display list." #: command.y:896 msgid "" "until [[filename:]N|function] - execute until program reaches a different " "line or line N within current frame." msgstr "" "until [[filename:]N|function] - execute until program reaches a different " "line or line N within current frame." #: command.y:898 msgid "unwatch [N] - remove variable(s) from watch list." msgstr "unwatch [N] - remove variable(s) from watch list." #: command.y:900 msgid "up [N] - move N frames up the stack." msgstr "up [N] - move N frames up the stack." #: command.y:902 msgid "watch var - set a watchpoint for a variable." msgstr "watch var - set a watchpoint for a variable." #: command.y:904 #, fuzzy msgid "" "where [N] - (same as backtrace) print trace of all or N innermost (outermost " "if N < 0) frames." msgstr "" "backtrace [N] - print trace of all or N innermost (outermost if N < 0) " "frames." #: command.y:1016 debug.c:401 msg.c:135 #, c-format msgid "error: " msgstr "error: " #: command.y:1060 #, c-format msgid "can't read command (%s)\n" msgstr "tidak dapat redirek dari (%s)\n" #: command.y:1074 #, c-format msgid "can't read command (%s)" msgstr "tidak dapat redirek dari (%s)" #: command.y:1125 msgid "invalid character in command" msgstr "nama kelas karakter tidak valid" #: command.y:1161 #, c-format msgid "unknown command - \"%.*s\", try help" msgstr "unknown command - \"%.*s\", try help" #: command.y:1231 #, c-format msgid "%s" msgstr "%s" #: command.y:1293 msgid "invalid character" msgstr "Karakter kolasi tidak valid" #: command.y:1497 #, c-format msgid "undefined command: %s\n" msgstr "undefined command: %s\n" #: debug.c:252 msgid "set or show the number of lines to keep in history file." msgstr "set or show the number of lines to keep in history file." #: debug.c:254 msgid "set or show the list command window size." msgstr "set or show the list command window size." #: debug.c:256 msgid "set or show gawk output file." msgstr "set or show gawk output file." #: debug.c:258 msgid "set or show debugger prompt." msgstr "set or show debugger prompt." #: debug.c:260 msgid "(un)set or show saving of command history (value=on|off)." msgstr "(un)set or show saving of command history (value=on|off)." #: debug.c:262 msgid "(un)set or show saving of options (value=on|off)." msgstr "(un)set or show saving of options (value=on|off)." #: debug.c:264 msgid "(un)set or show instruction tracing (value=on|off)." msgstr "(un)set or show instruction tracing (value=on|off)." #: debug.c:345 msgid "program not running." msgstr "program not running." #: debug.c:448 debug.c:606 #, c-format msgid "can't read source file `%s' (%s)" msgstr "tidak dapat membaca berkas sumber `%s' (%s)" #: debug.c:453 #, c-format msgid "source file `%s' is empty.\n" msgstr "berkas sumber `%s' kosong.\n" #: debug.c:480 msgid "no current source file." msgstr "no current source file." #: debug.c:505 #, c-format msgid "cannot find source file named `%s' (%s)" msgstr "tidak dapat membaca berkas sumber `%s' (%s)" #: debug.c:529 #, c-format msgid "WARNING: source file `%s' modified since program compilation.\n" msgstr "WARNING: source file `%s' modified since program compilation.\n" #: debug.c:551 #, c-format msgid "line number %d out of range; `%s' has %d lines" msgstr "line number %d out of range; `%s' has %d lines" #: debug.c:611 #, c-format msgid "unexpected eof while reading file `%s', line %d" msgstr "tidak terduga baris baru atau akhir dari string `%s', %d" #: debug.c:620 #, c-format msgid "source file `%s' modified since start of program execution" msgstr "source file `%s' modified since start of program execution" #: debug.c:732 #, c-format msgid "Current source file: %s\n" msgstr "Current source file: %s\n" #: debug.c:733 #, c-format msgid "Number of lines: %d\n" msgstr "Number of lines: %d\n" #: debug.c:740 #, c-format msgid "Source file (lines): %s (%d)\n" msgstr "Source file (lines): %s (%d)\n" #: debug.c:754 msgid "" "Number Disp Enabled Location\n" "\n" msgstr "" "Number Disp Enabled Location\n" "\n" #: debug.c:765 #, c-format msgid "\tno of hits = %ld\n" msgstr "\tno of hits = %ld\n" #: debug.c:767 #, c-format msgid "\tignore next %ld hit(s)\n" msgstr "\tignore next %ld hit(s)\n" #: debug.c:769 debug.c:909 #, c-format msgid "\tstop condition: %s\n" msgstr "\tstop condition: %s\n" #: debug.c:771 debug.c:911 msgid "\tcommands:\n" msgstr "\tcommands:\n" #: debug.c:793 #, c-format msgid "Current frame: " msgstr "Current frame: " #: debug.c:796 #, c-format msgid "Called by frame: " msgstr "Called by frame: " #: debug.c:800 #, c-format msgid "Caller of frame: " msgstr "Caller of frame: " #: debug.c:818 #, c-format msgid "None in main().\n" msgstr "None in main().\n" #: debug.c:848 msgid "No arguments.\n" msgstr "tidak ada argumen\n" #: debug.c:849 msgid "No locals.\n" msgstr "No locals.\n" #: debug.c:857 msgid "" "All defined variables:\n" "\n" msgstr "" "All defined variables:\n" "\n" #: debug.c:867 msgid "" "All defined functions:\n" "\n" msgstr "" "All defined functions:\n" "\n" #: debug.c:886 msgid "" "Auto-display variables:\n" "\n" msgstr "" "Auto-display variables:\n" "\n" #: debug.c:889 msgid "" "Watch variables:\n" "\n" msgstr "" "Watch variables:\n" "\n" #: debug.c:1029 #, c-format msgid "no symbol `%s' in current context\n" msgstr "no symbol `%s' in current context\n" #: debug.c:1041 debug.c:1427 #, c-format msgid "`%s' is not an array\n" msgstr "`%s' bukan sebuah nama variabel legal\n" #: debug.c:1055 #, c-format msgid "$%ld = uninitialized field\n" msgstr "referensi ke field tidak terinisialisasi $%ld\n" #: debug.c:1076 #, c-format msgid "array `%s' is empty\n" msgstr "berkas data `%s' kosong\n" #: debug.c:1119 debug.c:1171 #, c-format msgid "[\"%s\"] not in array `%s'\n" msgstr "indeks [\"%s\"] tidak dalam array `%s'\n" #: debug.c:1175 #, c-format msgid "`%s[\"%s\"]' is not an array\n" msgstr "`%s[\"%s\"]' is no an array\n" #: debug.c:1236 debug.c:5010 #, c-format msgid "`%s' is not a scalar variable" msgstr "`%s' bukan sebuah nama variabel legal" #: debug.c:1258 debug.c:5040 #, c-format msgid "attempt to use array `%s[\"%s\"]' in a scalar context" msgstr "mencoba menggunakan array `%s[\"%s\"]' dalam sebuah konteks skalar" #: debug.c:1280 debug.c:5051 #, c-format msgid "attempt to use scalar `%s[\"%s\"]' as array" msgstr "mencoba untuk menggunakan skalar `%s[\"%s\"]' sebagai sebuah array" #: debug.c:1423 #, c-format msgid "`%s' is a function" msgstr "`%s' digunakan dalam aksi" #: debug.c:1465 #, c-format msgid "watchpoint %d is unconditional\n" msgstr "watchpoint %d is unconditional\n" #: debug.c:1499 #, c-format msgid "No display item numbered %ld" msgstr "No display item numbered %ld" #: debug.c:1502 #, c-format msgid "No watch item numbered %ld" msgstr "No watch item numbered %ld" #: debug.c:1528 #, c-format msgid "%d: [\"%s\"] not in array `%s'\n" msgstr "%d: indeks [\"%s\"] tidak dalam array `%s'\n" #: debug.c:1767 msgid "attempt to use scalar value as array" msgstr "mencoba untuk menggunakan skalar sebagai sebuah array" #: debug.c:1856 #, c-format msgid "Watchpoint %d deleted because parameter is out of scope.\n" msgstr "Watchpoint %d deleted because parameter is out of scope.\n" #: debug.c:1867 #, c-format msgid "Display %d deleted because parameter is out of scope.\n" msgstr "Display %d deleted because parameter is out of scope.\n" #: debug.c:1900 #, c-format msgid " in file `%s', line %d\n" msgstr " in file `%s', line %d\n" #: debug.c:1921 #, c-format msgid " at `%s':%d" msgstr " at `%s':%d" #: debug.c:1937 debug.c:2000 #, c-format msgid "#%ld\tin " msgstr "#%ld\tin" #: debug.c:1974 #, c-format msgid "More stack frames follow ...\n" msgstr "More stack frames follow ...\n" #: debug.c:2017 msgid "invalid frame number" msgstr "Akhir jangkauan tidak valid" #: debug.c:2200 #, c-format msgid "Note: breakpoint %d (enabled, ignore next %ld hits), also set at %s:%d" msgstr "Note: breakpoint %d (enabled, ignore next %ld hits), alse set at %s:%d" #: debug.c:2207 #, c-format msgid "Note: breakpoint %d (enabled), also set at %s:%d" msgstr "Note: breakpoint %d (enabled), also set at %s:%d" #: debug.c:2214 #, c-format msgid "Note: breakpoint %d (disabled, ignore next %ld hits), also set at %s:%d" msgstr "" "Note: breakpoint %d (disabled, ignore next %ld hits), also set at %s:%d" #: debug.c:2221 #, c-format msgid "Note: breakpoint %d (disabled), also set at %s:%d" msgstr "Note: breakpoint %d (disabled), also set at %s:%d" #: debug.c:2238 #, c-format msgid "Breakpoint %d set at file `%s', line %d\n" msgstr "Breakpoint %d set at file `%s', line %d\n" #: debug.c:2340 #, c-format msgid "Can't set breakpoint in file `%s'\n" msgstr "Can't set breakpoint in file `%s'\n" #: debug.c:2369 debug.c:2492 debug.c:3350 #, c-format msgid "line number %d in file `%s' out of range" msgstr "argumen %d diluar dari jangkauan `%s'" #: debug.c:2373 #, c-format msgid "Can't find rule!!!\n" msgstr "Can't find rule!!!\n" #: debug.c:2375 #, c-format msgid "Can't set breakpoint at `%s':%d\n" msgstr "Can't set breakpoint at `%s':%d\n" #: debug.c:2387 #, c-format msgid "Can't set breakpoint in function `%s'\n" msgstr "Can't set breakpoint in function `%s'\n" #: debug.c:2403 #, c-format msgid "breakpoint %d set at file `%s', line %d is unconditional\n" msgstr "breakpoint %d set at file `%s', line %d is unconditional\n" #: debug.c:2508 debug.c:2530 #, c-format msgid "Deleted breakpoint %d" msgstr "Deleted breakpoint %d" #: debug.c:2514 #, c-format msgid "No breakpoint(s) at entry to function `%s'\n" msgstr "No breakpoint(s) at entry to function `%s'\n" #: debug.c:2541 #, c-format msgid "No breakpoint at file `%s', line #%d\n" msgstr "error membaca berkas masukan `%s': %d\n" #: debug.c:2596 debug.c:2637 debug.c:2657 debug.c:2700 msgid "invalid breakpoint number" msgstr "invalid breakpoint number" #: debug.c:2612 msgid "Delete all breakpoints? (y or n) " msgstr "Delete all breakpoints? (y or n) " #: debug.c:2613 debug.c:2923 debug.c:2976 msgid "y" msgstr "y" #: debug.c:2662 #, c-format msgid "Will ignore next %ld crossing(s) of breakpoint %d.\n" msgstr "Will ignore next %ld crossing(s) of breakpoint %d.\n" #: debug.c:2666 #, c-format msgid "Will stop next time breakpoint %d is reached.\n" msgstr "Will stop next time breakpoint %d is reached.\n" #: debug.c:2783 #, c-format msgid "Can only debug programs provided with the `-f' option.\n" msgstr "Can only debug programs provided with the `-f' option.\n" #: debug.c:2908 #, c-format msgid "Failed to restart debugger" msgstr "Failed to restart debugger" #: debug.c:2922 msgid "Program already running. Restart from beginning (y/n)? " msgstr "Program already running. Restart from beginning (y/n)? " #: debug.c:2926 #, c-format msgid "Program not restarted\n" msgstr "Program not restarted\n" #: debug.c:2936 #, c-format msgid "error: cannot restart, operation not allowed\n" msgstr "error: cannot restart, operation not allowed\n" #: debug.c:2942 #, c-format msgid "error (%s): cannot restart, ignoring rest of the commands\n" msgstr "error (%s): cannot restart, ignoring rest of the commands\n" #: debug.c:2950 #, c-format msgid "Starting program: \n" msgstr "Starting program: \n" #: debug.c:2959 #, c-format msgid "Program exited %s with exit value: %d\n" msgstr "Program exited %s with exit value: %d\n" #: debug.c:2975 msgid "The program is running. Exit anyway (y/n)? " msgstr "The program is running. Exit anyway (y/n)? " #: debug.c:3010 #, c-format msgid "Not stopped at any breakpoint; argument ignored.\n" msgstr "Not stopped at any breakpoint; argument ignored.\n" #: debug.c:3015 #, c-format msgid "invalid breakpoint number %d." msgstr "invalid breakpoint number %d." #: debug.c:3020 #, c-format msgid "Will ignore next %ld crossings of breakpoint %d.\n" msgstr "Will ignore next %ld crossings of breakpoint %d.\n" #: debug.c:3207 #, c-format msgid "'finish' not meaningful in the outermost frame main()\n" msgstr "'finish' not meaningful in the outermost frame main()\n" #: debug.c:3212 #, c-format msgid "Run till return from " msgstr "Run till return from" #: debug.c:3255 #, c-format msgid "'return' not meaningful in the outermost frame main()\n" msgstr "'return' not meaningful in the outermost frame main()\n" #: debug.c:3369 #, c-format msgid "Can't find specified location in function `%s'\n" msgstr "Can't find specified location in function `%s'\n" #: debug.c:3377 #, c-format msgid "invalid source line %d in file `%s'" msgstr "invalid source line %d in file `%s'" #: debug.c:3392 #, c-format msgid "Can't find specified location %d in file `%s'\n" msgstr "Can't find specified location %d in file `%s'\n" #: debug.c:3424 #, c-format msgid "element not in array\n" msgstr "tidak dalam array\n" #: debug.c:3424 #, c-format msgid "untyped variable\n" msgstr "untyped variable\n" #: debug.c:3466 #, c-format msgid "Stopping in %s ...\n" msgstr "Stopping in %s ...\n" #: debug.c:3543 #, c-format msgid "'finish' not meaningful with non-local jump '%s'\n" msgstr "'finish' not meaningful with non-local jump '%s'\n" #: debug.c:3550 #, c-format msgid "'until' not meaningful with non-local jump '%s'\n" msgstr "'until' not meaningful with non-local jump '%s'\n" #: debug.c:4231 msgid "\t------[Enter] to continue or q [Enter] to quit------" msgstr "\t------[Enter] to continue or q [Enter] to quit------" #: debug.c:4232 msgid "q" msgstr "q" #: debug.c:5047 #, c-format msgid "[\"%s\"] not in array `%s'" msgstr "[\"%s\"] tidak dalam array `%s'" #: debug.c:5253 #, c-format msgid "sending output to stdout\n" msgstr "sending output to stdout\n" #: debug.c:5293 msgid "invalid number" msgstr "invalid number" #: debug.c:5427 #, c-format msgid "`%s' not allowed in current context; statement ignored" msgstr "`%s' not allowed in current context; statement ignored" #: debug.c:5435 msgid "`return' not allowed in current context; statement ignored" msgstr "`return' not allowed in current context; statement ignored" #: debug.c:5650 #, c-format msgid "No symbol `%s' in current context" msgstr "No symbol `%s' in current context" #: dfa.c:1090 dfa.c:1093 dfa.c:1112 dfa.c:1122 dfa.c:1135 dfa.c:1163 dfa.c:1172 #: dfa.c:1175 dfa.c:1180 dfa.c:1202 dfa.c:1205 msgid "unbalanced [" msgstr "unbalanced [" #: dfa.c:1148 msgid "invalid character class" msgstr "nama kelas karakter tidak valid" #: dfa.c:1271 msgid "character class syntax is [[:space:]], not [:space:]" msgstr "character class syntax is [[:space:]], not [:space:]" #: dfa.c:1332 msgid "unfinished \\ escape" msgstr "unfinished \\ escape" #: dfa.c:1499 #, fuzzy msgid "invalid content of \\{\\}" msgstr "Isi dari \\{\\} tidak valid" #: dfa.c:1502 #, fuzzy msgid "regular expression too big" msgstr "Ekspresi regular terlalu besar" #: dfa.c:1916 msgid "unbalanced (" msgstr "unbalanced (" #: dfa.c:2044 msgid "no syntax specified" msgstr "no syntax specified" #: dfa.c:2052 msgid "unbalanced )" msgstr "unbalanced )" #: eval.c:398 #, c-format msgid "unknown nodetype %d" msgstr "tipe titik %d tidak diketahui" #: eval.c:409 eval.c:423 #, c-format msgid "unknown opcode %d" msgstr "tipe titik %d tidak diketahui" #: eval.c:420 #, c-format msgid "opcode %s not an operator or keyword" msgstr "opcode %s not an operator or keyword" #: eval.c:476 msgid "buffer overflow in genflags2str" msgstr "buffer overflow dalam genflags2str" #: eval.c:678 #, c-format msgid "" "\n" "\t# Function Call Stack:\n" "\n" msgstr "" "\n" "\t# Fungsi Call Stack:\n" "\n" #: eval.c:707 msgid "`IGNORECASE' is a gawk extension" msgstr "`IGNORECASE' adalah ekstensi gawk" #: eval.c:739 msgid "`BINMODE' is a gawk extension" msgstr "`BINMODE' adalah ekstensi gawk" #: eval.c:797 #, c-format msgid "BINMODE value `%s' is invalid, treated as 3" msgstr "BINMODE nilai `%s' tidak valid, diperlakukan sebagai 3" #: eval.c:914 #, c-format msgid "bad `%sFMT' specification `%s'" msgstr "buruk `%sFMT' spesifikasi `%s'" #: eval.c:988 msgid "turning off `--lint' due to assignment to `LINT'" msgstr "menonaktifkan `--lint' karena penempatan ke `LINT'" #: eval.c:1166 #, c-format msgid "reference to uninitialized argument `%s'" msgstr "referensi ke argumen `%s' tidak terinisialisasi" #: eval.c:1167 #, c-format msgid "reference to uninitialized variable `%s'" msgstr "referensi ke variabel `%s' tidak terinisialisasi" #: eval.c:1185 msgid "attempt to field reference from non-numeric value" msgstr "mencoba untuk mereferensi field dari nilai bukan numerik" #: eval.c:1187 msgid "attempt to field reference from null string" msgstr "mencoba untuk mereferensi dari null string" #: eval.c:1195 #, c-format msgid "attempt to access field %ld" msgstr "mencoba untuk mengakses field %ld" #: eval.c:1204 #, c-format msgid "reference to uninitialized field `$%ld'" msgstr "referensi ke field tidak terinisialisasi `$%ld'" #: eval.c:1291 #, c-format msgid "function `%s' called with more arguments than declared" msgstr "fungsi `%s' dipanggil argumen lebih dari yang dideklarasikan" #: eval.c:1498 #, c-format msgid "unwind_stack: unexpected type `%s'" msgstr "unwind_stack: unexpected type `%s'" #: eval.c:1594 msgid "division by zero attempted in `/='" msgstr "pembagian dengan nol dicoba dalam `/='" #: eval.c:1601 #, c-format msgid "division by zero attempted in `%%='" msgstr "pembagian dengan nol dicoba dalam `%%='" #: ext.c:66 ext.c:148 msgid "extensions are not allowed in sandbox mode" msgstr "extensions are not allowed in sandbox mode" #: ext.c:69 msgid "-l / @load are gawk extensions" msgstr "adalah sebuah ekstensi gawk" #: ext.c:72 msgid "load_ext: received NULL lib_name" msgstr "load_ext: received NULL lib_name" #: ext.c:75 #, c-format msgid "load_ext: cannot open library `%s' (%s)\n" msgstr "load_ext: tidak dapat membuka `%s' (%s)\n" #: ext.c:81 #, c-format msgid "" "load_ext: library `%s': does not define `plugin_is_GPL_compatible' (%s)\n" msgstr "" "load_ext: library `%s': does not define `plugin_is_GPL_compatible' (%s)\n" #: ext.c:87 #, c-format msgid "load_ext: library `%s': cannot call function `%s' (%s)\n" msgstr "load_ext: perpustakaan `%s': tidak dapat memanggil fungsi `%s' (%s)\n" #: ext.c:91 #, c-format msgid "load_ext: library `%s' initialization routine `%s' failed\n" msgstr "load_ext: library `%s' initialization routine `%s' failed\n" #: ext.c:151 msgid "`extension' is a gawk extension" msgstr "`extension' adalah sebuah ekstensi gawk" #: ext.c:154 msgid "extension: received NULL lib_name" msgstr "extension: received NULL lib_name" #: ext.c:157 #, c-format msgid "extension: cannot open library `%s' (%s)" msgstr "extension: tidak dapat membuka `%s' (%s)" #: ext.c:163 #, c-format msgid "" "extension: library `%s': does not define `plugin_is_GPL_compatible' (%s)" msgstr "extension: perpustakaan `%s': tidak dapat memanggil fungsi (%s)" #: ext.c:167 #, c-format msgid "extension: library `%s': cannot call function `%s' (%s)" msgstr "extension: perpustakaan `%s': tidak dapat memanggil fungsi `%s' (%s)" #: ext.c:198 msgid "make_builtin: missing function name" msgstr "make_builtin: hilang nama fungsi" #: ext.c:213 #, c-format msgid "make_builtin: can't redefine function `%s'" msgstr "make_builtin: tidak dapat meredefinisi fungsi `%s'" #: ext.c:217 #, c-format msgid "make_builtin: function `%s' already defined" msgstr "make_builtin: fungsi `%s' telah didefinisikan" #: ext.c:221 #, c-format msgid "make_builtin: function name `%s' previously defined" msgstr "make_builtin: nama fungsi `%s' telah didefinisikan sebelumnya" #: ext.c:223 #, c-format msgid "make_builtin: can't use gawk built-in `%s' as function name" msgstr "" "make_builtin: tidak dapat menggunakan gawk bawaan `%s' sebagai nama fungsi" #: ext.c:226 ext.c:281 #, c-format msgid "make_builtin: negative argument count for function `%s'" msgstr "make_builtin: negative argument count for function `%s'" #: ext.c:253 msgid "extension: missing function name" msgstr "extension: hilang nama fungsi" #: ext.c:256 ext.c:260 #, c-format msgid "extension: illegal character `%c' in function name `%s'" msgstr "extension: karakter `%c' tidak legal dalam nama fungsi `%s'" #: ext.c:268 #, c-format msgid "extension: can't redefine function `%s'" msgstr "extension: tidak dapat meredefinisi fungsi `%s'" #: ext.c:272 #, c-format msgid "extension: function `%s' already defined" msgstr "extension: fungsi `%s' telah didefinisikan" #: ext.c:276 #, c-format msgid "extension: function name `%s' previously defined" msgstr "extension: nama fungsi `%s' telah didefinisikan sebelumnya" #: ext.c:278 #, c-format msgid "extension: can't use gawk built-in `%s' as function name" msgstr "" "extension: tidak dapat menggunakan gawk bawaan `%s' sebagai nama fungsi" #: ext.c:358 #, c-format msgid "function `%s': argument #%d: attempt to use scalar as an array" msgstr "" "fungsi `%s': argumen #%d: mencoba menggunaka skalar sebagai sebuah array" #: ext.c:362 #, c-format msgid "function `%s': argument #%d: attempt to use array as a scalar" msgstr "" "fungsi `%s': argumen #%d: mencoba untuk menggunakan array sebagai sebuah " "skalar" #: ext.c:376 msgid "dynamic loading of library not supported" msgstr "dynamic loading of library not supported" #: extension/filefuncs.c:164 msgid "chdir: called with incorrect number of arguments, expecting 1" msgstr "chdir: dipanggil dengan argumen %g negatif" #: extension/filefuncs.c:444 #, c-format msgid "stat: unable to read symbolic link `%s'" msgstr "stat: unable to read symbolic link `%s'" #: extension/filefuncs.c:477 msgid "stat: called with wrong number of arguments" msgstr "stat: dipanggil dengan argumen negatif" #: extension/filefuncs.c:484 extension/filefuncs.c:534 msgid "stat: bad parameters" msgstr "stat: adalah parameter" #: extension/filefuncs.c:527 #, fuzzy msgid "statvfs: called with wrong number of arguments" msgstr "stat: dipanggil dengan argumen negatif" #: extension/filefuncs.c:598 #, c-format msgid "fts init: could not create variable %s" msgstr "fts init: could not create variable %s" #: extension/filefuncs.c:619 msgid "fts is not supported on this system" msgstr "tidak didukung dalam awk lama" #: extension/filefuncs.c:638 msgid "fill_stat_element: could not create array" msgstr "fill_stat_element: could not create array" #: extension/filefuncs.c:647 msgid "fill_stat_element: could not set element" msgstr "fill_stat_element: could not set element" #: extension/filefuncs.c:662 msgid "fill_path_element: could not set element" msgstr "fill_path_element: could not set element" #: extension/filefuncs.c:678 msgid "fill_error_element: could not set element" msgstr "fill_error_element: could not set element" #: extension/filefuncs.c:725 extension/filefuncs.c:772 msgid "fts-process: could not create array" msgstr "fts-process: could not create array" #: extension/filefuncs.c:735 extension/filefuncs.c:782 #: extension/filefuncs.c:800 msgid "fts-process: could not set element" msgstr "fts-process: could not set element" #: extension/filefuncs.c:849 msgid "fts: called with incorrect number of arguments, expecting 3" msgstr "fts: dipanggil dengan argumen negatif" #: extension/filefuncs.c:852 msgid "fts: bad first parameter" msgstr "fts: adalah parameter" #: extension/filefuncs.c:858 msgid "fts: bad second parameter" msgstr "fts: adalah parameter" #: extension/filefuncs.c:864 msgid "fts: bad third parameter" msgstr "fts: adalah parameter" #: extension/filefuncs.c:871 msgid "fts: could not flatten array\n" msgstr "fts: could not flatten array\n" #: extension/filefuncs.c:889 msgid "fts: ignoring sneaky FTS_NOSTAT flag. nyah, nyah, nyah." msgstr "fts: ignoring sneaky FTS_NOSTAT flag. nyah, nyah, nyah." #: extension/filefuncs.c:906 msgid "fts: clear_array() failed\n" msgstr "fts: clear_array() failed\n" #: extension/fnmatch.c:112 msgid "fnmatch: called with less than three arguments" msgstr "fnmatch: dipanggil dengan argumen negatif" #: extension/fnmatch.c:115 msgid "fnmatch: called with more than three arguments" msgstr "fnmatch: dipanggil dengan argumen negatif" #: extension/fnmatch.c:118 msgid "fnmatch: could not get first argument" msgstr "fnmatch: diterima argumen pertama bukan string" #: extension/fnmatch.c:123 msgid "fnmatch: could not get second argument" msgstr "fnmatch: diterima argumen kedua bukan string" #: extension/fnmatch.c:128 msgid "fnmatch: could not get third argument" msgstr "fnmatch: could not get third argument" #: extension/fnmatch.c:141 msgid "fnmatch is not implemented on this system\n" msgstr "fnmatch is not implemented on this system\n" #: extension/fnmatch.c:173 msgid "fnmatch init: could not add FNM_NOMATCH variable" msgstr "fnmatch init: could not add FNM_NOMATCH variable" #: extension/fnmatch.c:183 #, c-format msgid "fnmatch init: could not set array element %s" msgstr "fnmatch init: could not set array element %s" #: extension/fnmatch.c:193 msgid "fnmatch init: could not install FNM array" msgstr "fnmatch init: could not install FNM array" #: extension/fork.c:81 msgid "fork: called with too many arguments" msgstr "fork: dipanggil dengan argumen negatif" #: extension/fork.c:94 msgid "fork: PROCINFO is not an array!" msgstr "fork: PROCINFO is not an array!" #: extension/fork.c:118 msgid "waitpid: called with too many arguments" msgstr "waitpid: dipanggil dengan argumen negatif" #: extension/fork.c:126 msgid "wait: called with no arguments" msgstr "wait: dipanggil dengan argumen negatif" #: extension/fork.c:143 msgid "wait: called with too many arguments" msgstr "wait: dipanggil dengan argumen negatif" #: extension/inplace.c:131 msgid "inplace_begin: in-place editing already active" msgstr "inplace_begin: in-place editing already active" #: extension/inplace.c:134 extension/inplace.c:211 #, c-format msgid "inplace_begin: expects 2 arguments but called with %d" msgstr "inplace_begin: expects 2 arguments but called with %d" #: extension/inplace.c:137 msgid "inplace_begin: cannot retrieve 1st argument as a string filename" msgstr "inplace_begin: cannot retrieve 1st argument as a string filename" #: extension/inplace.c:145 #, c-format msgid "inplace_begin: disabling in-place editing for invalid FILENAME `%s'" msgstr "inplace_begin: disabling in-place editing for invalid FILENAME `%s'" #: extension/inplace.c:152 #, c-format msgid "inplace_begin: Cannot stat `%s' (%s)" msgstr "inplace_begin: tidak dapat membuka `%s' (%s)" #: extension/inplace.c:159 #, c-format msgid "inplace_begin: `%s' is not a regular file" msgstr "inplace_begin: `%s' is not a regular file" #: extension/inplace.c:170 #, c-format msgid "inplace_begin: mkstemp(`%s') failed (%s)" msgstr "inplace_begin: mkstemp(`%s') failed (%s)" #: extension/inplace.c:182 #, c-format msgid "inplace_begin: chmod failed (%s)" msgstr "inplace_begin: tutup gagal (%s)" #: extension/inplace.c:189 #, c-format msgid "inplace_begin: dup(stdout) failed (%s)" msgstr "inplace_begin: dup(stdout) failed (%s)" #: extension/inplace.c:192 #, c-format msgid "inplace_begin: dup2(%d, stdout) failed (%s)" msgstr "inplace_begin: dup2(%d, stdout) failed (%s)" #: extension/inplace.c:195 #, c-format msgid "inplace_begin: close(%d) failed (%s)" msgstr "inplace_begin: tutup(%d) gagal (%s)" #: extension/inplace.c:214 msgid "inplace_end: cannot retrieve 1st argument as a string filename" msgstr "inplace_end: cannot retrieve 1st argument as a string filename" #: extension/inplace.c:221 msgid "inplace_end: in-place editing not active" msgstr "inplace_end: in-place editing not active" #: extension/inplace.c:227 #, c-format msgid "inplace_end: dup2(%d, stdout) failed (%s)" msgstr "inplace_end: dup2(%d, stdout) failed (%s)" #: extension/inplace.c:230 #, c-format msgid "inplace_end: close(%d) failed (%s)" msgstr "inplace_end: tutup(%d) gagal (%s)" #: extension/inplace.c:234 #, c-format msgid "inplace_end: fsetpos(stdout) failed (%s)" msgstr "inplace_end: fsetpos(stdout) failed (%s)" #: extension/inplace.c:247 #, c-format msgid "inplace_end: link(`%s', `%s') failed (%s)" msgstr "inplace_end: pipe flush dari (`%s',`%s') gagal (%s)." #: extension/inplace.c:257 #, c-format msgid "inplace_end: rename(`%s', `%s') failed (%s)" msgstr "inplace_end: penutupan dari fd (`%s',`%s') gagal (%s)" #: extension/ordchr.c:69 msgid "ord: called with too many arguments" msgstr "ord: dipanggil dengan argumen negatif" #: extension/ordchr.c:75 msgid "ord: called with no arguments" msgstr "ord: dipanggil dengan argumen negatif" #: extension/ordchr.c:77 msgid "ord: called with inappropriate argument(s)" msgstr "ord: dipanggil dengan argumen negatif" #: extension/ordchr.c:99 msgid "chr: called with too many arguments" msgstr "chr: dipanggil dengan argumen negatif" #: extension/ordchr.c:109 msgid "chr: called with no arguments" msgstr "chr: dipanggil dengan argumen negatif" #: extension/ordchr.c:111 msgid "chr: called with inappropriate argument(s)" msgstr "chr: dipanggil dengan argumen negatif" #: extension/readdir.c:271 #, c-format msgid "dir_take_control_of: opendir/fdopendir failed: %s" msgstr "dir_take_control_of: opendir/fdopendir failed: %s" #: extension/readfile.c:113 msgid "readfile: called with too many arguments" msgstr "readfile: dipanggil dengan argumen negatif" #: extension/readfile.c:137 msgid "readfile: called with no arguments" msgstr "readfile: dipanggil dengan argumen negatif" #: extension/revoutput.c:127 msgid "revoutput: could not initialize REVOUT variable" msgstr "" #: extension/rwarray.c:113 extension/rwarray0.c:109 msgid "writea: called with too many arguments" msgstr "writea: dipanggil dengan argumen negatif" #: extension/rwarray.c:120 extension/rwarray0.c:116 #, c-format msgid "do_writea: argument 0 is not a string\n" msgstr "do_write: argumen diluar dari jangkauan\n" #: extension/rwarray.c:126 extension/rwarray0.c:122 #, c-format msgid "do_writea: argument 1 is not an array\n" msgstr "do_writea: argumen kedua bukan sebuah array\n" #: extension/rwarray.c:173 extension/rwarray0.c:169 #, c-format msgid "write_array: could not flatten array\n" msgstr "write_array: could not flatten array\n" #: extension/rwarray.c:187 extension/rwarray0.c:183 #, c-format msgid "write_array: could not release flattened array\n" msgstr "write_array: could not release flattened array\n" #: extension/rwarray.c:269 extension/rwarray0.c:265 msgid "reada: called with too many arguments" msgstr "reada: dipanggil dengan argumen negatif" #: extension/rwarray.c:276 extension/rwarray0.c:272 #, c-format msgid "do_reada: argument 0 is not a string\n" msgstr "do_reada: argumen diluar dari jangkauan\n" #: extension/rwarray.c:282 extension/rwarray0.c:278 #, c-format msgid "do_reada: argument 1 is not an array\n" msgstr "do_reada: argumen ketiga bukan sebuah array\n" #: extension/rwarray.c:326 extension/rwarray0.c:322 #, c-format msgid "do_reada: clear_array failed\n" msgstr "do_reada: clear_array failed\n" #: extension/rwarray.c:363 extension/rwarray0.c:358 #, c-format msgid "read_array: set_array_element failed\n" msgstr "read_array: set_array_element failed\n" #: extension/time.c:113 msgid "gettimeofday: ignoring arguments" msgstr "gettimeofday: diterima argumen bukan string" #: extension/time.c:144 msgid "gettimeofday: not supported on this platform" msgstr "gettimeofday: not supported on this platform" #: extension/time.c:165 msgid "sleep: called with too many arguments" msgstr "sleep: dipanggil dengan argumen negatif" #: extension/time.c:168 msgid "sleep: missing required numeric argument" msgstr "sleep: diterima argumen bukan-numerik" #: extension/time.c:174 msgid "sleep: argument is negative" msgstr "sleep: argumen diluar dari jangkauan" #: extension/time.c:208 msgid "sleep: not supported on this platform" msgstr "sleep: not supported on this platform" #: field.c:346 msgid "NF set to negative value" msgstr "NF set ke nilai negatif" #: field.c:958 field.c:965 field.c:969 msgid "split: fourth argument is a gawk extension" msgstr "split: argumen ketiga adalah sebuah ekstensi gawk" #: field.c:962 msgid "split: fourth argument is not an array" msgstr "split: argumen kedua bukan sebuah array" #: field.c:976 msgid "split: second argument is not an array" msgstr "split: argumen kedua bukan sebuah array" #: field.c:980 msgid "split: cannot use the same array for second and fourth args" msgstr "split: cannot use the same array for second and fourth args" #: field.c:985 msgid "split: cannot use a subarray of second arg for fourth arg" msgstr "split: cannot use a subarray of second arg for fourth arg" #: field.c:988 msgid "split: cannot use a subarray of fourth arg for second arg" msgstr "split: cannot use a subarray of fourth arg for secod arg" #: field.c:1019 msgid "split: null string for third arg is a gawk extension" msgstr "split: null string untuk arg ketika adalah sebuah ekstensi gawk" #: field.c:1059 msgid "patsplit: fourth argument is not an array" msgstr "patsplit: argumen kedua bukan sebuah array" #: field.c:1064 msgid "patsplit: second argument is not an array" msgstr "patsplit: argumen kedua bukan sebuah array" #: field.c:1070 msgid "patsplit: third argument must be non-null" msgstr "patsplit: argumen ketiga bukan sebuah array" #: field.c:1074 msgid "patsplit: cannot use the same array for second and fourth args" msgstr "patsplit: cannot use the same array for second and fourth args" #: field.c:1079 msgid "patsplit: cannot use a subarray of second arg for fourth arg" msgstr "patsplit: cannot use a subarray of second arg for fourth arg" #: field.c:1082 msgid "patsplit: cannot use a subarray of fourth arg for second arg" msgstr "patsplit: cannot use a subarray of fourth arg for second arg" #: field.c:1120 msgid "`FIELDWIDTHS' is a gawk extension" msgstr "`FIELDWIDTHS' adalah sebuah ekstensi gawk" #: field.c:1184 #, c-format msgid "invalid FIELDWIDTHS value, near `%s'" msgstr "nilai FIELDWIDTHS tidak valid, didekat `%s'" #: field.c:1257 msgid "null string for `FS' is a gawk extension" msgstr "null string untuk `FS' adalah sebuah ekstensi gawk" #: field.c:1261 msgid "old awk does not support regexps as value of `FS'" msgstr "awk lama tidak mendukung regexps sebagai nilai dari `FS'" #: field.c:1384 msgid "`FPAT' is a gawk extension" msgstr "`FPAT' adalah sebuah ekstensi gawk" #: gawkapi.c:146 msgid "awk_value_to_node: received null retval" msgstr "awk_value_to_node: received null retval" #: gawkapi.c:383 msgid "node_to_awk_value: received null node" msgstr "node_to_awk_value: received null node" #: gawkapi.c:386 msgid "node_to_awk_value: received null val" msgstr "node_to_awk_value: received null val" #: gawkapi.c:808 msgid "remove_element: received null array" msgstr "remove_element: received null array" #: gawkapi.c:811 msgid "remove_element: received null subscript" msgstr "remove_element: received null subscript" #: gawkapi.c:948 #, c-format msgid "api_flatten_array: could not convert index %d\n" msgstr "api_flatten_array: could not convert index %d\n" #: gawkapi.c:953 #, c-format msgid "api_flatten_array: could not convert value %d\n" msgstr "api_flatten_array: could not convert value %d\n" #: getopt.c:604 getopt.c:633 #, c-format msgid "%s: option '%s' is ambiguous; possibilities:" msgstr "%s: pilihan '%s' adalah ambigu" #: getopt.c:679 getopt.c:683 #, c-format msgid "%s: option '--%s' doesn't allow an argument\n" msgstr "%s: pilihan '--%s' tidak mengijinkan sebuah argumen\n" #: getopt.c:692 getopt.c:697 #, c-format msgid "%s: option '%c%s' doesn't allow an argument\n" msgstr "%s: pilihan '%c%s' tidak mengijinkan sebuah argumen\n" #: getopt.c:740 getopt.c:759 #, c-format msgid "%s: option '--%s' requires an argument\n" msgstr "%s: pilihan '--%s' membutuhkan sebuah argumen\n" #: getopt.c:797 getopt.c:800 #, c-format msgid "%s: unrecognized option '--%s'\n" msgstr "%s: pilihan tidak dikenal '--%s'\n" #: getopt.c:808 getopt.c:811 #, c-format msgid "%s: unrecognized option '%c%s'\n" msgstr "%s: pilihan tidak dikenal '%c%s'\n" #: getopt.c:860 getopt.c:863 #, c-format msgid "%s: invalid option -- '%c'\n" msgstr "%s: pilihan tidak valid -- '%c'\n" #: getopt.c:916 getopt.c:933 getopt.c:1143 getopt.c:1161 #, c-format msgid "%s: option requires an argument -- '%c'\n" msgstr "%s: pilihan membutuhkan sebuah argumen -- '%c'\n" #: getopt.c:989 getopt.c:1005 #, c-format msgid "%s: option '-W %s' is ambiguous\n" msgstr "%s: pilihan '-W %s' adalah ambigu\n" #: getopt.c:1029 getopt.c:1047 #, c-format msgid "%s: option '-W %s' doesn't allow an argument\n" msgstr "%s: pilihan '-W %s' tidak mengijinkan sebuah argumen\n" #: getopt.c:1068 getopt.c:1086 #, c-format msgid "%s: option '-W %s' requires an argument\n" msgstr "%s: pilihan '-w %s' membutuhkan sebuah argumen\n" #: io.c:426 #, c-format msgid "command line argument `%s' is a directory: skipped" msgstr "command line argument `%s' is a directory: skipped" #: io.c:429 io.c:547 #, c-format msgid "cannot open file `%s' for reading (%s)" msgstr "tidak dapat membuka berkas `%s' untuk membaca (%s)" #: io.c:674 #, c-format msgid "close of fd %d (`%s') failed (%s)" msgstr "penutupan dari fd %d (`%s') gagal (%s)" #: io.c:752 msgid "redirection not allowed in sandbox mode" msgstr "redirection not allowed in sandbox mode" #: io.c:786 #, c-format msgid "expression in `%s' redirection only has numeric value" msgstr "ekspresi dalam `%s' redireksi hanya memiliki nilai numerik" #: io.c:792 #, c-format msgid "expression for `%s' redirection has null string value" msgstr "ekspresi untuk `%s' redireksi hanya memiliki nilai string null" #: io.c:797 #, c-format msgid "filename `%s' for `%s' redirection may be result of logical expression" msgstr "" "nama berkas `%s' untuk `%s' redireksi hanya menghasilkan ekspresi logikal" #: io.c:845 #, c-format msgid "unnecessary mixing of `>' and `>>' for file `%.*s'" msgstr "pencampuran tidak perlu dari `>' dan `>>' untuk berkas `%.*s'" #: io.c:902 #, c-format msgid "can't open pipe `%s' for output (%s)" msgstr "tidak dapat membuka pipe `%s' untuk keluaran (%s)" #: io.c:915 #, c-format msgid "can't open pipe `%s' for input (%s)" msgstr "tidak dapat membuka pipe `%s' untuk masukan (%s)" #: io.c:946 #, c-format msgid "can't open two way pipe `%s' for input/output (%s)" msgstr "tidak dapat membuka pipe dua arah `%s' untuk input/output (%s)" #: io.c:1030 #, c-format msgid "can't redirect from `%s' (%s)" msgstr "tidak dapat redirek dari `%s' (%s)" #: io.c:1033 #, c-format msgid "can't redirect to `%s' (%s)" msgstr "tidak dapat redirek ke `%s' (%s)" #: io.c:1084 msgid "" "reached system limit for open files: starting to multiplex file descriptors" msgstr "" "batas sistem tercapi untuk berkas terbuka: mulai untuk multiplex berkas " "deskripsi" #: io.c:1100 #, c-format msgid "close of `%s' failed (%s)." msgstr "penutupan dari `%s' gagal (%s)." #: io.c:1108 msgid "too many pipes or input files open" msgstr "terlalu banyak pipes atau berkas masukan terbuka" #: io.c:1130 msgid "close: second argument must be `to' or `from'" msgstr "close: argumen kedua harus berupa `to' atau `from'" #: io.c:1147 #, c-format msgid "close: `%.*s' is not an open file, pipe or co-process" msgstr "close: `%.*s' bukan sebuah berkas terbuka, pipe atau co-proses" #: io.c:1152 msgid "close of redirection that was never opened" msgstr "penutupan dari redireksi yang tidak pernah terbuka" #: io.c:1249 #, c-format msgid "close: redirection `%s' not opened with `|&', second argument ignored" msgstr "" "close: redireksi `%s' tidak dibuka dengan `|&', argumen kedua diabaikan" #: io.c:1266 #, c-format msgid "failure status (%d) on pipe close of `%s' (%s)" msgstr "status gagal (%d) di tutup pipe dari `%s' (%s)" #: io.c:1269 #, c-format msgid "failure status (%d) on file close of `%s' (%s)" msgstr "status gagal (%d) di tutup berkas dari `%s' (%s)" #: io.c:1289 #, c-format msgid "no explicit close of socket `%s' provided" msgstr "tidak ada eksplisit tutup dari socket `%s' yang disediakan" #: io.c:1292 #, c-format msgid "no explicit close of co-process `%s' provided" msgstr "tidak ada eksplisit tutup dari co-proses `%s' yang disediakan" #: io.c:1295 #, c-format msgid "no explicit close of pipe `%s' provided" msgstr "tidak ada eksplisit tutup dari pipe `%s' disediakan" #: io.c:1298 #, c-format msgid "no explicit close of file `%s' provided" msgstr "tidak ada eksplisit close dari berkas `%s' disediakan" #: io.c:1328 io.c:1387 main.c:645 main.c:687 #, c-format msgid "error writing standard output (%s)" msgstr "error menulis standar keluaran (%s)" #: io.c:1333 io.c:1393 main.c:647 #, c-format msgid "error writing standard error (%s)" msgstr "error menulis standar error (%s)" #: io.c:1341 #, c-format msgid "pipe flush of `%s' failed (%s)." msgstr "pipe flush dari `%s' gagal (%s)." #: io.c:1344 #, c-format msgid "co-process flush of pipe to `%s' failed (%s)." msgstr "co-proses flush dari pipe ke `%s' gagal (%s)." #: io.c:1347 #, c-format msgid "file flush of `%s' failed (%s)." msgstr "file flush dari `%s' gagal (%s)." #: io.c:1465 #, c-format msgid "local port %s invalid in `/inet'" msgstr "lokal port %s tidak valid dalam `/inet'" #: io.c:1483 #, c-format msgid "remote host and port information (%s, %s) invalid" msgstr "remote host dan informasi port (%s, %s) tidak valid" #: io.c:1711 msgid "TCP/IP communications are not supported" msgstr "komunikasi TCP/IP tidak didukung" #: io.c:1905 #, c-format msgid "could not open `%s', mode `%s'" msgstr "tidak dapat membuka `%s', mode `%s'" #: io.c:1961 #, c-format msgid "close of master pty failed (%s)" msgstr "penutupan dari master pty gagal (%s)" #: io.c:1963 io.c:2141 io.c:2342 #, c-format msgid "close of stdout in child failed (%s)" msgstr "penutupan dari stdout dalam child gagal (%s)" #: io.c:1966 #, c-format msgid "moving slave pty to stdout in child failed (dup: %s)" msgstr "memindahkan slave pty ke stdout dalam child gagal (dup: %s)" #: io.c:1968 io.c:2146 #, c-format msgid "close of stdin in child failed (%s)" msgstr "penutupan dari stdin dalam anak gagal (%s)" #: io.c:1971 #, c-format msgid "moving slave pty to stdin in child failed (dup: %s)" msgstr "memindahkan slave pty ke stdin dalam anak gagal (dup: %s)" #: io.c:1973 #, c-format msgid "close of slave pty failed (%s)" msgstr "penutupan dari pty budak gagal (%s)" #: io.c:2076 io.c:2144 io.c:2313 io.c:2345 #, c-format msgid "moving pipe to stdout in child failed (dup: %s)" msgstr "memindahkan pipe ke stdout dalam anak gaal (dup: %s)" #: io.c:2083 io.c:2149 #, c-format msgid "moving pipe to stdin in child failed (dup: %s)" msgstr "memindahkan pipe ke stdin dalam anak gagal (dup: %s)" #: io.c:2109 io.c:2335 msgid "restoring stdout in parent process failed\n" msgstr "mengembalikan stdout dalam proses orang tua gagal\n" #: io.c:2117 msgid "restoring stdin in parent process failed\n" msgstr "mengembalikan stdin dalam proses orang tua gagal\n" #: io.c:2152 io.c:2347 io.c:2362 #, c-format msgid "close of pipe failed (%s)" msgstr "penutupan dari pipe gagal (%s)" #: io.c:2211 msgid "`|&' not supported" msgstr "`|&' tidak didukung" #: io.c:2298 #, c-format msgid "cannot open pipe `%s' (%s)" msgstr "tidak dapat membuka pipe `%s' (%s)" #: io.c:2356 #, c-format msgid "cannot create child process for `%s' (fork: %s)" msgstr "tidak dapat membuat proses anak untuk `%s' (fork: %s)" #: io.c:2493 msgid "getline: attempt to read from closed read end of two-way pipe" msgstr "" #: io.c:2795 msgid "register_input_parser: received NULL pointer" msgstr "register_input_parser: received NULL pointer" #: io.c:2823 #, c-format msgid "input parser `%s' conflicts with previously installed input parser `%s'" msgstr "" "input parser `%s' conflicts with previously installed input parser `%s'" #: io.c:2830 #, c-format msgid "input parser `%s' failed to open `%s'" msgstr "input parser `%s' failed to open `%s'" #: io.c:2850 msgid "register_output_wrapper: received NULL pointer" msgstr "register_output_wrapper: received NULL pointer" #: io.c:2878 #, c-format msgid "" "output wrapper `%s' conflicts with previously installed output wrapper `%s'" msgstr "" "output wrapper `%s' conflicts with previously installed output wrapper `%s'" #: io.c:2885 #, c-format msgid "output wrapper `%s' failed to open `%s'" msgstr "output wrapper `%s' failed to open `%s'" #: io.c:2906 msgid "register_output_processor: received NULL pointer" msgstr "register_output_processor: received NULL pointer" #: io.c:2935 #, c-format msgid "" "two-way processor `%s' conflicts with previously installed two-way processor " "`%s'" msgstr "" "two-way processor `%s' conflicts with previously installed two-way processor " "`%s'" #: io.c:2944 #, c-format msgid "two way processor `%s' failed to open `%s'" msgstr "two way processor `%s' failed to open `%s'" #: io.c:3069 #, c-format msgid "data file `%s' is empty" msgstr "berkas data `%s' kosong" #: io.c:3111 io.c:3119 msgid "could not allocate more input memory" msgstr "tidak dapat mengalokasikan lebih dari masukan memori" #: io.c:3697 msgid "multicharacter value of `RS' is a gawk extension" msgstr "nilai multi karakter dari `RS' adalah sebuah ekstensi gawk" #: io.c:3844 msgid "IPv6 communication is not supported" msgstr "IPv6 komunikasi TCP/IP tidak didukung" #: main.c:334 msgid "environment variable `POSIXLY_CORRECT' set: turning on `--posix'" msgstr "variabel lingkungan `POSIXLY_CORRECT' set: mengaktifkan `--posix'" #: main.c:340 msgid "`--posix' overrides `--traditional'" msgstr "`--posix' overrides `--traditional'" #: main.c:351 msgid "`--posix'/`--traditional' overrides `--non-decimal-data'" msgstr "`--posix'/`--traditional' overrides `--non-decimal-data'" #: main.c:355 #, c-format msgid "running %s setuid root may be a security problem" msgstr "menjalankan %s setuid root mungkin sebuah masalah keamanan" #: main.c:359 msgid "`--posix' overrides `--characters-as-bytes'" msgstr "`--posix' overrides `--characters-as-bytes'" #: main.c:417 #, c-format msgid "can't set binary mode on stdin (%s)" msgstr "tidak dapat menset mode binari di stdin (%s)" #: main.c:420 #, c-format msgid "can't set binary mode on stdout (%s)" msgstr "tidak dapat menset mode binari di stdout (%s)" #: main.c:422 #, c-format msgid "can't set binary mode on stderr (%s)" msgstr "tidak dapat menset mode binari di stderr (%s)" #: main.c:482 msgid "no program text at all!" msgstr "tidak ada teks aplikasi apapun!" #: main.c:576 #, c-format msgid "Usage: %s [POSIX or GNU style options] -f progfile [--] file ...\n" msgstr "" "Penggunaan: %s [pilihan POSIX atau gaya GNU] -f progfile [--] berkas ...\n" #: main.c:578 #, c-format msgid "Usage: %s [POSIX or GNU style options] [--] %cprogram%c file ...\n" msgstr "" "Penggunaan: %s[ pilihan POSIX atau gaya GNU] [--] %cprogram%c berkas ...\n" #: main.c:583 msgid "POSIX options:\t\tGNU long options: (standard)\n" msgstr "pilihan POSIX:\t\tpilihan panjang GNU:\n" #: main.c:584 msgid "\t-f progfile\t\t--file=progfile\n" msgstr "\t-f progfile\t\t--file=progfile\n" #: main.c:585 msgid "\t-F fs\t\t\t--field-separator=fs\n" msgstr "\t-F fs\t\t\t--field-separator=fs\n" #: main.c:586 msgid "\t-v var=val\t\t--assign=var=val\n" msgstr "\t-v var=val\t\t--assign=var=val\n" #: main.c:587 msgid "Short options:\t\tGNU long options: (extensions)\n" msgstr "pilihan POSIX:\t\tpilihan panjang GNU:\n" #: main.c:588 msgid "\t-b\t\t\t--characters-as-bytes\n" msgstr "\t-b\t\t\t--characters-as-bytes\n" #: main.c:589 msgid "\t-c\t\t\t--traditional\n" msgstr "\t-c\t\t\t--traditional\n" #: main.c:590 msgid "\t-C\t\t\t--copyright\n" msgstr "\t-C hak cipta\t\t--copyright\n" #: main.c:591 msgid "\t-d[file]\t\t--dump-variables[=file]\n" msgstr "\t-d tampilkan variabel[=berkas]\t\t--dump-variables[=berkas]\n" #: main.c:592 msgid "\t-D[file]\t\t--debug[=file]\n" msgstr "\t-D profile[=file]\t\t--profile[=file]\n" #: main.c:593 msgid "\t-e 'program-text'\t--source='program-text'\n" msgstr "\t-e sumber=teks-program\t\t--source=teks-program\n" #: main.c:594 msgid "\t-E file\t\t\t--exec=file\n" msgstr "\t-E exec=berkas\t\t\t--exec=berkas\n" #: main.c:595 msgid "\t-g\t\t\t--gen-pot\n" msgstr "\t-g gen-po\t\t\t--gen-po\n" #: main.c:596 msgid "\t-h\t\t\t--help\n" msgstr "\t-h bantuan\t\t\t--help\n" #: main.c:597 msgid "\t-i includefile\t\t--include=includefile\n" msgstr "\t-i includefile\t\t--include=includefile\n" #: main.c:598 msgid "\t-l library\t\t--load=library\n" msgstr "\t-I library\t\t--load=library\n" #. TRANSLATORS: the "fatal" and "invalid" here are literal #. values, they should not be translated. Thanks. #. #: main.c:603 #, fuzzy msgid "\t-L[fatal|invalid]\t--lint[=fatal|invalid]\n" msgstr "\t-L lint[=fatal]\t\t--lint[=fatal]\n" #: main.c:604 msgid "\t-M\t\t\t--bignum\n" msgstr "\t-M\t\t\t--optimize\n" #: main.c:605 msgid "\t-N\t\t\t--use-lc-numeric\n" msgstr "\t-N use-lc-numeric\t\t\t--use-lc-numeric\n" #: main.c:606 msgid "\t-n\t\t\t--non-decimal-data\n" msgstr "\t-n non-decimal-data\t\t\t--non-decimal-data\n" #: main.c:607 msgid "\t-o[file]\t\t--pretty-print[=file]\n" msgstr "\t-W profile[=file]\t\t--profile[=file]\n" #: main.c:608 msgid "\t-O\t\t\t--optimize\n" msgstr "\t-0\t\t\t--optimize\n" #: main.c:609 msgid "\t-p[file]\t\t--profile[=file]\n" msgstr "\t-p profile[=file]\t\t--profile[=file]\n" #: main.c:610 msgid "\t-P\t\t\t--posix\n" msgstr "\t-P posix\t\t\t--posix\n" #: main.c:611 msgid "\t-r\t\t\t--re-interval\n" msgstr "\t-r re-interval\t\t\t--re-interval\n" #: main.c:612 msgid "\t-S\t\t\t--sandbox\n" msgstr "\t-S\t\t\t--sandbox\n" #: main.c:613 msgid "\t-t\t\t\t--lint-old\n" msgstr "\t-t lint-old\t\t\t--lint-old\n" #: main.c:614 msgid "\t-V\t\t\t--version\n" msgstr "\t-V versi\t\t\t--version\n" #: main.c:616 msgid "\t-W nostalgia\t\t--nostalgia\n" msgstr "\t-W nostalgia\t\t--nostalgia\n" #: main.c:619 msgid "\t-Y\t\t--parsedebug\n" msgstr "\t-Y parsedebug\t\t--parsedebug\n" #. TRANSLATORS: --help output 5 (end) #. TRANSLATORS: the placeholder indicates the bug-reporting address #. for this application. Please add _another line_ with the #. address for translation bugs. #. no-wrap #: main.c:628 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" "Untuk melaporkan bugs, lihat titik `Bugs' dalam `gawk.info', dalam\n" "daerah `Reporting Problems and Bugs' dalam versi tercetak.\n" "\n" #: main.c:632 msgid "" "gawk is a pattern scanning and processing language.\n" "By default it reads standard input and writes standard output.\n" "\n" msgstr "" "gawk adalah sebuah pencarian pola dan bahasa pemrosesan.\n" "Secara baku ini membaca standar masukan dan menulis standa keluaran.\n" "\n" #: main.c:636 msgid "" "Examples:\n" "\tgawk '{ sum += $1 }; END { print sum }' file\n" "\tgawk -F: '{ print $1 }' /etc/passwd\n" msgstr "" "Contoh:\n" "\tgawk '{ sum += $1 }; END { print sum }' berkas\n" "\tgawk -F: '{ print $1 }' /etc/passwd\n" #: main.c:661 #, 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 3 of the License, or\n" "(at your option) any later version.\n" "\n" msgstr "" "Hak Cipta (C) 1989, 1991-%d Free Software Foundationn.\n" "\n" "Aplikasi ini adalah aplikasi bebas; anda dapat meredistribusikannya dan/atau " "memodifikasinya\n" "dibawah ketentuan dari GNU General Public License seperti dipublikasikan " "oleh\n" "Free Software Foundation; baik versi 3 dari Lisensi, atau\n" "(di pilihan anda) untuk versi selanjutnya.\n" "\n" #: main.c:669 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 "" "Aplikasi ini didistribusikan dengan harapan ini akan berguna,\n" "tetapi TANPA GARANSI APAPUN; bahkan tanpa garansi yang diimplisikasikan " "dari\n" "PERDAGANGAN atau KESESUAIAN UNTUK SEBUAH TUJUAN TERTENTU. Lihat\n" "GNU General Public License untuk lebih lengkapnya.\n" "\n" #: main.c:675 msgid "" "You should have received a copy of the GNU General Public License\n" "along with this program. If not, see http://www.gnu.org/licenses/.\n" msgstr "" "Anda seharusnya menerima salinan dari GNU General Public License\n" "bersama dengan aplikasi ini. Jika tidak, lihat http://www.gnu.org/" "licenses/.\n" #: main.c:712 msgid "-Ft does not set FS to tab in POSIX awk" msgstr "-Ft tidak menset FS ke tab dalam POSIX awk" #: main.c:999 #, c-format msgid "unknown value for field spec: %d\n" msgstr "unknown value for field spec: %d\n" #: main.c:1097 #, c-format msgid "" "%s: `%s' argument to `-v' not in `var=value' form\n" "\n" msgstr "" "%s: `%s' argumen ke `-v' tidak dalam bentuk `var=value'\n" "\n" #: main.c:1123 #, c-format msgid "`%s' is not a legal variable name" msgstr "`%s' bukan sebuah nama variabel legal" #: main.c:1126 #, c-format msgid "`%s' is not a variable name, looking for file `%s=%s'" msgstr "`%s' bukan sebuah nama variabel, pencarian untuk berkas `%s=%s'" #: main.c:1130 #, c-format msgid "cannot use gawk builtin `%s' as variable name" msgstr "tidak dapat menggunakan gawk bawaan `%s' sebagai nama fungsi" #: main.c:1135 #, c-format msgid "cannot use function `%s' as variable name" msgstr "" "tidak dapat menggunakan nama fungsi `%s' sebagai sebuah variabel atau array" #: main.c:1190 msgid "floating point exception" msgstr "eksepsi titik pecahan" #: main.c:1197 msgid "fatal error: internal error" msgstr "fatal error: internal error" #: main.c:1212 msgid "fatal error: internal error: segfault" msgstr "fatal error: internal error: segfault" #: main.c:1224 msgid "fatal error: internal error: stack overflow" msgstr "fatal error: internal error: stack overflow" #: main.c:1283 #, c-format msgid "no pre-opened fd %d" msgstr "tidak ada pre-opened fd %d" #: main.c:1290 #, c-format msgid "could not pre-open /dev/null for fd %d" msgstr "tidak dapat pre-open /dev/null untuk fd %d" #: main.c:1504 msgid "empty argument to `-e/--source' ignored" msgstr "argumen kosong ke `-e/--source' diabaikan" #: main.c:1575 msgid "-M ignored: MPFR/GMP support not compiled in" msgstr "" #: main.c:1596 #, c-format msgid "%s: option `-W %s' unrecognized, ignored\n" msgstr "%s: pilihan `-W %s' tidak dikenal, diabaikan\n" #: main.c:1649 #, c-format msgid "%s: option requires an argument -- %c\n" msgstr "%s: pilihan membutuhkan sebuah argumen -- %c\n" #: mpfr.c:559 #, c-format msgid "PREC value `%.*s' is invalid" msgstr "PREC nilai `%.*s' tidak valid, diperlakukan sebagai 3" #: mpfr.c:617 #, c-format msgid "RNDMODE value `%.*s' is invalid" msgstr "RNDMODE nilai `%.*s' tidak valid, diperlakukan sebagai 3" #: mpfr.c:714 #, c-format msgid "%s: received non-numeric argument" msgstr "%s: diterima argumen bukan numerik" #: mpfr.c:824 msgid "compl(%Rg): negative value will give strange results" msgstr "compl(%Rg): nilai negatif akan memberikan hasil aneh" #: mpfr.c:828 msgid "comp(%Rg): fractional value will be truncated" msgstr "compl(%Rg): nilai pecahan akan dipotong" #: mpfr.c:840 #, c-format msgid "cmpl(%Zd): negative values will give strange results" msgstr "compl(%Zd): nilai negatif akan memberikan hasil aneh" #: mpfr.c:859 #, c-format msgid "%s: received non-numeric argument #%d" msgstr "%s: diterima argumen bukan numerik #%d" #: mpfr.c:869 msgid "%s: argument #%d has invalid value %Rg, using 0" msgstr "%s: argument #%d has invalid value %Rg, using 0" #: mpfr.c:881 msgid "%s: argument #%d negative value %Rg will give strange results" msgstr "%s: #%d nilai negatif %Rg akan memberikan hasil aneh" #: mpfr.c:887 msgid "%s: argument #%d fractional value %Rg will be truncated" msgstr "%s: #%d nilai pecahan %Rg akan dipotong" #: mpfr.c:902 #, c-format msgid "%s: argument #%d negative value %Zd will give strange results" msgstr "%s: #%d nilai negatif %Zd akan memberikan hasil aneh" #: msg.c:68 #, c-format msgid "cmd. line:" msgstr "cmd. baris:" #: node.c:434 msgid "backslash at end of string" msgstr "backslash di akhir dari string" #: node.c:513 #, c-format msgid "old awk does not support the `\\%c' escape sequence" msgstr "awk lama tidak mendukung escape sequence `\\%c'" #: node.c:564 msgid "POSIX does not allow `\\x' escapes" msgstr "POSIX tidak mengijinkan escapes `\\x'" #: node.c:570 msgid "no hex digits in `\\x' escape sequence" msgstr "tidak ada digit heksa dalam escape sequence `\\x'" #: node.c:592 #, c-format msgid "" "hex escape \\x%.*s of %d characters probably not interpreted the way you " "expect" msgstr "" "hex escape \\x%.*s dari karakter %d mungkin tidak dapat diinterpretrasikan " "seperti yang anda kira" #: node.c:607 #, c-format msgid "escape sequence `\\%c' treated as plain `%c'" msgstr "escape sequence `\\%c' diperlakukan sebagai plain `%c'" #: node.c:744 msgid "" "Invalid multibyte data detected. There may be a mismatch between your data " "and your locale." msgstr "" "Invalid multibyte data detected. There may be a mismatch between your data " "and your locale." #: posix/gawkmisc.c:177 #, c-format msgid "%s %s `%s': could not get fd flags: (fcntl F_GETFD: %s)" msgstr "%s %s `%s': tidak dapat menset close-on-exec: (fcntl: %s)" #: posix/gawkmisc.c:189 #, c-format msgid "%s %s `%s': could not set close-on-exec: (fcntl F_SETFD: %s)" msgstr "%s %s `%s': tidak dapat menset close-on-exec: (fcntl: %s)" #: profile.c:94 #, c-format msgid "could not open `%s' for writing: %s" msgstr "tidak dapat membuka `%s' untuk penulisan: %s" #: profile.c:96 msgid "sending profile to standard error" msgstr "mengirim profile ke standar error" #: profile.c:216 #, fuzzy, c-format msgid "" "\t# %s rule(s)\n" "\n" msgstr "" "\t# Aturan\n" "\n" #: profile.c:221 #, c-format msgid "" "\t# Rule(s)\n" "\n" msgstr "" "\t# Aturan\n" "\n" #: profile.c:295 #, c-format msgid "internal error: %s with null vname" msgstr "internal error: %s dengan null vname" #: profile.c:561 msgid "internal error: builtin with null fname" msgstr "internal error: dengan null vname" #: profile.c:1006 #, c-format msgid "" "\t# Loaded extensions (-l and/or @load)\n" "\n" msgstr "" "\t# Loaded extensions (-l and/or @load)\n" "\n" #: profile.c:1029 #, c-format msgid "\t# gawk profile, created %s\n" msgstr "\t# gawk profile, dibuat %s\n" #: profile.c:1600 #, c-format msgid "" "\n" "\t# Functions, listed alphabetically\n" msgstr "" "\n" "\t# Fungsi, terdaftar secara alphabet\n" #: profile.c:1638 #, c-format msgid "redir2str: unknown redirection type %d" msgstr "redir2str: unknown redirection type %d" #: re.c:610 #, c-format msgid "regexp component `%.*s' should probably be `[%.*s]'" msgstr "regexp component `%.*s' should probably be `[%.*s]'" #: regcomp.c:143 msgid "Success" msgstr "Sukses" #: regcomp.c:146 msgid "No match" msgstr "Tidak cocok" #: regcomp.c:149 msgid "Invalid regular expression" msgstr "Ekspresi regular tidak valid" #: regcomp.c:152 msgid "Invalid collation character" msgstr "Karakter kolasi tidak valid" #: regcomp.c:155 msgid "Invalid character class name" msgstr "nama kelas karakter tidak valid" #: regcomp.c:158 msgid "Trailing backslash" msgstr "Akhiran backslash" #: regcomp.c:161 msgid "Invalid back reference" msgstr "Referensi balik tidak valid" #: regcomp.c:164 #, fuzzy msgid "Unmatched [, [^, [:, [., or [=" msgstr "Tidak cocok [ atau [^" #: regcomp.c:167 msgid "Unmatched ( or \\(" msgstr "Tidak cocok ( atau \\(" #: regcomp.c:170 msgid "Unmatched \\{" msgstr "Tidak cocok \\{" #: regcomp.c:173 msgid "Invalid content of \\{\\}" msgstr "Isi dari \\{\\} tidak valid" #: regcomp.c:176 msgid "Invalid range end" msgstr "Akhir jangkauan tidak valid" #: regcomp.c:179 msgid "Memory exhausted" msgstr "Kehabisan memori" #: regcomp.c:182 msgid "Invalid preceding regular expression" msgstr "Ekspresi regular yang mengawali tidak valid" #: regcomp.c:185 msgid "Premature end of regular expression" msgstr "Akhir dari ekspresi regular prematur" #: regcomp.c:188 msgid "Regular expression too big" msgstr "Ekspresi regular terlalu besar" #: regcomp.c:191 msgid "Unmatched ) or \\)" msgstr "Tidak cocok ) atau \\)" #: regcomp.c:701 msgid "No previous regular expression" msgstr "Tidak ada ekspresi regular sebelumnya" #: symbol.c:684 #, fuzzy, c-format msgid "function `%s': can't use function `%s' as a parameter name" msgstr "" "fungsi `%s': tidak dapat menggunakan nama fungsi sebagai nama parameter" #: symbol.c:816 msgid "can not pop main context" msgstr "can not pop main context" #~ msgid "function `%s' defined to take no more than %d argument(s)" #~ msgstr "fungsi `%s' didefinisikan untuk mengambil lebih dari %d argumen" #~ msgid "function `%s': missing argument #%d" #~ msgstr "fungsi `%s': hilang argumen #%d" #~ msgid "`getline var' invalid inside `%s' rule" #~ msgstr "`getline var' invalid inside `%s' rule" #~ msgid "no (known) protocol supplied in special filename `%s'" #~ msgstr "" #~ "tidak (diketahui) protokol yang diberikan dalam nama berkas spesial `%s'" #~ msgid "special file name `%s' is incomplete" #~ msgstr "nama berkas spesial `%s' tidak lengkap" #~ msgid "must supply a remote hostname to `/inet'" #~ msgstr "harus memberikan sebuah remote hostname ke `/inet'" #~ msgid "must supply a remote port to `/inet'" #~ msgstr "harus memberikan sebuah remote port ke `/inet'" #~ msgid "" #~ "\t# %s block(s)\n" #~ "\n" #~ msgstr "" #~ "\t# %s END blok\n" #~ "\n" #~ msgid "reference to uninitialized element `%s[\"%s\"]'" #~ msgstr "referensi ke elemen tidak terinisialisasi `%s[\"%s\"]'" #~ msgid "subscript of array `%s' is null string" #~ msgstr "subscript dari array `%s' adalah string null" #~ msgid "%s: empty (null)\n" #~ msgstr "%s: kosong (null)\n" #~ msgid "%s: empty (zero)\n" #~ msgstr "%s: kosong (nol)\n" #~ msgid "%s: table_size = %d, array_size = %d\n" #~ msgstr "%s: table_size = %d, array_size = %d\n" #~ msgid "%s: array_ref to %s\n" #~ msgstr "%s: array_ref ke %s\n" #~ msgid "statement may have no effect" #~ msgstr "pernyataan mungkin tidak memiliki pengaruh" #~ msgid "`delete array' is a gawk extension" #~ msgstr "`delete array' adalah sebuah ekstensi gawk" #~ msgid "call of `length' without parentheses is deprecated by POSIX" #~ msgstr "" #~ "panggilan dari `length' tanpa tanda kurung sudah ditinggalkan oleh POSIX" #~ msgid "use of non-array as array" #~ msgstr "penggunaan dari bukan array sebagai array" #~ msgid "`%s' is a Bell Labs extension" #~ msgstr "`%s' adalah sebuah ekstensi Bell Labs" #~ msgid "length: untyped argument will be forced to scalar" #~ msgstr "length: argument tidak terketik akan dipaksa ke skalar" #~ msgid "and: received non-numeric first argument" #~ msgstr "and: diterima argumen pertama tidak numerik" #~ msgid "and: received non-numeric second argument" #~ msgstr "and: diterima argumen kedua bukan numerik" #~ msgid "or: received non-numeric first argument" #~ msgstr "or: diterima argumen pertama bukan numerik" #~ msgid "or: received non-numeric second argument" #~ msgstr "or: diterima argumen kedua bukan numerik" #~ msgid "or(%lf, %lf): negative values will give strange results" #~ msgstr "or(%lf, %lf): nilai negatif akan memberikan hasil aneh" #~ msgid "or(%lf, %lf): fractional values will be truncated" #~ msgstr "or(%lf, %lf): nilai pecahan akan dipotong" #~ msgid "xor: received non-numeric first argument" #~ msgstr "xor: diterima argumen pertama bukan numerik" #~ msgid "xor: received non-numeric second argument" #~ msgstr "xor: diterima argumen kedua bukan numerik" #~ msgid "xor(%lf, %lf): fractional values will be truncated" #~ msgstr "xor(%lf, %lf): nilai pecahan akan dipotong" #~ msgid "" #~ "for loop: array `%s' changed size from %ld to %ld during loop execution" #~ msgstr "" #~ "for loop: array `%s' berubah ukuran dari %ld ke %ld selama eksekusi loop" #~ msgid "`break' outside a loop is not portable" #~ msgstr "`break' diluar sebuah loop adalah tidak portabel" #~ msgid "`continue' outside a loop is not portable" #~ msgstr "`continue' diluar sebuah loop tidak portabel" #~ msgid "`next' cannot be called from a BEGIN rule" #~ msgstr "`next' tidak dapat dipanggil dari sebuah aturan BEGIN" #~ msgid "`next' cannot be called from an END rule" #~ msgstr "`next' tidak dapat dipanggil dari sebuah aturan END" #~ msgid "`nextfile' cannot be called from a BEGIN rule" #~ msgstr "`nextfile' tidak dapat dipanggil dari sebuah aturan BEGIN" #~ msgid "`nextfile' cannot be called from an END rule" #~ msgstr "`nextfile' tidak dapat dipanggil dari sebuah aturan END" #~ msgid "statement has no effect" #~ msgstr "pernyataan tidak memiliki efek" #~ msgid "" #~ "concatenation: side effects in one expression have changed the length of " #~ "another!" #~ msgstr "" #~ "concatenation: efek samping dalam satu ekspresi telah mengubah panjang " #~ "dari yang lain!" #~ msgid "assignment used in conditional context" #~ msgstr "penempatan digunakan dalam konteks kondisional" #~ msgid "illegal type (%s) in tree_eval" #~ msgstr "tipe (%s) tidak legal dalam tree_eval" #~ msgid "\t# -- main --\n" #~ msgstr "\t# -- main --\n" #~ msgid "assignment is not allowed to result of builtin function" #~ msgstr "penempatan tidak diijinkan untuk menghasilkan fungsi bawaan" #~ msgid "Operation Not Supported" #~ msgstr "Operasi Tidak Didukung" #~ msgid "invalid tree type %s in redirect()" #~ msgstr "tipe tree %s tidak valid dalam redirect()" #~ msgid "can't open two way socket `%s' for input/output (%s)" #~ msgstr "tidak dapat membuka socket dua arah `%s' untuk input/output (%s)" #~ msgid "/inet/raw client not ready yet, sorry" #~ msgstr "/inet/raw client belum siap, maaf" #~ msgid "only root may use `/inet/raw'." #~ msgstr "hanya root yang boleh menggunakan `/inet/raw'." #~ msgid "/inet/raw server not ready yet, sorry" #~ msgstr "/inet/raw server belum siap, maaf" #~ msgid "file `%s' is a directory" #~ msgstr "berkas `%s' adalah sebuah direktori" #~ msgid "use `PROCINFO[\"%s\"]' instead of `%s'" #~ msgstr "lebih baik gunakan `PROCINFO[\"%s\"]' daripada `%s'" #~ msgid "use `PROCINFO[...]' instead of `/dev/user'" #~ msgstr "lebih baik gunakan `PROCINFO[...]' daripada `/dev/user'" #~ msgid "out of memory" #~ msgstr "kehabisan memori" #~ msgid "`-m[fr]' option irrelevant in gawk" #~ msgstr "pilihan `-m[fr]' tidak relevan dalam gawk" #~ msgid "-m option usage: `-m[fr] nnn'" #~ msgstr "penggunaan pilihan -m: `-m[fr] nnn'" #~ msgid "\t-m[fr] val\n" #~ msgstr "\t-m[fr] val\n" #~ msgid "\t-W compat\t\t--compat\n" #~ msgstr "\t-W compabilitas\t\t--compat\n" #~ msgid "\t-W copyleft\t\t--copyleft\n" #~ msgstr "\t-W copyleft\t\t--copyleft\n" #~ msgid "\t-W usage\t\t--usage\n" #~ msgstr "\t-W penggunaan\t\t--usage\n" #~ msgid "could not find groups: %s" #~ msgstr "tidak dapat menemukan grup: %s" #~ msgid "can't convert string to float" #~ msgstr "tidak dapat mengubah string ke float" #~ msgid "# treated internally as `delete'" #~ msgstr "# diperlakukan secara internal sebagai `delete'" #~ msgid "# this is a dynamically loaded extension function" #~ msgstr "# ini adalah sebuah fungsi yang secara dinamis diload ekstensi" #~ msgid "" #~ "\t# BEGIN block(s)\n" #~ "\n" #~ msgstr "" #~ "\t # BEGIN blok\n" #~ "\n" #~ msgid "unexpected type %s in prec_level" #~ msgstr "tipe %s tidak terduga dalam prec_level" #~ msgid "Unknown node type %s in pp_var" #~ msgstr "tipe titik %s dalam pp_var tidak diketahui" #~ msgid "%s: illegal option -- %c\n" #~ msgstr "%s: pilihan tidak legal -- %c\n" EOF cat > po/zh_CN.po << \EOF # Chinese translations for gawk package # gawk 软件包的简体中文翻译. # Copyright (C) 2007, 2009, 2010 Free Software Foundation, Inc. # This file is distributed under the same license as the gawk package. # LI Daobing , 2007, 2009. # Aron Xu , 2010. # Tianze Wang , 2016. # msgid "" msgstr "" "Project-Id-Version: gawk 4.1.3h\n" "Report-Msgid-Bugs-To: bug-gawk@gnu.org\n" "POT-Creation-Date: 2016-08-25 06:19+0300\n" "PO-Revision-Date: 2016-07-09 13:42+0800\n" "Last-Translator: Tianze Wang \n" "Language-Team: Chinese (simplified) \n" "Language: zh_CN\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" "X-Generator: Poedit 1.8.7.1\n" #: array.c:259 #, c-format msgid "from %s" msgstr "从 %s" #: array.c:360 msgid "attempt to use a scalar value as array" msgstr "试图把标é‡å½“数组使用" #: array.c:362 #, c-format msgid "attempt to use scalar parameter `%s' as an array" msgstr "试图把标é‡å‚数“%sâ€å½“数组使用" #: array.c:365 #, c-format msgid "attempt to use scalar `%s' as an array" msgstr "试图把标é‡â€œ%sâ€å½“数组使用" #: array.c:412 array.c:579 builtin.c:85 builtin.c:1612 builtin.c:1658 #: builtin.c:1671 builtin.c:2160 builtin.c:2179 eval.c:1141 eval.c:1145 #: eval.c:1556 #, c-format msgid "attempt to use array `%s' in a scalar context" msgstr "试图在标é‡çŽ¯å¢ƒä¸­ä½¿ç”¨æ•°ç»„“%sâ€" #: array.c:586 #, c-format msgid "delete: index `%s' not in array `%s'" msgstr "delete:索引“%sâ€ä¸åœ¨æ•°ç»„“%sâ€ä¸­" #: array.c:600 #, c-format msgid "attempt to use scalar `%s[\"%.*s\"]' as an array" msgstr "试图把标é‡â€œ%s[\"%.*s\"]â€å½“数组使用" #: array.c:779 msgid "adump: first argument not an array" msgstr "adump:第一个å‚æ•°ä¸æ˜¯æ•°ç»„" #: array.c:818 msgid "asort: second argument not an array" msgstr "asort:第二个å‚æ•°ä¸æ˜¯æ•°ç»„" #: array.c:819 msgid "asorti: second argument not an array" msgstr "asorti:第二个å‚æ•°ä¸æ˜¯æ•°ç»„" #: array.c:826 msgid "asort: first argument not an array" msgstr "asort:第一个å‚æ•°ä¸æ˜¯æ•°ç»„" #: array.c:827 msgid "asorti: first argument not an array" msgstr "asorti:第一个å‚æ•°ä¸æ˜¯æ•°ç»„" #: array.c:834 msgid "asort: cannot use a subarray of first arg for second arg" msgstr "asort:无法将第一个å‚æ•°çš„å­æ•°ç»„作为第二个å‚æ•°" #: array.c:835 msgid "asorti: cannot use a subarray of first arg for second arg" msgstr "asorti:无法将第一个å‚æ•°çš„å­æ•°ç»„作为第二个å‚æ•°" #: array.c:840 msgid "asort: cannot use a subarray of second arg for first arg" msgstr "asort:无法将第二个å‚æ•°çš„å­æ•°ç»„作为第一个å‚æ•°" #: array.c:841 msgid "asorti: cannot use a subarray of second arg for first arg" msgstr "asorti:无法将第二个å‚æ•°çš„å­æ•°ç»„作为第一个å‚æ•°" #: array.c:1316 #, c-format msgid "`%s' is invalid as a function name" msgstr "“%sâ€ç”¨äºŽå‡½æ•°å是无效的" #: array.c:1320 #, c-format msgid "sort comparison function `%s' is not defined" msgstr "排åºæ¯”较函数“%sâ€æœªå®šä¹‰" #: awkgram.y:225 #, c-format msgid "%s blocks must have an action part" msgstr "%s å—必须有一个行为部分" #: awkgram.y:228 msgid "each rule must have a pattern or an action part" msgstr "æ¯ä¸ªè§„则必须有一个模å¼æˆ–行为部分" #: awkgram.y:319 awkgram.y:330 msgid "old awk does not support multiple `BEGIN' or `END' rules" msgstr "è€çš„ awk ä¸æ”¯æŒå¤šä¸ªâ€œBEGINâ€æˆ–“ENDâ€è§„则" #: awkgram.y:367 #, c-format msgid "`%s' is a built-in function, it cannot be redefined" msgstr "“%sâ€æ˜¯å†…置函数,ä¸èƒ½è¢«é‡å®šä¹‰" #: awkgram.y:416 msgid "regexp constant `//' looks like a C++ comment, but is not" msgstr "正则表达å¼å¸¸é‡â€œ//â€çœ‹èµ·æ¥åƒ C++ 注释,但其实ä¸æ˜¯" #: awkgram.y:420 #, c-format msgid "regexp constant `/%s/' looks like a C comment, but is not" msgstr "正则表达å¼å¸¸é‡â€œ/%s/â€çœ‹èµ·æ¥åƒ C 注释,但其实ä¸æ˜¯" #: awkgram.y:512 #, c-format msgid "duplicate case values in switch body: %s" msgstr "switch 中有é‡å¤çš„ case 值:%s" #: awkgram.y:533 msgid "duplicate `default' detected in switch body" msgstr "switch 中有é‡å¤çš„“defaultâ€" #: awkgram.y:793 awkgram.y:3774 msgid "`break' is not allowed outside a loop or switch" msgstr "“breakâ€åœ¨å¾ªçŽ¯æˆ– switch外使用是ä¸å…许的" #: awkgram.y:802 awkgram.y:3766 msgid "`continue' is not allowed outside a loop" msgstr "“continueâ€åœ¨å¾ªçŽ¯å¤–使用是ä¸å…许的" #: awkgram.y:812 #, c-format msgid "`next' used in %s action" msgstr "“nextâ€è¢«ç”¨äºŽ %s æ“作" #: awkgram.y:821 #, c-format msgid "`nextfile' used in %s action" msgstr "“nextfileâ€è¢«ç”¨äºŽ %s æ“作" #: awkgram.y:845 msgid "`return' used outside function context" msgstr "“returnâ€åœ¨å‡½æ•°å¤–使用" #: awkgram.y:919 msgid "plain `print' in BEGIN or END rule should probably be `print \"\"'" msgstr "在 BEGIN 或 END 规则中,“printâ€ä¹Ÿè®¸åº”该写åšâ€œprint \"\"â€" #: awkgram.y:985 awkgram.y:1034 msgid "`delete' is not allowed with SYMTAB" msgstr "“deleteâ€ä¸èƒ½ä¸Ž SYMTAB 共用" #: awkgram.y:987 awkgram.y:1036 msgid "`delete' is not allowed with FUNCTAB" msgstr "“deleteâ€ä¸èƒ½ä¸Ž FUNCTAB 共用" #: awkgram.y:1021 awkgram.y:1025 msgid "`delete(array)' is a non-portable tawk extension" msgstr "“delete(array)â€æ˜¯ä¸å¯ç§»æ¤çš„ tawk 扩展" #: awkgram.y:1146 msgid "multistage two-way pipelines don't work" msgstr "多阶åŒå‘管é“无法工作" #: awkgram.y:1264 msgid "regular expression on right of assignment" msgstr "正则表达å¼åœ¨èµ‹å€¼ç®—符的å³è¾¹" #: awkgram.y:1275 msgid "regular expression on left of `~' or `!~' operator" msgstr "正则表达å¼åœ¨â€œ~â€æˆ–“!~â€ç®—符的左边" #: awkgram.y:1291 awkgram.y:1433 msgid "old awk does not support the keyword `in' except after `for'" msgstr "è€ awk åªæ”¯æŒå…³é”®è¯â€œinâ€åœ¨â€œforâ€çš„åŽé¢" #: awkgram.y:1301 msgid "regular expression on right of comparison" msgstr "正则表达å¼åœ¨æ¯”较算符的å³è¾¹" #: awkgram.y:1413 #, c-format msgid "non-redirected `getline' invalid inside `%s' rule" msgstr "éžé‡å®šå‘的“getline†在“%sâ€è§„则中无效" #: awkgram.y:1416 msgid "non-redirected `getline' undefined inside END action" msgstr "在 END 环境中,éžé‡å®šå‘的“getlineâ€æœªå®šä¹‰" #: awkgram.y:1435 msgid "old awk does not support multidimensional arrays" msgstr "è€ awk ä¸æ”¯æŒå¤šç»´æ•°ç»„" #: awkgram.y:1532 msgid "call of `length' without parentheses is not portable" msgstr "ä¸å¸¦æ‹¬å·è°ƒç”¨â€œlengthâ€æ˜¯ä¸å¯ä»¥ç§»æ¤çš„" #: awkgram.y:1598 msgid "indirect function calls are a gawk extension" msgstr "间接函数调用是一个 gawk 扩展" #: awkgram.y:1611 #, c-format msgid "can not use special variable `%s' for indirect function call" msgstr "无法使用特殊å˜é‡â€œ%sâ€ä½œä¸ºé—´æŽ¥å‡½æ•°çš„å‚æ•°" #: awkgram.y:1637 #, c-format msgid "attempt to use non-function `%s' in function call" msgstr "试图把éžå‡½æ•°â€œ%sâ€å½“函数æ¥è°ƒç”¨" #: awkgram.y:1701 msgid "invalid subscript expression" msgstr "无效的下标表达å¼" #: awkgram.y:2047 awkgram.y:2067 gawkapi.c:206 gawkapi.c:223 msg.c:126 msgid "warning: " msgstr "警告:" #: awkgram.y:2065 gawkapi.c:192 gawkapi.c:221 msg.c:158 msgid "fatal: " msgstr "致命错误:" #: awkgram.y:2116 msgid "unexpected newline or end of string" msgstr "未预期的新行或字符串结æŸ" #: awkgram.y:2397 awkgram.y:2473 awkgram.y:2696 debug.c:523 debug.c:539 #: debug.c:2812 debug.c:5101 #, c-format msgid "can't open source file `%s' for reading (%s)" msgstr "无法以打开æºæ–‡ä»¶â€œ%sâ€è¿›è¡Œè¯»å–(%s)" #: awkgram.y:2398 awkgram.y:2523 #, c-format msgid "can't open shared library `%s' for reading (%s)" msgstr "无法以打开共享库“%sâ€è¿›è¡Œè¯»å–(%s)" #: awkgram.y:2400 awkgram.y:2474 awkgram.y:2524 builtin.c:135 debug.c:5252 msgid "reason unknown" msgstr "未知原因" #: awkgram.y:2409 awkgram.y:2433 #, c-format msgid "can't include `%s' and use it as a program file" msgstr "无法包å«â€œ%sâ€å¹¶å°†å…¶ä½œä¸ºç¨‹åºæ–‡ä»¶ä½¿ç”¨" #: awkgram.y:2422 #, c-format msgid "already included source file `%s'" msgstr "å·²ç»åŒ…å«äº†æºæ–‡ä»¶â€œ%sâ€" #: awkgram.y:2423 #, c-format msgid "already loaded shared library `%s'" msgstr "å·²ç»åŠ è½½äº†å…±äº«åº““%sâ€" #: awkgram.y:2458 msgid "@include is a gawk extension" msgstr "@include 是 gawk 扩展" #: awkgram.y:2464 msgid "empty filename after @include" msgstr "@include åŽçš„文件å为空" #: awkgram.y:2508 msgid "@load is a gawk extension" msgstr "@load 是 gawk 扩展" #: awkgram.y:2514 msgid "empty filename after @load" msgstr "@load åŽçš„文件å为空" #: awkgram.y:2648 msgid "empty program text on command line" msgstr "命令行中程åºä½“为空" #: awkgram.y:2763 #, c-format msgid "can't read sourcefile `%s' (%s)" msgstr "无法读å–æºæ–‡ä»¶â€œ%sâ€(%s)" #: awkgram.y:2774 #, c-format msgid "source file `%s' is empty" msgstr "æºæ–‡ä»¶â€œ%sâ€ä¸ºç©º" #: awkgram.y:2833 #, c-format msgid "PEBKAC error: invalid character '\\%03o' in source code" msgstr "PEBKAC 错误:æºä»£ç ä¸­æœ‰æ— æ•ˆçš„字符“\\%03oâ€" #: awkgram.y:2964 msgid "source file does not end in newline" msgstr "æºæ–‡ä»¶ä¸ä»¥æ¢è¡Œç¬¦ç»“æŸ" #: awkgram.y:3081 msgid "unterminated regexp ends with `\\' at end of file" msgstr "未终止的正则表达å¼åœ¨æ–‡ä»¶ç»“æŸå¤„以“\\â€ç»“æŸ" #: awkgram.y:3108 #, c-format msgid "%s: %d: tawk regex modifier `/.../%c' doesn't work in gawk" msgstr "%s:%d:tawk 正则表达å¼ä¿®é¥°ç¬¦â€œ/.../%câ€æ— æ³•åœ¨ gawk 中工作" #: awkgram.y:3112 #, c-format msgid "tawk regex modifier `/.../%c' doesn't work in gawk" msgstr "tawk 正则表达å¼ä¿®é¥°ç¬¦â€œ/.../%câ€æ— æ³•åœ¨ gawk 中工作" #: awkgram.y:3119 msgid "unterminated regexp" msgstr "未终止的正则表达å¼" #: awkgram.y:3123 msgid "unterminated regexp at end of file" msgstr "未终止的正则表达å¼åœ¨æ–‡ä»¶ç»“æŸå¤„" #: awkgram.y:3181 msgid "use of `\\ #...' line continuation is not portable" msgstr "使用“\\ #...â€æ¥ç»­è¡Œæ˜¯ä¸å¯ç§»æ¤çš„" #: awkgram.y:3197 msgid "backslash not last character on line" msgstr "åæ–œæ ä¸æ˜¯è¡Œçš„最åŽä¸€ä¸ªå­—符" #: awkgram.y:3235 awkgram.y:3237 msgid "multidimensional arrays are a gawk extension" msgstr "多维数组是一个 gawk 扩展" #: awkgram.y:3262 msgid "POSIX does not allow operator `**='" msgstr "POSIX ä¸å…许æ“作符“**=â€" #: awkgram.y:3264 msgid "old awk does not support operator `**='" msgstr "è€ awk ä¸æ”¯æŒæ“作符“**=â€" #: awkgram.y:3273 msgid "POSIX does not allow operator `**'" msgstr "POSIX ä¸å…许æ“作符“**â€" #: awkgram.y:3275 msgid "old awk does not support operator `**'" msgstr "è€ awk ä¸æ”¯æŒæ“作符“**â€" #: awkgram.y:3310 msgid "operator `^=' is not supported in old awk" msgstr "è€ awk ä¸æ”¯æŒæ“作符“^=â€" #: awkgram.y:3318 msgid "operator `^' is not supported in old awk" msgstr "è€ awk ä¸æ”¯æŒæ“作符“^â€" #: awkgram.y:3415 awkgram.y:3433 command.y:1187 msgid "unterminated string" msgstr "未结æŸçš„字符串" #: awkgram.y:3654 #, c-format msgid "invalid char '%c' in expression" msgstr "表达å¼ä¸­çš„无效字符“%câ€" #: awkgram.y:3701 #, c-format msgid "`%s' is a gawk extension" msgstr "“%sâ€æ˜¯ gawk 扩展" #: awkgram.y:3706 #, c-format msgid "POSIX does not allow `%s'" msgstr "POSIX ä¸å…许“%sâ€" #: awkgram.y:3714 #, c-format msgid "`%s' is not supported in old awk" msgstr "è€ awk ä¸æ”¯æŒâ€œ%sâ€" #: awkgram.y:3804 msgid "`goto' considered harmful!\n" msgstr "“gotoâ€æœ‰å®³ï¼\n" #: awkgram.y:3873 #, c-format msgid "%d is invalid as number of arguments for %s" msgstr "%d 是 %s 的无效å‚数个数" #: awkgram.y:3908 #, c-format msgid "%s: string literal as last arg of substitute has no effect" msgstr "%s:字符串作为 substitute 的最åŽä¸€ä¸ªå‚数无任何效果" #: awkgram.y:3913 #, c-format msgid "%s third parameter is not a changeable object" msgstr "%s 第三个å‚æ•°ä¸æ˜¯ä¸€ä¸ªå¯å˜å¯¹è±¡" #: awkgram.y:3996 awkgram.y:3999 msgid "match: third argument is a gawk extension" msgstr "match:第三个å‚数是 gawk 扩展" #: awkgram.y:4053 awkgram.y:4056 msgid "close: second argument is a gawk extension" msgstr "close:第二个å‚数是 gawk 扩展" #: awkgram.y:4068 msgid "use of dcgettext(_\"...\") is incorrect: remove leading underscore" msgstr "使用 dcgettext(_\"...\") 是错误的:去掉开始的下划线" #: awkgram.y:4083 msgid "use of dcngettext(_\"...\") is incorrect: remove leading underscore" msgstr "使用 dcngettext(_\"...\") 是错误的:去掉开始的下划线" #: awkgram.y:4102 msgid "index: regexp constant as second argument is not allowed" msgstr "index:ä¸å…许将正则表达å¼å¸¸é‡ä½œä¸ºç¬¬äºŒä¸ªå‚æ•°" #: awkgram.y:4155 #, c-format msgid "function `%s': parameter `%s' shadows global variable" msgstr "函数“%sâ€ï¼šå‚数“%sâ€æŽ©ç›–了公共å˜é‡" #: awkgram.y:4214 debug.c:4087 debug.c:4130 debug.c:5250 #, c-format msgid "could not open `%s' for writing (%s)" msgstr "无法以写模å¼æ‰“开“%s†(%s)" #: awkgram.y:4215 msgid "sending variable list to standard error" msgstr "å‘é€å˜é‡åˆ—表到标准错误输出" #: awkgram.y:4223 #, c-format msgid "%s: close failed (%s)" msgstr "%s:关闭失败(%s)" #: awkgram.y:4248 msgid "shadow_funcs() called twice!" msgstr "shadow_funcs() 被调用两次ï¼" #: awkgram.y:4256 msgid "there were shadowed variables." msgstr "有å˜é‡è¢«æŽ©ç›–。" #: awkgram.y:4327 #, c-format msgid "function name `%s' previously defined" msgstr "函数å“%sâ€å‰é¢å·²å®šä¹‰" #: awkgram.y:4373 #, c-format msgid "function `%s': can't use function name as parameter name" msgstr "函数“%sâ€ï¼šæ— æ³•ä½¿ç”¨å‡½æ•°å作为å‚æ•°å" #: awkgram.y:4376 #, c-format msgid "function `%s': can't use special variable `%s' as a function parameter" msgstr "函数“%sâ€ï¼šæ— æ³•ä½¿ç”¨ç‰¹æ®Šå˜é‡â€œ%sâ€ä½œä¸ºå‡½æ•°å‚æ•°" #: awkgram.y:4384 #, c-format msgid "function `%s': parameter #%d, `%s', duplicates parameter #%d" msgstr "函数“%sâ€ï¼šç¬¬ %d 个å‚æ•°, “%sâ€, 与第 %d 个å‚æ•°é‡å¤" #: awkgram.y:4471 awkgram.y:4477 #, c-format msgid "function `%s' called but never defined" msgstr "调用了函数“%sâ€ï¼Œä½†å…¶æœªè¢«å®šä¹‰" #: awkgram.y:4481 #, c-format msgid "function `%s' defined but never called directly" msgstr "定义了函数“%sâ€ï¼Œä½†ä»Žæœªè¢«è°ƒç”¨" #: awkgram.y:4513 #, c-format msgid "regexp constant for parameter #%d yields boolean value" msgstr "第 %d 个å‚数的正则表达å¼å¸¸é‡äº§ç”Ÿå¸ƒå°”值" #: awkgram.y:4528 #, c-format msgid "" "function `%s' called with space between name and `(',\n" "or used as a variable or an array" msgstr "" "函数“%sâ€è¢«è°ƒç”¨æ—¶å字与“(â€é—´æœ‰ç©ºæ ¼ï¼Œ\n" "或被用作å˜é‡æˆ–数组" #: awkgram.y:4734 msgid "division by zero attempted" msgstr "试图除0" #: awkgram.y:4743 #, c-format msgid "division by zero attempted in `%%'" msgstr "在“%%â€ä¸­è¯•å›¾é™¤ 0" #: awkgram.y:5064 msgid "" "cannot assign a value to the result of a field post-increment expression" msgstr "无法将值赋给字段åŽå¢žè¡¨è¾¾å¼" #: awkgram.y:5067 #, c-format msgid "invalid target of assignment (opcode %s)" msgstr "赋值的目标无效(æ“ä½œç  %s)" #: builtin.c:133 #, c-format msgid "%s to \"%s\" failed (%s)" msgstr "%s 到 \"%s\" 失败 (%s)" #: builtin.c:134 msgid "standard output" msgstr "标准输出" #: builtin.c:148 msgid "exp: received non-numeric argument" msgstr "exp:收到éžæ•°å­—å‚æ•°" #: builtin.c:154 #, c-format msgid "exp: argument %g is out of range" msgstr "exp:å‚æ•° %g 超出范围" #: builtin.c:229 #, c-format msgid "fflush: cannot flush: pipe `%s' opened for reading, not writing" msgstr "fflush:无法使用:管é““%sâ€ä»¥åªè¯»æ–¹å¼æ‰“开,ä¸å¯å†™" #: builtin.c:232 #, c-format msgid "fflush: cannot flush: file `%s' opened for reading, not writing" msgstr "fflush:无法使用:文件“%sâ€ä»¥åªè¯»æ–¹å¼æ‰“开,ä¸å¯å†™" #: builtin.c:241 #, c-format msgid "fflush: cannot flush: two-way pipe `%s' has closed write end" msgstr "fflush:无法刷新:åŒå‘管é““%sâ€çš„写入端已被关闭" #: builtin.c:247 #, c-format msgid "fflush: `%s' is not an open file, pipe or co-process" msgstr "fflush:“%sâ€ä¸æ˜¯ä¸€ä¸ªå·²æ‰“开文件ã€ç®¡é“或åˆä½œè¿›ç¨‹" #: builtin.c:354 msgid "index: received non-string first argument" msgstr "index:第一个å‚æ•°ä¸æ˜¯å­—符串" #: builtin.c:356 msgid "index: received non-string second argument" msgstr "index:第二个å‚æ•°ä¸æ˜¯å­—符串" #: builtin.c:469 mpfr.c:781 msgid "int: received non-numeric argument" msgstr "int:收到éžæ•°å­—å‚æ•°" #: builtin.c:506 msgid "length: received array argument" msgstr "length:收到数组å‚æ•°" #: builtin.c:509 msgid "`length(array)' is a gawk extension" msgstr "“length(array)â€æ˜¯ gawk 扩展" #: builtin.c:528 msgid "length: received non-string argument" msgstr "length:收到éžå­—符串å‚æ•°" #: builtin.c:557 msgid "log: received non-numeric argument" msgstr "log:收到éžæ•°å­—å‚æ•°" #: builtin.c:560 #, c-format msgid "log: received negative argument %g" msgstr "log:收到负数å‚æ•° %g" #: builtin.c:758 builtin.c:763 builtin.c:914 msgid "fatal: must use `count$' on all formats or none" msgstr "致命错误:è¦ä¹ˆåœ¨æ‰€æœ‰æ ¼å¼ä¸Šä½¿ç”¨â€œcount$â€ï¼Œè¦ä¹ˆå®Œå…¨ä¸ä½¿ç”¨" #: builtin.c:833 #, c-format msgid "field width is ignored for `%%' specifier" msgstr "“%%â€é™å®šç¬¦çš„字段宽度被忽略" #: builtin.c:835 #, c-format msgid "precision is ignored for `%%' specifier" msgstr "“%%â€æ述符的精度被忽略" #: builtin.c:837 #, c-format msgid "field width and precision are ignored for `%%' specifier" msgstr "“%%â€æ述符的字段宽度和精度被忽略" #: builtin.c:888 msgid "fatal: `$' is not permitted in awk formats" msgstr "致命错误:awk æ ¼å¼ä¸­ä¸å…许 “$â€" #: builtin.c:897 msgid "fatal: arg count with `$' must be > 0" msgstr "致命错误:å«æœ‰â€œ$â€çš„å‚数个数必须大于0" #: builtin.c:901 #, c-format msgid "fatal: arg count %ld greater than total number of supplied arguments" msgstr "致命错误:å‚数个数 %ld 大于æä¾›å‚数的总数" #: builtin.c:905 msgid "fatal: `$' not permitted after period in format" msgstr "致命错误:ä¸å…许在格å¼ä¸­çš„“.â€åŽä½¿ç”¨â€œ$â€" #: builtin.c:924 msgid "fatal: no `$' supplied for positional field width or precision" msgstr "致命错误:没有为格å¼å®½åº¦æˆ–精度æ供“$â€" #: builtin.c:994 msgid "`l' is meaningless in awk formats; ignored" msgstr "“lâ€åœ¨ awk æ ¼å¼ä¸­æ— æ„义;忽略" #: builtin.c:998 msgid "fatal: `l' is not permitted in POSIX awk formats" msgstr "致命错误:ä¸å…许在 POSIX awk æ ¼å¼ä¸­ä½¿ç”¨â€œlâ€" #: builtin.c:1011 msgid "`L' is meaningless in awk formats; ignored" msgstr "“Lâ€åœ¨ awk æ ¼å¼ä¸­æ— æ„义;忽略" #: builtin.c:1015 msgid "fatal: `L' is not permitted in POSIX awk formats" msgstr "致命错误:ä¸å…许在 POSIX awk æ ¼å¼ä¸­ä½¿ç”¨â€œLâ€" #: builtin.c:1028 msgid "`h' is meaningless in awk formats; ignored" msgstr "“hâ€åœ¨ awk æ ¼å¼ä¸­æ— æ„义;忽略" #: builtin.c:1032 msgid "fatal: `h' is not permitted in POSIX awk formats" msgstr "致命错误:ä¸å…许在 POSIX awk æ ¼å¼ä¸­ä½¿ç”¨â€œhâ€" #: builtin.c:1058 #, c-format msgid "[s]printf: value %g is too big for %%c format" msgstr "[s]printf:值 %g 对“%%câ€æ ¼å¼æ¥è¯´è¶…出范围" #: builtin.c:1071 #, c-format msgid "[s]printf: value %g is not a valid wide character" msgstr "[s]printf:值 %g ä¸æ˜¯æœ‰æ•ˆçš„宽字符" #: builtin.c:1457 #, c-format msgid "[s]printf: value %g is out of range for `%%%c' format" msgstr "[s]printf:值 %g 对“%%%câ€æ ¼å¼æ¥è¯´è¶…出范围" #: builtin.c:1555 #, c-format msgid "ignoring unknown format specifier character `%c': no argument converted" msgstr "忽略ä½ç½®çš„æ ¼å¼åŒ–字符“%câ€ï¼šæ— å‚数被转化" #: builtin.c:1560 msgid "fatal: not enough arguments to satisfy format string" msgstr "致命错误:å‚æ•°æ•°é‡å°‘于格å¼æ•°é‡" #: builtin.c:1562 msgid "^ ran out for this one" msgstr "^ 跑出范围" #: builtin.c:1569 msgid "[s]printf: format specifier does not have control letter" msgstr "[s]printf:指定格å¼ä¸å«æŽ§åˆ¶å­—符" #: builtin.c:1572 msgid "too many arguments supplied for format string" msgstr "相对格å¼æ¥è¯´å‚数个数过多" #: builtin.c:1631 msgid "sprintf: no arguments" msgstr "sprintf:没有å‚æ•°" #: builtin.c:1654 builtin.c:1665 msgid "printf: no arguments" msgstr "printf:没有å‚æ•°" #: builtin.c:1676 msgid "printf: attempt to write to closed write end of two-way pipe" msgstr "printf:试图å‘写入端已被关闭的åŒå‘管é“中写入数æ®" #: builtin.c:1713 msgid "sqrt: received non-numeric argument" msgstr "sqrt:收到éžæ•°å­—å‚æ•°" #: builtin.c:1717 #, c-format msgid "sqrt: called with negative argument %g" msgstr "sqrt:收到负数å‚æ•° %g" #: builtin.c:1748 #, c-format msgid "substr: length %g is not >= 1" msgstr "substr:长度 %g å°äºŽ 1" #: builtin.c:1750 #, c-format msgid "substr: length %g is not >= 0" msgstr "substr:长度 %g å°äºŽ 0" #: builtin.c:1764 #, c-format msgid "substr: non-integer length %g will be truncated" msgstr "substr:éžæ•´æ•°çš„长度 %g 会被截断" #: builtin.c:1769 #, c-format msgid "substr: length %g too big for string indexing, truncating to %g" msgstr "substr:长度 %g 作为字符串索引过大,截断至 %g" #: builtin.c:1781 #, c-format msgid "substr: start index %g is invalid, using 1" msgstr "substr:开始åæ ‡ %g 无效,使用 1" #: builtin.c:1786 #, c-format msgid "substr: non-integer start index %g will be truncated" msgstr "substr:éžæ•´æ•°çš„开始索引 %g 会被截断" #: builtin.c:1809 msgid "substr: source string is zero length" msgstr "substr:æºå­—符串长度为0" #: builtin.c:1823 #, c-format msgid "substr: start index %g is past end of string" msgstr "substr:开始åæ ‡ %g 超出字符串尾部" #: builtin.c:1831 #, 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:1903 msgid "strftime: format value in PROCINFO[\"strftime\"] has numeric type" msgstr "strftime:PROCINFO[\"strftime\"] 中的格å¼å€¼å«æœ‰æ•°å€¼ç±»åž‹" #: builtin.c:1926 msgid "strftime: received non-numeric second argument" msgstr "strftime:第二个å‚æ•°ä¸æ˜¯æ•°å­—" #: builtin.c:1936 msgid "strftime: second argument less than 0 or too big for time_t" msgstr "strftime:第二个å‚æ•°å°äºŽ0,或对于 time_t æ¥è¯´å¤ªå¤§" #: builtin.c:1943 msgid "strftime: second argument out of range for time_t" msgstr "strftime:第二个å‚数对于 time_t æ¥è¯´å¤ªå¤§" #: builtin.c:1952 msgid "strftime: received non-string first argument" msgstr "strftime:第一个å‚æ•°ä¸æ˜¯å­—符串" #: builtin.c:1959 msgid "strftime: received empty format string" msgstr "strftime:收到空格å¼å­—符串" #: builtin.c:2028 msgid "mktime: received non-string argument" msgstr "mktime:收到éžå­—符串å‚æ•°" #: builtin.c:2045 msgid "mktime: at least one of the values is out of the default range" msgstr "mktime:至少有一个值超出默认范围" #: builtin.c:2081 msgid "'system' function not allowed in sandbox mode" msgstr "沙箱模å¼ä¸­ä¸å…许使用\"system\"函数" #: builtin.c:2086 msgid "system: received non-string argument" msgstr "system:收到éžå­—符串å‚æ•°" #: builtin.c:2165 builtin.c:2230 msgid "print: attempt to write to closed write end of two-way pipe" msgstr "print:试图å‘写入端已被关闭的åŒå‘管é“中写入数æ®" #: builtin.c:2248 #, c-format msgid "reference to uninitialized field `$%d'" msgstr "引用未åˆå§‹åŒ–的字段“$%dâ€" #: builtin.c:2333 msgid "tolower: received non-string argument" msgstr "tolower:收到éžå­—符串å‚æ•°" #: builtin.c:2364 msgid "toupper: received non-string argument" msgstr "toupper:收到éžå­—符串å‚æ•°" #: builtin.c:2397 mpfr.c:681 msgid "atan2: received non-numeric first argument" msgstr "atan2:第一个å‚æ•°ä¸æ˜¯æ•°å­—" #: builtin.c:2399 mpfr.c:683 msgid "atan2: received non-numeric second argument" msgstr "atan2:第二个å‚æ•°ä¸æ˜¯æ•°å­—" #: builtin.c:2418 msgid "sin: received non-numeric argument" msgstr "sin:收到éžæ•°å­—å‚æ•°" #: builtin.c:2434 msgid "cos: received non-numeric argument" msgstr "cos:收到éžæ•°å­—å‚æ•°" #: builtin.c:2487 mpfr.c:1180 msgid "srand: received non-numeric argument" msgstr "srand:收到éžæ•°å­—å‚æ•°" #: builtin.c:2518 msgid "match: third argument is not an array" msgstr "match:第三个å‚æ•°ä¸æ˜¯æ•°ç»„" #: builtin.c:2779 #, c-format msgid "gensub: third argument `%.*s' treated as 1" msgstr "gensub:第三个å‚数“%.*sâ€è¢«å½“作 1" #: builtin.c:2794 #, c-format msgid "gensub: third argument %g treated as 1" msgstr "gensub:第三个å‚æ•° %g 被当作 1" #: builtin.c:3096 #, c-format msgid "%s: can be called indirectly only with two arguments" msgstr "%s:间接调用时åªèƒ½ä¼ é€’两个å‚æ•°" #: builtin.c:3186 #, c-format msgid "indirect call to %s requires at least two arguments" msgstr "间接调用 %s 需è¦ä¼ é€’至少两个å‚æ•°" #: builtin.c:3238 msgid "lshift: received non-numeric first argument" msgstr "lshift:第一个å‚æ•°ä¸æ˜¯æ•°å­—" #: builtin.c:3240 msgid "lshift: received non-numeric second argument" msgstr "lshift:第二个å‚æ•°ä¸æ˜¯æ•°å­—" #: builtin.c:3246 #, c-format msgid "lshift(%f, %f): negative values will give strange results" msgstr "lshift(%f, %f):负值会得到奇怪的结果" #: builtin.c:3248 #, c-format msgid "lshift(%f, %f): fractional values will be truncated" msgstr "lshift(%f, %f):å°æ•°éƒ¨åˆ†ä¼šè¢«æˆªæ–­" #: builtin.c:3250 #, c-format msgid "lshift(%f, %f): too large shift value will give strange results" msgstr "lshift(%f, %f):过大的移ä½ä¼šå¾—到奇怪的结果" #: builtin.c:3275 msgid "rshift: received non-numeric first argument" msgstr "rshift:第一个å‚æ•°ä¸æ˜¯æ•°å­—" #: builtin.c:3277 msgid "rshift: received non-numeric second argument" msgstr "rshift:第二个å‚æ•°ä¸æ˜¯æ•°å­—" #: builtin.c:3283 #, c-format msgid "rshift(%f, %f): negative values will give strange results" msgstr "rshift(%f, %f):负值会得到奇怪的结果" #: builtin.c:3285 #, c-format msgid "rshift(%f, %f): fractional values will be truncated" msgstr "rshift(%f, %f):å°æ•°éƒ¨åˆ†ä¼šè¢«æˆªæ–­" #: builtin.c:3287 #, c-format msgid "rshift(%f, %f): too large shift value will give strange results" msgstr "rshift(%f, %f):过大的移ä½ä¼šå¾—到奇怪的结果" #: builtin.c:3312 mpfr.c:992 msgid "and: called with less than two arguments" msgstr "and:调用时传递的å‚æ•°ä¸è¶³2个" #: builtin.c:3317 #, c-format msgid "and: argument %d is non-numeric" msgstr "and:å‚æ•° %d ä¸æ˜¯æ•°å€¼" #: builtin.c:3321 #, c-format msgid "and: argument %d negative value %g will give strange results" msgstr "and:å‚æ•° %d 负值 %g 会得到奇怪的结果" #: builtin.c:3344 mpfr.c:1024 msgid "or: called with less than two arguments" msgstr "or:调用时传递的å‚æ•°ä¸è¶³2个" #: builtin.c:3349 #, c-format msgid "or: argument %d is non-numeric" msgstr "or:å‚æ•° %d ä¸æ˜¯æ•°å€¼" #: builtin.c:3353 #, c-format msgid "or: argument %d negative value %g will give strange results" msgstr "or:å‚æ•° %d 负值 %g 会得到奇怪的结果" #: builtin.c:3375 mpfr.c:1055 msgid "xor: called with less than two arguments" msgstr "xor:调用时传递的å‚æ•°ä¸è¶³2个" #: builtin.c:3381 #, c-format msgid "xor: argument %d is non-numeric" msgstr "xor:å‚æ•° %d ä¸æ˜¯æ•°å€¼" #: builtin.c:3385 #, c-format msgid "xor: argument %d negative value %g will give strange results" msgstr "xor:å‚æ•° %d 负值 %g 会得到奇怪的结果" #: builtin.c:3410 mpfr.c:811 msgid "compl: received non-numeric argument" msgstr "compl:收到éžæ•°å­—å‚æ•°" #: builtin.c:3416 #, c-format msgid "compl(%f): negative value will give strange results" msgstr "compl(%f):负值会得到奇怪的结果" #: builtin.c:3418 #, c-format msgid "compl(%f): fractional value will be truncated" msgstr "compl(%f):å°æ•°éƒ¨åˆ†ä¼šè¢«æˆªæ–­" #: builtin.c:3588 #, c-format msgid "dcgettext: `%s' is not a valid locale category" msgstr "dcgettext:“%sâ€ä¸æ˜¯ä¸€ä¸ªæœ‰æ•ˆçš„区域目录" #: command.y:226 #, c-format msgid "Type (g)awk statement(s). End with the command \"end\"\n" msgstr "输入 (g)awk 语å¥ï¼Œå¹¶ä»¥â€œendâ€å‘½ä»¤ç»“æŸ\n" #: command.y:290 #, c-format msgid "invalid frame number: %d" msgstr "层数无效:%d" #: command.y:296 #, c-format msgid "info: invalid option - \"%s\"" msgstr "info:选项无效 - “%sâ€" #: command.y:322 #, c-format msgid "source \"%s\": already sourced." msgstr "source \"%s\":已ç»æ·»åŠ ã€‚" #: command.y:327 #, c-format msgid "save \"%s\": command not permitted." msgstr "save \"%s\":ä¸å…许使用该命令。" #: command.y:340 msgid "Can't use command `commands' for breakpoint/watchpoint commands" msgstr "无法对断点/监视点使用命令“commandsâ€" #: command.y:342 msgid "no breakpoint/watchpoint has been set yet" msgstr "尚未设置断点/监视点" #: command.y:344 msgid "invalid breakpoint/watchpoint number" msgstr "断点/监视点编å·æ— æ•ˆ" #: command.y:349 #, c-format msgid "Type commands for when %s %d is hit, one per line.\n" msgstr "当命中 %s %d 时,请输入命令,æ¯è¡Œä¸€å¥ã€‚\n" #: command.y:351 #, c-format msgid "End with the command \"end\"\n" msgstr "以命令“endâ€ç»“æŸ\n" #: command.y:358 msgid "`end' valid only in command `commands' or `eval'" msgstr "“endâ€ä»…在命令“commandsâ€æˆ–“evalâ€ä¸­æœ‰æ•ˆ" #: command.y:368 msgid "`silent' valid only in command `commands'" msgstr "“silentâ€ä»…在命令“commandsâ€ä¸­æœ‰æ•ˆ" #: command.y:374 #, c-format msgid "trace: invalid option - \"%s\"" msgstr "trace:选项无效 - “%sâ€" #: command.y:388 msgid "condition: invalid breakpoint/watchpoint number" msgstr "condition:断点/监视点编å·æ— æ•ˆ" #: command.y:450 msgid "argument not a string" msgstr "å‚æ•°ä¸æ˜¯å­—符串" #: command.y:460 command.y:465 #, c-format msgid "option: invalid parameter - \"%s\"" msgstr "option:å‚数无效 - “%sâ€" #: command.y:475 #, c-format msgid "no such function - \"%s\"" msgstr "函数ä¸å­˜åœ¨ - “%sâ€" #: command.y:532 #, c-format msgid "enable: invalid option - \"%s\"" msgstr "enable:选项无效 - “%sâ€" #: command.y:598 #, c-format msgid "invalid range specification: %d - %d" msgstr "指定的范围无效:%d - %d" #: command.y:660 msgid "non-numeric value for field number" msgstr "字段编å·ä¸æ˜¯æ•°å€¼" #: command.y:681 command.y:688 msgid "non-numeric value found, numeric expected" msgstr "å‘现了éžæ•°å­—值,请æ供数值" #: command.y:713 command.y:719 msgid "non-zero integer value" msgstr "éžé›¶æ•´æ•°å€¼" #: command.y:818 msgid "" "backtrace [N] - print trace of all or N innermost (outermost if N < 0) " "frames." msgstr "backtrace [N] - 显示所有或最近 N 层 (è‹¥ N < 0,则显示最远 N 层) 调用。" #: command.y:820 msgid "" "break [[filename:]N|function] - set breakpoint at the specified location." msgstr "break [[文件å:]N|函数] - 在指定处设置断点。" #: command.y:822 msgid "clear [[filename:]N|function] - delete breakpoints previously set." msgstr "clear [[文件å:]N|函数] - 删除之å‰è®¾ç½®çš„断点。" #: command.y:824 msgid "" "commands [num] - starts a list of commands to be executed at a " "breakpoint(watchpoint) hit." msgstr "commands [ç¼–å·] - 在断点 (监视点) 处执行一系列命令。" #: command.y:826 msgid "condition num [expr] - set or clear breakpoint or watchpoint condition." msgstr "condition ç¼–å· [表达å¼] - 设置或清除断点/监视点æ¡ä»¶ã€‚" #: command.y:828 msgid "continue [COUNT] - continue program being debugged." msgstr "continue [次数] - 继续è¿è¡Œæ‰€è°ƒè¯•çš„程åºã€‚" #: command.y:830 msgid "delete [breakpoints] [range] - delete specified breakpoints." msgstr "delete [断点] [范围] - 删除指定断点。" #: command.y:832 msgid "disable [breakpoints] [range] - disable specified breakpoints." msgstr "disable [断点] [范围] - ç¦ç”¨æŒ‡å®šæ–­ç‚¹ã€‚" #: command.y:834 msgid "display [var] - print value of variable each time the program stops." msgstr "display [å˜é‡] - æ¯å½“程åºåœæ­¢æ—¶ï¼Œæ˜¾ç¤ºæŒ‡å®šå˜é‡çš„值。" #: command.y:836 msgid "down [N] - move N frames down the stack." msgstr "down [N] - 在栈中å‘下移动 N 层。" #: command.y:838 msgid "dump [filename] - dump instructions to file or stdout." msgstr "dump [文件å] - 将指令转储到文件或标准输出。" #: command.y:840 msgid "enable [once|del] [breakpoints] [range] - enable specified breakpoints." msgstr "enable [once|del] [断点] [范围] - å¯ç”¨æŒ‡å®šæ–­ç‚¹ã€‚" #: command.y:842 msgid "end - end a list of commands or awk statements." msgstr "end - 结æŸä¸€ç³»åˆ—命令或 awk 语å¥ã€‚" #: command.y:844 msgid "eval stmt|[p1, p2, ...] - evaluate awk statement(s)." msgstr "eval 语å¥|[p1, p2, ...] - 对 awk 语å¥æ±‚值。" #: command.y:846 msgid "exit - (same as quit) exit debugger." msgstr "exit - (与 quit 相åŒï¼‰é€€å‡ºè°ƒè¯•å™¨ã€‚" #: command.y:848 msgid "finish - execute until selected stack frame returns." msgstr "finish - 执行到选定的栈层结æŸã€‚" #: command.y:850 msgid "frame [N] - select and print stack frame number N." msgstr "frame [N] - 选定并显示栈的第 N 层。" #: command.y:852 msgid "help [command] - print list of commands or explanation of command." msgstr "help [命令] - 显示命令列表,或有关命令的说明。" #: command.y:854 msgid "ignore N COUNT - set ignore-count of breakpoint number N to COUNT." msgstr "ignore N 次数 - 设置忽略断点 N 的次数。" #: command.y:856 msgid "" "info topic - source|sources|variables|functions|break|frame|args|locals|" "display|watch." msgstr "" "info 主题 - 查看 info ä¿¡æ¯ï¼Œä¸»é¢˜å¯ä»¥ä¸º source|sources|variables|functions|" "break|frame|args|locals|display|watch。" #: command.y:858 msgid "list [-|+|[filename:]lineno|function|range] - list specified line(s)." msgstr "list [-|+|[文件å:]è¡Œå·|函数|范围] - 列出指定行。" #: command.y:860 msgid "next [COUNT] - step program, proceeding through subroutine calls." msgstr "next [次数] - å•æ­¥è¿è¡Œç¨‹åºï¼Œå¹¶ä¸”步过å­è°ƒç”¨ã€‚" #: command.y:862 msgid "" "nexti [COUNT] - step one instruction, but proceed through subroutine calls." msgstr "nexti [次数] - å•è¿è¡Œä¸€æ­¥æŒ‡ä»¤ï¼Œä½†æ­¥è¿‡å…¶å­è°ƒç”¨ã€‚" #: command.y:864 msgid "option [name[=value]] - set or display debugger option(s)." msgstr "option [å称[=值]] - 设置或显示调试器选项。" #: command.y:866 msgid "print var [var] - print value of a variable or array." msgstr "print var [å˜é‡] - 显示å˜é‡æˆ–数组的值" #: command.y:868 msgid "printf format, [arg], ... - formatted output." msgstr "printf æ ¼å¼, [å‚æ•°], ... - æ ¼å¼åŒ–输出。" #: command.y:870 msgid "quit - exit debugger." msgstr "quit - 退出调试器。" #: command.y:872 msgid "return [value] - make selected stack frame return to its caller." msgstr "return [值] - 使选定的栈层返回到上层调用。" #: command.y:874 msgid "run - start or restart executing program." msgstr "run - 开始或é‡æ–°å¼€å§‹ç¨‹åºã€‚" #: command.y:877 msgid "save filename - save commands from the session to file." msgstr "save 文件å - ä¿å­˜ä¼šè¯ä¸­çš„命令到文件。" #: command.y:880 msgid "set var = value - assign value to a scalar variable." msgstr "set å˜é‡ = 值 - 给标é‡å˜é‡èµ‹å€¼ã€‚" #: command.y:882 msgid "" "silent - suspends usual message when stopped at a breakpoint/watchpoint." msgstr "silent - 在断点/监视点处中断时,éšè—常规消æ¯ã€‚" #: command.y:884 msgid "source file - execute commands from file." msgstr "source 文件 - 执行指定文件中的命令。" #: command.y:886 msgid "step [COUNT] - step program until it reaches a different source line." msgstr "set [次数] - å•æ­¥æ‰§è¡Œç¨‹åºï¼Œåœ¨æºæ–‡ä»¶ä¸­çš„下一行处暂åœã€‚" #: command.y:888 msgid "stepi [COUNT] - step one instruction exactly." msgstr "stepi [次数] - 执行一步指令。" #: command.y:890 msgid "tbreak [[filename:]N|function] - set a temporary breakpoint." msgstr "tbreak [[文件å:]N|函数] - 设置一个临时断点。" #: command.y:892 msgid "trace on|off - print instruction before executing." msgstr "trace on|off - 执行å‰æ˜¾ç¤ºæŒ‡ä»¤ã€‚" #: command.y:894 msgid "undisplay [N] - remove variable(s) from automatic display list." msgstr "undisplay [N] - 从自动显示列表中移除指定å˜é‡ã€‚" #: command.y:896 msgid "" "until [[filename:]N|function] - execute until program reaches a different " "line or line N within current frame." msgstr "until [[文件å:]N|函数] - 在当å‰å±‚中执行,在下一行或第 N 行处暂åœã€‚" #: command.y:898 msgid "unwatch [N] - remove variable(s) from watch list." msgstr "unwatch [N] - 从监视列表中移除å˜é‡ã€‚" #: command.y:900 msgid "up [N] - move N frames up the stack." msgstr "up [N] - 在栈中å‘上移动 N 层。" #: command.y:902 msgid "watch var - set a watchpoint for a variable." msgstr "watch å˜é‡ - 为å˜é‡è®¾ç½®ç›‘视点。" #: command.y:904 msgid "" "where [N] - (same as backtrace) print trace of all or N innermost (outermost " "if N < 0) frames." msgstr "" "where [N] - (与backtrace相åŒ) 显示所有或最近 N 层 (è‹¥ N < 0,则显示最远 N " "层) 调用。" #: command.y:1016 debug.c:401 msg.c:135 #, c-format msgid "error: " msgstr "错误:" #: command.y:1060 #, c-format msgid "can't read command (%s)\n" msgstr "无法读å–命令 (%s)\n" #: command.y:1074 #, c-format msgid "can't read command (%s)" msgstr "无法读å–命令 (%s)" #: command.y:1125 msgid "invalid character in command" msgstr "命令中有无效的字符" #: command.y:1161 #, c-format msgid "unknown command - \"%.*s\", try help" msgstr "未知命令 - \"%.*s\",请查看帮助" #: command.y:1231 #, c-format msgid "%s" msgstr "%s" #: command.y:1293 msgid "invalid character" msgstr "字符无效" #: command.y:1497 #, c-format msgid "undefined command: %s\n" msgstr "å˜é‡æœªå®šä¹‰ï¼š%s\n" #: debug.c:252 msgid "set or show the number of lines to keep in history file." msgstr "设置或显示需è¦ä¿å­˜åœ¨åŽ†å²æ–‡ä»¶ä¸­çš„行的编å·ã€‚" #: debug.c:254 msgid "set or show the list command window size." msgstr "设置或显示列表å¼å‘½ä»¤çª—å£å¤§å°ã€‚" #: debug.c:256 msgid "set or show gawk output file." msgstr "设置或显示 gawk 输出文件。" #: debug.c:258 msgid "set or show debugger prompt." msgstr "设置或显示调试器æ示。" #: debug.c:260 msgid "(un)set or show saving of command history (value=on|off)." msgstr "(å–消)设置或显示ä¿å­˜çš„å‘½ä»¤åŽ†å² (值=on|off)。" #: debug.c:262 msgid "(un)set or show saving of options (value=on|off)." msgstr "(å–消)设置或显示ä¿å­˜çš„选项 (值=on|off)。" #: debug.c:264 msgid "(un)set or show instruction tracing (value=on|off)." msgstr "(å–消)设置或显示指令跟踪 (值=on|off)。" #: debug.c:345 msgid "program not running." msgstr "程åºæœªè¿è¡Œã€‚" #: debug.c:448 debug.c:606 #, c-format msgid "can't read source file `%s' (%s)" msgstr "无法读å–æºæ–‡ä»¶â€œ%sâ€(%s)" #: debug.c:453 #, c-format msgid "source file `%s' is empty.\n" msgstr "æºæ–‡ä»¶â€œ%sâ€ä¸ºç©ºã€‚\n" #: debug.c:480 msgid "no current source file." msgstr "当å‰æ²¡æœ‰æºæ–‡ä»¶ã€‚" #: debug.c:505 #, c-format msgid "cannot find source file named `%s' (%s)" msgstr "无法找到å为“%sâ€çš„æºæ–‡ä»¶ (%s)" #: debug.c:529 #, c-format msgid "WARNING: source file `%s' modified since program compilation.\n" msgstr "警告:æºæ–‡ä»¶â€œ%sâ€åœ¨ç¨‹åºç¼–译之åŽè¢«ä¿®æ”¹ã€‚\n" #: debug.c:551 #, c-format msgid "line number %d out of range; `%s' has %d lines" msgstr "è¡Œå· %d 超出范围;“%s†åªæœ‰ %d è¡Œ" #: debug.c:611 #, c-format msgid "unexpected eof while reading file `%s', line %d" msgstr "未读å–文件“%sâ€é‡åˆ° EOF,于第 %d è¡Œ" #: debug.c:620 #, c-format msgid "source file `%s' modified since start of program execution" msgstr "æºæ–‡ä»¶â€œ%sâ€åœ¨ç¨‹åºæ‰§è¡Œä¹‹åŽè¢«ä¿®æ”¹ã€‚" #: debug.c:732 #, c-format msgid "Current source file: %s\n" msgstr "当å‰æºæ–‡ä»¶ï¼š %s\n" #: debug.c:733 #, c-format msgid "Number of lines: %d\n" msgstr "行编å·ï¼š%d\n" #: debug.c:740 #, c-format msgid "Source file (lines): %s (%d)\n" msgstr "æºæ–‡ä»¶ (è¡Œ):%s (%d)\n" #: debug.c:754 msgid "" "Number Disp Enabled Location\n" "\n" msgstr "" "ç¼–å· æ˜¾ç¤º å¯ç”¨ ä½ç½®\n" "\n" #: debug.c:765 #, c-format msgid "\tno of hits = %ld\n" msgstr "\t命中次数 = %ld\n" #: debug.c:767 #, c-format msgid "\tignore next %ld hit(s)\n" msgstr "\t忽略åŽç»­ %ld 次命中\n" #: debug.c:769 debug.c:909 #, c-format msgid "\tstop condition: %s\n" msgstr "\tåœæ­¢æ¡ä»¶ï¼š%s\n" #: debug.c:771 debug.c:911 msgid "\tcommands:\n" msgstr "\t命令:\n" #: debug.c:793 #, c-format msgid "Current frame: " msgstr "当å‰å±‚:" #: debug.c:796 #, c-format msgid "Called by frame: " msgstr "调用层:" #: debug.c:800 #, c-format msgid "Caller of frame: " msgstr "调用者:" #: debug.c:818 #, c-format msgid "None in main().\n" msgstr "ä¸åœ¨ main() 中。\n" #: debug.c:848 msgid "No arguments.\n" msgstr "没有å‚数。\n" #: debug.c:849 msgid "No locals.\n" msgstr "没有本地å˜é‡ã€‚\n" #: debug.c:857 msgid "" "All defined variables:\n" "\n" msgstr "" "所有已定义的å˜é‡ï¼š\n" "\n" #: debug.c:867 msgid "" "All defined functions:\n" "\n" msgstr "" "所有已定义的函数:\n" "\n" #: debug.c:886 msgid "" "Auto-display variables:\n" "\n" msgstr "" "自动显示å˜é‡ï¼š\n" "\n" #: debug.c:889 msgid "" "Watch variables:\n" "\n" msgstr "" "监视å˜é‡ï¼š\n" "\n" #: debug.c:1029 #, c-format msgid "no symbol `%s' in current context\n" msgstr "当å‰ä¸Šä¸‹æ–‡ä¸­æ‰¾ä¸åˆ°ç¬¦å·â€œ%sâ€\n" #: debug.c:1041 debug.c:1427 #, c-format msgid "`%s' is not an array\n" msgstr "“%sâ€ä¸æ˜¯ä¸€ä¸ªæ•°ç»„\n" #: debug.c:1055 #, c-format msgid "$%ld = uninitialized field\n" msgstr "$%ld = 未åˆå§‹åŒ–的字段\n" #: debug.c:1076 #, c-format msgid "array `%s' is empty\n" msgstr "数组“%sâ€ä¸ºç©º\n" #: debug.c:1119 debug.c:1171 #, c-format msgid "[\"%s\"] not in array `%s'\n" msgstr "[\"%s\"] ä¸åœ¨æ•°ç»„“%sâ€ä¸­\n" #: debug.c:1175 #, c-format msgid "`%s[\"%s\"]' is not an array\n" msgstr "“%s[\"%s\"]â€ä¸æ˜¯æ•°ç»„\n" #: debug.c:1236 debug.c:5010 #, c-format msgid "`%s' is not a scalar variable" msgstr "“%sâ€ä¸æ˜¯æ ‡é‡" #: debug.c:1258 debug.c:5040 #, c-format msgid "attempt to use array `%s[\"%s\"]' in a scalar context" msgstr "试图在标é‡çŽ¯å¢ƒä¸­ä½¿ç”¨æ•°ç»„“%s[\"%s\"]'â€" #: debug.c:1280 debug.c:5051 #, c-format msgid "attempt to use scalar `%s[\"%s\"]' as array" msgstr "试图把标é‡â€œ%s[\"%s\"]'â€å½“数组使用" #: debug.c:1423 #, c-format msgid "`%s' is a function" msgstr "“%sâ€æ˜¯ä¸€ä¸ªå‡½æ•°" #: debug.c:1465 #, c-format msgid "watchpoint %d is unconditional\n" msgstr "断点 %d 为无æ¡ä»¶æ–­ç‚¹\n" #: debug.c:1499 #, c-format msgid "No display item numbered %ld" msgstr "没有编å·ä¸º %ld 的显示项目" #: debug.c:1502 #, c-format msgid "No watch item numbered %ld" msgstr "没有编å·ä¸º %ld 的监视项目" #: debug.c:1528 #, c-format msgid "%d: [\"%s\"] not in array `%s'\n" msgstr "%d:[\"%s\"] ä¸åœ¨æ•°ç»„“%sâ€ä¸­\n" #: debug.c:1767 msgid "attempt to use scalar value as array" msgstr "试图把标é‡å½“数组使用" #: debug.c:1856 #, c-format msgid "Watchpoint %d deleted because parameter is out of scope.\n" msgstr "断点 %d 已被删除,因为å‚数超出范围。\n" #: debug.c:1867 #, c-format msgid "Display %d deleted because parameter is out of scope.\n" msgstr "显示 %d 已被删除,因为å‚数超出范围。\n" #: debug.c:1900 #, c-format msgid " in file `%s', line %d\n" msgstr "于文件“%sâ€ï¼Œç¬¬ %d è¡Œ\n" #: debug.c:1921 #, c-format msgid " at `%s':%d" msgstr "于“%sâ€:%d" #: debug.c:1937 debug.c:2000 #, c-format msgid "#%ld\tin " msgstr "#%ld\t于 " #: debug.c:1974 #, c-format msgid "More stack frames follow ...\n" msgstr "更多栈层 ...\n" #: debug.c:2017 msgid "invalid frame number" msgstr "层数无效" #: debug.c:2200 #, c-format msgid "Note: breakpoint %d (enabled, ignore next %ld hits), also set at %s:%d" msgstr "注æ„:断点 %d (å·²å¯ç”¨ï¼Œå¿½ç•¥åŽç»­ %ld 次命中),也设置于 %s:%d" #: debug.c:2207 #, c-format msgid "Note: breakpoint %d (enabled), also set at %s:%d" msgstr "注æ„:断点 %d (å·²å¯ç”¨),也设置于 %s:%d" #: debug.c:2214 #, c-format msgid "Note: breakpoint %d (disabled, ignore next %ld hits), also set at %s:%d" msgstr "注æ„:断点 %d (å·²ç¦ç”¨ï¼Œå¿½ç•¥åŽç»­ %ld 次命中),也在 %s:%d 处设置" #: debug.c:2221 #, c-format msgid "Note: breakpoint %d (disabled), also set at %s:%d" msgstr "注æ„:断点 %d (å·²ç¦ç”¨),也设置于 %s:%d" #: debug.c:2238 #, c-format msgid "Breakpoint %d set at file `%s', line %d\n" msgstr "断点 %d 设置于文件“%sâ€ï¼Œç¬¬ %d è¡Œ\n" #: debug.c:2340 #, c-format msgid "Can't set breakpoint in file `%s'\n" msgstr "无法在文件“%sâ€ä¸­è®¾ç½®æ–­ç‚¹\n" #: debug.c:2369 debug.c:2492 debug.c:3350 #, c-format msgid "line number %d in file `%s' out of range" msgstr "文件“%2$sâ€ä¸­çš„è¡Œå· %1$d 超出范围" #: debug.c:2373 #, c-format msgid "Can't find rule!!!\n" msgstr "无法找到规则ï¼\n" #: debug.c:2375 #, c-format msgid "Can't set breakpoint at `%s':%d\n" msgstr "无法设置断点于“%sâ€:%d\n" #: debug.c:2387 #, c-format msgid "Can't set breakpoint in function `%s'\n" msgstr "无法在函数“%sâ€ä¸­è®¾ç½®æ–­ç‚¹\n" #: debug.c:2403 #, c-format msgid "breakpoint %d set at file `%s', line %d is unconditional\n" msgstr "设置于文件“%2$sâ€ï¼Œç¬¬ %1$d 行的断点 %3$d 为无æ¡ä»¶æ–­ç‚¹\n" #: debug.c:2508 debug.c:2530 #, c-format msgid "Deleted breakpoint %d" msgstr "已删除断点 %d" #: debug.c:2514 #, c-format msgid "No breakpoint(s) at entry to function `%s'\n" msgstr "函数“%sâ€å…¥å£å¤„无断点\n" #: debug.c:2541 #, c-format msgid "No breakpoint at file `%s', line #%d\n" msgstr "文件“%sâ€ç¬¬ #%d 行处无断点\n" #: debug.c:2596 debug.c:2637 debug.c:2657 debug.c:2700 msgid "invalid breakpoint number" msgstr "断点编å·æ— æ•ˆ" #: debug.c:2612 msgid "Delete all breakpoints? (y or n) " msgstr "删除所有断点å—?(y or n) " #: debug.c:2613 debug.c:2923 debug.c:2976 msgid "y" msgstr "y" #: debug.c:2662 #, c-format msgid "Will ignore next %ld crossing(s) of breakpoint %d.\n" msgstr "将忽略åŽç»­ %ld 次命中断点 %d。\n" #: debug.c:2666 #, c-format msgid "Will stop next time breakpoint %d is reached.\n" msgstr "以åŽå‘½ä¸­æ–­ç‚¹ %d 时将会åœæ­¢ã€‚\n" #: debug.c:2783 #, c-format msgid "Can only debug programs provided with the `-f' option.\n" msgstr "åªèƒ½è°ƒè¯•ä½¿ç”¨äº†â€œ-fâ€é€‰é¡¹çš„程åºã€‚\n" #: debug.c:2908 #, c-format msgid "Failed to restart debugger" msgstr "é‡å¯è°ƒè¯•å™¨å¤±è´¥" #: debug.c:2922 msgid "Program already running. Restart from beginning (y/n)? " msgstr "程åºå·²ç»åœ¨è¿è¡Œäº†ã€‚é‡æ–°å¼€å§‹è¿è¡Œå—?(y/n) " #: debug.c:2926 #, c-format msgid "Program not restarted\n" msgstr "程åºæœªé‡æ–°è¿è¡Œ\n" #: debug.c:2936 #, c-format msgid "error: cannot restart, operation not allowed\n" msgstr "错误:无法é‡æ–°è¿è¡Œï¼Œä¸å…许该æ“作\n" #: debug.c:2942 #, c-format msgid "error (%s): cannot restart, ignoring rest of the commands\n" msgstr "错误 (%s):无法é‡æ–°è¿è¡Œï¼Œå¿½ç•¥å‰©ä½™å‘½ä»¤\n" #: debug.c:2950 #, c-format msgid "Starting program: \n" msgstr "开始è¿è¡Œç¨‹åºï¼š\n" #: debug.c:2959 #, c-format msgid "Program exited %s with exit value: %d\n" msgstr "ç¨‹åº %s 退出,状æ€ç ï¼š%d\n" #: debug.c:2975 msgid "The program is running. Exit anyway (y/n)? " msgstr "程åºå·²ç»åœ¨è¿è¡Œäº†ã€‚ä»ç„¶è¦é€€å‡ºå—?(y/n) " #: debug.c:3010 #, c-format msgid "Not stopped at any breakpoint; argument ignored.\n" msgstr "未在断点处åœæ­¢ï¼›å·²å¿½ç•¥å‚数。\n" #: debug.c:3015 #, c-format msgid "invalid breakpoint number %d." msgstr "æ–­ç‚¹ç¼–å· %d 无效。" #: debug.c:3020 #, c-format msgid "Will ignore next %ld crossings of breakpoint %d.\n" msgstr "将忽略åŽç»­ %ld 次命中断点 %d。\n" #: debug.c:3207 #, c-format msgid "'finish' not meaningful in the outermost frame main()\n" msgstr "“finishâ€å¯¹äºŽæœ€å¤–层的 main() æ¥è¯´æ— æ„义\n" #: debug.c:3212 #, c-format msgid "Run till return from " msgstr "è¿è¡Œç›´åˆ°è¿”回自 " #: debug.c:3255 #, c-format msgid "'return' not meaningful in the outermost frame main()\n" msgstr "“returnâ€å¯¹äºŽæœ€å¤–层的 main() æ¥è¯´æ— æ„义\n" #: debug.c:3369 #, c-format msgid "Can't find specified location in function `%s'\n" msgstr "找ä¸åˆ°å‡½æ•°â€œ%sâ€ä¸­çš„指定ä½ç½®\n" #: debug.c:3377 #, c-format msgid "invalid source line %d in file `%s'" msgstr "æºä»£ç è¡Œå·â€œ%dâ€å¯¹äºŽæ–‡ä»¶â€œ%sâ€æ¥è¯´æ— æ•ˆ" #: debug.c:3392 #, c-format msgid "Can't find specified location %d in file `%s'\n" msgstr "找ä¸åˆ°æ–‡ä»¶â€œ%2$sâ€ä¸­çš„指定ä½ç½® %1$d\n" #: debug.c:3424 #, c-format msgid "element not in array\n" msgstr "元素ä¸åœ¨æ•°ç»„中\n" #: debug.c:3424 #, c-format msgid "untyped variable\n" msgstr "无类型å˜é‡\n" #: debug.c:3466 #, c-format msgid "Stopping in %s ...\n" msgstr "åœæ­¢äºŽ %s ...\n" #: debug.c:3543 #, c-format msgid "'finish' not meaningful with non-local jump '%s'\n" msgstr "“finishâ€å¯¹äºŽéžæœ¬åœ°è·³è½¬â€œ%sâ€æ¥è¯´æ— æ•ˆ\n" #: debug.c:3550 #, c-format msgid "'until' not meaningful with non-local jump '%s'\n" msgstr "“untilâ€å¯¹äºŽéžæœ¬åœ°è·³è½¬â€œ%sâ€æ¥è¯´æ— æ•ˆ\n" #: debug.c:4231 msgid "\t------[Enter] to continue or q [Enter] to quit------" msgstr "\t------ 按 [Enter] 继续,按 q [Enter] 退出 ------" #: debug.c:4232 msgid "q" msgstr "q" #: debug.c:5047 #, c-format msgid "[\"%s\"] not in array `%s'" msgstr "[\"%s\"] ä¸åœ¨æ•°ç»„“%sâ€ä¸­" #: debug.c:5253 #, c-format msgid "sending output to stdout\n" msgstr "输出到标准输出\n" #: debug.c:5293 msgid "invalid number" msgstr "ç¼–å·æ— æ•ˆ" #: debug.c:5427 #, c-format msgid "`%s' not allowed in current context; statement ignored" msgstr "当å‰ä¸Šä¸‹æ–‡ä¸­ä¸å…许“%sâ€ï¼›è¯­å¥å·²å¿½ç•¥" #: debug.c:5435 msgid "`return' not allowed in current context; statement ignored" msgstr "当å‰ä¸Šä¸‹æ–‡ä¸­ä¸å…许“%sâ€ï¼›è¯­å¥å·²å¿½ç•¥" #: debug.c:5650 #, c-format msgid "No symbol `%s' in current context" msgstr "当å‰ä¸Šä¸‹æ–‡ä¸­æ‰¾ä¸åˆ°ç¬¦å·â€œ%sâ€" #: dfa.c:1090 dfa.c:1093 dfa.c:1112 dfa.c:1122 dfa.c:1135 dfa.c:1163 dfa.c:1172 #: dfa.c:1175 dfa.c:1180 dfa.c:1202 dfa.c:1205 msgid "unbalanced [" msgstr "[ ä¸é…对" #: dfa.c:1148 msgid "invalid character class" msgstr "无效的字符类型å" #: dfa.c:1271 msgid "character class syntax is [[:space:]], not [:space:]" msgstr "字符类型的语法为 [[:space:]],而ä¸æ˜¯ [:space:]" #: dfa.c:1332 msgid "unfinished \\ escape" msgstr "ä¸å®Œæ•´çš„ \\ 转义" #: dfa.c:1499 msgid "invalid content of \\{\\}" msgstr "\\{\\} 中内容无效" #: dfa.c:1502 msgid "regular expression too big" msgstr "正则表达å¼è¿‡å¤§" #: dfa.c:1916 msgid "unbalanced (" msgstr "( ä¸é…对" #: dfa.c:2044 msgid "no syntax specified" msgstr "未指定语法" #: dfa.c:2052 msgid "unbalanced )" msgstr ") ä¸é…对" #: eval.c:398 #, c-format msgid "unknown nodetype %d" msgstr "未知的结点类型 %d" #: eval.c:409 eval.c:423 #, c-format msgid "unknown opcode %d" msgstr "未知的æ“ä½œç  %d" #: eval.c:420 #, c-format msgid "opcode %s not an operator or keyword" msgstr "æ“ä½œç  %s ä¸æ˜¯æ“作符或关键字" #: eval.c:476 msgid "buffer overflow in genflags2str" msgstr "genflags2str 时缓冲区溢出" #: eval.c:678 #, c-format msgid "" "\n" "\t# Function Call Stack:\n" "\n" msgstr "" "\n" "\t# 函数调用栈:\n" "\n" #: eval.c:707 msgid "`IGNORECASE' is a gawk extension" msgstr "“IGNORECASEâ€æ˜¯ gawk 扩展" #: eval.c:739 msgid "`BINMODE' is a gawk extension" msgstr "“BINMODEâ€æ˜¯ gawk 扩展" #: eval.c:797 #, c-format msgid "BINMODE value `%s' is invalid, treated as 3" msgstr "BINMODE 值 “%s†éžæ³•ï¼ŒæŒ‰ 3 处ç†" #: eval.c:914 #, c-format msgid "bad `%sFMT' specification `%s'" msgstr "错误的“%sFMTâ€å®žçŽ°â€œ%sâ€" #: eval.c:988 msgid "turning off `--lint' due to assignment to `LINT'" msgstr "由于对“LINTâ€èµ‹å€¼æ‰€ä»¥å…³é—­â€œ--lintâ€" #: eval.c:1166 #, c-format msgid "reference to uninitialized argument `%s'" msgstr "引用未åˆå§‹åŒ–çš„å‚数“%sâ€" #: eval.c:1167 #, c-format msgid "reference to uninitialized variable `%s'" msgstr "引用未åˆå§‹åŒ–çš„å˜é‡â€œ%sâ€" #: eval.c:1185 msgid "attempt to field reference from non-numeric value" msgstr "试图从éžæ•°å€¼å¼•ç”¨å­—段编å·" #: eval.c:1187 msgid "attempt to field reference from null string" msgstr "试图从空字符串引用字段编å·" #: eval.c:1195 #, c-format msgid "attempt to access field %ld" msgstr "试图访问字段 %ld" #: eval.c:1204 #, c-format msgid "reference to uninitialized field `$%ld'" msgstr "引用未åˆå§‹åŒ–的字段“$%ldâ€" #: eval.c:1291 #, c-format msgid "function `%s' called with more arguments than declared" msgstr "函数“%sâ€è¢«è°ƒç”¨æ—¶æ供了比声明时更多的å‚æ•°" #: eval.c:1498 #, c-format msgid "unwind_stack: unexpected type `%s'" msgstr "unwind_stack:未预期的类型“%sâ€" #: eval.c:1594 msgid "division by zero attempted in `/='" msgstr "在“/=â€ä¸­è¯•å›¾é™¤0" #: eval.c:1601 #, c-format msgid "division by zero attempted in `%%='" msgstr "在“%%=â€ä¸­è¯•å›¾é™¤0" #: ext.c:66 ext.c:148 msgid "extensions are not allowed in sandbox mode" msgstr "沙箱模å¼ä¸­ä¸å…许使用扩展" #: ext.c:69 msgid "-l / @load are gawk extensions" msgstr "-l / @load 是 gawk 扩展" #: ext.c:72 msgid "load_ext: received NULL lib_name" msgstr "load_ext:收到空 lib_name" #: ext.c:75 #, c-format msgid "load_ext: cannot open library `%s' (%s)\n" msgstr "load_ext:无法打开库“%sâ€(%s)\n" #: ext.c:81 #, c-format msgid "" "load_ext: library `%s': does not define `plugin_is_GPL_compatible' (%s)\n" msgstr "load_ext:库“%sâ€ï¼šæœªå®šä¹‰â€œplugin_is_GPL_compatibleâ€(%s)\n" #: ext.c:87 #, c-format msgid "load_ext: library `%s': cannot call function `%s' (%s)\n" msgstr "load_ext:库“%sâ€ï¼šæ— æ³•è°ƒç”¨å‡½æ•°â€œ%sâ€(%s)\n" #: ext.c:91 #, c-format msgid "load_ext: library `%s' initialization routine `%s' failed\n" msgstr "load_ext:库â€%s“åˆå§‹åŒ–程åºâ€%s“失败\n" #: ext.c:151 msgid "`extension' is a gawk extension" msgstr "“extensionâ€æ˜¯ gawk 扩展" #: ext.c:154 msgid "extension: received NULL lib_name" msgstr "extension:收到空 lib_name" #: ext.c:157 #, c-format msgid "extension: cannot open library `%s' (%s)" msgstr "extension:无法打开库“%sâ€(%s)" #: ext.c:163 #, c-format msgid "" "extension: library `%s': does not define `plugin_is_GPL_compatible' (%s)" msgstr "extension:库“%sâ€ï¼šæœªå®šä¹‰â€œplugin_is_GPL_compatibleâ€(%s)" #: ext.c:167 #, c-format msgid "extension: library `%s': cannot call function `%s' (%s)" msgstr "extension:库“%sâ€ï¼šæ— æ³•è°ƒç”¨å‡½æ•°â€œ%sâ€(%s)" #: ext.c:198 msgid "make_builtin: missing function name" msgstr "make_builtin:缺少函数å" #: ext.c:213 #, c-format msgid "make_builtin: can't redefine function `%s'" msgstr "make_builtin:无法é‡å®šä¹‰å‡½æ•°â€œ%sâ€" #: ext.c:217 #, c-format msgid "make_builtin: function `%s' already defined" msgstr "make_builtin:函数“%sâ€å·²ç»è¢«å®šä¹‰" #: ext.c:221 #, c-format msgid "make_builtin: function name `%s' previously defined" msgstr "make_builtin:函数å“%sâ€å‰é¢å·²è¢«å®šä¹‰" #: ext.c:223 #, c-format msgid "make_builtin: can't use gawk built-in `%s' as function name" msgstr "make_builtin:无法使用 gawk 内置的 “%s†作为函数å" #: ext.c:226 ext.c:281 #, c-format msgid "make_builtin: negative argument count for function `%s'" msgstr "make_builtin:函数â€%s“å‚数个数为负值" #: ext.c:253 msgid "extension: missing function name" msgstr "extension:缺少函数å" #: ext.c:256 ext.c:260 #, c-format msgid "extension: illegal character `%c' in function name `%s'" msgstr "extension:函数å“%2$sâ€ä¸­æœ‰éžæ³•å­—符“%1$câ€" #: ext.c:268 #, c-format msgid "extension: can't redefine function `%s'" msgstr "extension:无法é‡å®šä¹‰å‡½æ•°â€œ%sâ€" #: ext.c:272 #, c-format msgid "extension: function `%s' already defined" msgstr "extension:函数“%sâ€å·²ç»è¢«å®šä¹‰" #: ext.c:276 #, c-format msgid "extension: function name `%s' previously defined" msgstr "extension:函数å“%sâ€å‰é¢å·²è¢«å®šä¹‰" #: ext.c:278 #, c-format msgid "extension: can't use gawk built-in `%s' as function name" msgstr "extension:无法使用 gawk 内置的 “%s†作为函数å" #: ext.c:358 #, c-format msgid "function `%s': argument #%d: attempt to use scalar as an array" msgstr "函数“%sâ€ï¼šç¬¬ %d 个å‚数:试图把标é‡å½“作数组使用" #: ext.c:362 #, c-format msgid "function `%s': argument #%d: attempt to use array as a scalar" msgstr "函数“%sâ€ï¼šç¬¬ %d 个å‚数:试图把数组当标é‡ä½¿ç”¨" #: ext.c:376 msgid "dynamic loading of library not supported" msgstr "ä¸æ”¯æŒåŠ¨æ€åŠ è½½åº“" #: extension/filefuncs.c:164 msgid "chdir: called with incorrect number of arguments, expecting 1" msgstr "chdir:调用时的å‚数个数有误,应为 1 个" #: extension/filefuncs.c:444 #, c-format msgid "stat: unable to read symbolic link `%s'" msgstr "stat:无法读å–符å·é“¾æŽ¥â€%s“" #: extension/filefuncs.c:477 msgid "stat: called with wrong number of arguments" msgstr "stat:调用时的å‚数个数有误" #: extension/filefuncs.c:484 extension/filefuncs.c:534 msgid "stat: bad parameters" msgstr "stat:å‚数有误" #: extension/filefuncs.c:527 msgid "statvfs: called with wrong number of arguments" msgstr "statvfs:调用时的å‚数个数有误" #: extension/filefuncs.c:598 #, c-format msgid "fts init: could not create variable %s" msgstr "fts init:无法创建å˜é‡ %s" #: extension/filefuncs.c:619 msgid "fts is not supported on this system" msgstr "该系统ä¸æ”¯æŒ fts" #: extension/filefuncs.c:638 msgid "fill_stat_element: could not create array" msgstr "fill_stat_element:无法创建数组" #: extension/filefuncs.c:647 msgid "fill_stat_element: could not set element" msgstr "fill_stat_element:无法设置元素" #: extension/filefuncs.c:662 msgid "fill_path_element: could not set element" msgstr "fill_path_element:无法设置元素" #: extension/filefuncs.c:678 msgid "fill_error_element: could not set element" msgstr "fill_error_element:无法设置元素" #: extension/filefuncs.c:725 extension/filefuncs.c:772 msgid "fts-process: could not create array" msgstr "fts-process:无法创建数组" #: extension/filefuncs.c:735 extension/filefuncs.c:782 #: extension/filefuncs.c:800 msgid "fts-process: could not set element" msgstr "fts-process:无法设置元素" #: extension/filefuncs.c:849 msgid "fts: called with incorrect number of arguments, expecting 3" msgstr "fts:调用时的å‚数个数有误,应为 3 个" #: extension/filefuncs.c:852 msgid "fts: bad first parameter" msgstr "fts:第一个å‚数有误" #: extension/filefuncs.c:858 msgid "fts: bad second parameter" msgstr "fts:第二个å‚数有误" #: extension/filefuncs.c:864 msgid "fts: bad third parameter" msgstr "fts:第三个å‚数有误" #: extension/filefuncs.c:871 msgid "fts: could not flatten array\n" msgstr "fts:无法展开数组\n" #: extension/filefuncs.c:889 msgid "fts: ignoring sneaky FTS_NOSTAT flag. nyah, nyah, nyah." msgstr "fts:忽略猥ççš„ FTS_NOSTAT 标志。嘿嘿嘿。" #: extension/filefuncs.c:906 msgid "fts: clear_array() failed\n" msgstr "fts:clear_array() 失败\n" #: extension/fnmatch.c:112 msgid "fnmatch: called with less than three arguments" msgstr "fnmatch:调用时传递的å‚æ•°ä¸è¶³3个" #: extension/fnmatch.c:115 msgid "fnmatch: called with more than three arguments" msgstr "fnmatch:调用时传递的å‚数超过3个" #: extension/fnmatch.c:118 msgid "fnmatch: could not get first argument" msgstr "fnmatch:无法获å–第一个å‚æ•°" #: extension/fnmatch.c:123 msgid "fnmatch: could not get second argument" msgstr "fnmatch:无法获å–第二个å‚æ•°" #: extension/fnmatch.c:128 msgid "fnmatch: could not get third argument" msgstr "fnmatch:无法获å–第三个å‚æ•°" #: extension/fnmatch.c:141 msgid "fnmatch is not implemented on this system\n" msgstr "该系统未实现 fnmatch\n" #: extension/fnmatch.c:173 msgid "fnmatch init: could not add FNM_NOMATCH variable" msgstr "fnmatch init:无法添加 FNM_NOMATCH å˜é‡" #: extension/fnmatch.c:183 #, c-format msgid "fnmatch init: could not set array element %s" msgstr "nmatch init:无法设置数组元素 %s" #: extension/fnmatch.c:193 msgid "fnmatch init: could not install FNM array" msgstr "fnmatch init:无法设置 FNM 数组" #: extension/fork.c:81 msgid "fork: called with too many arguments" msgstr "fork:å‚数太多" #: extension/fork.c:94 msgid "fork: PROCINFO is not an array!" msgstr "fork:PROCINFO ä¸æ˜¯æ•°ç»„" #: extension/fork.c:118 msgid "waitpid: called with too many arguments" msgstr "waitpid:å‚数太多" #: extension/fork.c:126 msgid "wait: called with no arguments" msgstr "wait:缺少å‚æ•°" #: extension/fork.c:143 msgid "wait: called with too many arguments" msgstr "wait:å‚数太多" #: extension/inplace.c:131 msgid "inplace_begin: in-place editing already active" msgstr "inplace_begin:已å¯ç”¨åŽŸä½ç¼–辑" #: extension/inplace.c:134 extension/inplace.c:211 #, c-format msgid "inplace_begin: expects 2 arguments but called with %d" msgstr "inplace_beginï¼šéœ€è¦ 2 个å‚数,但调用时传递了 %d 个" #: extension/inplace.c:137 msgid "inplace_begin: cannot retrieve 1st argument as a string filename" msgstr "inplace_begin:无法将第 1 个å‚数作为文件å字符串处ç†" #: extension/inplace.c:145 #, c-format msgid "inplace_begin: disabling in-place editing for invalid FILENAME `%s'" msgstr "inplace_begin:对于无效的文件å“%sâ€ç¦ç”¨åŽŸä½ç¼–辑" #: extension/inplace.c:152 #, c-format msgid "inplace_begin: Cannot stat `%s' (%s)" msgstr "inplace_begin:无法对“%sâ€æ‰§è¡Œ stat (%s)" #: extension/inplace.c:159 #, c-format msgid "inplace_begin: `%s' is not a regular file" msgstr "inplace_begin:“%sâ€ä¸æ˜¯æ™®é€šæ–‡ä»¶" #: extension/inplace.c:170 #, c-format msgid "inplace_begin: mkstemp(`%s') failed (%s)" msgstr "inplace_begin:mkstemp(“%sâ€) 失败 (%s)" #: extension/inplace.c:182 #, c-format msgid "inplace_begin: chmod failed (%s)" msgstr "inplace_begin:chmod 失败 (%s)" #: extension/inplace.c:189 #, c-format msgid "inplace_begin: dup(stdout) failed (%s)" msgstr "inplace_begin:dup(stdout) 失败 (%s)" #: extension/inplace.c:192 #, c-format msgid "inplace_begin: dup2(%d, stdout) failed (%s)" msgstr "inplace_begin:dup2(%d, stdout) 失败 (%s)" #: extension/inplace.c:195 #, c-format msgid "inplace_begin: close(%d) failed (%s)" msgstr "inplace_begin:close(%d) 失败 (%s)" #: extension/inplace.c:214 msgid "inplace_end: cannot retrieve 1st argument as a string filename" msgstr "inplace_end:无法将第 1 个å‚数作为文件å字符串处ç†" #: extension/inplace.c:221 msgid "inplace_end: in-place editing not active" msgstr "inplace_end:原ä½ç¼–辑未å¯ç”¨" #: extension/inplace.c:227 #, c-format msgid "inplace_end: dup2(%d, stdout) failed (%s)" msgstr "inplace_end:dup2(%d, stdout) 失败 (%s)" #: extension/inplace.c:230 #, c-format msgid "inplace_end: close(%d) failed (%s)" msgstr "inplace_end:close(%d) 失败 (%s)" #: extension/inplace.c:234 #, c-format msgid "inplace_end: fsetpos(stdout) failed (%s)" msgstr "inplace_end:fsetpos(stdout) 失败 (%s)" #: extension/inplace.c:247 #, c-format msgid "inplace_end: link(`%s', `%s') failed (%s)" msgstr "inplace_end:link(“%sâ€, “%sâ€) 失败 (%s)" #: extension/inplace.c:257 #, c-format msgid "inplace_end: rename(`%s', `%s') failed (%s)" msgstr "inplace_end:rename(“%sâ€, “%sâ€) failed (%s)" #: extension/ordchr.c:69 msgid "ord: called with too many arguments" msgstr "ord:å‚数太多" #: extension/ordchr.c:75 msgid "ord: called with no arguments" msgstr "ord:缺少å‚æ•°" #: extension/ordchr.c:77 msgid "ord: called with inappropriate argument(s)" msgstr "ord:å‚数有误" #: extension/ordchr.c:99 msgid "chr: called with too many arguments" msgstr "chr:å‚数太多" #: extension/ordchr.c:109 msgid "chr: called with no arguments" msgstr "chr:缺少å‚æ•°" #: extension/ordchr.c:111 msgid "chr: called with inappropriate argument(s)" msgstr "chr:å‚数有误" #: extension/readdir.c:271 #, c-format msgid "dir_take_control_of: opendir/fdopendir failed: %s" msgstr "dir_take_control_of:opendir/fdopendir 失败:%s" #: extension/readfile.c:113 msgid "readfile: called with too many arguments" msgstr "readfile:å‚数太多" #: extension/readfile.c:137 msgid "readfile: called with no arguments" msgstr "readfile:缺少å‚æ•°" #: extension/revoutput.c:127 msgid "revoutput: could not initialize REVOUT variable" msgstr "revoutput:无法åˆå§‹åŒ– REVOUT å˜é‡" #: extension/rwarray.c:113 extension/rwarray0.c:109 msgid "writea: called with too many arguments" msgstr "readfile:å‚数太多" #: extension/rwarray.c:120 extension/rwarray0.c:116 #, c-format msgid "do_writea: argument 0 is not a string\n" msgstr "do_writea:å‚æ•° 0 ä¸æ˜¯å­—符串\n" #: extension/rwarray.c:126 extension/rwarray0.c:122 #, c-format msgid "do_writea: argument 1 is not an array\n" msgstr "do_writea:å‚æ•° 1 ä¸æ˜¯æ•°ç»„\n" #: extension/rwarray.c:173 extension/rwarray0.c:169 #, c-format msgid "write_array: could not flatten array\n" msgstr "write_array:无法展开数组\n" #: extension/rwarray.c:187 extension/rwarray0.c:183 #, c-format msgid "write_array: could not release flattened array\n" msgstr "write_array:无法释放展开的数组\n" #: extension/rwarray.c:269 extension/rwarray0.c:265 msgid "reada: called with too many arguments" msgstr "reada:å‚数太多" #: extension/rwarray.c:276 extension/rwarray0.c:272 #, c-format msgid "do_reada: argument 0 is not a string\n" msgstr "do_reada:å‚æ•° 0 ä¸æ˜¯å­—符串\n" #: extension/rwarray.c:282 extension/rwarray0.c:278 #, c-format msgid "do_reada: argument 1 is not an array\n" msgstr "do_reada:å‚æ•° 1 ä¸æ˜¯å­—数组\n" #: extension/rwarray.c:326 extension/rwarray0.c:322 #, c-format msgid "do_reada: clear_array failed\n" msgstr "do_reada:clear_array 失败\n" #: extension/rwarray.c:363 extension/rwarray0.c:358 #, c-format msgid "read_array: set_array_element failed\n" msgstr "read_array:set_array_element 失败\n" #: extension/time.c:113 msgid "gettimeofday: ignoring arguments" msgstr "gettimeofday:忽略å‚æ•°" #: extension/time.c:144 msgid "gettimeofday: not supported on this platform" msgstr "gettimeofday:ä¸è¢«æ­¤å¹³å°æ”¯æŒ" #: extension/time.c:165 msgid "sleep: called with too many arguments" msgstr "sleep:å‚数太多" #: extension/time.c:168 msgid "sleep: missing required numeric argument" msgstr "sleep:缺少所需的数值å‚æ•°" #: extension/time.c:174 msgid "sleep: argument is negative" msgstr "sleep:å‚数为负值" #: extension/time.c:208 msgid "sleep: not supported on this platform" msgstr "sleep:ä¸è¢«æ­¤å¹³å°æ”¯æŒ" #: field.c:346 msgid "NF set to negative value" msgstr "NF 被设置为负值" #: field.c:958 field.c:965 field.c:969 msgid "split: fourth argument is a gawk extension" msgstr "split:第四个å‚数是 gawk 扩展" #: field.c:962 msgid "split: fourth argument is not an array" msgstr "split:第四个å‚æ•°ä¸æ˜¯æ•°ç»„" #: field.c:976 msgid "split: second argument is not an array" msgstr "split:第二个å‚æ•°ä¸æ˜¯æ•°ç»„" #: field.c:980 msgid "split: cannot use the same array for second and fourth args" msgstr "split:无法将åŒä¸€ä¸ªæ•°ç»„用于第二和第四个å‚æ•°" #: field.c:985 msgid "split: cannot use a subarray of second arg for fourth arg" msgstr "split:无法将第二个å‚æ•°çš„å­æ•°ç»„用于第四个å‚æ•°" #: field.c:988 msgid "split: cannot use a subarray of fourth arg for second arg" msgstr "split:无法将第四个å‚æ•°çš„å­æ•°ç»„用于第二个å‚æ•°" #: field.c:1019 msgid "split: null string for third arg is a gawk extension" msgstr "split:第三个å‚数为空字符串,应为 gawk 扩展" #: field.c:1059 msgid "patsplit: fourth argument is not an array" msgstr "patsplit:第四个å‚æ•°ä¸æ˜¯æ•°ç»„" #: field.c:1064 msgid "patsplit: second argument is not an array" msgstr "patsplit:第二个å‚æ•°ä¸æ˜¯æ•°ç»„" #: field.c:1070 msgid "patsplit: third argument must be non-null" msgstr "patsplit:第三个å‚æ•°å¿…é¡»ä¸ä¸ºç©º" #: field.c:1074 msgid "patsplit: cannot use the same array for second and fourth args" msgstr "patsplit:无法将åŒä¸€ä¸ªæ•°ç»„用于第二和第四个å‚æ•°" #: field.c:1079 msgid "patsplit: cannot use a subarray of second arg for fourth arg" msgstr "patsplit:无法将第二个å‚æ•°çš„å­æ•°ç»„用于第四个å‚æ•°" #: field.c:1082 msgid "patsplit: cannot use a subarray of fourth arg for second arg" msgstr "patsplit:无法将第四个å‚æ•°çš„å­æ•°ç»„用于第二个å‚æ•°" #: field.c:1120 msgid "`FIELDWIDTHS' is a gawk extension" msgstr "“FIELDWIDTHSâ€æ˜¯ gawk 扩展" #: field.c:1184 #, c-format msgid "invalid FIELDWIDTHS value, near `%s'" msgstr "“%sâ€é™„è¿‘ FIELDWIDTHS 值无效" #: field.c:1257 msgid "null string for `FS' is a gawk extension" msgstr "给“FSâ€ä¼ é€’了空字符串,应为 gawk 扩展" #: field.c:1261 msgid "old awk does not support regexps as value of `FS'" msgstr "è€ awk ä¸æ”¯æŒæŠŠâ€œFSâ€è®¾ç½®ä¸ºæ­£åˆ™è¡¨è¾¾å¼" #: field.c:1384 msgid "`FPAT' is a gawk extension" msgstr "“FPATâ€æ˜¯ gawk 扩展" #: gawkapi.c:146 msgid "awk_value_to_node: received null retval" msgstr "awk_value_to_node:返回值为空" #: gawkapi.c:383 msgid "node_to_awk_value: received null node" msgstr "node_to_awk_value:结点为空" #: gawkapi.c:386 msgid "node_to_awk_value: received null val" msgstr "node_to_awk_value:值为空" #: gawkapi.c:808 msgid "remove_element: received null array" msgstr "remove_element:数组为空" #: gawkapi.c:811 msgid "remove_element: received null subscript" msgstr "remove_element:下标为空" #: gawkapi.c:948 #, c-format msgid "api_flatten_array: could not convert index %d\n" msgstr "api_flatten_array:无法转æ¢ç´¢å¼• %d\n" #: gawkapi.c:953 #, c-format msgid "api_flatten_array: could not convert value %d\n" msgstr "api_flatten_array:无法转æ¢å€¼ %d\n" #: getopt.c:604 getopt.c:633 #, c-format msgid "%s: option '%s' is ambiguous; possibilities:" msgstr "%s:选项“%sâ€æœ‰æ­§ä¹‰ï¼›å¯èƒ½ä¸ºï¼š" #: getopt.c:679 getopt.c:683 #, c-format msgid "%s: option '--%s' doesn't allow an argument\n" msgstr "%s:选项“--%sâ€ä¸å…许有å‚æ•°\n" #: getopt.c:692 getopt.c:697 #, c-format msgid "%s: option '%c%s' doesn't allow an argument\n" msgstr "%s:选项“%c%sâ€ä¸å…许有å‚æ•°\n" #: getopt.c:740 getopt.c:759 #, c-format msgid "%s: option '--%s' requires an argument\n" msgstr "%s:选项“%sâ€éœ€è¦ä¸€ä¸ªå‚æ•°\n" #: getopt.c:797 getopt.c:800 #, c-format msgid "%s: unrecognized option '--%s'\n" msgstr "%s:无法识别选项“--%sâ€\n" #: getopt.c:808 getopt.c:811 #, c-format msgid "%s: unrecognized option '%c%s'\n" msgstr "%s:无法识别选项“%c%sâ€\n" #: getopt.c:860 getopt.c:863 #, c-format msgid "%s: invalid option -- '%c'\n" msgstr "%s:无效选项 -- “%câ€\n" #: getopt.c:916 getopt.c:933 getopt.c:1143 getopt.c:1161 #, c-format msgid "%s: option requires an argument -- '%c'\n" msgstr "%s:选项需è¦ä¸€ä¸ªå‚æ•° -- “%câ€\n" #: getopt.c:989 getopt.c:1005 #, c-format msgid "%s: option '-W %s' is ambiguous\n" msgstr "%s:选项“-W %sâ€æœ‰æ­§ä¹‰\n" #: getopt.c:1029 getopt.c:1047 #, c-format msgid "%s: option '-W %s' doesn't allow an argument\n" msgstr "%s:选项“-W %sâ€ä¸å…许å‚æ•°\n" #: getopt.c:1068 getopt.c:1086 #, c-format msgid "%s: option '-W %s' requires an argument\n" msgstr "%s:选项“-W %sâ€éœ€è¦ä¸€ä¸ªå‚æ•°\n" #: io.c:426 #, c-format msgid "command line argument `%s' is a directory: skipped" msgstr "命令行å‚数“%sâ€ä¸ºç›®å½•ï¼›å·²è·³è¿‡" #: io.c:429 io.c:547 #, c-format msgid "cannot open file `%s' for reading (%s)" msgstr "无法以读模å¼æ‰“开文件“%sâ€(%s)" #: io.c:674 #, c-format msgid "close of fd %d (`%s') failed (%s)" msgstr "å…³é—­æ–‡ä»¶å· %d (“%sâ€)失败(%s)" #: io.c:752 msgid "redirection not allowed in sandbox mode" msgstr "沙箱模å¼ä¸­ä¸å…许使用é‡å®šå‘" #: io.c:786 #, c-format msgid "expression in `%s' redirection only has numeric value" msgstr "“%sâ€é‡å®šå‘中的表达å¼åªæœ‰æ•°å­—值" #: io.c:792 #, c-format msgid "expression for `%s' redirection has null string value" msgstr "“%sâ€é‡å®šå‘中的表达å¼æ˜¯ç©ºå­—符串" #: io.c:797 #, c-format msgid "filename `%s' for `%s' redirection may be result of logical expression" msgstr "“%2$sâ€é‡å®šå‘中的文件å“%1$sâ€å¯èƒ½æ˜¯é€»è¾‘表达å¼çš„结果" #: io.c:845 #, c-format msgid "unnecessary mixing of `>' and `>>' for file `%.*s'" msgstr "在文件“%.*sâ€ä¸­ä¸å¿…è¦çš„æ··åˆä½¿ç”¨â€œ>â€å’Œâ€œ>>â€" #: io.c:902 #, c-format msgid "can't open pipe `%s' for output (%s)" msgstr "无法为输出打开管é““%sâ€(%s)" #: io.c:915 #, c-format msgid "can't open pipe `%s' for input (%s)" msgstr "无法为输入打开管é““%sâ€(%s)" #: io.c:946 #, c-format msgid "can't open two way pipe `%s' for input/output (%s)" msgstr "无法为输入/输出打开åŒå‘管é““%sâ€(%s)" #: io.c:1030 #, c-format msgid "can't redirect from `%s' (%s)" msgstr "无法自“%sâ€é‡å®šå‘(%s)" #: io.c:1033 #, c-format msgid "can't redirect to `%s' (%s)" msgstr "无法é‡å®šå‘到“%sâ€(%s)" #: io.c:1084 msgid "" "reached system limit for open files: starting to multiplex file descriptors" msgstr "打开的文件数达到系统é™åˆ¶ï¼šå¼€å§‹å¤ç”¨æ–‡ä»¶æ述符" #: io.c:1100 #, c-format msgid "close of `%s' failed (%s)." msgstr "关闭“%sâ€å¤±è´¥(%s)。" #: io.c:1108 msgid "too many pipes or input files open" msgstr "打开过多管é“或输入文件" #: io.c:1130 msgid "close: second argument must be `to' or `from'" msgstr "close:第二个å‚数必须是“toâ€æˆ–“fromâ€" #: io.c:1147 #, c-format msgid "close: `%.*s' is not an open file, pipe or co-process" msgstr "close:“%.*sâ€ä¸æ˜¯ä¸€ä¸ªå·²æ‰“开文件ã€ç®¡é“或åˆä½œè¿›ç¨‹" #: io.c:1152 msgid "close of redirection that was never opened" msgstr "关闭一个从未被打开的é‡å®šå‘" #: io.c:1249 #, c-format msgid "close: redirection `%s' not opened with `|&', second argument ignored" msgstr "close:é‡å®šå‘“%sâ€ä¸æ˜¯ç”¨â€œ|&â€æ‰“开,第二个å‚数被忽略" #: io.c:1266 #, c-format msgid "failure status (%d) on pipe close of `%s' (%s)" msgstr "关闭管é““%2$sâ€æ—¶å¤±è´¥ï¼Œå¤±è´¥çŠ¶æ€ä¸º(%1$d)(%3$s)" #: io.c:1269 #, c-format msgid "failure status (%d) on file close of `%s' (%s)" msgstr "关闭文件“%2$sâ€æ—¶å¤±è´¥ï¼Œå¤±è´¥çŠ¶æ€ä¸º(%1$d)(%3$s)" #: io.c:1289 #, c-format msgid "no explicit close of socket `%s' provided" msgstr "未显å¼å…³é—­ç«¯å£â€œ%sâ€" #: io.c:1292 #, c-format msgid "no explicit close of co-process `%s' provided" msgstr "未显å¼å…³é—­åˆä½œè¿›ç¨‹â€œ%sâ€" #: io.c:1295 #, c-format msgid "no explicit close of pipe `%s' provided" msgstr "未显å¼å…³é—­ç®¡é““%sâ€" #: io.c:1298 #, c-format msgid "no explicit close of file `%s' provided" msgstr "未显å¼å…³é—­æ–‡ä»¶â€œ%sâ€" #: io.c:1328 io.c:1387 main.c:645 main.c:687 #, c-format msgid "error writing standard output (%s)" msgstr "å‘标准输出写时å‘生错误 (%s)" #: io.c:1333 io.c:1393 main.c:647 #, c-format msgid "error writing standard error (%s)" msgstr "å‘标准错误输出写时å‘生错误 (%s)" #: io.c:1341 #, c-format msgid "pipe flush of `%s' failed (%s)." msgstr "刷新管é““%sâ€æ—¶å‡ºé”™(%s)。" #: io.c:1344 #, c-format msgid "co-process flush of pipe to `%s' failed (%s)." msgstr "刷新åˆä½œè¿›ç¨‹ç®¡é““%sâ€æ—¶å‡ºé”™(%s)。" #: io.c:1347 #, c-format msgid "file flush of `%s' failed (%s)." msgstr "刷新文件“%sâ€æ—¶å‡ºé”™(%s)。" #: io.c:1465 #, c-format msgid "local port %s invalid in `/inet'" msgstr "æœ¬åœ°ç«¯å£ %s 在“/inetâ€ä¸­æ— æ•ˆ" #: io.c:1483 #, c-format msgid "remote host and port information (%s, %s) invalid" msgstr "远程主机和端å£ä¿¡æ¯ (%s, %s) 无效" #: io.c:1711 msgid "TCP/IP communications are not supported" msgstr "TCP/IP 通讯ä¸è¢«æ”¯æŒ" #: io.c:1905 #, c-format msgid "could not open `%s', mode `%s'" msgstr "无法以模å¼â€œ%2$sâ€æ‰“开“%1$sâ€" #: io.c:1961 #, c-format msgid "close of master pty failed (%s)" msgstr "关闭主 pty 失败(%s)" #: io.c:1963 io.c:2141 io.c:2342 #, c-format msgid "close of stdout in child failed (%s)" msgstr "在å­è¿›ç¨‹ä¸­å…³é—­æ ‡å‡†è¾“出失败(%s)" #: io.c:1966 #, c-format msgid "moving slave pty to stdout in child failed (dup: %s)" msgstr "在å­è¿›ç¨‹ä¸­å°†ä»Ž pty 改为标准输出失败(dup:%s)" #: io.c:1968 io.c:2146 #, c-format msgid "close of stdin in child failed (%s)" msgstr "在å­è¿›ç¨‹ä¸­å…³é—­æ ‡å‡†è¾“入失败(%s)" #: io.c:1971 #, c-format msgid "moving slave pty to stdin in child failed (dup: %s)" msgstr "在å­è¿›ç¨‹ä¸­å°†ä»Ž pty 改为标准输入失败(dup:%s)" #: io.c:1973 #, c-format msgid "close of slave pty failed (%s)" msgstr "关闭从 pty 失败(%s)" #: io.c:2076 io.c:2144 io.c:2313 io.c:2345 #, c-format msgid "moving pipe to stdout in child failed (dup: %s)" msgstr "在å­è¿›ç¨‹ä¸­å°†ç®¡é“改为标准输出失败(dup:%s)" #: io.c:2083 io.c:2149 #, c-format msgid "moving pipe to stdin in child failed (dup: %s)" msgstr "在å­è¿›ç¨‹ä¸­å°†ç®¡é“改为标准输入失败(dup:%s)" #: io.c:2109 io.c:2335 msgid "restoring stdout in parent process failed\n" msgstr "在父进程中æ¢å¤æ ‡å‡†è¾“出失败\n" #: io.c:2117 msgid "restoring stdin in parent process failed\n" msgstr "在父进程中æ¢å¤æ ‡å‡†è¾“入失败\n" #: io.c:2152 io.c:2347 io.c:2362 #, c-format msgid "close of pipe failed (%s)" msgstr "关闭管é“失败(%s)" #: io.c:2211 msgid "`|&' not supported" msgstr "“|&â€ä¸è¢«æ”¯æŒ" #: io.c:2298 #, c-format msgid "cannot open pipe `%s' (%s)" msgstr "无法打开管é““%sâ€(%s)" #: io.c:2356 #, c-format msgid "cannot create child process for `%s' (fork: %s)" msgstr "无法为“%sâ€åˆ›å»ºå­è¿›ç¨‹(fork:%s)" #: io.c:2493 msgid "getline: attempt to read from closed read end of two-way pipe" msgstr "getline:试图从读å–端已被关闭的åŒå‘管é“中读å–æ•°æ®" #: io.c:2795 msgid "register_input_parser: received NULL pointer" msgstr "register_input_parser:指针为空" #: io.c:2823 #, c-format msgid "input parser `%s' conflicts with previously installed input parser `%s'" msgstr "输入解æžå™¨â€œ%sâ€ä¸Žä¹‹å‰è®¾ç½®çš„“%sâ€ç›¸å†²çª" #: io.c:2830 #, c-format msgid "input parser `%s' failed to open `%s'" msgstr "输入解æžå™¨â€œ%sâ€æ‰“开“%sâ€å¤±è´¥" #: io.c:2850 msgid "register_output_wrapper: received NULL pointer" msgstr "register_output_parser:指针为空" #: io.c:2878 #, c-format msgid "" "output wrapper `%s' conflicts with previously installed output wrapper `%s'" msgstr "输出解æžå™¨â€œ%sâ€ä¸Žä¹‹å‰è®¾ç½®çš„“%sâ€ç›¸å†²çª" #: io.c:2885 #, c-format msgid "output wrapper `%s' failed to open `%s'" msgstr "输出解æžå™¨â€œ%sâ€æ‰“开“%sâ€å¤±è´¥" #: io.c:2906 msgid "register_output_processor: received NULL pointer" msgstr "register_output_processor:指针为空" #: io.c:2935 #, c-format msgid "" "two-way processor `%s' conflicts with previously installed two-way processor " "`%s'" msgstr "åŒå‘处ç†å™¨â€œ%sâ€ä¸Žä¹‹å‰è®¾ç½®çš„“%sâ€ç›¸å†²çª" #: io.c:2944 #, c-format msgid "two way processor `%s' failed to open `%s'" msgstr "åŒå‘处ç†å™¨â€œ%sâ€æ‰“开“%sâ€å¤±è´¥" #: io.c:3069 #, c-format msgid "data file `%s' is empty" msgstr "æ•°æ®æ–‡ä»¶â€œ%sâ€ä¸ºç©º" #: io.c:3111 io.c:3119 msgid "could not allocate more input memory" msgstr "无法分é…更多的输入内存" #: io.c:3697 msgid "multicharacter value of `RS' is a gawk extension" msgstr "“RSâ€è®¾ç½®ä¸ºå¤šå­—符是 gawk 扩展" #: io.c:3844 msgid "IPv6 communication is not supported" msgstr "ä¸æ”¯æŒ IPv6 通讯" #: main.c:334 msgid "environment variable `POSIXLY_CORRECT' set: turning on `--posix'" msgstr "环境å˜é‡â€œPOSIXLY_CORRECTâ€è¢«è®¾ç½®ï¼šæ‰“开“--posixâ€" #: main.c:340 msgid "`--posix' overrides `--traditional'" msgstr "“--posixâ€è¦†ç›–“--traditionalâ€" #: main.c:351 msgid "`--posix'/`--traditional' overrides `--non-decimal-data'" msgstr "“--posixâ€æˆ–“--traditionalâ€è¦†ç›–“--non-decimal-dataâ€" #: main.c:355 #, c-format msgid "running %s setuid root may be a security problem" msgstr "以设置 root ID æ–¹å¼è¿è¡Œâ€œ%sâ€å¯èƒ½å­˜åœ¨å®‰å…¨æ¼æ´ž" #: main.c:359 msgid "`--posix' overrides `--characters-as-bytes'" msgstr "“--posixâ€è¦†ç›–“--characters-as-bytesâ€" #: main.c:417 #, c-format msgid "can't set binary mode on stdin (%s)" msgstr "无法在标准输入上设置二进制模å¼(%s)" #: main.c:420 #, c-format msgid "can't set binary mode on stdout (%s)" msgstr "无法在标准输出上设置二进制模å¼(%s)" #: main.c:422 #, c-format msgid "can't set binary mode on stderr (%s)" msgstr "无法在标准错误输出上设置二进制模å¼(%s)" #: main.c:482 msgid "no program text at all!" msgstr "完全没有程åºæ­£æ–‡ï¼" #: main.c:576 #, c-format msgid "Usage: %s [POSIX or GNU style options] -f progfile [--] file ...\n" msgstr "用法:%s [POSIX 或 GNU 风格选项] -f 脚本文件 [--] 文件 ...\n" #: main.c:578 #, c-format msgid "Usage: %s [POSIX or GNU style options] [--] %cprogram%c file ...\n" msgstr "用法:%s [POSIX 或 GNU 风格选项] [--] %c程åº%c 文件 ...\n" #: main.c:583 msgid "POSIX options:\t\tGNU long options: (standard)\n" msgstr "POSIX 选项:\t\tGNU 长选项:(标准)\n" #: main.c:584 msgid "\t-f progfile\t\t--file=progfile\n" msgstr "\t-f 脚本文件\t\t--file=脚本文件\n" #: main.c:585 msgid "\t-F fs\t\t\t--field-separator=fs\n" msgstr "\t-F fs\t\t\t--field-separator=fs\n" #: main.c:586 msgid "\t-v var=val\t\t--assign=var=val\n" msgstr "\t-v var=val\t\t--assign=var=val\n" #: main.c:587 msgid "Short options:\t\tGNU long options: (extensions)\n" msgstr "短选项:\t\tGNU 长选项:(扩展)\n" #: main.c:588 msgid "\t-b\t\t\t--characters-as-bytes\n" msgstr "\t-b\t\t\t--characters-as-bytes\n" #: main.c:589 msgid "\t-c\t\t\t--traditional\n" msgstr "\t-c\t\t\t--traditional\n" #: main.c:590 msgid "\t-C\t\t\t--copyright\n" msgstr "\t-C\t\t\t--copyright\n" #: main.c:591 msgid "\t-d[file]\t\t--dump-variables[=file]\n" msgstr "\t-d[文件]\t\t--dump-variables[=文件]\n" #: main.c:592 msgid "\t-D[file]\t\t--debug[=file]\n" msgstr "\t-D[文件]\t\t--debug[=文件]\n" #: main.c:593 msgid "\t-e 'program-text'\t--source='program-text'\n" msgstr "\t-e '程åºæ–‡æœ¬'\t--source='程åºæ–‡æœ¬'\n" #: main.c:594 msgid "\t-E file\t\t\t--exec=file\n" msgstr "\t-E 文件\t\t\t--exec=文件\n" #: main.c:595 msgid "\t-g\t\t\t--gen-pot\n" msgstr "\t-g\t\t\t--gen-pot\n" #: main.c:596 msgid "\t-h\t\t\t--help\n" msgstr "\t-h\t\t\t--help\n" #: main.c:597 msgid "\t-i includefile\t\t--include=includefile\n" msgstr "\t-i 包å«æ–‡ä»¶\t\t--include=包å«æ–‡ä»¶\n" #: main.c:598 msgid "\t-l library\t\t--load=library\n" msgstr "\t-l 库\t\t--load=库\n" #. TRANSLATORS: the "fatal" and "invalid" here are literal #. values, they should not be translated. Thanks. #. #: main.c:603 msgid "\t-L[fatal|invalid]\t--lint[=fatal|invalid]\n" msgstr "\t-L[fatal|invalid]\t--lint[=fatal|invalid]\n" #: main.c:604 msgid "\t-M\t\t\t--bignum\n" msgstr "\t-M\t\t\t--bignum\n" #: main.c:605 msgid "\t-N\t\t\t--use-lc-numeric\n" msgstr "\t-N\t\t\t--use-lc-numeric\n" #: main.c:606 msgid "\t-n\t\t\t--non-decimal-data\n" msgstr "\t-n\t\t\t--non-decimal-data\n" #: main.c:607 msgid "\t-o[file]\t\t--pretty-print[=file]\n" msgstr "\t-o[文件]\t\t--pretty-print[=文件]\n" #: main.c:608 msgid "\t-O\t\t\t--optimize\n" msgstr "\t-O\t\t\t--optimize\n" #: main.c:609 msgid "\t-p[file]\t\t--profile[=file]\n" msgstr "\t-p[文件]\t\t--profile[=文件]\n" #: main.c:610 msgid "\t-P\t\t\t--posix\n" msgstr "\t-P\t\t\t--posix\n" #: main.c:611 msgid "\t-r\t\t\t--re-interval\n" msgstr "\t-r\t\t\t--re-interval\n" #: main.c:612 msgid "\t-S\t\t\t--sandbox\n" msgstr "\t-S\t\t\t--sandbox\n" #: main.c:613 msgid "\t-t\t\t\t--lint-old\n" msgstr "\t-t\t\t\t--lint-old\n" #: main.c:614 msgid "\t-V\t\t\t--version\n" msgstr "\t-V\t\t\t--version\n" #: main.c:616 msgid "\t-W nostalgia\t\t--nostalgia\n" msgstr "\t-W nostalgia\t\t--nostalgia\n" #: main.c:619 msgid "\t-Y\t\t--parsedebug\n" msgstr "\t-Y\t\t--parsedebug\n" #. TRANSLATORS: --help output 5 (end) #. TRANSLATORS: the placeholder indicates the bug-reporting address #. for this application. Please add _another line_ with the #. address for translation bugs. #. no-wrap #: main.c:628 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" "æ交错误报告请å‚考“gawk.infoâ€ä¸­çš„“Bugsâ€é¡µï¼Œå®ƒä½äºŽæ‰“å°ç‰ˆæœ¬ä¸­çš„“Reporting\n" "Problems and Bugsâ€ä¸€èŠ‚\n" "\n" "翻译错误请å‘信至 translation-team-zh-cn@lists.sourceforge.net\n" "\n" #: main.c:632 msgid "" "gawk is a pattern scanning and processing language.\n" "By default it reads standard input and writes standard output.\n" "\n" msgstr "" "gawk 是一个模å¼æ‰«æåŠå¤„ç†è¯­è¨€ã€‚缺çœæƒ…况下它从标准输入读入并写至标准输出。\n" "\n" #: main.c:636 msgid "" "Examples:\n" "\tgawk '{ sum += $1 }; END { print sum }' file\n" "\tgawk -F: '{ print $1 }' /etc/passwd\n" msgstr "" "范例:\n" "\tgawk '{ sum += $1 }; END { print sum }' file\n" "\tgawk -F: '{ print $1 }' /etc/passwd\n" #: main.c:661 #, 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 3 of the License, or\n" "(at your option) any later version.\n" "\n" msgstr "" "版æƒæ‰€æœ‰ © 1989, 1991-%d 自由软件基金会(FSF)。\n" "\n" "该程åºä¸ºè‡ªç”±è½¯ä»¶ï¼Œä½ å¯ä»¥åœ¨è‡ªç”±è½¯ä»¶åŸºé‡‘会å‘布的 GNU 通用公共许å¯è¯(GPL)第\n" "3版或以åŽç‰ˆæœ¬ä¸‹ä¿®æ”¹æˆ–é‡æ–°å‘布。\n" "\n" #: main.c:669 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 "" "该程åºä¹‹æ‰€ä»¥è¢«å‘布是因为希望他能对你有所用处,但我们ä¸ä½œä»»ä½•æ‹…ä¿ã€‚这包å«\n" "但ä¸é™äºŽä»»ä½•å•†ä¸šé€‚售性以åŠé’ˆå¯¹ç‰¹å®šç›®çš„的适用性的担ä¿ã€‚详情å‚è§ GNU 通用公\n" "共许å¯è¯(GPL)。\n" "\n" #: main.c:675 msgid "" "You should have received a copy of the GNU General Public License\n" "along with this program. If not, see http://www.gnu.org/licenses/.\n" msgstr "" "你应该收到程åºé™„带的一份 GNU 通用公共许å¯è¯(GPL)。如果没有收到,请å‚看 " "http://www.gnu.org/licenses/ 。\n" #: main.c:712 msgid "-Ft does not set FS to tab in POSIX awk" msgstr "在 POSIX awk 中 -Ft ä¸ä¼šå°† FS 设为制表符(tab)" #: main.c:999 #, c-format msgid "unknown value for field spec: %d\n" msgstr "未知的字段规范:%d\n" #: main.c:1097 #, c-format msgid "" "%s: `%s' argument to `-v' not in `var=value' form\n" "\n" msgstr "" "%s:“-vâ€çš„å‚数“%sâ€ä¸æ˜¯â€œvar=valueâ€å½¢å¼\n" "\n" #: main.c:1123 #, c-format msgid "`%s' is not a legal variable name" msgstr "“%sâ€ä¸æ˜¯ä¸€ä¸ªåˆæ³•çš„å˜é‡å" #: main.c:1126 #, c-format msgid "`%s' is not a variable name, looking for file `%s=%s'" msgstr "“%sâ€ä¸æ˜¯ä¸€ä¸ªå˜é‡å,查找文件“%s=%sâ€" #: main.c:1130 #, c-format msgid "cannot use gawk builtin `%s' as variable name" msgstr "无法将 gawk 内置的 “%s†作为å˜é‡å" #: main.c:1135 #, c-format msgid "cannot use function `%s' as variable name" msgstr "无法将函数å“%sâ€ä½œä¸ºå˜é‡å" #: main.c:1190 msgid "floating point exception" msgstr "浮点数异常" #: main.c:1197 msgid "fatal error: internal error" msgstr "致命错误:内部错误" #: main.c:1212 msgid "fatal error: internal error: segfault" msgstr "致命错误:内部错误:段错误" #: main.c:1224 msgid "fatal error: internal error: stack overflow" msgstr "致命错误:内部错误:栈溢出" #: main.c:1283 #, c-format msgid "no pre-opened fd %d" msgstr "文件æ述符 %d 未被打开" #: main.c:1290 #, c-format msgid "could not pre-open /dev/null for fd %d" msgstr "无法为文件æ述符 %d 预打开 /dev/null" #: main.c:1504 msgid "empty argument to `-e/--source' ignored" msgstr "“-e/--sourceâ€çš„空å‚数被忽略" #: main.c:1575 msgid "-M ignored: MPFR/GMP support not compiled in" msgstr "忽略 -M ignored:未将 MPFR/GMP 支æŒç¼–译于" #: main.c:1596 #, c-format msgid "%s: option `-W %s' unrecognized, ignored\n" msgstr "%s:选项“-W %sâ€æ— æ³•è¯†åˆ«ï¼Œå¿½ç•¥\n" #: main.c:1649 #, c-format msgid "%s: option requires an argument -- %c\n" msgstr "%s:选项需è¦ä¸€ä¸ªå‚æ•° -- %c\n" #: mpfr.c:559 #, c-format msgid "PREC value `%.*s' is invalid" msgstr "PREC 值 “%.*s†无效" #: mpfr.c:617 #, c-format msgid "RNDMODE value `%.*s' is invalid" msgstr "RNDMODE 值 “%.*s†无效" #: mpfr.c:714 #, c-format msgid "%s: received non-numeric argument" msgstr "%s:收到éžæ•°å­—å‚æ•°" #: mpfr.c:824 msgid "compl(%Rg): negative value will give strange results" msgstr "compl(%Rg):负值会得到奇怪的结果" #: mpfr.c:828 msgid "comp(%Rg): fractional value will be truncated" msgstr "compl(%Rg):å°æ•°éƒ¨åˆ†ä¼šè¢«æˆªæ–­" #: mpfr.c:840 #, c-format msgid "cmpl(%Zd): negative values will give strange results" msgstr "compl(%Zd):负值会得到奇怪的结果" #: mpfr.c:859 #, c-format msgid "%s: received non-numeric argument #%d" msgstr "%s:第 %d 个å‚æ•°ä¸æ˜¯æ•°å€¼" #: mpfr.c:869 msgid "%s: argument #%d has invalid value %Rg, using 0" msgstr "%s:第 %d 个å‚数的值 %Rg 无效,改为 0" #: mpfr.c:881 msgid "%s: argument #%d negative value %Rg will give strange results" msgstr "%s:第 %d 个å‚æ•° %Rg 为负值,会得到奇怪的结果" #: mpfr.c:887 msgid "%s: argument #%d fractional value %Rg will be truncated" msgstr "%s:第 %d 个å‚æ•° %Rg çš„å°æ•°éƒ¨åˆ†ä¼šè¢«æˆªæ–­" #: mpfr.c:902 #, c-format msgid "%s: argument #%d negative value %Zd will give strange results" msgstr "%s:第 %d 个å‚æ•° %Zd 为负值,会得到奇怪的结果" #: msg.c:68 #, c-format msgid "cmd. line:" msgstr "命令行:" #: node.c:434 msgid "backslash at end of string" msgstr "字符串尾部的åæ–œæ " #: node.c:513 #, c-format msgid "old awk does not support the `\\%c' escape sequence" msgstr "è€ awk ä¸æ”¯æŒâ€œ\\%câ€è½¬ä¹‰åºåˆ—" #: node.c:564 msgid "POSIX does not allow `\\x' escapes" msgstr "POSIX ä¸å…许“\\xâ€è½¬ä¹‰ç¬¦" #: node.c:570 msgid "no hex digits in `\\x' escape sequence" msgstr "“\\xâ€è½¬ä¹‰åºåˆ—中没有å六进制数" #: node.c:592 #, c-format msgid "" "hex escape \\x%.*s of %d characters probably not interpreted the way you " "expect" msgstr "å六进制转义符 \\x%.*s 表示的 %d 个字符å¯èƒ½ä¸ä¼šè¢«å¦‚期望情况解释" #: node.c:607 #, c-format msgid "escape sequence `\\%c' treated as plain `%c'" msgstr "转义åºåˆ—“\\%câ€è¢«å½“作å•çº¯çš„“%câ€" #: node.c:744 msgid "" "Invalid multibyte data detected. There may be a mismatch between your data " "and your locale." msgstr "检测到了无效的多字节数æ®ã€‚å¯èƒ½ä½ çš„æ•°æ®å’ŒåŒºåŸŸè®¾ç½®ä¸åŒ¹é…。" #: posix/gawkmisc.c:177 #, c-format msgid "%s %s `%s': could not get fd flags: (fcntl F_GETFD: %s)" msgstr "%s %s “%sâ€ï¼šæ— æ³•èŽ·å– fd 标志:(fcntl F_GETFD:%s)" #: posix/gawkmisc.c:189 #, c-format msgid "%s %s `%s': could not set close-on-exec: (fcntl F_SETFD: %s)" msgstr "%s %s “%sâ€ï¼šæ— æ³•è®¾ç½® close-on-exec:(fcntl F_SETFD:%s)" #: profile.c:94 #, c-format msgid "could not open `%s' for writing: %s" msgstr "无法以写模å¼æ‰“开“%sâ€ï¼š%s" #: profile.c:96 msgid "sending profile to standard error" msgstr "å‘é€é…置到标准错误输出" #: profile.c:216 #, c-format msgid "" "\t# %s rule(s)\n" "\n" msgstr "" "\t# %s 规则\n" "\n" #: profile.c:221 #, c-format msgid "" "\t# Rule(s)\n" "\n" msgstr "" "\t# 规则\n" "\n" #: profile.c:295 #, c-format msgid "internal error: %s with null vname" msgstr "内部错误:%s 带有空的 vname" #: profile.c:561 msgid "internal error: builtin with null fname" msgstr "内部错误:内置æ“作的 fname 为空" #: profile.c:1006 #, c-format msgid "" "\t# Loaded extensions (-l and/or @load)\n" "\n" msgstr "" "\t# 已加载扩展 (-l å’Œ/或 @load)\n" "\n" #: profile.c:1029 #, c-format msgid "\t# gawk profile, created %s\n" msgstr "\t# gawk é…ç½®, 创建 %s\n" #: profile.c:1600 #, c-format msgid "" "\n" "\t# Functions, listed alphabetically\n" msgstr "" "\n" "\t# 函数列表,字典åº\n" #: profile.c:1638 #, c-format msgid "redir2str: unknown redirection type %d" msgstr "redir2str:未知é‡å®šå‘类型 %d" #: re.c:610 #, c-format msgid "regexp component `%.*s' should probably be `[%.*s]'" msgstr "正则表达å¼æˆåˆ†â€œ%.*sâ€å¯èƒ½åº”为“[%.*s]â€" #: regcomp.c:143 msgid "Success" msgstr "æˆåŠŸ" #: regcomp.c:146 msgid "No match" msgstr "无匹é…" #: regcomp.c:149 msgid "Invalid regular expression" msgstr "无效的正则表达å¼" #: regcomp.c:152 msgid "Invalid collation character" msgstr "无效的收集字符" #: regcomp.c:155 msgid "Invalid character class name" msgstr "无效的字符类型å" #: regcomp.c:158 msgid "Trailing backslash" msgstr "尾端的åæ–œæ " #: regcomp.c:161 msgid "Invalid back reference" msgstr "无效的回引用" #: regcomp.c:164 msgid "Unmatched [, [^, [:, [., or [=" msgstr "[ã€[^〠[:ã€[. 或 [= ä¸é…对" #: regcomp.c:167 msgid "Unmatched ( or \\(" msgstr "未匹é…çš„ ( 或 \\(" #: regcomp.c:170 msgid "Unmatched \\{" msgstr "未匹é…çš„ \\{" #: regcomp.c:173 msgid "Invalid content of \\{\\}" msgstr "\\{\\} 中内容无效" #: regcomp.c:176 msgid "Invalid range end" msgstr "无效的范围结æŸ" #: regcomp.c:179 msgid "Memory exhausted" msgstr "内存耗尽" #: regcomp.c:182 msgid "Invalid preceding regular expression" msgstr "无效的å‰ç½®æ­£åˆ™è¡¨è¾¾å¼" #: regcomp.c:185 msgid "Premature end of regular expression" msgstr "正则表达å¼éžæ­£å¸¸ç»“æŸ" #: regcomp.c:188 msgid "Regular expression too big" msgstr "正则表达å¼è¿‡å¤§" #: regcomp.c:191 msgid "Unmatched ) or \\)" msgstr "未匹é…çš„ ) 或 \\)" #: regcomp.c:701 msgid "No previous regular expression" msgstr "å‰é¢æ²¡æœ‰æ­£åˆ™è¡¨è¾¾å¼" #: symbol.c:684 #, c-format msgid "function `%s': can't use function `%s' as a parameter name" msgstr "函数“%sâ€ï¼šæ— æ³•å°†å‡½æ•°å“%sâ€ä½œä¸ºå‚æ•°å" #: symbol.c:816 msgid "can not pop main context" msgstr "无法弹出 main 的上下文" #~ msgid "function `%s' defined to take no more than %d argument(s)" #~ msgstr "函数“%sâ€è¢«å®šä¹‰ä¸ºæ”¯æŒä¸è¶…过 %d 个å‚æ•°" #~ msgid "function `%s': missing argument #%d" #~ msgstr "函数“%sâ€ï¼šç¼ºå°‘第 %d 个å‚æ•°" #~ msgid "reference to uninitialized element `%s[\"%.*s\"]'" #~ msgstr "引用未åˆå§‹åŒ–的元素“%s[\"%.*s\"]â€" #~ msgid "subscript of array `%s' is null string" #~ msgstr "数组“%sâ€çš„下标是空字符串" #~ msgid "%s: empty (null)\n" #~ msgstr "%s: 空(null)\n" #~ msgid "%s: empty (zero)\n" #~ msgstr "%s: 空(zero)\n" #~ msgid "%s: table_size = %d, array_size = %d\n" #~ msgstr "%s: è¡¨æ ¼å¤§å° = %d, æ•°ç»„å¤§å° = %d\n" #~ msgid "%s: array_ref to %s\n" #~ msgstr "%s: 数组引用到 %s\n" #~ msgid "statement may have no effect" #~ msgstr "表达å¼å¯èƒ½æ— ä»»ä½•æ•ˆæžœ" #~ msgid "`delete array' is a gawk extension" #~ msgstr "“delete arrayâ€æ˜¯ gawk 扩展" #~ msgid "call of `length' without parentheses is deprecated by POSIX" #~ msgstr "POSIX 认为ä¸å¸¦æ‹¬å·è°ƒç”¨â€œlengthâ€æ˜¯å·²è¿‡æ—¶çš„" #~ msgid "use of non-array as array" #~ msgstr "把éžæ•°ç»„åšæ•°ç»„使用" #~ msgid "`%s' is a Bell Labs extension" #~ msgstr "“%sâ€æ˜¯è´å°”实验室扩展" #~ msgid "division by zero attempted in `/'" #~ msgstr "在“/â€ä¸­è¯•å›¾é™¤ 0" #~ msgid "length: untyped parameter argument will be forced to scalar" #~ msgstr "length: 无类型的å‚数会被强制转æ¢ä¸ºæ ‡é‡" #~ msgid "length: untyped argument will be forced to scalar" #~ msgstr "length: 无类型的å‚数会被强制转æ¢ä¸ºæ ‡é‡" #~ msgid "and: received non-numeric first argument" #~ msgstr "and: 第一个å‚æ•°ä¸æ˜¯æ•°å­—" #~ msgid "and: received non-numeric second argument" #~ msgstr "and: 第二个å‚æ•°ä¸æ˜¯æ•°å­—" #~ msgid "or: received non-numeric first argument" #~ msgstr "or: 第一个å‚æ•°ä¸æ˜¯æ•°å­—" #~ msgid "or: received non-numeric second argument" #~ msgstr "or: 第二个å‚æ•°ä¸æ˜¯æ•°å­—" #~ msgid "or(%lf, %lf): negative values will give strange results" #~ msgstr "or(%lf, %lf): 负值会得到奇怪的结果" #~ msgid "or(%lf, %lf): fractional values will be truncated" #~ msgstr "or(%lf, %lf): å°æ•°éƒ¨åˆ†ä¼šè¢«æˆªæ–­" #~ msgid "xor: received non-numeric first argument" #~ msgstr "xor: 第一个å‚æ•°ä¸æ˜¯æ•°å­—" #~ msgid "xor: received non-numeric second argument" #~ msgstr "xor: 第二个å‚æ•°ä¸æ˜¯æ•°å­—" #~ msgid "xor(%lf, %lf): fractional values will be truncated" #~ msgstr "xor(%lf, %lf): å°æ•°éƒ¨åˆ†ä¼šè¢«æˆªæ–­" #~ msgid "" #~ "for loop: array `%s' changed size from %ld to %ld during loop execution" #~ msgstr "for loop: 数组“%sâ€åœ¨å¾ªçŽ¯æ‰§è¡Œæ—¶å¤§å°ä»Ž %ld 改å˜ä¸º %ld" #~ msgid "`break' outside a loop is not portable" #~ msgstr "“breakâ€åœ¨å¾ªçŽ¯å¤–使用是ä¸å¯ç§»æ¤çš„" #~ msgid "`continue' outside a loop is not portable" #~ msgstr "“continueâ€åœ¨å¾ªçŽ¯å¤–使用是ä¸å¯ç§»æ¤çš„" #~ msgid "`next' cannot be called from a BEGIN rule" #~ msgstr "在 BEGIN 规则中ä¸å…许调用“nextâ€" #~ msgid "`next' cannot be called from an END rule" #~ msgstr "在 END 规则中ä¸å…许调用“nextâ€" #~ msgid "`nextfile' cannot be called from a BEGIN rule" #~ msgstr "在 BEGIN 规则中ä¸å…许调用“nextfileâ€" #~ msgid "`nextfile' cannot be called from an END rule" #~ msgstr "在 END 规则中ä¸å…许调用“nextfileâ€" #~ msgid "statement has no effect" #~ msgstr "表达å¼æ— ä»»ä½•ä½œç”¨" #~ msgid "" #~ "concatenation: side effects in one expression have changed the length of " #~ "another!" #~ msgstr "concatenation: 一个表达å¼çš„é¢å¤–效应已改å˜å¦ä¸€ä¸ªçš„长度ï¼" #~ msgid "assignment used in conditional context" #~ msgstr "在æ¡ä»¶è¡¨è¾¾å¼ä¸­èµ‹å€¼" #~ msgid "illegal type (%s) in tree_eval" #~ msgstr "tree_eval 中的éžæ³•ç±»åž‹ (%s)" #~ msgid "\t# -- main --\n" #~ msgstr "\t# -- main --\n" #~ msgid "assignment is not allowed to result of builtin function" #~ msgstr "ä¸å…许对内置函数的结果赋值" #~ msgid "Operation Not Supported" #~ msgstr "æ“作ä¸è¢«æ”¯æŒ" #~ msgid "invalid tree type %s in redirect()" #~ msgstr "在 redirect() 中的无效的树类型 %s" #~ msgid "/inet/raw client not ready yet, sorry" #~ msgstr "/inet/raw 客户端未准备好,对ä¸èµ·" #~ msgid "only root may use `/inet/raw'." #~ msgstr "ä»… root 能使用 “/inet/rawâ€" #~ msgid "/inet/raw server not ready yet, sorry" #~ msgstr "/inet/raw æœåŠ¡å™¨æœªå‡†å¤‡å¥½ï¼Œå¯¹ä¸èµ·" #~ msgid "no (known) protocol supplied in special filename `%s'" #~ msgstr "未æ供特殊文件å的“%sâ€çš„访问åè®®" #~ msgid "special file name `%s' is incomplete" #~ msgstr "特殊文件å“%sâ€æ˜¯ä¸å®Œæ•´çš„" #~ msgid "must supply a remote hostname to `/inet'" #~ msgstr "å¿…é¡»æ供远程主机å给“/inetâ€" #~ msgid "must supply a remote port to `/inet'" #~ msgstr "å¿…é¡»æ供远程端å£ç»™â€œ/inetâ€" #~ msgid "file `%s' is a directory" #~ msgstr "文件“%sâ€æ˜¯ä¸€ä¸ªç›®å½•" #~ msgid "use `PROCINFO[\"%s\"]' instead of `%s'" #~ msgstr "使用“PROCINFO[\"%s\"]â€è€Œä¸æ˜¯â€œ%sâ€" #~ msgid "use `PROCINFO[...]' instead of `/dev/user'" #~ msgstr "使用“PROCINFO[...]â€è€Œä¸æ˜¯â€œ/dev/userâ€" #~ msgid "out of memory" #~ msgstr "内存ä¸è¶³" #~ msgid "`-m[fr]' option irrelevant in gawk" #~ msgstr "“-m[fr]â€é€‰é¡¹åœ¨ gawk 中ä¸ç›¸å…³" #~ msgid "-m option usage: `-m[fr] nnn'" #~ msgstr "-m 选项用法: “-m[fr] nnnâ€" #~ msgid "\t-m[fr] val\n" #~ msgstr "\t-m[fr] val\n" #~ msgid "\t-W compat\t\t--compat\n" #~ msgstr "\t-W compat\t\t--compat\n" #~ msgid "\t-W copyleft\t\t--copyleft\n" #~ msgstr "\t-W copyleft\t\t--copyleft\n" #~ msgid "\t-W usage\t\t--usage\n" #~ msgstr "\t-W usage\t\t--usage\n" #~ msgid "could not find groups: %s" #~ msgstr "无法找到组: %s" #~ msgid "can't convert string to float" #~ msgstr "无法将字符串转化为浮点数" #~ msgid "# treated internally as `delete'" #~ msgstr "# 内部处ç†ä¸ºâ€œdeleteâ€" #~ msgid "# this is a dynamically loaded extension function" #~ msgstr "# 这是一个动æ€åŠ è½½çš„扩展函数" #~ msgid "" #~ "\t# BEGIN block(s)\n" #~ "\n" #~ msgstr "" #~ "\t# BEGIN å—\n" #~ "\n" #, fuzzy #~ msgid "" #~ "\t# END block(s)\n" #~ "\n" #~ msgstr "" #~ "\t# BEGIN å—\n" #~ "\n" #~ msgid "unexpected type %s in prec_level" #~ msgstr "在 prec_level 中未预期的类型 %s" #~ msgid "Unknown node type %s in pp_var" #~ msgstr "pp_var 中的未知的结点类型 %s" #~ msgid "can't open two way socket `%s' for input/output (%s)" #~ msgstr "无法为输入/输出打开åŒå‘端å£â€œ%sâ€(%s)" #~ msgid "`getline var' invalid inside `%s' rule" #~ msgstr "“getline var†在“%sâ€è§„则中无效" #~ msgid "" #~ "\t# %s block(s)\n" #~ "\n" #~ msgstr "" #~ "\t# %s å—\n" #~ "\n" #~ msgid "range of the form `[%c-%c]' is locale dependent" #~ msgstr "范围的表示方å¼â€œ[%c-%c]â€ä¸ŽåŒºåŸŸè®¾ç½®æœ‰å…³" EOF printf 'hi\0ho\n' > test/fsnul1.in printf '/\\\0' > test/nulinsrc.awk # Now, apply the patch patch -p1 << \EOF diff --git a/ChangeLog b/ChangeLog index fcc2b4f..a517e27 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,715 @@ +2016-08-25 Arnold D. Robbins + + * 4.1.4: Release tar ball made. + +2016-08-23 Arnold D. Robbins + + * dfa.h: Sync with grep. API changes. + * dfa.c: Sync with grep. + * re.c (make_regexp): Adjust for API changes, move call to dfasyntax + into stanza that compiles the regex. + (resetup): Call dfa_init. + * node.c (str2wstr): using_utf8 is now called dfa_using_utf8. + + Unrelated: + + * Makefile.am: Quote all uses of $(srcdir) and $(distdir). + (spell): New target. + +2016-08-18 Arnold D. Robbins + + * dfa.c: Sync with grep. + +2016-08-14 Arnold D. Robbins + + * re.c (make_regexp): Only call dfasyntax if actually using + dfa. Gives a 14% speedup on this test: https://raw.githubusercontent.com/chadbrewbaker/awka/master/benchmark/regexp.awk. + From blathering in comp.lang.awk. + +2016-08-12 Arnold D. Robbins + + * dfa.c: Sync with GNU grep. + + Unrelated: + + * int_array.c: Minor text and formatting edits. + +2016-08-09 Andrew J. Schorr + + * awk.h: Add a comment explaining the NUMINT flag in more detail. + * int_array.c (standard_integer_string): New function to test whether + a string matches what would be produced by sprintf("%ld", ). + (is_integer): Fix bug -- if NUMBER was set, then the function was + accepting strnum values with nonstandard string representations. We + now call standard_integer_string to check that the string looks OK. + Also added ifdef'ed code to simplify the function by relying upon + force_number to parse the string, but this is disabled due to possible + negative performance impact. + +2016-08-01 Arnold D. Robbins + + * README, NEWS: Mark DJGPP port as unsupported. + +2016-08-01 Andrew J. Schorr + + * mpfr.c (mpg_tofloat): Always set precision to avoid hysteresis effects + from previous calculations using the same temporary mpfr variables. + +2016-08-01 Andrew J. Schorr + + * mpfr.c (default_prec): Add new static variable to show current PREC + setting in effect. + (init_mpfr, set_PREC): Save mpfr_set_default_prec argument in + default_prec. + (do_mpfr_func): If the argument's precision exceeds the default + precision, boost the result's precision to match it. This fixes a + bug where we used to copy the argument's precision, regardless of + whether it was higher or lower than the PREC setting. + +2016-07-24 Norihiro Tanaka + + * re.c (research): Now that the dfa matcher correctly runs even + in multibyte locales, try it if even if need_start is true. + However, if start > 0, avoid dfa matcher, since it can't handle + the case where the search starts in the middle of a string. + + Unrelated: + + * eval.c (load_casetable): Reset casetable[i] to `i' if i + should not be mapped to upper case. Fixes inconsistencies between + dfa and regex in some single bytes locales; notably el_GR.iso88597. + +2016-07-23 Andrew J. Schorr + + * builtin.c (do_print): Improve logic for formatting + numeric values. + +2016-07-19 Andrew J. Schorr + + * eval.c (set_LINT): Simplify the code considerably. + +2016-07-19 Arnold D. Robbins + + * awkgram.y (shadow_funcs): Change test at end to be + `lintfunc == r_fatal' instead of `lintfunc != warning'. + Thank to Andrew Schorr for the suggestion. + +2016-07-18 Arnold D. Robbins + + * main.c (locale_dir): New variable, init to LOCALEDIR (set by + configure). + (set_locale_stuff): Move calls to bindtextdomain and + textdomain to here; they must be done after calling setlocale. + Use locale_dir instead of LOCALEDIR. + (main): Move call to set_locale_stuff() to before parsing arguments. + Check for GAWK_LOCALE_DIR env var and use it if there. If doing + locale debugging, call set_locale_stuff again if arg parsing changed + the locale. + + Unrelated: + + * dfa.c: Sync with GNU grep. + + Unrelated: + + * config.sub: Updated from GNULIB. + +2016-07-17 Arnold D. Robbins + + * eval.c (set_LINT): Reset lintfunc to `warning' for LINT="invalid". + Thanks to Andy Schorr for the report. + +2016-07-08 Arnold D. Robbins + + * dfa.c: Sync with GNU grep. + +2016-07-01 Arnold D. Robbins + + * array.c (value_info): Print something reasonable when stfmt + is -1. + * mpfr.c (mpg_format_val): Don't cast index to char. + * node.c (r_format_val): Ditto. + Thanks to Andrew Schorr for pointing these out. + + Unrelated: + + * gawkapi.c (api_warning): Fix the comment header. + (api_lintwarn): Factor out the call to va_end to after the if. + + Unrelated: + + * symbol.c (get_symbols): Add FUNCTAB and SYMTAB to the list + for the -d option. + * awkgram.y (dump_vars): Allow "-" to mean print to stdout. + Thanks to Hermann Peifer for the reports. + +2016-06-26 Arnold D. Robbins + + Repair change of 2015-08-25 to handling of MAYBE_NUM. + * mpfr.c (mpg_force_number): Just clear MAYBE_NUM. + * node.c (r_force_number): Clear STRING separately after + setting NUMBER. + + Thanks to Andrew Schorr for reporting the problem. + A test case will eventually be merged into master. + +2016-06-16 Arnold D. Robbins + + * awk.h: Add comment headers for several functions. + * builtin.c (nondec2awknum): Actually set a '\0' before + calling to strtod() so that the save and restore do something. + +2016-06-15 Arnold D. Robbins + + * config.sub: Update from GNULIB. + +2016-06-14 Arnold D. Robbins + + * builtin.c (do_sub): Fix sub for long runs of backslashes. + Thanks to Mike Brennan for the report. + +2016-06-10 Arnold D. Robbins + + * config.guess, config.sub: Get latest from Gnulib master. + * main.c (UPDATE_YEAR): Bump to 2016. + +2016-06-09 Arnold D. Robbins + + * dfa.c: Sync with GNU grep. + + Unrelated: + + * configure.ac: Move AM_CONDITIONAL[ENABLE_EXTENSIONS] outside + the enclosing if. Thanks to Assaf Gordon + for the report. + +2016-06-08 Arnold D. Robbins + + * symbol.c (lookup): If got Node_val, it's a non-variable + in SYMTAB, return NULL. Can affect watchpoints in the debugger, + maybe other places. Thanks to Hermann Peifer for the + test case and report. + +2016-06-05 Arnold D. Robbins + + * dfa.c: Sync with GNU grep. + +2016-06-01 Arnold D. Robbins + + * nonposix.h (getpgrp): Wrap declaration in ifdef so it doesn't + mess things up on POSIX systems (like Solaris). Thanks to + Nelson Beebe for the report. + * node.c (is_hex): New function to check for 0x preceded by + optional sign. + (r_force_number): Use it. Thanks to Mike Brennan for the report. + +2016-05-30 Arnold D. Robbins + + * main.c (arg_assign): Fully bracket ifdefs around call + to force_number. Thanks to Andrew Schorr for pointing out + that force_number was called only if LC_NUMERIC was defined. + + Lots of files: Update copyright date. + + * field.c (set_FS): Handle FS = "\0" if RS = "". Thanks to + Janis Papanagnou for the report. + + * getopt.c, getopt.h, getopt1.c, getopt_int.h: Sync with GLIBC. + +2016-05-26 Andrew J. Schorr + + * awk.h (get_actual_argument): Remove unused "optional" argument. + (get_scalar_argument, get_array_argument): Change macro definition to + remove 3rd "optional" argument. + * ext.c (get_actual_argument): Remove unused "optional" argument. + * gawkapi.c (api_get_argument, api_set_argument): Remove unused final + argument to get_array_argument and get_scalar_argument. + +2016-05-26 Arnold D. Robbins + + * awk.h [fatal]: Make parentheses and use of indirection + consistent with warning and lintwarn. Thanks to Andrew Schorr + for pointing this out. + * str_array.c (str_lookup): Move test for MAYBE_NUM to where + we duplicate the subscript. Removing it across the board is + wrong if there are multiple references to the value. Thanks + to Andrew Schorr for discussion and test case. + +2016-05-26 Andrew J. Schorr + + * awk.h (get_actual_argument): Add an initial argument containing + the (NODE *) previously returned by get_argument. This allows us to + eliminate a call to get_argument from inside get_actual_argument. + (get_scalar_argument, get_array_argument): Change macro definition to + add an initial node argument to pass through to get_actual_argument. + * ext.c (get_actual_argument): Add initial (NODE *) argument to contain + the value previously returned by get_argument. This allows us to + avoid repeating the call to get_argument. We can also eliminate the + check for a NULL value, since the caller did that already. + * gawkapi.c (api_get_argument): Pass (NODE *) returned by get_argument + to get_array_argument and get_scalar_argument. + (api_set_argument): Pass (NODE *) returned by get_argument to + get_array_argument. + +2016-05-12 Arnold Robbins + + * str_array.c (str_lookup): Remove MAYBE_NUM from subscript flags. + Bug reported by Andres Legarra . + + Unrelated: Fix issues with SIGPIPE. Reported by + Ian Jackson . + + * builtin.c (do_system): Reset/restore SIGPIPE to/from default around + call to system. + * io.c (redirect, gawk_popen [PIPES_SIMULATED]): Same. + + +2016-05-12 Eli Zaretskii + + * nonposix.h: Add prototypes for Posix functions emulated in pc/* + files. + +2016-05-03 Andrew J. Schorr + + * builtin.c (format_tree): After the string has been rendered, use + realloc to shrink the buffer to the needed size. Otherwise, the minimum + buffer size of 512 bytes can result in lots of wasted memory if many + sprintf results are stored in an array. + +2016-05-02 Andrew J. Schorr + + * gawkapi.h (gawk_api_major_version, gawk_api_minor_version): Add + CPP #define values to support conditional compilation. + +2016-05-02 Arnold D. Robbins + + * dfa.h, dfa.c: Sync with grep. + * re.c (research): Adjust type of try_backref. + +2016-05-02 Arnold D. Robbins + + * awk.h (success_node): Declare. + * array.c (success_node): Define. + * cint_array.c, int_array.c, str_array.c: Use `& success_node' + instead of `(NODE **) ! NULL' to indicate success throughout. + Thanks to Pat Rankin for the cleanup suggestion. + +2016-04-27 Arnold D. Robbins + + * io.c (set_RS): Use rs1scan if do_traditional, even if length + of RS is > 1. Bug reported by Glauco Ciullini + . + +2016-04-24 Arnold D. Robbins + + * dfa.c: Sync with GNU grep. + +2016-04-11 Arnold D. Robbins + + * regex_internal.c: Replace _GL_ATTRIBUTE_PURE with + __attribute__. + +2016-04-11 Arnold D. Robbins + + * regexec.c: Stamp out last remaining use of __attribute. + * regcomp.c: Undo change of 2016-01-24 when parsing single-byte + ranges. Go back to treating them as bytes and not as characters. + The change broke things on Windows in non-UTF-8 character sets. + * mbsupport.h (mbstate_t): Define to int. + Update copyright. + +2016-04-10 John E. Malmberg + + * regex_internal.c: Use _GL_ATTRIBUTE_PURE macro + +2016-04-07 Arnold D. Robbins + + * awk.h (two_way_close_type): Move here from io.c. + (close_rp): Add declaration. + * builtin.c (do_printf): Call close_rp before fatal message when + attempting to write the closed write end of a two way pipe. + (do_print): Ditto. + (do_print_rec): Ditto. + * io.c (do_getline_redir): Same, for reading closed read end. + (close_rp): Make not static. + +2016-04-07 Eli Zaretskii + + * nonposix.h (WEXITSTATUS, WIFEXITED, WIFSIGNALED, WTERMSIG) + (WIFSTOPPED, WSTOPSIG) [__MINGW32__]: New macros to replace the + missing header sys/wait.h. + (w32_status_to_termsig): Add prototype. + + * builtin.c (do_system) [__MINGW32__]: Compute the exit status of + 'system' differently under --traditional, as the low 8 bits are + the most interesting. + +2016-04-04 Arnold D. Robbins + + * builtin.c (do_fflush): Add warning for flush to two-way + pipe where write end was closed. + * io.c (flush_io): Add some braces for the for loop. + +2016-04-02 Arnold D. Robbins + + * builtin.c (do_printf): If the redirection is two way but the + fp is NULL, it means we're writing to the closed write-end of + a two-way pipe. Issue a fatal error message. + (do_print): Ditto. + (do_print_rec): Ditto. + * io.c (do_getline_redir): Same thing for reading from a closed + read end of a two-way pipe. Fatal error. + * NEWS: Updated. + +2016-03-14 Arnold D. Robbins + + * io.c (socketopen): For SOCK_DGRAM, set read_len to sizeof + remote_addr. Makes UDP more or less work again. + Thanks to Juergen Kahrs for the fix. + +2016-03-10 Arnold D. Robbins + + * builtin.c (do_system): Further improvements. Catch core dump + flag. + +2016-03-11 Arnold D. Robbins + + * builtin.c (do_system): Improve return values of system(). + +2016-03-08 Arnold D. Robbins + + * profile.c (print_instruction): Fix duplicate case not caught + by TinyCC. Grrr. + +2016-03-07 Arnold D. Robbins + + * profile.c (print_instruction): Further improvements in + instruction dump, especially for when pretty-printing. + * builtin.c (do_system): Augment the logic for the return + value so that death-by-signal info is available too. + +2016-03-03 Arnold D. Robbins + + * profile.c (pp_list): Unconditionally compute delimlen. Avoids + compiler warning. + +2016-03-02 Arnold D. Robbins + + * debug.c (print_instruction): Improvements in instruction dump + for if and else. + +2016-02-29 Arnold D. Robbins + + * profile.c (pp_list): Handle the case of nargs equal to zero. + Thanks to Hermann Peifer for the report. + +2016-02-28 Arnold D. Robbins + + * profile.c (pprint): Fix copy-paste error in else handling. + Thanks to Michal Jaegermann for the report. + +2016-02-23 Arnold D. Robbins + + * config.guess, config.rpath, config.sub: Update to latest + from GNULIB. + +2016-02-23 Arnold D. Robbins + + * NEWS: Update full list of infrastructure tools. + +2016-02-22 gettextize + + * configure.ac (AM_GNU_GETTEXT_VERSION): Bump to 0.19.7. + +2016-02-21 Arnold D. Robbins + + * regexec.c (prune_impossible_nodes): Remove attribute that + keeps it from compiling with 32 bit GCC. Who the heck knows + why or how. Sigh. Double sigh. + +2016-02-20 Arnold D. Robbins + + * regcomp.c, regex.c, regex.h, regex_internal.c, regex_internal.h, + regexec.c: Sync with GLIBC, mostly prototype changes. + +2016-02-18 Arnold D. Robbins + + Fix profile / pretty-printing to chain else-ifs. + + * profile.c (pprint): Change third argument into a set of flags + for in the for header or in an else if. Adjust case Op_K_else to + make the right checks and format the code properly. In Op_K_if + clear the flag so that any following else gets indented properly. + Adjust all calls. + +2016-02-14 Arnold D. Robbins + + * README, NEWS: Updated to reflect use of Texinfo 6.1. + +2016-01-25 John E. Malmberg + + * io.c (redirect): Need to call close_one more than once after + running out of file handles. + +2016-01-25 Arnold D. Robbins + + * NEWS: Document VMS support updated. + +2016-01-24 Arnold D. Robbins + + Regex: treat [x] as x if x is a unibyte encoding error. + This change removes an ifdef GAWK. + + * regcomp.c (parse_byte) [ !_LIBC && RE_ENABLE_I18N]: New function. + (build_range_exp) [ !_LIBC && RE_ENABLE_I18N]: Use it. + From Paul Eggert . + +2016-01-22 Arnold D. Robbins + + * regexec.c (prune_impossible_nodes): Remove all attributes, on + both declaration and definition. Fixes a Linux Mint 17 compilation + braino reported by Antonio Colombo. + * regex_internal.h (test_malloc): Add cast to silence a warning + on the same system. + (test_realloc): Ditto. + +2016-01-20 Arnold D. Robbins + + * regex_internal.h [attribute_hidden]: Remove definition. + * regcomp.c [attribute_hidden]: Remove uses. Not needed since + the variables are static. Thanks to Paul Eggert for pointing + this out. + +2016-01-18 Paul Eggert + + Diagnose ERE '()|\1' + Problem reported by Hanno Boeck in: http://bugs.gnu.org/21513 + + * lib/regcomp.c (parse_reg_exp): While parsing alternatives, keep + track of the set of previously-completed subexpressions available + before the first alternative, and restore this set just before + parsing each subsequent alternative. This lets us diagnose the + invalid back-reference in the ERE '()|\1'. + + Unrelated: General minor cleanups (spelling, code) from Gnulib: + + * regex.h, regex_internal.c, regex_internal.h, regexec.c: Minor + cleanups. + +2016-01-14 Arnold D. Robbins + + * eval.c (r_get_lhs): If original array was Node_var_new, + assign value that is dupnode of Nnull_string and not + Nnull_string directly. Fixes core dump reported by + ruyk . + + Unrelated: + + * ChangeLog: Cleanup spurious extra whitespace. + +2016-01-02 Arnold D. Robbins + + * dfa.c (add_utf8_anychar): Minor change in declaration of + utf8_classes to keep Tiny CC happy. Also syncs with grep. + * dfa.h: Sync with grep (update copyright year). + +2015-12-27 Arnold D. Robbins + + * awkgram.y (mk_condition): Revise to correctly handle + empty else part for pretty printing. Bug report by + ziyunfei <446240525@qq.com>. + +2015-12-16 Arnold D. Robbins + + * io.c (two_way_open): Remove unneeded close of slave in the + parent. + +2015-12-16 Arnold D. Robbins + + * profile.c (pp_number): Move count into ifdef for MPFR. Avoids + an unused variable warning if not compiling for MPFR. + + Unrelated: + + * io.c (two_way_open): If using a pty instead of pipes, open the + slave in the child. Fixes AIX and doesn't seem to break GNU/Linux. + +2015-11-26 Arnold D. Robbins + + * command.y (cmdtab): Add "exit" as synonym for "quit". + Suggested by Joep van Delft . + * NEWS: Document this. + +2015-11-24 Arnold D. Robbins + + * debug.c (debug_pre_execute): Fix to check watchpoints before + checking breakpoints. Gives more natural behavior for the user. + * NEWS: Document this. + Issue reported by Joep van Delft . + +2015-10-28 Arnold D. Robbins + + * awkgram.y (nextc): Don't allow '\0' even if check_for_bad + is false. Fixes a problem reported by Hanno Boeck . + + Unrelated: + + * dfa.c: Sync with GNU grep. + +2015-10-16 Arnold D. Robbins + + * Makefile.am (SUBDIRS): Fix ordering so that + make check directly after configure works properly. + Thanks to Michal Jaegermann + for the report. + + Unrelated: + + * dfa.c: Sync with GNU grep. + +2015-10-11 Arnold D. Robbins + + * awkgram.y (yylex): Fix invalid read problems. + Reported by Hanno Boeck . + +2015-10-04 Arnold D. Robbins + + * configure.ac: Bump version to 4.1.3a. + +2015-09-26 Arnold D. Robbins + + * awkgram.y (yylex): Diagnose multidimensional arrays for + traditional/posix (fatal) or lint. Thanks to Ed Morton + for the bug report. + +2015-09-25 Arnold D. Robbins + + * config.guess, config.sub, config.rpath: Updated. + +2015-09-18 Arnold D. Robbins + + * field.c (fpat_parse_field): Always use rp->non_empty instead + of only if in_middle. The latter can be true even if we've + already parsed part of the record. Thanks to Ed Morton + for the bug report. + +2015-09-11 Daniel Richard G. + + * regcomp.c: Include strings.h, wrapped in ifdef. Revise + defines for BTOWC. + * regex_internal.h: Remove ZOS_USS bracketing ifdefs. + +2015-09-04 Arnold D. Robbins + + * profile.c (pp_num): Use format_val to print integral values + as integers. Thanks to Hermann Peifer for the report. + +2015-08-28 Daniel Richard G. + + * Makefile.am, configure.ac: Use an Automake conditional to + enable/disable the "extensions" subdirectory instead of + producing a stub Makefile therein from the configure script. + * awk.h, custom.h, regex_internal.h: Removed z/OS-specific code + that is no longer needed due to improvements in Gawk's general + Autotools support. + * awk.h: Allow to be #included together with + as this is required on some systems (z/OS). + * io.c, configure.ac: is needed for select() + and related bits on z/OS. + * awk.h: Handle the redefinition of EXIT_FAILURE on z/OS in a + more elegant/general way. + * awkgram.y, command.y, configure.ac, eval.c, + helpers/testdfa.c: Define and use the USE_EBCDIC cpp symbol + instead of checking the value of 'a' whenever we want to know + if we're on an EBCDIC system. Also, don't assume that z/OS + necessarily means EBCDIC, as the compiler does have an ASCII + mode (-qascii). + * awkgram.y, command.y, configure.ac: On EBCDIC systems, + convert singleton EBCDIC characters in the input stream to + ASCII on the fly so that the generated awkgram.c/command.c in + the distributed sources can be used, i.e. we don't have to + require the user to build Bison and re-generate those files + themselves. This implementation uses a z/OS-specific function + (__etoa_l()) to do the conversion, but support for other + systems can be added in the future as necessary. + * io.c: No need to protect this block of "#if + defined(HAVE_TERMIOS_H)" code from z/OS; it works just fine + there. + * configure.ac: Check for the "struct passwd.pw_passwd" and + "struct group.gr_passwd" fields and conditionalize their use, + as they don't exist on z/OS. Needed for doc/gawktexi.in. + +2015-08-25 Arnold D. Robbins + + * node.c (str2wstr): Upon finding an invalid character, if + using UTF-8, use the replacement character instead of skipping + it. Helps match() and other functions work better in the face + of unexpected data. Make the lint warning an unconditional + warning. + + Unrelated: + + * awk.h: Add explanatory comment on the flags related to + types and values. + * mpfr.c (mpg_force_number): If setting NUMBER, clear STRING also + when clearing MAYBE_NUM. + (set_PREC): Check STRCUR instead of STRING. + * node.c (r_force_number): If setting NUMBER, clear STRING also + when clearing MAYBE_NUM. + +2015-08-15 Arnold D. Robbins + + * dfa.c (dfamust): Restore c90 compat by moving some + variable declarations to the top of the routine. + +2015-08-12 Arnold D. Robbins + + * dfa.c: Sync with GNU grep. Yet again, again. + +2015-08-02 Arnold D. Robbins + + * dfa.c: Sync with GNU grep. Yet again. + +2015-07-21 Arnold D. Robbins + + * dfa.c: Sync with GNU grep. + +2015-07-18 Arnold D. Robbins + + * dfa.c: Sync with GNU grep. + +2015-07-08 Arnold D. Robbins + + * dfa.h, dfa.c: Sync with GNU grep. + +2015-06-14 Arnold D. Robbins + + * regcomp.c, regex_internal.h, regexec.c: Sync with GLIBC. + + Unrelated: + + * regex_internal.c, regexec.c: __attribute --> __attribute__. + + Related: + + * regex_internal.h: Clean up defines for non-GCC for attribute; + essentially sync it with GLIBC. + +2015-05-26 Paul Eggert + + * floatcomp.c (count_trailing_zeros): New function. + This compiles to a single TZCNT instruction on the x86-64. + (adjust_uint): Use it to keep more high-order bits when + some of the lowest-order bits are zero. This implements + the documented behavior: "If the result cannot be represented + exactly as a C 'double', leading nonzero bits are removed one by + one until it can be represented exactly." + +2015-05-26 Arnold D. Robbins + + * regcomp.c: Fix offsets so error messages come out correct + once again. + 2015-05-19 Arnold D. Robbins * 4.1.3: Release tar ball made. @@ -92,7 +804,7 @@ add check that time_t is > 0 --- means we're assigning a negative value to an unsigned time_t. Thanks again to Glaudiston Gomes da Silva . - + If localtime() or gmtime() return NULL, return a null string. Thanks to Andrew Schorr. @@ -735,7 +1447,7 @@ * builtin.c (format_tree): Don't need to check return value of wctombr for -2. Thanks to Eli Zaretskii for pointing this out. - + Unrelated: * gawkapi.h: Fix doc for API get_record - errcode needs to @@ -2082,7 +2794,7 @@ * awk.h (SRCFILE): New field fini_func. * ext.c (load_ext): Takes an additional argument to look up and - save the clean up routine in SRCFILE struct. + save the clean up routine in SRCFILE struct. (INIT_FUNC, FINI_FUNC): Defines for default init and fini routine names. (do_ext): Use default for the name of the init or fini routine if @@ -2097,8 +2809,8 @@ Unrelated: - * interpret.h (Op_arrayfor_init): Use assoc_length for array size. - + * interpret.h (Op_arrayfor_init): Use assoc_length for array size. + 2012-04-19 John Haque Enhanced array interface to support transparent implementation @@ -2124,7 +2836,7 @@ (null_array_func): Add length and store routine entries. * str_array.c (str_array_func): Same. * cint_array.c (cint_array_func): Same. - * int_array.c (int_array_func): Same. + * int_array.c (int_array_func): Same. * eval.c (optypetab): Add Op_subscript_assign. * profile.c (pprint): Add case Op_subscript_assign. * interpret.h (set_array, set_idx): New variables to keep track @@ -3307,7 +4019,7 @@ * main.c: Change --arbitrary-precision to --bignum. 2012-04-02 John Haque - + Add support for arbitrary-precision arithmetic. * mpfr.c: New file. @@ -3338,7 +4050,7 @@ * eval.c (register_exec_hook): New function to manage interpreter hooks. (num_exec_hook, pre_execute, post_execute): New and adjusted definitions. (h_interpret): Renamed from debug_interpret. - (init_interpret): Changed to use the new name. + (init_interpret): Changed to use the new name. (flags2str): New entries for MPFN and MPZN. (cmp_nodes): Reworked to use seperate routine for numeric comparisons. (set_IGNORECASE, set_BINMODE, set_LINT, update_NR, update_FNR, @@ -3484,7 +4196,7 @@ 2012-01-13 Arnold D. Robbins - * dfa.c [is_valid_unibtye_character]: Fix from GNU grep to + * dfa.c [is_valid_unibtye_character]: Fix from GNU grep to bug reported by me from Scott Deifik for DJGPP. 2012-01-03 Arnold D. Robbins @@ -3828,7 +4540,7 @@ (do_traditional, do_posix, do_intervals, do_intl, do_non_decimal_data, do_profiling, do_dump_vars, do_tidy_mem, do_sandbox, do_lint, - do_lint_old): Defined as macros. + do_lint_old): Defined as macros. * main.c: Remove definitions of the do_XX variables. Add do_flags definition. * debug.c (execute_code, do_eval, parse_condition): Save @@ -3860,7 +4572,7 @@ (Node_ahash, NUMIND): Nuked. * eval.c (r_interpret): Adjust cases Op_subscript, Op_subscript_lhs, Op_store_var and Op_arrayfor_incr. - * node.c (dupnode, unref): Removed code related to Node_ahash. + * node.c (dupnode, unref): Removed code related to Node_ahash. * str_array.c: New file to handle array with string indices. * int_array.c: New file to handle array with integer indices. * cint_array.c: New file. Special handling of arrays with @@ -3913,7 +4625,7 @@ cases Op_K_getline, Op_after_beginfile, Op_after_endfile, Op_newfile and Op_K_exit. * io.c (after_beginfile): When skipping a file using nextfile, - return zero in case there was an error opening the file. + return zero in case there was an error opening the file. (has_endfile): Nuke global variable. (inrec): Add a second argument to pass errno to the calling routine. @@ -3994,7 +4706,7 @@ 2011-07-15 John Haque * awk.h (Op_sub_builtin): New opcode. - (GSUB, GENSUB, AFTER_ASSIGN, LITERAL): New flags for + (GSUB, GENSUB, AFTER_ASSIGN, LITERAL): New flags for Op_sub_builtin. * awkgram.y (struct tokentab): Change opcode to Op_sub_builtin for sub, gsub and gensub. @@ -4002,7 +4714,7 @@ * builtin.c (do_sub, do_gsub, do_gensub): Nuke. (sub_common): Renamed to do_sub. Relocate gensub argument handling code from do_gensub to here; Simplify the code a - little bit. + little bit. * eval.c (r_interpret): Handle Op_sub_builtin. Avoid field re-splitting or $0 rebuilding if (g)sub target string is a field and no substitutions were done. @@ -4025,7 +4737,7 @@ 2011-07-15 Arnold D. Robbins * awk.h: Typo fix: "loner" --> longer. Thanks to Nelson Beebe. - * builtin.c (efwrite): Fix flushing test back to what it was + * builtin.c (efwrite): Fix flushing test back to what it was in 3.1.8. Thanks to Strefil for the problem report. * configure.ac: Bump version to 4.0.0a for stable branch. diff --git a/Makefile.am b/Makefile.am index c646fc3..8660c11 100644 --- a/Makefile.am +++ b/Makefile.am @@ -1,7 +1,7 @@ # # Makefile.am --- automake input file for gawk # -# Copyright (C) 2000-2014 the Free Software Foundation, Inc. +# Copyright (C) 2000-2016 the Free Software Foundation, Inc. # # This file is part of GAWK, the GNU implementation of the # AWK Programming Language. @@ -59,17 +59,23 @@ EXTRA_DIST = \ ylwrap # The order to do things in. +# # Build explicitly in "." in order to build gawk first, so # that `make check' without a prior `make' works. +# +# Build in extension before test so that +# ./configure && make check +# works properly too. +# # Build in awklib after in doc, since we want to extract # sample files if doc/gawk.texi changed. -SUBDIRS = \ - . \ - doc \ - awklib \ - po \ - extension \ - test +SUBDIRS = . + +if ENABLE_EXTENSIONS +SUBDIRS += extension +endif + +SUBDIRS += doc awklib po test # what to make and install bin_PROGRAMS = gawk @@ -179,16 +185,16 @@ check-local: gawk$(EXEEXT) # A little extra clean up when making distributions. # And additional set up for the pc directory. dist-hook: - cd $(distdir)/extension ; rm -f *.o *.so - cd $(srcdir)/pc ; \ + cd "$(distdir)"/extension ; rm -f *.o *.so + cd "$(srcdir)"/pc ; \ chmod u+w config.h ; \ sed -n -f configpk.sed < ../configure.ac > /tmp/tmp.sed ; \ sed -f config.sed < ../configh.in > /tmp/config.tmp ; \ sed -f /tmp/tmp.sed < /tmp/config.tmp > config.h ; \ $(RM) /tmp/tmp.sed /tmp/config.tmp pwd - chmod u+w $(distdir)/pc/config.h - cp $(srcdir)/pc/config.h $(distdir)/pc/config.h + chmod u+w "$(distdir)"/pc/config.h + cp "$(srcdir)"/pc/config.h "$(distdir)"/pc/config.h # Special rules for individual files # Use of awk instead of $(AWK) is deliberate, in case gawk doesn't build @@ -196,14 +202,14 @@ dist-hook: awkgram.c: awkgram.y $(YACC) $(AM_YFLAGS) $(YFLAGS) $< - sed 's/parse error/syntax error/g' < y.tab.c | awk -f $(srcdir)/bisonfix.awk awkgram > $*.c && rm y.tab.c + sed 's/parse error/syntax error/g' < y.tab.c | awk -f "$(srcdir)"/bisonfix.awk awkgram > $*.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 command.c: command.y $(YACC) -p zz $< - sed 's/parse error/syntax error/g' < y.tab.c | awk -f $(srcdir)/bisonfix.awk command > $*.c && rm y.tab.c + sed 's/parse error/syntax error/g' < y.tab.c | awk -f "$(srcdir)"/bisonfix.awk command > $*.c && rm y.tab.c # This is for my development & testing. efence: gawk @@ -221,3 +227,6 @@ valgrind-noleak: cd test; rm -f log.[0-9]*; \ make check VALGRIND="valgrind --leak-check=no --log-file=log.%p"; \ make valgrind-scan + +spell: + cd "$(srcdir)"/doc ; $(MAKE) spell diff --git a/Makefile.in b/Makefile.in index 183d71c..afb9bdc 100644 --- a/Makefile.in +++ b/Makefile.in @@ -17,7 +17,7 @@ # # Makefile.am --- automake input file for gawk # -# Copyright (C) 2000-2014 the Free Software Foundation, Inc. +# Copyright (C) 2000-2016 the Free Software Foundation, Inc. # # This file is part of GAWK, the GNU implementation of the # AWK Programming Language. @@ -111,6 +111,7 @@ PRE_UNINSTALL = : POST_UNINSTALL = : build_triplet = @build@ host_triplet = @host@ +@ENABLE_EXTENSIONS_TRUE@am__append_1 = extension bin_PROGRAMS = gawk$(EXEEXT) subdir = . ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 @@ -261,7 +262,7 @@ am__define_uniq_tagged_files = \ ETAGS = etags CTAGS = ctags CSCOPE = cscope -DIST_SUBDIRS = $(SUBDIRS) +DIST_SUBDIRS = . extension doc awklib po test am__DIST_COMMON = $(srcdir)/Makefile.in $(srcdir)/configh.in ABOUT-NLS \ AUTHORS COPYING ChangeLog INSTALL NEWS README awkgram.c \ command.c compile config.guess config.rpath config.sub depcomp \ @@ -476,18 +477,17 @@ EXTRA_DIST = \ # The order to do things in. +# # Build explicitly in "." in order to build gawk first, so # that `make check' without a prior `make' works. +# +# Build in extension before test so that +# ./configure && make check +# works properly too. +# # Build in awklib after in doc, since we want to extract # sample files if doc/gawk.texi changed. -SUBDIRS = \ - . \ - doc \ - awklib \ - po \ - extension \ - test - +SUBDIRS = . $(am__append_1) doc awklib po test include_HEADERS = gawkapi.h # sources for both gawk and dgawk @@ -1197,16 +1197,16 @@ check-local: gawk$(EXEEXT) # A little extra clean up when making distributions. # And additional set up for the pc directory. dist-hook: - cd $(distdir)/extension ; rm -f *.o *.so - cd $(srcdir)/pc ; \ + cd "$(distdir)"/extension ; rm -f *.o *.so + cd "$(srcdir)"/pc ; \ chmod u+w config.h ; \ sed -n -f configpk.sed < ../configure.ac > /tmp/tmp.sed ; \ sed -f config.sed < ../configh.in > /tmp/config.tmp ; \ sed -f /tmp/tmp.sed < /tmp/config.tmp > config.h ; \ $(RM) /tmp/tmp.sed /tmp/config.tmp pwd - chmod u+w $(distdir)/pc/config.h - cp $(srcdir)/pc/config.h $(distdir)/pc/config.h + chmod u+w "$(distdir)"/pc/config.h + cp "$(srcdir)"/pc/config.h "$(distdir)"/pc/config.h # Special rules for individual files # Use of awk instead of $(AWK) is deliberate, in case gawk doesn't build @@ -1214,14 +1214,14 @@ dist-hook: awkgram.c: awkgram.y $(YACC) $(AM_YFLAGS) $(YFLAGS) $< - sed 's/parse error/syntax error/g' < y.tab.c | awk -f $(srcdir)/bisonfix.awk awkgram > $*.c && rm y.tab.c + sed 's/parse error/syntax error/g' < y.tab.c | awk -f "$(srcdir)"/bisonfix.awk awkgram > $*.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 command.c: command.y $(YACC) -p zz $< - sed 's/parse error/syntax error/g' < y.tab.c | awk -f $(srcdir)/bisonfix.awk command > $*.c && rm y.tab.c + sed 's/parse error/syntax error/g' < y.tab.c | awk -f "$(srcdir)"/bisonfix.awk command > $*.c && rm y.tab.c # This is for my development & testing. efence: gawk @@ -1240,6 +1240,9 @@ valgrind-noleak: make check VALGRIND="valgrind --leak-check=no --log-file=log.%p"; \ make valgrind-scan +spell: + cd "$(srcdir)"/doc ; $(MAKE) spell + # 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/NEWS b/NEWS index bb3390f..c149dfd 100644 --- a/NEWS +++ b/NEWS @@ -1,10 +1,53 @@ - Copyright (C) 2010, 2011, 2012, 2013, 2014, 2015, + Copyright (C) 2010, 2011, 2012, 2013, 2014, 2015, 2016, Free Software Foundation, Inc. Copying and distribution of this file, with or without modification, are permitted in any medium without royalty provided the copyright notice and this notice are preserved. +Changes from 4.1.3 to 4.1.4 +--------------------------- + +1. Updated to GNU autoconf 2.69, automake 1.15, gettext 0.19.7, + texinfo 6.1, texinfo.tex 2016-02-05.07, libtool 2.4.6. + +2. z/OS support updated. + +3. At the beginning of each statement, the debugger now checks and + reports watchpoints that have fired before checking for breakpoints. + This gives more natural behavior to the user. + +4. The "exit" command has been added to the debugger as an alias + for "quit". + +5. AIX 7.1 should pass the test suite now. Similar for Minix. + +6. VMS support has been updated. + +7. The profiler / pretty-printer now chains else-if statements instead + of causing cascading elses. + +8. The return value of system() has been enhanced to convey more information. + See the doc. + +9. Attempting to write to the "to" end of a two-way pipe that has been + closed is now a fatal error. Similarly, so is reading from the "from" + end that has been closed. + +10. MinGW support has been updated. + +11. The -d option now allows -d- to print to standard output. + +12. Error messages for --help and in other instances should now get + translated correctly. + +13. A new environment variable GAWK_LOCALE_DIR may be set to locate the .mo + file for gawk itself. + +14. The DJGPP port is now officially deprecated. + +15. A number of bugs have been fixed. See the ChangeLog. + Changes from 4.1.2 to 4.1.3 --------------------------- diff --git a/README b/README index a1b32de..57e6c32 100644 --- a/README +++ b/README @@ -1,5 +1,5 @@ - Copyright (C) 2005, 2006, 2007, 2009, 2010, 2011, 2012, 2013, 2014, 2015 - Free Software Foundation, Inc. + Copyright (C) 2005, 2006, 2007, 2009, 2010, 2011, 2012, 2013, 2014, 2015, + 2016, Free Software Foundation, Inc. Copying and distribution of this file, with or without modification, are permitted in any medium without royalty provided the copyright @@ -7,7 +7,7 @@ README: -This is GNU Awk 4.1.2. It is upwardly compatible with Brian Kernighan's +This is GNU Awk 4.1.4. It is upwardly compatible with Brian Kernighan's version of Unix awk. It is almost completely compliant with the 2008 POSIX 1003.1 standard for awk. (See the note below about POSIX.) @@ -21,8 +21,10 @@ Changes in this version are summarized in the NEWS file. Read the file POSIX.STD for a discussion of issues where the standard says one thing but gawk does something different. -To format the documentation with TeX, use at least version 2014-03-18.17 +To format the documentation with TeX, use at least version 2016-02-05.07 of texinfo.tex. There is a usable copy of texinfo.tex in the doc directory. +You should also use at least version 6.1 of texindex and of makeinfo +from the texinfo-6.1 distribution. INSTALLATION: @@ -78,7 +80,7 @@ Arnold Robbins BUG REPORTS AND FIXES, non-Unix systems: -MS-DOS with DJGPP: +MS-DOS with DJGPP: (This port is deprecated.) Scott Deifik scottd.mail@sbcglobal.net @@ -94,6 +96,10 @@ VMS: John Malmberg wb8tyw@qsl.net -z/OS (OS/390): +z/OS (OS/390) Contact: + Daniel Richard G. + skunk@iSKUNK.ORG + +z/OS (OS/390) Maintainer Emeritus: Dave Pitts dpitts@cozx.com diff --git a/README_d/ChangeLog b/README_d/ChangeLog index 25695ca..a9377f0 100644 --- a/README_d/ChangeLog +++ b/README_d/ChangeLog @@ -1,3 +1,15 @@ +2016-08-25 Arnold D. Robbins + + * 4.1.4: Release tar ball made. + +2016-08-24 Arnold D. Robbins + + * README.macosx: Updated. + +2016-01-25 Arnold D. Robbins + + * README.zLinux: New file. + 2015-05-19 Arnold D. Robbins * 4.1.3: Release tar ball made. diff --git a/README_d/README.macosx b/README_d/README.macosx index 92745be..f147d4a 100644 --- a/README_d/README.macosx +++ b/README_d/README.macosx @@ -1,3 +1,22 @@ +Wed Aug 24 21:54:13 IDT 2016 +============================ + +From: Pat Rankin +Date: Tue, 23 Aug 2016 18:37:26 -0700 +Subject: Re: [gawk-devel] one last prerelease tarball +To: Aharon Robbins + +> http://www.skeeve.com/gawk/gawk-4.1.3j.tar.gz + + On OSX 10.11.6, I still get warnings that left-shifting a negative value +is undefined when handling TYPE_MINIMUM(time_t) in builtin.c. time_t +is a signed 64-bit integer. 'TYPE_MINIMUM(char)' triggers warnings too, +so the size isn't an issue, just the signedness. + + Despite the warnings, the build finishes successfully and the test suite +passes without any failures now that igncas3 is skipped by 'make check'. +I don't have MPFR so those tests aren't being run. + Mon Apr 13 09:49:40 IDT 2015 ============================ diff --git a/README_d/README.zLinux b/README_d/README.zLinux new file mode 100644 index 0000000..2ff18ff --- /dev/null +++ b/README_d/README.zLinux @@ -0,0 +1,16 @@ +Mon Jan 25 18:45:06 IST 2016 +============================ + +For z/Linux (CentOS 4, at least), you must fix the optimization level +before compiling: + +1. Run configure. +2. Edit the top-level Makefile and extension/Makefile and change -O2 to -O1. +3. Run `make && make' check as usual. + +If you don't change the optimization level, the testext test will fail. + +In any case, expect the fmtspcl test to fail. + +Arnold Robbins +arnold@skeeve.com diff --git a/array.c b/array.c index f799362..8c9cc72 100644 --- a/array.c +++ b/array.c @@ -3,7 +3,8 @@ */ /* - * Copyright (C) 1986, 1988, 1989, 1991-2014 the Free Software Foundation, Inc. + * Copyright (C) 1986, 1988, 1989, 1991-2014, 2016, + * the Free Software Foundation, Inc. * * This file is part of GAWK, the GNU implementation of the * AWK Programming Language. @@ -28,6 +29,8 @@ extern FILE *output_fp; extern NODE **fmt_list; /* declared in eval.c */ +NODE *success_node; + static size_t SUBSEPlen; static char *SUBSEP; static char indent_char[] = " "; @@ -701,7 +704,7 @@ value_info(NODE *n) if ((n->flags & (STRING|STRCUR)) == STRCUR) { fprintf(output_fp, "]["); fprintf(output_fp, "stfmt=%d, ", n->stfmt); - fprintf(output_fp, "CONVFMT=\"%s\"", n->stfmt <= -1 ? "%ld" + fprintf(output_fp, "CONVFMT=\"%s\"", n->stfmt <= -1 ? "" : fmt_list[n->stfmt]->stptr); } diff --git a/awk.h b/awk.h index 1eb2688..ff62289 100644 --- a/awk.h +++ b/awk.h @@ -3,7 +3,7 @@ */ /* - * Copyright (C) 1986, 1988, 1989, 1991-2015 the Free Software Foundation, Inc. + * Copyright (C) 1986, 1988, 1989, 1991-2016 the Free Software Foundation, Inc. * * This file is part of GAWK, the GNU implementation of the * AWK Programming Language. @@ -108,24 +108,12 @@ extern int errno; #undef CHARBITS #undef INTBITS -#if !defined(ZOS_USS) #if HAVE_INTTYPES_H # include #endif #if HAVE_STDINT_H # include #endif -#else /* ZOS_USS */ -#include -#include -#define INT32_MAX INT_MAX -#define INT32_MIN INT_MIN -#ifndef __uint32_t -#define __uint32_t 1 -typedef unsigned long uint32_t; -#endif -typedef long int32_t; -#endif /* !ZOS_USS */ /* ----------------- System dependencies (with more includes) -----------*/ @@ -159,11 +147,10 @@ typedef int off_t; #ifdef NEED_MEMORY_H #include #endif /* NEED_MEMORY_H */ -#else /* not HAVE_STRING_H */ +#endif /* HAVE_STRING_H */ #ifdef HAVE_STRINGS_H #include #endif /* HAVE_STRINGS_H */ -#endif /* not HAVE_STRING_H */ #if HAVE_UNISTD_H #include @@ -404,6 +391,45 @@ typedef struct exp_node { # define MALLOC 0x0001 /* can be free'd */ /* type = Node_val */ + /* + * STRING and NUMBER are mutually exclusive. They represent the + * type of a value as assigned. + * + * STRCUR and NUMCUR are not mutually exclusive. They represent that + * the particular type of value is up to date. For example, + * + * a = 5 # NUMBER | NUMCUR + * b = a "" # Adds STRCUR to a, since a string value + * # is now available. But the type hasn't changed! + * + * a = "42" # STRING | STRCUR + * b = a + 0 # Adds NUMCUR to a, since numeric value + * # is now available. But the type hasn't changed! + * + * MAYBE_NUM is the joker. It means "this is string data, but + * the user may have really wanted it to be a number. If we have + * to guess, like in a comparison, turn it into a number." + * For example, gawk -v a=42 .... + * Here, `a' gets STRING|STRCUR|MAYBE_NUM and then when used where + * a number is needed, it gets turned into a NUMBER and STRING + * is cleared. + * + * WSTRCUR is for efficiency. If in a multibyte locale, and we + * need to do something character based (substr, length, etc.) + * we create the corresponding wide character string and store it, + * and add WSTRCUR to the flags so that we don't have to do the + * conversion more than once. + * + * The NUMINT flag may be used with a value of any type -- NUMBER, + * STRING, or STRNUM. It indicates that the string representation + * equals the result of sprintf("%ld", ). So, for + * example, NUMINT should NOT be set if it's a strnum or string value + * where the string is " 1" or "01" or "+1" or "1.0" or "0.1E1". This + * is a hint to indicate that an integer array optimization may be + * used when this value appears as a subscript. + * + * We hope that the rest of the flags are self-explanatory. :-) + */ # define STRING 0x0002 /* assigned as string */ # define STRCUR 0x0004 /* string value is current */ # define NUMCUR 0x0008 /* numeric value is current */ @@ -1051,6 +1077,9 @@ extern afunc_t str_array_func[]; extern afunc_t cint_array_func[]; extern afunc_t int_array_func[]; +/* special node used to indicate success in array routines (not NULL) */ +extern NODE *success_node; + extern BLOCK nextfree[]; extern bool field0_valid; @@ -1250,7 +1279,7 @@ DEREF(NODE *r) #define efree(p) free(p) -#define fatal set_loc(__FILE__, __LINE__), r_fatal +#define fatal (*(set_loc(__FILE__, __LINE__), r_fatal)) extern jmp_buf fatal_tag; extern bool fatal_tag_valid; @@ -1420,9 +1449,9 @@ extern void close_extensions(void); extern void make_old_builtin(const char *, NODE *(*)(int), int); extern awk_bool_t make_builtin(const awk_ext_func_t *); extern NODE *get_argument(int); -extern NODE *get_actual_argument(int, bool, bool); -#define get_scalar_argument(i, opt) get_actual_argument((i), (opt), false) -#define get_array_argument(i, opt) get_actual_argument((i), (opt), true) +extern NODE *get_actual_argument(NODE *, int, bool); +#define get_scalar_argument(n, i) get_actual_argument((n), (i), false) +#define get_array_argument(n, i) get_actual_argument((n), (i), true) #endif /* field.c */ extern void init_fields(void); @@ -1483,6 +1512,8 @@ extern struct redirect *redirect(NODE *redir_exp, int redirtype, int *errflg); extern NODE *do_close(int nargs); extern int flush_io(void); extern int close_io(bool *stdio_problem); +typedef enum { CLOSE_ALL, CLOSE_TO, CLOSE_FROM } two_way_close_type; +extern int close_rp(struct redirect *rp, two_way_close_type how); extern int devopen_simple(const char *name, const char *mode, bool try_real_open); extern int devopen(const char *name, const char *mode); extern int srcopen(SRCFILE *s); @@ -1633,6 +1664,11 @@ extern uintmax_t adjust_uint(uintmax_t n); #endif /* ! defined(VMS)) */ #endif /* WEXITSTATUS */ +/* For z/OS, from Dave Pitts. EXIT_FAILURE is normally 8, make it 1. */ +#if defined(EXIT_FAILURE) && EXIT_FAILURE == 8 +# undef EXIT_FAILURE +#endif + /* EXIT_SUCCESS and EXIT_FAILURE normally come from */ #ifndef EXIT_SUCCESS # define EXIT_SUCCESS 0 @@ -1645,16 +1681,6 @@ extern uintmax_t adjust_uint(uintmax_t n); # define EXIT_FATAL 2 #endif -/* For z/OS, from Dave Pitts. EXIT_FAILURE is normally 8, make it 1. */ -#ifdef ZOS_USS - -#ifdef EXIT_FAILURE -#undef EXIT_FAILURE -#endif - -#define EXIT_FAILURE 1 -#endif - /* ------------------ Inline Functions ------------------ */ /* @@ -1745,6 +1771,8 @@ dupnode(NODE *n) } #endif +/* force_string --- force a node to have a string value */ + static inline NODE * force_string(NODE *s) { @@ -1760,6 +1788,8 @@ force_string(NODE *s) #define force_number str2number #else /* not GAWKDEBUG */ +/* unref --- decrease the reference count and/or free a node */ + static inline void unref(NODE *r) { @@ -1767,6 +1797,8 @@ unref(NODE *r) r_unref(r); } +/* force_number --- force a node to have a numeric value */ + static inline NODE * force_number(NODE *n) { @@ -1775,6 +1807,8 @@ force_number(NODE *n) #endif /* GAWKDEBUG */ +/* emalloc_real --- malloc with error checking */ + static inline void * emalloc_real(size_t count, const char *where, const char *var, const char *file, int line) { @@ -1791,6 +1825,8 @@ emalloc_real(size_t count, const char *where, const char *var, const char *file, return ret; } +/* erealloc_real --- realloc with error checking */ + static inline void * erealloc_real(void *ptr, size_t count, const char *where, const char *var, const char *file, int line) { diff --git a/awkgram.y b/awkgram.y index f311f29..4eab3d6 100644 --- a/awkgram.y +++ b/awkgram.y @@ -3,21 +3,21 @@ */ /* - * Copyright (C) 1986, 1988, 1989, 1991-2015 the Free Software Foundation, Inc. - * + * Copyright (C) 1986, 1988, 1989, 1991-2016 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 3 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 @@ -102,8 +102,8 @@ const char *const ruletab[] = { static bool in_print = false; /* lexical scanning kludge for print */ static int in_parens = 0; /* lexical scanning kludge for print */ static int sub_counter = 0; /* array dimension counter for use in delete */ -static char *lexptr = NULL; /* pointer to next char during parsing */ -static char *lexend; +static char *lexptr; /* pointer to next char during parsing */ +static char *lexend; /* end of buffer */ static char *lexptr_begin; /* keep track of where we were for error msgs */ static char *lexeme; /* beginning of lexeme for debugging */ static bool lexeof; /* seen EOF for current source? */ @@ -1823,7 +1823,7 @@ struct token { NODE *(*ptr2)(int); /* alternate arbitrary-precision function */ }; -#if 'a' == 0x81 /* it's EBCDIC */ +#ifdef USE_EBCDIC /* tokcompare --- lexicographically compare token names for sorting */ static int @@ -2111,7 +2111,8 @@ yyerror(const char *m, ...) if (thisline == NULL) { cp = lexeme; if (*cp == '\n') { - cp--; + if (cp > lexptr_begin) + cp--; mesg = _("unexpected newline or end of string"); } for (; cp != lexptr_begin && *cp != '\n'; --cp) @@ -2122,6 +2123,8 @@ yyerror(const char *m, ...) } /* NL isn't guaranteed */ bp = lexeme; + if (bp < thisline) + bp = thisline + 1; while (bp < lexend && *bp && *bp != '\n') bp++; } else { @@ -2884,7 +2887,7 @@ again: 0 : work_ring_idx + 1; cur_char_ring[work_ring_idx] = 0; } - if (check_for_bad) + if (check_for_bad || *lexptr == '\0') check_bad_char(*lexptr); return (int) (unsigned char) *lexptr++; @@ -2893,7 +2896,7 @@ again: if (lexeof) return END_FILE; if (lexptr && lexptr < lexend) { - if (check_for_bad) + if (check_for_bad || *lexptr == '\0') check_bad_char(*lexptr); return ((int) (unsigned char) *lexptr++); } @@ -2973,7 +2976,11 @@ static int newline_eof() /* yylex --- Read the input and turn it into tokens. */ static int +#ifdef USE_EBCDIC +yylex_ebcdic(void) +#else yylex(void) +#endif { int c; bool seen_e = false; /* These are for numbers */ @@ -3224,6 +3231,10 @@ retry: c = nextc(true); pushback(); if (c == '[') { + if (do_traditional) + fatal(_("multidimensional arrays are a gawk extension")); + if (do_lint) + lintwarn(_("multidimensional arrays are a gawk extension")); yylval = GET_INSTRUCTION(Op_sub_array); lasttok = ']'; } else { @@ -3799,6 +3810,41 @@ out: #undef NEWLINE_EOF } +/* It's EBCDIC in a Bison grammar, run for the hills! + + Or, convert single-character tokens coming out of yylex() from EBCDIC to + ASCII values on-the-fly so that the parse tables need not be regenerated + for EBCDIC systems. */ +#ifdef USE_EBCDIC +static int +yylex(void) +{ + static char etoa_xlate[256]; + static int do_etoa_init = 1; + int tok; + + if (do_etoa_init) + { + for (tok = 0; tok < 256; tok++) + etoa_xlate[tok] = (char) tok; +#ifdef HAVE___ETOA_L + /* IBM helpfully provides this function. */ + __etoa_l(etoa_xlate, sizeof(etoa_xlate)); +#else +# error "An EBCDIC-to-ASCII translation function is needed for this system" +#endif + do_etoa_init = 0; + } + + tok = yylex_ebcdic(); + + if (tok >= 0 && tok <= 0xFF) + tok = etoa_xlate[tok]; + + return tok; +} +#endif /* USE_EBCDIC */ + /* snode --- instructions for builtin functions. Checks for arg. count and supplies defaults where possible. */ @@ -4162,6 +4208,8 @@ dump_vars(const char *fname) if (fname == NULL) fp = stderr; + else if (strcmp(fname, "-") == 0) + fp = stdout; else if ((fp = fopen(fname, "w")) == NULL) { warning(_("could not open `%s' for writing (%s)"), fname, strerror(errno)); warning(_("sending variable list to standard error")); @@ -4171,7 +4219,7 @@ dump_vars(const char *fname) vars = variable_list(); print_vars(vars, fprintf, fp); efree(vars); - if (fp != stderr && fclose(fp) != 0) + if (fp != stdout && fp != stderr && fclose(fp) != 0) warning(_("%s: close failed (%s)"), fname, strerror(errno)); } @@ -4204,7 +4252,7 @@ shadow_funcs() efree(funcs); /* End with fatal if the user requested it. */ - if (shadow && lintfunc != warning) + if (shadow && lintfunc == r_fatal) lintwarn(_("there were shadowed variables.")); } @@ -4838,14 +4886,12 @@ mk_condition(INSTRUCTION *cond, INSTRUCTION *ifp, INSTRUCTION *true_branch, */ INSTRUCTION *ip; + bool setup_else_part = true; if (false_branch == NULL) { false_branch = list_create(instruction(Op_no_op)); - if (elsep != NULL) { /* else { } */ - if (do_pretty_print) - (void) list_prepend(false_branch, elsep); - else - bcfree(elsep); + if (elsep == NULL) { /* else { } */ + setup_else_part = false; } } else { /* assert(elsep != NULL); */ @@ -4853,6 +4899,9 @@ mk_condition(INSTRUCTION *cond, INSTRUCTION *ifp, INSTRUCTION *true_branch, /* avoid a series of no_op's: if .. else if .. else if .. */ if (false_branch->lasti->opcode != Op_no_op) (void) list_append(false_branch, instruction(Op_no_op)); + } + + if (setup_else_part) { if (do_pretty_print) { (void) list_prepend(false_branch, elsep); false_branch->nexti->branch_end = false_branch->lasti; @@ -5556,7 +5605,7 @@ check_special(const char *name) int low, high, mid; int i; int non_standard_flags = 0; -#if 'a' == 0x81 /* it's EBCDIC */ +#ifdef USE_EBCDIC static bool did_sort = false; if (! did_sort) { diff --git a/awklib/ChangeLog b/awklib/ChangeLog index f0e82f5..aa29c41 100644 --- a/awklib/ChangeLog +++ b/awklib/ChangeLog @@ -1,3 +1,24 @@ +2016-08-25 Arnold D. Robbins + + * 4.1.4: Release tar ball made. + +2015-08-28 Daniel Richard G. + + * Makefile.am: Build pwcat.c and grcat.c with (copied) + source in the current directory, so that (1) we can use + Automake-generated build rules instead of rolling our own, and + (2) Automake doesn't then admonish us to enable subdir-objects + due to the source files being in another directory. + * Makefile.am: Make the $(srcdir)/stamp-eg rule depend + on gawktexi.in instead of the gawk.texi file that is generated + from same, so that the build doesn't break if the latter is + missing. + +2015-06-19 Arnold D. Robbins + + * extract.awk: Sync with current version in the doc. Thanks to + Antonio Columbo for pointing this out. + 2015-05-19 Arnold D. Robbins * 4.1.3: Release tar ball made. diff --git a/awklib/Makefile.am b/awklib/Makefile.am index 2e1adaf..73f91f0 100644 --- a/awklib/Makefile.am +++ b/awklib/Makefile.am @@ -45,6 +45,8 @@ AUXAWK = passwd.awk group.awk nodist_grcat_SOURCES = grcat.c nodist_pwcat_SOURCES = pwcat.c +CLEANFILES = $(nodist_grcat_SOURCES) $(nodist_pwcat_SOURCES) + all: $(srcdir)/stamp-eg $(AUXPROGS) igawk $(AUXAWK) install-exec-hook: $(AUXAWK) @@ -64,22 +66,24 @@ clean-local: rm -fr eg.old rm -fr grcat.dSYM pwcat.dSYM -$(srcdir)/stamp-eg: $(srcdir)/../doc/gawk.texi $(srcdir)/../doc/gawkinet.texi +$(srcdir)/stamp-eg: $(srcdir)/../doc/gawktexi.in $(srcdir)/../doc/gawkinet.texi cd $(srcdir) && \ rm -fr eg && \ rm -fr stamp-eg && \ - $(AWKPROG) -f ./extract.awk ../doc/gawk.texi ../doc/gawkinet.texi + $(AWKPROG) -f ./extract.awk ../doc/gawktexi.in ../doc/gawkinet.texi @echo 'some makes are stupid and will not check a directory' > $(srcdir)/stamp-eg @echo 'against a file, so this file is a place holder. gack.' >> $(srcdir)/stamp-eg -$(srcdir)/eg/lib/pwcat.c $(srcdir)/eg/lib/grcat.c $(srcdir)/eg/prog/igawk.sh \ -$(srcdir)/eg/lib/passwdawk.in $(srcdir)/eg/lib/groupawk.in: stamp-eg; @: +pwcat.c: $(srcdir)/eg/lib/pwcat.c + rm -f $@ + $(LN_S) $(srcdir)/eg/lib/pwcat.c . -pwcat$(EXEEXT): $(srcdir)/eg/lib/pwcat.c - $(COMPILE) $(srcdir)/eg/lib/pwcat.c $(LDFLAGS) -o $@ +grcat.c: $(srcdir)/eg/lib/grcat.c + rm -f $@ + $(LN_S) $(srcdir)/eg/lib/grcat.c . -grcat$(EXEEXT): $(srcdir)/eg/lib/grcat.c - $(COMPILE) $(srcdir)/eg/lib/grcat.c $(LDFLAGS) -o $@ +$(srcdir)/eg/lib/pwcat.c $(srcdir)/eg/lib/grcat.c $(srcdir)/eg/prog/igawk.sh \ +$(srcdir)/eg/lib/passwdawk.in $(srcdir)/eg/lib/groupawk.in: stamp-eg; @: igawk: $(srcdir)/eg/prog/igawk.sh cp $(srcdir)/eg/prog/igawk.sh $@ ; chmod 755 $@ diff --git a/awklib/Makefile.in b/awklib/Makefile.in index 610b6ee..b96dbe1 100644 --- a/awklib/Makefile.in +++ b/awklib/Makefile.in @@ -365,6 +365,7 @@ bin_SCRIPTS = igawk AUXAWK = passwd.awk group.awk nodist_grcat_SOURCES = grcat.c nodist_pwcat_SOURCES = pwcat.c +CLEANFILES = $(nodist_grcat_SOURCES) $(nodist_pwcat_SOURCES) all: all-am .SUFFIXES: @@ -440,6 +441,14 @@ uninstall-pkglibexecPROGRAMS: clean-pkglibexecPROGRAMS: -test -z "$(pkglibexec_PROGRAMS)" || rm -f $(pkglibexec_PROGRAMS) + +grcat$(EXEEXT): $(grcat_OBJECTS) $(grcat_DEPENDENCIES) $(EXTRA_grcat_DEPENDENCIES) + @rm -f grcat$(EXEEXT) + $(AM_V_CCLD)$(LINK) $(grcat_OBJECTS) $(grcat_LDADD) $(LIBS) + +pwcat$(EXEEXT): $(pwcat_OBJECTS) $(pwcat_DEPENDENCIES) $(EXTRA_pwcat_DEPENDENCIES) + @rm -f pwcat$(EXEEXT) + $(AM_V_CCLD)$(LINK) $(pwcat_OBJECTS) $(pwcat_LDADD) $(LIBS) install-binSCRIPTS: $(bin_SCRIPTS) @$(NORMAL_INSTALL) @list='$(bin_SCRIPTS)'; test -n "$(bindir)" || list=; \ @@ -610,6 +619,7 @@ install-strip: mostlyclean-generic: clean-generic: + -test -z "$(CLEANFILES)" || rm -f $(CLEANFILES) distclean-generic: -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) @@ -730,22 +740,24 @@ clean-local: rm -fr eg.old rm -fr grcat.dSYM pwcat.dSYM -$(srcdir)/stamp-eg: $(srcdir)/../doc/gawk.texi $(srcdir)/../doc/gawkinet.texi +$(srcdir)/stamp-eg: $(srcdir)/../doc/gawktexi.in $(srcdir)/../doc/gawkinet.texi cd $(srcdir) && \ rm -fr eg && \ rm -fr stamp-eg && \ - $(AWKPROG) -f ./extract.awk ../doc/gawk.texi ../doc/gawkinet.texi + $(AWKPROG) -f ./extract.awk ../doc/gawktexi.in ../doc/gawkinet.texi @echo 'some makes are stupid and will not check a directory' > $(srcdir)/stamp-eg @echo 'against a file, so this file is a place holder. gack.' >> $(srcdir)/stamp-eg -$(srcdir)/eg/lib/pwcat.c $(srcdir)/eg/lib/grcat.c $(srcdir)/eg/prog/igawk.sh \ -$(srcdir)/eg/lib/passwdawk.in $(srcdir)/eg/lib/groupawk.in: stamp-eg; @: +pwcat.c: $(srcdir)/eg/lib/pwcat.c + rm -f $@ + $(LN_S) $(srcdir)/eg/lib/pwcat.c . -pwcat$(EXEEXT): $(srcdir)/eg/lib/pwcat.c - $(COMPILE) $(srcdir)/eg/lib/pwcat.c $(LDFLAGS) -o $@ +grcat.c: $(srcdir)/eg/lib/grcat.c + rm -f $@ + $(LN_S) $(srcdir)/eg/lib/grcat.c . -grcat$(EXEEXT): $(srcdir)/eg/lib/grcat.c - $(COMPILE) $(srcdir)/eg/lib/grcat.c $(LDFLAGS) -o $@ +$(srcdir)/eg/lib/pwcat.c $(srcdir)/eg/lib/grcat.c $(srcdir)/eg/prog/igawk.sh \ +$(srcdir)/eg/lib/passwdawk.in $(srcdir)/eg/lib/groupawk.in: stamp-eg; @: igawk: $(srcdir)/eg/prog/igawk.sh cp $(srcdir)/eg/prog/igawk.sh $@ ; chmod 755 $@ diff --git a/awklib/eg/lib/grcat.c b/awklib/eg/lib/grcat.c index 7d6b6a7..cf39083 100644 --- a/awklib/eg/lib/grcat.c +++ b/awklib/eg/lib/grcat.c @@ -31,11 +31,11 @@ main(int argc, char **argv) int i; while ((g = getgrent()) != NULL) { -#ifdef ZOS_USS - printf("%s:%ld:", g->gr_name, (long) g->gr_gid); -#else +#ifdef HAVE_STRUCT_GROUP_GR_PASSWD printf("%s:%s:%ld:", g->gr_name, g->gr_passwd, (long) g->gr_gid); +#else + printf("%s:*:%ld:", g->gr_name, (long) g->gr_gid); #endif for (i = 0; g->gr_mem[i] != NULL; i++) { printf("%s", g->gr_mem[i]); diff --git a/awklib/eg/lib/inplace.awk b/awklib/eg/lib/inplace.awk index d157465..15a83f5 100644 --- a/awklib/eg/lib/inplace.awk +++ b/awklib/eg/lib/inplace.awk @@ -5,15 +5,29 @@ # Please set INPLACE_SUFFIX to make a backup copy. For example, you may # want to set INPLACE_SUFFIX to .bak on the command line or in a BEGIN rule. +# By default, each filename on the command line will be edited inplace. +# But you can selectively disable this by adding an inplace=0 argument +# prior to files that you do not want to process this way. You can then +# reenable it later on the commandline by putting inplace=1 before files +# that you wish to be subject to inplace editing. + # N.B. We call inplace_end() in the BEGINFILE and END rules so that any # actions in an ENDFILE rule will be redirected as expected. +BEGIN { + inplace = 1 # enabled by default +} + BEGINFILE { if (_inplace_filename != "") inplace_end(_inplace_filename, INPLACE_SUFFIX) - inplace_begin(_inplace_filename = FILENAME, INPLACE_SUFFIX) + if (inplace) + inplace_begin(_inplace_filename = FILENAME, INPLACE_SUFFIX) + else + _inplace_filename = "" } END { - inplace_end(FILENAME, INPLACE_SUFFIX) + if (_inplace_filename != "") + inplace_end(_inplace_filename, INPLACE_SUFFIX) } diff --git a/awklib/eg/lib/pwcat.c b/awklib/eg/lib/pwcat.c index 934ef34..cfe250c 100644 --- a/awklib/eg/lib/pwcat.c +++ b/awklib/eg/lib/pwcat.c @@ -26,14 +26,14 @@ main(int argc, char **argv) struct passwd *p; while ((p = getpwent()) != NULL) -#ifdef ZOS_USS - printf("%s:%ld:%ld:%s:%s\n", - p->pw_name, (long) p->pw_uid, - (long) p->pw_gid, p->pw_dir, p->pw_shell); -#else +#ifdef HAVE_STRUCT_PASSWD_PW_PASSWD printf("%s:%s:%ld:%ld:%s:%s:%s\n", p->pw_name, p->pw_passwd, (long) p->pw_uid, (long) p->pw_gid, p->pw_gecos, p->pw_dir, p->pw_shell); +#else + printf("%s:*:%ld:%ld:%s:%s\n", + p->pw_name, (long) p->pw_uid, + (long) p->pw_gid, p->pw_dir, p->pw_shell); #endif endpwent(); diff --git a/awklib/eg/network/coreserv.awk b/awklib/eg/network/coreserv.awk index 348568e..a5c8b1e 100644 --- a/awklib/eg/network/coreserv.awk +++ b/awklib/eg/network/coreserv.awk @@ -1,7 +1,7 @@ # CGI Library and core of a web server # # Juergen Kahrs, Juergen.Kahrs@vr-web.de -# with Arnold Robbins, arnold@gnu.org +# with Arnold Robbins, arnold@skeeve.com # September 2000 # Global arrays diff --git a/awklib/eg/prog/cut.awk b/awklib/eg/prog/cut.awk index 080279b..fd77910 100644 --- a/awklib/eg/prog/cut.awk +++ b/awklib/eg/prog/cut.awk @@ -35,7 +35,7 @@ BEGIN { " for delimiter\n", Optarg) > "/dev/stderr" Optarg = substr(Optarg, 1, 1) } - FS = Optarg + fs = FS = Optarg OFS = FS if (FS == " ") # defeat awk semantics FS = "[ ]" @@ -123,7 +123,7 @@ function set_charlist( field, i, j, f, g, n, m, t, nfields = j - 1 } { - if (by_fields && suppress && index($0, FS) == 0) + if (by_fields && suppress && index($0, fs) == 0) next for (i = 1; i <= nfields; i++) { diff --git a/awklib/eg/prog/wc.awk b/awklib/eg/prog/wc.awk index 95940ae..c46d098 100644 --- a/awklib/eg/prog/wc.awk +++ b/awklib/eg/prog/wc.awk @@ -30,7 +30,7 @@ BEGIN { if (! do_lines && ! do_words && ! do_chars) do_lines = do_words = do_chars = 1 - print_total = (ARGC - i > 2) + print_total = (ARGC - i > 1) } function beginfile(file) { diff --git a/awklib/extract.awk b/awklib/extract.awk index 1b052e7..2662574 100644 --- a/awklib/extract.awk +++ b/awklib/extract.awk @@ -1,16 +1,14 @@ -# extract.awk --- extract files and run programs -# from texinfo files +# extract.awk --- extract files and run programs from Texinfo files # -# Arnold Robbins, arnold@gnu.org, Public Domain +# Arnold Robbins, arnold@skeeve.com, Public Domain # May 1993 # Revised September 2000 BEGIN { IGNORECASE = 1 } -/^@c(omment)?[ \t]+system/ \ -{ +/^@c(omment)?[ \t]+system/ { if (NF < 3) { - e = (FILENAME ":" FNR) + e = ("extract: " FILENAME ":" FNR) e = (e ": badly formed `system' line") print e > "/dev/stderr" next @@ -19,15 +17,14 @@ BEGIN { IGNORECASE = 1 } $2 = "" stat = system($0) if (stat != 0) { - e = (FILENAME ":" FNR) + e = ("extract: " FILENAME ":" FNR) e = (e ": warning: system returned " stat) print e > "/dev/stderr" } } -/^@c(omment)?[ \t]+file/ \ -{ +/^@c(omment)?[ \t]+file/ { if (NF != 3) { - e = (FILENAME ":" FNR ": badly formed `file' line") + e = ("extract: " FILENAME ":" FNR ": badly formed `file' line") print e > "/dev/stderr" next } @@ -65,8 +62,8 @@ BEGIN { IGNORECASE = 1 } } function unexpected_eof() { - printf("%s:%d: unexpected EOF or error\n", - FILENAME, FNR) > "/dev/stderr" + printf("extract: %s:%d: unexpected EOF or error\n", + FILENAME, FNR) > "/dev/stderr" exit 1 } diff --git a/builtin.c b/builtin.c index a62437a..0163b81 100644 --- a/builtin.c +++ b/builtin.c @@ -3,7 +3,7 @@ */ /* - * Copyright (C) 1986, 1988, 1989, 1991-2015 the Free Software Foundation, Inc. + * Copyright (C) 1986, 1988, 1989, 1991-2016 the Free Software Foundation, Inc. * * This file is part of GAWK, the GNU implementation of the * AWK Programming Language. @@ -237,6 +237,9 @@ do_fflush(int nargs) fp = rp->output.fp; if (fp != NULL) status = rp->output.gawk_fflush(fp, rp->output.opaque); + else if ((rp->flag & RED_TWOWAY) != 0) + warning(_("fflush: cannot flush: two-way pipe `%s' has closed write end"), + file); } else if ((fp = stdfile(tmp->stptr, tmp->stlen)) != NULL) { status = fflush(fp); } else { @@ -657,7 +660,7 @@ format_tree( int i, nc; bool toofew = false; char *obuf, *obufout; - size_t osiz, ofre; + size_t osiz, ofre, olen_final; const char *chbuf; const char *s0, *s1; int cs1; @@ -1569,7 +1572,10 @@ mpf1: _("too many arguments supplied for format string")); } bchunk(s0, s1 - s0); - r = make_str_node(obuf, obufout - obuf, ALREADY_MALLOCED); + olen_final = obufout - obuf; + if (ofre > 0) + erealloc(obuf, char *, olen_final + 2, "format_tree"); + r = make_str_node(obuf, olen_final, ALREADY_MALLOCED); obuf = NULL; out: { @@ -1664,8 +1670,13 @@ do_printf(int nargs, int redirtype) if (redir_exp->type != Node_val) fatal(_("attempt to use array `%s' in a scalar context"), array_vname(redir_exp)); rp = redirect(redir_exp, redirtype, & errflg); - if (rp != NULL) + if (rp != NULL) { + if ((rp->flag & RED_TWOWAY) != 0 && rp->output.fp == NULL) { + (void) close_rp(rp, CLOSE_ALL); + fatal(_("printf: attempt to write to closed write end of two-way pipe")); + } fp = rp->output.fp; + } } else if (do_debug) /* only the debugger can change the default output */ fp = output_fp; else @@ -2061,9 +2072,10 @@ NODE * do_system(int nargs) { NODE *tmp; - int ret = 0; + AWKNUM ret = 0; /* floating point on purpose, compat Unix awk */ char *cmd; char save; + int status; if (do_sandbox) fatal(_("'system' function not allowed in sandbox mode")); @@ -2080,11 +2092,47 @@ do_system(int nargs) cmd[tmp->stlen] = '\0'; os_restore_mode(fileno(stdin)); - ret = system(cmd); - if (ret != -1) - ret = WEXITSTATUS(ret); +#ifdef SIGPIPE + signal(SIGPIPE, SIG_DFL); +#endif + + status = system(cmd); + /* + * 3/2016. What to do with ret? It's never simple. + * POSIX says to use the full return value. BWK awk + * divides the result by 256. That normally gives the + * exit status but gives a weird result for death-by-signal. + * So we compromise as follows: + */ + ret = status; + if (status != -1) { + if (do_posix) + ; /* leave it alone, full 16 bits */ + else if (do_traditional) +#ifdef __MINGW32__ + ret = (((unsigned)status) & ~0xC0000000); +#else + ret = (status / 256.0); +#endif + else if (WIFEXITED(status)) + ret = WEXITSTATUS(status); /* normal exit */ + else if (WIFSIGNALED(status)) { + bool coredumped = false; +#ifdef WCOREDUMP + coredumped = WCOREDUMP(status); +#endif + /* use 256 since exit values are 8 bits */ + ret = WTERMSIG(status) + + (coredumped ? 512 : 256); + } else + ret = 0; /* shouldn't get here */ + } + if ((BINMODE & BINMODE_INPUT) != 0) os_setbinmode(fileno(stdin), O_BINARY); +#ifdef SIGPIPE + signal(SIGPIPE, SIG_IGN); +#endif cmd[tmp->stlen] = save; } @@ -2111,8 +2159,13 @@ do_print(int nargs, int redirtype) if (redir_exp->type != Node_val) fatal(_("attempt to use array `%s' in a scalar context"), array_vname(redir_exp)); rp = redirect(redir_exp, redirtype, & errflg); - if (rp != NULL) + if (rp != NULL) { + if ((rp->flag & RED_TWOWAY) != 0 && rp->output.fp == NULL) { + (void) close_rp(rp, CLOSE_ALL); + fatal(_("print: attempt to write to closed write end of two-way pipe")); + } fp = rp->output.fp; + } } else if (do_debug) /* only the debugger can change the default output */ fp = output_fp; else @@ -2126,12 +2179,8 @@ do_print(int nargs, int redirtype) fatal(_("attempt to use array `%s' in a scalar context"), array_vname(tmp)); } - if ((tmp->flags & (NUMBER|STRING)) == NUMBER) { - if (OFMTidx == CONVFMTidx) - args_array[i] = force_string(tmp); - else - args_array[i] = format_val(OFMT, OFMTidx, tmp); - } + if ((tmp->flags & STRCUR) == 0 || (tmp->stfmt != -1 && tmp->stfmt != OFMTidx)) + args_array[i] = format_val(OFMT, OFMTidx, tmp); } if (redir_exp != NULL) { @@ -2175,8 +2224,13 @@ do_print_rec(int nargs, int redirtype) if (redirtype != 0) { redir_exp = TOP(); rp = redirect(redir_exp, redirtype, & errflg); - if (rp != NULL) + if (rp != NULL) { + if ((rp->flag & RED_TWOWAY) != 0 && rp->output.fp == NULL) { + (void) close_rp(rp, CLOSE_ALL); + fatal(_("print: attempt to write to closed write end of two-way pipe")); + } fp = rp->output.fp; + } DEREF(redir_exp); decr_sp(); } else @@ -2818,8 +2872,10 @@ set_how_many: leave alone, it goes into the output */ } else { /* gawk default behavior since 1996 */ - if (strncmp(scan, "\\\\\\&", 4) == 0) { + if (strncmp(scan, "\\\\\\&", 4) == 0 + || strncmp(scan, "\\\\\\\\", 4) == 0) { /* 2016: fixed */ /* \\\& --> \& */ + /* \\\\ --> \\ */ repllen -= 2; scan += 3; } else if (strncmp(scan, "\\\\&", 3) == 0) { @@ -2924,10 +2980,12 @@ set_how_many: *bp++ = *scan; } else { /* gawk default behavior since 1996 */ - if (strncmp(scan, "\\\\\\&", 4) == 0) { + if (strncmp(scan, "\\\\\\&", 4) == 0 + || strncmp(scan, "\\\\\\\\", 4) == 0) { /* 2016: fixed */ /* \\\& --> \& */ + /* \\\\ --> \\ */ *bp++ = '\\'; - *bp++ = '&'; + *bp++ = scan[3]; scan += 3; } else if (strncmp(scan, "\\\\&", 3) == 0) { /* \\& --> \ */ @@ -3458,6 +3516,7 @@ nondec2awknum(char *str, size_t len) } else { decimal: save = str[len]; + str[len] = '\0'; retval = strtod(str, NULL); str[len] = save; } diff --git a/cint_array.c b/cint_array.c index 3945e6e..7a92cb0 100644 --- a/cint_array.c +++ b/cint_array.c @@ -3,7 +3,8 @@ */ /* - * Copyright (C) 1986, 1988, 1989, 1991-2013 the Free Software Foundation, Inc. + * Copyright (C) 1986, 1988, 1989, 1991-2013, 2016, + * the Free Software Foundation, Inc. * * This file is part of GAWK, the GNU implementation of the * AWK Programming Language. @@ -162,7 +163,7 @@ cint_array_init(NODE *symbol ATTRIBUTE_UNUSED, NODE *subs ATTRIBUTE_UNUSED) } else null_array(symbol); - return (NODE **) ! NULL; + return & success_node; } @@ -172,7 +173,7 @@ NODE ** is_uinteger(NODE *symbol, NODE *subs) { if (is_integer(symbol, subs) != NULL && subs->numbr >= 0) - return (NODE **) ! NULL; + return & success_node; return NULL; } @@ -358,7 +359,7 @@ cint_remove(NODE *symbol, NODE *subs) freenode(xn); } - return (NODE **) ! NULL; + return & success_node; xremove: xn = symbol->xarray; @@ -371,7 +372,7 @@ xremove: symbol->table_size--; assert(symbol->table_size > 0); - return (NODE **) ! NULL; + return & success_node; } diff --git a/command.y b/command.y index 0889374..eafb980 100644 --- a/command.y +++ b/command.y @@ -3,7 +3,8 @@ */ /* - * Copyright (C) 2004, 2010, 2011, 2014 the Free Software Foundation, Inc. + * Copyright (C) 2004, 2010, 2011, 2014, 2016 + * the Free Software Foundation, Inc. * * This file is part of GAWK, the GNU implementation of the * AWK Programming Language. @@ -841,6 +842,8 @@ struct cmdtoken cmdtab[] = { gettext_noop("end - end a list of commands or awk statements.") }, { "eval", "", D_eval, D_EVAL, do_eval, gettext_noop("eval stmt|[p1, p2, ...] - evaluate awk statement(s).") }, +{ "exit", "", D_quit, D_QUIT, do_quit, + gettext_noop("exit - (same as quit) exit debugger.") }, { "finish", "", D_finish, D_FINISH, do_finish, gettext_noop("finish - execute until selected stack frame returns.") }, { "frame", "f", D_frame, D_FRAME, do_frame, @@ -1022,7 +1025,11 @@ yyerror(const char *mesg, ...) /* yylex --- read a command and turn it into tokens */ static int +#ifdef USE_EBCDIC +yylex_ebcdic(void) +#else yylex(void) +#endif { static char *lexptr = NULL; static char *lexend; @@ -1298,6 +1305,39 @@ err: return D_VARIABLE; } +/* Convert single-character tokens coming out of yylex() from EBCDIC to + ASCII values on-the-fly so that the parse tables need not be regenerated + for EBCDIC systems. */ +#ifdef USE_EBCDIC +static int +yylex(void) +{ + static char etoa_xlate[256]; + static int do_etoa_init = 1; + int tok; + + if (do_etoa_init) + { + for (tok = 0; tok < 256; tok++) + etoa_xlate[tok] = (char) tok; +#ifdef HAVE___ETOA_L + /* IBM helpfully provides this function. */ + __etoa_l(etoa_xlate, sizeof(etoa_xlate)); +#else +# error "An EBCDIC-to-ASCII translation function is needed for this system" +#endif + do_etoa_init = 0; + } + + tok = yylex_ebcdic(); + + if (tok >= 0 && tok <= 0xFF) + tok = etoa_xlate[tok]; + + return tok; +} +#endif /* USE_EBCDIC */ + /* find_argument --- find index in 'argtab' for a command option */ static int diff --git a/config.guess b/config.guess index f7eb141..c4bd827 100755 --- a/config.guess +++ b/config.guess @@ -1,8 +1,8 @@ #! /bin/sh # Attempt to guess a canonical system name. -# Copyright 1992-2015 Free Software Foundation, Inc. +# Copyright 1992-2016 Free Software Foundation, Inc. -timestamp='2015-03-04' +timestamp='2016-05-15' # 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 @@ -27,7 +27,7 @@ timestamp='2015-03-04' # Originally written by Per Bothner; maintained since 2000 by Ben Elliston. # # You can get the latest version of this script from: -# http://git.savannah.gnu.org/gitweb/?p=config.git;a=blob_plain;f=config.guess;hb=HEAD +# http://git.savannah.gnu.org/gitweb/?p=config.git;a=blob_plain;f=config.guess # # Please send patches to . @@ -50,7 +50,7 @@ version="\ GNU config.guess ($timestamp) Originally written by Per Bothner. -Copyright 1992-2015 Free Software Foundation, Inc. +Copyright 1992-2016 Free Software Foundation, Inc. This is free software; see the source for copying conditions. There is NO warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE." @@ -186,9 +186,12 @@ case "${UNAME_MACHINE}:${UNAME_SYSTEM}:${UNAME_RELEASE}:${UNAME_VERSION}" in *) machine=${UNAME_MACHINE_ARCH}-unknown ;; esac # The Operating System including object format, if it has switched - # to ELF recently, or will in the future. + # to ELF recently (or will in the future) and ABI. case "${UNAME_MACHINE_ARCH}" in - arm*|earm*|i386|m68k|ns32k|sh3*|sparc|vax) + earm*) + os=netbsdelf + ;; + arm*|i386|m68k|ns32k|sh3*|sparc|vax) eval $set_cc_for_build if echo __ELF__ | $CC_FOR_BUILD -E - 2>/dev/null \ | grep -q __ELF__ @@ -221,7 +224,7 @@ case "${UNAME_MACHINE}:${UNAME_SYSTEM}:${UNAME_RELEASE}:${UNAME_VERSION}" in release='-gnu' ;; *) - release=`echo ${UNAME_RELEASE}|sed -e 's/[-_].*/\./'` + release=`echo ${UNAME_RELEASE} | sed -e 's/[-_].*//' | cut -d. -f1,2` ;; esac # Since CPU_TYPE-MANUFACTURER-KERNEL-OPERATING_SYSTEM: @@ -237,6 +240,10 @@ case "${UNAME_MACHINE}:${UNAME_SYSTEM}:${UNAME_RELEASE}:${UNAME_VERSION}" in UNAME_MACHINE_ARCH=`arch | sed 's/OpenBSD.//'` echo ${UNAME_MACHINE_ARCH}-unknown-openbsd${UNAME_RELEASE} exit ;; + *:LibertyBSD:*:*) + UNAME_MACHINE_ARCH=`arch | sed 's/^.*BSD\.//'` + echo ${UNAME_MACHINE_ARCH}-unknown-libertybsd${UNAME_RELEASE} + exit ;; *:ekkoBSD:*:*) echo ${UNAME_MACHINE}-unknown-ekkobsd${UNAME_RELEASE} exit ;; @@ -249,6 +256,9 @@ case "${UNAME_MACHINE}:${UNAME_SYSTEM}:${UNAME_RELEASE}:${UNAME_VERSION}" in *:MirBSD:*:*) echo ${UNAME_MACHINE}-unknown-mirbsd${UNAME_RELEASE} exit ;; + *:Sortix:*:*) + echo ${UNAME_MACHINE}-unknown-sortix + exit ;; alpha:OSF1:*:*) case $UNAME_RELEASE in *4.0) @@ -265,42 +275,42 @@ case "${UNAME_MACHINE}:${UNAME_SYSTEM}:${UNAME_RELEASE}:${UNAME_VERSION}" in ALPHA_CPU_TYPE=`/usr/sbin/psrinfo -v | sed -n -e 's/^ The alpha \(.*\) processor.*$/\1/p' | head -n 1` case "$ALPHA_CPU_TYPE" in "EV4 (21064)") - UNAME_MACHINE="alpha" ;; + UNAME_MACHINE=alpha ;; "EV4.5 (21064)") - UNAME_MACHINE="alpha" ;; + UNAME_MACHINE=alpha ;; "LCA4 (21066/21068)") - UNAME_MACHINE="alpha" ;; + UNAME_MACHINE=alpha ;; "EV5 (21164)") - UNAME_MACHINE="alphaev5" ;; + UNAME_MACHINE=alphaev5 ;; "EV5.6 (21164A)") - UNAME_MACHINE="alphaev56" ;; + UNAME_MACHINE=alphaev56 ;; "EV5.6 (21164PC)") - UNAME_MACHINE="alphapca56" ;; + UNAME_MACHINE=alphapca56 ;; "EV5.7 (21164PC)") - UNAME_MACHINE="alphapca57" ;; + UNAME_MACHINE=alphapca57 ;; "EV6 (21264)") - UNAME_MACHINE="alphaev6" ;; + UNAME_MACHINE=alphaev6 ;; "EV6.7 (21264A)") - UNAME_MACHINE="alphaev67" ;; + UNAME_MACHINE=alphaev67 ;; "EV6.8CB (21264C)") - UNAME_MACHINE="alphaev68" ;; + UNAME_MACHINE=alphaev68 ;; "EV6.8AL (21264B)") - UNAME_MACHINE="alphaev68" ;; + UNAME_MACHINE=alphaev68 ;; "EV6.8CX (21264D)") - UNAME_MACHINE="alphaev68" ;; + UNAME_MACHINE=alphaev68 ;; "EV6.9A (21264/EV69A)") - UNAME_MACHINE="alphaev69" ;; + UNAME_MACHINE=alphaev69 ;; "EV7 (21364)") - UNAME_MACHINE="alphaev7" ;; + UNAME_MACHINE=alphaev7 ;; "EV7.9 (21364A)") - UNAME_MACHINE="alphaev79" ;; + UNAME_MACHINE=alphaev79 ;; esac # A Pn.n version is a patched version. # A Vn.n version is a released version. # A Tn.n version is a released field test version. # A Xn.n version is an unreleased experimental baselevel. # 1.2 uses "1.2" for uname -r. - echo ${UNAME_MACHINE}-dec-osf`echo ${UNAME_RELEASE} | sed -e 's/^[PVTX]//' | tr 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz'` + echo ${UNAME_MACHINE}-dec-osf`echo ${UNAME_RELEASE} | sed -e 's/^[PVTX]//' | tr ABCDEFGHIJKLMNOPQRSTUVWXYZ abcdefghijklmnopqrstuvwxyz` # Reset EXIT trap before exiting to avoid spurious non-zero exit code. exitcode=$? trap '' 0 @@ -373,16 +383,16 @@ case "${UNAME_MACHINE}:${UNAME_SYSTEM}:${UNAME_RELEASE}:${UNAME_VERSION}" in exit ;; i86pc:SunOS:5.*:* | i86xen:SunOS:5.*:*) eval $set_cc_for_build - SUN_ARCH="i386" + SUN_ARCH=i386 # If there is a compiler, see if it is configured for 64-bit objects. # Note that the Sun cc does not turn __LP64__ into 1 like gcc does. # This test works for both compilers. - if [ "$CC_FOR_BUILD" != 'no_compiler_found' ]; then + if [ "$CC_FOR_BUILD" != no_compiler_found ]; then if (echo '#ifdef __amd64'; echo IS_64BIT_ARCH; echo '#endif') | \ - (CCOPTS= $CC_FOR_BUILD -E - 2>/dev/null) | \ + (CCOPTS="" $CC_FOR_BUILD -E - 2>/dev/null) | \ grep IS_64BIT_ARCH >/dev/null then - SUN_ARCH="x86_64" + SUN_ARCH=x86_64 fi fi echo ${SUN_ARCH}-pc-solaris2`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'` @@ -407,7 +417,7 @@ case "${UNAME_MACHINE}:${UNAME_SYSTEM}:${UNAME_RELEASE}:${UNAME_VERSION}" in exit ;; sun*:*:4.2BSD:*) UNAME_RELEASE=`(sed 1q /etc/motd | awk '{print substr($5,1,3)}') 2>/dev/null` - test "x${UNAME_RELEASE}" = "x" && UNAME_RELEASE=3 + test "x${UNAME_RELEASE}" = x && UNAME_RELEASE=3 case "`/bin/arch`" in sun3) echo m68k-sun-sunos${UNAME_RELEASE} @@ -632,13 +642,13 @@ EOF sc_cpu_version=`/usr/bin/getconf SC_CPU_VERSION 2>/dev/null` sc_kernel_bits=`/usr/bin/getconf SC_KERNEL_BITS 2>/dev/null` case "${sc_cpu_version}" in - 523) HP_ARCH="hppa1.0" ;; # CPU_PA_RISC1_0 - 528) HP_ARCH="hppa1.1" ;; # CPU_PA_RISC1_1 + 523) HP_ARCH=hppa1.0 ;; # CPU_PA_RISC1_0 + 528) HP_ARCH=hppa1.1 ;; # CPU_PA_RISC1_1 532) # CPU_PA_RISC2_0 case "${sc_kernel_bits}" in - 32) HP_ARCH="hppa2.0n" ;; - 64) HP_ARCH="hppa2.0w" ;; - '') HP_ARCH="hppa2.0" ;; # HP-UX 10.20 + 32) HP_ARCH=hppa2.0n ;; + 64) HP_ARCH=hppa2.0w ;; + '') HP_ARCH=hppa2.0 ;; # HP-UX 10.20 esac ;; esac fi @@ -677,11 +687,11 @@ EOF exit (0); } EOF - (CCOPTS= $CC_FOR_BUILD -o $dummy $dummy.c 2>/dev/null) && HP_ARCH=`$dummy` + (CCOPTS="" $CC_FOR_BUILD -o $dummy $dummy.c 2>/dev/null) && HP_ARCH=`$dummy` test -z "$HP_ARCH" && HP_ARCH=hppa fi ;; esac - if [ ${HP_ARCH} = "hppa2.0w" ] + if [ ${HP_ARCH} = hppa2.0w ] then eval $set_cc_for_build @@ -694,12 +704,12 @@ EOF # $ CC_FOR_BUILD="cc +DA2.0w" ./config.guess # => hppa64-hp-hpux11.23 - if echo __LP64__ | (CCOPTS= $CC_FOR_BUILD -E - 2>/dev/null) | + if echo __LP64__ | (CCOPTS="" $CC_FOR_BUILD -E - 2>/dev/null) | grep -q __LP64__ then - HP_ARCH="hppa2.0w" + HP_ARCH=hppa2.0w else - HP_ARCH="hppa64" + HP_ARCH=hppa64 fi fi echo ${HP_ARCH}-hp-hpux${HPUX_REV} @@ -804,14 +814,14 @@ EOF echo craynv-cray-unicosmp${UNAME_RELEASE} | sed -e 's/\.[^.]*$/.X/' exit ;; F30[01]:UNIX_System_V:*:* | F700:UNIX_System_V:*:*) - FUJITSU_PROC=`uname -m | tr 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz'` - FUJITSU_SYS=`uname -p | tr 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz' | sed -e 's/\///'` + FUJITSU_PROC=`uname -m | tr ABCDEFGHIJKLMNOPQRSTUVWXYZ abcdefghijklmnopqrstuvwxyz` + FUJITSU_SYS=`uname -p | tr ABCDEFGHIJKLMNOPQRSTUVWXYZ abcdefghijklmnopqrstuvwxyz | sed -e 's/\///'` FUJITSU_REL=`echo ${UNAME_RELEASE} | sed -e 's/ /_/'` echo "${FUJITSU_PROC}-fujitsu-${FUJITSU_SYS}${FUJITSU_REL}" exit ;; 5000:UNIX_System_V:4.*:*) - FUJITSU_SYS=`uname -p | tr 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz' | sed -e 's/\///'` - FUJITSU_REL=`echo ${UNAME_RELEASE} | tr 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz' | sed -e 's/ /_/'` + FUJITSU_SYS=`uname -p | tr ABCDEFGHIJKLMNOPQRSTUVWXYZ abcdefghijklmnopqrstuvwxyz | sed -e 's/\///'` + FUJITSU_REL=`echo ${UNAME_RELEASE} | tr ABCDEFGHIJKLMNOPQRSTUVWXYZ abcdefghijklmnopqrstuvwxyz | sed -e 's/ /_/'` echo "sparc-fujitsu-${FUJITSU_SYS}${FUJITSU_REL}" exit ;; i*86:BSD/386:*:* | i*86:BSD/OS:*:* | *:Ascend\ Embedded/OS:*:*) @@ -893,7 +903,7 @@ EOF exit ;; *:GNU/*:*:*) # other systems with GNU libc and userland - echo ${UNAME_MACHINE}-unknown-`echo ${UNAME_SYSTEM} | sed 's,^[^/]*/,,' | tr '[A-Z]' '[a-z]'``echo ${UNAME_RELEASE}|sed -e 's/[-(].*//'`-${LIBC} + echo ${UNAME_MACHINE}-unknown-`echo ${UNAME_SYSTEM} | sed 's,^[^/]*/,,' | tr "[:upper:]" "[:lower:]"``echo ${UNAME_RELEASE}|sed -e 's/[-(].*//'`-${LIBC} exit ;; i*86:Minix:*:*) echo ${UNAME_MACHINE}-pc-minix @@ -916,7 +926,7 @@ EOF EV68*) UNAME_MACHINE=alphaev68 ;; esac objdump --private-headers /bin/sh | grep -q ld.so.1 - if test "$?" = 0 ; then LIBC="gnulibc1" ; fi + if test "$?" = 0 ; then LIBC=gnulibc1 ; fi echo ${UNAME_MACHINE}-unknown-linux-${LIBC} exit ;; arc:Linux:*:* | arceb:Linux:*:*) @@ -962,6 +972,9 @@ EOF ia64:Linux:*:*) echo ${UNAME_MACHINE}-unknown-linux-${LIBC} exit ;; + k1om:Linux:*:*) + echo ${UNAME_MACHINE}-unknown-linux-${LIBC} + exit ;; m32r*:Linux:*:*) echo ${UNAME_MACHINE}-unknown-linux-${LIBC} exit ;; @@ -1038,7 +1051,7 @@ EOF echo ${UNAME_MACHINE}-dec-linux-${LIBC} exit ;; x86_64:Linux:*:*) - echo ${UNAME_MACHINE}-unknown-linux-${LIBC} + echo ${UNAME_MACHINE}-pc-linux-${LIBC} exit ;; xtensa*:Linux:*:*) echo ${UNAME_MACHINE}-unknown-linux-${LIBC} @@ -1117,7 +1130,7 @@ EOF # uname -m prints for DJGPP always 'pc', but it prints nothing about # the processor, so we play safe by assuming i586. # Note: whatever this is, it MUST be the same as what config.sub - # prints for the "djgpp" host, or else GDB configury will decide that + # prints for the "djgpp" host, or else GDB configure will decide that # this is a cross-build. echo i586-pc-msdosdjgpp exit ;; @@ -1266,6 +1279,9 @@ EOF SX-8R:SUPER-UX:*:*) echo sx8r-nec-superux${UNAME_RELEASE} exit ;; + SX-ACE:SUPER-UX:*:*) + echo sxace-nec-superux${UNAME_RELEASE} + exit ;; Power*:Rhapsody:*:*) echo powerpc-apple-rhapsody${UNAME_RELEASE} exit ;; @@ -1279,9 +1295,9 @@ EOF UNAME_PROCESSOR=powerpc fi if test `echo "$UNAME_RELEASE" | sed -e 's/\..*//'` -le 10 ; then - if [ "$CC_FOR_BUILD" != 'no_compiler_found' ]; then + if [ "$CC_FOR_BUILD" != no_compiler_found ]; then if (echo '#ifdef __LP64__'; echo IS_64BIT_ARCH; echo '#endif') | \ - (CCOPTS= $CC_FOR_BUILD -E - 2>/dev/null) | \ + (CCOPTS="" $CC_FOR_BUILD -E - 2>/dev/null) | \ grep IS_64BIT_ARCH >/dev/null then case $UNAME_PROCESSOR in @@ -1303,7 +1319,7 @@ EOF exit ;; *:procnto*:*:* | *:QNX:[0123456789]*:*) UNAME_PROCESSOR=`uname -p` - if test "$UNAME_PROCESSOR" = "x86"; then + if test "$UNAME_PROCESSOR" = x86; then UNAME_PROCESSOR=i386 UNAME_MACHINE=pc fi @@ -1334,7 +1350,7 @@ EOF # "uname -m" is not consistent, so use $cputype instead. 386 # is converted to i386 for consistency with other x86 # operating systems. - if test "$cputype" = "386"; then + if test "$cputype" = 386; then UNAME_MACHINE=i386 else UNAME_MACHINE="$cputype" @@ -1376,7 +1392,7 @@ EOF echo i386-pc-xenix exit ;; i*86:skyos:*:*) - echo ${UNAME_MACHINE}-pc-skyos`echo ${UNAME_RELEASE}` | sed -e 's/ .*$//' + echo ${UNAME_MACHINE}-pc-skyos`echo ${UNAME_RELEASE} | sed -e 's/ .*$//'` exit ;; i*86:rdos:*:*) echo ${UNAME_MACHINE}-pc-rdos @@ -1387,23 +1403,25 @@ EOF x86_64:VMkernel:*:*) echo ${UNAME_MACHINE}-unknown-esx exit ;; + amd64:Isilon\ OneFS:*:*) + echo x86_64-unknown-onefs + exit ;; esac cat >&2 < in order to provide the needed -information to handle your system. +If $0 has already been updated, send the following data and any +information you think might be pertinent to config-patches@gnu.org to +provide the necessary information to handle your system. config.guess timestamp = $timestamp diff --git a/config.rpath b/config.rpath index b625621..98183ff 100755 --- a/config.rpath +++ b/config.rpath @@ -2,7 +2,7 @@ # Output a system dependent set of variables, describing how to set the # run time search path of shared libraries in an executable. # -# Copyright 1996-2014 Free Software Foundation, Inc. +# Copyright 1996-2016 Free Software Foundation, Inc. # Taken from GNU libtool, 2001 # Originally by Gordon Matzigkeit , 1996 # diff --git a/config.sub b/config.sub index 8f1229c..9feb73b 100755 --- a/config.sub +++ b/config.sub @@ -1,8 +1,8 @@ #! /bin/sh # Configuration validation subroutine script. -# Copyright 1992-2015 Free Software Foundation, Inc. +# Copyright 1992-2016 Free Software Foundation, Inc. -timestamp='2015-03-08' +timestamp='2016-06-20' # This file is free software; you can redistribute it and/or modify it # under the terms of the GNU General Public License as published by @@ -33,7 +33,7 @@ timestamp='2015-03-08' # Otherwise, we print the canonical config type on stdout and succeed. # You can get the latest version of this script from: -# http://git.savannah.gnu.org/gitweb/?p=config.git;a=blob_plain;f=config.sub;hb=HEAD +# http://git.savannah.gnu.org/gitweb/?p=config.git;a=blob_plain;f=config.sub # This file is supposed to be the same for all GNU packages # and recognize all the CPU types, system types and aliases @@ -53,8 +53,7 @@ timestamp='2015-03-08' me=`echo "$0" | sed -e 's,.*/,,'` usage="\ -Usage: $0 [OPTION] CPU-MFR-OPSYS - $0 [OPTION] ALIAS +Usage: $0 [OPTION] CPU-MFR-OPSYS or ALIAS Canonicalize a configuration name. @@ -68,7 +67,7 @@ Report bugs and patches to ." version="\ GNU config.sub ($timestamp) -Copyright 1992-2015 Free Software Foundation, Inc. +Copyright 1992-2016 Free Software Foundation, Inc. This is free software; see the source for copying conditions. There is NO warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE." @@ -255,6 +254,7 @@ case $basic_machine in | arc | arceb \ | arm | arm[bl]e | arme[lb] | armv[2-8] | armv[3-8][lb] | armv7[arm] \ | avr | avr32 \ + | ba \ | be32 | be64 \ | bfin \ | c4x | c8051 | clipper \ @@ -305,7 +305,7 @@ case $basic_machine in | riscv32 | riscv64 \ | rl78 | rx \ | score \ - | sh | sh[1234] | sh[24]a | sh[24]aeb | sh[23]e | sh[34]eb | sheb | shbe | shle | sh[1234]le | sh3ele \ + | sh | sh[1234] | sh[24]a | sh[24]aeb | sh[23]e | sh[234]eb | sheb | shbe | shle | sh[1234]le | sh3ele \ | sh64 | sh64le \ | sparc | sparc64 | sparc64b | sparc64v | sparc86x | sparclet | sparclite \ | sparcv8 | sparcv9 | sparcv9b | sparcv9v \ @@ -376,6 +376,7 @@ case $basic_machine in | alphapca5[67]-* | alpha64pca5[67]-* | arc-* | arceb-* \ | arm-* | armbe-* | armle-* | armeb-* | armv*-* \ | avr-* | avr32-* \ + | ba-* \ | be32-* | be64-* \ | bfin-* | bs2000-* \ | c[123]* | c30-* | [cjt]90-* | c4x-* \ @@ -428,12 +429,13 @@ case $basic_machine in | pdp10-* | pdp11-* | pj-* | pjl-* | pn-* | power-* \ | powerpc-* | powerpc64-* | powerpc64le-* | powerpcle-* \ | pyramid-* \ + | riscv32-* | riscv64-* \ | rl78-* | romp-* | rs6000-* | rx-* \ | sh-* | sh[1234]-* | sh[24]a-* | sh[24]aeb-* | sh[23]e-* | sh[34]eb-* | sheb-* | shbe-* \ | shle-* | sh[1234]le-* | sh3ele-* | sh64-* | sh64le-* \ | sparc-* | sparc64-* | sparc64b-* | sparc64v-* | sparc86x-* | sparclet-* \ | sparclite-* \ - | sparcv8-* | sparcv9-* | sparcv9b-* | sparcv9v-* | sv1-* | sx?-* \ + | sparcv8-* | sparcv9-* | sparcv9b-* | sparcv9v-* | sv1-* | sx*-* \ | tahoe-* \ | tic30-* | tic4x-* | tic54x-* | tic55x-* | tic6x-* | tic80-* \ | tile*-* \ @@ -518,7 +520,7 @@ case $basic_machine in basic_machine=i386-pc os=-aros ;; - asmjs) + asmjs) basic_machine=asmjs-unknown ;; aux) @@ -641,6 +643,14 @@ case $basic_machine in basic_machine=m68k-bull os=-sysv3 ;; + e500v[12]) + basic_machine=powerpc-unknown + os=$os"spe" + ;; + e500v[12]-*) + basic_machine=powerpc-`echo $basic_machine | sed 's/^[^-]*-//'` + os=$os"spe" + ;; ebmon29k) basic_machine=a29k-amd os=-ebmon @@ -1376,18 +1386,18 @@ case $os in | -hpux* | -unos* | -osf* | -luna* | -dgux* | -auroraux* | -solaris* \ | -sym* | -kopensolaris* | -plan9* \ | -amigaos* | -amigados* | -msdos* | -newsos* | -unicos* | -aof* \ - | -aos* | -aros* | -cloudabi* \ + | -aos* | -aros* | -cloudabi* | -sortix* \ | -nindy* | -vxsim* | -vxworks* | -ebmon* | -hms* | -mvs* \ | -clix* | -riscos* | -uniplus* | -iris* | -rtu* | -xenix* \ | -hiux* | -386bsd* | -knetbsd* | -mirbsd* | -netbsd* \ - | -bitrig* | -openbsd* | -solidbsd* \ + | -bitrig* | -openbsd* | -solidbsd* | -libertybsd* \ | -ekkobsd* | -kfreebsd* | -freebsd* | -riscix* | -lynxos* \ | -bosx* | -nextstep* | -cxux* | -aout* | -elf* | -oabi* \ | -ptx* | -coff* | -ecoff* | -winnt* | -domain* | -vsta* \ | -udi* | -eabi* | -lites* | -ieee* | -go32* | -aux* \ | -chorusos* | -chorusrdb* | -cegcc* \ | -cygwin* | -msys* | -pe* | -psos* | -moss* | -proelf* | -rtems* \ - | -mingw32* | -mingw64* | -linux-gnu* | -linux-android* \ + | -midipix* | -mingw32* | -mingw64* | -linux-gnu* | -linux-android* \ | -linux-newlib* | -linux-musl* | -linux-uclibc* \ | -uxpv* | -beos* | -mpeix* | -udk* | -moxiebox* \ | -interix* | -uwin* | -mks* | -rhapsody* | -darwin* | -opened* \ @@ -1396,7 +1406,8 @@ case $os in | -os2* | -vos* | -palmos* | -uclinux* | -nucleus* \ | -morphos* | -superux* | -rtmk* | -rtmk-nova* | -windiss* \ | -powermax* | -dnix* | -nx6 | -nx7 | -sei* | -dragonfly* \ - | -skyos* | -haiku* | -rdos* | -toppers* | -drops* | -es* | -tirtos*) + | -skyos* | -haiku* | -rdos* | -toppers* | -drops* | -es* \ + | -onefs* | -tirtos* | -phoenix*) # Remember, each alternative MUST END IN *, to match a version number. ;; -qnx*) @@ -1528,6 +1539,8 @@ case $os in ;; -nacl*) ;; + -ios) + ;; -none) ;; *) diff --git a/configh.in b/configh.in index f7ec5c9..d3624c2 100644 --- a/configh.in +++ b/configh.in @@ -26,11 +26,11 @@ /* Define to 1 if you have the `btowc' function. */ #undef HAVE_BTOWC -/* Define to 1 if you have the MacOS X function CFLocaleCopyCurrent in the +/* Define to 1 if you have the Mac OS X function CFLocaleCopyCurrent in the CoreFoundation framework. */ #undef HAVE_CFLOCALECOPYCURRENT -/* Define to 1 if you have the MacOS X function CFPreferencesCopyAppValue in +/* Define to 1 if you have the Mac OS X function CFPreferencesCopyAppValue in the CoreFoundation framework. */ #undef HAVE_CFPREFERENCESCOPYAPPVALUE @@ -108,7 +108,7 @@ /* Define to 1 if you have the header file. */ #undef HAVE_LOCALE_H -/* Define to 1 if the system has the type `long long int'. */ +/* Define to 1 if the system has the type 'long long int'. */ #undef HAVE_LONG_LONG_INT /* Define to 1 if you have the `mbrlen' function. */ @@ -228,6 +228,12 @@ /* Define to 1 if you have the `strtoul' function. */ #undef HAVE_STRTOUL +/* Define to 1 if `gr_passwd' is a member of `struct group'. */ +#undef HAVE_STRUCT_GROUP_GR_PASSWD + +/* Define to 1 if `pw_passwd' is a member of `struct passwd'. */ +#undef HAVE_STRUCT_PASSWD_PW_PASSWD + /* Define to 1 if `st_blksize' is a member of `struct stat'. */ #undef HAVE_STRUCT_STAT_ST_BLKSIZE @@ -243,6 +249,9 @@ /* Define to 1 if you have the header file. */ #undef HAVE_SYS_PARAM_H +/* Define to 1 if you have the header file. */ +#undef HAVE_SYS_SELECT_H + /* Define to 1 if you have the header file. */ #undef HAVE_SYS_SOCKET_H @@ -317,6 +326,9 @@ /* Define to 1 if the system has the type `_Bool'. */ #undef HAVE__BOOL +/* Define to 1 if you have the `__etoa_l' function. */ +#undef HAVE___ETOA_L + /* enable severe portability problems */ #undef I_DONT_KNOW_WHAT_IM_DOING @@ -371,6 +383,9 @@ /* Define to 1 if your declares `struct tm'. */ #undef TM_IN_SYS_TIME +/* Define to 1 if the character set is EBCDIC */ +#undef USE_EBCDIC + /* force use of our version of strftime */ #undef USE_INCLUDED_STRFTIME diff --git a/configure b/configure index fe7f770..074ae48 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.69 for GNU Awk 4.1.3. +# Generated by GNU Autoconf 2.69 for GNU Awk 4.1.4. # # Report bugs to . # @@ -580,8 +580,8 @@ MAKEFLAGS= # Identity of this package. PACKAGE_NAME='GNU Awk' PACKAGE_TARNAME='gawk' -PACKAGE_VERSION='4.1.3' -PACKAGE_STRING='GNU Awk 4.1.3' +PACKAGE_VERSION='4.1.4' +PACKAGE_STRING='GNU Awk 4.1.4' PACKAGE_BUGREPORT='bug-gawk@gnu.org' PACKAGE_URL='http://www.gnu.org/software/gawk/' @@ -633,6 +633,8 @@ GAWKLIBEXT LIBMPFR LIBREADLINE SOCKET_LIBS +ENABLE_EXTENSIONS_FALSE +ENABLE_EXTENSIONS_TRUE LIBSIGSEGV_PREFIX LTLIBSIGSEGV LIBSIGSEGV @@ -1326,7 +1328,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 4.1.3 to adapt to many kinds of systems. +\`configure' configures GNU Awk 4.1.4 to adapt to many kinds of systems. Usage: $0 [OPTION]... [VAR=VALUE]... @@ -1396,7 +1398,7 @@ fi if test -n "$ac_init_help"; then case $ac_init_help in - short | recursive ) echo "Configuration of GNU Awk 4.1.3:";; + short | recursive ) echo "Configuration of GNU Awk 4.1.4:";; esac cat <<\_ACEOF @@ -1515,7 +1517,7 @@ fi test -n "$ac_init_help" && exit $ac_status if $ac_init_version; then cat <<\_ACEOF -GNU Awk configure 4.1.3 +GNU Awk configure 4.1.4 generated by GNU Autoconf 2.69 Copyright (C) 2012 Free Software Foundation, Inc. @@ -2224,7 +2226,7 @@ cat >config.log <<_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 4.1.3, which was +It was created by GNU Awk $as_me 4.1.4, which was generated by GNU Autoconf 2.69. Invocation command line was $ $0 $@ @@ -3107,7 +3109,7 @@ fi # Define the identity of the package. PACKAGE='gawk' - VERSION='4.1.3' + VERSION='4.1.4' cat >>confdefs.h <<_ACEOF @@ -5863,17 +5865,95 @@ pkgextensiondir='${pkglibdir}' { $as_echo "$as_me:${as_lineno-$LINENO}: checking for z/OS USS compilation" >&5 $as_echo_n "checking for z/OS USS compilation... " >&6; } +if ${ac_cv_zos_uss+:} false; then : + $as_echo_n "(cached) " >&6 +else + if test "OS/390" = "`uname`" then - CFLAGS="$CFLAGS -D_ALL_SOURCE -DZOS_USS -DUSE_EBCDIC" - # Must rebuild awkgram.c and command.c from Bison for EBCDIC - rm -f awkgram.c command.c ac_cv_zos_uss=yes else ac_cv_zos_uss=no fi + +fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: ${ac_cv_zos_uss}" >&5 $as_echo "${ac_cv_zos_uss}" >&6; } +if test "x$ac_cv_zos_uss" = "xyes" +then + ac_zos_uss_cc_id=unknown + echo " $CC " | $EGREP ' (/bin/)?c89 |_' >/dev/null && ac_zos_uss_cc_id=c89 + echo " $CC " | $EGREP ' (/bin/)?c99 |_' >/dev/null && ac_zos_uss_cc_id=xlc + echo " $CC " | $EGREP ' (/bin/)?cc |_' >/dev/null && ac_zos_uss_cc_id=cc + echo " $CC " | $EGREP ' (/bin/)?xlc |_' >/dev/null && ac_zos_uss_cc_id=xlc + echo " $CC " | $EGREP ' (/bin/)?xlC |_' >/dev/null && ac_zos_uss_cc_id=xlc++ + echo " $CC " | $EGREP ' (/bin/)?xlc\+\+ |_' >/dev/null && ac_zos_uss_cc_id=xlc++ + test "x$GCC" = "xyes" && ac_zos_uss_cc_id=gcc + CPPFLAGS="$CPPFLAGS -D_ALL_SOURCE" + test "$ac_zos_uss_cc_id" != xlc++ && CPPFLAGS="$CPPFLAGS -D_XOPEN_SOURCE=600" + case "$ac_zos_uss_cc_id" in + c89) + if test -n "$_C89_OPTIONS" + then + { $as_echo "$as_me:${as_lineno-$LINENO}: CC = $CC" >&5 +$as_echo "$as_me: CC = $CC" >&6;} + { $as_echo "$as_me:${as_lineno-$LINENO}: _C89_OPTIONS = $_C89_OPTIONS" >&5 +$as_echo "$as_me: _C89_OPTIONS = $_C89_OPTIONS" >&6;} + else + as_fn_error $? "c89-setup-required +To build GNU Awk using \"c89\", please set + + _C89_OPTIONS=\"-W c,langlvl(stdc99,libext),haltonmsg(CCN3296)\" + +in your environment, and reconfigure. (The above flags cannot be specified +in CFLAGS/CPPFLAGS, due to the parentheses.)" "$LINENO" 5 + fi + ;; + gcc) + ;; + cc) + as_fn_error $? "cc-invalid +The z/OS \"cc\" compiler does not build GNU Awk correctly. + +If the \"xlc\" or \"c89\" compiler is available, please set CC accordingly +and reconfigure. (\"xlc\" is the recommended compiler on z/OS.)" "$LINENO" 5 + ;; + xlc*) + CFLAGS="$CFLAGS -qlanglvl=stdc99:libext" + cat >zos-cc < directives) rather +# than before. +# +# This script allows the code and the build system to assume standard +# compiler behavior. +# + +PS4='zos-cc: ' +REAL_CC="$CC" + +set -x +\$REAL_CC -qhaltonmsg=CCN3296 -qnosearch "\$@" -qsearch=/usr/include +EOF + chmod +x zos-cc + { $as_echo "$as_me:${as_lineno-$LINENO}: wrapping $CC with zos-cc to obtain standard behavior" >&5 +$as_echo "$as_me: wrapping $CC with zos-cc to obtain standard behavior" >&6;} + CC="`pwd`/zos-cc" + ;; + *) + { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: unrecognized compiler environment" >&5 +$as_echo "$as_me: WARNING: unrecognized compiler environment" >&2;} + ;; + esac +fi # ac_cv_zos_uss = yes { $as_echo "$as_me:${as_lineno-$LINENO}: checking for strerror in -lcposix" >&5 @@ -5943,7 +6023,7 @@ else We can't simply define LARGE_OFF_T to be 9223372036854775807, since some C++ compilers masquerading as C compilers incorrectly reject 9223372036854775807. */ -#define LARGE_OFF_T ((((off_t) 1 << 31) << 31) - 1 + (((off_t) 1 << 31) << 31)) +#define LARGE_OFF_T (((off_t) 1 << 62) - 1 + ((off_t) 1 << 62)) int off_t_is_large[(LARGE_OFF_T % 2147483629 == 721 && LARGE_OFF_T % 2147483647 == 1) ? 1 : -1]; @@ -5989,7 +6069,7 @@ else We can't simply define LARGE_OFF_T to be 9223372036854775807, since some C++ compilers masquerading as C compilers incorrectly reject 9223372036854775807. */ -#define LARGE_OFF_T ((((off_t) 1 << 31) << 31) - 1 + (((off_t) 1 << 31) << 31)) +#define LARGE_OFF_T (((off_t) 1 << 62) - 1 + ((off_t) 1 << 62)) int off_t_is_large[(LARGE_OFF_T % 2147483629 == 721 && LARGE_OFF_T % 2147483647 == 1) ? 1 : -1]; @@ -6013,7 +6093,7 @@ rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext We can't simply define LARGE_OFF_T to be 9223372036854775807, since some C++ compilers masquerading as C compilers incorrectly reject 9223372036854775807. */ -#define LARGE_OFF_T ((((off_t) 1 << 31) << 31) - 1 + (((off_t) 1 << 31) << 31)) +#define LARGE_OFF_T (((off_t) 1 << 62) - 1 + ((off_t) 1 << 62)) int off_t_is_large[(LARGE_OFF_T % 2147483629 == 721 && LARGE_OFF_T % 2147483647 == 1) ? 1 : -1]; @@ -6058,7 +6138,7 @@ else We can't simply define LARGE_OFF_T to be 9223372036854775807, since some C++ compilers masquerading as C compilers incorrectly reject 9223372036854775807. */ -#define LARGE_OFF_T ((((off_t) 1 << 31) << 31) - 1 + (((off_t) 1 << 31) << 31)) +#define LARGE_OFF_T (((off_t) 1 << 62) - 1 + ((off_t) 1 << 62)) int off_t_is_large[(LARGE_OFF_T % 2147483629 == 721 && LARGE_OFF_T % 2147483647 == 1) ? 1 : -1]; @@ -6082,7 +6162,7 @@ rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext We can't simply define LARGE_OFF_T to be 9223372036854775807, since some C++ compilers masquerading as C compilers incorrectly reject 9223372036854775807. */ -#define LARGE_OFF_T ((((off_t) 1 << 31) << 31) - 1 + (((off_t) 1 << 31) << 31)) +#define LARGE_OFF_T (((off_t) 1 << 62) - 1 + ((off_t) 1 << 62)) int off_t_is_large[(LARGE_OFF_T % 2147483629 == 721 && LARGE_OFF_T % 2147483647 == 1) ? 1 : -1]; @@ -6164,6 +6244,28 @@ fi $as_echo "${gawk_cv_linux_alpha_hack}" >&6; } +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking if we are using EBCDIC" >&5 +$as_echo_n "checking if we are using EBCDIC... " >&6; } +cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#if 'a' == 0x81 +gnu_gawk_in_ebcdic +#endif +_ACEOF +if (eval "$ac_cpp conftest.$ac_ext") 2>&5 | + $EGREP "gnu_gawk_in_ebcdic" >/dev/null 2>&1; then : + +$as_echo "#define USE_EBCDIC 1" >>confdefs.h + + use_ebcdic=yes +else + use_ebcdic=no +fi +rm -f conftest* + +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $use_ebcdic" >&5 +$as_echo "$use_ebcdic" >&6; } + if test "$ISC" = 1 # will be set by test for ISC then CFLAGS="$CFLAGS -D_SYSV3" @@ -8396,7 +8498,7 @@ $as_echo "#define HAVE_LC_MESSAGES 1" >>confdefs.h for ac_header in arpa/inet.h fcntl.h limits.h locale.h libintl.h mcheck.h \ netdb.h netinet/in.h stdarg.h stddef.h string.h \ - sys/ioctl.h sys/param.h sys/socket.h sys/time.h unistd.h \ + sys/ioctl.h sys/param.h sys/select.h sys/socket.h sys/time.h unistd.h \ termios.h stropts.h wchar.h wctype.h do : as_ac_Header=`$as_echo "ac_cv_header_$ac_header" | $as_tr_sh` @@ -8883,75 +8985,85 @@ _ACEOF - { $as_echo "$as_me:${as_lineno-$LINENO}: checking for long long int" >&5 -$as_echo_n "checking for long long int... " >&6; } -if ${ac_cv_type_long_long_int+:} false; then : + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for unsigned long long int" >&5 +$as_echo_n "checking for unsigned long long int... " >&6; } +if ${ac_cv_type_unsigned_long_long_int+:} false; then : $as_echo_n "(cached) " >&6 else cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ - - /* For now, do not test the preprocessor; as of 2007 there are too many - implementations with broken preprocessors. Perhaps this can - be revisited in 2012. In the meantime, code should not expect - #if to work with literals wider than 32 bits. */ - /* Test literals. */ - long long int ll = 9223372036854775807ll; - long long int nll = -9223372036854775807LL; - unsigned long long int ull = 18446744073709551615ULL; - /* Test constant expressions. */ - typedef int a[((-9223372036854775807LL < 0 && 0 < 9223372036854775807ll) - ? 1 : -1)]; - typedef int b[(18446744073709551615ULL <= (unsigned long long int) -1 - ? 1 : -1)]; - int i = 63; +unsigned long long int ull = 18446744073709551615ULL; + typedef int a[(18446744073709551615ULL <= (unsigned long long int) -1 + ? 1 : -1)]; + int i = 63; int main () { -/* Test availability of runtime routines for shift and division. */ - long long int llmax = 9223372036854775807ll; - unsigned long long int ullmax = 18446744073709551615ull; - return ((ll << 63) | (ll >> 63) | (ll < i) | (ll > i) - | (llmax / ll) | (llmax % ll) - | (ull << 63) | (ull >> 63) | (ull << i) | (ull >> i) - | (ullmax / ull) | (ullmax % ull)); +unsigned long long int ullmax = 18446744073709551615ull; + return (ull << 63 | ull >> 63 | ull << i | ull >> i + | ullmax / ull | ullmax % ull); ; return 0; } - _ACEOF if ac_fn_c_try_link "$LINENO"; then : - if test "$cross_compiling" = yes; then : + ac_cv_type_unsigned_long_long_int=yes +else + ac_cv_type_unsigned_long_long_int=no +fi +rm -f core conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_type_unsigned_long_long_int" >&5 +$as_echo "$ac_cv_type_unsigned_long_long_int" >&6; } + if test $ac_cv_type_unsigned_long_long_int = yes; then + +$as_echo "#define HAVE_UNSIGNED_LONG_LONG_INT 1" >>confdefs.h + + fi + + + + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for long long int" >&5 +$as_echo_n "checking for long long int... " >&6; } +if ${ac_cv_type_long_long_int+:} false; then : + $as_echo_n "(cached) " >&6 +else ac_cv_type_long_long_int=yes + if test "x${ac_cv_prog_cc_c99-no}" = xno; then + ac_cv_type_long_long_int=$ac_cv_type_unsigned_long_long_int + if test $ac_cv_type_long_long_int = yes; then + if test "$cross_compiling" = yes; then : + : else cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include - #ifndef LLONG_MAX - # define HALF \ - (1LL << (sizeof (long long int) * CHAR_BIT - 2)) - # define LLONG_MAX (HALF - 1 + HALF) - #endif + #ifndef LLONG_MAX + # define HALF \ + (1LL << (sizeof (long long int) * CHAR_BIT - 2)) + # define LLONG_MAX (HALF - 1 + HALF) + #endif int main () { long long int n = 1; - int i; - for (i = 0; ; i++) - { - long long int m = n << i; - if (m >> i != n) - return 1; - if (LLONG_MAX / 2 < m) - break; - } - return 0; + int i; + for (i = 0; ; i++) + { + long long int m = n << i; + if (m >> i != n) + return 1; + if (LLONG_MAX / 2 < m) + break; + } + return 0; ; return 0; } _ACEOF if ac_fn_c_try_run "$LINENO"; then : - ac_cv_type_long_long_int=yes + else ac_cv_type_long_long_int=no fi @@ -8959,11 +9071,8 @@ rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \ conftest.$ac_objext conftest.beam conftest.$ac_ext fi -else - ac_cv_type_long_long_int=no -fi -rm -f core conftest.err conftest.$ac_objext \ - conftest$ac_exeext conftest.$ac_ext + fi + fi fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_type_long_long_int" >&5 $as_echo "$ac_cv_type_long_long_int" >&6; } @@ -10328,7 +10437,7 @@ $as_echo "$LIBSIGSEGV" >&6; } esac # Need the check for mkstemp and tmpfile for missing_d/snprintf.c. -for ac_func in atexit btowc fmod getgrent getgroups grantpt \ +for ac_func in __etoa_l atexit btowc fmod getgrent getgroups grantpt \ isascii iswctype iswlower iswupper mbrlen \ memcmp memcpy memcpy_ulong memmove memset \ memset_ulong mkstemp posix_openpt setenv setlocale setsid snprintf strchr \ @@ -10394,10 +10503,6 @@ if test "x$enable_extensions" != "xno"; then case $host_os in mirbsd* | openedition*) # OS/390 z/OS POSIX layer - cat << \EOF > extension/Makefile -all dist check clean distclean install uninstall distcheck: - @exit 0 -EOF ;; *) ac_fn_c_check_header_mongrel "$LINENO" "dlfcn.h" "ac_cv_header_dlfcn_h" "$ac_includes_default" @@ -10493,6 +10598,14 @@ fi fi enable_extensions=$extensions_supported fi + if test "x$enable_extensions" = "xyes"; then + ENABLE_EXTENSIONS_TRUE= + ENABLE_EXTENSIONS_FALSE='#' +else + ENABLE_EXTENSIONS_TRUE='#' + ENABLE_EXTENSIONS_FALSE= +fi + case $host_os in vms*|beos*|os2*|msdos) @@ -10825,7 +10938,46 @@ $as_echo "$_found_readline" >&6; } if test $_found_readline = yes ; then case $host_os in - *bsd* ) _combo="$_combo -ltermcap" + *bsd* ) { $as_echo "$as_me:${as_lineno-$LINENO}: checking for tgetent in -ltermcap" >&5 +$as_echo_n "checking for tgetent in -ltermcap... " >&6; } +if ${ac_cv_lib_termcap_tgetent+:} false; then : + $as_echo_n "(cached) " >&6 +else + ac_check_lib_save_LIBS=$LIBS +LIBS="-ltermcap $LIBS" +cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +/* Override any GCC internal prototype to avoid an error. + Use char because int might match the return type of a GCC + builtin and then its argument prototype would still apply. */ +#ifdef __cplusplus +extern "C" +#endif +char tgetent (); +int +main () +{ +return tgetent (); + ; + return 0; +} +_ACEOF +if ac_fn_c_try_link "$LINENO"; then : + ac_cv_lib_termcap_tgetent=yes +else + ac_cv_lib_termcap_tgetent=no +fi +rm -f core conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext +LIBS=$ac_check_lib_save_LIBS +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_termcap_tgetent" >&5 +$as_echo "$ac_cv_lib_termcap_tgetent" >&6; } +if test "x$ac_cv_lib_termcap_tgetent" = xyes; then : + _combo="$_combo -ltermcap" +fi + ;; esac @@ -10973,6 +11125,34 @@ _ACEOF fi +ac_fn_c_check_member "$LINENO" "struct passwd" "pw_passwd" "ac_cv_member_struct_passwd_pw_passwd" " +#include +#include + +" +if test "x$ac_cv_member_struct_passwd_pw_passwd" = xyes; then : + +cat >>confdefs.h <<_ACEOF +#define HAVE_STRUCT_PASSWD_PW_PASSWD 1 +_ACEOF + + +fi + +ac_fn_c_check_member "$LINENO" "struct group" "gr_passwd" "ac_cv_member_struct_group_gr_passwd" " +#include +#include + +" +if test "x$ac_cv_member_struct_group_gr_passwd" = xyes; then : + +cat >>confdefs.h <<_ACEOF +#define HAVE_STRUCT_GROUP_GR_PASSWD 1 +_ACEOF + + +fi + { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether struct tm is in sys/time.h or time.h" >&5 $as_echo_n "checking whether struct tm is in sys/time.h or time.h... " >&6; } if ${ac_cv_struct_tm+:} false; then : @@ -11466,6 +11646,10 @@ if test -z "${TEST_CROSS_COMPILE_TRUE}" && test -z "${TEST_CROSS_COMPILE_FALSE}" as_fn_error $? "conditional \"TEST_CROSS_COMPILE\" was never defined. Usually this means the macro was only invoked conditionally." "$LINENO" 5 fi +if test -z "${ENABLE_EXTENSIONS_TRUE}" && test -z "${ENABLE_EXTENSIONS_FALSE}"; then + as_fn_error $? "conditional \"ENABLE_EXTENSIONS\" was never defined. +Usually this means the macro was only invoked conditionally." "$LINENO" 5 +fi : "${CONFIG_STATUS=./config.status}" ac_write_fail=0 @@ -11863,7 +12047,7 @@ cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 # report actual input values of CONFIG_FILES etc. instead of their # values after options handling. ac_log=" -This file was extended by GNU Awk $as_me 4.1.3, which was +This file was extended by GNU Awk $as_me 4.1.4, which was generated by GNU Autoconf 2.69. Invocation command line was CONFIG_FILES = $CONFIG_FILES @@ -11931,7 +12115,7 @@ _ACEOF cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 ac_cs_config="`$as_echo "$ac_configure_args" | sed 's/^ //; s/[\\""\`\$]/\\\\&/g'`" ac_cs_version="\\ -GNU Awk config.status 4.1.3 +GNU Awk config.status 4.1.4 configured by $0, generated by GNU Autoconf 2.69, with options \\"\$ac_cs_config\\" diff --git a/configure.ac b/configure.ac index 72f78f0..6f31e81 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-2015 the Free Software Foundation, Inc. +dnl Copyright (C) 1995-2016 the Free Software Foundation, Inc. dnl dnl This file is part of GAWK, the GNU implementation of the dnl AWK Programming Language. @@ -23,7 +23,7 @@ dnl dnl Process this file with autoconf to produce a configure script. -AC_INIT([GNU Awk], 4.1.3, bug-gawk@gnu.org, gawk) +AC_INIT([GNU Awk], 4.1.4, 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. @@ -115,6 +115,16 @@ AC_SYS_LARGEFILE GAWK_AC_AIX_TWEAK GAWK_AC_LINUX_ALPHA +AC_MSG_CHECKING([if we are using EBCDIC]) +AC_EGREP_CPP([gnu_gawk_in_ebcdic], +[#if 'a' == 0x81 +gnu_gawk_in_ebcdic +#endif], +[AC_DEFINE(USE_EBCDIC, 1, Define to 1 if the character set is EBCDIC) + use_ebcdic=yes], +[use_ebcdic=no]) +AC_MSG_RESULT([$use_ebcdic]) + if test "$ISC" = 1 # will be set by test for ISC then dnl need -D_SYSV3 for ISC @@ -134,14 +144,14 @@ AC_LANG([C]) dnl initialize GNU gettext AM_GNU_GETTEXT([external]) -AM_GNU_GETTEXT_VERSION([0.19.4]) +AM_GNU_GETTEXT_VERSION([0.19.7]) AM_LANGINFO_CODESET gt_LC_MESSAGES dnl checks for header files AC_CHECK_HEADERS(arpa/inet.h fcntl.h limits.h locale.h libintl.h mcheck.h \ netdb.h netinet/in.h stdarg.h stddef.h string.h \ - sys/ioctl.h sys/param.h sys/socket.h sys/time.h unistd.h \ + sys/ioctl.h sys/param.h sys/select.h sys/socket.h sys/time.h unistd.h \ termios.h stropts.h wchar.h wctype.h) AC_HEADER_STDC AC_HEADER_STDBOOL @@ -273,7 +283,7 @@ osf1) : ;; esac # Need the check for mkstemp and tmpfile for missing_d/snprintf.c. -AC_CHECK_FUNCS(atexit btowc fmod getgrent getgroups grantpt \ +AC_CHECK_FUNCS(__etoa_l atexit btowc fmod getgrent getgroups grantpt \ isascii iswctype iswlower iswupper mbrlen \ memcmp memcpy memcpy_ulong memmove memset \ memset_ulong mkstemp posix_openpt setenv setlocale setsid snprintf strchr \ @@ -293,10 +303,6 @@ if test "x$enable_extensions" != "xno"; then dnl On MirBSD (and probably other systems), don't even try. case $host_os in mirbsd* | openedition*) # OS/390 z/OS POSIX layer - cat << \EOF > extension/Makefile -all dist check clean distclean install uninstall distcheck: - @exit 0 -EOF ;; *) AC_CHECK_HEADER(dlfcn.h, @@ -329,6 +335,7 @@ EOF fi enable_extensions=$extensions_supported fi +AM_CONDITIONAL([ENABLE_EXTENSIONS], [test "x$enable_extensions" = "xyes"]) dnl check for how to use getpgrp dnl have to hardwire it for VMS POSIX. Sigh. @@ -380,6 +387,14 @@ GNUPG_CHECK_MPFR dnl checks for structure members AC_CHECK_MEMBERS([struct stat.st_blksize]) +AC_CHECK_MEMBERS([struct passwd.pw_passwd],,,[ +#include +#include +]) +AC_CHECK_MEMBERS([struct group.gr_passwd],,,[ +#include +#include +]) AC_STRUCT_TM AC_STRUCT_TIMEZONE diff --git a/custom.h b/custom.h index 1f57a83..5660a66 100644 --- a/custom.h +++ b/custom.h @@ -11,7 +11,8 @@ */ /* - * Copyright (C) 1995-2004, 2008, 2009, 2011 the Free Software Foundation, Inc. + * Copyright (C) 1995-2004, 2008, 2009, 2011, 2016 + * the Free Software Foundation, Inc. * * This file is part of GAWK, the GNU implementation of the * AWK Programming Language. @@ -59,18 +60,6 @@ #define _TZSET 1 #endif -/* For z/OS, from Dave Pitts - VMS using some ZOS_USS code paths */ -#if defined(ZOS_USS) && !defined(__VMS) -#undef HAVE_DLFCN_H -#undef HAVE_SYS_PARAM_H -#undef HAVE_MCHECK_H -#undef HAVE_SETENV -#define setenv zos_setenv -#define unsetenv zos_unsetenv -extern int setenv(const char *name, const char *value, int rewrite); -extern int unsetenv(const char *name); -#endif - /* Junk for dfa.[ch] */ /* The __pure__ attribute was added in gcc 2.96. */ #if __GNUC__ > 2 || (__GNUC__ == 2 && __GNUC_MINOR__ >= 96) diff --git a/debug.c b/debug.c index 5d7db01..b2961db 100644 --- a/debug.c +++ b/debug.c @@ -3,7 +3,7 @@ */ /* - * Copyright (C) 2004, 2010-2013 the Free Software Foundation, Inc. + * Copyright (C) 2004, 2010-2013, 2016 the Free Software Foundation, Inc. * * This file is part of GAWK, the GNU implementation of the * AWK Programming Language. @@ -3653,8 +3653,20 @@ debug_pre_execute(INSTRUCTION **pi) assert(sourceline > 0); - if (check_breakpoint(pi) - || check_watchpoint() + /* + * 11/2015: This used to check breakpoints first, but that could + * produce strange behavior, where a watchpoint doesn't print until + * some time after the data changed. This reworks things so that + * watchpoints are checked first. It's a bit of a hack, but + * the behavior for the user is more logical. + */ + if (check_watchpoint()) { + next_command(); /* return to debugger interface */ + if (stop.command == D_return) + *pi = stop.pc; /* jump to this instruction */ + else if (cur_pc->opcode == Op_breakpoint) + cur_pc = cur_pc->nexti; /* skip past the breakpoint instruction */ + } else if (check_breakpoint(pi) || (stop.check_func && stop.check_func(pi))) { next_command(); /* return to debugger interface */ if (stop.command == D_return) @@ -3776,6 +3788,39 @@ print_instruction(INSTRUCTION *pc, Func_print print_func, FILE *fp, int in_dump) switch (pc->opcode) { + case Op_K_if: + print_func(fp, "[branch_if = %p] [branch_else = %p] [branch_else->lasti = %p]\n", + pc->branch_if, pc->branch_else, pc->branch_else->lasti); + break; + + case Op_K_else: + print_func(fp, "[branch_end = %p]\n", pc->branch_end); + break; + + case Op_K_while: + print_func(fp, "[while_body = %p] [target_break = %p]\n", (pc+1)->while_body, pc->target_break); + break; + + case Op_K_do: + print_func(fp, "[doloop_cond = %p] [target_break = %p]\n", (pc+1)->doloop_cond, pc->target_break); + break; + + case Op_K_for: + print_func(fp, "[forloop_cond = %p] ", (pc+1)->forloop_cond); + /* fall through */ + case Op_K_arrayfor: + print_func(fp, "[forloop_body = %p] ", (pc+1)->forloop_body); + print_func(fp, "[target_break = %p] [target_continue = %p]\n", pc->target_break, pc->target_continue); + break; + + case Op_K_switch: + print_func(fp, "[switch_start = %p] [switch_end = %p]\n", (pc+1)->switch_start, (pc+1)->switch_end); + break; + + case Op_K_default: + print_func(fp, "[stmt_start = %p] [stmt_end = %p]\n", pc->stmt_start, pc->stmt_end); + break; + case Op_var_update: print_func(fp, "[update_%s()]\n", get_spec_varname(pc->update_var)); break; @@ -3858,6 +3903,7 @@ print_instruction(INSTRUCTION *pc, Func_print print_func, FILE *fp, int in_dump) case Op_K_continue: print_func(fp, "[target_jmp = %p]\n", pc->target_jmp); break; + case Op_K_exit: print_func(fp, "[target_end = %p] [target_atexit = %p]\n", pc->target_end, pc->target_atexit); diff --git a/dfa.c b/dfa.c index 9649786..4d1e1ab 100644 --- a/dfa.c +++ b/dfa.c @@ -1,5 +1,5 @@ /* dfa.c - deterministic extended regexp routines for GNU - Copyright (C) 1988, 1998, 2000, 2002, 2004-2005, 2007-2015 Free Software + Copyright (C) 1988, 1998, 2000, 2002, 2004-2005, 2007-2016 Free Software Foundation, Inc. This program is free software; you can redistribute it and/or modify @@ -98,15 +98,30 @@ enum { NOTCHAR = 1 << CHAR_BIT }; /* This represents part of a character class. It must be unsigned and at least CHARCLASS_WORD_BITS wide. Any excess bits are zero. */ -typedef unsigned int charclass_word; +typedef unsigned long int charclass_word; -/* The number of bits used in a charclass word. utf8_classes assumes - this is exactly 32. */ +/* CHARCLASS_WORD_BITS is the number of bits used in a charclass word. + CHARCLASS_PAIR (LO, HI) is part of a charclass initializer, and + represents 64 bits' worth of a charclass, where LO and HI are the + low and high-order 32 bits of the 64-bit quantity. */ +#if ULONG_MAX >> 31 >> 31 < 3 enum { CHARCLASS_WORD_BITS = 32 }; +# define CHARCLASS_PAIR(lo, hi) lo, hi +#else +enum { CHARCLASS_WORD_BITS = 64 }; +# define CHARCLASS_PAIR(lo, hi) (((charclass_word) (hi) << 32) + (lo)) +#endif + +/* An initializer for a charclass whose 32-bit words are A through H. */ +#define CHARCLASS_INIT(a, b, c, d, e, f, g, h) \ + { \ + CHARCLASS_PAIR (a, b), CHARCLASS_PAIR (c, d), \ + CHARCLASS_PAIR (e, f), CHARCLASS_PAIR (g, h) \ + } /* The maximum useful value of a charclass_word; all used bits are 1. */ -#define CHARCLASS_WORD_MASK \ - (((charclass_word) 1 << (CHARCLASS_WORD_BITS - 1) << 1) - 1) +static charclass_word const CHARCLASS_WORD_MASK + = ((charclass_word) 1 << (CHARCLASS_WORD_BITS - 1) << 1) - 1; /* Number of words required to hold a bit for every character. */ enum @@ -146,7 +161,7 @@ to_uchar (char ch) /* Sometimes characters can only be matched depending on the surrounding context. Such context decisions depend on what the previous character was, and the value of the current (lookahead) character. Context - dependent constraints are encoded as 8 bit integers. Each bit that + dependent constraints are encoded as 12-bit integers. Each bit that is set indicates that the constraint succeeds in the corresponding context. @@ -165,7 +180,8 @@ to_uchar (char ch) #define SUCCEEDS_IN_CONTEXT(constraint, prev, curr) \ ((((curr) & CTX_NONE ? OTHER_CONSTRAINT (constraint) : 0) \ | ((curr) & CTX_LETTER ? LETTER_CONSTRAINT (constraint) : 0) \ - | ((curr) & CTX_NEWLINE ? NEWLINE_CONSTRAINT (constraint) : 0)) & (prev)) + | ((curr) & CTX_NEWLINE ? NEWLINE_CONSTRAINT (constraint) : 0)) \ + & (prev)) /* The following macros describe what a constraint depends on. */ #define PREV_NEWLINE_CONSTRAINT(constraint) (((constraint) >> 2) & 0x111) @@ -195,6 +211,10 @@ to_uchar (char ch) typedef ptrdiff_t token; +/* States are indexed by state_num values. These are normally + nonnegative but -1 is used as a special value. */ +typedef ptrdiff_t state_num; + /* Predefined token values. */ enum { @@ -317,18 +337,21 @@ typedef struct size_t hash; /* Hash of the positions of this state. */ position_set elems; /* Positions this state could match. */ unsigned char context; /* Context from previous state. */ - bool has_backref; /* This state matches a \. */ - bool has_mbcset; /* This state matches a MBCSET. */ + bool curr_dependent; /* True if the follows of any positions with + ANYCHAR depends on the next character's + context. */ unsigned short constraint; /* Constraint for this state to accept. */ token first_end; /* Token value of the first END in elems. */ position_set mbps; /* Positions which can match multibyte - characters, e.g., period. + characters or the follows, e.g., period. Used only if MB_CUR_MAX > 1. */ + state_num mb_trindex; /* Index of this state in MB_TRANS, or + negative if the state does not have + ANYCHAR. */ } dfa_state; -/* States are indexed by state_num values. These are normally - nonnegative but -1 is used as a special value. */ -typedef ptrdiff_t state_num; +/* Maximum for any transition table count that exceeds min_trcount. */ +enum { MAX_TRCOUNT = 1024 }; /* A bracket operator. e.g., [a-c], [[:alpha:]], etc. */ @@ -338,28 +361,87 @@ struct mb_char_classes bool invert; wchar_t *chars; /* Normal characters. */ size_t nchars; - wctype_t *ch_classes; /* Character classes. */ - size_t nch_classes; - struct /* Range characters. */ - { - wchar_t beg; /* Range start. */ - wchar_t end; /* Range end. */ - } *ranges; - size_t nranges; - char **equivs; /* Equivalence classes. */ - size_t nequivs; - char **coll_elems; - size_t ncoll_elems; /* Collating elements. */ +}; + +struct regex_syntax +{ + /* Syntax bits controlling the behavior of the lexical analyzer. */ + reg_syntax_t syntax_bits; + bool syntax_bits_set; + + /* Flag for case-folding letters into sets. */ + bool case_fold; + + /* End-of-line byte in data. */ + unsigned char eolbyte; + + /* Cache of char-context values. */ + int sbit[NOTCHAR]; + + /* If never_trail[B], the byte B cannot be a non-initial byte in a + multibyte character. */ + bool never_trail[NOTCHAR]; + + /* Set of characters considered letters. */ + charclass letters; + + /* Set of characters that are newline. */ + charclass newline; +}; + +/* Lexical analyzer. All the dross that deals with the obnoxious + GNU Regex syntax bits is located here. The poor, suffering + reader is referred to the GNU Regex documentation for the + meaning of the @#%!@#%^!@ syntax bits. */ +struct lexer_state +{ + char const *lexptr; /* Pointer to next input character. */ + size_t lexleft; /* Number of characters remaining. */ + token lasttok; /* Previous token returned; initially END. */ + size_t parens; /* Count of outstanding left parens. */ + int minrep, maxrep; /* Repeat counts for {m,n}. */ + + /* Wide character representation of the current multibyte character, + or WEOF if there was an encoding error. Used only if + MB_CUR_MAX > 1. */ + wint_t wctok; + + /* Length of the multibyte representation of wctok. */ + int cur_mb_len; + + /* We're separated from beginning or (, | only by zero-width characters. */ + bool laststart; +}; + +/* Recursive descent parser for regular expressions. */ + +struct parser_state +{ + token tok; /* Lookahead token. */ + size_t depth; /* Current depth of a hypothetical stack + holding deferred productions. This is + used to determine the depth that will be + required of the real stack later on in + dfaanalyze. */ }; /* A compiled regular expression. */ struct dfa { + /* Syntax configuration */ + struct regex_syntax syntax; + /* Fields filled by the scanner. */ charclass *charclasses; /* Array of character sets for CSET tokens. */ size_t cindex; /* Index for adding new charclasses. */ size_t calloc; /* Number of charclasses allocated. */ + /* Scanner state */ + struct lexer_state lexstate; + + /* Parser state */ + struct parser_state parsestate; + /* Fields filled by the parser. */ token *tokens; /* Postfix parse array. */ size_t tindex; /* Index for adding new tokens. */ @@ -376,7 +458,8 @@ struct dfa mbstate_t mbs; /* Multibyte conversion state. */ /* dfaexec implementation. */ - char *(*dfaexec) (struct dfa *, char const *, char *, int, size_t *, int *); + char *(*dfaexec) (struct dfa *, char const *, char *, + bool, size_t *, bool *); /* The following are valid only if MB_CUR_MAX > 1. */ @@ -399,11 +482,6 @@ struct dfa */ int *multibyte_prop; - /* A table indexed by byte values that contains the corresponding wide - character (if any) for that byte. WEOF means the byte is not a - valid single-byte character. */ - wint_t mbrtowc_cache[NOTCHAR]; - /* Array of the bracket expression in the DFA. */ struct mb_char_classes *mbcsets; size_t nmbcsets; @@ -460,16 +538,14 @@ struct dfa newline is stored separately and handled as a special case. Newline is also used as a sentinel at the end of the buffer. */ - state_num initstate_letter; /* Initial state for letter context. */ - state_num initstate_others; /* Initial state for other contexts. */ - struct dfamust *musts; /* List of strings, at least one of which - is known to appear in any r.e. matching - the dfa. */ - position_set mb_follows; /* Follow set added by ANYCHAR and/or MBCSET - on demand. */ - int *mb_match_lens; /* Array of length reduced by ANYCHAR and/or - MBCSET. Null if mb_follows.elems has not - been allocated. */ + state_num initstate_notbol; /* Initial state for CTX_LETTER and CTX_NONE + context in multibyte locales, in which we + do not distinguish between their contexts, + as not supported word. */ + position_set mb_follows; /* Follow set added by ANYCHAR on demand. */ + state_num **mb_trans; /* Transition tables for states with ANYCHAR. */ + state_num mb_trcount; /* Number of transition tables for states with + ANYCHAR that have actually been built. */ }; /* Some macros for user access to dfa internals. */ @@ -481,22 +557,12 @@ struct dfa #define ACCEPTS_IN_CONTEXT(prev, curr, state, dfa) \ SUCCEEDS_IN_CONTEXT ((dfa).states[state].constraint, prev, curr) -static void dfamust (struct dfa *dfa); -static void regexp (void); +static void regexp (struct dfa *dfa); -static void -dfambcache (struct dfa *d) -{ - int i; - for (i = CHAR_MIN; i <= CHAR_MAX; ++i) - { - char c = i; - unsigned char uc = i; - mbstate_t s = { 0 }; - wchar_t wc; - d->mbrtowc_cache[uc] = mbrtowc (&wc, &c, 1, &s) <= 1 ? wc : WEOF; - } -} +/* A table indexed by byte values that contains the corresponding wide + character (if any) for that byte. WEOF means the byte is not a + valid single-byte character. */ +static wint_t mbrtowc_cache[NOTCHAR]; /* Store into *PWC the result of converting the leading bytes of the multibyte buffer S of length N bytes, using the mbrtowc_cache in *D @@ -519,7 +585,7 @@ static size_t mbs_to_wchar (wint_t *pwc, char const *s, size_t n, struct dfa *d) { unsigned char uc = s[0]; - wint_t wc = d->mbrtowc_cache[uc]; + wint_t wc = mbrtowc_cache[uc]; if (wc == WEOF) { @@ -548,8 +614,8 @@ prtok (token t) fprintf (stderr, "END"); else if (t < NOTCHAR) { - int ch = t; - fprintf (stderr, "%c", ch); + unsigned int ch = t; + fprintf (stderr, "0x%02x", ch); } else { @@ -660,7 +726,21 @@ notset (charclass s) static bool equal (charclass const s1, charclass const s2) { - return memcmp (s1, s2, sizeof (charclass)) == 0; + charclass_word w = 0; + int i; + for (i = 0; i < CHARCLASS_WORDS; i++) + w |= s1[i] ^ s2[i]; + return w == 0; +} + +static bool +emptyset (charclass const s) +{ + charclass_word w = 0; + int i; + for (i = 0; i < CHARCLASS_WORDS; i++) + w |= s[i]; + return w == 0; } /* Ensure that the array addressed by PTR holds at least NITEMS + @@ -696,90 +776,76 @@ dfa_charclass_index (struct dfa *d, charclass const s) return i; } -/* A pointer to the current dfa is kept here during parsing. */ -static struct dfa *dfa; - -/* Find the index of charclass S in the current DFA, or allocate a new one. */ -static size_t -charclass_index (charclass const s) +static bool +unibyte_word_constituent (unsigned char c) { - return dfa_charclass_index (dfa, s); + return mbrtowc_cache[c] != WEOF && (isalnum (c) || (c) == '_'); } -/* Syntax bits controlling the behavior of the lexical analyzer. */ -static reg_syntax_t syntax_bits, syntax_bits_set; - -/* Flag for case-folding letters into sets. */ -static bool case_fold; - -/* End-of-line byte in data. */ -static unsigned char eolbyte; - -/* Cache of char-context values. */ -static int sbit[NOTCHAR]; - -/* Set of characters considered letters. */ -static charclass letters; - -/* Set of characters that are newline. */ -static charclass newline; - -/* Add this to the test for whether a byte is word-constituent, since on - BSD-based systems, many values in the 128..255 range are classified as - alphabetic, while on glibc-based systems, they are not. */ -#ifdef __GLIBC__ -# define is_valid_unibyte_character(c) 1 -#else -# define is_valid_unibyte_character(c) (btowc (c) != WEOF) -#endif - -/* C is a "word-constituent" byte. */ -#define IS_WORD_CONSTITUENT(C) \ - (is_valid_unibyte_character (C) && (isalnum (C) || (C) == '_')) - static int -char_context (unsigned char c) +char_context (struct dfa const *dfa, unsigned char c) { - if (c == eolbyte) + if (c == dfa->syntax.eolbyte) return CTX_NEWLINE; - if (IS_WORD_CONSTITUENT (c)) + if (unibyte_word_constituent (c)) return CTX_LETTER; return CTX_NONE; } -static int -wchar_context (wint_t wc) +/* UTF-8 encoding allows some optimizations that we can't otherwise + assume in a multibyte encoding. */ +static bool using_utf8; + +bool +dfa_using_utf8 (void) { - if (wc == (wchar_t) eolbyte || wc == 0) - return CTX_NEWLINE; - if (wc == L'_' || iswalnum (wc)) - return CTX_LETTER; - return CTX_NONE; + return using_utf8; +} + +static void +init_mbrtowc_cache (void) +{ + int i; + for (i = CHAR_MIN; i <= CHAR_MAX; ++i) + { + char c = i; + unsigned char uc = i; + mbstate_t s = { 0 }; + wchar_t wc; + mbrtowc_cache[uc] = mbrtowc (&wc, &c, 1, &s) <= 1 ? wc : WEOF; + } } /* Entry point to set syntax options. */ void -dfasyntax (reg_syntax_t bits, int fold, unsigned char eol) +dfasyntax (struct dfa *dfa, reg_syntax_t bits, bool fold, unsigned char eol) { - unsigned int i; - - syntax_bits_set = 1; - syntax_bits = bits; - case_fold = fold != 0; - eolbyte = eol; + int i; + dfa->syntax.syntax_bits_set = true; + dfa->syntax.syntax_bits = bits; + dfa->syntax.case_fold = fold; + dfa->syntax.eolbyte = eol; - for (i = 0; i < NOTCHAR; ++i) + for (i = CHAR_MIN; i <= CHAR_MAX; ++i) { - sbit[i] = char_context (i); - switch (sbit[i]) + unsigned char uc = i; + + /* Use mbrtowc_cache to calculate sbit. */ + dfa->syntax.sbit[uc] = char_context (dfa, uc); + switch (dfa->syntax.sbit[uc]) { case CTX_LETTER: - setbit (i, letters); + setbit (uc, dfa->syntax.letters); break; case CTX_NEWLINE: - setbit (i, newline); + setbit (uc, dfa->syntax.newline); break; } + + /* POSIX requires that the five bytes in "\n\r./" (including the + terminating NUL) cannot occur inside a multibyte character. */ + dfa->syntax.never_trail[uc] = (using_utf8 ? (uc & 0xc0) != 0x80 + : strchr ("\n\r./", uc) != NULL); } } @@ -811,25 +877,21 @@ setbit_case_fold_c (int b, charclass c) setbit (i, c); } +static void check_utf8 (void) +{ + wchar_t wc; + mbstate_t mbs = { 0 }; + using_utf8 = mbrtowc (&wc, "\xc4\x80", 2, &mbs) == 2 && wc == 0x100; +} +static bool unibyte_c; -/* UTF-8 encoding allows some optimizations that we can't otherwise - assume in a multibyte encoding. */ -int -using_utf8 (void) +static void check_unibyte_c (void) { - static int utf8 = -1; - if (utf8 < 0) - { - wchar_t wc; - mbstate_t mbs = { 0 }; - utf8 = mbrtowc (&wc, "\xc4\x80", 2, &mbs) == 2 && wc == 0x100; -#ifdef LIBC_IS_BORKED - if (gawk_mb_cur_max == 1) - utf8 = 0; -#endif - } - return utf8; + char const *locale = setlocale (LC_ALL, NULL); + unibyte_c = (!locale + || STREQ (locale, "C") + || STREQ (locale, "POSIX")); } /* The current locale is known to be a unibyte locale @@ -838,7 +900,7 @@ using_utf8 (void) processed more efficiently. */ static bool -using_simple_locale (void) +using_simple_locale (struct dfa const *dfa) { /* The native character set is known to be compatible with the C locale. The following test isn't perfect, but it's good @@ -856,44 +918,9 @@ using_simple_locale (void) && '}' == 125 && '~' == 126) }; - if (! native_c_charset || dfa->multibyte) - return false; - else - { - static int unibyte_c = -1; - if (unibyte_c < 0) - { - char const *locale = setlocale (LC_ALL, NULL); - unibyte_c = (!locale - || STREQ (locale, "C") - || STREQ (locale, "POSIX")); - } - return unibyte_c; - } + return (!native_c_charset || dfa->multibyte) ? false : unibyte_c; } -/* Lexical analyzer. All the dross that deals with the obnoxious - GNU Regex syntax bits is located here. The poor, suffering - reader is referred to the GNU Regex documentation for the - meaning of the @#%!@#%^!@ syntax bits. */ - -static char const *lexptr; /* Pointer to next input character. */ -static size_t lexleft; /* Number of characters remaining. */ -static token lasttok; /* Previous token returned; initially END. */ -static bool laststart; /* We're separated from beginning or (, - | only by zero-width characters. */ -static size_t parens; /* Count of outstanding left parens. */ -static int minrep, maxrep; /* Repeat counts for {m,n}. */ - -static int cur_mb_len = 1; /* Length of the multibyte representation of - wctok. */ - -static wint_t wctok; /* Wide character representation of the current - multibyte character, or WEOF if there was - an encoding error. Used only if - MB_CUR_MAX > 1. */ - - /* Fetch the next lexical input character. Set C (of type int) to the next input byte, except set C to EOF if the input is a multibyte character of length greater than 1. Set WC (of type wint_t) to the @@ -901,26 +928,27 @@ static wint_t wctok; /* Wide character representation of the current of length 1); otherwise set WC to WEOF. If there is no more input, report EOFERR if EOFERR is not null, and return lasttok = END otherwise. */ -# define FETCH_WC(c, wc, eoferr) \ +# define FETCH_WC(dfa, c, wc, eoferr) \ do { \ - if (! lexleft) \ + if (! dfa->lexstate.lexleft) \ { \ if ((eoferr) != 0) \ dfaerror (eoferr); \ else \ - return lasttok = END; \ + return dfa->lexstate.lasttok = END; \ } \ else \ { \ wint_t _wc; \ - size_t nbytes = mbs_to_wchar (&_wc, lexptr, lexleft, dfa); \ - cur_mb_len = nbytes; \ + size_t nbytes = mbs_to_wchar (&_wc, dfa->lexstate.lexptr, \ + dfa->lexstate.lexleft, dfa); \ + dfa->lexstate.cur_mb_len = nbytes; \ (wc) = _wc; \ - (c) = nbytes == 1 ? to_uchar (*lexptr) : EOF; \ - lexptr += nbytes; \ - lexleft -= nbytes; \ + (c) = nbytes == 1 ? to_uchar (*dfa->lexstate.lexptr) : EOF; \ + dfa->lexstate.lexptr += nbytes; \ + dfa->lexstate.lexleft -= nbytes; \ } \ - } while (0) + } while (false) #ifndef MIN # define MIN(a,b) ((a) < (b) ? (a) : (b)) @@ -953,11 +981,11 @@ enum /* Find the characters equal to C after case-folding, other than C itself, and store them into FOLDED. Return the number of characters stored. */ -static int +static unsigned int case_folded_counterparts (wchar_t c, wchar_t folded[CASE_FOLDED_BUFSIZE]) { - int i; - int n = 0; + unsigned int i; + unsigned int n = 0; wint_t uc = towupper (c); wint_t lc = towlower (uc); if (uc != c) @@ -1015,7 +1043,7 @@ find_pred (const char *str) /* Multibyte character handling sub-routine for lex. Parse a bracket expression and build a struct mb_char_classes. */ static token -parse_bracket_exp (void) +parse_bracket_exp (struct dfa *dfa) { bool invert; int c, c1, c2; @@ -1038,9 +1066,9 @@ parse_bracket_exp (void) /* Work area to build a mb_char_classes. */ struct mb_char_classes *work_mbc; - size_t chars_al, ranges_al, ch_classes_al, equivs_al, coll_elems_al; + size_t chars_al; - chars_al = ranges_al = ch_classes_al = equivs_al = coll_elems_al = 0; + chars_al = 0; if (dfa->multibyte) { dfa->mbcsets = maybe_realloc (dfa->mbcsets, dfa->nmbcsets, @@ -1052,19 +1080,19 @@ parse_bracket_exp (void) decide the index in dfa->tokens[]. */ /* Initialize work area. */ - work_mbc = &(dfa->mbcsets[dfa->nmbcsets++]); + work_mbc = &dfa->mbcsets[dfa->nmbcsets++]; memset (work_mbc, 0, sizeof *work_mbc); } else work_mbc = NULL; memset (ccl, 0, sizeof ccl); - FETCH_WC (c, wc, _("unbalanced [")); + FETCH_WC (dfa, c, wc, _("unbalanced [")); if (c == '^') { - FETCH_WC (c, wc, _("unbalanced [")); + FETCH_WC (dfa, c, wc, _("unbalanced [")); invert = true; - known_bracket_exp = using_simple_locale (); + known_bracket_exp = using_simple_locale (dfa); } else invert = false; @@ -1081,9 +1109,9 @@ parse_bracket_exp (void) dfa is ever called. */ if (c == '[') { - FETCH_WC (c1, wc1, _("unbalanced [")); + FETCH_WC (dfa, c1, wc1, _("unbalanced [")); - if ((c1 == ':' && (syntax_bits & RE_CHAR_CLASSES)) + if ((c1 == ':' && (dfa->syntax.syntax_bits & RE_CHAR_CLASSES)) || c1 == '.' || c1 == '=') { enum { MAX_BRACKET_STRING_LEN = 32 }; @@ -1091,8 +1119,9 @@ parse_bracket_exp (void) size_t len = 0; for (;;) { - FETCH_WC (c, wc, _("unbalanced [")); - if ((c == c1 && *lexptr == ']') || lexleft == 0) + FETCH_WC (dfa, c, wc, _("unbalanced [")); + if ((c == c1 && *dfa->lexstate.lexptr == ']') + || dfa->lexstate.lexleft == 0) break; if (len < MAX_BRACKET_STRING_LEN) str[len++] = c; @@ -1103,7 +1132,7 @@ parse_bracket_exp (void) str[len] = '\0'; /* Fetch bracket. */ - FETCH_WC (c, wc, _("unbalanced [")); + FETCH_WC (dfa, c, wc, _("unbalanced [")); if (c1 == ':') /* Build character class. POSIX allows character classes to match multicharacter collating elements, @@ -1111,27 +1140,19 @@ parse_bracket_exp (void) worry about that possibility. */ { char const *class - = (case_fold && (STREQ (str, "upper") - || STREQ (str, "lower")) ? "alpha" : str); + = (dfa->syntax.case_fold && (STREQ (str, "upper") + || STREQ (str, "lower")) ? + "alpha" : str); const struct dfa_ctype *pred = find_pred (class); if (!pred) dfaerror (_("invalid character class")); if (dfa->multibyte && !pred->single_byte_only) - { - /* Store the character class as wctype_t. */ - wctype_t wt = (wctype_t) wctype (class); - - work_mbc->ch_classes - = maybe_realloc (work_mbc->ch_classes, - work_mbc->nch_classes, &ch_classes_al, - sizeof *work_mbc->ch_classes); - work_mbc->ch_classes[work_mbc->nch_classes++] = wt; - } - - for (c2 = 0; c2 < NOTCHAR; ++c2) - if (pred->func (c2)) - setbit (c2, ccl); + known_bracket_exp = false; + else + for (c2 = 0; c2 < NOTCHAR; ++c2) + if (pred->func (c2)) + setbit (c2, ccl); } else known_bracket_exp = false; @@ -1139,7 +1160,7 @@ parse_bracket_exp (void) colon_warning_state |= 8; /* Fetch new lookahead character. */ - FETCH_WC (c1, wc1, _("unbalanced [")); + FETCH_WC (dfa, c1, wc1, _("unbalanced [")); continue; } @@ -1147,92 +1168,77 @@ parse_bracket_exp (void) are already set up. */ } - if (c == '\\' && (syntax_bits & RE_BACKSLASH_ESCAPE_IN_LISTS)) - FETCH_WC (c, wc, _("unbalanced [")); + if (c == '\\' && (dfa->syntax.syntax_bits & RE_BACKSLASH_ESCAPE_IN_LISTS)) + FETCH_WC (dfa, c, wc, _("unbalanced [")); if (c1 == NOTCHAR) - FETCH_WC (c1, wc1, _("unbalanced [")); + FETCH_WC (dfa, c1, wc1, _("unbalanced [")); if (c1 == '-') /* build range characters. */ { - FETCH_WC (c2, wc2, _("unbalanced [")); + FETCH_WC (dfa, c2, wc2, _("unbalanced [")); /* A bracket expression like [a-[.aa.]] matches an unknown set. Treat it like [-a[.aa.]] while parsing it, and remember that the set is unknown. */ - if (c2 == '[' && *lexptr == '.') + if (c2 == '[' && *dfa->lexstate.lexptr == '.') { known_bracket_exp = false; c2 = ']'; } - if (c2 != ']') + if (c2 == ']') { - if (c2 == '\\' && (syntax_bits & RE_BACKSLASH_ESCAPE_IN_LISTS)) - FETCH_WC (c2, wc2, _("unbalanced [")); + /* In the case [x-], the - is an ordinary hyphen, + which is left in c1, the lookahead character. */ + dfa->lexstate.lexptr -= dfa->lexstate.cur_mb_len; + dfa->lexstate.lexleft += dfa->lexstate.cur_mb_len; + } + else + { + if (c2 == '\\' && (dfa->syntax.syntax_bits + & RE_BACKSLASH_ESCAPE_IN_LISTS)) + FETCH_WC (dfa, c2, wc2, _("unbalanced [")); - if (dfa->multibyte) - { - /* When case folding map a range, say [m-z] (or even [M-z]) - to the pair of ranges, [m-z] [M-Z]. Although this code - is wrong in multiple ways, it's never used in practice. - FIXME: Remove this (and related) unused code. */ - if (wc != WEOF && wc2 != WEOF) - { - work_mbc->ranges - = maybe_realloc (work_mbc->ranges, - work_mbc->nranges + 2, - &ranges_al, sizeof *work_mbc->ranges); - work_mbc->ranges[work_mbc->nranges].beg - = case_fold ? towlower (wc) : wc; - work_mbc->ranges[work_mbc->nranges++].end - = case_fold ? towlower (wc2) : wc2; - - if (case_fold && (iswalpha (wc) || iswalpha (wc2))) - { - work_mbc->ranges[work_mbc->nranges].beg - = towupper (wc); - work_mbc->ranges[work_mbc->nranges++].end - = towupper (wc2); - } - } - } - else if (using_simple_locale ()) + colon_warning_state |= 8; + FETCH_WC (dfa, c1, wc1, _("unbalanced [")); + + /* Treat [x-y] as a range if x != y. */ + if (wc != wc2 || wc == WEOF) { - for (c1 = c; c1 <= c2; c1++) - setbit (c1, ccl); - if (case_fold) + if (dfa->multibyte) + known_bracket_exp = false; + else if (using_simple_locale (dfa)) { - int uc = toupper (c); - int uc2 = toupper (c2); - for (c1 = 0; c1 < NOTCHAR; c1++) + int ci; + for (ci = c; ci <= c2; ci++) + setbit (ci, ccl); + if (dfa->syntax.case_fold) { - int uc1 = toupper (c1); - if (uc <= uc1 && uc1 <= uc2) - setbit (c1, ccl); + int uc = toupper (c); + int uc2 = toupper (c2); + for (ci = 0; ci < NOTCHAR; ci++) + { + int uci = toupper (ci); + if (uc <= uci && uci <= uc2) + setbit (ci, ccl); + } } } - } - else - known_bracket_exp = false; + else + known_bracket_exp = false; - colon_warning_state |= 8; - FETCH_WC (c1, wc1, _("unbalanced [")); - continue; + continue; + } } - - /* In the case [x-], the - is an ordinary hyphen, - which is left in c1, the lookahead character. */ - lexptr -= cur_mb_len; - lexleft += cur_mb_len; } colon_warning_state |= (c == ':') ? 2 : 4; if (!dfa->multibyte) { - if (case_fold) + if (dfa->syntax.case_fold) setbit_case_fold_c (c, ccl); else setbit (c, ccl); @@ -1244,9 +1250,10 @@ parse_bracket_exp (void) else { wchar_t folded[CASE_FOLDED_BUFSIZE + 1]; - int i; - int n = (case_fold ? case_folded_counterparts (wc, folded + 1) + 1 - : 1); + unsigned int i; + unsigned int n = (dfa->syntax.case_fold + ? case_folded_counterparts (wc, folded + 1) + 1 + : 1); folded[0] = wc; for (i = 0; i < n; i++) if (!setbit_wc (folded[i], ccl)) @@ -1268,9 +1275,8 @@ parse_bracket_exp (void) if (dfa->multibyte) { - static charclass zeroclass; work_mbc->invert = invert; - work_mbc->cset = equal (ccl, zeroclass) ? -1 : charclass_index (ccl); + work_mbc->cset = emptyset (ccl) ? -1 : dfa_charclass_index (dfa, ccl); return MBCSET; } @@ -1278,29 +1284,29 @@ parse_bracket_exp (void) { assert (!dfa->multibyte); notset (ccl); - if (syntax_bits & RE_HAT_LISTS_NOT_NEWLINE) - clrbit (eolbyte, ccl); + if (dfa->syntax.syntax_bits & RE_HAT_LISTS_NOT_NEWLINE) + clrbit ('\n', ccl); } - return CSET + charclass_index (ccl); + return CSET + dfa_charclass_index (dfa, ccl); } #define PUSH_LEX_STATE(s) \ do \ { \ - char const *lexptr_saved = lexptr; \ - size_t lexleft_saved = lexleft; \ - lexptr = (s); \ - lexleft = strlen (lexptr) + char const *lexptr_saved = dfa->lexstate.lexptr; \ + size_t lexleft_saved = dfa->lexstate.lexleft; \ + dfa->lexstate.lexptr = (s); \ + dfa->lexstate.lexleft = strlen (dfa->lexstate.lexptr) #define POP_LEX_STATE() \ - lexptr = lexptr_saved; \ - lexleft = lexleft_saved; \ + dfa->lexstate.lexptr = lexptr_saved; \ + dfa->lexstate.lexleft = lexleft_saved; \ } \ - while (0) + while (false) static token -lex (void) +lex (struct dfa *dfa) { int c, c2; bool backslash = false; @@ -1315,14 +1321,14 @@ lex (void) "if (backslash) ...". */ for (i = 0; i < 2; ++i) { - FETCH_WC (c, wctok, NULL); + FETCH_WC (dfa, c, dfa->lexstate.wctok, NULL); switch (c) { case '\\': if (backslash) goto normal_char; - if (lexleft == 0) + if (dfa->lexstate.lexleft == 0) dfaerror (_("unfinished \\ escape")); backslash = true; break; @@ -1330,25 +1336,29 @@ lex (void) case '^': if (backslash) goto normal_char; - if (syntax_bits & RE_CONTEXT_INDEP_ANCHORS - || lasttok == END || lasttok == LPAREN || lasttok == OR) - return lasttok = BEGLINE; + if (dfa->syntax.syntax_bits & RE_CONTEXT_INDEP_ANCHORS + || dfa->lexstate.lasttok == END || dfa->lexstate.lasttok == LPAREN + || dfa->lexstate.lasttok == OR) + return dfa->lexstate.lasttok = BEGLINE; goto normal_char; case '$': if (backslash) goto normal_char; - if (syntax_bits & RE_CONTEXT_INDEP_ANCHORS - || lexleft == 0 - || (syntax_bits & RE_NO_BK_PARENS - ? lexleft > 0 && *lexptr == ')' - : lexleft > 1 && lexptr[0] == '\\' && lexptr[1] == ')') - || (syntax_bits & RE_NO_BK_VBAR - ? lexleft > 0 && *lexptr == '|' - : lexleft > 1 && lexptr[0] == '\\' && lexptr[1] == '|') - || ((syntax_bits & RE_NEWLINE_ALT) - && lexleft > 0 && *lexptr == '\n')) - return lasttok = ENDLINE; + if (dfa->syntax.syntax_bits & RE_CONTEXT_INDEP_ANCHORS + || dfa->lexstate.lexleft == 0 + || (dfa->syntax.syntax_bits & RE_NO_BK_PARENS + ? dfa->lexstate.lexleft > 0 && *dfa->lexstate.lexptr == ')' + : dfa->lexstate.lexleft > 1 && dfa->lexstate.lexptr[0] == '\\' + && dfa->lexstate.lexptr[1] == ')') + || (dfa->syntax.syntax_bits & RE_NO_BK_VBAR + ? dfa->lexstate.lexleft > 0 && *dfa->lexstate.lexptr == '|' + : dfa->lexstate.lexleft > 1 && dfa->lexstate.lexptr[0] == '\\' + && dfa->lexstate.lexptr[1] == '|') + || ((dfa->syntax.syntax_bits & RE_NEWLINE_ALT) + && dfa->lexstate.lexleft > 0 + && *dfa->lexstate.lexptr == '\n')) + return dfa->lexstate.lasttok = ENDLINE; goto normal_char; case '1': @@ -1360,74 +1370,84 @@ lex (void) case '7': case '8': case '9': - if (backslash && !(syntax_bits & RE_NO_BK_REFS)) + if (backslash && !(dfa->syntax.syntax_bits & RE_NO_BK_REFS)) { - laststart = false; - return lasttok = BACKREF; + dfa->lexstate.laststart = false; + return dfa->lexstate.lasttok = BACKREF; } goto normal_char; case '`': - if (backslash && !(syntax_bits & RE_NO_GNU_OPS)) - return lasttok = BEGLINE; /* FIXME: should be beginning of string */ + if (backslash && !(dfa->syntax.syntax_bits & RE_NO_GNU_OPS)) + { + /* FIXME: should be beginning of string */ + return dfa->lexstate.lasttok = BEGLINE; + } goto normal_char; case '\'': - if (backslash && !(syntax_bits & RE_NO_GNU_OPS)) - return lasttok = ENDLINE; /* FIXME: should be end of string */ + if (backslash && !(dfa->syntax.syntax_bits & RE_NO_GNU_OPS)) + { + /* FIXME: should be end of string */ + return dfa->lexstate.lasttok = ENDLINE; + } goto normal_char; case '<': - if (backslash && !(syntax_bits & RE_NO_GNU_OPS)) - return lasttok = BEGWORD; + if (backslash && !(dfa->syntax.syntax_bits & RE_NO_GNU_OPS)) + return dfa->lexstate.lasttok = BEGWORD; goto normal_char; case '>': - if (backslash && !(syntax_bits & RE_NO_GNU_OPS)) - return lasttok = ENDWORD; + if (backslash && !(dfa->syntax.syntax_bits & RE_NO_GNU_OPS)) + return dfa->lexstate.lasttok = ENDWORD; goto normal_char; case 'b': - if (backslash && !(syntax_bits & RE_NO_GNU_OPS)) - return lasttok = LIMWORD; + if (backslash && !(dfa->syntax.syntax_bits & RE_NO_GNU_OPS)) + return dfa->lexstate.lasttok = LIMWORD; goto normal_char; case 'B': - if (backslash && !(syntax_bits & RE_NO_GNU_OPS)) - return lasttok = NOTLIMWORD; + if (backslash && !(dfa->syntax.syntax_bits & RE_NO_GNU_OPS)) + return dfa->lexstate.lasttok = NOTLIMWORD; goto normal_char; case '?': - if (syntax_bits & RE_LIMITED_OPS) + if (dfa->syntax.syntax_bits & RE_LIMITED_OPS) goto normal_char; - if (backslash != ((syntax_bits & RE_BK_PLUS_QM) != 0)) + if (backslash != ((dfa->syntax.syntax_bits & RE_BK_PLUS_QM) != 0)) goto normal_char; - if (!(syntax_bits & RE_CONTEXT_INDEP_OPS) && laststart) + if (!(dfa->syntax.syntax_bits & RE_CONTEXT_INDEP_OPS) + && dfa->lexstate.laststart) goto normal_char; - return lasttok = QMARK; + return dfa->lexstate.lasttok = QMARK; case '*': if (backslash) goto normal_char; - if (!(syntax_bits & RE_CONTEXT_INDEP_OPS) && laststart) + if (!(dfa->syntax.syntax_bits & RE_CONTEXT_INDEP_OPS) + && dfa->lexstate.laststart) goto normal_char; - return lasttok = STAR; + return dfa->lexstate.lasttok = STAR; case '+': - if (syntax_bits & RE_LIMITED_OPS) + if (dfa->syntax.syntax_bits & RE_LIMITED_OPS) goto normal_char; - if (backslash != ((syntax_bits & RE_BK_PLUS_QM) != 0)) + if (backslash != ((dfa->syntax.syntax_bits & RE_BK_PLUS_QM) != 0)) goto normal_char; - if (!(syntax_bits & RE_CONTEXT_INDEP_OPS) && laststart) + if (!(dfa->syntax.syntax_bits & RE_CONTEXT_INDEP_OPS) + && dfa->lexstate.laststart) goto normal_char; - return lasttok = PLUS; + return dfa->lexstate.lasttok = PLUS; case '{': - if (!(syntax_bits & RE_INTERVALS)) + if (!(dfa->syntax.syntax_bits & RE_INTERVALS)) goto normal_char; - if (backslash != ((syntax_bits & RE_NO_BK_BRACES) == 0)) + if (backslash != ((dfa->syntax.syntax_bits & RE_NO_BK_BRACES) == 0)) goto normal_char; - if (!(syntax_bits & RE_CONTEXT_INDEP_OPS) && laststart) + if (!(dfa->syntax.syntax_bits & RE_CONTEXT_INDEP_OPS) + && dfa->lexstate.laststart) goto normal_char; /* Cases: @@ -1437,79 +1457,86 @@ lex (void) {,} - 0 to infinity (same as '*') {M,N} - M through N */ { - char const *p = lexptr; - char const *lim = p + lexleft; - minrep = maxrep = -1; + char const *p = dfa->lexstate.lexptr; + char const *lim = p + dfa->lexstate.lexleft; + dfa->lexstate.minrep = dfa->lexstate.maxrep = -1; for (; p != lim && ISASCIIDIGIT (*p); p++) { - if (minrep < 0) - minrep = *p - '0'; + if (dfa->lexstate.minrep < 0) + dfa->lexstate.minrep = *p - '0'; else - minrep = MIN (RE_DUP_MAX + 1, minrep * 10 + *p - '0'); + dfa->lexstate.minrep = MIN (RE_DUP_MAX + 1, + (dfa->lexstate.minrep + * 10 + *p - '0')); } if (p != lim) { if (*p != ',') - maxrep = minrep; + dfa->lexstate.maxrep = dfa->lexstate.minrep; else { - if (minrep < 0) - minrep = 0; + if (dfa->lexstate.minrep < 0) + dfa->lexstate.minrep = 0; while (++p != lim && ISASCIIDIGIT (*p)) { - if (maxrep < 0) - maxrep = *p - '0'; + if (dfa->lexstate.maxrep < 0) + dfa->lexstate.maxrep = *p - '0'; else - maxrep = MIN (RE_DUP_MAX + 1, maxrep * 10 + *p - '0'); + dfa->lexstate.maxrep = MIN (RE_DUP_MAX + 1, + (dfa->lexstate.maxrep + * 10 + *p - '0')); } } } if (! ((! backslash || (p != lim && *p++ == '\\')) && p != lim && *p++ == '}' - && 0 <= minrep && (maxrep < 0 || minrep <= maxrep))) + && 0 <= dfa->lexstate.minrep + && (dfa->lexstate.maxrep < 0 + || dfa->lexstate.minrep <= dfa->lexstate.maxrep))) { - if (syntax_bits & RE_INVALID_INTERVAL_ORD) + if (dfa->syntax.syntax_bits & RE_INVALID_INTERVAL_ORD) goto normal_char; dfaerror (_("invalid content of \\{\\}")); } - if (RE_DUP_MAX < maxrep) + if (RE_DUP_MAX < dfa->lexstate.maxrep) dfaerror (_("regular expression too big")); - lexptr = p; - lexleft = lim - p; + dfa->lexstate.lexptr = p; + dfa->lexstate.lexleft = lim - p; } - laststart = false; - return lasttok = REPMN; + dfa->lexstate.laststart = false; + return dfa->lexstate.lasttok = REPMN; case '|': - if (syntax_bits & RE_LIMITED_OPS) + if (dfa->syntax.syntax_bits & RE_LIMITED_OPS) goto normal_char; - if (backslash != ((syntax_bits & RE_NO_BK_VBAR) == 0)) + if (backslash != ((dfa->syntax.syntax_bits & RE_NO_BK_VBAR) == 0)) goto normal_char; - laststart = true; - return lasttok = OR; + dfa->lexstate.laststart = true; + return dfa->lexstate.lasttok = OR; case '\n': - if (syntax_bits & RE_LIMITED_OPS - || backslash || !(syntax_bits & RE_NEWLINE_ALT)) + if (dfa->syntax.syntax_bits & RE_LIMITED_OPS + || backslash || !(dfa->syntax.syntax_bits & RE_NEWLINE_ALT)) goto normal_char; - laststart = true; - return lasttok = OR; + dfa->lexstate.laststart = true; + return dfa->lexstate.lasttok = OR; case '(': - if (backslash != ((syntax_bits & RE_NO_BK_PARENS) == 0)) + if (backslash != ((dfa->syntax.syntax_bits & RE_NO_BK_PARENS) == 0)) goto normal_char; - ++parens; - laststart = true; - return lasttok = LPAREN; + ++dfa->lexstate.parens; + dfa->lexstate.laststart = true; + return dfa->lexstate.lasttok = LPAREN; case ')': - if (backslash != ((syntax_bits & RE_NO_BK_PARENS) == 0)) + if (backslash != ((dfa->syntax.syntax_bits & RE_NO_BK_PARENS) == 0)) goto normal_char; - if (parens == 0 && syntax_bits & RE_UNMATCHED_RIGHT_PAREN_ORD) + if (dfa->lexstate.parens == 0 + && dfa->syntax.syntax_bits & RE_UNMATCHED_RIGHT_PAREN_ORD) goto normal_char; - --parens; - laststart = false; - return lasttok = RPAREN; + --dfa->lexstate.parens; + dfa->lexstate.laststart = false; + return dfa->lexstate.lasttok = RPAREN; case '.': if (backslash) @@ -1518,21 +1545,21 @@ lex (void) { /* In multibyte environment period must match with a single character not a byte. So we use ANYCHAR. */ - laststart = false; - return lasttok = ANYCHAR; + dfa->lexstate.laststart = false; + return dfa->lexstate.lasttok = ANYCHAR; } zeroset (ccl); notset (ccl); - if (!(syntax_bits & RE_DOT_NEWLINE)) - clrbit (eolbyte, ccl); - if (syntax_bits & RE_DOT_NOT_NULL) + if (!(dfa->syntax.syntax_bits & RE_DOT_NEWLINE)) + clrbit ('\n', ccl); + if (dfa->syntax.syntax_bits & RE_DOT_NOT_NULL) clrbit ('\0', ccl); - laststart = false; - return lasttok = CSET + charclass_index (ccl); + dfa->lexstate.laststart = false; + return dfa->lexstate.lasttok = CSET + dfa_charclass_index (dfa, ccl); case 's': case 'S': - if (!backslash || (syntax_bits & RE_NO_GNU_OPS)) + if (!backslash || (dfa->syntax.syntax_bits & RE_NO_GNU_OPS)) goto normal_char; if (!dfa->multibyte) { @@ -1542,8 +1569,9 @@ lex (void) setbit (c2, ccl); if (c == 'S') notset (ccl); - laststart = false; - return lasttok = CSET + charclass_index (ccl); + dfa->lexstate.laststart = false; + return dfa->lexstate.lasttok = CSET + dfa_charclass_index (dfa, + ccl); } /* FIXME: see if optimizing this, as is done with ANYCHAR and @@ -1554,28 +1582,29 @@ lex (void) strings, each minus its "already processed" '['. */ PUSH_LEX_STATE (c == 's' ? "[:space:]]" : "^[:space:]]"); - lasttok = parse_bracket_exp (); + dfa->lexstate.lasttok = parse_bracket_exp (dfa); POP_LEX_STATE (); - laststart = false; - return lasttok; + dfa->lexstate.laststart = false; + return dfa->lexstate.lasttok; case 'w': case 'W': - if (!backslash || (syntax_bits & RE_NO_GNU_OPS)) + if (!backslash || (dfa->syntax.syntax_bits & RE_NO_GNU_OPS)) goto normal_char; if (!dfa->multibyte) { zeroset (ccl); for (c2 = 0; c2 < NOTCHAR; ++c2) - if (IS_WORD_CONSTITUENT (c2)) + if (unibyte_word_constituent (c2)) setbit (c2, ccl); if (c == 'W') notset (ccl); - laststart = false; - return lasttok = CSET + charclass_index (ccl); + dfa->lexstate.laststart = false; + return dfa->lexstate.lasttok = CSET + dfa_charclass_index (dfa, + ccl); } /* FIXME: see if optimizing this, as is done with ANYCHAR and @@ -1586,35 +1615,36 @@ lex (void) strings, each minus its "already processed" '['. */ PUSH_LEX_STATE (c == 'w' ? "_[:alnum:]]" : "^_[:alnum:]]"); - lasttok = parse_bracket_exp (); + dfa->lexstate.lasttok = parse_bracket_exp (dfa); POP_LEX_STATE (); - laststart = false; - return lasttok; + dfa->lexstate.laststart = false; + return dfa->lexstate.lasttok; case '[': if (backslash) goto normal_char; - laststart = false; - return lasttok = parse_bracket_exp (); + dfa->lexstate.laststart = false; + return dfa->lexstate.lasttok = parse_bracket_exp (dfa); default: normal_char: - laststart = false; + dfa->lexstate.laststart = false; /* For multibyte character sets, folding is done in atom. Always return WCHAR. */ if (dfa->multibyte) - return lasttok = WCHAR; + return dfa->lexstate.lasttok = WCHAR; - if (case_fold && isalpha (c)) + if (dfa->syntax.case_fold && isalpha (c)) { zeroset (ccl); setbit_case_fold_c (c, ccl); - return lasttok = CSET + charclass_index (ccl); + return dfa->lexstate.lasttok = CSET + dfa_charclass_index (dfa, + ccl); } - return lasttok = c; + return dfa->lexstate.lasttok = c; } } @@ -1624,17 +1654,8 @@ lex (void) return END; /* keeps pedantic compilers happy. */ } -/* Recursive descent parser for regular expressions. */ - -static token tok; /* Lookahead token. */ -static size_t depth; /* Current depth of a hypothetical stack - holding deferred productions. This is - used to determine the depth that will be - required of the real stack later on in - dfaanalyze. */ - static void -addtok_mb (token t, int mbprop) +addtok_mb (struct dfa *dfa, token t, int mbprop) { if (dfa->talloc == dfa->tindex) { @@ -1657,7 +1678,7 @@ addtok_mb (token t, int mbprop) case CAT: case OR: - --depth; + --dfa->parsestate.depth; break; case BACKREF: @@ -1667,68 +1688,49 @@ addtok_mb (token t, int mbprop) ++dfa->nleaves; /* fallthrough */ case EMPTY: - ++depth; + ++dfa->parsestate.depth; break; } - if (depth > dfa->depth) - dfa->depth = depth; + if (dfa->parsestate.depth > dfa->depth) + dfa->depth = dfa->parsestate.depth; } -static void addtok_wc (wint_t wc); +static void addtok_wc (struct dfa *dfa, wint_t wc); /* Add the given token to the parse tree, maintaining the depth count and updating the maximum depth if necessary. */ static void -addtok (token t) +addtok (struct dfa *dfa, token t) { if (dfa->multibyte && t == MBCSET) { bool need_or = false; struct mb_char_classes *work_mbc = &dfa->mbcsets[dfa->nmbcsets - 1]; + size_t i; /* Extract wide characters into alternations for better performance. This does not require UTF-8. */ - if (!work_mbc->invert) + for (i = 0; i < work_mbc->nchars; i++) { - size_t i; - for (i = 0; i < work_mbc->nchars; i++) - { - addtok_wc (work_mbc->chars[i]); - if (need_or) - addtok (OR); - need_or = true; - } - work_mbc->nchars = 0; + addtok_wc (dfa, work_mbc->chars[i]); + if (need_or) + addtok (dfa, OR); + need_or = true; } + work_mbc->nchars = 0; - /* If the MBCSET is non-inverted and doesn't include neither - character classes including multibyte characters, range - expressions, equivalence classes nor collating elements, - it can be replaced to a simple CSET. */ - if (work_mbc->invert - || work_mbc->nch_classes != 0 - || work_mbc->nranges != 0 - || work_mbc->nequivs != 0 || work_mbc->ncoll_elems != 0) + /* Characters have been handled above, so it is possible + that the mbcset is empty now. Do nothing in that case. */ + if (work_mbc->cset != -1) { - addtok_mb (MBCSET, ((dfa->nmbcsets - 1) << 2) + 3); + addtok (dfa, CSET + work_mbc->cset); if (need_or) - addtok (OR); - } - else - { - /* Characters have been handled above, so it is possible - that the mbcset is empty now. Do nothing in that case. */ - if (work_mbc->cset != -1) - { - addtok (CSET + work_mbc->cset); - if (need_or) - addtok (OR); - } + addtok (dfa, OR); } } else { - addtok_mb (t, 3); + addtok_mb (dfa, t, 3); } } @@ -1739,7 +1741,7 @@ addtok (token t) */ static void -addtok_wc (wint_t wc) +addtok_wc (struct dfa *dfa, wint_t wc) { unsigned char buf[MB_LEN_MAX]; mbstate_t s = { 0 }; @@ -1747,42 +1749,41 @@ addtok_wc (wint_t wc) size_t stored_bytes = wcrtomb ((char *) buf, wc, &s); if (stored_bytes != (size_t) -1) - cur_mb_len = stored_bytes; + dfa->lexstate.cur_mb_len = stored_bytes; else { /* This is merely stop-gap. buf[0] is undefined, yet skipping the addtok_mb call altogether can corrupt the heap. */ - cur_mb_len = 1; + dfa->lexstate.cur_mb_len = 1; buf[0] = 0; } - addtok_mb (buf[0], cur_mb_len == 1 ? 3 : 1); - for (i = 1; i < cur_mb_len; i++) + addtok_mb (dfa, buf[0], dfa->lexstate.cur_mb_len == 1 ? 3 : 1); + for (i = 1; i < dfa->lexstate.cur_mb_len; i++) { - addtok_mb (buf[i], i == cur_mb_len - 1 ? 2 : 0); - addtok (CAT); + addtok_mb (dfa, buf[i], i == dfa->lexstate.cur_mb_len - 1 ? 2 : 0); + addtok (dfa, CAT); } } static void -add_utf8_anychar (void) +add_utf8_anychar (struct dfa *dfa) { - static const charclass utf8_classes[5] = { + static charclass const utf8_classes[5] = { /* 80-bf: non-leading bytes. */ - {0, 0, 0, 0, CHARCLASS_WORD_MASK, CHARCLASS_WORD_MASK, 0, 0}, + CHARCLASS_INIT (0, 0, 0, 0, 0xffffffff, 0xffffffff, 0, 0), /* 00-7f: 1-byte sequence. */ - {CHARCLASS_WORD_MASK, CHARCLASS_WORD_MASK, CHARCLASS_WORD_MASK, - CHARCLASS_WORD_MASK, 0, 0, 0, 0}, + CHARCLASS_INIT (0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0, 0, 0, 0), /* c2-df: 2-byte sequence. */ - {0, 0, 0, 0, 0, 0, ~3 & CHARCLASS_WORD_MASK, 0}, + CHARCLASS_INIT (0, 0, 0, 0, 0, 0, 0xfffffffc, 0), /* e0-ef: 3-byte sequence. */ - {0, 0, 0, 0, 0, 0, 0, 0xffff}, + CHARCLASS_INIT (0, 0, 0, 0, 0, 0, 0, 0xffff), /* f0-f7: 4-byte sequence. */ - {0, 0, 0, 0, 0, 0, 0, 0xff0000} + CHARCLASS_INIT (0, 0, 0, 0, 0, 0, 0, 0xff0000) }; const unsigned int n = sizeof (utf8_classes) / sizeof (utf8_classes[0]); unsigned int i; @@ -1795,12 +1796,12 @@ add_utf8_anychar (void) copyset (utf8_classes[i], c); if (i == 1) { - if (!(syntax_bits & RE_DOT_NEWLINE)) - clrbit (eolbyte, c); - if (syntax_bits & RE_DOT_NOT_NULL) + if (!(dfa->syntax.syntax_bits & RE_DOT_NEWLINE)) + clrbit ('\n', c); + if (dfa->syntax.syntax_bits & RE_DOT_NOT_NULL) clrbit ('\0', c); } - dfa->utf8_anychar_classes[i] = CSET + charclass_index (c); + dfa->utf8_anychar_classes[i] = CSET + dfa_charclass_index (dfa, c); } /* A valid UTF-8 character is @@ -1814,12 +1815,12 @@ add_utf8_anychar (void) and you get "B|(C|(D|EA)A)A". And since the token buffer is in reverse Polish notation, you get "B C D E A CAT OR A CAT OR A CAT OR". */ for (i = 1; i < n; i++) - addtok (dfa->utf8_anychar_classes[i]); + addtok (dfa, dfa->utf8_anychar_classes[i]); while (--i > 1) { - addtok (dfa->utf8_anychar_classes[0]); - addtok (CAT); - addtok (OR); + addtok (dfa, dfa->utf8_anychar_classes[0]); + addtok (dfa, CAT); + addtok (dfa, OR); } } @@ -1859,31 +1860,32 @@ add_utf8_anychar (void) The parser builds a parse tree in postfix form in an array of tokens. */ static void -atom (void) +atom (struct dfa *dfa) { - if (tok == WCHAR) + if (dfa->parsestate.tok == WCHAR) { - if (wctok == WEOF) - addtok (BACKREF); + if (dfa->lexstate.wctok == WEOF) + addtok (dfa, BACKREF); else { - addtok_wc (wctok); + addtok_wc (dfa, dfa->lexstate.wctok); - if (case_fold) + if (dfa->syntax.case_fold) { wchar_t folded[CASE_FOLDED_BUFSIZE]; - int i, n = case_folded_counterparts (wctok, folded); + unsigned int i, n = case_folded_counterparts (dfa->lexstate.wctok, + folded); for (i = 0; i < n; i++) { - addtok_wc (folded[i]); - addtok (OR); + addtok_wc (dfa, folded[i]); + addtok (dfa, OR); } } } - tok = lex (); + dfa->parsestate.tok = lex (dfa); } - else if (tok == ANYCHAR && using_utf8 ()) + else if (dfa->parsestate.tok == ANYCHAR && using_utf8) { /* For UTF-8 expand the period to a series of CSETs that define a valid UTF-8 character. This avoids using the slow multibyte path. I'm @@ -1892,32 +1894,35 @@ atom (void) it is done above in add_utf8_anychar. So, let's start with UTF-8: it is the most used, and the structure of the encoding makes the correctness more obvious. */ - add_utf8_anychar (); - tok = lex (); + add_utf8_anychar (dfa); + dfa->parsestate.tok = lex (dfa); } - else if ((tok >= 0 && tok < NOTCHAR) || tok >= CSET || tok == BACKREF - || tok == BEGLINE || tok == ENDLINE || tok == BEGWORD - || tok == ANYCHAR || tok == MBCSET - || tok == ENDWORD || tok == LIMWORD || tok == NOTLIMWORD) + else if ((dfa->parsestate.tok >= 0 && dfa->parsestate.tok < NOTCHAR) + || dfa->parsestate.tok >= CSET || dfa->parsestate.tok == BACKREF + || dfa->parsestate.tok == BEGLINE || dfa->parsestate.tok == ENDLINE + || dfa->parsestate.tok == BEGWORD || dfa->parsestate.tok == ANYCHAR + || dfa->parsestate.tok == MBCSET || dfa->parsestate.tok == ENDWORD + || dfa->parsestate.tok == LIMWORD + || dfa->parsestate.tok == NOTLIMWORD) { - addtok (tok); - tok = lex (); + addtok (dfa, dfa->parsestate.tok); + dfa->parsestate.tok = lex (dfa); } - else if (tok == LPAREN) + else if (dfa->parsestate.tok == LPAREN) { - tok = lex (); - regexp (); - if (tok != RPAREN) + dfa->parsestate.tok = lex (dfa); + regexp (dfa); + if (dfa->parsestate.tok != RPAREN) dfaerror (_("unbalanced (")); - tok = lex (); + dfa->parsestate.tok = lex (dfa); } else - addtok (EMPTY); + addtok (dfa, EMPTY); } /* Return the number of tokens in the given subexpression. */ static size_t _GL_ATTRIBUTE_PURE -nsubtoks (size_t tindex) +nsubtoks (struct dfa const *dfa, size_t tindex) { size_t ntoks1; @@ -1928,127 +1933,129 @@ nsubtoks (size_t tindex) case QMARK: case STAR: case PLUS: - return 1 + nsubtoks (tindex - 1); + return 1 + nsubtoks (dfa, tindex - 1); case CAT: case OR: - ntoks1 = nsubtoks (tindex - 1); - return 1 + ntoks1 + nsubtoks (tindex - 1 - ntoks1); + ntoks1 = nsubtoks (dfa, tindex - 1); + return 1 + ntoks1 + nsubtoks (dfa, tindex - 1 - ntoks1); } } /* Copy the given subexpression to the top of the tree. */ static void -copytoks (size_t tindex, size_t ntokens) +copytoks (struct dfa *dfa, size_t tindex, size_t ntokens) { size_t i; if (dfa->multibyte) for (i = 0; i < ntokens; ++i) - addtok_mb (dfa->tokens[tindex + i], dfa->multibyte_prop[tindex + i]); + addtok_mb (dfa, dfa->tokens[tindex + i], dfa->multibyte_prop[tindex + i]); else for (i = 0; i < ntokens; ++i) - addtok_mb (dfa->tokens[tindex + i], 3); + addtok_mb (dfa, dfa->tokens[tindex + i], 3); } static void -closure (void) +closure (struct dfa *dfa) { int i; size_t tindex, ntokens; - atom (); - while (tok == QMARK || tok == STAR || tok == PLUS || tok == REPMN) - if (tok == REPMN && (minrep || maxrep)) + atom (dfa); + while (dfa->parsestate.tok == QMARK || dfa->parsestate.tok == STAR + || dfa->parsestate.tok == PLUS || dfa->parsestate.tok == REPMN) + if (dfa->parsestate.tok == REPMN + && (dfa->lexstate.minrep || dfa->lexstate.maxrep)) { - ntokens = nsubtoks (dfa->tindex); + ntokens = nsubtoks (dfa, dfa->tindex); tindex = dfa->tindex - ntokens; - if (maxrep < 0) - addtok (PLUS); - if (minrep == 0) - addtok (QMARK); - for (i = 1; i < minrep; ++i) + if (dfa->lexstate.maxrep < 0) + addtok (dfa, PLUS); + if (dfa->lexstate.minrep == 0) + addtok (dfa, QMARK); + for (i = 1; i < dfa->lexstate.minrep; ++i) { - copytoks (tindex, ntokens); - addtok (CAT); + copytoks (dfa, tindex, ntokens); + addtok (dfa, CAT); } - for (; i < maxrep; ++i) + for (; i < dfa->lexstate.maxrep; ++i) { - copytoks (tindex, ntokens); - addtok (QMARK); - addtok (CAT); + copytoks (dfa, tindex, ntokens); + addtok (dfa, QMARK); + addtok (dfa, CAT); } - tok = lex (); + dfa->parsestate.tok = lex (dfa); } - else if (tok == REPMN) + else if (dfa->parsestate.tok == REPMN) { - dfa->tindex -= nsubtoks (dfa->tindex); - tok = lex (); - closure (); + dfa->tindex -= nsubtoks (dfa, dfa->tindex); + dfa->parsestate.tok = lex (dfa); + closure (dfa); } else { - addtok (tok); - tok = lex (); + addtok (dfa, dfa->parsestate.tok); + dfa->parsestate.tok = lex (dfa); } } static void -branch (void) +branch (struct dfa* dfa) { - closure (); - while (tok != RPAREN && tok != OR && tok >= 0) + closure (dfa); + while (dfa->parsestate.tok != RPAREN && dfa->parsestate.tok != OR + && dfa->parsestate.tok >= 0) { - closure (); - addtok (CAT); + closure (dfa); + addtok (dfa, CAT); } } static void -regexp (void) +regexp (struct dfa *dfa) { - branch (); - while (tok == OR) + branch (dfa); + while (dfa->parsestate.tok == OR) { - tok = lex (); - branch (); - addtok (OR); + dfa->parsestate.tok = lex (dfa); + branch (dfa); + addtok (dfa, OR); } } /* Main entry point for the parser. S is a string to be parsed, len is the length of the string, so s can include NUL characters. D is a pointer to the struct dfa to parse into. */ -void +static void dfaparse (char const *s, size_t len, struct dfa *d) { - dfa = d; - lexptr = s; - lexleft = len; - lasttok = END; - laststart = true; - parens = 0; - if (dfa->multibyte) + d->lexstate.lexptr = s; + d->lexstate.lexleft = len; + d->lexstate.lasttok = END; + d->lexstate.laststart = true; + d->lexstate.parens = 0; + if (d->multibyte) { - cur_mb_len = 0; + d->lexstate.cur_mb_len = 0; memset (&d->mbs, 0, sizeof d->mbs); } - if (!syntax_bits_set) + if (!d->syntax.syntax_bits_set) dfaerror (_("no syntax specified")); - tok = lex (); - depth = d->depth; + d->parsestate.tok = lex (d); + d->parsestate.depth = d->depth; - regexp (); + regexp (d); - if (tok != END) + if (d->parsestate.tok != END) dfaerror (_("unbalanced )")); - addtok (END - d->nregexps); - addtok (CAT); + addtok (d, END - d->nregexps); + addtok (d, CAT); if (d->nregexps) - addtok (OR); + addtok (d, OR); ++d->nregexps; } @@ -2057,7 +2064,7 @@ dfaparse (char const *s, size_t len, struct dfa *d) /* Copy one set to another. */ static void -copy (position_set const *src, position_set * dst) +copy (position_set const *src, position_set *dst) { if (dst->alloc < src->nelem) { @@ -2070,7 +2077,7 @@ copy (position_set const *src, position_set * dst) } static void -alloc_position_set (position_set * s, size_t size) +alloc_position_set (position_set *s, size_t size) { s->elems = xnmalloc (size, sizeof *s->elems); s->alloc = size; @@ -2082,7 +2089,7 @@ alloc_position_set (position_set * s, size_t size) then merge (logically-OR) P's constraints into the one in S. S->elems must point to an array large enough to hold the resulting set. */ static void -insert (position p, position_set * s) +insert (position p, position_set *s) { size_t count = s->nelem; size_t lo = 0, hi = count; @@ -2112,7 +2119,7 @@ insert (position p, position_set * s) /* Merge two sets of positions into a third. The result is exactly as if the positions of both sets were inserted into an initially empty set. */ static void -merge (position_set const *s1, position_set const *s2, position_set * m) +merge (position_set const *s1, position_set const *s2, position_set *m) { size_t i = 0, j = 0; @@ -2141,7 +2148,7 @@ merge (position_set const *s1, position_set const *s2, position_set * m) /* Delete a position from a set. */ static void -delete (position p, position_set * s) +delete (position p, position_set *s) { size_t i; @@ -2160,8 +2167,10 @@ static state_num state_index (struct dfa *d, position_set const *s, int context) { size_t hash = 0; - int constraint; + int constraint = 0; state_num i, j; + bool curr_dependent = false; + token first_end = 0; for (i = 0; i < s->nelem; ++i) hash ^= s->elems[i].index + s->elems[i].constraint; @@ -2173,42 +2182,74 @@ state_index (struct dfa *d, position_set const *s, int context) || context != d->states[i].context) continue; for (j = 0; j < s->nelem; ++j) - if (s->elems[j].constraint - != d->states[i].elems.elems[j].constraint + if (s->elems[j].constraint != d->states[i].elems.elems[j].constraint || s->elems[j].index != d->states[i].elems.elems[j].index) break; if (j == s->nelem) return i; } - /* We'll have to create a new state. */ +#ifdef DEBUG + fprintf (stderr, "new state %zd\n nextpos:", i); + for (j = 0; j < s->nelem; ++j) + { + fprintf (stderr, " %zu:", s->elems[j].index); + prtok (d->tokens[s->elems[j].index]); + } + fprintf (stderr, "\n context:"); + if (context ^ CTX_ANY) + { + if (context & CTX_NONE) + fprintf (stderr, " CTX_NONE"); + if (context & CTX_LETTER) + fprintf (stderr, " CTX_LETTER"); + if (context & CTX_NEWLINE) + fprintf (stderr, " CTX_NEWLINE"); + } + else + fprintf (stderr, " CTX_ANY"); + fprintf (stderr, "\n"); +#endif + + for (j = 0; j < s->nelem; ++j) + { + int c = s->elems[j].constraint; + if (d->tokens[s->elems[j].index] < 0) + { + if (SUCCEEDS_IN_CONTEXT (c, context, CTX_ANY)) + constraint |= c; + if (!first_end) + first_end = d->tokens[s->elems[j].index]; + } + else if (d->tokens[s->elems[j].index] == BACKREF) + constraint = NO_CONSTRAINT; + if (d->multibyte && d->tokens[s->elems[j].index] == ANYCHAR) + { + int acceptable + = ((SUCCEEDS_IN_CONTEXT (c, context, CTX_NEWLINE) + ? CTX_NEWLINE : 0) + | (SUCCEEDS_IN_CONTEXT (c, context, CTX_LETTER) + ? CTX_LETTER : 0) + | (SUCCEEDS_IN_CONTEXT (c, context, CTX_NONE) + ? CTX_NONE : 0)); + curr_dependent |= acceptable && (context & ~acceptable); + } + } + + + /* Create a new state. */ d->states = maybe_realloc (d->states, d->sindex, &d->salloc, sizeof *d->states); d->states[i].hash = hash; alloc_position_set (&d->states[i].elems, s->nelem); copy (s, &d->states[i].elems); d->states[i].context = context; - d->states[i].has_backref = false; - d->states[i].has_mbcset = false; - d->states[i].constraint = 0; - d->states[i].first_end = 0; + d->states[i].curr_dependent = curr_dependent; + d->states[i].constraint = constraint; + d->states[i].first_end = first_end; d->states[i].mbps.nelem = 0; d->states[i].mbps.elems = NULL; - - for (j = 0; j < s->nelem; ++j) - if (d->tokens[s->elems[j].index] < 0) - { - constraint = s->elems[j].constraint; - if (SUCCEEDS_IN_CONTEXT (constraint, context, CTX_ANY)) - d->states[i].constraint |= constraint; - if (!d->states[i].first_end) - d->states[i].first_end = d->tokens[s->elems[j].index]; - } - else if (d->tokens[s->elems[j].index] == BACKREF) - { - d->states[i].constraint = NO_CONSTRAINT; - d->states[i].has_backref = true; - } + d->states[i].mb_trindex = -1; ++d->sindex; @@ -2285,19 +2326,19 @@ epsclosure (position_set *s, struct dfa const *d, char *visited) character included in C. */ static int -charclass_context (charclass c) +charclass_context (struct dfa const *dfa, charclass c) { int context = 0; unsigned int j; - if (tstbit (eolbyte, c)) + if (tstbit (dfa->syntax.eolbyte, c)) context |= CTX_NEWLINE; for (j = 0; j < CHARCLASS_WORDS; ++j) { - if (c[j] & letters[j]) + if (c[j] & dfa->syntax.letters[j]) context |= CTX_LETTER; - if (c[j] & ~(letters[j] | newline[j])) + if (c[j] & ~(dfa->syntax.letters[j] | dfa->syntax.newline[j])) context |= CTX_NONE; } @@ -2380,8 +2421,8 @@ state_separate_contexts (position_set const *s) Sets are stored as arrays of the elements, obeying a stack-like allocation scheme; the number of elements in each set deeper in the stack can be used to determine the address of a particular set's array. */ -void -dfaanalyze (struct dfa *d, int searchflag) +static void +dfaanalyze (struct dfa *d, bool searchflag) { /* Array allocated to hold position sets. */ position *posalloc = xnmalloc (d->nleaves, 2 * sizeof *posalloc); @@ -2411,13 +2452,13 @@ dfaanalyze (struct dfa *d, int searchflag) fprintf (stderr, "dfaanalyze:\n"); for (i = 0; i < d->tindex; ++i) { - fprintf (stderr, " %zd:", i); + fprintf (stderr, " %zu:", i); prtok (d->tokens[i]); } putc ('\n', stderr); #endif - d->searchflag = searchflag != 0; + d->searchflag = searchflag; alloc_position_set (&merged, d->nleaves); d->follows = xcalloc (d->tindex, sizeof *d->follows); @@ -2525,7 +2566,7 @@ dfaanalyze (struct dfa *d, int searchflag) } #ifdef DEBUG /* ... balance the above nonsyntactic #ifdef goo... */ - fprintf (stderr, "node %zd:", i); + fprintf (stderr, "node %zu:", i); prtok (d->tokens[i]); putc ('\n', stderr); fprintf (stderr, @@ -2533,13 +2574,13 @@ dfaanalyze (struct dfa *d, int searchflag) fprintf (stderr, " firstpos:"); for (j = stk[-1].nfirstpos; j-- > 0;) { - fprintf (stderr, " %zd:", firstpos[j].index); + fprintf (stderr, " %zu:", firstpos[j].index); prtok (d->tokens[firstpos[j].index]); } fprintf (stderr, "\n lastpos:"); for (j = stk[-1].nlastpos; j-- > 0;) { - fprintf (stderr, " %zd:", lastpos[j].index); + fprintf (stderr, " %zu:", lastpos[j].index); prtok (d->tokens[lastpos[j].index]); } putc ('\n', stderr); @@ -2554,12 +2595,12 @@ dfaanalyze (struct dfa *d, int searchflag) || d->tokens[i] >= CSET) { #ifdef DEBUG - fprintf (stderr, "follows(%zd:", i); + fprintf (stderr, "follows(%zu:", i); prtok (d->tokens[i]); fprintf (stderr, "):"); for (j = d->follows[i].nelem; j-- > 0;) { - fprintf (stderr, " %zd:", d->follows[i].elems[j].index); + fprintf (stderr, " %zu:", d->follows[i].elems[j].index); prtok (d->tokens[d->follows[i].elems[j].index]); } putc ('\n', stderr); @@ -2580,13 +2621,10 @@ dfaanalyze (struct dfa *d, int searchflag) separate_contexts = state_separate_contexts (&merged); if (separate_contexts & CTX_NEWLINE) state_index (d, &merged, CTX_NEWLINE); - d->initstate_others = d->min_trcount + d->initstate_notbol = d->min_trcount = state_index (d, &merged, separate_contexts ^ CTX_ANY); if (separate_contexts & CTX_LETTER) - d->initstate_letter = d->min_trcount - = state_index (d, &merged, CTX_LETTER); - else - d->initstate_letter = d->initstate_others; + d->min_trcount = state_index (d, &merged, CTX_LETTER); d->min_trcount++; free (posalloc); @@ -2626,7 +2664,7 @@ dfaanalyze (struct dfa *d, int searchflag) If after comparing with every group there are characters remaining in C, create a new group labeled with the characters of C and insert this position in that group. */ -void +static void dfastate (state_num s, struct dfa *d, state_num trans[]) { leaf_set grps[NOTCHAR]; /* As many as will ever be needed. */ @@ -2649,6 +2687,10 @@ dfastate (state_num s, struct dfa *d, state_num trans[]) bool next_isnt_1st_byte = false; /* We can't add state0. */ size_t i, j, k; +#ifdef DEBUG + fprintf (stderr, "build state %td\n", s); +#endif + zeroset (matches); for (i = 0; i < d->states[s].elems.nelem; ++i) @@ -2658,23 +2700,31 @@ dfastate (state_num s, struct dfa *d, state_num trans[]) setbit (d->tokens[pos.index], matches); else if (d->tokens[pos.index] >= CSET) copyset (d->charclasses[d->tokens[pos.index] - CSET], matches); - else + else if (d->multibyte && d->tokens[pos.index] == ANYCHAR) { - if (d->tokens[pos.index] == MBCSET - || d->tokens[pos.index] == ANYCHAR) + /* ANYCHAR must match a single character, so put it to + D->states[s].mbps which contains the positions which can + match with a single character not a byte. If all + positions with ANYCHAR do not depend on the context of + the next character, put its follows instead to + D->states[s].mbps to optimize. */ + if (d->states[s].curr_dependent) { - /* MB_CUR_MAX > 1 */ - if (d->tokens[pos.index] == MBCSET) - d->states[s].has_mbcset = true; - /* ANYCHAR and MBCSET must match with a single character, so we - must put it to d->states[s].mbps, which contains the positions - which can match with a single character not a byte. */ if (d->states[s].mbps.nelem == 0) alloc_position_set (&d->states[s].mbps, 1); - insert (pos, &(d->states[s].mbps)); + insert (pos, &d->states[s].mbps); + } + else if (SUCCEEDS_IN_CONTEXT (pos.constraint, + d->states[s].context, CTX_ANY)) + { + if (d->states[s].mbps.nelem == 0) + alloc_position_set (&d->states[s].mbps, 1); + for (j = 0; j < d->follows[pos.index].nelem; j++) + insert (d->follows[pos.index].elems[j], &d->states[s].mbps); } - continue; } + else + continue; /* Some characters may need to be eliminated from matches because they fail in the current context. */ @@ -2683,15 +2733,15 @@ dfastate (state_num s, struct dfa *d, state_num trans[]) if (!SUCCEEDS_IN_CONTEXT (pos.constraint, d->states[s].context, CTX_NEWLINE)) for (j = 0; j < CHARCLASS_WORDS; ++j) - matches[j] &= ~newline[j]; + matches[j] &= ~d->syntax.newline[j]; if (!SUCCEEDS_IN_CONTEXT (pos.constraint, d->states[s].context, CTX_LETTER)) for (j = 0; j < CHARCLASS_WORDS; ++j) - matches[j] &= ~letters[j]; + matches[j] &= ~d->syntax.letters[j]; if (!SUCCEEDS_IN_CONTEXT (pos.constraint, d->states[s].context, CTX_NONE)) for (j = 0; j < CHARCLASS_WORDS; ++j) - matches[j] &= letters[j] | newline[j]; + matches[j] &= d->syntax.letters[j] | d->syntax.newline[j]; /* If there are no characters left, there's no point in going on. */ for (j = 0; j < CHARCLASS_WORDS && !matches[j]; ++j) @@ -2700,6 +2750,16 @@ dfastate (state_num s, struct dfa *d, state_num trans[]) continue; } +#ifdef DEBUG + fprintf (stderr, " nextpos %zu:", pos.index); + prtok (d->tokens[pos.index]); + fprintf (stderr, " of"); + for (j = 0; j < NOTCHAR; j++) + if (tstbit (j, matches)) + fprintf (stderr, " 0x%02zx", j); + fprintf (stderr, "\n"); +#endif + for (j = 0; j < ngrps; ++j) { /* If matches contains a single character only, and the current @@ -2724,7 +2784,7 @@ dfastate (state_num s, struct dfa *d, state_num trans[]) /* Even an optimizing compiler can't know this for sure. */ charclass_word match = matches[k], label = labels[j][k]; - leftoversf |= leftovers[k] = ~match & label; + leftoversf |= leftovers[k] = label & ~match; matchesf |= matches[k] = match & ~label; } @@ -2786,8 +2846,8 @@ dfastate (state_num s, struct dfa *d, state_num trans[]) state_letter = state; for (i = 0; i < NOTCHAR; ++i) - trans[i] = (IS_WORD_CONSTITUENT (i)) ? state_letter : state; - trans[eolbyte] = state_newline; + trans[i] = unibyte_word_constituent (i) ? state_letter : state; + trans[d->syntax.eolbyte] = state_newline; } else for (i = 0; i < NOTCHAR; ++i) @@ -2843,11 +2903,11 @@ dfastate (state_num s, struct dfa *d, state_num trans[]) } /* Find out if the new state will want any context information. */ - possible_contexts = charclass_context (labels[i]); + possible_contexts = charclass_context (d, labels[i]); separate_contexts = state_separate_contexts (&follows); /* Find the state(s) corresponding to the union of the follows. */ - if ((separate_contexts & possible_contexts) != possible_contexts) + if (possible_contexts & ~separate_contexts) state = state_index (d, &follows, separate_contexts ^ CTX_ANY); else state = -1; @@ -2860,6 +2920,29 @@ dfastate (state_num s, struct dfa *d, state_num trans[]) else state_letter = state; +#ifdef DEBUG + fprintf (stderr, "group %zu\n nextpos:", i); + for (j = 0; j < grps[i].nelem; ++j) + { + fprintf (stderr, " %zu:", grps[i].elems[j]); + prtok (d->tokens[grps[i].elems[j]]); + } + fprintf (stderr, "\n follows:"); + for (j = 0; j < follows.nelem; ++j) + { + fprintf (stderr, " %zu:", follows.elems[j].index); + prtok (d->tokens[follows.elems[j].index]); + } + fprintf (stderr, "\n states:"); + if (possible_contexts & CTX_NEWLINE) + fprintf (stderr, " CTX_NEWLINE:%td", state_newline); + if (possible_contexts & CTX_LETTER) + fprintf (stderr, " CTX_LETTER:%td", state_letter); + if (possible_contexts & CTX_NONE) + fprintf (stderr, " CTX_NONE:%td", state); + fprintf (stderr, "\n"); +#endif + /* Set the transitions for each character in the current label. */ for (j = 0; j < CHARCLASS_WORDS; ++j) for (k = 0; k < CHARCLASS_WORD_BITS; ++k) @@ -2867,15 +2950,26 @@ dfastate (state_num s, struct dfa *d, state_num trans[]) { int c = j * CHARCLASS_WORD_BITS + k; - if (c == eolbyte) + if (c == d->syntax.eolbyte) trans[c] = state_newline; - else if (IS_WORD_CONSTITUENT (c)) + else if (unibyte_word_constituent (c)) trans[c] = state_letter; else if (c < NOTCHAR) trans[c] = state; } } +#ifdef DEBUG + fprintf (stderr, "trans table %td", s); + for (i = 0; i < NOTCHAR; ++i) + { + if (!(i & 0xf)) + fprintf (stderr, "\n"); + fprintf (stderr, " %2td", trans[i]); + } + fprintf (stderr, "\n"); +#endif + for (i = 0; i < ngrps; ++i) free (grps[i].elems); free (follows.elems); @@ -2899,10 +2993,20 @@ realloc_trans_if_necessary (struct dfa *d, state_num new_state) d->fails = xnrealloc (d->fails, newalloc, sizeof *d->fails); d->success = xnrealloc (d->success, newalloc, sizeof *d->success); d->newlines = xnrealloc (d->newlines, newalloc, sizeof *d->newlines); + if (d->multibyte) + { + realtrans = d->mb_trans ? d->mb_trans - 1 : NULL; + realtrans = xnrealloc (realtrans, newalloc1, sizeof *realtrans); + if (oldalloc == 0) + realtrans[0] = NULL; + d->mb_trans = realtrans + 1; + } for (; oldalloc < newalloc; oldalloc++) { d->trans[oldalloc] = NULL; d->fails[oldalloc] = NULL; + if (d->multibyte) + d->mb_trans[oldalloc] = NULL; } } } @@ -2921,11 +3025,11 @@ build_state (state_num s, struct dfa *d) state_num i, maxstate; /* Set an upper limit on the number of transition tables that will ever - exist at once. 1024 is arbitrary. The idea is that the frequently + exist at once. MAX_TRCOUNT is arbitrary. The idea is that the frequently used transition tables will be quickly rebuilt, whereas the ones that were only needed once or twice will be cleared away. However, do not clear the initial D->min_trcount states, since they are always used. */ - if (d->trcount >= 1024) + if (MAX_TRCOUNT <= d->trcount) { for (i = d->min_trcount; i < d->tralloc; ++i) { @@ -2934,6 +3038,17 @@ build_state (state_num s, struct dfa *d) d->trans[i] = d->fails[i] = NULL; } d->trcount = d->min_trcount; + + if (d->multibyte) + { + for (i = d->min_trcount; i < d->tralloc; i++) + { + free (d->mb_trans[i]); + d->mb_trans[i] = NULL; + } + free (d->mb_trans[-1]); + d->mb_trans[-1] = NULL; + } } ++d->trcount; @@ -2961,8 +3076,8 @@ build_state (state_num s, struct dfa *d) /* Keep the newline transition in a special place so we can use it as a sentinel. */ - d->newlines[s] = trans[eolbyte]; - trans[eolbyte] = -1; + d->newlines[s] = trans[d->syntax.eolbyte]; + trans[d->syntax.eolbyte] = -1; if (ACCEPTING (s, *d)) d->fails[s] = trans; @@ -2972,330 +3087,154 @@ build_state (state_num s, struct dfa *d) /* Multibyte character handling sub-routines for dfaexec. */ -/* Return values of transit_state_singlebyte, and - transit_state_consume_1char. */ -typedef enum -{ - TRANSIT_STATE_IN_PROGRESS, /* State transition has not finished. */ - TRANSIT_STATE_DONE, /* State transition has finished. */ - TRANSIT_STATE_END_BUFFER /* Reach the end of the buffer. */ -} status_transit_state; - /* Consume a single byte and transit state from 's' to '*next_state'. This function is almost same as the state transition routin in dfaexec. But state transition is done just once, otherwise matching succeed or reach the end of the buffer. */ -static status_transit_state -transit_state_singlebyte (struct dfa *d, state_num s, unsigned char const *p, - state_num * next_state) +static state_num +transit_state_singlebyte (struct dfa *d, state_num s, unsigned char const **pp) { state_num *t; - state_num works = s; - status_transit_state rval = TRANSIT_STATE_IN_PROGRESS; + if (**pp == d->syntax.eolbyte) + { + /* S is always an initial state in transit_state, so the + transition table for the state must have been built already. */ + assert (d->trans[s] || d->fails[s]); + + ++*pp; + return d->newlines[s]; + } - while (rval == TRANSIT_STATE_IN_PROGRESS) + if (d->trans[s]) + t = d->trans[s]; + else if (d->fails[s]) + t = d->fails[s]; + else { - if ((t = d->trans[works]) != NULL) - { - works = t[*p]; - rval = TRANSIT_STATE_DONE; - if (works < 0) - works = 0; - } - else if (works < 0) - works = 0; - else if (d->fails[works]) - { - works = d->fails[works][*p]; - rval = TRANSIT_STATE_DONE; - } + build_state (s, d); + if (d->trans[s]) + t = d->trans[s]; else { - build_state (works, d); + t = d->fails[s]; + assert (t); } } - *next_state = works; - return rval; -} -/* Match a "." against the current context. Return the length of the - match, in bytes. POS is the position of the ".". */ -static int -match_anychar (struct dfa *d, state_num s, position pos, - wint_t wc, size_t mbclen) -{ - int context; - - /* Check syntax bits. */ - if (wc == (wchar_t) eolbyte) - { - if (!(syntax_bits & RE_DOT_NEWLINE)) - return 0; - } - else if (wc == (wchar_t) '\0') - { - if (syntax_bits & RE_DOT_NOT_NULL) - return 0; - } - else if (wc == WEOF) - return 0; - - context = wchar_context (wc); - if (!SUCCEEDS_IN_CONTEXT (pos.constraint, d->states[s].context, context)) - return 0; - - return mbclen; + return t[*(*pp)++]; } -/* Match a bracket expression against the current context. - Return the length of the match, in bytes. - POS is the position of the bracket expression. */ -static int -match_mb_charset (struct dfa *d, state_num s, position pos, - char const *p, wint_t wc, size_t match_len) +/* Transit state from s, then return new state and update the pointer of + the buffer. This function is for a period operator which can match a + multi-byte character. */ +static state_num +transit_state (struct dfa *d, state_num s, unsigned char const **pp, + unsigned char const *end) { - size_t i; - bool match; /* Matching succeeded. */ - int op_len; /* Length of the operator. */ - char buffer[128]; - - /* Pointer to the structure to which we are currently referring. */ - struct mb_char_classes *work_mbc; - - int context; - - /* Check syntax bits. */ - if (wc == WEOF) - return 0; - - context = wchar_context (wc); - if (!SUCCEEDS_IN_CONTEXT (pos.constraint, d->states[s].context, context)) - return 0; - - /* Assign the current referring operator to work_mbc. */ - work_mbc = &(d->mbcsets[(d->multibyte_prop[pos.index]) >> 2]); - match = !work_mbc->invert; - - /* Match in range 0-255? */ - if (wc < NOTCHAR && work_mbc->cset != -1 - && tstbit (to_uchar (wc), d->charclasses[work_mbc->cset])) - goto charset_matched; + state_num s1; + wint_t wc; + int separate_contexts; + state_num state, state_newline, mb_index; + size_t i, j; - /* match with a character class? */ - for (i = 0; i < work_mbc->nch_classes; i++) - { - if (iswctype ((wint_t) wc, work_mbc->ch_classes[i])) - goto charset_matched; - } + int mbclen = mbs_to_wchar (&wc, (char const *) *pp, end - *pp, d); + int context = wc == d->syntax.eolbyte ? CTX_NEWLINE : CTX_NONE; + bool context_newline = context == CTX_NEWLINE; - strncpy (buffer, p, match_len); - buffer[match_len] = '\0'; + /* This state has some operators which can match a multibyte character. */ + d->mb_follows.nelem = 0; - /* match with an equivalence class? */ - for (i = 0; i < work_mbc->nequivs; i++) - { - op_len = strlen (work_mbc->equivs[i]); - strncpy (buffer, p, op_len); - buffer[op_len] = '\0'; - if (strcoll (work_mbc->equivs[i], buffer) == 0) - { - match_len = op_len; - goto charset_matched; - } - } + /* Calculate the state which can be reached from the state 's' by + consuming 'mbclen' single bytes from the buffer. */ + s1 = s; + for (i = 0; i < mbclen && 0 <= s; i++) + s = transit_state_singlebyte (d, s, pp); + *pp += mbclen - i; - /* match with a collating element? */ - for (i = 0; i < work_mbc->ncoll_elems; i++) + if (d->states[s1].curr_dependent) { - op_len = strlen (work_mbc->coll_elems[i]); - strncpy (buffer, p, op_len); - buffer[op_len] = '\0'; + if (s < 0) + d->mb_follows.nelem = 0; + else + copy (&d->states[s].elems, &d->mb_follows); - if (strcoll (work_mbc->coll_elems[i], buffer) == 0) + for (i = 0; i < d->states[s1].mbps.nelem; i++) { - match_len = op_len; - goto charset_matched; + if (!SUCCEEDS_IN_CONTEXT (d->states[s1].mbps.elems[i].constraint, + d->states[s1].context, context)) + continue; + for (j = 0; j < d->follows[d->states[s1].mbps.elems[i].index].nelem; + j++) + insert (d->follows[d->states[s1].mbps.elems[i].index].elems[j], + &d->mb_follows); } - } - /* match with a range? */ - for (i = 0; i < work_mbc->nranges; i++) - { - if (work_mbc->ranges[i].beg <= wc && wc <= work_mbc->ranges[i].end) - goto charset_matched; - } + separate_contexts = state_separate_contexts (&d->mb_follows); + if (context_newline && separate_contexts & CTX_NEWLINE) + s = state_index (d, &d->mb_follows, CTX_NEWLINE); + else + s = state_index (d, &d->mb_follows, separate_contexts ^ CTX_ANY); + realloc_trans_if_necessary (d, s); - /* match with a character? */ - for (i = 0; i < work_mbc->nchars; i++) - { - if (wc == work_mbc->chars[i]) - goto charset_matched; + return s; } - match = !match; - -charset_matched: - return match ? match_len : 0; -} - -/* Check whether each of 'd->states[s].mbps.elem' can match. Then return the - array which corresponds to 'd->states[s].mbps.elem'; each element of the - array contains the number of bytes with which the element can match. - - The caller MUST free the array which this function return. */ -static int * -check_matching_with_multibyte_ops (struct dfa *d, state_num s, - char const *p, wint_t wc, size_t mbclen) -{ - size_t i; - int *rarray; - - rarray = d->mb_match_lens; - for (i = 0; i < d->states[s].mbps.nelem; ++i) + /* If all positions which have ANYCHAR do not depend on the context + of the next character, calculate the next state with + pre-calculated follows and cache the result. */ + if (d->states[s1].mb_trindex < 0) { - position pos = d->states[s].mbps.elems[i]; - switch (d->tokens[pos.index]) + if (MAX_TRCOUNT <= d->mb_trcount) { - case ANYCHAR: - rarray[i] = match_anychar (d, s, pos, wc, mbclen); - break; - case MBCSET: - rarray[i] = match_mb_charset (d, s, pos, p, wc, mbclen); - break; - default: - break; /* cannot happen. */ + state_num s2; + for (s2 = -1; s2 < d->tralloc; s2++) + { + free (d->mb_trans[s2]); + d->mb_trans[s2] = NULL; + } + + for (i = 0; i < d->sindex; i++) + d->states[i].mb_trindex = -1; + d->mb_trcount = 0; } + d->states[s1].mb_trindex = d->mb_trcount++; } - return rarray; -} - -/* Consume a single character and enumerate all of the positions which can - be the next position from the state 's'. - - 'match_lens' is the input. It can be NULL, but it can also be the output - of check_matching_with_multibyte_ops for optimization. - - 'mbclen' and 'pps' are the output. 'mbclen' is the length of the - character consumed, and 'pps' is the set this function enumerates. */ -static status_transit_state -transit_state_consume_1char (struct dfa *d, state_num s, - unsigned char const **pp, - wint_t wc, size_t mbclen, - int *match_lens) -{ - size_t i, j; - int k; - state_num s1, s2; - status_transit_state rs = TRANSIT_STATE_DONE; - if (! match_lens && d->states[s].mbps.nelem != 0) - match_lens = check_matching_with_multibyte_ops (d, s, (char const *) *pp, - wc, mbclen); + mb_index = d->states[s1].mb_trindex * 2; - /* Calculate the state which can be reached from the state 's' by - consuming 'mbclen' single bytes from the buffer. */ - s1 = s; - for (k = 0; k < mbclen; k++) + if (! d->mb_trans[s]) { - s2 = s1; - rs = transit_state_singlebyte (d, s2, (*pp)++, &s1); + enum { TRANSPTR_SIZE = sizeof *d->mb_trans[s] }; + enum { TRANSALLOC_SIZE = 2 * MAX_TRCOUNT * TRANSPTR_SIZE }; + d->mb_trans[s] = xmalloc (TRANSALLOC_SIZE); + for (i = 0; i < 2 * MAX_TRCOUNT; i++) + d->mb_trans[s][i] = -1; } - copy (&d->states[s1].elems, &d->mb_follows); - - /* Add all of the positions which can be reached from 's' by consuming - a single character. */ - for (i = 0; i < d->states[s].mbps.nelem; i++) - { - if (match_lens[i] == mbclen) - for (j = 0; j < d->follows[d->states[s].mbps.elems[i].index].nelem; - j++) - insert (d->follows[d->states[s].mbps.elems[i].index].elems[j], - &d->mb_follows); - } - - /* FIXME: this return value is always ignored. */ - return rs; -} - -/* 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). */ -static state_num -transit_state (struct dfa *d, state_num s, unsigned char const **pp, - unsigned char const *end) -{ - state_num s1; - int mbclen; /* The length of current input multibyte character. */ - int maxlen = 0; - size_t i, j; - int *match_lens = NULL; - size_t nelem = d->states[s].mbps.nelem; /* Just a alias. */ - unsigned char const *p1 = *pp; - wint_t wc; - - if (nelem > 0) - /* This state has (a) multibyte operator(s). - We check whether each of them can match or not. */ - { - /* Note: caller must free the return value of this function. */ - mbclen = mbs_to_wchar (&wc, (char const *) *pp, end - *pp, d); - match_lens = check_matching_with_multibyte_ops (d, s, (char const *) *pp, - wc, mbclen); - - for (i = 0; i < nelem; i++) - /* Search the operator which match the longest string, - in this state. */ - { - if (match_lens[i] > maxlen) - maxlen = match_lens[i]; - } - } - - if (nelem == 0 || maxlen == 0) - /* This state has no multibyte operator which can match. - We need to check only one single byte character. */ + else { - status_transit_state rs; - rs = transit_state_singlebyte (d, s, *pp, &s1); - - /* We must update the pointer if state transition succeeded. */ - if (rs == TRANSIT_STATE_DONE) - ++*pp; - - return s1; + state = d->mb_trans[s][mb_index + context_newline]; + if (0 <= state) + return state; } - /* This state has some operators which can match a multibyte character. */ - d->mb_follows.nelem = 0; - - /* 'maxlen' may be longer than the length of a character, because it may - not be a character but a (multi character) collating element. - We enumerate all of the positions which 's' can reach by consuming - 'maxlen' bytes. */ - transit_state_consume_1char (d, s, pp, wc, mbclen, match_lens); - - s1 = state_index (d, &d->mb_follows, wchar_context (wc)); - realloc_trans_if_necessary (d, s1); + if (s < 0) + copy (&d->states[s1].mbps, &d->mb_follows); + else + merge (&d->states[s1].mbps, &d->states[s].elems, &d->mb_follows); - while (*pp - p1 < maxlen) - { - mbclen = mbs_to_wchar (&wc, (char const *) *pp, end - *pp, d); - transit_state_consume_1char (d, s1, pp, wc, mbclen, NULL); + separate_contexts = state_separate_contexts (&d->mb_follows); + state = state_index (d, &d->mb_follows, separate_contexts ^ CTX_ANY); + if (separate_contexts & CTX_NEWLINE) + state_newline = state_index (d, &d->mb_follows, CTX_NEWLINE); + else + state_newline = state; + realloc_trans_if_necessary (d, state_newline); - for (i = 0; i < nelem; i++) - { - if (match_lens[i] == *pp - p1) - for (j = 0; - j < d->follows[d->states[s1].mbps.elems[i].index].nelem; j++) - insert (d->follows[d->states[s1].mbps.elems[i].index].elems[j], - &d->mb_follows); - } + d->mb_trans[s][mb_index] = state; + d->mb_trans[s][mb_index + 1] = state_newline; - s1 = state_index (d, &d->mb_follows, wchar_context (wc)); - realloc_trans_if_necessary (d, s1); - } - return s1; + return context_newline ? state_newline : state; } /* The initial state may encounter a byte which is not a single byte character @@ -3306,15 +3245,20 @@ transit_state (struct dfa *d, state_num s, unsigned char const **pp, that are not a single byte character nor the first byte of a multibyte character. - Given DFA state d, use mbs_to_wchar to advance MBP until it reaches or - exceeds P. If WCP is non-NULL, set *WCP to the final wide character - processed, or if no wide character is processed, set it to WEOF. + Given DFA state d, use mbs_to_wchar to advance MBP until it reaches + or exceeds P, and return the advanced MBP. If WCP is non-NULL and + the result is greater than P, set *WCP to the final wide character + processed, or to WEOF if no wide character is processed. Otherwise, + if WCP is non-NULL, *WCP may or may not be updated. + Both P and MBP must be no larger than END. */ static unsigned char const * skip_remains_mb (struct dfa *d, unsigned char const *p, unsigned char const *mbp, char const *end, wint_t *wcp) { wint_t wc = WEOF; + if (d->syntax.never_trail[*p]) + return p; while (mbp < p) mbp += mbs_to_wchar (&wc, (char const *) mbp, end - (char const *) mbp, d); @@ -3323,31 +3267,35 @@ skip_remains_mb (struct dfa *d, unsigned char const *p, return mbp; } -/* Search through a buffer looking for a match to the given struct dfa. +/* Search through a buffer looking for a match to the struct dfa *D. Find the first occurrence of a string matching the regexp in the buffer, and the shortest possible version thereof. Return a pointer to the first character after the match, or NULL if none is found. BEGIN points to the beginning of the buffer, and END points to the first byte after its end. Note however that we store a sentinel byte (usually newline) in *END, so the actual buffer must be one byte longer. - When ALLOW_NL is nonzero, newlines may appear in the matching string. + When ALLOW_NL, newlines may appear in the matching string. If COUNT is non-NULL, increment *COUNT once for each newline processed. - Finally, if BACKREF is non-NULL set *BACKREF to indicate whether we - encountered a back-reference (1) or not (0). The caller may use this - to decide whether to fall back on a backtracking matcher. - If MULTIBYTE, the input consists of multibyte characters and/or - encoding-error bytes. Otherwise, the input consists of single-byte - characters. */ + encoding-error bytes. Otherwise, it consists of single-byte characters. + Here is the list of features that make this DFA matcher punt: + - [M-N] range in non-simple locale: regex is up to 25% faster on [a-z] + - [^...] in non-simple locale + - [[=foo=]] or [[.foo.]] + - [[:alpha:]] etc. in multibyte locale (except [[:digit:]] works OK) + - back-reference: (.)\1 + - word-delimiter in multibyte locale: \<, \>, \b, \B + See using_simple_locale for the definition of "simple locale". */ + static inline char * -dfaexec_main (struct dfa *d, char const *begin, char *end, - int allow_nl, size_t *count, int *backref, bool multibyte) +dfaexec_main (struct dfa *d, char const *begin, char *end, bool allow_nl, + size_t *count, bool multibyte) { state_num s, s1; /* Current state. */ unsigned char const *p, *mbp; /* Current input character. */ state_num **trans, *t; /* Copy of d->trans so it can be optimized into a register. */ - unsigned char eol = eolbyte; /* Likewise for eolbyte. */ + unsigned char eol = d->syntax.eolbyte; /* Likewise for eolbyte. */ unsigned char saved_end; size_t nlcount = 0; @@ -3366,11 +3314,8 @@ dfaexec_main (struct dfa *d, char const *begin, char *end, if (multibyte) { memset (&d->mbs, 0, sizeof d->mbs); - if (! d->mb_match_lens) - { - d->mb_match_lens = xnmalloc (d->nleaves, sizeof *d->mb_match_lens); - alloc_position_set (&d->mb_follows, d->nleaves); - } + if (d->mb_follows.alloc == 0) + alloc_position_set (&d->mb_follows, d->nleaves); } for (;;) @@ -3407,84 +3352,53 @@ dfaexec_main (struct dfa *d, char const *begin, char *end, transit to another initial state after skip. */ if (p < mbp) { - int context = wchar_context (wc); - if (context == CTX_LETTER) - s = d->initstate_letter; - else - /* It's CTX_NONE. CTX_NEWLINE cannot happen, - as we assume that a newline is always a - single byte character. */ - s = d->initstate_others; + /* It's CTX_LETTER or CTX_NONE. CTX_NEWLINE + cannot happen, as we assume that a newline + is always a single byte character. */ + s1 = s = d->initstate_notbol; p = mbp; - s1 = s; } } } - if (d->states[s].mbps.nelem == 0) + if (d->states[s].mbps.nelem == 0 || (*p == eol && !allow_nl) + || (*p == '\n' && !(d->syntax.syntax_bits & RE_DOT_NEWLINE)) + || (*p == '\0' && (d->syntax.syntax_bits & RE_DOT_NOT_NULL)) + || (char *) p >= end) { + /* If an input character does not match ANYCHAR, do it + like a single-byte character. */ s = t[*p++]; - continue; } - - /* The following code is used twice. - Use a macro to avoid the risk that they diverge. */ -#define State_transition() \ - do { \ - /* Falling back to the glibc matcher in this case gives \ - better performance (up to 25% better on [a-z], for \ - example) and enables support for collating symbols and \ - equivalence classes. */ \ - if (d->states[s].has_mbcset && backref) \ - { \ - *backref = 1; \ - goto done; \ - } \ - \ - /* Can match with a multibyte character (and multi-character \ - collating element). Transition table might be updated. */ \ - s = transit_state (d, s, &p, (unsigned char *) end); \ - \ - /* If previous character is newline after a transition \ - for ANYCHAR or MBCSET in non-UTF8 multibyte locales, \ - check whether current position is beyond the end of \ - the input buffer. Also, transit to initial state if \ - !ALLOW_NL, even if RE_DOT_NEWLINE is set. */ \ - if (p[-1] == eol) \ - { \ - if ((char *) p > end) \ - { \ - p = NULL; \ - goto done; \ - } \ - \ - nlcount++; \ - \ - if (!allow_nl) \ - s = 0; \ - } \ - \ - mbp = p; \ - trans = d->trans; \ - } while (0) - - State_transition(); + else + { + s = transit_state (d, s, &p, (unsigned char *) end); + if (s >= 0 && p[-1] == eol) + nlcount++; + mbp = p; + trans = d->trans; + } } } else { - if (s == 0 && (t = trans[s]) != NULL) + if (s == 0) { - while (t[*p] == 0) - p++; - s1 = 0; - s = t[*p++]; + t = trans[s]; + if (t) + { + while (t[*p] == 0) + p++; + s1 = 0; + s = t[*p++]; + } } while ((t = trans[s]) != NULL) { s1 = t[*p++]; - if ((t = trans[s1]) == NULL) + t = trans[s1]; + if (! t) { state_num tmp = s; s = s1; @@ -3510,26 +3424,34 @@ dfaexec_main (struct dfa *d, char const *begin, char *end, s = allow_nl ? d->newlines[s1] : 0; } - - if (d->fails[s]) + else if (d->fails[s]) { - if (d->success[s] & sbit[*p]) - { - if (backref) - *backref = d->states[s].has_backref; - goto done; - } + if (d->success[s] & d->syntax.sbit[*p]) + goto done; s1 = s; - if (multibyte) - State_transition(); + if (!multibyte || d->states[s].mbps.nelem == 0 + || (*p == eol && !allow_nl) + || (*p == '\n' && !(d->syntax.syntax_bits & RE_DOT_NEWLINE)) + || (*p == '\0' && (d->syntax.syntax_bits & RE_DOT_NOT_NULL)) + || (char *) p >= end) + { + /* If a input character does not match ANYCHAR, do it + like a single-byte character. */ + s = d->fails[s][*p++]; + } else - s = d->fails[s][*p++]; + { + s = transit_state (d, s, &p, (unsigned char *) end); + if (s >= 0 && p[-1] == eol) + nlcount++; + mbp = p; + trans = d->trans; + } } else { - if (!d->trans[s]) - build_state (s, d); + build_state (s, d); trans = d->trans; } } @@ -3541,29 +3463,40 @@ dfaexec_main (struct dfa *d, char const *begin, char *end, return (char *) p; } -/* Specialized versions of dfaexec_main for multibyte and single-byte - cases. This is for performance. */ +/* Specialized versions of dfaexec for multibyte and single-byte cases. + This is for performance, as dfaexec_main is an inline function. */ static char * dfaexec_mb (struct dfa *d, char const *begin, char *end, - int allow_nl, size_t *count, int *backref) + bool allow_nl, size_t *count, bool *backref) { - return dfaexec_main (d, begin, end, allow_nl, count, backref, true); + return dfaexec_main (d, begin, end, allow_nl, count, true); } static char * dfaexec_sb (struct dfa *d, char const *begin, char *end, - int allow_nl, size_t *count, int *backref) + bool allow_nl, size_t *count, bool *backref) { - return dfaexec_main (d, begin, end, allow_nl, count, backref, false); + return dfaexec_main (d, begin, end, allow_nl, count, false); } -/* Like dfaexec_main (D, BEGIN, END, ALLOW_NL, COUNT, BACKREF, D->multibyte), - but faster. */ +/* Always set *BACKREF and return BEGIN. Use this wrapper for + any regexp that uses a construct not supported by this code. */ +static char * +dfaexec_noop (struct dfa *d, char const *begin, char *end, + bool allow_nl, size_t *count, bool *backref) +{ + *backref = true; + return (char *) begin; +} + +/* Like dfaexec_main (D, BEGIN, END, ALLOW_NL, COUNT, D->multibyte), + but faster and set *BACKREF if the DFA code does not support this + regexp usage. */ char * dfaexec (struct dfa *d, char const *begin, char *end, - int allow_nl, size_t *count, int *backref) + bool allow_nl, size_t *count, bool *backref) { return d->dfaexec (d, begin, end, allow_nl, count, backref); } @@ -3588,37 +3521,43 @@ free_mbdata (struct dfa *d) free (d->multibyte_prop); for (i = 0; i < d->nmbcsets; ++i) - { - size_t j; - struct mb_char_classes *p = &(d->mbcsets[i]); - free (p->chars); - free (p->ch_classes); - free (p->ranges); - - for (j = 0; j < p->nequivs; ++j) - free (p->equivs[j]); - free (p->equivs); - - for (j = 0; j < p->ncoll_elems; ++j) - free (p->coll_elems[j]); - free (p->coll_elems); - } + free (d->mbcsets[i].chars); free (d->mbcsets); free (d->mb_follows.elems); - free (d->mb_match_lens); - d->mb_match_lens = NULL; + + if (d->mb_trans) + { + state_num s; + for (s = -1; s < d->tralloc; s++) + free (d->mb_trans[s]); + free (d->mb_trans - 1); + } } -/* Initialize the components of a dfa that the other routines don't - initialize for themselves. */ -void -dfainit (struct dfa *d) +/* Return true if every construct in D is supported by this DFA matcher. */ +static bool _GL_ATTRIBUTE_PURE +dfa_supported (struct dfa const *d) { - memset (d, 0, sizeof *d); - d->multibyte = MB_CUR_MAX > 1; - d->dfaexec = d->multibyte ? dfaexec_mb : dfaexec_sb; - d->fast = !d->multibyte; + size_t i; + for (i = 0; i < d->tindex; i++) + { + switch (d->tokens[i]) + { + case BEGWORD: + case ENDWORD: + case LIMWORD: + case NOTLIMWORD: + if (!d->multibyte) + continue; + /* fallthrough */ + + case BACKREF: + case MBCSET: + return false; + } + } + return true; } static void @@ -3627,7 +3566,7 @@ dfaoptimize (struct dfa *d) size_t i; bool have_backref = false; - if (!using_utf8 ()) + if (!using_utf8) return; for (i = 0; i < d->tindex; ++i) @@ -3659,6 +3598,7 @@ dfaoptimize (struct dfa *d) free_mbdata (d); d->multibyte = false; d->dfaexec = dfaexec_sb; + d->fast = true; } static void @@ -3684,7 +3624,6 @@ dfassbuild (struct dfa *d) sup->fails = NULL; sup->success = NULL; sup->newlines = NULL; - sup->musts = NULL; sup->charclasses = xnmalloc (sup->calloc, sizeof *sup->charclasses); if (d->cindex) @@ -3719,10 +3658,8 @@ dfassbuild (struct dfa *d) if (d->multibyte) { /* These constraints aren't supported in a multibyte locale. - Ignore them in the superset DFA, and treat them as - backreferences in the main DFA. */ + Ignore them in the superset DFA. */ sup->tokens[j++] = EMPTY; - d->tokens[i] = BACKREF; break; } default: @@ -3746,15 +3683,21 @@ dfassbuild (struct dfa *d) /* Parse and analyze a single string of the given length. */ void -dfacomp (char const *s, size_t len, struct dfa *d, int searchflag) +dfacomp (char const *s, size_t len, struct dfa *d, bool searchflag) { - dfainit (d); - dfambcache (d); dfaparse (s, len, d); - dfamust (d); dfassbuild (d); - dfaoptimize (d); - dfaanalyze (d, searchflag); + + if (dfa_supported (d)) + { + dfaoptimize (d); + dfaanalyze (d, searchflag); + } + else + { + d->dfaexec = dfaexec_noop; + } + if (d->superset) { d->fast = true; @@ -3767,7 +3710,6 @@ void dfafree (struct dfa *d) { size_t i; - struct dfamust *dm, *ndm; free (d->charclasses); free (d->tokens); @@ -3803,13 +3745,6 @@ dfafree (struct dfa *d) free (d->success); } - for (dm = d->musts; dm; dm = ndm) - { - ndm = dm->next; - free (dm->must); - free (dm); - } - if (d->superset) dfafree (d->superset); } @@ -3830,9 +3765,7 @@ dfafree (struct dfa *d) sequences that must constitute the match ("is") When we get to the root of the tree, we use one of the longest of its - calculated "in" sequences as our answer. The sequence we find is returned in - d->must (where "d" is the single argument passed to "dfamust"); - the length of the sequence is returned in d->mustn. + calculated "in" sequences as our answer. The sequences calculated for the various types of node (in pseudo ANSI c) are shown below. "p" is the operand of unary operators (and the left-hand @@ -4022,13 +3955,13 @@ struct must }; static must * -allocmust (must *mp) +allocmust (must *mp, size_t size) { must *new_mp = xmalloc (sizeof *new_mp); new_mp->in = xzalloc (sizeof *new_mp->in); - new_mp->left = xzalloc (2); - new_mp->right = xzalloc (2); - new_mp->is = xzalloc (2); + new_mp->left = xzalloc (size); + new_mp->right = xzalloc (size); + new_mp->is = xzalloc (size); new_mp->begline = false; new_mp->endline = false; new_mp->prev = mp; @@ -4056,16 +3989,19 @@ freemust (must *mp) free (mp); } -static void -dfamust (struct dfa *d) +struct dfamust * +dfamust (struct dfa const *d) { must *mp = NULL; char const *result = ""; - size_t ri; - size_t i; + size_t i, ri; bool exact = false; bool begline = false; bool endline = false; + size_t rj; + bool need_begline = false; + bool need_endline = false; + bool case_fold_unibyte = d->syntax.case_fold && MB_CUR_MAX == 1; struct dfamust *dm; for (ri = 0; ri < d->tindex; ++ri) @@ -4074,12 +4010,14 @@ dfamust (struct dfa *d) switch (t) { case BEGLINE: - mp = allocmust (mp); + mp = allocmust (mp, 2); mp->begline = true; + need_begline = true; break; case ENDLINE: - mp = allocmust (mp); + mp = allocmust (mp, 2); mp->endline = true; + need_endline = true; break; case LPAREN: case RPAREN: @@ -4093,7 +4031,7 @@ dfamust (struct dfa *d) case BACKREF: case ANYCHAR: case MBCSET: - mp = allocmust (mp); + mp = allocmust (mp, 2); break; case STAR: @@ -4156,7 +4094,9 @@ dfamust (struct dfa *d) result = mp->in[i]; if (STREQ (result, mp->is)) { - exact = true; + if ((!need_begline || mp->begline) && (!need_endline + || mp->endline)) + exact = true; begline = mp->begline; endline = mp->endline; } @@ -4210,7 +4150,6 @@ dfamust (struct dfa *d) goto done; default: - mp = allocmust (mp); if (CSET <= t) { /* If T is a singleton, or if case-folding in a unibyte @@ -4223,24 +4162,53 @@ dfamust (struct dfa *d) if (tstbit (j, *ccl)) break; if (! (j < NOTCHAR)) - break; + { + mp = allocmust (mp, 2); + break; + } t = j; while (++j < NOTCHAR) if (tstbit (j, *ccl) - && ! (case_fold && !d->multibyte + && ! (case_fold_unibyte && toupper (j) == toupper (t))) break; if (j < NOTCHAR) - break; + { + mp = allocmust (mp, 2); + break; + } + } + + rj = ri + 2; + if (d->tokens[ri + 1] == CAT) + { + for (; rj < d->tindex - 1; rj += 2) + { + if ((rj != ri && (d->tokens[rj] <= 0 + || NOTCHAR <= d->tokens[rj])) + || d->tokens[rj + 1] != CAT) + break; + } } + mp = allocmust (mp, ((rj - ri) >> 1) + 1); mp->is[0] = mp->left[0] = mp->right[0] - = case_fold && !d->multibyte ? toupper (t) : t; - mp->is[1] = mp->left[1] = mp->right[1] = '\0'; - mp->in = enlist (mp->in, mp->is, 1); + = case_fold_unibyte ? toupper (t) : t; + + for (i = 1; ri + 2 < rj; i++) + { + ri += 2; + t = d->tokens[ri]; + mp->is[i] = mp->left[i] = mp->right[i] + = case_fold_unibyte ? toupper (t) : t; + } + mp->is[i] = mp->left[i] = mp->right[i] = '\0'; + mp->in = enlist (mp->in, mp->is, i); break; } } -done: + done:; + + dm = NULL; if (*result) { dm = xmalloc (sizeof *dm); @@ -4248,8 +4216,6 @@ done: dm->begline = begline; dm->endline = endline; dm->must = xstrdup (result); - dm->next = d->musts; - d->musts = dm; } while (mp) @@ -4258,18 +4224,34 @@ done: freemust (mp); mp = prev; } + + return dm; +} + +void +dfamustfree (struct dfamust *dm) +{ + free (dm->must); + free (dm); } struct dfa * dfaalloc (void) { - return xmalloc (sizeof (struct dfa)); + struct dfa *d = xcalloc (1, sizeof (struct dfa)); + d->multibyte = MB_CUR_MAX > 1; + d->dfaexec = d->multibyte ? dfaexec_mb : dfaexec_sb; + d->fast = !d->multibyte; + d->lexstate.cur_mb_len = 1; + return d; } -struct dfamust *_GL_ATTRIBUTE_PURE -dfamusts (struct dfa const *d) +void +dfa_init (void) { - return d->musts; + check_utf8 (); + check_unibyte_c (); + init_mbrtowc_cache (); } /* vim:set shiftwidth=2: */ diff --git a/dfa.h b/dfa.h index 7902781..02f56f4 100644 --- a/dfa.h +++ b/dfa.h @@ -1,5 +1,5 @@ /* dfa.h - declarations for GNU deterministic regexp compiler - Copyright (C) 1988, 1998, 2007, 2009-2015 Free Software Foundation, Inc. + Copyright (C) 1988, 1998, 2007, 2009-2016 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 @@ -26,6 +26,8 @@ #endif /* HAVE_STDBOOL_H */ #include +#define _GL_ATTRIBUTE_MALLOC + /* Element of a list of strings, at least one of which is known to appear in any R.E. matching the DFA. */ struct dfamust @@ -34,7 +36,6 @@ struct dfamust bool begline; bool endline; char *must; - struct dfamust *next; }; /* The dfa structure. It is completely opaque. */ @@ -45,20 +46,23 @@ struct dfa; /* Allocate a struct dfa. The struct dfa is completely opaque. The returned pointer should be passed directly to free() after calling dfafree() on it. */ -extern struct dfa *dfaalloc (void); +extern struct dfa *dfaalloc (void) _GL_ATTRIBUTE_MALLOC; + +/* Build and return the struct dfamust from the given struct dfa. */ +extern struct dfamust *dfamust (struct dfa const *); -/* Return the dfamusts associated with a dfa. */ -extern struct dfamust *dfamusts (struct dfa const *); +/* Free the storage held by the components of a struct dfamust. */ +extern void dfamustfree (struct dfamust *); -/* dfasyntax() takes three arguments; the first sets the syntax bits described - earlier in this file, the second sets the case-folding flag, and the - third specifies the line terminator. */ -extern void dfasyntax (reg_syntax_t, int, unsigned char); +/* dfasyntax() takes four arguments; the first is the dfa to operate on, the + second sets the syntax bits described earlier in this file, the third sets + the case-folding flag, and the fourth specifies the line terminator. */ +extern void dfasyntax (struct dfa *, reg_syntax_t, bool, unsigned char); /* Compile the given string of the given length into the given struct dfa. Final argument is a flag specifying whether to build a searching or an exact matcher. */ -extern void dfacomp (char const *, size_t, struct dfa *, int); +extern void dfacomp (char const *, size_t, struct dfa *, bool); /* Search through a buffer looking for a match to the given struct dfa. Find the first occurrence of a string matching the regexp in the @@ -67,13 +71,13 @@ extern void dfacomp (char const *, size_t, struct dfa *, int); points to the beginning of the buffer, and END points to the first byte after its end. Note however that we store a sentinel byte (usually newline) in *END, so the actual buffer must be one byte longer. - When NEWLINE is nonzero, newlines may appear in the matching string. + When ALLOW_NL is true, newlines may appear in the matching string. If COUNT is non-NULL, increment *COUNT once for each newline processed. Finally, if BACKREF is non-NULL set *BACKREF to indicate whether we - encountered a back-reference (1) or not (0). The caller may use this - to decide whether to fall back on a backtracking matcher. */ + encountered a back-reference. The caller can use this to decide + whether to fall back on a backtracking matcher. */ extern char *dfaexec (struct dfa *d, char const *begin, char *end, - int newline, size_t *count, int *backref); + bool allow_nl, size_t *count, bool *backref); /* Return a superset for D. The superset matches everything that D matches, along with some other strings (though the latter should be @@ -87,22 +91,6 @@ extern bool dfaisfast (struct dfa const *) _GL_ATTRIBUTE_PURE; /* Free the storage held by the components of a struct dfa. */ extern void dfafree (struct dfa *); -/* Entry points for people who know what they're doing. */ - -/* Initialize the components of a struct dfa. */ -extern void dfainit (struct dfa *); - -/* Incrementally parse a string of given length into a struct dfa. */ -extern void dfaparse (char const *, size_t, struct dfa *); - -/* Analyze a parsed regexp; second argument tells whether to build a searching - or an exact matcher. */ -extern void dfaanalyze (struct dfa *, int); - -/* Compute, for each possible character, the transitions out of a given - state, storing them in an array of integers. */ -extern void dfastate (ptrdiff_t, struct dfa *, ptrdiff_t []); - /* Error handling. */ /* dfawarn() is called by the regexp routines whenever a regex is compiled @@ -116,4 +104,7 @@ extern void dfawarn (const char *); The user must supply a dfaerror. */ extern _Noreturn void dfaerror (const char *); -extern int using_utf8 (void); +extern bool dfa_using_utf8 (void) _GL_ATTRIBUTE_PURE; + +/* This must be called before calling any of the above dfa*() functions. */ +extern void dfa_init (void); diff --git a/doc/ChangeLog b/doc/ChangeLog index f554d30..1daa869 100644 --- a/doc/ChangeLog +++ b/doc/ChangeLog @@ -1,3 +1,248 @@ +2016-08-25 Arnold D. Robbins + + * 4.1.4: Release tar ball made. + +2016-08-24 Arnold D. Robbins + + * wordlist: Add more words. + +2016-08-23 Arnold D. Robbins + + * Makefile.am (EXTRA_DIST): Add new file, wordlist. + (spell): New target. + * wordlist: New file. + * gawktexi.in: Fix typos, adjust update date. + * awkcard.in: Update copyright years. + +2016-08-01 Arnold D. Robbins + + * gawktexi.in: Mark DJGPP port as unsupported. + +2016-07-24 Arnold D. Robbins + + * gawktexi.in: Fix a typo. Thanks to Marco Curreli for reporting. + +2016-07-18 Arnold D. Robbins + + * gawktexi.in: Fix a typo. Thanks to Antonio Colombo for reporting. + +2016-07-17 Arnold D. Robbins + + * gawktexi.in: Document GAWK_LOCALE_DIR env var and also to not + use LANGUAGE env var. + +2016-07-12 Arnold D. Robbins + + * gawktexi.in (Auto-set): Add example use of multiply function. + +2016-06-10 Arnold D. Robbins + + * gawktexi.in: Fix a typo, and replace hard-coded "section" with + @value{SECTION} where appropriate. Thanks to Antonio + Giovanni Colombo for the reports. + (UPDATE-MONTH, PATCHLEVEL): Update to current before release. + * awkcard.in: Update version. + +2016-05-25 Arnold D. Robbins + + * gawktexi.in: Typo fix in extension section, thanks to + Manuel Collado . + +2016-05-02 Andrew J. Schorr + + * gawktexi.in: Document new CPP defines gawk_api_major_version and + gawk_api_minor_version. + +2016-04-13 Arnold D. Robbins + + * gawkinet.texi: Some general cleanups. Remove stuff commented + out since 2001, index RFCs, change function name convention to + match main gawktexi.in. Update the update month. + +2016-04-04 Arnold D. Robbins + + * gawktexi.in, gawkinet.texi: Enable use of braces in + indexes. Requires Texinfo 6.0 or later. + +2016-04-02 Arnold D. Robbins + + * gawktexi.in (Two-way I/O): Document that closing the "from" + end waits for the process to exit, so it's not such a great idea. + +2016-03-21 Arnold D. Robbins + + * gawkinet.texi: Update UDP client and discussion, update + modification dates and gawk versions. + +2016-03-11 Arnold D. Robbins + + * gawktexi.in: Improve system() return values documentation. + +2016-03-07 Arnold D. Robbins + + * gawktexi.in: Document system() return values. + * gawk.1: Add a pointer to the manual about same. + +2016-02-23 Arnold D. Robbins + + * sidebar.awk: Globally replace [[:space:]] with [ \t] so that + it will work with old versions of mawk (as found, boo!, on many + Debian-based distributions). Thanks to Yehezkel Bernat for + discovering and reporting the issue. + +2016-02-20 Arnold D. Robbins + + * gawktexi.in (Bracket Expressions): Add a small note about + Unicode in bracket expressions. + +2016-02-18 Arnold D. Robbins + + * gawktexi.in: Fixes in wc.awk and in cut.awk. Thanks to David Ward, + dlward134@gmail.com. Added an example of use of rewind(), also + per suggestion from David Ward. + * gawktexi.in: Update info about Texinfo versions. + +2016-02-14 Arnold D. Robbins + + * gawktexi.in: Revise for use with Texinfo 6.1. + Remove ` @c' at the end of inline docbook constructs. + Remove special @DB*REF macros, not needed anymore. + Use @sup for superscripts where possible. + * texinfo.tex: Updated. + +2016-02-03 Andrew J. Schorr + + * gawktexi.in (Command-Line Options): Change wording of -M description + to say "Select" instead of "Force". + (Arbitrary-Precision Arithmetic Features): Tweak the wording to make + it clear that MPFR is not used unless the -M option is supplied. + +2016-02-03 Arnold D. Robbins + + * gawktexi.in (VMS Running): Improve the Texinfo usage. + +2016-01-31 John E. Malmberg + + * gawktexi.in (VMS Running): Add instructions on how to redirect + gawk data to a VMS command. + +2016-01-18 Arnold D. Robbins + + * gawktexi.in (Bracket Expressions): Document that '[', '.' and + '*' are literal inside bracket expressions. + (Two-way I/O): Add stuff about stdbuf and deadlocks. + +2016-01-15 Arnold D. Robbins + + * gawktexi.in (Array Sorting Functions): Clean up the code some, + per suggestion from Michal Jaegermann. Tighten up the prose + a bit too. + +2016-01-14 Arnold D. Robbins + + * ChangeLog: Remove spurious whitespace. + +2016-01-13 Arnold D. Robbins + + * gawktexi.in (Array Sorting Functions): Add an example of + using a function name with asort(). Response to bug report + Stephane Goujet . + +2015-12-27 Arnold D. Robbins + + * gawktexi.in: Fix some @c endfile. Thanks to Antonio + Giovanni Colombo for the report and patch. + +2015-12-18 Arnold D. Robbins + + * gawk.1: Update description of PROCINFO, and sort it properly. + * gawktexi.in: Ditto. + +2015-11-26 Arnold D. Robbins + + * gawktexi.in: Add "exit" as synonym for "quit" in the + debugger. Suggested by Joep van Delft . + +2015-11-15 Arnold D. Robbins + + * gawktexi.in: Minor edits. + +2015-10-30 Arnold D. Robbins + + * Makefile.am (awkcard.ps): Add options to force paper size + to letter. This makes the cut marks come out correctly even + if groff's default paper size is a4. + +2015-10-26 Arnold D. Robbins + + * gawk.1: Put commas outside quoting in regexps to avoid + confusion. Thanks to Mike Frysinger . + +2015-10-07 Arnold D. Robbins + + * texinfo.tex: Updated to a working version. + +2015-10-04 Arnold D. Robbins + + * texinfo.tex: Revert update. It stopped working. I should learn + to test these things. Thanks to Antonio Giovanni Colombo for + the report. + +2015-10-02 Arnold D. Robbins + + * gawktexi.in: Note that there is no support for SSL. + +2015-09-25 Arnold D. Robbins + + * texinfo.tex: Update to latest. + +2015-08-28 Daniel Richard G. + + * doc/gawktexi.in: Check for the "struct passwd.pw_passwd" and + "struct group.gr_passwd" fields and conditionalize their use, as + they don't exist on z/OS. + * Makefile.am (pdf-local): Renamed from "pdf", as Automake already + defines "pdf" and warns us as much. + +2015-08-14 Arnold D. Robbins + + * gawktexi.in: Typo fixes in Appendix A. + Thanks to Antonio Colombo. + +2015-07-01 Arnold D. Robbins + + * gawktexi.in: Update info on Quiktrim awk; thanks to + Antonio Colombo for the pointer. + +2015-06-19 Arnold D. Robbins + + * gawkinet.info: Fix an old arnold@gnu.org. + +2015-06-17 Andrew J. Schorr + + * gawktexi.in: Document inplace shortcomings -- it does not preserve + ACLs, and it may leave temporary files behind if killed by a signal. + +2015-06-17 Andrew J. Schorr + + * gawktexi.in: Document new inplace variable to control whether + inplace editing is active. + +2015-06-13 Arnold D. Robbins + + * gawktexi.in: Comment out exercise 10.3, since the answer + is included in the text. Thanks to Antonio Colombo + for pointing this out. + +2015-06-12 Arnold D. Robbins + + * gawktexi.in: Add another pithy quote from Chet Ramey. Currently + commented out. + +2015-05-30 Arnold D. Robbins + + * gawktexi.in (Bitwise Functions): Update results of testbits.awk. + 2015-05-19 Arnold D. Robbins * 4.1.3: Release tar ball made. @@ -509,7 +754,7 @@ 2014-05-29 Arnold D. Robbins - * gawktexi.in: Remove some obsolete bits, fix up some other + * gawktexi.in: Remove some obsolete bits, fix up some other minor stuff. 2014-05-27 Arnold D. Robbins @@ -1241,7 +1486,7 @@ * gawk.texi, gawk.1: Replace references to dlload with dl_load. But much more work needs to be done on the docs. - + 2012-05-19 Andrew J. Schorr * gawk.texi, gawk.1: Document new -i option, and describe new default diff --git a/doc/Makefile.am b/doc/Makefile.am index 86321bb..bda97de 100644 --- a/doc/Makefile.am +++ b/doc/Makefile.am @@ -47,6 +47,7 @@ EXTRA_DIST = ChangeLog ChangeLog.0 README.card ad.block setter.outline \ lflashlight-small.xpic lflashlight.eps lflashlight.pdf \ rflashlight-small.xpic rflashlight.eps rflashlight.pdf \ statist.jpg statist.eps statist.pdf \ + wordlist \ bc_notes # Get rid of generated files when cleaning @@ -62,6 +63,7 @@ SEDME2 = sed '/%%Page: 10 10/,/0 Cg EP/d' CARDSRC = $(srcdir)/macros $(srcdir)/cardfonts $(srcdir)/colors awkcard.tr CARDSRC_N = $(srcdir)/macros $(srcdir)/cardfonts $(srcdir)/no.colors awkcard.tr CARDFILES= $(CARDSRC) ad.block awkcard.in setter.outline +PAPEROPTS= -dpaper=letter -P-pletter # Use this if your troff can correctly handle macros from 'colors' file AWKCARD = awkcard.ps @@ -77,7 +79,7 @@ gawk.texi: $(srcdir)/gawktexi.in $(srcdir)/sidebar.awk postscript: gawk.ps gawkinet.ps gawk.1.ps igawk.1.ps $(AWKCARD) -pdf: postscript gawk.pdf gawkinet.pdf awkcard.pdf gawk.1.pdf igawk.1.pdf +pdf-local: postscript gawk.pdf gawkinet.pdf awkcard.pdf gawk.1.pdf igawk.1.pdf gawk.ps: gawk.dvi TEXINPUTS=$(srcdir): dvips -o gawk.ps gawk.dvi @@ -101,10 +103,14 @@ awkcard.tr: awkcard.in sed 's:SRCDIR:$(srcdir):' < $(srcdir)/awkcard.in > awkcard.tr awkcard.ps: $(CARDFILES) - $(TROFF) $(CARDSRC) | $(SEDME) | cat $(srcdir)/setter.outline - | $(SEDME2) > awkcard.ps + $(TROFF) $(PAPEROPTS) $(CARDSRC) | $(SEDME) | cat $(srcdir)/setter.outline - | $(SEDME2) > awkcard.ps awkcard.nc: $(CARDFILES) - $(TROFF) $(CARDSRC_N) | $(SEDME) | cat $(srcdir)/setter.outline - | $(SEDME2) > awkcard.ps && touch awkcard.nc + $(TROFF) $(PAPEROPTS) $(CARDSRC_N) | $(SEDME) | cat $(srcdir)/setter.outline - | $(SEDME2) > awkcard.ps && touch awkcard.nc awkcard.pdf: awkcard.ps ps2pdf awkcard.ps awkcard.pdf + +spell: + export LC_ALL=C ; spell "$(srcdir)"/gawktexi.in | \ + sort -u | comm -23 - "$(srcdir)"/wordlist diff --git a/doc/Makefile.in b/doc/Makefile.in index 30a371d..96103d7 100644 --- a/doc/Makefile.in +++ b/doc/Makefile.in @@ -373,6 +373,7 @@ EXTRA_DIST = ChangeLog ChangeLog.0 README.card ad.block setter.outline \ lflashlight-small.xpic lflashlight.eps lflashlight.pdf \ rflashlight-small.xpic rflashlight.eps rflashlight.pdf \ statist.jpg statist.eps statist.pdf \ + wordlist \ bc_notes @@ -386,6 +387,7 @@ SEDME2 = sed '/%%Page: 10 10/,/0 Cg EP/d' CARDSRC = $(srcdir)/macros $(srcdir)/cardfonts $(srcdir)/colors awkcard.tr CARDSRC_N = $(srcdir)/macros $(srcdir)/cardfonts $(srcdir)/no.colors awkcard.tr CARDFILES = $(CARDSRC) ad.block awkcard.in setter.outline +PAPEROPTS = -dpaper=letter -P-pletter # Use this if your troff can correctly handle macros from 'colors' file AWKCARD = awkcard.ps @@ -838,7 +840,9 @@ mostlyclean: mostlyclean-am mostlyclean-am: mostlyclean-aminfo mostlyclean-generic -pdf-am: $(PDFS) +pdf: pdf-am + +pdf-am: $(PDFS) pdf-local ps: ps-am @@ -861,8 +865,8 @@ uninstall-man: uninstall-man1 install-ps-am 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 tags-am uninstall \ - uninstall-am uninstall-dvi-am uninstall-html-am \ + mostlyclean-generic pdf pdf-am pdf-local ps ps-am tags-am \ + uninstall uninstall-am uninstall-dvi-am uninstall-html-am \ uninstall-info-am uninstall-man uninstall-man1 \ uninstall-pdf-am uninstall-ps-am @@ -880,7 +884,7 @@ gawk.texi: $(srcdir)/gawktexi.in $(srcdir)/sidebar.awk postscript: gawk.ps gawkinet.ps gawk.1.ps igawk.1.ps $(AWKCARD) -pdf: postscript gawk.pdf gawkinet.pdf awkcard.pdf gawk.1.pdf igawk.1.pdf +pdf-local: postscript gawk.pdf gawkinet.pdf awkcard.pdf gawk.1.pdf igawk.1.pdf gawk.ps: gawk.dvi TEXINPUTS=$(srcdir): dvips -o gawk.ps gawk.dvi @@ -904,14 +908,18 @@ awkcard.tr: awkcard.in sed 's:SRCDIR:$(srcdir):' < $(srcdir)/awkcard.in > awkcard.tr awkcard.ps: $(CARDFILES) - $(TROFF) $(CARDSRC) | $(SEDME) | cat $(srcdir)/setter.outline - | $(SEDME2) > awkcard.ps + $(TROFF) $(PAPEROPTS) $(CARDSRC) | $(SEDME) | cat $(srcdir)/setter.outline - | $(SEDME2) > awkcard.ps awkcard.nc: $(CARDFILES) - $(TROFF) $(CARDSRC_N) | $(SEDME) | cat $(srcdir)/setter.outline - | $(SEDME2) > awkcard.ps && touch awkcard.nc + $(TROFF) $(PAPEROPTS) $(CARDSRC_N) | $(SEDME) | cat $(srcdir)/setter.outline - | $(SEDME2) > awkcard.ps && touch awkcard.nc awkcard.pdf: awkcard.ps ps2pdf awkcard.ps awkcard.pdf +spell: + export LC_ALL=C ; spell "$(srcdir)"/gawktexi.in | \ + sort -u | comm -23 - "$(srcdir)"/wordlist + # 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/doc/awkcard.in b/doc/awkcard.in index 05c0350..34648be 100644 --- a/doc/awkcard.in +++ b/doc/awkcard.in @@ -1,7 +1,7 @@ .\" AWK Reference Card --- Arnold Robbins, arnold@skeeve.com .\" .\" Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001, 2002, -.\" 2003, 2004, 2005, 2007, 2009, 2010, 2011, 2012, 2013, 2014, 2015 +.\" 2003, 2004, 2005, 2007, 2009, 2010, 2011, 2012, 2013, 2014, 2015, 2016 .\" Free Software Foundation, Inc. .\" .\" Permission is granted to make and distribute verbatim copies of @@ -100,7 +100,7 @@ Brian Kernighan and Michael Brennan who reviewed it. \*(CD .SL .nf -\*(FRCopyright \(co 1996\(en2005, 2007, 2009\(en2014 +\*(FRCopyright \(co 1996\(en2005, 2007, 2009\(en2016 Free Software Foundation, Inc. .nf .BT @@ -1939,7 +1939,7 @@ to use the current domain.\*(CB .ES .nf \*(CDHost: \*(FCftp.gnu.org\*(FR -File: \*(FC/gnu/gawk/gawk-4.1.3.tar.gz\fP +File: \*(FC/gnu/gawk/gawk-4.1.4.tar.gz\fP .in +.2i .fi GNU \*(AK (\*(GK). There may be a later version. @@ -1970,7 +1970,7 @@ maintains it.\*(CX .ES .fi \*(CDCopyright \(co 1996\(en2005, -2007, 2009\(en2014 Free Software Foundation, Inc. +2007, 2009\(en2016 Free Software Foundation, Inc. .sp .5 Permission is granted to make and distribute verbatim copies of this reference card provided the copyright notice and this permission notice diff --git a/doc/gawk.1 b/doc/gawk.1 index 0a37d5a..2caa87a 100644 --- a/doc/gawk.1 +++ b/doc/gawk.1 @@ -13,7 +13,7 @@ . if \w'\(rq' .ds rq "\(rq . \} .\} -.TH GAWK 1 "Aug 03 2014" "Free Software Foundation" "Utility Commands" +.TH GAWK 1 "Mar 7 2016" "Free Software Foundation" "Utility Commands" .SH NAME gawk \- pattern scanning and processing language .SH SYNOPSIS @@ -1087,16 +1087,12 @@ Use the operator to test for these elements. The following elements are guaranteed to be available: .RS -.TP \w'\fBPROCINFO["version"]\fR'u+1n +.TP \w'\fBPROCINFO["strftime"]\fR'u+1n \fBPROCINFO["egid"]\fP The value of the .IR getegid (2) system call. .TP -\fBPROCINFO["strftime"]\fP -The default time format string for -.BR strftime() . -.TP \fBPROCINFO["euid"]\fP The value of the .IR geteuid (2) @@ -1113,6 +1109,11 @@ or \fB"FIELDWIDTHS"\fP if field splitting with .B FIELDWIDTHS is in effect. .TP +\fBPROCINFO["gid"]\fP +The value of the +.IR getgid (2) +system call. +.TP \fBPROCINFO["identifiers"]\fP A subarray, indexed by the names of all identifiers used in the text of the AWK program. @@ -1148,11 +1149,6 @@ doesn't know yet). The identifier is a user-defined function. .RE .TP -\fBPROCINFO["gid"]\fP -The value of the -.IR getgid (2) -system call. -.TP \fBPROCINFO["pgrpid"]\fP The process group ID of the current process. .TP @@ -1162,11 +1158,68 @@ The process ID of the current process. \fBPROCINFO["ppid"]\fP The parent process ID of the current process. .TP +\fBPROCINFO["strftime"]\fP +The default time format string for +.BR strftime() . +.TP \fBPROCINFO["uid"]\fP The value of the .IR getuid (2) system call. .TP +\fBPROCINFO["version"]\fP +the version of +.IR gawk . +.PP +The following elements are present if loading dynamic +extensions is available: +.TP +\fBPROCINFO["api_major"]\fP +The major version of the extension API. +.TP +\fBPROCINFO["api_minor"]\fP +The minor version of the extension API. +.PP +The following elements are available if MPFR support is +compiled into +.IR gawk\^ : +.TP +\fBPROCINFO["gmp_version"]\fP +The version of the GNU MP library used for arbitrary precision +number support in +.IR gawk . +.TP +\fBPROCINFO["mpfr_version"]\fP +The version of the GNU MPFR library used for arbitrary precision +number support in +.IR gawk . +.TP +\fBPROCINFO["prec_max"]\fP +The maximum precision supported by the GNU MPFR library for +arbitrary precision floating-point numbers. +.TP +\fBPROCINFO["prec_min"]\fP +The minimum precision allowed by the GNU MPFR library for +arbitrary precision floating-point numbers. +.PP +The following elements may set by a program to +change +.IR gawk 's +behavior: +.TP +\fBPROCINFO["\fIcommand\fB", "pty"]\fR +Use a pseudo-tty for two-way communication with +.I command +instead of setting up two one-way pipes. +.TP +\fBPROCINFO["\fIinput\fB", "READ_TIMEOUT"]\fR +The timeout in milliseconds for reading data from +.IR input , +where +.I input +is a redirection string or a filename. A value of zero or +less than zero means no timeout. +.TP \fBPROCINFO["sorted_in"]\fP If this element exists in .BR PROCINFO , @@ -1206,52 +1259,6 @@ are the corresponding values of the two elements being compared. It should return a number less than, equal to, or greater than 0, depending on how the elements of the array are to be ordered. -.TP -\fBPROCINFO["input", "READ_TIMEOUT"]\fP -The timeout in milliseconds for reading data from -.IR input , -where -.I input -is a redirection string or a filename. A value of zero or -less than zero means no timeout. -.TP -\fBPROCINFO["mpfr_version"]\fP -The version of the GNU MPFR library used for arbitrary precision -number support in -.IR gawk . -This entry is not present if MPFR support is not compiled into -.IR gawk . -.TP -\fBPROCINFO["gmp_version"]\fP -The version of the GNU MP library used for arbitrary precision -number support in -.IR gawk . -This entry is not present if MPFR support is not compiled into -.IR gawk . -.TP -\fBPROCINFO["prec_max"]\fP -The maximum precision supported by the GNU MPFR library for -arbitrary precision floating-point numbers. -This entry is not present if MPFR support is not compiled into -.IR gawk . -.TP -\fBPROCINFO["prec_min"]\fP -The minimum precision allowed by the GNU MPFR library for -arbitrary precision floating-point numbers. -This entry is not present if MPFR support is not compiled into -.IR gawk . -.TP -\fBPROCINFO["api_major"]\fP -The major version of the extension API. -This entry is not present if loading dynamic extensions is not available. -.TP -\fBPROCINFO["api_minor"]\fP -The minor version of the extension API. -This entry is not present if loading dynamic extensions is not available. -.TP -\fBPROCINFO["version"]\fP -the version of -.IR gawk . .RE .TP .B ROUNDMODE @@ -1936,7 +1943,7 @@ and For example, the name .B e might be used to represent all of -\*(lqe,\*(rq \*(lqe\h'-\w:e:u'\',\*(rq and \*(lqe\h'-\w:e:u'\`.\*(rq +\*(lqe\*(rq, \*(lqe\h'-\w:e:u'\'\*(rq, and \*(lqe\h'-\w:e:u'\`\*(rq. In this case, .B [[=e=]] is a regular expression @@ -2252,6 +2259,7 @@ Execute the command .IR cmd-line , and return the exit status. (This may not be available on non-\*(PX systems.) +See the manual for the full details on the exit status. .TP \&\fBfflush(\fR[\fIfile\^\fR]\fB)\fR Flush any buffers associated with the open output file or pipe @@ -3979,7 +3987,7 @@ We thank him. .SH COPYING PERMISSIONS Copyright \(co 1989, 1991, 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2001, 2002, 2003, 2004, 2005, 2007, 2009, -2010, 2011, 2012, 2013, 2014 +2010, 2011, 2012, 2013, 2014, 2016 Free Software Foundation, Inc. .PP Permission is granted to make and distribute verbatim copies of diff --git a/doc/gawk.texi b/doc/gawk.texi index 18ef080..acf57e5 100644 --- a/doc/gawk.texi +++ b/doc/gawk.texi @@ -19,6 +19,11 @@ * awk: (gawk)Invoking gawk. Text scanning and processing. @end direntry +@c Enable better indexing, requires texindex from Texinfo 6 or later. +@tex +\global\usebracesinindexestrue +@end tex + @ifset FOR_PRINT @tex \gdef\xrefprintnodename#1{``#1''} @@ -51,9 +56,9 @@ @c applies to and all the info about who's publishing this edition @c These apply across the board. -@set UPDATE-MONTH May, 2015 +@set UPDATE-MONTH August, 2016 @set VERSION 4.1 -@set PATCHLEVEL 3 +@set PATCHLEVEL 4 @set GAWKINETTITLE TCP/IP Internetworking with @command{gawk} @ifset FOR_PRINT @@ -171,31 +176,6 @@ @end macro @end ifdocbook -@c hack for docbook, where comma shouldn't always follow an @ref{} -@ifdocbook -@macro DBREF{text} -@ref{\text\} -@end macro -@macro DBXREF{text} -@xref{\text\} -@end macro -@macro DBPXREF{text} -@pxref{\text\} -@end macro -@end ifdocbook - -@ifnotdocbook -@macro DBREF{text} -@ref{\text\}, -@end macro -@macro DBXREF{text} -@xref{\text\}, -@end macro -@macro DBPXREF{text} -@pxref{\text\}, -@end macro -@end ifnotdocbook - @ifclear FOR_PRINT @set FN file name @set FFN File name @@ -250,10 +230,7 @@ @ignore Some comments on the layout for TeX. -1. Use at least texinfo.tex 2014-01-30.15 -2. When using @docbook, if the last line is part of a paragraph, end -it with a space and @c so that the lines won't run together. This is a -quirk of the language / makeinfo, and isn't going to change. +1. Use at least texinfo.tex 2016-02-05.07. @end ignore @c merge the function and variable indexes into the concept index @@ -299,13 +276,13 @@ Fax: +1-617-542-2652 Email: gnu@@gnu.org URL: http://www.gnu.org/ -Copyright © 1989, 1991, 1992, 1993, 1996–2005, 2007, 2009–2015 +Copyright © 1989, 1991, 1992, 1993, 1996–2005, 2007, 2009–2016 Free Software Foundation, Inc. All Rights Reserved. @end docbook @ifnotdocbook -Copyright @copyright{} 1989, 1991, 1992, 1993, 1996--2005, 2007, 2009--2015 @* +Copyright @copyright{} 1989, 1991, 1992, 1993, 1996--2005, 2007, 2009--2016 @* Free Software Foundation, Inc. @end ifnotdocbook @sp 2 @@ -1194,7 +1171,7 @@ $\sim\! Cn^2$ @end ifnotdocbook @end ifnottex @docbook -∼ Cn2 @c +∼ Cn2 @end docbook performance, while theory predicted @@ -1207,7 +1184,7 @@ $\sim\! Cn\log n$ @end ifnotdocbook @end ifnottex @docbook -∼ Cn log n @c +∼ Cn log n @end docbook behavior. A few minutes poring over the @file{awkprof.out} profile pinpointed the problem to @@ -1505,7 +1482,7 @@ John Haque rewrote the @command{gawk} internals, in the process providing an @command{awk}-level debugger. This version became available as @command{gawk} @value{PVERSION} 4.0 in 2011. -@DBXREF{Contributors} +@xref{Contributors} for a full list of those who have made important contributions to @command{gawk}. @node Names @@ -1593,7 +1570,7 @@ All appear in the index, under the heading ``sidebar.'' @end ifclear Most of the time, the examples use complete @command{awk} programs. -Some of the more advanced sections show only the part of the @command{awk} +Some of the more advanced @value{SECTION}s show only the part of the @command{awk} program that illustrates the concept being described. Although this @value{DOCUMENT} is aimed principally at people who have not been @@ -1816,6 +1793,7 @@ The GNU FDL} is the license that covers this @value{DOCUMENT}. @end itemize +@c ok not to use CHAPTER / SECTION here Some of the chapters have exercise sections; these have also been omitted from the print edition but are available online. @end ifset @@ -1889,7 +1867,7 @@ pressing the @kbd{d} key, and finally releasing both keys. For the sake of brevity, throughout this @value{DOCUMENT}, we refer to Brian Kernighan's version of @command{awk} as ``BWK @command{awk}.'' -(@DBXREF{Other Versions} for information on his and other versions.) +(@xref{Other Versions} for information on his and other versions.) @ifset FOR_PRINT @quotation NOTE @@ -2048,7 +2026,7 @@ and the major new additions are @ref{Arbitrary Precision Arithmetic}, and @ref{Dynamic Extensions}. This @value{DOCUMENT} will undoubtedly continue to evolve. If you -find an error in the @value{DOCUMENT}, please report it! @DBXREF{Bugs} +find an error in the @value{DOCUMENT}, please report it! @xref{Bugs} for information on submitting problem reports electronically. @ifset FOR_PRINT @@ -2205,6 +2183,7 @@ significant editorial help for this @value{DOCUMENT} for the @cindex Davies, Stephen @cindex Deifik, Scott @cindex Demaille, Akim +@cindex G., Daniel Richard @cindex Hankerson, Darrel @cindex Jaegermann, Michal @cindex Kahrs, J@"urgen @@ -2224,6 +2203,7 @@ Antonio Colombo, Stephen Davies, Scott Deifik, Akim Demaille, +Daniel Richard G., Darrel Hankerson, Michal Jaegermann, J@"urgen Kahrs, @@ -2242,7 +2222,7 @@ portable program it is today. It has been and continues to be a pleasure working with this team of fine people. Notable code and documentation contributions were made by -a number of people. @DBXREF{Contributors} for the full list. +a number of people. @xref{Contributors} for the full list. @ifset FOR_PRINT @cindex Oram, Andy @@ -2476,7 +2456,7 @@ reliable because there are no other files to misplace. Later in this chapter, in @ifdocbook -the section +the @value{SECTION} @end ifdocbook @ref{Very Simple}, we'll see examples of several short, @@ -2884,7 +2864,7 @@ The shell does no interpretation of the quoted text, passing it on verbatim to the command. It is @emph{impossible} to embed a single quote inside single-quoted text. Refer back to -@DBREF{Comments} +@ref{Comments} for an example of what happens if you try. @item @@ -3312,9 +3292,9 @@ no actions run. After processing all the rules that match the line (and perhaps there are none), @command{awk} reads the next line. (However, -@DBPXREF{Next Statement} +@pxref{Next Statement} @ifdocbook -and @DBREF{Nextfile Statement}.) +and @ref{Nextfile Statement}.) @end ifdocbook @ifnotdocbook and also @pxref{Nextfile Statement}.) @@ -3415,7 +3395,8 @@ After the last line of output from @command{ls} has been processed, the @code{END} rule executes and prints the value of @code{sum}. In this example, the value of @code{sum} is 80600. -These more advanced @command{awk} techniques are covered in later sections +These more advanced @command{awk} techniques are covered in later +@value{SECTION}s (@pxref{Action Overview}). Before you can move on to more advanced @command{awk} programming, you have to know how @command{awk} interprets your input and displays your output. By manipulating fields and using @@ -3585,7 +3566,7 @@ and array sorting. As we develop our presentation of the @command{awk} language, we will introduce most of the variables and many of the functions. They are described -systematically in @DBREF{Built-in Variables} and in +systematically in @ref{Built-in Variables} and in @ref{Built-in}. @node When @@ -4042,7 +4023,7 @@ care to search for all occurrences of each inappropriate construct. As @itemx @option{--bignum} @cindex @option{-M} option @cindex @option{--bignum} option -Force arbitrary-precision arithmetic on numbers. This option has no effect +Select arbitrary-precision arithmetic on numbers. This option has no effect if @command{gawk} is not compiled to use the GNU MPFR and MP libraries (@pxref{Arbitrary Precision Arithmetic}). @@ -4120,7 +4101,7 @@ in the left margin, and function call counts for each function. Operate in strict POSIX mode. This disables all @command{gawk} extensions (just like @option{--traditional}) and disables all extensions not allowed by POSIX. -@DBXREF{Common Extensions} for a summary of the extensions +@xref{Common Extensions} for a summary of the extensions in @command{gawk} that are disabled by this option. Also, the following additional @@ -4585,6 +4566,11 @@ are generated. Its purpose is to help isolate the source of a message, as there are multiple places that produce the same warning or error message. +@item GAWK_LOCALE_DIR +Specifies the location of compiled message object files +for @command{gawk} itself. This is passed to the @code{bindtextdomain()} +function when @command{gawk} starts up. + @item GAWK_NO_DFA If this variable exists, @command{gawk} does not use the DFA regexp matcher for ``does it match'' kinds of tests. This can cause @command{gawk} @@ -5223,7 +5209,7 @@ with a backslash have special meaning in regexps. In a regexp, a backslash before any character that is not in the previous list and not listed in -@DBREF{GNU Regexp Operators} +@ref{GNU Regexp Operators} means that the next character should be taken literally, even if it would normally be a regexp operator. For example, @code{/a\+b/} matches the three characters @samp{a+b}. @@ -5405,7 +5391,7 @@ The escape sequences described @ifnotinfo earlier @end ifnotinfo -in @DBREF{Escape Sequences} +in @ref{Escape Sequences} are valid inside a regexp. They are introduced by a @samp{\} and are recognized and converted into corresponding real characters as the very first step in processing regexps. @@ -5640,10 +5626,19 @@ Within a bracket expression, a @dfn{range expression} consists of two characters separated by a hyphen. It matches any single character that sorts between the two characters, based upon the system's native character set. For example, @samp{[0-9]} is equivalent to @samp{[0123456789]}. -(See @DBREF{Ranges and Locales} for an explanation of how the POSIX +(See @ref{Ranges and Locales} for an explanation of how the POSIX standard and @command{gawk} have changed over time. This is mainly of historical interest.) +With the increasing popularity of the +@uref{http://www.unicode.org, Unicode character standard}, +there is an additional wrinkle to consider. Octal and hexadecimal +escape sequences inside bracket expressions are taken to represent +only single-byte characters (characters whose values fit within +the range 0--256). To match a range of characters where the endpoints +of the range are larger than 256, enter the multibyte encodings of +the characters directly. + @cindex @code{\} (backslash), in bracket expressions @cindex backslash (@code{\}), in bracket expressions @cindex @code{^} (caret), in bracket expressions @@ -5772,6 +5767,10 @@ they do not recognize collating symbols or equivalence classes. @end quotation @c maybe one day ... +Inside a bracket expression, an opening bracket (@samp{[}) that does +not start a character class, collating element or equivalence class is +taken literally. This is also true of @samp{.} and @samp{*}. + @node Leftmost Longest @section How Much Text Matches? @@ -6497,7 +6496,7 @@ The empty string @code{""} (a string without any characters) has a special meaning as the value of @code{RS}. It means that records are separated by one or more blank lines and nothing else. -@DBXREF{Multiple Line} for more details. +@xref{Multiple Line} for more details. If you change the value of @code{RS} in the middle of an @command{awk} run, the new value is used to delimit subsequent records, but the record @@ -6561,7 +6560,7 @@ $ @kbd{echo record 1 AAAA record 2 BBBB record 3 |} The square brackets delineate the contents of @code{RT}, letting you see the leading and trailing whitespace. The final value of @code{RT} is a newline. -@DBXREF{Simple Sed} for a more useful example +@xref{Simple Sed} for a more useful example of @code{RS} as a regexp and @code{RT}. If you set @code{RS} to a regular expression that allows optional @@ -6633,8 +6632,8 @@ character as a record separator. However, this is a special case: @cindex records, treating files as @cindex treating files, as single records -@DBXREF{Readfile Function} for an interesting way to read -whole files. If you are using @command{gawk}, see @DBREF{Extension Sample +@xref{Readfile Function} for an interesting way to read +whole files. If you are using @command{gawk}, see @ref{Extension Sample Readfile} for another option. @docbook @@ -6684,8 +6683,8 @@ character as a record separator. However, this is a special case: @cindex records, treating files as @cindex treating files, as single records -@DBXREF{Readfile Function} for an interesting way to read -whole files. If you are using @command{gawk}, see @DBREF{Extension Sample +@xref{Readfile Function} for an interesting way to read +whole files. If you are using @command{gawk}, see @ref{Extension Sample Readfile} for another option. @end cartouche @end ifnotdocbook @@ -6935,9 +6934,9 @@ else @noindent should print @samp{everything is normal}, because @code{NF+1} is certain -to be out of range. (@DBXREF{If Statement} +to be out of range. (@xref{If Statement} for more information about @command{awk}'s @code{if-else} statements. -@DBXREF{Typing and Comparison} +@xref{Typing and Comparison} for more information about the @samp{!=} operator.) It is important to note that making an assignment to an existing field @@ -7762,7 +7761,7 @@ else This information is useful when writing a function that needs to temporarily change @code{FS} or @code{FIELDWIDTHS}, read some records, and then restore the original settings -(@DBPXREF{Passwd Functions} +(@pxref{Passwd Functions} for an example of such a function). @node Splitting By Content @@ -8029,7 +8028,7 @@ $ @kbd{awk -f addrs.awk addresses} @dots{} @end example -@DBXREF{Labels Program} for a more realistic program dealing with +@xref{Labels Program} for a more realistic program dealing with address lists. The following list summarizes how records are split, based on the value of @ifinfo @@ -8352,7 +8351,7 @@ One deficiency of this program is that it does not process nested @code{@@include} statements (i.e., @code{@@include} statements in included files) the way a true macro preprocessor would. -@DBXREF{Igawk Program} for a program +@xref{Igawk Program} for a program that does handle nested @code{@@include} statements. @node Getline/Pipe @@ -8605,7 +8604,7 @@ trying to accomplish. @item @ifdocbook -The next section +The next @value{SECTION} @end ifdocbook @ifnotdocbook @ref{Getline Summary}, @@ -8801,7 +8800,7 @@ If either of the @option{--posix} or @option{--traditional} options is given, then @command{gawk} reverts to treating a directory on the command line as a fatal error. -@DBXREF{Extension Sample Readdir} for a way to treat directories +@xref{Extension Sample Readdir} for a way to treat directories as usable data from an @command{awk} program. @node Input Summary @@ -8914,7 +8913,7 @@ The @code{print} statement is not limited when computing @emph{which} values to print. However, with two exceptions, you cannot specify @emph{how} to print them---how many columns, whether to use exponential notation or not, and so on. -(For the exceptions, @DBPXREF{Output Separators} and +(For the exceptions, @pxref{Output Separators} and @ref{OFMT}.) For printing with specifications, you need the @code{printf} statement (@pxref{Printf}). @@ -9811,7 +9810,7 @@ close(report) The @code{close()} function is called here because it's a good idea to close the pipe as soon as all the intended output has been sent to it. -@DBXREF{Close Files And Pipes} +@xref{Close Files And Pipes} for more information. This example also illustrates the use of a variable to represent @@ -9842,9 +9841,9 @@ for a brief discussion. for a more complete discussion. @end ifnotdocbook @ifdocbook -@DBXREF{Getline/Coprocess} +@xref{Getline/Coprocess} for a brief discussion and -@DBREF{Two-way I/O} +@ref{Two-way I/O} for a more complete discussion. @end ifdocbook @end table @@ -9923,7 +9922,7 @@ The program builds up a list of command lines, using the @command{mv} utility to rename the files. It then sends the list to the shell for execution. -@DBXREF{Shell Quoting} for a function that can help in generating +@xref{Shell Quoting} for a function that can help in generating command lines to be fed to the shell. @docbook @@ -9958,7 +9957,7 @@ The program builds up a list of command lines, using the @command{mv} utility to rename the files. It then sends the list to the shell for execution. -@DBXREF{Shell Quoting} for a function that can help in generating +@xref{Shell Quoting} for a function that can help in generating command lines to be fed to the shell. @end cartouche @end ifnotdocbook @@ -10670,7 +10669,7 @@ you can use the @code{strtonum()} function to convert the data into a number. Most of the time, you will want to use octal or hexadecimal constants when working with the built-in bit-manipulation functions; -see @DBREF{Bitwise Functions} +see @ref{Bitwise Functions} for more information. Unlike in some early C implementations, @samp{8} and @samp{9} are not @@ -10903,7 +10902,7 @@ array parameters (@pxref{String Functions}). @cindex variables, initializing A few variables have special built-in meanings, such as @code{FS} (the field separator) and @code{NF} (the number of fields in the current input -record). @DBXREF{Built-in Variables} for a list of the predefined variables. +record). @xref{Built-in Variables} for a list of the predefined variables. These predefined variables can be used and assigned just like all other variables, but their values are also used or changed automatically by @command{awk}. All predefined variables' names are entirely uppercase. @@ -10944,7 +10943,7 @@ as in the following: the variable is set at the very beginning, even before the @code{BEGIN} rules execute. The @option{-v} option and its assignment must precede all the @value{FN} arguments, as well as the program text. -(@DBXREF{Options} for more information about +(@xref{Options} for more information about the @option{-v} option.) Otherwise, the variable assignment is performed at a time determined by its position among the input file arguments---after the processing of the @@ -11083,7 +11082,7 @@ specifies the output format to use when printing numbers with @code{print}. conversion from the semantics of printing. Both @code{CONVFMT} and @code{OFMT} have the same default value: @code{"%.6g"}. In the vast majority of cases, old @command{awk} programs do not change their behavior. -@DBXREF{Print} for more information on the @code{print} statement. +@xref{Print} for more information on the @code{print} statement. @docbook @@ -11106,7 +11105,7 @@ specifies the output format to use when printing numbers with @code{print}. conversion from the semantics of printing. Both @code{CONVFMT} and @code{OFMT} have the same default value: @code{"%.6g"}. In the vast majority of cases, old @command{awk} programs do not change their behavior. -@DBXREF{Print} for more information on the @code{print} statement. +@xref{Print} for more information on the @code{print} statement. @end cartouche @end ifnotdocbook @@ -11608,10 +11607,10 @@ The indices of @code{bar} are practically guaranteed to be different, because @xref{Arrays}, and @ifnotdocbook -@DBPXREF{Numeric Functions} +@pxref{Numeric Functions} @end ifnotdocbook @ifdocbook -@DBREF{Numeric Functions} +@ref{Numeric Functions} @end ifdocbook for more information.) This example illustrates an important fact about assignment @@ -11787,7 +11786,6 @@ has the value four, but it changes the value of @code{foo} to five. In other words, the operator returns the old value of the variable, but with the side effect of incrementing it. -@c FIXME: Use @sup here for superscript The post-increment @samp{foo++} is nearly the same as writing @samp{(foo += 1) - 1}. It is not perfectly equivalent because all numbers in @command{awk} are floating point---in floating point, @samp{foo + 1 - 1} does @@ -11796,14 +11794,14 @@ long as you stick to numbers that are fairly small (less than @iftex @math{10^{12}}). @end iftex -@ifnottex -@ifnotdocbook +@ifinfo 10e12). -@end ifnotdocbook +@end ifinfo +@ifnottex +@ifnotinfo +10@sup{12}). +@end ifnotinfo @end ifnottex -@docbook -1012). @c -@end docbook @cindex @code{$} (dollar sign), incrementing fields and arrays @cindex dollar sign (@code{$}), incrementing fields and arrays @@ -12641,10 +12639,10 @@ example, the function @code{sqrt()} computes the square root of a number. @cindex functions, built-in A fixed set of functions are @dfn{built in}, which means they are available in every @command{awk} program. The @code{sqrt()} function is one -of these. @DBXREF{Built-in} for a list of built-in +of these. @xref{Built-in} for a list of built-in functions and their descriptions. In addition, you can define functions for use in your program. -@DBXREF{User-defined} +@xref{User-defined} for instructions on how to do this. Finally, @command{gawk} lets you write functions in C or C++ that may be called from your program (@pxref{Dynamic Extensions}). @@ -12687,7 +12685,7 @@ Some of the built-in functions have one or more optional arguments. If those arguments are not supplied, the functions use a reasonable default value. -@DBXREF{Built-in} for full details. If arguments +@xref{Built-in} for full details. If arguments are omitted in calls to user-defined functions, then those arguments are treated as local variables. Such local variables act like the empty string if referenced where a string value is required, @@ -13402,7 +13400,7 @@ The order in which library functions are named on the command line controls the order in which their @code{BEGIN} and @code{END} rules are executed. Therefore, you have to be careful when writing such rules in library files so that the order in which they are executed doesn't matter. -@DBXREF{Options} for more information on +@xref{Options} for more information on using library functions. @xref{Library Functions}, for a number of useful library functions. @@ -13466,12 +13464,12 @@ Finally, the @code{next} and @code{nextfile} statements are not allowed in a @code{BEGIN} rule, because the implicit read-a-record-and-match-against-the-rules loop has not started yet. Similarly, those statements are not valid in an @code{END} rule, because all the input has been read. -(@DBXREF{Next Statement} and +(@xref{Next Statement} and @ifnotdocbook -@DBPXREF{Nextfile Statement}.) +@pxref{Nextfile Statement}.) @end ifnotdocbook @ifdocbook -@DBREF{Nextfile Statement}.) +@ref{Nextfile Statement}.) @end ifdocbook @node BEGINFILE/ENDFILE @@ -13491,10 +13489,10 @@ As with the @code{BEGIN} and @code{END} rules @end ifnotdocbook @end ifnottex @iftex -(see the previous section), +(see the previous @value{SECTION}), @end iftex @ifdocbook -(see the previous section), +(see the previous @value{SECTION}), @end ifdocbook all @code{BEGINFILE} rules in a program are merged, in the order they are read by @command{gawk}, and all @code{ENDFILE} rules are merged as well. @@ -14043,7 +14041,7 @@ for (i in array) @end example @noindent -@DBXREF{Scanning an Array} +@xref{Scanning an Array} for more information on this version of the @code{for} loop. @node Switch Statement @@ -14256,7 +14254,7 @@ statement outside a loop the same way they treated a @code{break} statement outside a loop: as if it were a @code{next} statement @ifset FOR_PRINT -(discussed in the following section). +(discussed in the following @value{SECTION}). @end ifset @ifclear FOR_PRINT (@pxref{Next Statement}). @@ -14428,7 +14426,7 @@ In such a case, if you don't want the @code{END} rule to do its job, set a variable to a nonzero value before the @code{exit} statement and check that variable in the @code{END} rule. -@DBXREF{Assert Function} +@xref{Assert Function} for an example that does this. @cindex dark corner, @code{exit} statement @@ -14439,7 +14437,7 @@ In the case where an argument is supplied to a first @code{exit} statement, and then @code{exit} is called a second time from an @code{END} rule with no argument, @command{awk} uses the previously supplied exit value. @value{DARKCORNER} -@DBXREF{Exit Status} for more information. +@xref{Exit Status} for more information. @cindex programming conventions, @code{exit} statement For example, suppose an error condition occurs that is difficult or @@ -14549,7 +14547,7 @@ A space-separated list of columns that tells @command{gawk} how to split input with fixed columnar boundaries. Assigning a value to @code{FIELDWIDTHS} overrides the use of @code{FS} and @code{FPAT} for field splitting. -@DBXREF{Constant Size} for more information. +@xref{Constant Size} for more information. @cindex @command{gawk}, @code{FPAT} variable in @cindex @code{FPAT} variable @@ -14561,7 +14559,7 @@ A regular expression (as a string) that tells @command{gawk} to create the fields based on text that matches the regular expression. Assigning a value to @code{FPAT} overrides the use of @code{FS} and @code{FIELDWIDTHS} for field splitting. -@DBXREF{Splitting By Content} for more information. +@xref{Splitting By Content} for more information. @cindex @code{FS} variable @cindex separators, field @@ -14777,7 +14775,7 @@ method of accessing command-line arguments. The value of @code{ARGV[0]} can vary from system to system. Also, you should note that the program text is @emph{not} included in @code{ARGV}, nor are any of @command{awk}'s command-line options. -@DBXREF{ARGC and ARGV} for information +@xref{ARGC and ARGV} for information about how @command{awk} uses these variables. @value{DARKCORNER} @@ -14815,9 +14813,9 @@ Some operating systems may not have environment variables. On such systems, the @code{ENVIRON} array is empty (except for @w{@code{ENVIRON["AWKPATH"]}} and @w{@code{ENVIRON["AWKLIBPATH"]}}; -@DBPXREF{AWKPATH Variable} and +@pxref{AWKPATH Variable} and @ifdocbook -@DBREF{AWKLIBPATH Variable}). +@ref{AWKLIBPATH Variable}). @end ifdocbook @ifnotdocbook @pxref{AWKLIBPATH Variable}). @@ -14921,6 +14919,10 @@ This is @code{"FIELDWIDTHS"} if field splitting with @code{FIELDWIDTHS} is in effect, or @code{"FPAT"} if field matching with @code{FPAT} is in effect. +@item PROCINFO["gid"] +@cindex group ID of @command{gawk} user +The value of the @code{getgid()} system call. + @item PROCINFO["identifiers"] @cindex program identifiers A subarray, indexed by the names of all identifiers used in the text of @@ -14956,10 +14958,6 @@ The values indicate what @command{gawk} knows about the identifiers after it has finished parsing the program; they are @emph{not} updated while the program runs. -@item PROCINFO["gid"] -@cindex group ID of @command{gawk} user -The value of the @code{getgid()} system call. - @item PROCINFO["pgrpid"] @cindex process group ID of @command{gawk} process The process group ID of the current process. @@ -14972,14 +14970,6 @@ The process ID of the current process. @cindex parent process ID of @command{gawk} process The parent process ID of the current process. -@item PROCINFO["sorted_in"] -If this element exists in @code{PROCINFO}, its value controls the -order in which array indices will be processed by -@samp{for (@var{indx} in @var{array})} loops. -This is an advanced feature, so we defer the -full description until later; see -@ref{Scanning an Array}. - @item PROCINFO["strftime"] The default time format string for @code{strftime()}. Assigning a new value to this element changes the default. @@ -15000,14 +14990,14 @@ if your version of @command{gawk} supports arbitrary-precision arithmetic (@pxref{Arbitrary Precision Arithmetic}): @table @code -@cindex version of GNU MPFR library -@item PROCINFO["mpfr_version"] -The version of the GNU MPFR library. - @item PROCINFO["gmp_version"] @cindex version of GNU MP library The version of the GNU MP library. +@cindex version of GNU MPFR library +@item PROCINFO["mpfr_version"] +The version of the GNU MPFR library. + @item PROCINFO["prec_max"] @cindex maximum precision supported by MPFR library The maximum precision supported by MPFR. @@ -15039,21 +15029,26 @@ supplementary groups that the process has. Use the @code{in} operator to test for these elements (@pxref{Reference to Elements}). -@cindex @command{gawk}, @code{PROCINFO} array in -@cindex @code{PROCINFO} array, uses -The @code{PROCINFO} array has the following additional uses: +The following elements allow you to change @command{gawk}'s behavior: -@itemize @value{BULLET} -@item -It may be used to provide a timeout when reading from any -open input file, pipe, or coprocess. -@DBXREF{Read Timeout} for more information. +@table @code +@item PROCINFO["@var{command}", "pty"] +For two-way communication to @var{command}, use a pseudo-tty instead +of setting up a two-way pipe. +@xref{Two-way I/O} for more information. -@item -It may be used to cause coprocesses to communicate over pseudo-ttys -instead of through two-way pipes; this is discussed further in -@ref{Two-way I/O}. -@end itemize +@item PROCINFO["@var{input_name}", "READ_TIMEOUT"] +Set a timeout for reading from input redirection @var{input_name}. +@xref{Read Timeout} for more information. + +@item PROCINFO["sorted_in"] +If this element exists in @code{PROCINFO}, its value controls the +order in which array indices will be processed by +@samp{for (@var{indx} in @var{array})} loops. +This is an advanced feature, so we defer the +full description until later; see +@ref{Scanning an Array}. +@end table @cindex @code{RLENGTH} variable @item @code{RLENGTH} @@ -15129,9 +15124,28 @@ function multiply(variable, amount) @} @end example +@noindent +You would use it like this: + +@example +BEGIN @{ + answer = 10.5 + multiply("answer", 4) + print "The answer is", answer +@} +@end example + +@noindent +When run, this produces: + +@example +$ @kbd{gawk -f answer.awk} +@print{} The answer is 42 +@end example + @quotation NOTE -In order to avoid severe time-travel paradoxes,@footnote{Not to mention difficult -implementation issues.} neither @code{FUNCTAB} nor @code{SYMTAB} +In order to avoid severe time-travel paradoxes,@footnote{Not to mention +difficult implementation issues.} neither @code{FUNCTAB} nor @code{SYMTAB} is available as an element within the @code{SYMTAB} array. @end quotation @end table @@ -15220,7 +15234,7 @@ changed. @cindex arguments, command-line @cindex command line, arguments -@DBREF{Auto-set} +@ref{Auto-set} presented the following program describing the information contained in @code{ARGC} and @code{ARGV}: @@ -15290,12 +15304,12 @@ use the @code{delete} statement to remove elements from All of these actions are typically done in the @code{BEGIN} rule, before actual processing of the input begins. -@DBXREF{Split Program} and +@xref{Split Program} and @ifnotdocbook -@DBPXREF{Tee Program} +@pxref{Tee Program} @end ifnotdocbook @ifdocbook -@DBREF{Tee Program} +@ref{Tee Program} @end ifdocbook for examples of each way of removing elements from @code{ARGV}. @@ -15345,20 +15359,20 @@ gawk -f myprog.awk -q -v file1 file2 @dots{} @noindent Because @option{-q} is not a valid @command{gawk} option, it and the following @option{-v} are passed on to the @command{awk} program. -(@DBXREF{Getopt Function} for an @command{awk} library function that +(@xref{Getopt Function} for an @command{awk} library function that parses command-line options.) When designing your program, you should choose options that don't conflict with @command{gawk}'s, because it will process any options that it accepts before passing the rest of the command line on to your program. Using @samp{#!} with the @option{-E} option may help -(@DBPXREF{Executable Scripts} +(@pxref{Executable Scripts} and @ifnotdocbook -@DBPXREF{Options}). +@pxref{Options}). @end ifnotdocbook @ifdocbook -@DBREF{Options}). +@ref{Options}). @end ifdocbook @node Pattern Action Summary @@ -15965,7 +15979,7 @@ the word as the index. The second rule scans the elements of @code{used} to find all the distinct words that appear in the input. It prints each word that is more than 10 characters long and also prints the number of such words. -@DBXREF{String Functions} +@xref{String Functions} for more information on the built-in function @code{length()}. @example @@ -15988,7 +16002,7 @@ END @{ @end example @noindent -@DBXREF{Word Sorting} +@xref{Word Sorting} for a more detailed example of this type. @cindex arrays, elements, order of access by @code{in} operator @@ -16736,7 +16750,7 @@ for (i in a) @{ @end example @noindent -@DBXREF{Walking Arrays} for a user-defined function that ``walks'' an +@xref{Walking Arrays} for a user-defined function that ``walks'' an arbitrarily dimensioned array of arrays. Recall that a reference to an uninitialized array element yields a value @@ -16845,10 +16859,9 @@ be called. @node Built-in @section Built-in Functions -@dfn{Built-in} functions are always available for -your @command{awk} program to call. This @value{SECTION} defines all -the built-in -functions in @command{awk}; some of these are mentioned in other sections +@dfn{Built-in} functions are always available for your @command{awk} +program to call. This @value{SECTION} defines all the built-in functions +in @command{awk}; some of these are mentioned in other @value{SECTION}s but are summarized here for your convenience. @menu @@ -17124,7 +17137,7 @@ together. The following description ignores the third argument, @var{how}, as it requires understanding features that we have not discussed yet. Thus, the discussion here is a deliberate simplification. (We do provide all -the details later on; see @DBREF{Array Sorting Functions} for the full story.) +the details later on; see @ref{Array Sorting Functions} for the full story.) @end quotation Both functions return the number of elements in the array @var{source}. @@ -17299,7 +17312,7 @@ contrast, @code{length(15 * 35)} works out to three. In this example, @end ifnotdocbook @end ifnottex @docbook -15 ⋅ 35 = 525, @c +15 ⋅ 35 = 525, @end docbook and 525 is then converted to the string @code{"525"}, which has three characters. @@ -17371,7 +17384,7 @@ at which that substring begins (one, if it starts at the beginning of The @var{regexp} argument may be either a regexp constant (@code{/}@dots{}@code{/}) or a string constant (@code{"}@dots{}@code{"}). In the latter case, the string is treated as a regexp to be matched. -@DBXREF{Computed Regexps} for a +@xref{Computed Regexps} for a discussion of the difference between the two forms, and the implications for writing your program correctly. @@ -17568,7 +17581,7 @@ Modern implementations of @command{awk}, including @command{gawk}, allow the third argument to be a regexp constant (@w{@code{/}@dots{}@code{/}}) as well as a string. @value{DARKCORNER} The POSIX standard allows this as well. -@DBXREF{Computed Regexps} for a +@xref{Computed Regexps} for a discussion of the difference between using a string constant or a regexp constant, and the implications for writing your program correctly. @@ -17619,7 +17632,7 @@ Using the @code{strtonum()} function is @emph{not} the same as adding zero to a string value; the automatic coercion of strings to numbers works only for decimal data, not for octal or hexadecimal.@footnote{Unless you use the @option{--non-decimal-data} option, which isn't recommended. -@DBXREF{Nondecimal Data} for more information.} +@xref{Nondecimal Data} for more information.} Note also that @code{strtonum()} uses the current locale's decimal point for recognizing numbers (@pxref{Locales}). @@ -17637,7 +17650,7 @@ Return the number of substitutions made (zero or one). The @var{regexp} argument may be either a regexp constant (@code{/}@dots{}@code{/}) or a string constant (@code{"}@dots{}@code{"}). In the latter case, the string is treated as a regexp to be matched. -@DBXREF{Computed Regexps} for a +@xref{Computed Regexps} for a discussion of the difference between the two forms, and the implications for writing your program correctly. @@ -18093,7 +18106,7 @@ that had been its behavior for many years. When @value{PVERSION} 4.0.0 was released, the @command{gawk} maintainer made the POSIX rules the default, breaking well over a decade's worth of backward compatibility.@footnote{This was rather naive of him, despite -there being a note in this section indicating that the next major version +there being a note in this @value{SECTION} indicating that the next major version would move to the POSIX rules.} Needless to say, this was a bad idea, and as of @value{PVERSION} 4.0.1, @command{gawk} resumed its historical behavior, and only follows the POSIX rules when @option{--posix} is given. @@ -18174,7 +18187,7 @@ Optional parameters are enclosed in square brackets ([ ]): Close the file @var{filename} for input or output. Alternatively, the argument may be a shell command that was used for creating a coprocess, or for redirecting to or from a pipe; then the coprocess or pipe is closed. -@DBXREF{Close Files And Pipes} +@xref{Close Files And Pipes} for more information. When closing a coprocess, it is occasionally useful to first close @@ -18355,7 +18368,7 @@ it is all buffered and sent down the pipe to @command{cat} in one shot. @cindex interacting with other programs Execute the operating system command @var{command} and then return to the @command{awk} program. -Return @var{command}'s exit status. +Return @var{command}'s exit status (see further on). For example, if the following fragment of code is put in your @command{awk} program: @@ -18394,6 +18407,34 @@ When @option{--sandbox} is specified, the @code{system()} function is disabled (@pxref{Options}). @end quotation +On POSIX systems, a command's exit status is a 16-bit number. The exit +value passed to the C @code{exit()} function is held in the high-order +eight bits. The low-order bits indicate if the process was killed by a +signal (bit 7) and if so, the guilty signal number (bits 0--6). + +Traditionally, @command{awk}'s @code{system()} function has simply +returned the exit status value divided by 256. In the normal case this +gives the exit status but in the case of death-by-signal it yields +a fractional floating-point value.@footnote{In private correspondence, +Dr.@: Kernighan has indicated to me that the way this was done +was probably a mistake.} POSIX states that @command{awk}'s +@code{system()} should return the full 16-bit value. + +@command{gawk} steers a middle ground. +The return values are summarized in @ref{table-system-return-values}. + +@float Table,table-system-return-values +@caption{Return values from @code{system()}} +@multitable @columnfractions .40 .60 +@headitem Situation @tab Return value from @code{system()} +@item @option{--traditional} @tab C @code{system()}'s value divided by 256 +@item @option{--posix} @tab C @code{system()}'s value +@item Normal exit of command @tab Command's exit status +@item Death by signal of command @tab 256 + number of murderous signal +@item Death by signal of command with core dump @tab 512 + number of murderous signal +@item Some kind of error @tab @minus{}1 +@end multitable +@end float @end table @cindex sidebar, Controlling Output Buffering with @code{system()} @@ -18550,19 +18591,18 @@ All known POSIX-compliant systems support timestamps from 0 through @iftex @math{2^{31} - 1}, @end iftex -@ifnottex -@ifnotdocbook +@ifinfo 2^31 - 1, -@end ifnotdocbook +@end ifinfo +@ifnottex +@ifnotinfo +2@sup{31} @minus{} 1, +@end ifnotinfo @end ifnottex -@docbook -231 − 1, @c -@end docbook which is sufficient to represent times through 2038-01-19 03:14:07 UTC. Many systems support a wider range of timestamps, including negative timestamps that represent times before the epoch. -@c FIXME: Use @sup here for superscript @cindex @command{date} utility, GNU @cindex time, retrieving @@ -19175,7 +19215,7 @@ $ @kbd{gawk -f testbits.awk} @print{} 123 = 01111011 @print{} 0123 = 01010011 @print{} 0x99 = 10011001 -@print{} compl(0x99) = 0xffffff66 = 11111111111111111111111101100110 +@print{} compl(0x99) = 0x3fffffffffff66 = 00111111111111111111111111111111111111111111111101100110 @print{} lshift(0x99, 2) = 0x264 = 0000001001100100 @print{} rshift(0x99, 2) = 0x26 = 00100110 @end example @@ -20463,7 +20503,7 @@ It contains the following chapters: @cindex functions, library @cindex functions, user-defined, library of -@DBREF{User-defined} describes how to write +@ref{User-defined} describes how to write your own @command{awk} functions. Writing functions is important, because it allows you to encapsulate algorithms and program tasks in a single place. It simplifies programming, making program development more @@ -20496,7 +20536,7 @@ use these functions. The functions are presented here in a progression from simple to complex. @cindex Texinfo -@DBREF{Extract Program} +@ref{Extract Program} presents a program that you can use to extract the source code for these example library functions and programs from the Texinfo source for this @value{DOCUMENT}. @@ -20648,7 +20688,7 @@ A different convention, common in the Tcl community, is to use a single associative array to hold the values needed by the library function(s), or ``package.'' This significantly decreases the number of actual global names in use. For example, the functions described in -@DBREF{Passwd Functions} +@ref{Passwd Functions} might have used array elements @code{@w{PW_data["inited"]}}, @code{@w{PW_data["total"]}}, @code{@w{PW_data["count"]}}, and @code{@w{PW_data["awklib"]}}, instead of @code{@w{_pw_inited}}, @code{@w{_pw_awklib}}, @code{@w{_pw_total}}, @@ -21207,7 +21247,7 @@ more difficult than they really need to be.} @cindex timestamps, formatted @cindex time, managing The @code{systime()} and @code{strftime()} functions described in -@DBREF{Time Functions} +@ref{Time Functions} provide the minimum functionality necessary for dealing with the time of day in human-readable form. Although @code{strftime()} is extensive, the control formats are not necessarily easy to remember or intuitively obvious when @@ -21293,7 +21333,7 @@ function getlocaltime(time, ret, now, i) The string indices are easier to use and read than the various formats required by @code{strftime()}. The @code{alarm} program presented in -@DBREF{Alarm Program} +@ref{Alarm Program} uses this function. A more general design for the @code{getlocaltime()} function would have allowed the user to supply an optional timestamp value to use instead @@ -21360,7 +21400,7 @@ will never match if the file has contents. @command{gawk} reads data from the file into @code{tmp}, attempting to match @code{RS}. The match fails after each read, but fails quickly, such that @command{gawk} fills @code{tmp} with the entire contents of the file. -(@DBXREF{Records} for information on @code{RT} and @code{RS}.) +(@xref{Records} for information on @code{RT} and @code{RS}.) In the case that @code{file} is empty, the return value is the null string. Thus, calling code may use something like: @@ -21374,7 +21414,7 @@ if (length(contents) == 0) This tests the result to see if it is empty or not. An equivalent test would be @samp{contents == ""}. -@DBXREF{Extension Sample Readfile} for an extension function that +@xref{Extension Sample Readfile} for an extension function that also reads an entire file into memory. @node Shell Quoting @@ -21573,7 +21613,7 @@ END @{ endfile(_filename_) @} @c endfile @end example -@DBREF{Wc Program} +@ref{Wc Program} shows how this library function can be used and how it simplifies writing the main program. @@ -21677,6 +21717,36 @@ Because of this, you should not call it from an @code{ENDFILE} rule. (This isn't necessary anyway, because @command{gawk} goes to the next file as soon as an @code{ENDFILE} rule finishes!) +You need to be careful calling @code{rewind()}. You can end up +causing infinite recursion if you don't pay attention. Here is an +example use: + +@example +$ @kbd{cat data} +@print{} a +@print{} b +@print{} c +@print{} d +@print{} e + +$ cat @kbd{test.awk} +@print{} FNR == 3 && ! rewound @{ +@print{} rewound = 1 +@print{} rewind() +@print{} @} +@print{} +@print{} @{ print FILENAME, FNR, $0 @} + +$ @kbd{gawk -f rewind.awk -f test.awk data } +@print{} data 1 a +@print{} data 2 b +@print{} data 1 a +@print{} data 2 b +@print{} data 3 c +@print{} data 4 d +@print{} data 5 e +@end example + @node File Checking @subsection Checking for Readable @value{DDF}s @@ -22201,7 +22271,7 @@ Using @samp{#!} with the @option{-E} option may help avoid conflicts between your program's options and @command{gawk}'s options, as @option{-E} causes @command{gawk} to abandon processing of further options -(@DBPXREF{Executable Scripts} and +(@pxref{Executable Scripts} and @ifnotdocbook @pxref{Options}). @end ifnotdocbook @@ -22229,7 +22299,7 @@ However, because these are numbers, they do not provide very useful information to the average user. There needs to be some way to find the user information associated with the user and group ID numbers. This @value{SECTION} presents a suite of functions for retrieving information from the -user database. @DBXREF{Group Functions} +user database. @xref{Group Functions} for a similar suite that retrieves information from the group database. @cindex @code{getpwent()} function (C library) @@ -22305,11 +22375,7 @@ main(int argc, char **argv) @c endfile @ignore @c file eg/lib/pwcat.c -#ifdef ZOS_USS - printf("%s:%ld:%ld:%s:%s\n", - p->pw_name, (long) p->pw_uid, - (long) p->pw_gid, p->pw_dir, p->pw_shell); -#else +#ifdef HAVE_STRUCT_PASSWD_PW_PASSWD @c endfile @end ignore @c file eg/lib/pwcat.c @@ -22319,6 +22385,10 @@ main(int argc, char **argv) @c endfile @ignore @c file eg/lib/pwcat.c +#else + printf("%s:*:%ld:%ld:%s:%s\n", + p->pw_name, (long) p->pw_uid, + (long) p->pw_gid, p->pw_dir, p->pw_shell); #endif @c endfile @end ignore @@ -22563,7 +22633,7 @@ once. If you are worried about squeezing every last cycle out of your this is not necessary, as most @command{awk} programs are I/O-bound, and such a change would clutter up the code. -The @command{id} program in @DBREF{Id Program} +The @command{id} program in @ref{Id Program} uses these functions. @node Group Functions @@ -22581,7 +22651,7 @@ uses these functions. @cindex group file @cindex files, group Much of the discussion presented in -@DBREF{Passwd Functions} +@ref{Passwd Functions} applies to the group database as well. Although there has traditionally been a well-known file (@file{/etc/group}) in a well-known format, the POSIX standard only provides a set of C library routines @@ -22638,9 +22708,7 @@ main(int argc, char **argv) @c endfile @ignore @c file eg/lib/grcat.c -#ifdef ZOS_USS - printf("%s:%ld:", g->gr_name, (long) g->gr_gid); -#else +#ifdef HAVE_STRUCT_GROUP_GR_PASSWD @c endfile @end ignore @c file eg/lib/grcat.c @@ -22649,6 +22717,8 @@ main(int argc, char **argv) @c endfile @ignore @c file eg/lib/grcat.c +#else + printf("%s:*:%ld:", g->gr_name, (long) g->gr_gid); #endif @c endfile @end ignore @@ -22918,13 +22988,13 @@ Most of the work is in scanning the database and building the various associative arrays. The functions that the user calls are themselves very simple, relying on @command{awk}'s associative arrays to do work. -The @command{id} program in @DBREF{Id Program} +The @command{id} program in @ref{Id Program} uses these functions. @node Walking Arrays @section Traversing Arrays of Arrays -@DBREF{Arrays of Arrays} described how @command{gawk} +@ref{Arrays of Arrays} described how @command{gawk} provides arrays of arrays. In particular, any element of an array may be either a scalar or another array. The @code{isarray()} function (@pxref{Type Functions}) @@ -23134,8 +23204,10 @@ END @{ As a related challenge, revise that code to handle the case where an intervening value in @code{ARGV} is a variable assignment. +@ignore +@c June 13 2015: Antonio points out that this is answered in the text. Ooops. @item -@DBREF{Walking Arrays} presented a function that walked a multidimensional +@ref{Walking Arrays} presented a function that walked a multidimensional array to print it out. However, walking an array and processing each element is a general-purpose operation. Generalize the @code{walk_array()} function by adding an additional parameter named @@ -23151,6 +23223,7 @@ and then processes the element. Test your new version by printing the array; you should end up with output identical to that of the original version. +@end ignore @end enumerate @c EXCLUDE END @@ -23168,7 +23241,7 @@ presenting a potpourri of @command{awk} programs for your reading enjoyment. @c FULLXREF OFF @ifnotinfo -There are three sections. +There are three @value{SECTION}s. The first describes how to run the programs presented in this @value{CHAPTER}. @@ -23370,7 +23443,7 @@ BEGIN @{ " for delimiter\n", Optarg) > "/dev/stderr" Optarg = substr(Optarg, 1, 1) @} - FS = Optarg + fs = FS = Optarg OFS = FS if (FS == " ") # defeat awk semantics FS = "[ ]" @@ -23392,7 +23465,12 @@ special care when the field delimiter is a space. Using a single space (@code{@w{" "}}) for the value of @code{FS} is incorrect---@command{awk} would separate fields with runs of spaces, TABs, and/or newlines, and we want them to be separated with individual -spaces. Also remember that after @code{getopt()} is through +spaces. +To this end, we save the original space character in the variable +@code{fs} for later use; after setting @code{FS} to @code{"[ ]"} we can't +use it directly to see if the field delimiter character is in the string. + +Also remember that after @code{getopt()} is through (as described in @ref{Getopt Function}), we have to clear out all the elements of @code{ARGV} from 1 to @code{Optind}, @@ -23544,7 +23622,7 @@ written out between the fields: @example @c file eg/prog/cut.awk @{ - if (by_fields && suppress && index($0, FS) == 0) + if (by_fields && suppress && index($0, fs) == 0) next for (i = 1; i <= nfields; i++) @{ @@ -24609,7 +24687,7 @@ BEGIN @{ if (! do_lines && ! do_words && ! do_chars) do_lines = do_words = do_chars = 1 - print_total = (ARGC - i > 2) + print_total = (ARGC - i > 1) @} @c endfile @end example @@ -25158,7 +25236,7 @@ of lines on the page @end ifnotdocbook @end ifnottex @docbook -(20 ⋅ 5 = 100). @c +(20 ⋅ 5 = 100). @end docbook Most of the work is done in the @code{printpage()} function. @@ -25544,7 +25622,7 @@ that prints a nice message: @@example @@c file examples/messages.awk BEGIN @@@{ print "Don't panic!" @@@} -@@c end file +@@c endfile @@end example It also prints some final advice: @@ -25552,7 +25630,7 @@ It also prints some final advice: @@example @@c file examples/messages.awk END @@@{ print "Always avoid bored archaeologists!" @@@} -@@c end file +@@c endfile @@end example @dots{} @end example @@ -26537,7 +26615,7 @@ the separator can considerably simplify such tasks. @item The examples here demonstrate the usefulness of the library -functions from @DBREF{Library Functions} +functions from @ref{Library Functions} for a number of real (if small) programs. @item @@ -26868,7 +26946,7 @@ Often, though, it is desirable to be able to loop over the elements in a particular order that you, the programmer, choose. @command{gawk} lets you do this. -@DBREF{Controlling Scanning} describes how you can assign special, +@ref{Controlling Scanning} describes how you can assign special, predefined values to @code{PROCINFO["sorted_in"]} in order to control the order in which @command{gawk} traverses an array during a @code{for} loop. @@ -26893,7 +26971,7 @@ Here, @code{i1} and @code{i2} are the indices, and @code{v1} and @code{v2} are the corresponding values of the two elements being compared. Either @code{v1} or @code{v2}, or both, can be arrays if the array being traversed contains subarrays as values. -(@DBXREF{Arrays of Arrays} for more information about subarrays.) +(@xref{Arrays of Arrays} for more information about subarrays.) The three possible return values are interpreted as follows: @table @code @@ -27236,6 +27314,58 @@ is true because locale-based comparison occurs only when in POSIX-compatibility mode, and because @code{asort()} and @code{asorti()} are @command{gawk} extensions, they are not available in that case.} +The following example demonstrates the use of a comparison function with +@code{asort()}. The comparison function, @code{case_fold_compare()}, maps +both values to lowercase in order to compare them ignoring case. + +@example +# case_fold_compare --- compare as strings, ignoring case + +function case_fold_compare(i1, v1, i2, v2, l, r) +@{ + l = tolower(v1) + r = tolower(v2) + + if (l < r) + return -1 + else if (l == r) + return 0 + else + return 1 +@} +@end example + +And here is the test program for it: + +@example +# Test program + +BEGIN @{ + Letters = "abcdefghijklmnopqrstuvwxyz" \ + "ABCDEFGHIJKLMNOPQRSTUVWXYZ" + split(Letters, data, "") + + asort(data, result, "case_fold_compare") + + j = length(result) + for (i = 1; i <= j; i++) @{ + printf("%s", result[i]) + if (i % (j/2) == 0) + printf("\n") + else + printf(" ") + @} +@} +@end example + +When run, we get the following: + +@example +$ @kbd{gawk -f case_fold_compare.awk} +@print{} A a B b c C D d e E F f g G H h i I J j k K l L M m +@print{} n N O o p P Q q r R S s t T u U V v w W X x y Y z Z +@end example + @node Two-way I/O @section Two-Way Communications with Another Process @@ -27402,6 +27532,17 @@ As a side note, the assignment @samp{LC_ALL=C} in the @command{sort} command ensures traditional Unix (ASCII) sorting from @command{sort}. This is not strictly necessary here, but it's good to know how to do this. +Be careful when closing the @code{"from"} end of a two-way pipe; in this +case @command{gawk} waits for the child process to exit, which may cause +your program to hang. (Thus, this particular feature is of much less +use in practice than being able to close the @code{"to"} end.) + +@quotation CAUTION +It is a fatal error to write to the @code{"to"} end of a two-way +pipe which has been closed. It is also a fatal error to read +from the @code{"from"} end of a two-way pipe that has been closed. +@end quotation + @cindex @command{gawk}, @code{PROCINFO} array in @cindex @code{PROCINFO} array, and communications via ptys You may also use pseudo-ttys (ptys) for @@ -27419,10 +27560,27 @@ print @dots{} |& command # start two-way pipe @end example @noindent -Using ptys usually avoids the buffer deadlock issues described earlier, at some -loss in performance. If your system does not have ptys, or if all the -system's ptys are in use, @command{gawk} automatically falls back to -using regular pipes. +If your system does not have ptys, or if all the system's ptys are in use, +@command{gawk} automatically falls back to using regular pipes. + +Using ptys usually avoids the buffer deadlock issues described earlier, +at some loss in performance. This is because the tty driver buffers +and sends data line-by-line. On systems with the @command{stdbuf} +(part of the @uref{http://www.gnu.org/software/coreutils/coreutils.html, +GNU Coreutils package}), you can use that program instead of ptys. + +Note also that ptys are not fully transparent. Certain binary control +codes, such @kbd{Ctrl-d} for end-of-file, are interpreted by the tty +driver and not passed through. + +@quotation CAUTION +Finally, coprocesses open up the possibility of @dfn{deadlock} between +@command{gawk} and the program running in the coprocess. This can occur +if you send ``too much'' data to the coprocess before reading any back; +each process is blocked writing data with noone available to read what +they've already written. There is no workaround for deadlock; careful +programming and knowledge of the behavior of the coprocess are required. +@end quotation @node TCP/IP Networking @section Using @command{gawk} for Network Programming @@ -27435,7 +27593,7 @@ using regular pipes. @cindex files, @code{/inet4/@dots{}} (@command{gawk}) @cindex @code{/inet6/@dots{}} special files (@command{gawk}) @cindex files, @code{/inet6/@dots{}} (@command{gawk}) -@cindex @code{EMISTERED} +@cindex @code{EMRED} @ifnotdocbook @quotation @code{EMRED}:@* @@ -27450,7 +27608,7 @@ using regular pipes. @docbook
Mike O'Brien (aka Mr. Protocol) -EMISTERED: +EMRED:     A host is a host from coast to coast,     and no-one can talk to host that's close,     unless the host that isn't close @@ -27544,6 +27702,12 @@ which comes as part of the @command{gawk} distribution, for a much more complete introduction and discussion, as well as extensive examples. +@quotation NOTE +@command{gawk} can only open direct sockets. There is currently +no way to access services available over Secure Socket Layer +(SSL); this includes any web service whose URL starts with @samp{https://}. +@end quotation + @node Profiling @section Profiling Your @command{awk} Programs @@ -28150,6 +28314,26 @@ before or after the day in a date, local month abbreviations, and so on. All of the above. (Not too useful in the context of @command{gettext}.) @end table +@quotation NOTE +@cindex @env{LANGUAGE} environment variable +As described in @ref{Locales}, environment variables with the same +name as the locale categories (@env{LC_CTYPE}, @env{LC_ALL}, etc.) +influence @command{gawk}'s behavior (and that of other utilities). + +Normally, these variables also affect how the @code{gettext} library +finds translations. However, the @env{LANGUAGE} environment variable +overrides the @env{LC_@var{xxx}} variables. Many GNU/Linux systems +may define this variable without your knowledge, causing @command{gawk} +to not find the correct translations. If this happens to you, +look to see if @env{LANGUAGE} is defined, and if so, use the shell's +@command{unset} command to remove it. +@end quotation + +For testing translations of @command{gawk} itself, you can set +the @env{GAWK_LOCALE_DIR} environment variable. See the documentation +for the C @code{bindtextdomain()} function and also see +@ref{Other Environment Variables}. + @node Programmer i18n @section Internationalizing @command{awk} Programs @cindex @command{awk} programs, internationalizing @@ -28317,7 +28501,7 @@ BEGIN @{ @end enumerate -@DBXREF{I18N Example} +@xref{I18N Example} for an example program showing the steps to create and use translations from @command{awk}. @@ -28378,7 +28562,7 @@ second argument to @code{dcngettext()}.@footnote{The You should distribute the generated @file{.pot} file with your @command{awk} program; translators will eventually use it to provide you translations that you can also then distribute. -@DBXREF{I18N Example} +@xref{I18N Example} for the full list of steps to go through to create and test translations for @command{guide}. @@ -29906,6 +30090,12 @@ gawk> @kbd{dump} gawk> @end smallexample +@cindex @code{exit} debugger command +@cindex exit the debugger +@item @code{exit} +Exit the debugger. +See the entry for @samp{quit}, later in this list. + @cindex debugger commands, @code{h} (@code{help}) @cindex debugger commands, @code{help} @cindex @code{help} debugger command @@ -30220,31 +30410,16 @@ signed. The possible ranges of values are shown in @ref{table-numeric-ranges}. @item Single-precision floating point (approximate) @tab @math{1.175494^{-38}} @tab @math{3.402823^{38}} @item Double-precision floating point (approximate) @tab @math{2.225074^{-308}} @tab @math{1.797693^{308}} @end iftex -@ifnottex -@ifnotdocbook +@ifinfo @item Single-precision floating point (approximate) @tab 1.175494e-38 @tab 3.402823e38 @item Double-precision floating point (approximate) @tab 2.225074e-308 @tab 1.797693e308 -@end ifnotdocbook +@end ifinfo +@ifnottex +@ifnotinfo +@item Single-precision floating point (approximate) @tab 1.175494@sup{-38} @tab 3.402823@sup{38} +@item Double-precision floating point (approximate) @tab 2.225074@sup{-308} @tab 1.797693@sup{308} +@end ifnotinfo @end ifnottex -@ifdocbook -@item Single-precision floating point (approximate) @tab -@c FIXME: Use @sup here for superscript -@docbook -1.175494-38 -@end docbook -@tab -@docbook -3.40282338 -@end docbook -@item Double-precision floating point (approximate) @tab -@docbook -2.225074-308 -@end docbook -@tab -@docbook -1.797693308 -@end docbook -@end ifdocbook @end multitable @end float @@ -30312,7 +30487,7 @@ formula: @end ifnotdocbook @end ifnottex @docbook -prec = 3.322 ⋅ dps @c +prec = 3.322 ⋅ dps @end docbook @end display @@ -30372,7 +30547,8 @@ one extra bit of significand. By default, @command{gawk} uses the double-precision floating-point values supplied by the hardware of the system it runs on. However, if it was -compiled to do so, @command{gawk} uses the @uref{http://www.mpfr.org, +compiled to do so, and the @option{-M} command-line option is supplied, +@command{gawk} uses the @uref{http://www.mpfr.org, GNU MPFR} and @uref{http://gmplib.org, GNU MP} (GMP) libraries for arbitrary-precision arithmetic on numbers. You can see if MPFR support is available like so: @@ -30403,7 +30579,7 @@ Two predefined variables, @code{PREC} and @code{ROUNDMODE}, provide control over the working precision and the rounding mode. The precision and the rounding mode are set globally for every operation to follow. -@DBXREF{Setting precision} and @DBREF{Setting the rounding mode} +@xref{Setting precision} and @ref{Setting the rounding mode} for more information. @node FP Math Caution @@ -30837,17 +31013,16 @@ the following computes @iftex @math{5^{4^{3^{2}}}}, @end iftex -@ifnottex -@ifnotdocbook +@ifinfo 5^4^3^2, -@end ifnotdocbook +@end ifinfo +@ifnottex +@ifnotinfo +5@sup{4@sup{3@sup{2}}}, +@end ifnotinfo @end ifnottex -@docbook -5432, @c -@end docbook the result of which is beyond the limits of ordinary hardware double-precision floating-point values: -@c FIXME: Use @sup here for superscript @example $ @kbd{gawk -M 'BEGIN @{} @@ -30875,7 +31050,7 @@ would be 3.322 x 183231, @docbook prec = 3.322 ⋅ dps) would be -prec = 3.322 ⋅ 183231, @c +prec = 3.322 ⋅ 183231, @end docbook or 608693. @@ -31305,7 +31480,7 @@ The API also provides major and minor version numbers, so that an extension can check if the @command{gawk} it is loaded with supports the facilities it was compiled with. (Version mismatches ``shouldn't'' happen, but we all know how @emph{that} goes.) -@DBXREF{Extension Versioning} for details. +@xref{Extension Versioning} for details. @end itemize @node Extension API Description @@ -32131,7 +32306,7 @@ it to always be called, and to take effect as appropriate (as the @code{readdir} extension does). Or you may want it to take effect based upon the value of an @command{awk} variable, as the XML extension from the @code{gawkextlib} project does (@pxref{gawkextlib}). -In the latter case, code in a @code{BEGINFILE} section +In the latter case, code in a @code{BEGINFILE} rule can look at @code{FILENAME} and @code{ERRNO} to decide whether or not to activate an input parser (@pxref{BEGINFILE/ENDFILE}). @@ -32296,7 +32471,7 @@ values, etc.) within @command{gawk}. @itemx @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ awk_input_buf_t *inbuf, @itemx @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ awk_output_buf_t *outbuf); The function pointed to by this field should fill in the @code{awk_input_buf_t} and -@code{awk_outut_buf_t} structures pointed to by @code{inbuf} and +@code{awk_output_buf_t} structures pointed to by @code{inbuf} and @code{outbuf}, respectively. These structures were described earlier. @item awk_const struct two_way_processor *awk_const next; @@ -32526,7 +32701,7 @@ indicates the type of value expected. @item awk_bool_t set_argument(size_t count, awk_array_t array); Convert a parameter that was undefined into an array; this provides call by reference for arrays. Return false if @code{count} is too big, -or if the argument's type is not undefined. @DBXREF{Array Manipulation} +or if the argument's type is not undefined. @xref{Array Manipulation} for more information on creating arrays. @end table @@ -32675,7 +32850,7 @@ my_extension_init() @} @end example -Next, use the routines in this section for retrieving and updating +Next, use the routines in this @value{SECTION} for retrieving and updating the value through the cookie. Thus, @code{do_magic()} now becomes something like this: @@ -32707,7 +32882,7 @@ and carefully check the return values from the API functions. @node Cached values @subsubsection Creating and Using Cached Values -The routines in this section allow you to create and release +The routines in this @value{SECTION} allow you to create and release cached values. Like scalar cookies, in theory, cached values are not necessary. You can create numbers and strings using the functions in @ref{Constructor Functions}. You can then @@ -32723,7 +32898,7 @@ are clearly less problematic, requiring only a C @code{double} to store.} It is clearly more efficient, if possible, to create a value once, and then tell @command{gawk} to reuse the value for multiple variables. That -is what the routines in this section let you do. The functions are as follows: +is what the routines in this @value{SECTION} let you do. The functions are as follows: @table @code @item awk_bool_t create_value(awk_value_t *value, awk_value_cookie_t *result); @@ -32944,7 +33119,7 @@ The following functions relate to arrays as a whole: @table @code @item awk_array_t create_array(void); Create a new array to which elements may be added. -@DBXREF{Creating Arrays} for a discussion of how to +@xref{Creating Arrays} for a discussion of how to create a new array and add elements to it. @item awk_bool_t clear_array(awk_array_t a_cookie); @@ -32960,7 +33135,7 @@ structure and fill it in. Set the pointer whose address is passed as @code{data} to point to this structure. Return true upon success, or false otherwise. @ifset FOR_PRINT -See the next section +See the next @value{SECTION} @end ifset @ifclear FOR_PRINT @xref{Flattening Arrays}, @@ -33209,7 +33384,7 @@ into @command{gawk}, you have to retrieve the array cookie from the value passed in to @command{sym_update()} before doing anything else with it, like so: @example -awk_value_t value; +awk_value_t val; awk_array_t new_array; new_array = create_array(); @@ -33373,7 +33548,7 @@ $ @kbd{AWKLIBPATH=$PWD ./gawk -f subarray.awk} @end example @noindent -(@DBXREF{Finding Extensions} for more information on the +(@xref{Finding Extensions} for more information on the @env{AWKLIBPATH} environment variable.) @node Extension API Variables @@ -33396,15 +33571,18 @@ information about how @command{gawk} was invoked. @cindex extension API version The API provides both a ``major'' and a ``minor'' version number. -The API versions are available at compile time as constants: - -@table @code -@item GAWK_API_MAJOR_VERSION -The major version of the API - -@item GAWK_API_MINOR_VERSION -The minor version of the API -@end table +The API versions are available at compile time as C preprocessor defines +to support conditional compilation, and as enum constants to facilitate +debugging: + +@float Table,gawk-api-version +@caption{gawk API version constants} +@multitable @columnfractions .33 .33 .33 +@headitem API Version @tab C preprocessor define @tab enum constant +@item Major @tab gawk_api_major_version @tab GAWK_API_MAJOR_VERSION +@item Minor @tab gawk_api_minor_version @tab GAWK_API_MINOR_VERSION +@end multitable +@end float The minor version increases when new functions are added to the API. Such new functions are always added to the end of the API @code{struct}. @@ -33608,7 +33786,7 @@ Compiled extensions have to be installed in a directory where built in the default fashion, the directory in which to find extensions is @file{/usr/local/lib/gawk}. You can also specify a search path with a list of directories to search for compiled extensions. -@DBXREF{AWKLIBPATH Variable} for more information. +@xref{AWKLIBPATH Variable} for more information. @node Extension Example @section Example: Some File Functions @@ -34187,7 +34365,7 @@ of the @file{gawkapi.h} header file, the following steps@footnote{In practice, you would probably want to use the GNU Autotools (Automake, Autoconf, Libtool, and @command{gettext}) to configure and build your libraries. Instructions for doing so are beyond -the scope of this @value{DOCUMENT}. @DBXREF{gawkextlib} for Internet links to +the scope of this @value{DOCUMENT}. @xref{gawkextlib} for Internet links to the tools.} create a GNU/Linux shared library: @example @@ -34590,17 +34768,31 @@ properly: # Please set INPLACE_SUFFIX to make a backup copy. For example, you may # want to set INPLACE_SUFFIX to .bak on the command line or in a BEGIN rule. +# By default, each filename on the command line will be edited inplace. +# But you can selectively disable this by adding an inplace=0 argument +# prior to files that you do not want to process this way. You can then +# reenable it later on the commandline by putting inplace=1 before files +# that you wish to be subject to inplace editing. + # N.B. We call inplace_end() in the BEGINFILE and END rules so that any # actions in an ENDFILE rule will be redirected as expected. +BEGIN @{ + inplace = 1 # enabled by default +@} + BEGINFILE @{ if (_inplace_filename != "") inplace_end(_inplace_filename, INPLACE_SUFFIX) - inplace_begin(_inplace_filename = FILENAME, INPLACE_SUFFIX) + if (inplace) + inplace_begin(_inplace_filename = FILENAME, INPLACE_SUFFIX) + else + _inplace_filename = "" @} END @{ - inplace_end(FILENAME, INPLACE_SUFFIX) + if (_inplace_filename != "") + inplace_end(_inplace_filename, INPLACE_SUFFIX) @} @end group @c endfile @@ -34614,6 +34806,11 @@ If @code{INPLACE_SUFFIX} is not an empty string, the original file is linked to a backup @value{FN} created by appending that suffix. Finally, the temporary file is renamed to the original @value{FN}. +Note that the use of this feature can be controlled by placing @samp{inplace=0} +on the command-line prior to listing files that should not be processed this +way. You can reenable inplace editing by adding an @samp{inplace=1} argument +prior to files that should be subject to inplace editing. + The @code{_inplace_filename} variable serves to keep track of the current filename so as to not invoke @code{inplace_end()} before processing the first file. @@ -34634,6 +34831,10 @@ $ @kbd{gawk -i inplace -v INPLACE_SUFFIX=.bak '@{ gsub(/foo/, "bar") @}} > @kbd{@{ print @}' file1 file2 file3} @end example +Please note that, while the extension does attempt to preserve ownership and permissions, it makes no attempt to copy the ACLs from the original file. + +If the program dies prematurely, as might happen if an unhandled signal is received, a temporary file may be left behind. + @node Extension Sample Ord @subsection Character and Numeric values: @code{ord()} and @code{chr()} @@ -35112,7 +35313,7 @@ function to tell if the input file is a terminal. (Hint: this function is usually expensive to call; try to call it just once.) The content of the prompt should come from a variable settable by @command{awk}-level code. -You can write the prompt to stanard error. However, +You can write the prompt to standard error. However, for best results, open a new file descriptor (or file pointer) on @file{/dev/tty} and print the prompt there, in case standard error has been redirected. @@ -35241,7 +35442,7 @@ User-defined functions and the @code{return} statement (@pxref{User-defined}) @item -The @code{delete} statement (@pxref{Delete}). +The @code{delete} statement (@pxref{Delete}) @item The @code{do}-@code{while} statement @@ -35418,7 +35619,7 @@ The ability to delete all of an array at once with @samp{delete @var{array}} @end itemize -@DBXREF{Common Extensions} for a list of common extensions +@xref{Common Extensions} for a list of common extensions not permitted by the POSIX standard. The 2008 POSIX standard can be found online at @@ -35463,7 +35664,7 @@ or array elements through it @end ignore @end itemize -@DBXREF{Common Extensions} for a full list of the extensions +@xref{Common Extensions} for a full list of the extensions available in his @command{awk}. @node POSIX/GNU @@ -35514,7 +35715,7 @@ The @file{/dev/stdin}, @file{/dev/stdout}, @file{/dev/stderr}, and (@pxref{Special Files}) @item -The @file{/inet}, @file{/inet4}, and @samp{/inet6} special files for +The @file{/inet}, @file{/inet4}, and @file{/inet6} special files for TCP/IP networking using @samp{|&} to specify which version of the IP protocol to use (@pxref{TCP/IP Networking}) @@ -36375,7 +36576,7 @@ The @option{-R} option was removed. @end itemize @item -Support for high precision arithmetic with MPFR. +Support for high precision arithmetic with MPFR (@pxref{Arbitrary Precision Arithmetic}). @item @@ -36641,14 +36842,13 @@ provided the port to Amiga systems and its documentation. @item @cindex Deifik, Scott Scott Deifik -currently maintains the MS-DOS port using DJGPP. +maintained the MS-DOS port using DJGPP. @item @cindex Zaretskii, Eli Eli Zaretskii currently maintains the MS-Windows port using MinGW. - @item @cindex Grigera, Juan Juan Grigera @@ -36847,7 +37047,7 @@ This appendix provides instructions for installing @command{gawk} on the various platforms that are supported by the developers. The primary developer supports GNU/Linux (and Unix), whereas the other ports are contributed. -@DBXREF{Bugs} +@xref{Bugs} for the email addresses of the people who maintain the respective ports. @@ -36906,6 +37106,9 @@ The up-to-date list of mirror sites is available from Try to use one of the mirrors; they will be less busy, and you can usually find one closer to your site. +You may also retrieve the @command{gawk} source code from the official +Git repository; for more information see @ref{Accessing The Source}. + @node Extracting @appendixsubsec Extracting the Distribution @command{gawk} is distributed as several @code{tar} files compressed with @@ -37111,7 +37314,7 @@ source file for this @value{DOCUMENT}. It also contains a @file{Makefile.in} fil The library functions from @ref{Library Functions}, and the @command{igawk} program from -@DBREF{Igawk Program} +@ref{Igawk Program} are included as ready-to-use files in the @command{gawk} distribution. They are installed as part of the installation process. The rest of the programs in this @value{DOCUMENT} are available in appropriate @@ -37130,11 +37333,11 @@ Files needed for building @command{gawk} under MS-Windows @ifclear FOR_PRINT and OS/2 @end ifclear -(@DBPXREF{PC Installation} for details). +(@pxref{PC Installation} for details). @item vms/* Files needed for building @command{gawk} under Vax/VMS and OpenVMS -(@DBPXREF{VMS Installation} for details). +(@pxref{VMS Installation} for details). @item test/* A test suite for @@ -37335,7 +37538,7 @@ Autoconf will not work on your system in some other fashion. If you do have a problem, the @file{configure.ac} file is the input for Autoconf. You may be able to change this file and generate a new version of @command{configure} that works on your system -(@DBPXREF{Bugs} +(@pxref{Bugs} for information on how to report problems in configuring @command{gawk}). The same mechanism may be used to send in updates to @file{configure.ac} and/or @file{custom.h}. @@ -37435,13 +37638,13 @@ or more detailed installation instructions. @appendixsubsubsec Compiling @command{gawk} for PC Operating Systems @ifclear FOR_PRINT -@command{gawk} can be compiled for MS-DOS, Windows32, and OS/2 using the GNU -development tools from DJ Delorie (DJGPP: MS-DOS only), MinGW (Windows32) or Eberhard +@command{gawk} can be compiled for MS-DOS, Windows32, and OS/2 using +MinGW (Windows32) or Eberhard Mattes (EMX: MS-DOS, Windows32 and OS/2). @end ifclear @ifset FOR_PRINT -@command{gawk} can be compiled for MS-DOS and Windows32 using the GNU -development tools from DJ Delorie (DJGPP: MS-DOS only) or MinGW (Windows32). +@command{gawk} can be compiled for Windows32 using +MinGW. @end ifset The file @file{README_d/README.pc} in the @command{gawk} distribution contains @@ -37459,10 +37662,8 @@ to be edited in order to work with your @command{make} utility. The @file{Makefile} supports a number of targets for building various MS-DOS and Windows32 versions. A list of targets is printed if the -@command{make} command is given without a target. As an example, to -build @command{gawk} using the DJGPP tools, enter @samp{make djgpp}. -(The DJGPP tools needed for the build may be found at -@uref{ftp://ftp.delorie.com/pub/djgpp/current/v2gnu/}.) To build a +@command{make} command is given without a target. As an example, +to build a native MS-Windows binary of @command{gawk} using the MinGW tools, type @samp{make mingw32}. @@ -37611,13 +37812,16 @@ E.g., if @env{UNIXROOT} is set to @file{e:} the complete default search path is An @command{sh}-like shell (as opposed to @command{command.com} under MS-DOS or @command{cmd.exe} under MS-Windows or OS/2) may be useful for @command{awk} programming. -The DJGPP collection of tools includes an MS-DOS port of Bash, +The DJGPP collection of tools@footnote{Available from +@uref{ftp://ftp.delorie.com/pub/djgpp/current/v2gnu/}.} +includes an MS-DOS port of Bash, and several shells are available for OS/2, including @command{ksh}. @end ifclear @ifset FOR_PRINT An @command{sh}-like shell (as opposed to @command{command.com} under MS-DOS or @command{cmd.exe} under MS-Windows) may be useful for @command{awk} programming. -The DJGPP collection of tools includes an MS-DOS port of Bash. +The DJGPP collection of tools@footnote{Available from +@uref{ftp://ftp.delorie.com/pub/djgpp/current/v2gnu/}.} includes an MS-DOS port of Bash. @end ifset @cindex common extensions, @code{BINMODE} variable @@ -37810,7 +38014,7 @@ The most recent builds used HP C V7.3 on Alpha VMS 8.3 and both Alpha and IA64 VMS 8.4 used HP C 7.3.@footnote{The IA64 architecture is also known as ``Itanium.''} -@DBXREF{VMS GNV} for information on building +@xref{VMS GNV} for information on building @command{gawk} as a PCSI kit that is compatible with the GNV product. @node VMS Dynamic Extensions @@ -37966,8 +38170,8 @@ to the original shell-style interface (see the help entry for details). One side effect of dual command-line parsing is that if there is only a single parameter (as in the quoted string program), the command becomes ambiguous. To work around this, the normally optional @option{--} -flag is required to force Unix-style parsing rather than @code{DCL} parsing. If any -other dash-type options (or multiple parameters such as @value{DF}s to +flag is required to force Unix-style parsing rather than @code{DCL} parsing. +If any other dash-type options (or multiple parameters such as @value{DF}s to process) are present, there is no ambiguity and @option{--} can be omitted. @cindex exit status, of VMS @@ -37985,15 +38189,15 @@ added to the number shifted over by 3 bits to make room for the severity codes. To extract the actual @command{gawk} exit code from the VMS status, use: @example -unix_status = (vms_status .and. &x7f8) / 8 +unix_status = (vms_status .and. %x7f8) / 8 @end example @noindent A C program that uses @code{exec()} to call @command{gawk} will get the original Unix-style exit value. -Older versions of @command{gawk} for VMS treated a Unix exit code 0 as 1, a failure -as 2, a fatal error as 4, and passed all the other numbers through. +Older versions of @command{gawk} for VMS treated a Unix exit code 0 as 1, +a failure as 2, a fatal error as 4, and passed all the other numbers through. This violated the VMS exit status coding requirements. @cindex floating-point, VAX/VMS @@ -38014,6 +38218,52 @@ of @env{AWKPATH} is a comma-separated list of directory specifications. When defining it, the value should be quoted so that it retains a single translation and not a multitranslation @code{RMS} searchlist. +@cindex redirection on VMS + +This restriction also applies to running @command{gawk} under GNV, +as redirection is always to a DCL command. + +If you are redirecting data to a VMS command or utility, the current +implementation requires that setting up a VMS foreign command that runs +a command file before invoking @command{gawk}. +(This restriction may be removed in a future release of @command{gawk} on VMS.) + +Without this command file, the input data will also appear prepended +to the output data. + +This also allows simulating POSIX commands that are not found on VMS or the +use of GNV utilities. + +The example below is for @command{gawk} redirecting data to the VMS +@command{sort} command. + +@example +$ sort = "@@device:[dir]vms_gawk_sort.com" +@end example + +The command file needs to be of the format in the example below. + +The first line inhibits the passed input data from also showing up in the +output. It must be in the format in the example. + +The next line creates a foreign command that overrides the outer foreign +command which prevents an infinite recursion of command files. + +The next to the last command redirects @code{sys$input} to be +@code{sys$command}, in order to pick up the data that is being redirected +to the command. + +The last line runs the actual command. It must be the last command as the data +redirected from @command{gawk} will be read when the command file ends. + +@example +$!'f$verify(0,0)' +$ sort := sort +$ define/user sys$input sys$command: +$ sort sys$input: sys$output: +@end example + + @node VMS GNV @appendixsubsubsec The VMS GNV Project @@ -38148,6 +38398,17 @@ CC: chet.ramey@case.edu .... I gave up on usenet a couple of years ago and haven't really looked back. It's like sports talk radio -- you feel smarter for not having read it. + +And another one: + +Date: Thu, 11 Jun 2015 09:00:56 -0400 +From: Chet Ramey + +My memory was imperfect. Back in June 2009, I wrote: + +"That's the nice thing about open source, right? You can take your ball +and run to another section of the playground. Then, if you like mixing +metaphors, you can throw rocks from there." @end ignore @quotation NOTE @@ -38181,12 +38442,13 @@ The people maintaining the various @command{gawk} ports are: @cindex Deifik, Scott @cindex Malmberg, John @cindex Pitts, Dave +@cindex G., Daniel Richard @cindex Robbins, Arnold @cindex Zaretskii, Eli @multitable {MS-Windows with MinGW} {123456789012345678901234567890123456789001234567890} @item Unix and POSIX systems @tab Arnold Robbins, @EMAIL{arnold@@skeeve.com,arnold at skeeve dot com} -@item MS-DOS with DJGPP @tab Scott Deifik, @EMAIL{scottd.mail@@sbcglobal.net,scottd dot mail at sbcglobal dot net} +@c @item MS-DOS with DJGPP @tab Scott Deifik, @EMAIL{scottd.mail@@sbcglobal.net,scottd dot mail at sbcglobal dot net} @item MS-Windows with MinGW @tab Eli Zaretskii, @EMAIL{eliz@@gnu.org,eliz at gnu dot org} @@ -38196,12 +38458,17 @@ The people maintaining the various @command{gawk} ports are: @item VMS @tab John Malmberg, @EMAIL{wb8tyw@@qsl.net,wb8tyw at qsl.net} -@item z/OS (OS/390) @tab Dave Pitts, @EMAIL{dpitts@@cozx.com,dpitts at cozx dot com} +@item z/OS (OS/390) @tab Daniel Richard G.@: @EMAIL{skunk@@iSKUNK.ORG,skunk at iSKUNK.ORG} +@item @tab Dave Pitts (Maintainer Emeritus), @EMAIL{dpitts@@cozx.com,dpitts at cozx dot com} @end multitable If your bug is also reproducible under Unix, send a copy of your report to the @EMAIL{bug-gawk@@gnu.org,bug-gawk at gnu dot org} email list as well. +The DJGPP port is no longer supported; it will remain in the code base for a while in case +a volunteer wishes to take it over. If this does not happen, then eventually code for this +port will be removed. + @node Other Versions @appendixsec Other Freely Available @command{awk} Implementations @cindex @command{awk}, implementations @@ -38271,7 +38538,7 @@ directory named @file{awk}. This version requires an ISO C (1990 standard) compiler; the C compiler from GCC (the GNU Compiler Collection) works quite nicely. -@DBXREF{Common Extensions} +@xref{Common Extensions} for a list of extensions in this @command{awk} that are not in POSIX @command{awk}. As a side note, Dan Bornstein has created a Git repository tracking @@ -38307,7 +38574,7 @@ Once you have it, is similar to @command{gawk}'s (@pxref{Unix Installation}). -@DBXREF{Common Extensions} +@xref{Common Extensions} for a list of extensions in @command{mawk} that are not in POSIX @command{awk}. @cindex Sumner, Andrew @@ -38413,10 +38680,12 @@ This is an independent implementation of @command{awk} distributed under the GPL. It has a large number of extensions over standard @command{awk} and may not be 100% syntactically compatible with it. See @uref{http://www.quiktrim.org/QTawk.html} for more information, -including the manual and a download link. +including the manual. The download link there is out of date; see +@uref{http://www.quiktrim.org/#AdditionalResources} for the latest +download link. The project may also be frozen; no new code changes have been made -since approximately 2008. +since approximately 2014. @item Other versions See also the ``Versions and implementations'' section of the @@ -38442,7 +38711,8 @@ cd gawk-@value{VERSION}.@value{PATCHLEVEL} @item @command{gawk} may be built on non-POSIX systems as well. The currently -supported systems are MS-Windows using DJGPP, MSYS, MinGW, and Cygwin, +supported systems are MS-Windows using +MSYS, MinGW, and Cygwin, @ifclear FOR_PRINT OS/2 using EMX, @end ifclear @@ -38533,7 +38803,7 @@ as well as any considerations you should bear in mind. @appendixsubsec Accessing The @command{gawk} Git Repository As @command{gawk} is Free Software, the source code is always available. -@DBREF{Gawk Distribution} describes how to get and build the formal, +@ref{Gawk Distribution} describes how to get and build the formal, released versions of @command{gawk}. @cindex @command{git} utility @@ -38635,6 +38905,9 @@ Use ANSI/ISO style (prototype) function headers when defining functions. Put the name of the function at the beginning of its own line. @item +Use @samp{#elif} instead of nesting @samp{#if} inside @samp{#else}. + +@item Put the return type of the function, even if it is @code{int}, on the line above the line with the name and arguments of the function. @@ -40446,7 +40719,7 @@ An internal mechanism in @command{gawk} to minimize the amount of memory needed to store the value of string variables. If the value assumed by a variable is used in more than one place, only one copy of the value itself is kept, and the associated reference count is increased when the -same value is used by an additional variable, and decresed when the related +same value is used by an additional variable, and decreased when the related variable is no longer in use. When the reference count goes to zero, the memory space used to store the value of the variable is freed. @@ -41927,7 +42200,7 @@ Consistency issues: awk '{ ... }' - + Do show it when showing command-line arguments, data files, etc, even if there is no output shown. diff --git a/doc/gawkinet.texi b/doc/gawkinet.texi index 1022323..07b117d 100644 --- a/doc/gawkinet.texi +++ b/doc/gawkinet.texi @@ -10,6 +10,11 @@ * Gawkinet: (gawkinet). TCP/IP Internetworking With `gawk'. @end direntry +@c Enable better indexing, requires texindex from Texinfo 6 or later. +@tex +\global\usebracesinindexestrue +@end tex + @iftex @set DOCUMENT book @set CHAPTER chapter @@ -61,18 +66,19 @@ @c pages, I think this is the right decision. ADR. @set TITLE TCP/IP Internetworking with @command{gawk} -@set EDITION 1.3 -@set UPDATE-MONTH December, 2010 +@set EDITION 1.4 +@set UPDATE-MONTH June, 2016 @c gawk versions: -@set VERSION 4.0 -@set PATCHLEVEL 0 +@set VERSION 4.1 +@set PATCHLEVEL 4 @copying This is Edition @value{EDITION} of @cite{@value{TITLE}}, for the @value{VERSION}.@value{PATCHLEVEL} (or later) version of the GNU implementation of AWK. @sp 2 -Copyright (C) 2000, 2001, 2002, 2004, 2009, 2010 Free Software Foundation, Inc. +Copyright (C) 2000, 2001, 2002, 2004, 2009, 2010, 2016 +Free Software Foundation, Inc. @sp 2 Permission is granted to copy, distribute and/or modify this document under the terms of the GNU Free Documentation License, Version 1.3 or @@ -831,17 +837,33 @@ The receiver is almost identical to the TCP receiver: @example # Client BEGIN @{ + print "hi!" |& "/inet/udp/0/localhost/8888" "/inet/udp/0/localhost/8888" |& getline print $0 close("/inet/udp/0/localhost/8888") @} @end example +In the case of UDP, the initial @code{print} command is the one +that actually sends data so that there is a connection. +UDP and ``connection'' sounds strange to anyone +who has learned that UDP is a connectionless protocol. +Here, ``connection'' means that the @code{connect()} system call +has completed its work and completed the ``association'' +between a certain socket and an IP address. Thus there are +subtle differences between @code{connect()} for TCP and UDP; +see the man page for details.@footnote{This subtlety +is just one of many details that are hidden in the socket +API, invisible and intractable for the @command{gawk} user. +The developers are currently considering how to rework the +network facilities to make them easier to understand and use.} + UDP cannot guarantee that the datagrams at the receiving end will arrive in exactly the same order they were sent. Some datagrams could be lost, some doubled, and some out of order. But no overhead is necessary to accomplish this. This unreliable behavior is good enough for tasks -such as data acquisition, logging, and even stateless services like NFS. +such as data acquisition, logging, and even stateless services like +the original versions of NFS. @node TCP Connecting, Troubleshooting, Gawk Special Files, Using Networking @section Establishing a TCP Connection @@ -939,32 +961,6 @@ connects to other services that should give you some response. If you are curious, you should have a look at your @file{/etc/services} file. It could look like this: -@ignore -@multitable {1234567890123} {1234567890123} {123456789012345678901234567890123456789012} -@item Service @strong{name} @tab Service @strong{number} -@item echo @tab 7/tcp @tab echo sends back each line it receives -@item echo @tab 7/udp @tab echo is good for testing purposes -@item discard @tab 9/tcp @tab discard behaves like @file{/dev/null} -@item discard @tab 9/udp @tab discard just throws away each line -@item daytime @tab 13/tcp @tab daytime sends date & time once per connection -@item daytime @tab 13/udp -@item chargen @tab 19/tcp @tab chargen infinitely produces character sets -@item chargen @tab 19/udp @tab chargen is good for testing purposes -@item ftp @tab 21/tcp @tab ftp is the usual file transfer protocol -@item telnet @tab 23/tcp @tab telnet is the usual login facility -@item smtp @tab 25/tcp @tab smtp is the Simple Mail Transfer Protocol -@item finger @tab 79/tcp @tab finger tells you who is logged in -@item www @tab 80/tcp @tab www is the HyperText Transfer Protocol -@item pop2 @tab 109/tcp @tab pop2 is an older version of pop3 -@item pop2 @tab 109/udp -@item pop3 @tab 110/tcp @tab pop3 is the Post Office Protocol -@item pop3 @tab 110/udp @tab pop3 is used for receiving email -@item nntp @tab 119/tcp @tab nntp is the USENET News Transfer Protocol -@item irc @tab 194/tcp @tab irc is the Internet Relay Chat -@item irc @tab 194/udp -@end multitable -@end ignore - @smallexample # /etc/services: # @@ -1054,7 +1050,7 @@ of all users currently logged in, replace @var{name} with an empty string @cindex Linux @cindex GNU/Linux -The final @code{close} command could be safely deleted from +The final @code{close()} command could be safely deleted from the above script, because the operating system closes any open connection by default when a script reaches the end of execution. In order to avoid portability problems, it is best to always close connections explicitly. @@ -1062,59 +1058,6 @@ With the Linux kernel, for example, proper closing results in flushing of buffers. Letting the close happen by default may result in discarding buffers. -@ignore -@c Chuck comments that this seems out of place. He's right. I dunno -@c where to put it though. -@cindex @command{finger} utility -@cindex RFC 1288 -In the early days of the Internet (up until about 1992), you could use -such a program to check if some user in another country was logged in on -a specific machine. -RFC 1288@footnote{@uref{http://www.cis.ohio-state.edu/htbin/rfc/rfc1288.html}} -provides the exact definition of the @command{finger} protocol. -Every contemporary Unix system also has a command named @command{finger}, -which functions as a client for the protocol of the same name. -Still today, some people maintain simple information systems -with this ancient protocol. For example, by typing -@samp{finger quake@@seismo.unr.edu} -you get the latest @dfn{Earthquake Bulletin} for the state of Nevada. - -@cindex Earthquake Bulletin -@smallexample -$ finger quake@@seismo.unr.edu - -[@dots{}] - -DATE-(UTC)-TIME LAT LON DEP MAG COMMENTS -yy/mm/dd hh:mm:ss deg. deg. km - -98/12/14 21:09:22 37.47N 116.30W 0.0 2.3Md 76.4 km S of WARM SPRINGS, NEVA -98/12/14 22:05:09 39.69N 120.41W 11.9 2.1Md 53.8 km WNW of RENO, NEVADA -98/12/15 14:14:19 38.04N 118.60W 2.0 2.3Md 51.0 km S of HAWTHORNE, NEVADA -98/12/17 01:49:02 36.06N 117.58W 13.9 3.0Md 74.9 km SE of LONE PINE, CALIFOR -98/12/17 05:39:26 39.95N 120.87W 6.2 2.6Md 101.6 km WNW of RENO, NEVADA -98/12/22 06:07:42 38.68N 119.82W 5.2 2.3Md 50.7 km S of CARSON CITY, NEVAD -@end smallexample - -@noindent -This output from @command{finger} contains the time, location, depth, -magnitude, and a short comment about -the earthquakes registered in that region during the last 10 days. -In many places today the use of such services is restricted -because most networks have firewalls and proxy servers between them -and the Internet. Most firewalls are programmed to not let -@command{finger} requests go beyond the local network. - -@cindex Coke machine -Another (ab)use of the @command{finger} protocol are several Coke machines -that are connected to the Internet. There is a short list of such -Coke machines.@footnote{@uref{http://ca.yahoo.com/Computers_and_Internet/Internet/Devices_Connected_to_the_Internet/Soda_Machines/}} -You can access them either from the command-line or with a simple -@command{gawk} script. They usually tell you about the different -flavors of Coke and beer available there. If you have an account there, -you can even order some drink this way. -@end ignore - When looking at @file{/etc/services} you may have noticed that the @samp{daytime} service is also available with @samp{udp}. In the earlier example, change @samp{tcp} to @samp{udp}, @@ -1236,8 +1179,8 @@ execute arbitrary commands, anyone would be free to do @samp{rm -rf *}. @node Email, Web page, Setting Up, Using Networking @section Reading Email -@c @cindex RFC 1939 -@c @cindex RFC 821 +@cindex RFC 1939 +@cindex RFC 821 @cindex @command{gawk}, networking, See Also email @cindex networks, @command{gawk} and, See Also email @cindex POP (Post Office Protocol) @@ -1248,11 +1191,6 @@ The distribution of email is usually done by dedicated email servers that communicate with your machine using special protocols. To receive email, we will use the Post Office Protocol (POP). Sending can be done with the much older Simple Mail Transfer Protocol (SMTP). -@ignore -@footnote{RFC 1939 defines POP. -RFC 821 defines SMTP. See -@uref{http://rfc.fh-koeln.de/doc/rfc/html/rfc.html, RFCs in HTML}.} -@end ignore @cindex email When you type in the following program, replace the @var{emailhost} by the @@ -1282,7 +1220,7 @@ BEGIN @{ @} @end example -@c @cindex RFC 1939 +@cindex RFC 1939 @cindex record separators, POP and @cindex @code{RS} variable, POP and @cindex @code{ORS} variable, POP and @@ -1306,8 +1244,8 @@ message it reads, but instead leaves it on the server. @cindex web pages @cindex HTTP (Hypertext Transfer Protocol) @cindex Hypertext Transfer Protocol, See HTTP -@c @cindex RFC 2068 -@c @cindex RFC 2616 +@cindex RFC 2068 +@cindex RFC 2616 Retrieving a web page from a web server is as simple as retrieving email from an email server. We only have to use a @@ -1317,41 +1255,6 @@ protocol is HyperText Transfer Protocol (HTTP) and the port number is usually name of your local web server or proxy web server and its port number for HTTP requests. -@ignore -@c Chuck says this stuff isn't necessary -More detailed information about HTTP can be found at -the home of the web protocols,@footnote{@uref{http://www.w3.org/pub/WWW/Protocols}} -including the specification of HTTP in RFC 2068. The protocol specification -in RFC 2068 is concise and you can get it for free. If you need more -explanation and you are willing to pay for a book, you might be -interested in one of these books: - -@enumerate - -@item -When we started writing web clients and servers with @command{gawk}, -the only book available with details about HTTP was the one by Paul Hethmon -called -@cite{Illustrated Guide to HTTP}.@footnote{@uref{http://www.browsebooks.com/Hethmon/?882}} -Hethmon not only describes HTTP, -he also implements a simple web server in C++. - -@item -Since July 2000, O'Reilly offers the book by Clinton Wong called -@cite{HTTP Pocket Reference}.@footnote{@uref{http://www.oreilly.com/catalog/httppr}} -It only has 75 pages but its -focus definitely is HTTP. This pocket reference is not a replacement -for the RFC, but I wish I had had it back in 1997 when I started writing -scripts to handle HTTP. - -@item -Another small booklet about HTTP is the one by Toexcell Incorporated Staff, -ISBN 1-58348-270-9, called -@cite{Hypertext Transfer Protocol Http 1.0 Specifications} - -@end enumerate -@end ignore - The following program employs a rather crude approach toward retrieving a web page. It uses the prehistoric syntax of HTTP 0.9, which almost all web servers still support. The most noticeable thing about it is that the @@ -1369,7 +1272,7 @@ BEGIN @{ @} @end example -@c @cindex RFC 1945 +@cindex RFC 1945 @cindex record separators, HTTP and @cindex @code{RS} variable, HTTP and @cindex @code{ORS} variable, HTTP and @@ -1417,17 +1320,6 @@ print get |& HttpService @end example You can also request weather reports this way. -@ignore -@cindex Boutell, Thomas -A good book to go on with is -the -@cite{HTML Source Book}.@footnote{@uref{http://www.utoronto.ca/webdocs/HTMLdocs/NewHTML/book.html}} -There are also some books on CGI programming -like @cite{CGI Programming in C & Perl}, -by Thomas Boutell@footnote{@uref{http://cseng.aw.com/bookdetail.qry?ISBN=0-201-42219-0&ptype=0}}, -and @cite{The CGI Book}.@footnote{@uref{http://www.cgibook.com}} -Another good source is @cite{The CGI Resource Index}}.@footnote{@uref{http://www.cgi-resources.com}} -@end ignore @node Primitive Service, Interacting Service, Web page, Using Networking @section A Primitive Web Service @@ -1584,7 +1476,7 @@ HTML content of the web pages to refer to the home system. Each server that is built around this core has to initialize some application-dependent variables (such as the default home page) in a procedure -@code{SetUpServer}, which is called immediately before entering the +@code{SetUpServer()}, which is called immediately before entering the infinite loop of the server. For now, we will write an instance that initiates a trivial interaction. With this home page, the client user can click on two possible choices, and receive the current date either @@ -1609,7 +1501,7 @@ is the first run, @code{GETARG["Method"]} is not initialized yet, hence the case selection over the method does nothing. Now that the home page is initialized, the server can start communicating to a client browser. -@c @cindex RFC 2068 +@cindex RFC 2068 It does so by printing the HTTP header into the network connection (@samp{print @dots{} |& HttpService}). This command blocks execution of the server script until a client connects. If this server @@ -1626,12 +1518,12 @@ Having supplied the initial home page to the browser with a valid document stored in the parameter @code{Prompt}, it closes the connection and waits for the next request. When the request comes, a log line is printed that allows us to see which request the server receives. The final step in the -loop is to call the function @code{CGI_setup}, which reads all the lines +loop is to call the function @code{CGI_setup()}, which reads all the lines of the request (coming from the browser), processes them, and stores the transmitted parameters in the array @code{PARAM}. The complete text of these application-independent functions can be found in @ref{CGI Lib, ,A Simple CGI Library}. -For now, we use a simplified version of @code{CGI_setup}: +For now, we use a simplified version of @code{CGI_setup()}: @example function CGI_setup( method, uri, version, i) @{ @@ -1678,7 +1570,7 @@ array as well as the body. On each subsequent run through the main loop, one request from a browser is received, evaluated, and answered according to the user's choice. This can be done by letting the value of the HTTP method guide the main loop into -execution of the procedure @code{HandleGET}, which evaluates the user's +execution of the procedure @code{HandleGET()}, which evaluates the user's choice. In this case, we have only one hierarchical level of menus, but in the general case, menus are nested. @@ -1716,7 +1608,7 @@ which may contain only monochrome pictures but is an ASCII format. Binary images are possible but not so easy to handle. Another way of including images is to generate them with a tool such as GNUPlot, -by calling the tool with the @code{system} function or through a pipe. +by calling the tool with the @code{system()} function or through a pipe. @node CGI Lib, , Interacting Service, Interacting Service @subsection A Simple CGI Library @@ -1730,7 +1622,7 @@ Phil Smith III,@* @c STARTOFRANGE cgilib @cindex CGI (Common Gateway Interface), library In @ref{Interacting Service, ,A Web Service with Interaction}, -we saw the function @code{CGI_setup} as part of the web server +we saw the function @code{CGI_setup()} as part of the web server ``core logic'' framework. The code presented there handles almost everything necessary for CGI requests. One thing it doesn't do is handle encoded characters in the requests. @@ -1764,7 +1656,7 @@ Here is the code: @c file eg/network/coreserv.awk # # Juergen Kahrs, Juergen.Kahrs@@vr-web.de -# with Arnold Robbins, arnold@@gnu.org +# with Arnold Robbins, arnold@@skeeve.com # September 2000 @c endfile @@ -1853,9 +1745,9 @@ function CGI_setup( method, uri, version, i) @c endfile @end example -This isolates details in a single function, @code{CGI_setup}. +This isolates details in a single function, @code{CGI_setup()}. Decoding of encoded characters is pushed off to a helper function, -@code{_CGI_decode}. The use of the leading underscore (@samp{_}) in +@code{_CGI_decode()}. The use of the leading underscore (@samp{_}) in the function name is intended to indicate that it is an ``internal'' function, although there is nothing to enforce this: @@ -1894,9 +1786,9 @@ function _CGI_decode(str, hexdigs, i, pre, code1, code2, This works by splitting the string apart around an encoded character. The two digits are converted to lowercase characters and looked up in a string of hex digits. Note that @code{0} is not in the string on purpose; -@code{index} returns zero when it's not found, automatically giving +@code{index()} returns zero when it's not found, automatically giving the correct value! Once the hexadecimal value is converted from -characters in a string into a numerical value, @code{sprintf} +characters in a string into a numerical value, @code{sprintf()} converts the value back into a real character. The following is a simple test harness for the above functions: @@ -1985,22 +1877,22 @@ function SetUpServer() @{ @c endfile @end example -@code{SetUpServer} is similar to the previous example, -except for calling another function, @code{SetUpEliza}. +@code{SetUpServer()} is similar to the previous example, +except for calling another function, @code{SetUpEliza()}. This approach can be used to implement other kinds of servers. The only changes needed to do so are hidden in the functions -@code{SetUpServer} and @code{HandleGET}. Perhaps it might be necessary to +@code{SetUpServer()} and @code{HandleGET()}. Perhaps it might be necessary to implement other HTTP methods. The @command{igawk} program that comes with @command{gawk} may be useful for this process. When extending this example to a complete application, the first -thing to do is to implement the function @code{SetUpServer} to +thing to do is to implement the function @code{SetUpServer()} to initialize the HTML pages and some variables. These initializations determine the way your HTML pages look (colors, titles, menu items, etc.). -The function @code{HandleGET} is a nested case selection that decides +The function @code{HandleGET()} is a nested case selection that decides which page the user wants to see next. Each nesting level refers to a menu level of the GUI. Each case implements a certain action of the menu. On the deepest level of case selection, the handler essentially knows what the @@ -2097,7 +1989,7 @@ function ElizaSays(YouSay) @{ @c endfile @end smallexample -In the long but simple function @code{SetUpEliza}, you can see tables +In the long but simple function @code{SetUpEliza()}, you can see tables for conjugation, keywords, and answers.@footnote{The version shown here is abbreviated. The full version comes with the @command{gawk} distribution.} The associative array @code{k} @@ -2515,7 +2407,7 @@ we built in @ref{Simple Server, ,A Simple Web Server}. When building new and nontrivial servers, we always copy this building block and append new instances of the two -functions @code{SetUpServer} and @code{HandleGET}. +functions @code{SetUpServer()} and @code{HandleGET()}. This makes a lot of sense, since this scheme of event-driven @@ -2694,7 +2586,7 @@ process in the embedded system may read the file. The program uses the site-independent part of the simple web server that we developed in @ref{Interacting Service, ,A Web Service with Interaction}. As mentioned there, all we have to do is to write two new procedures -@code{SetUpServer} and @code{HandleGET}: +@code{SetUpServer()} and @code{HandleGET()}: @smallexample @c file eg/network/remconf.awk @@ -2715,14 +2607,14 @@ function SetUpServer() @{ @c endfile @end smallexample -The function @code{SetUpServer} initializes the top level HTML texts +The function @code{SetUpServer()} initializes the top level HTML texts as usual. It also initializes the name of the file that contains the configuration parameters and their values. In case the user supplies a name from the command line, that name is used. The file is expected to contain one parameter per line, with the name of the parameter in column one and the value in column two. -The function @code{HandleGET} reflects the structure of the menu +The function @code{HandleGET()} reflects the structure of the menu tree as usual. The first menu choice tells the user what this is all about. The second choice reads the configuration file line by line and stores the parameters and their values. Notice that the record @@ -2862,9 +2754,9 @@ BEGIN @{ Another thing that may look strange is the way GETURL is called. Before calling GETURL, we have to check if the proxy variables need to be passed on. If so, we prepare strings that will become part -of the command line later. In @code{GetHeader}, we store these strings +of the command line later. In @code{GetHeader()}, we store these strings together with the longest part of the command line. Later, in the loop -over the URLs, @code{GetHeader} is appended with the URL and a redirection +over the URLs, @code{GetHeader()} is appended with the URL and a redirection operator to form the command that reads the URL's header over the Internet. GETURL always produces the headers over @file{/dev/stderr}. That is the reason why we need the redirection operator to have the header @@ -2911,7 +2803,7 @@ separators. With @code{RS} set to a regular expression that matches links, the second action is executed each time a non-empty link is found. We can find the matching link itself in @code{RT}. -The action could use the @code{system} function to let another GETURL +The action could use the @code{system()} function to let another GETURL retrieve the page, but here we use a different approach. This simple program prints shell commands that can be piped into @command{sh} for execution. This way it is possible to first extract @@ -3022,7 +2914,7 @@ distributions. The statistical computation follows @cite{Numerical Recipes in C: The Art of Scientific Computing} by William H.@: Press, Saul A.@: Teukolsky, William T.@: Vetterling, and Brian P. Flannery. Since @command{gawk} does not have a built-in function -for the computation of the beta function, we use the @code{ibeta} function +for the computation of the beta function, we use the @code{ibeta()} function of GNUPlot. As a side effect, we learn how to use GNUPlot as a sophisticated calculator. The comparison of means is done as in @code{tutest}, paragraph 14.2, page 613, and the comparison of variances is done as in @code{ftest}, @@ -3030,7 +2922,7 @@ page 611 in @cite{Numerical Recipes}. @cindex Numerical Recipes As usual, we take the site-independent code for servers and append -our own functions @code{SetUpServer} and @code{HandleGET}: +our own functions @code{SetUpServer()} and @code{HandleGET()}: @smallexample @c file eg/network/statist.awk @@ -3050,7 +2942,7 @@ function SetUpServer() @{ @end smallexample Here, you see the menu structure that the user sees. Later, we -will see how the program structure of the @code{HandleGET} function +will see how the program structure of the @code{HandleGET()} function reflects the menu structure. What is missing here is the link for the image we generate. In an event-driven environment, request, generation, and delivery of images are separated. @@ -3066,7 +2958,7 @@ defaults, we make sure the user gets an image the first time he uses the program. @cindex JavaScript -Following is the rather long function @code{HandleGET}, which +Following is the rather long function @code{HandleGET()}, which implements the contents of this service by reacting to the different kinds of requests from the browser. Before you start playing with this script, make sure that your browser supports JavaScript and that it also @@ -3190,7 +3082,7 @@ By this time, the server should be ready for serving the next request. But there is one more subtlety in the JavaScript code. Each time the JavaScript code opens a window for the image, the -name of the image is appended with a timestamp (@code{systime}). +name of the image is appended with a timestamp (@code{systime()}). Why this constant change of name for the image? Initially, we always named the image @code{Image}, but then the Netscape browser noticed the name had @emph{not} changed since the previous request and displayed the @@ -3267,7 +3159,7 @@ any VRML code, have a look at the VRML FAQ. Presenting a static VRML scene is a bit trivial; in order to expose @command{gawk}'s new capabilities, we will present a dynamically generated -VRML scene. The function @code{SetUpServer} is very simple because it +VRML scene. The function @code{SetUpServer()} is very simple because it only sets the default HTML page and initializes the random number generator. As usual, the surrounding server lets you browse the maze. @@ -3287,7 +3179,7 @@ function SetUpServer() @{ @c endfile @end smallexample -The function @code{HandleGET} is a bit longer because it first computes +The function @code{HandleGET()} is a bit longer because it first computes the maze and afterwards generates the VRML code that is sent across the network. As shown in the STATIST example (@pxref{STATIST}), @@ -3295,7 +3187,7 @@ we set the type of the content to VRML and then store the VRML representation of the maze as the page content. We assume that the maze is stored in a 2D array. Initially, the maze consists of walls only. Then, we add an entry and an exit to the -maze and let the rest of the work be done by the function @code{MakeMaze}. +maze and let the rest of the work be done by the function @code{MakeMaze()}. Now, only the wall fields are left in the maze. By iterating over the these fields, we generate one line of VRML code for each wall field. @@ -3349,7 +3241,7 @@ Group @{\n\ @c endfile @end smallexample -Finally, we have a look at @code{MakeMaze}, the function that generates +Finally, we have a look at @code{MakeMaze()}, the function that generates the @code{Maze} array. When entered, this function assumes that the array has been initialized so that each element represents a wall element and the maze is initially full of wall elements. Only the entrance and the exit @@ -3418,94 +3310,6 @@ the networking world. For an unbiased view at this technology, see the remarkable paper @cite{Mobile Agents: Are they a good idea?}.@footnote{@uref{http://www.research.ibm.com/massive/mobag.ps}} -@ignore -@c Chuck says to take all of this out. -@cindex Tcl/Tk -A good instance of this paradigm is -@cite{Agent Tcl},@footnote{@uref{http://agent.cs.dartmouth.edu/software/agent2.0/}} -an extension of the Tcl language. After introducing a typical -development environment, the aforementioned paper shows a nice little -example application that we will try to rebuild in @command{gawk}. The -@command{who} agent takes a list of servers and wanders from one server -to the next one, always looking to see who is logged in. -Having reached the last -one, it sends back a message with a list of all users it found on each -machine. - -But before implementing something that might or might not be a mobile -agent, let us clarify the concept and some important terms. The agent -paradigm in general is such a young scientific discipline that it has -not yet developed a widely-accepted terminology. Some authors try to -give precise definitions, but their scope is often not wide enough -to be generally accepted. Franklin and Graesser ask -@cite{Is it an Agent or just a Program: A Taxonomy for Autonomous -Agents}@footnote{@uref{http://www.msci.memphis.edu/~franklin/AgentProg.html}} -and give even better answers than Caglayan and Harrison in their -@cite{Agent Sourcebook}.@footnote{@uref{http://www.aminda.com/mazzu/sourcebook/}} - -@itemize @minus -@item -@i{An autonomous agent is a system situated within and a part of -an environment that senses that environment and acts on it, over time, in -pursuit of its own agenda and so as to effect what it senses in the future.} -(Quoted from Franklin and Graesser.) -@item -A mobile agent is able to transport itself from one machine to another. -@item -The term @dfn{migration} often denotes this process of moving. -But neither of the two sources above even mentions this term, while others -use it regularly. -@end itemize - -Before delving into the (rather demanding) details of -implementation, let us give just one more quotation as a final -motivation. Steven Farley published an excellent paper called -@cite{Mobile Agent System Architecture},@footnote{This often -cited text originally appeared as a conference paper here: -@uref{http://www.sigs.com/publications/docs/java/9705/farley.html} -Many bibliographies on the Internet point to this dead link. Meanwhile, -the paper appeared as a contribution to a book called More Java Gems here: -@uref{http://uk.cambridge.org/computerscience/object/catalogue/0521774772/default.htm}} -in which he asks ``Why use an agent architecture?'' - -@quotation -If client-server systems are the currently established norm and distributed -object systems such as CORBA are defining the future standards, why bother -with agents? Agent architectures have certain advantages over these other -types. Three of the most important advantages are: -@cindex CORBA - -@enumerate -@item -An agent performs much processing at the server where local bandwidth -is high, thus reducing the amount of network bandwidth consumed and increasing -overall performance. In contrast, a CORBA client object with the equivalent -functionality of a given agent must make repeated remote method calls to -the server object because CORBA objects cannot move across the network -at runtime. - -@item -An agent operates independently of the application from which the -agent was invoked. The agent operates asynchronously, meaning that the -client application does not need to wait for the results. This is especially -important for mobile users who are not always connected to the network. - -@item -The use of agents allows for the injection of new functionality into -a system at run time. An agent system essentially contains its own automatic -software distribution mechanism. Since CORBA has no built-in support for -mobile code, new functionality generally has to be installed manually. - -@end enumerate - -Of course a non-agent system can exhibit these same features with some -work. But the mobile code paradigm supports the transfer of executable -code to a remote location for asynchronous execution from the start. An -agent architecture should be considered for systems where the above features -are primary requirements. -@end quotation -@end ignore - When trying to migrate a process from one system to another, a server process is needed on the receiving side. Depending on the kind of server process, several ways of implementation come to mind. @@ -3681,9 +3485,9 @@ function migrate(Destination, MobCode, Label) @{ @c endfile @end smallexample -The @code{migrate} function prepares the +The @code{migrate()} function prepares the aforementioned strings containing the program code and transmits them to a -server. A consequence of this modular approach is that the @code{migrate} +server. A consequence of this modular approach is that the @code{migrate()} function takes some parameters that aren't needed in this application, but that will be in future ones. Its mandatory parameter @code{Destination} holds the name (or IP address) of the server that the agent wants as a host for its @@ -3704,16 +3508,16 @@ Each variable in an agent program is local to the current host and does @item The array @code{MOBFUN} shown above is an exception. It is handled -by the function @code{migrate} and does migrate with the application. +by the function @code{migrate()} and does migrate with the application. @item The other exception is the array @code{MOBVAR}. Each variable that takes part in migration has to be an element of this array. -@code{migrate} also takes care of this. +@code{migrate()} also takes care of this. @end itemize Now it's clear what happens to the @code{Label} parameter of the -function @code{migrate}. It is copied into @code{MOBVAR["Label"]} and +function @code{migrate()}. It is copied into @code{MOBVAR["Label"]} and travels alongside the other data. Since travelling takes place via HTTP, records must be separated with @code{"\r\n"} in @code{RS} and @code{ORS} as usual. The code assembly for migration takes place in @@ -3738,8 +3542,8 @@ The application-independent framework is now almost complete. What follows is the @code{END} pattern that is executed when the mobile agent has finished reading its own code. First, it checks whether it is already running on a remote host or not. In case initialization has not yet taken -place, it starts @code{MyInit}. Otherwise (later, on a remote host), it -starts @code{MyJob}: +place, it starts @code{MyInit()}. Otherwise (later, on a remote host), it +starts @code{MyJob()}: @smallexample @c file eg/network/mobag.awk @@ -3754,8 +3558,8 @@ END @{ @end smallexample All that's left to extend the framework into a complete application -is to write two application-specific functions: @code{MyInit} and -@code{MyJob}. Keep in mind that the former is executed once on the +is to write two application-specific functions: @code{MyInit()} and +@code{MyJob()}. Keep in mind that the former is executed once on the originating host, while the latter is executed after each migration: @smallexample @@ -3776,9 +3580,9 @@ As mentioned earlier, this agent takes the name of its origin (@code{MyOrigin}) with it. Then, it takes the name of its first destination and goes there for further work. Notice that this name has the port number of the web server appended to the name of the server, -because the function @code{migrate} needs it this way to create +because the function @code{migrate()} needs it this way to create the @code{HttpService} variable. Finally, it waits for the result to arrive. -The @code{MyJob} function runs on the remote host: +The @code{MyJob()} function runs on the remote host: @smallexample @c file eg/network/mobag.awk @@ -3801,7 +3605,7 @@ function MyJob() @{ @c endfile @end smallexample -After migrating, the first thing to do in @code{MyJob} is to delete +After migrating, the first thing to do in @code{MyJob()} is to delete the name of the current host from the list of hosts to visit. Now, it is time to start the real work by appending the host's name to the result string, and reading line by line who is logged in on this host. @@ -3901,16 +3705,6 @@ The stock shares to avoid today are these: @dots{} @end smallexample -@ignore -@c Chuck suggests removing this paragraph -If you are not into stock market prediction but want to earn money -with a more humane service, you might prefer to send out horoscopes -to your customers. Or, once every refrigerator in every household on this side -of the Chinese Wall is connected to the Internet, such a service could -inspect the contents of your customer's refrigerators each day and -advise them on nutrition. Big Brother is watching them. -@end ignore - The script as a whole is rather long. In order to ease the pain of studying other people's source code, we have broken the script up into meaningful parts which are invoked one after the other. @@ -3930,7 +3724,7 @@ BEGIN @{ @end example The earlier parts store data into variables and arrays which are -subsequently used by later parts of the script. The @code{Init} function +subsequently used by later parts of the script. The @code{Init()} function first checks if the script is invoked correctly (without any parameters). If not, it informs the user of the correct usage. What follows are preparations for the retrieval of the historical quote data. The names of the 30 stock @@ -4109,7 +3903,7 @@ function Prediction() @{ At this point the hard work has been done: the array @code{predict} contains the predictions for all the ticker symbols. It is up to the -function @code{Report} to find some nice words to introduce the +function @code{Report()} to find some nice words to introduce the desired information. @smallexample @@ -4150,7 +3944,7 @@ function Report() @{ @c endfile @end smallexample -The function @code{SendMail} goes through the list of customers and opens +The function @code{SendMail()} goes through the list of customers and opens a pipe to the @code{mail} command for each of them. Each one receives an email message with a proper subject heading and is addressed with his full name. @@ -4184,50 +3978,6 @@ Try to find a better one. Should you find one with a success rate of more than 50%, please tell us about it! It is only for the sake of curiosity, of course. @code{:-)} -@ignore -@c chuck says to remove this -Let us give you one final indication as to what one can expect from -a prediction of stock data, which is sometimes said to contain much -randomness. One theory says that all relevant information to be taken -into account when estimating the price of a stock is contained in the -stock quotes. Every bit of useful information has influenced the -fair price. Therefore (the theory says) temporary changes (i.e., fluctuations -within a minute) have to be purely random. But what is the cause of -short-term changes in stock prices? - -Stock prices are fixed when supply and demand meet each other. -What people are willing to pay reflects human expectations. -Human expectations are not necessarily random. On the Internet, -you can find an elucidating paper about predictability and human -expectations: -@uref{http://it.ucsd.edu/IT/Newsletter/archives/meir/05meir.html, -@cite{Reflections on ``Universal Prediction of Individual Sequences''}} -The authors (Feder, Merhav, Gutman) introduce the reader to the subject -by telling a thrilling anecdote. -@cindex Shannon, Claude -@quotation -In the early 50's, at Bell Laboratories, David Hagelbarger built a -simple ``mind reading'' machine, whose purpose was to play the ``penny -matching'' game. In this game, a player chooses head or tail, while a -``mind reading'' machine tries to predict and match his choice. -Surprisingly, as Robert Lucky tells in his book ``Silicon Dreams'', -Hagelbarger's simple, 8-state machine, was able to match the ``pennies'' -of its human opponent 5,218 times over the course of 9,795 plays. -Random guessing would lead to such a high success rate with a probability -less than one out of 10 billion! Shannon, who was interested in prediction, -information, and thinking machines, closely followed Hagelbarger's -machine, and eventually built his own stripped-down version of the machine, -having the same states, but one that used a simpler strategy at each state. -As the legend goes, in a duel between the two machines, Shannon's machine -won by a slight margin! No one knows if this was due to a superior algorithm -or just a chance happening associated with the specific sequence at that game. -In any event, the success of both these machines against ``untrained'' human -opponents was explained by the fact that the human opponents cannot draw -completely random -bits. -@end quotation -@end ignore - @node PROTBASE, , STOXPRED, Some Applications and Techniques @section PROTBASE: Searching Through A Protein Database @cindex PROTBASE @@ -4527,8 +4277,8 @@ books on Bioinformatics is The sequences @emph{gawk} and @emph{gnuawk} are in widespread use in the genetic material of virtually every earthly living being. Let us take this as a clear indication that the divine creator has intended -@code{gawk} to prevail over other scripting languages such as @code{perl}, -@code{tcl}, or @code{python} which are not even proper sequences. (:-) +@command{gawk} to prevail over other scripting languages such as @command{perl}, +@command{tcl}, or @command{python} which are not even proper sequences. (:-) @end enumerate @node Links, GNU Free Documentation License, Some Applications and Techniques, Top @@ -5178,7 +4928,7 @@ to permit their use in free software. @bye Conventions: -1. Functions, built-in or otherwise, do NOT have () after them. +1. Functions, built-in or otherwise, do have () after them. 2. Gawk built-in vars and functions are in @code. Also program vars and functions. 3. HTTP method names are in @code. diff --git a/doc/gawktexi.in b/doc/gawktexi.in index 0066593..2c94c30 100644 --- a/doc/gawktexi.in +++ b/doc/gawktexi.in @@ -14,6 +14,11 @@ * awk: (gawk)Invoking gawk. Text scanning and processing. @end direntry +@c Enable better indexing, requires texindex from Texinfo 6 or later. +@tex +\global\usebracesinindexestrue +@end tex + @ifset FOR_PRINT @tex \gdef\xrefprintnodename#1{``#1''} @@ -46,9 +51,9 @@ @c applies to and all the info about who's publishing this edition @c These apply across the board. -@set UPDATE-MONTH May, 2015 +@set UPDATE-MONTH August, 2016 @set VERSION 4.1 -@set PATCHLEVEL 3 +@set PATCHLEVEL 4 @set GAWKINETTITLE TCP/IP Internetworking with @command{gawk} @ifset FOR_PRINT @@ -166,31 +171,6 @@ @end macro @end ifdocbook -@c hack for docbook, where comma shouldn't always follow an @ref{} -@ifdocbook -@macro DBREF{text} -@ref{\text\} -@end macro -@macro DBXREF{text} -@xref{\text\} -@end macro -@macro DBPXREF{text} -@pxref{\text\} -@end macro -@end ifdocbook - -@ifnotdocbook -@macro DBREF{text} -@ref{\text\}, -@end macro -@macro DBXREF{text} -@xref{\text\}, -@end macro -@macro DBPXREF{text} -@pxref{\text\}, -@end macro -@end ifnotdocbook - @ifclear FOR_PRINT @set FN file name @set FFN File name @@ -245,10 +225,7 @@ @ignore Some comments on the layout for TeX. -1. Use at least texinfo.tex 2014-01-30.15 -2. When using @docbook, if the last line is part of a paragraph, end -it with a space and @c so that the lines won't run together. This is a -quirk of the language / makeinfo, and isn't going to change. +1. Use at least texinfo.tex 2016-02-05.07. @end ignore @c merge the function and variable indexes into the concept index @@ -294,13 +271,13 @@ Fax: +1-617-542-2652 Email: gnu@@gnu.org URL: http://www.gnu.org/ -Copyright © 1989, 1991, 1992, 1993, 1996–2005, 2007, 2009–2015 +Copyright © 1989, 1991, 1992, 1993, 1996–2005, 2007, 2009–2016 Free Software Foundation, Inc. All Rights Reserved. @end docbook @ifnotdocbook -Copyright @copyright{} 1989, 1991, 1992, 1993, 1996--2005, 2007, 2009--2015 @* +Copyright @copyright{} 1989, 1991, 1992, 1993, 1996--2005, 2007, 2009--2016 @* Free Software Foundation, Inc. @end ifnotdocbook @sp 2 @@ -1189,7 +1166,7 @@ $\sim\! Cn^2$ @end ifnotdocbook @end ifnottex @docbook -∼ Cn2 @c +∼ Cn2 @end docbook performance, while theory predicted @@ -1202,7 +1179,7 @@ $\sim\! Cn\log n$ @end ifnotdocbook @end ifnottex @docbook -∼ Cn log n @c +∼ Cn log n @end docbook behavior. A few minutes poring over the @file{awkprof.out} profile pinpointed the problem to @@ -1472,7 +1449,7 @@ John Haque rewrote the @command{gawk} internals, in the process providing an @command{awk}-level debugger. This version became available as @command{gawk} @value{PVERSION} 4.0 in 2011. -@DBXREF{Contributors} +@xref{Contributors} for a full list of those who have made important contributions to @command{gawk}. @node Names @@ -1560,7 +1537,7 @@ All appear in the index, under the heading ``sidebar.'' @end ifclear Most of the time, the examples use complete @command{awk} programs. -Some of the more advanced sections show only the part of the @command{awk} +Some of the more advanced @value{SECTION}s show only the part of the @command{awk} program that illustrates the concept being described. Although this @value{DOCUMENT} is aimed principally at people who have not been @@ -1783,6 +1760,7 @@ The GNU FDL} is the license that covers this @value{DOCUMENT}. @end itemize +@c ok not to use CHAPTER / SECTION here Some of the chapters have exercise sections; these have also been omitted from the print edition but are available online. @end ifset @@ -1856,7 +1834,7 @@ pressing the @kbd{d} key, and finally releasing both keys. For the sake of brevity, throughout this @value{DOCUMENT}, we refer to Brian Kernighan's version of @command{awk} as ``BWK @command{awk}.'' -(@DBXREF{Other Versions} for information on his and other versions.) +(@xref{Other Versions} for information on his and other versions.) @ifset FOR_PRINT @quotation NOTE @@ -2015,7 +1993,7 @@ and the major new additions are @ref{Arbitrary Precision Arithmetic}, and @ref{Dynamic Extensions}. This @value{DOCUMENT} will undoubtedly continue to evolve. If you -find an error in the @value{DOCUMENT}, please report it! @DBXREF{Bugs} +find an error in the @value{DOCUMENT}, please report it! @xref{Bugs} for information on submitting problem reports electronically. @ifset FOR_PRINT @@ -2172,6 +2150,7 @@ significant editorial help for this @value{DOCUMENT} for the @cindex Davies, Stephen @cindex Deifik, Scott @cindex Demaille, Akim +@cindex G., Daniel Richard @cindex Hankerson, Darrel @cindex Jaegermann, Michal @cindex Kahrs, J@"urgen @@ -2191,6 +2170,7 @@ Antonio Colombo, Stephen Davies, Scott Deifik, Akim Demaille, +Daniel Richard G., Darrel Hankerson, Michal Jaegermann, J@"urgen Kahrs, @@ -2209,7 +2189,7 @@ portable program it is today. It has been and continues to be a pleasure working with this team of fine people. Notable code and documentation contributions were made by -a number of people. @DBXREF{Contributors} for the full list. +a number of people. @xref{Contributors} for the full list. @ifset FOR_PRINT @cindex Oram, Andy @@ -2443,7 +2423,7 @@ reliable because there are no other files to misplace. Later in this chapter, in @ifdocbook -the section +the @value{SECTION} @end ifdocbook @ref{Very Simple}, we'll see examples of several short, @@ -2795,7 +2775,7 @@ The shell does no interpretation of the quoted text, passing it on verbatim to the command. It is @emph{impossible} to embed a single quote inside single-quoted text. Refer back to -@DBREF{Comments} +@ref{Comments} for an example of what happens if you try. @item @@ -3223,9 +3203,9 @@ no actions run. After processing all the rules that match the line (and perhaps there are none), @command{awk} reads the next line. (However, -@DBPXREF{Next Statement} +@pxref{Next Statement} @ifdocbook -and @DBREF{Nextfile Statement}.) +and @ref{Nextfile Statement}.) @end ifdocbook @ifnotdocbook and also @pxref{Nextfile Statement}.) @@ -3326,7 +3306,8 @@ After the last line of output from @command{ls} has been processed, the @code{END} rule executes and prints the value of @code{sum}. In this example, the value of @code{sum} is 80600. -These more advanced @command{awk} techniques are covered in later sections +These more advanced @command{awk} techniques are covered in later +@value{SECTION}s (@pxref{Action Overview}). Before you can move on to more advanced @command{awk} programming, you have to know how @command{awk} interprets your input and displays your output. By manipulating fields and using @@ -3496,7 +3477,7 @@ and array sorting. As we develop our presentation of the @command{awk} language, we will introduce most of the variables and many of the functions. They are described -systematically in @DBREF{Built-in Variables} and in +systematically in @ref{Built-in Variables} and in @ref{Built-in}. @node When @@ -3953,7 +3934,7 @@ care to search for all occurrences of each inappropriate construct. As @itemx @option{--bignum} @cindex @option{-M} option @cindex @option{--bignum} option -Force arbitrary-precision arithmetic on numbers. This option has no effect +Select arbitrary-precision arithmetic on numbers. This option has no effect if @command{gawk} is not compiled to use the GNU MPFR and MP libraries (@pxref{Arbitrary Precision Arithmetic}). @@ -4031,7 +4012,7 @@ in the left margin, and function call counts for each function. Operate in strict POSIX mode. This disables all @command{gawk} extensions (just like @option{--traditional}) and disables all extensions not allowed by POSIX. -@DBXREF{Common Extensions} for a summary of the extensions +@xref{Common Extensions} for a summary of the extensions in @command{gawk} that are disabled by this option. Also, the following additional @@ -4496,6 +4477,11 @@ are generated. Its purpose is to help isolate the source of a message, as there are multiple places that produce the same warning or error message. +@item GAWK_LOCALE_DIR +Specifies the location of compiled message object files +for @command{gawk} itself. This is passed to the @code{bindtextdomain()} +function when @command{gawk} starts up. + @item GAWK_NO_DFA If this variable exists, @command{gawk} does not use the DFA regexp matcher for ``does it match'' kinds of tests. This can cause @command{gawk} @@ -5134,7 +5120,7 @@ with a backslash have special meaning in regexps. In a regexp, a backslash before any character that is not in the previous list and not listed in -@DBREF{GNU Regexp Operators} +@ref{GNU Regexp Operators} means that the next character should be taken literally, even if it would normally be a regexp operator. For example, @code{/a\+b/} matches the three characters @samp{a+b}. @@ -5233,7 +5219,7 @@ The escape sequences described @ifnotinfo earlier @end ifnotinfo -in @DBREF{Escape Sequences} +in @ref{Escape Sequences} are valid inside a regexp. They are introduced by a @samp{\} and are recognized and converted into corresponding real characters as the very first step in processing regexps. @@ -5468,10 +5454,19 @@ Within a bracket expression, a @dfn{range expression} consists of two characters separated by a hyphen. It matches any single character that sorts between the two characters, based upon the system's native character set. For example, @samp{[0-9]} is equivalent to @samp{[0123456789]}. -(See @DBREF{Ranges and Locales} for an explanation of how the POSIX +(See @ref{Ranges and Locales} for an explanation of how the POSIX standard and @command{gawk} have changed over time. This is mainly of historical interest.) +With the increasing popularity of the +@uref{http://www.unicode.org, Unicode character standard}, +there is an additional wrinkle to consider. Octal and hexadecimal +escape sequences inside bracket expressions are taken to represent +only single-byte characters (characters whose values fit within +the range 0--256). To match a range of characters where the endpoints +of the range are larger than 256, enter the multibyte encodings of +the characters directly. + @cindex @code{\} (backslash), in bracket expressions @cindex backslash (@code{\}), in bracket expressions @cindex @code{^} (caret), in bracket expressions @@ -5600,6 +5595,10 @@ they do not recognize collating symbols or equivalence classes. @end quotation @c maybe one day ... +Inside a bracket expression, an opening bracket (@samp{[}) that does +not start a character class, collating element or equivalence class is +taken literally. This is also true of @samp{.} and @samp{*}. + @node Leftmost Longest @section How Much Text Matches? @@ -6281,7 +6280,7 @@ The empty string @code{""} (a string without any characters) has a special meaning as the value of @code{RS}. It means that records are separated by one or more blank lines and nothing else. -@DBXREF{Multiple Line} for more details. +@xref{Multiple Line} for more details. If you change the value of @code{RS} in the middle of an @command{awk} run, the new value is used to delimit subsequent records, but the record @@ -6345,7 +6344,7 @@ $ @kbd{echo record 1 AAAA record 2 BBBB record 3 |} The square brackets delineate the contents of @code{RT}, letting you see the leading and trailing whitespace. The final value of @code{RT} is a newline. -@DBXREF{Simple Sed} for a more useful example +@xref{Simple Sed} for a more useful example of @code{RS} as a regexp and @code{RT}. If you set @code{RS} to a regular expression that allows optional @@ -6412,8 +6411,8 @@ character as a record separator. However, this is a special case: @cindex records, treating files as @cindex treating files, as single records -@DBXREF{Readfile Function} for an interesting way to read -whole files. If you are using @command{gawk}, see @DBREF{Extension Sample +@xref{Readfile Function} for an interesting way to read +whole files. If you are using @command{gawk}, see @ref{Extension Sample Readfile} for another option. @end sidebar @@ -6662,9 +6661,9 @@ else @noindent should print @samp{everything is normal}, because @code{NF+1} is certain -to be out of range. (@DBXREF{If Statement} +to be out of range. (@xref{If Statement} for more information about @command{awk}'s @code{if-else} statements. -@DBXREF{Typing and Comparison} +@xref{Typing and Comparison} for more information about the @samp{!=} operator.) It is important to note that making an assignment to an existing field @@ -7362,7 +7361,7 @@ else This information is useful when writing a function that needs to temporarily change @code{FS} or @code{FIELDWIDTHS}, read some records, and then restore the original settings -(@DBPXREF{Passwd Functions} +(@pxref{Passwd Functions} for an example of such a function). @node Splitting By Content @@ -7629,7 +7628,7 @@ $ @kbd{awk -f addrs.awk addresses} @dots{} @end example -@DBXREF{Labels Program} for a more realistic program dealing with +@xref{Labels Program} for a more realistic program dealing with address lists. The following list summarizes how records are split, based on the value of @ifinfo @@ -7952,7 +7951,7 @@ One deficiency of this program is that it does not process nested @code{@@include} statements (i.e., @code{@@include} statements in included files) the way a true macro preprocessor would. -@DBXREF{Igawk Program} for a program +@xref{Igawk Program} for a program that does handle nested @code{@@include} statements. @node Getline/Pipe @@ -8205,7 +8204,7 @@ trying to accomplish. @item @ifdocbook -The next section +The next @value{SECTION} @end ifdocbook @ifnotdocbook @ref{Getline Summary}, @@ -8401,7 +8400,7 @@ If either of the @option{--posix} or @option{--traditional} options is given, then @command{gawk} reverts to treating a directory on the command line as a fatal error. -@DBXREF{Extension Sample Readdir} for a way to treat directories +@xref{Extension Sample Readdir} for a way to treat directories as usable data from an @command{awk} program. @node Input Summary @@ -8514,7 +8513,7 @@ The @code{print} statement is not limited when computing @emph{which} values to print. However, with two exceptions, you cannot specify @emph{how} to print them---how many columns, whether to use exponential notation or not, and so on. -(For the exceptions, @DBPXREF{Output Separators} and +(For the exceptions, @pxref{Output Separators} and @ref{OFMT}.) For printing with specifications, you need the @code{printf} statement (@pxref{Printf}). @@ -9411,7 +9410,7 @@ close(report) The @code{close()} function is called here because it's a good idea to close the pipe as soon as all the intended output has been sent to it. -@DBXREF{Close Files And Pipes} +@xref{Close Files And Pipes} for more information. This example also illustrates the use of a variable to represent @@ -9442,9 +9441,9 @@ for a brief discussion. for a more complete discussion. @end ifnotdocbook @ifdocbook -@DBXREF{Getline/Coprocess} +@xref{Getline/Coprocess} for a brief discussion and -@DBREF{Two-way I/O} +@ref{Two-way I/O} for a more complete discussion. @end ifdocbook @end table @@ -9518,7 +9517,7 @@ The program builds up a list of command lines, using the @command{mv} utility to rename the files. It then sends the list to the shell for execution. -@DBXREF{Shell Quoting} for a function that can help in generating +@xref{Shell Quoting} for a function that can help in generating command lines to be fed to the shell. @end sidebar @@ -10166,7 +10165,7 @@ you can use the @code{strtonum()} function to convert the data into a number. Most of the time, you will want to use octal or hexadecimal constants when working with the built-in bit-manipulation functions; -see @DBREF{Bitwise Functions} +see @ref{Bitwise Functions} for more information. Unlike in some early C implementations, @samp{8} and @samp{9} are not @@ -10370,7 +10369,7 @@ array parameters (@pxref{String Functions}). @cindex variables, initializing A few variables have special built-in meanings, such as @code{FS} (the field separator) and @code{NF} (the number of fields in the current input -record). @DBXREF{Built-in Variables} for a list of the predefined variables. +record). @xref{Built-in Variables} for a list of the predefined variables. These predefined variables can be used and assigned just like all other variables, but their values are also used or changed automatically by @command{awk}. All predefined variables' names are entirely uppercase. @@ -10411,7 +10410,7 @@ as in the following: the variable is set at the very beginning, even before the @code{BEGIN} rules execute. The @option{-v} option and its assignment must precede all the @value{FN} arguments, as well as the program text. -(@DBXREF{Options} for more information about +(@xref{Options} for more information about the @option{-v} option.) Otherwise, the variable assignment is performed at a time determined by its position among the input file arguments---after the processing of the @@ -10545,7 +10544,7 @@ specifies the output format to use when printing numbers with @code{print}. conversion from the semantics of printing. Both @code{CONVFMT} and @code{OFMT} have the same default value: @code{"%.6g"}. In the vast majority of cases, old @command{awk} programs do not change their behavior. -@DBXREF{Print} for more information on the @code{print} statement. +@xref{Print} for more information on the @code{print} statement. @end sidebar @node Locale influences conversions @@ -11046,10 +11045,10 @@ The indices of @code{bar} are practically guaranteed to be different, because @xref{Arrays}, and @ifnotdocbook -@DBPXREF{Numeric Functions} +@pxref{Numeric Functions} @end ifnotdocbook @ifdocbook -@DBREF{Numeric Functions} +@ref{Numeric Functions} @end ifdocbook for more information.) This example illustrates an important fact about assignment @@ -11173,7 +11172,6 @@ has the value four, but it changes the value of @code{foo} to five. In other words, the operator returns the old value of the variable, but with the side effect of incrementing it. -@c FIXME: Use @sup here for superscript The post-increment @samp{foo++} is nearly the same as writing @samp{(foo += 1) - 1}. It is not perfectly equivalent because all numbers in @command{awk} are floating point---in floating point, @samp{foo + 1 - 1} does @@ -11182,14 +11180,14 @@ long as you stick to numbers that are fairly small (less than @iftex @math{10^{12}}). @end iftex -@ifnottex -@ifnotdocbook +@ifinfo 10e12). -@end ifnotdocbook +@end ifinfo +@ifnottex +@ifnotinfo +10@sup{12}). +@end ifnotinfo @end ifnottex -@docbook -1012). @c -@end docbook @cindex @code{$} (dollar sign), incrementing fields and arrays @cindex dollar sign (@code{$}), incrementing fields and arrays @@ -11969,10 +11967,10 @@ example, the function @code{sqrt()} computes the square root of a number. @cindex functions, built-in A fixed set of functions are @dfn{built in}, which means they are available in every @command{awk} program. The @code{sqrt()} function is one -of these. @DBXREF{Built-in} for a list of built-in +of these. @xref{Built-in} for a list of built-in functions and their descriptions. In addition, you can define functions for use in your program. -@DBXREF{User-defined} +@xref{User-defined} for instructions on how to do this. Finally, @command{gawk} lets you write functions in C or C++ that may be called from your program (@pxref{Dynamic Extensions}). @@ -12015,7 +12013,7 @@ Some of the built-in functions have one or more optional arguments. If those arguments are not supplied, the functions use a reasonable default value. -@DBXREF{Built-in} for full details. If arguments +@xref{Built-in} for full details. If arguments are omitted in calls to user-defined functions, then those arguments are treated as local variables. Such local variables act like the empty string if referenced where a string value is required, @@ -12730,7 +12728,7 @@ The order in which library functions are named on the command line controls the order in which their @code{BEGIN} and @code{END} rules are executed. Therefore, you have to be careful when writing such rules in library files so that the order in which they are executed doesn't matter. -@DBXREF{Options} for more information on +@xref{Options} for more information on using library functions. @xref{Library Functions}, for a number of useful library functions. @@ -12794,12 +12792,12 @@ Finally, the @code{next} and @code{nextfile} statements are not allowed in a @code{BEGIN} rule, because the implicit read-a-record-and-match-against-the-rules loop has not started yet. Similarly, those statements are not valid in an @code{END} rule, because all the input has been read. -(@DBXREF{Next Statement} and +(@xref{Next Statement} and @ifnotdocbook -@DBPXREF{Nextfile Statement}.) +@pxref{Nextfile Statement}.) @end ifnotdocbook @ifdocbook -@DBREF{Nextfile Statement}.) +@ref{Nextfile Statement}.) @end ifdocbook @node BEGINFILE/ENDFILE @@ -12819,10 +12817,10 @@ As with the @code{BEGIN} and @code{END} rules @end ifnotdocbook @end ifnottex @iftex -(see the previous section), +(see the previous @value{SECTION}), @end iftex @ifdocbook -(see the previous section), +(see the previous @value{SECTION}), @end ifdocbook all @code{BEGINFILE} rules in a program are merged, in the order they are read by @command{gawk}, and all @code{ENDFILE} rules are merged as well. @@ -13371,7 +13369,7 @@ for (i in array) @end example @noindent -@DBXREF{Scanning an Array} +@xref{Scanning an Array} for more information on this version of the @code{for} loop. @node Switch Statement @@ -13584,7 +13582,7 @@ statement outside a loop the same way they treated a @code{break} statement outside a loop: as if it were a @code{next} statement @ifset FOR_PRINT -(discussed in the following section). +(discussed in the following @value{SECTION}). @end ifset @ifclear FOR_PRINT (@pxref{Next Statement}). @@ -13756,7 +13754,7 @@ In such a case, if you don't want the @code{END} rule to do its job, set a variable to a nonzero value before the @code{exit} statement and check that variable in the @code{END} rule. -@DBXREF{Assert Function} +@xref{Assert Function} for an example that does this. @cindex dark corner, @code{exit} statement @@ -13767,7 +13765,7 @@ In the case where an argument is supplied to a first @code{exit} statement, and then @code{exit} is called a second time from an @code{END} rule with no argument, @command{awk} uses the previously supplied exit value. @value{DARKCORNER} -@DBXREF{Exit Status} for more information. +@xref{Exit Status} for more information. @cindex programming conventions, @code{exit} statement For example, suppose an error condition occurs that is difficult or @@ -13877,7 +13875,7 @@ A space-separated list of columns that tells @command{gawk} how to split input with fixed columnar boundaries. Assigning a value to @code{FIELDWIDTHS} overrides the use of @code{FS} and @code{FPAT} for field splitting. -@DBXREF{Constant Size} for more information. +@xref{Constant Size} for more information. @cindex @command{gawk}, @code{FPAT} variable in @cindex @code{FPAT} variable @@ -13889,7 +13887,7 @@ A regular expression (as a string) that tells @command{gawk} to create the fields based on text that matches the regular expression. Assigning a value to @code{FPAT} overrides the use of @code{FS} and @code{FIELDWIDTHS} for field splitting. -@DBXREF{Splitting By Content} for more information. +@xref{Splitting By Content} for more information. @cindex @code{FS} variable @cindex separators, field @@ -14105,7 +14103,7 @@ method of accessing command-line arguments. The value of @code{ARGV[0]} can vary from system to system. Also, you should note that the program text is @emph{not} included in @code{ARGV}, nor are any of @command{awk}'s command-line options. -@DBXREF{ARGC and ARGV} for information +@xref{ARGC and ARGV} for information about how @command{awk} uses these variables. @value{DARKCORNER} @@ -14143,9 +14141,9 @@ Some operating systems may not have environment variables. On such systems, the @code{ENVIRON} array is empty (except for @w{@code{ENVIRON["AWKPATH"]}} and @w{@code{ENVIRON["AWKLIBPATH"]}}; -@DBPXREF{AWKPATH Variable} and +@pxref{AWKPATH Variable} and @ifdocbook -@DBREF{AWKLIBPATH Variable}). +@ref{AWKLIBPATH Variable}). @end ifdocbook @ifnotdocbook @pxref{AWKLIBPATH Variable}). @@ -14249,6 +14247,10 @@ This is @code{"FIELDWIDTHS"} if field splitting with @code{FIELDWIDTHS} is in effect, or @code{"FPAT"} if field matching with @code{FPAT} is in effect. +@item PROCINFO["gid"] +@cindex group ID of @command{gawk} user +The value of the @code{getgid()} system call. + @item PROCINFO["identifiers"] @cindex program identifiers A subarray, indexed by the names of all identifiers used in the text of @@ -14284,10 +14286,6 @@ The values indicate what @command{gawk} knows about the identifiers after it has finished parsing the program; they are @emph{not} updated while the program runs. -@item PROCINFO["gid"] -@cindex group ID of @command{gawk} user -The value of the @code{getgid()} system call. - @item PROCINFO["pgrpid"] @cindex process group ID of @command{gawk} process The process group ID of the current process. @@ -14300,14 +14298,6 @@ The process ID of the current process. @cindex parent process ID of @command{gawk} process The parent process ID of the current process. -@item PROCINFO["sorted_in"] -If this element exists in @code{PROCINFO}, its value controls the -order in which array indices will be processed by -@samp{for (@var{indx} in @var{array})} loops. -This is an advanced feature, so we defer the -full description until later; see -@ref{Scanning an Array}. - @item PROCINFO["strftime"] The default time format string for @code{strftime()}. Assigning a new value to this element changes the default. @@ -14328,14 +14318,14 @@ if your version of @command{gawk} supports arbitrary-precision arithmetic (@pxref{Arbitrary Precision Arithmetic}): @table @code -@cindex version of GNU MPFR library -@item PROCINFO["mpfr_version"] -The version of the GNU MPFR library. - @item PROCINFO["gmp_version"] @cindex version of GNU MP library The version of the GNU MP library. +@cindex version of GNU MPFR library +@item PROCINFO["mpfr_version"] +The version of the GNU MPFR library. + @item PROCINFO["prec_max"] @cindex maximum precision supported by MPFR library The maximum precision supported by MPFR. @@ -14367,21 +14357,26 @@ supplementary groups that the process has. Use the @code{in} operator to test for these elements (@pxref{Reference to Elements}). -@cindex @command{gawk}, @code{PROCINFO} array in -@cindex @code{PROCINFO} array, uses -The @code{PROCINFO} array has the following additional uses: +The following elements allow you to change @command{gawk}'s behavior: -@itemize @value{BULLET} -@item -It may be used to provide a timeout when reading from any -open input file, pipe, or coprocess. -@DBXREF{Read Timeout} for more information. +@table @code +@item PROCINFO["@var{command}", "pty"] +For two-way communication to @var{command}, use a pseudo-tty instead +of setting up a two-way pipe. +@xref{Two-way I/O} for more information. -@item -It may be used to cause coprocesses to communicate over pseudo-ttys -instead of through two-way pipes; this is discussed further in -@ref{Two-way I/O}. -@end itemize +@item PROCINFO["@var{input_name}", "READ_TIMEOUT"] +Set a timeout for reading from input redirection @var{input_name}. +@xref{Read Timeout} for more information. + +@item PROCINFO["sorted_in"] +If this element exists in @code{PROCINFO}, its value controls the +order in which array indices will be processed by +@samp{for (@var{indx} in @var{array})} loops. +This is an advanced feature, so we defer the +full description until later; see +@ref{Scanning an Array}. +@end table @cindex @code{RLENGTH} variable @item @code{RLENGTH} @@ -14457,9 +14452,28 @@ function multiply(variable, amount) @} @end example +@noindent +You would use it like this: + +@example +BEGIN @{ + answer = 10.5 + multiply("answer", 4) + print "The answer is", answer +@} +@end example + +@noindent +When run, this produces: + +@example +$ @kbd{gawk -f answer.awk} +@print{} The answer is 42 +@end example + @quotation NOTE -In order to avoid severe time-travel paradoxes,@footnote{Not to mention difficult -implementation issues.} neither @code{FUNCTAB} nor @code{SYMTAB} +In order to avoid severe time-travel paradoxes,@footnote{Not to mention +difficult implementation issues.} neither @code{FUNCTAB} nor @code{SYMTAB} is available as an element within the @code{SYMTAB} array. @end quotation @end table @@ -14502,7 +14516,7 @@ changed. @cindex arguments, command-line @cindex command line, arguments -@DBREF{Auto-set} +@ref{Auto-set} presented the following program describing the information contained in @code{ARGC} and @code{ARGV}: @@ -14572,12 +14586,12 @@ use the @code{delete} statement to remove elements from All of these actions are typically done in the @code{BEGIN} rule, before actual processing of the input begins. -@DBXREF{Split Program} and +@xref{Split Program} and @ifnotdocbook -@DBPXREF{Tee Program} +@pxref{Tee Program} @end ifnotdocbook @ifdocbook -@DBREF{Tee Program} +@ref{Tee Program} @end ifdocbook for examples of each way of removing elements from @code{ARGV}. @@ -14627,20 +14641,20 @@ gawk -f myprog.awk -q -v file1 file2 @dots{} @noindent Because @option{-q} is not a valid @command{gawk} option, it and the following @option{-v} are passed on to the @command{awk} program. -(@DBXREF{Getopt Function} for an @command{awk} library function that +(@xref{Getopt Function} for an @command{awk} library function that parses command-line options.) When designing your program, you should choose options that don't conflict with @command{gawk}'s, because it will process any options that it accepts before passing the rest of the command line on to your program. Using @samp{#!} with the @option{-E} option may help -(@DBPXREF{Executable Scripts} +(@pxref{Executable Scripts} and @ifnotdocbook -@DBPXREF{Options}). +@pxref{Options}). @end ifnotdocbook @ifdocbook -@DBREF{Options}). +@ref{Options}). @end ifdocbook @node Pattern Action Summary @@ -15247,7 +15261,7 @@ the word as the index. The second rule scans the elements of @code{used} to find all the distinct words that appear in the input. It prints each word that is more than 10 characters long and also prints the number of such words. -@DBXREF{String Functions} +@xref{String Functions} for more information on the built-in function @code{length()}. @example @@ -15270,7 +15284,7 @@ END @{ @end example @noindent -@DBXREF{Word Sorting} +@xref{Word Sorting} for a more detailed example of this type. @cindex arrays, elements, order of access by @code{in} operator @@ -16018,7 +16032,7 @@ for (i in a) @{ @end example @noindent -@DBXREF{Walking Arrays} for a user-defined function that ``walks'' an +@xref{Walking Arrays} for a user-defined function that ``walks'' an arbitrarily dimensioned array of arrays. Recall that a reference to an uninitialized array element yields a value @@ -16127,10 +16141,9 @@ be called. @node Built-in @section Built-in Functions -@dfn{Built-in} functions are always available for -your @command{awk} program to call. This @value{SECTION} defines all -the built-in -functions in @command{awk}; some of these are mentioned in other sections +@dfn{Built-in} functions are always available for your @command{awk} +program to call. This @value{SECTION} defines all the built-in functions +in @command{awk}; some of these are mentioned in other @value{SECTION}s but are summarized here for your convenience. @menu @@ -16406,7 +16419,7 @@ together. The following description ignores the third argument, @var{how}, as it requires understanding features that we have not discussed yet. Thus, the discussion here is a deliberate simplification. (We do provide all -the details later on; see @DBREF{Array Sorting Functions} for the full story.) +the details later on; see @ref{Array Sorting Functions} for the full story.) @end quotation Both functions return the number of elements in the array @var{source}. @@ -16581,7 +16594,7 @@ contrast, @code{length(15 * 35)} works out to three. In this example, @end ifnotdocbook @end ifnottex @docbook -15 ⋅ 35 = 525, @c +15 ⋅ 35 = 525, @end docbook and 525 is then converted to the string @code{"525"}, which has three characters. @@ -16653,7 +16666,7 @@ at which that substring begins (one, if it starts at the beginning of The @var{regexp} argument may be either a regexp constant (@code{/}@dots{}@code{/}) or a string constant (@code{"}@dots{}@code{"}). In the latter case, the string is treated as a regexp to be matched. -@DBXREF{Computed Regexps} for a +@xref{Computed Regexps} for a discussion of the difference between the two forms, and the implications for writing your program correctly. @@ -16850,7 +16863,7 @@ Modern implementations of @command{awk}, including @command{gawk}, allow the third argument to be a regexp constant (@w{@code{/}@dots{}@code{/}}) as well as a string. @value{DARKCORNER} The POSIX standard allows this as well. -@DBXREF{Computed Regexps} for a +@xref{Computed Regexps} for a discussion of the difference between using a string constant or a regexp constant, and the implications for writing your program correctly. @@ -16901,7 +16914,7 @@ Using the @code{strtonum()} function is @emph{not} the same as adding zero to a string value; the automatic coercion of strings to numbers works only for decimal data, not for octal or hexadecimal.@footnote{Unless you use the @option{--non-decimal-data} option, which isn't recommended. -@DBXREF{Nondecimal Data} for more information.} +@xref{Nondecimal Data} for more information.} Note also that @code{strtonum()} uses the current locale's decimal point for recognizing numbers (@pxref{Locales}). @@ -16919,7 +16932,7 @@ Return the number of substitutions made (zero or one). The @var{regexp} argument may be either a regexp constant (@code{/}@dots{}@code{/}) or a string constant (@code{"}@dots{}@code{"}). In the latter case, the string is treated as a regexp to be matched. -@DBXREF{Computed Regexps} for a +@xref{Computed Regexps} for a discussion of the difference between the two forms, and the implications for writing your program correctly. @@ -17342,7 +17355,7 @@ that had been its behavior for many years. When @value{PVERSION} 4.0.0 was released, the @command{gawk} maintainer made the POSIX rules the default, breaking well over a decade's worth of backward compatibility.@footnote{This was rather naive of him, despite -there being a note in this section indicating that the next major version +there being a note in this @value{SECTION} indicating that the next major version would move to the POSIX rules.} Needless to say, this was a bad idea, and as of @value{PVERSION} 4.0.1, @command{gawk} resumed its historical behavior, and only follows the POSIX rules when @option{--posix} is given. @@ -17423,7 +17436,7 @@ Optional parameters are enclosed in square brackets ([ ]): Close the file @var{filename} for input or output. Alternatively, the argument may be a shell command that was used for creating a coprocess, or for redirecting to or from a pipe; then the coprocess or pipe is closed. -@DBXREF{Close Files And Pipes} +@xref{Close Files And Pipes} for more information. When closing a coprocess, it is occasionally useful to first close @@ -17547,7 +17560,7 @@ it is all buffered and sent down the pipe to @command{cat} in one shot. @cindex interacting with other programs Execute the operating system command @var{command} and then return to the @command{awk} program. -Return @var{command}'s exit status. +Return @var{command}'s exit status (see further on). For example, if the following fragment of code is put in your @command{awk} program: @@ -17586,6 +17599,34 @@ When @option{--sandbox} is specified, the @code{system()} function is disabled (@pxref{Options}). @end quotation +On POSIX systems, a command's exit status is a 16-bit number. The exit +value passed to the C @code{exit()} function is held in the high-order +eight bits. The low-order bits indicate if the process was killed by a +signal (bit 7) and if so, the guilty signal number (bits 0--6). + +Traditionally, @command{awk}'s @code{system()} function has simply +returned the exit status value divided by 256. In the normal case this +gives the exit status but in the case of death-by-signal it yields +a fractional floating-point value.@footnote{In private correspondence, +Dr.@: Kernighan has indicated to me that the way this was done +was probably a mistake.} POSIX states that @command{awk}'s +@code{system()} should return the full 16-bit value. + +@command{gawk} steers a middle ground. +The return values are summarized in @ref{table-system-return-values}. + +@float Table,table-system-return-values +@caption{Return values from @code{system()}} +@multitable @columnfractions .40 .60 +@headitem Situation @tab Return value from @code{system()} +@item @option{--traditional} @tab C @code{system()}'s value divided by 256 +@item @option{--posix} @tab C @code{system()}'s value +@item Normal exit of command @tab Command's exit status +@item Death by signal of command @tab 256 + number of murderous signal +@item Death by signal of command with core dump @tab 512 + number of murderous signal +@item Some kind of error @tab @minus{}1 +@end multitable +@end float @end table @sidebar Controlling Output Buffering with @code{system()} @@ -17671,19 +17712,18 @@ All known POSIX-compliant systems support timestamps from 0 through @iftex @math{2^{31} - 1}, @end iftex -@ifnottex -@ifnotdocbook +@ifinfo 2^31 - 1, -@end ifnotdocbook +@end ifinfo +@ifnottex +@ifnotinfo +2@sup{31} @minus{} 1, +@end ifnotinfo @end ifnottex -@docbook -231 − 1, @c -@end docbook which is sufficient to represent times through 2038-01-19 03:14:07 UTC. Many systems support a wider range of timestamps, including negative timestamps that represent times before the epoch. -@c FIXME: Use @sup here for superscript @cindex @command{date} utility, GNU @cindex time, retrieving @@ -18296,7 +18336,7 @@ $ @kbd{gawk -f testbits.awk} @print{} 123 = 01111011 @print{} 0123 = 01010011 @print{} 0x99 = 10011001 -@print{} compl(0x99) = 0xffffff66 = 11111111111111111111111101100110 +@print{} compl(0x99) = 0x3fffffffffff66 = 00111111111111111111111111111111111111111111111101100110 @print{} lshift(0x99, 2) = 0x264 = 0000001001100100 @print{} rshift(0x99, 2) = 0x26 = 00100110 @end example @@ -19584,7 +19624,7 @@ It contains the following chapters: @cindex functions, library @cindex functions, user-defined, library of -@DBREF{User-defined} describes how to write +@ref{User-defined} describes how to write your own @command{awk} functions. Writing functions is important, because it allows you to encapsulate algorithms and program tasks in a single place. It simplifies programming, making program development more @@ -19617,7 +19657,7 @@ use these functions. The functions are presented here in a progression from simple to complex. @cindex Texinfo -@DBREF{Extract Program} +@ref{Extract Program} presents a program that you can use to extract the source code for these example library functions and programs from the Texinfo source for this @value{DOCUMENT}. @@ -19769,7 +19809,7 @@ A different convention, common in the Tcl community, is to use a single associative array to hold the values needed by the library function(s), or ``package.'' This significantly decreases the number of actual global names in use. For example, the functions described in -@DBREF{Passwd Functions} +@ref{Passwd Functions} might have used array elements @code{@w{PW_data["inited"]}}, @code{@w{PW_data["total"]}}, @code{@w{PW_data["count"]}}, and @code{@w{PW_data["awklib"]}}, instead of @code{@w{_pw_inited}}, @code{@w{_pw_awklib}}, @code{@w{_pw_total}}, @@ -20328,7 +20368,7 @@ more difficult than they really need to be.} @cindex timestamps, formatted @cindex time, managing The @code{systime()} and @code{strftime()} functions described in -@DBREF{Time Functions} +@ref{Time Functions} provide the minimum functionality necessary for dealing with the time of day in human-readable form. Although @code{strftime()} is extensive, the control formats are not necessarily easy to remember or intuitively obvious when @@ -20414,7 +20454,7 @@ function getlocaltime(time, ret, now, i) The string indices are easier to use and read than the various formats required by @code{strftime()}. The @code{alarm} program presented in -@DBREF{Alarm Program} +@ref{Alarm Program} uses this function. A more general design for the @code{getlocaltime()} function would have allowed the user to supply an optional timestamp value to use instead @@ -20481,7 +20521,7 @@ will never match if the file has contents. @command{gawk} reads data from the file into @code{tmp}, attempting to match @code{RS}. The match fails after each read, but fails quickly, such that @command{gawk} fills @code{tmp} with the entire contents of the file. -(@DBXREF{Records} for information on @code{RT} and @code{RS}.) +(@xref{Records} for information on @code{RT} and @code{RS}.) In the case that @code{file} is empty, the return value is the null string. Thus, calling code may use something like: @@ -20495,7 +20535,7 @@ if (length(contents) == 0) This tests the result to see if it is empty or not. An equivalent test would be @samp{contents == ""}. -@DBXREF{Extension Sample Readfile} for an extension function that +@xref{Extension Sample Readfile} for an extension function that also reads an entire file into memory. @node Shell Quoting @@ -20694,7 +20734,7 @@ END @{ endfile(_filename_) @} @c endfile @end example -@DBREF{Wc Program} +@ref{Wc Program} shows how this library function can be used and how it simplifies writing the main program. @@ -20768,6 +20808,36 @@ Because of this, you should not call it from an @code{ENDFILE} rule. (This isn't necessary anyway, because @command{gawk} goes to the next file as soon as an @code{ENDFILE} rule finishes!) +You need to be careful calling @code{rewind()}. You can end up +causing infinite recursion if you don't pay attention. Here is an +example use: + +@example +$ @kbd{cat data} +@print{} a +@print{} b +@print{} c +@print{} d +@print{} e + +$ cat @kbd{test.awk} +@print{} FNR == 3 && ! rewound @{ +@print{} rewound = 1 +@print{} rewind() +@print{} @} +@print{} +@print{} @{ print FILENAME, FNR, $0 @} + +$ @kbd{gawk -f rewind.awk -f test.awk data } +@print{} data 1 a +@print{} data 2 b +@print{} data 1 a +@print{} data 2 b +@print{} data 3 c +@print{} data 4 d +@print{} data 5 e +@end example + @node File Checking @subsection Checking for Readable @value{DDF}s @@ -21292,7 +21362,7 @@ Using @samp{#!} with the @option{-E} option may help avoid conflicts between your program's options and @command{gawk}'s options, as @option{-E} causes @command{gawk} to abandon processing of further options -(@DBPXREF{Executable Scripts} and +(@pxref{Executable Scripts} and @ifnotdocbook @pxref{Options}). @end ifnotdocbook @@ -21320,7 +21390,7 @@ However, because these are numbers, they do not provide very useful information to the average user. There needs to be some way to find the user information associated with the user and group ID numbers. This @value{SECTION} presents a suite of functions for retrieving information from the -user database. @DBXREF{Group Functions} +user database. @xref{Group Functions} for a similar suite that retrieves information from the group database. @cindex @code{getpwent()} function (C library) @@ -21396,11 +21466,7 @@ main(int argc, char **argv) @c endfile @ignore @c file eg/lib/pwcat.c -#ifdef ZOS_USS - printf("%s:%ld:%ld:%s:%s\n", - p->pw_name, (long) p->pw_uid, - (long) p->pw_gid, p->pw_dir, p->pw_shell); -#else +#ifdef HAVE_STRUCT_PASSWD_PW_PASSWD @c endfile @end ignore @c file eg/lib/pwcat.c @@ -21410,6 +21476,10 @@ main(int argc, char **argv) @c endfile @ignore @c file eg/lib/pwcat.c +#else + printf("%s:*:%ld:%ld:%s:%s\n", + p->pw_name, (long) p->pw_uid, + (long) p->pw_gid, p->pw_dir, p->pw_shell); #endif @c endfile @end ignore @@ -21654,7 +21724,7 @@ once. If you are worried about squeezing every last cycle out of your this is not necessary, as most @command{awk} programs are I/O-bound, and such a change would clutter up the code. -The @command{id} program in @DBREF{Id Program} +The @command{id} program in @ref{Id Program} uses these functions. @node Group Functions @@ -21672,7 +21742,7 @@ uses these functions. @cindex group file @cindex files, group Much of the discussion presented in -@DBREF{Passwd Functions} +@ref{Passwd Functions} applies to the group database as well. Although there has traditionally been a well-known file (@file{/etc/group}) in a well-known format, the POSIX standard only provides a set of C library routines @@ -21729,9 +21799,7 @@ main(int argc, char **argv) @c endfile @ignore @c file eg/lib/grcat.c -#ifdef ZOS_USS - printf("%s:%ld:", g->gr_name, (long) g->gr_gid); -#else +#ifdef HAVE_STRUCT_GROUP_GR_PASSWD @c endfile @end ignore @c file eg/lib/grcat.c @@ -21740,6 +21808,8 @@ main(int argc, char **argv) @c endfile @ignore @c file eg/lib/grcat.c +#else + printf("%s:*:%ld:", g->gr_name, (long) g->gr_gid); #endif @c endfile @end ignore @@ -22009,13 +22079,13 @@ Most of the work is in scanning the database and building the various associative arrays. The functions that the user calls are themselves very simple, relying on @command{awk}'s associative arrays to do work. -The @command{id} program in @DBREF{Id Program} +The @command{id} program in @ref{Id Program} uses these functions. @node Walking Arrays @section Traversing Arrays of Arrays -@DBREF{Arrays of Arrays} described how @command{gawk} +@ref{Arrays of Arrays} described how @command{gawk} provides arrays of arrays. In particular, any element of an array may be either a scalar or another array. The @code{isarray()} function (@pxref{Type Functions}) @@ -22225,8 +22295,10 @@ END @{ As a related challenge, revise that code to handle the case where an intervening value in @code{ARGV} is a variable assignment. +@ignore +@c June 13 2015: Antonio points out that this is answered in the text. Ooops. @item -@DBREF{Walking Arrays} presented a function that walked a multidimensional +@ref{Walking Arrays} presented a function that walked a multidimensional array to print it out. However, walking an array and processing each element is a general-purpose operation. Generalize the @code{walk_array()} function by adding an additional parameter named @@ -22242,6 +22314,7 @@ and then processes the element. Test your new version by printing the array; you should end up with output identical to that of the original version. +@end ignore @end enumerate @c EXCLUDE END @@ -22259,7 +22332,7 @@ presenting a potpourri of @command{awk} programs for your reading enjoyment. @c FULLXREF OFF @ifnotinfo -There are three sections. +There are three @value{SECTION}s. The first describes how to run the programs presented in this @value{CHAPTER}. @@ -22461,7 +22534,7 @@ BEGIN @{ " for delimiter\n", Optarg) > "/dev/stderr" Optarg = substr(Optarg, 1, 1) @} - FS = Optarg + fs = FS = Optarg OFS = FS if (FS == " ") # defeat awk semantics FS = "[ ]" @@ -22483,7 +22556,12 @@ special care when the field delimiter is a space. Using a single space (@code{@w{" "}}) for the value of @code{FS} is incorrect---@command{awk} would separate fields with runs of spaces, TABs, and/or newlines, and we want them to be separated with individual -spaces. Also remember that after @code{getopt()} is through +spaces. +To this end, we save the original space character in the variable +@code{fs} for later use; after setting @code{FS} to @code{"[ ]"} we can't +use it directly to see if the field delimiter character is in the string. + +Also remember that after @code{getopt()} is through (as described in @ref{Getopt Function}), we have to clear out all the elements of @code{ARGV} from 1 to @code{Optind}, @@ -22635,7 +22713,7 @@ written out between the fields: @example @c file eg/prog/cut.awk @{ - if (by_fields && suppress && index($0, FS) == 0) + if (by_fields && suppress && index($0, fs) == 0) next for (i = 1; i <= nfields; i++) @{ @@ -23700,7 +23778,7 @@ BEGIN @{ if (! do_lines && ! do_words && ! do_chars) do_lines = do_words = do_chars = 1 - print_total = (ARGC - i > 2) + print_total = (ARGC - i > 1) @} @c endfile @end example @@ -24249,7 +24327,7 @@ of lines on the page @end ifnotdocbook @end ifnottex @docbook -(20 ⋅ 5 = 100). @c +(20 ⋅ 5 = 100). @end docbook Most of the work is done in the @code{printpage()} function. @@ -24635,7 +24713,7 @@ that prints a nice message: @@example @@c file examples/messages.awk BEGIN @@@{ print "Don't panic!" @@@} -@@c end file +@@c endfile @@end example It also prints some final advice: @@ -24643,7 +24721,7 @@ It also prints some final advice: @@example @@c file examples/messages.awk END @@@{ print "Always avoid bored archaeologists!" @@@} -@@c end file +@@c endfile @@end example @dots{} @end example @@ -25628,7 +25706,7 @@ the separator can considerably simplify such tasks. @item The examples here demonstrate the usefulness of the library -functions from @DBREF{Library Functions} +functions from @ref{Library Functions} for a number of real (if small) programs. @item @@ -25959,7 +26037,7 @@ Often, though, it is desirable to be able to loop over the elements in a particular order that you, the programmer, choose. @command{gawk} lets you do this. -@DBREF{Controlling Scanning} describes how you can assign special, +@ref{Controlling Scanning} describes how you can assign special, predefined values to @code{PROCINFO["sorted_in"]} in order to control the order in which @command{gawk} traverses an array during a @code{for} loop. @@ -25984,7 +26062,7 @@ Here, @code{i1} and @code{i2} are the indices, and @code{v1} and @code{v2} are the corresponding values of the two elements being compared. Either @code{v1} or @code{v2}, or both, can be arrays if the array being traversed contains subarrays as values. -(@DBXREF{Arrays of Arrays} for more information about subarrays.) +(@xref{Arrays of Arrays} for more information about subarrays.) The three possible return values are interpreted as follows: @table @code @@ -26327,6 +26405,58 @@ is true because locale-based comparison occurs only when in POSIX-compatibility mode, and because @code{asort()} and @code{asorti()} are @command{gawk} extensions, they are not available in that case.} +The following example demonstrates the use of a comparison function with +@code{asort()}. The comparison function, @code{case_fold_compare()}, maps +both values to lowercase in order to compare them ignoring case. + +@example +# case_fold_compare --- compare as strings, ignoring case + +function case_fold_compare(i1, v1, i2, v2, l, r) +@{ + l = tolower(v1) + r = tolower(v2) + + if (l < r) + return -1 + else if (l == r) + return 0 + else + return 1 +@} +@end example + +And here is the test program for it: + +@example +# Test program + +BEGIN @{ + Letters = "abcdefghijklmnopqrstuvwxyz" \ + "ABCDEFGHIJKLMNOPQRSTUVWXYZ" + split(Letters, data, "") + + asort(data, result, "case_fold_compare") + + j = length(result) + for (i = 1; i <= j; i++) @{ + printf("%s", result[i]) + if (i % (j/2) == 0) + printf("\n") + else + printf(" ") + @} +@} +@end example + +When run, we get the following: + +@example +$ @kbd{gawk -f case_fold_compare.awk} +@print{} A a B b c C D d e E F f g G H h i I J j k K l L M m +@print{} n N O o p P Q q r R S s t T u U V v w W X x y Y z Z +@end example + @node Two-way I/O @section Two-Way Communications with Another Process @@ -26493,6 +26623,17 @@ As a side note, the assignment @samp{LC_ALL=C} in the @command{sort} command ensures traditional Unix (ASCII) sorting from @command{sort}. This is not strictly necessary here, but it's good to know how to do this. +Be careful when closing the @code{"from"} end of a two-way pipe; in this +case @command{gawk} waits for the child process to exit, which may cause +your program to hang. (Thus, this particular feature is of much less +use in practice than being able to close the @code{"to"} end.) + +@quotation CAUTION +It is a fatal error to write to the @code{"to"} end of a two-way +pipe which has been closed. It is also a fatal error to read +from the @code{"from"} end of a two-way pipe that has been closed. +@end quotation + @cindex @command{gawk}, @code{PROCINFO} array in @cindex @code{PROCINFO} array, and communications via ptys You may also use pseudo-ttys (ptys) for @@ -26510,10 +26651,27 @@ print @dots{} |& command # start two-way pipe @end example @noindent -Using ptys usually avoids the buffer deadlock issues described earlier, at some -loss in performance. If your system does not have ptys, or if all the -system's ptys are in use, @command{gawk} automatically falls back to -using regular pipes. +If your system does not have ptys, or if all the system's ptys are in use, +@command{gawk} automatically falls back to using regular pipes. + +Using ptys usually avoids the buffer deadlock issues described earlier, +at some loss in performance. This is because the tty driver buffers +and sends data line-by-line. On systems with the @command{stdbuf} +(part of the @uref{http://www.gnu.org/software/coreutils/coreutils.html, +GNU Coreutils package}), you can use that program instead of ptys. + +Note also that ptys are not fully transparent. Certain binary control +codes, such @kbd{Ctrl-d} for end-of-file, are interpreted by the tty +driver and not passed through. + +@quotation CAUTION +Finally, coprocesses open up the possibility of @dfn{deadlock} between +@command{gawk} and the program running in the coprocess. This can occur +if you send ``too much'' data to the coprocess before reading any back; +each process is blocked writing data with noone available to read what +they've already written. There is no workaround for deadlock; careful +programming and knowledge of the behavior of the coprocess are required. +@end quotation @node TCP/IP Networking @section Using @command{gawk} for Network Programming @@ -26526,7 +26684,7 @@ using regular pipes. @cindex files, @code{/inet4/@dots{}} (@command{gawk}) @cindex @code{/inet6/@dots{}} special files (@command{gawk}) @cindex files, @code{/inet6/@dots{}} (@command{gawk}) -@cindex @code{EMISTERED} +@cindex @code{EMRED} @ifnotdocbook @quotation @code{EMRED}:@* @@ -26541,7 +26699,7 @@ using regular pipes. @docbook
Mike O'Brien (aka Mr. Protocol) -EMISTERED: +EMRED:     A host is a host from coast to coast,     and no-one can talk to host that's close,     unless the host that isn't close @@ -26635,6 +26793,12 @@ which comes as part of the @command{gawk} distribution, for a much more complete introduction and discussion, as well as extensive examples. +@quotation NOTE +@command{gawk} can only open direct sockets. There is currently +no way to access services available over Secure Socket Layer +(SSL); this includes any web service whose URL starts with @samp{https://}. +@end quotation + @node Profiling @section Profiling Your @command{awk} Programs @@ -27241,6 +27405,26 @@ before or after the day in a date, local month abbreviations, and so on. All of the above. (Not too useful in the context of @command{gettext}.) @end table +@quotation NOTE +@cindex @env{LANGUAGE} environment variable +As described in @ref{Locales}, environment variables with the same +name as the locale categories (@env{LC_CTYPE}, @env{LC_ALL}, etc.) +influence @command{gawk}'s behavior (and that of other utilities). + +Normally, these variables also affect how the @code{gettext} library +finds translations. However, the @env{LANGUAGE} environment variable +overrides the @env{LC_@var{xxx}} variables. Many GNU/Linux systems +may define this variable without your knowledge, causing @command{gawk} +to not find the correct translations. If this happens to you, +look to see if @env{LANGUAGE} is defined, and if so, use the shell's +@command{unset} command to remove it. +@end quotation + +For testing translations of @command{gawk} itself, you can set +the @env{GAWK_LOCALE_DIR} environment variable. See the documentation +for the C @code{bindtextdomain()} function and also see +@ref{Other Environment Variables}. + @node Programmer i18n @section Internationalizing @command{awk} Programs @cindex @command{awk} programs, internationalizing @@ -27408,7 +27592,7 @@ BEGIN @{ @end enumerate -@DBXREF{I18N Example} +@xref{I18N Example} for an example program showing the steps to create and use translations from @command{awk}. @@ -27469,7 +27653,7 @@ second argument to @code{dcngettext()}.@footnote{The You should distribute the generated @file{.pot} file with your @command{awk} program; translators will eventually use it to provide you translations that you can also then distribute. -@DBXREF{I18N Example} +@xref{I18N Example} for the full list of steps to go through to create and test translations for @command{guide}. @@ -28997,6 +29181,12 @@ gawk> @kbd{dump} gawk> @end smallexample +@cindex @code{exit} debugger command +@cindex exit the debugger +@item @code{exit} +Exit the debugger. +See the entry for @samp{quit}, later in this list. + @cindex debugger commands, @code{h} (@code{help}) @cindex debugger commands, @code{help} @cindex @code{help} debugger command @@ -29311,31 +29501,16 @@ signed. The possible ranges of values are shown in @ref{table-numeric-ranges}. @item Single-precision floating point (approximate) @tab @math{1.175494^{-38}} @tab @math{3.402823^{38}} @item Double-precision floating point (approximate) @tab @math{2.225074^{-308}} @tab @math{1.797693^{308}} @end iftex -@ifnottex -@ifnotdocbook +@ifinfo @item Single-precision floating point (approximate) @tab 1.175494e-38 @tab 3.402823e38 @item Double-precision floating point (approximate) @tab 2.225074e-308 @tab 1.797693e308 -@end ifnotdocbook +@end ifinfo +@ifnottex +@ifnotinfo +@item Single-precision floating point (approximate) @tab 1.175494@sup{-38} @tab 3.402823@sup{38} +@item Double-precision floating point (approximate) @tab 2.225074@sup{-308} @tab 1.797693@sup{308} +@end ifnotinfo @end ifnottex -@ifdocbook -@item Single-precision floating point (approximate) @tab -@c FIXME: Use @sup here for superscript -@docbook -1.175494-38 -@end docbook -@tab -@docbook -3.40282338 -@end docbook -@item Double-precision floating point (approximate) @tab -@docbook -2.225074-308 -@end docbook -@tab -@docbook -1.797693308 -@end docbook -@end ifdocbook @end multitable @end float @@ -29403,7 +29578,7 @@ formula: @end ifnotdocbook @end ifnottex @docbook -prec = 3.322 ⋅ dps @c +prec = 3.322 ⋅ dps @end docbook @end display @@ -29463,7 +29638,8 @@ one extra bit of significand. By default, @command{gawk} uses the double-precision floating-point values supplied by the hardware of the system it runs on. However, if it was -compiled to do so, @command{gawk} uses the @uref{http://www.mpfr.org, +compiled to do so, and the @option{-M} command-line option is supplied, +@command{gawk} uses the @uref{http://www.mpfr.org, GNU MPFR} and @uref{http://gmplib.org, GNU MP} (GMP) libraries for arbitrary-precision arithmetic on numbers. You can see if MPFR support is available like so: @@ -29494,7 +29670,7 @@ Two predefined variables, @code{PREC} and @code{ROUNDMODE}, provide control over the working precision and the rounding mode. The precision and the rounding mode are set globally for every operation to follow. -@DBXREF{Setting precision} and @DBREF{Setting the rounding mode} +@xref{Setting precision} and @ref{Setting the rounding mode} for more information. @node FP Math Caution @@ -29928,17 +30104,16 @@ the following computes @iftex @math{5^{4^{3^{2}}}}, @end iftex -@ifnottex -@ifnotdocbook +@ifinfo 5^4^3^2, -@end ifnotdocbook +@end ifinfo +@ifnottex +@ifnotinfo +5@sup{4@sup{3@sup{2}}}, +@end ifnotinfo @end ifnottex -@docbook -5432, @c -@end docbook the result of which is beyond the limits of ordinary hardware double-precision floating-point values: -@c FIXME: Use @sup here for superscript @example $ @kbd{gawk -M 'BEGIN @{} @@ -29966,7 +30141,7 @@ would be 3.322 x 183231, @docbook prec = 3.322 ⋅ dps) would be -prec = 3.322 ⋅ 183231, @c +prec = 3.322 ⋅ 183231, @end docbook or 608693. @@ -30396,7 +30571,7 @@ The API also provides major and minor version numbers, so that an extension can check if the @command{gawk} it is loaded with supports the facilities it was compiled with. (Version mismatches ``shouldn't'' happen, but we all know how @emph{that} goes.) -@DBXREF{Extension Versioning} for details. +@xref{Extension Versioning} for details. @end itemize @node Extension API Description @@ -31222,7 +31397,7 @@ it to always be called, and to take effect as appropriate (as the @code{readdir} extension does). Or you may want it to take effect based upon the value of an @command{awk} variable, as the XML extension from the @code{gawkextlib} project does (@pxref{gawkextlib}). -In the latter case, code in a @code{BEGINFILE} section +In the latter case, code in a @code{BEGINFILE} rule can look at @code{FILENAME} and @code{ERRNO} to decide whether or not to activate an input parser (@pxref{BEGINFILE/ENDFILE}). @@ -31387,7 +31562,7 @@ values, etc.) within @command{gawk}. @itemx @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ awk_input_buf_t *inbuf, @itemx @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ awk_output_buf_t *outbuf); The function pointed to by this field should fill in the @code{awk_input_buf_t} and -@code{awk_outut_buf_t} structures pointed to by @code{inbuf} and +@code{awk_output_buf_t} structures pointed to by @code{inbuf} and @code{outbuf}, respectively. These structures were described earlier. @item awk_const struct two_way_processor *awk_const next; @@ -31617,7 +31792,7 @@ indicates the type of value expected. @item awk_bool_t set_argument(size_t count, awk_array_t array); Convert a parameter that was undefined into an array; this provides call by reference for arrays. Return false if @code{count} is too big, -or if the argument's type is not undefined. @DBXREF{Array Manipulation} +or if the argument's type is not undefined. @xref{Array Manipulation} for more information on creating arrays. @end table @@ -31766,7 +31941,7 @@ my_extension_init() @} @end example -Next, use the routines in this section for retrieving and updating +Next, use the routines in this @value{SECTION} for retrieving and updating the value through the cookie. Thus, @code{do_magic()} now becomes something like this: @@ -31798,7 +31973,7 @@ and carefully check the return values from the API functions. @node Cached values @subsubsection Creating and Using Cached Values -The routines in this section allow you to create and release +The routines in this @value{SECTION} allow you to create and release cached values. Like scalar cookies, in theory, cached values are not necessary. You can create numbers and strings using the functions in @ref{Constructor Functions}. You can then @@ -31814,7 +31989,7 @@ are clearly less problematic, requiring only a C @code{double} to store.} It is clearly more efficient, if possible, to create a value once, and then tell @command{gawk} to reuse the value for multiple variables. That -is what the routines in this section let you do. The functions are as follows: +is what the routines in this @value{SECTION} let you do. The functions are as follows: @table @code @item awk_bool_t create_value(awk_value_t *value, awk_value_cookie_t *result); @@ -32035,7 +32210,7 @@ The following functions relate to arrays as a whole: @table @code @item awk_array_t create_array(void); Create a new array to which elements may be added. -@DBXREF{Creating Arrays} for a discussion of how to +@xref{Creating Arrays} for a discussion of how to create a new array and add elements to it. @item awk_bool_t clear_array(awk_array_t a_cookie); @@ -32051,7 +32226,7 @@ structure and fill it in. Set the pointer whose address is passed as @code{data} to point to this structure. Return true upon success, or false otherwise. @ifset FOR_PRINT -See the next section +See the next @value{SECTION} @end ifset @ifclear FOR_PRINT @xref{Flattening Arrays}, @@ -32300,7 +32475,7 @@ into @command{gawk}, you have to retrieve the array cookie from the value passed in to @command{sym_update()} before doing anything else with it, like so: @example -awk_value_t value; +awk_value_t val; awk_array_t new_array; new_array = create_array(); @@ -32464,7 +32639,7 @@ $ @kbd{AWKLIBPATH=$PWD ./gawk -f subarray.awk} @end example @noindent -(@DBXREF{Finding Extensions} for more information on the +(@xref{Finding Extensions} for more information on the @env{AWKLIBPATH} environment variable.) @node Extension API Variables @@ -32487,15 +32662,18 @@ information about how @command{gawk} was invoked. @cindex extension API version The API provides both a ``major'' and a ``minor'' version number. -The API versions are available at compile time as constants: - -@table @code -@item GAWK_API_MAJOR_VERSION -The major version of the API - -@item GAWK_API_MINOR_VERSION -The minor version of the API -@end table +The API versions are available at compile time as C preprocessor defines +to support conditional compilation, and as enum constants to facilitate +debugging: + +@float Table,gawk-api-version +@caption{gawk API version constants} +@multitable @columnfractions .33 .33 .33 +@headitem API Version @tab C preprocessor define @tab enum constant +@item Major @tab gawk_api_major_version @tab GAWK_API_MAJOR_VERSION +@item Minor @tab gawk_api_minor_version @tab GAWK_API_MINOR_VERSION +@end multitable +@end float The minor version increases when new functions are added to the API. Such new functions are always added to the end of the API @code{struct}. @@ -32699,7 +32877,7 @@ Compiled extensions have to be installed in a directory where built in the default fashion, the directory in which to find extensions is @file{/usr/local/lib/gawk}. You can also specify a search path with a list of directories to search for compiled extensions. -@DBXREF{AWKLIBPATH Variable} for more information. +@xref{AWKLIBPATH Variable} for more information. @node Extension Example @section Example: Some File Functions @@ -33278,7 +33456,7 @@ of the @file{gawkapi.h} header file, the following steps@footnote{In practice, you would probably want to use the GNU Autotools (Automake, Autoconf, Libtool, and @command{gettext}) to configure and build your libraries. Instructions for doing so are beyond -the scope of this @value{DOCUMENT}. @DBXREF{gawkextlib} for Internet links to +the scope of this @value{DOCUMENT}. @xref{gawkextlib} for Internet links to the tools.} create a GNU/Linux shared library: @example @@ -33681,17 +33859,31 @@ properly: # Please set INPLACE_SUFFIX to make a backup copy. For example, you may # want to set INPLACE_SUFFIX to .bak on the command line or in a BEGIN rule. +# By default, each filename on the command line will be edited inplace. +# But you can selectively disable this by adding an inplace=0 argument +# prior to files that you do not want to process this way. You can then +# reenable it later on the commandline by putting inplace=1 before files +# that you wish to be subject to inplace editing. + # N.B. We call inplace_end() in the BEGINFILE and END rules so that any # actions in an ENDFILE rule will be redirected as expected. +BEGIN @{ + inplace = 1 # enabled by default +@} + BEGINFILE @{ if (_inplace_filename != "") inplace_end(_inplace_filename, INPLACE_SUFFIX) - inplace_begin(_inplace_filename = FILENAME, INPLACE_SUFFIX) + if (inplace) + inplace_begin(_inplace_filename = FILENAME, INPLACE_SUFFIX) + else + _inplace_filename = "" @} END @{ - inplace_end(FILENAME, INPLACE_SUFFIX) + if (_inplace_filename != "") + inplace_end(_inplace_filename, INPLACE_SUFFIX) @} @end group @c endfile @@ -33705,6 +33897,11 @@ If @code{INPLACE_SUFFIX} is not an empty string, the original file is linked to a backup @value{FN} created by appending that suffix. Finally, the temporary file is renamed to the original @value{FN}. +Note that the use of this feature can be controlled by placing @samp{inplace=0} +on the command-line prior to listing files that should not be processed this +way. You can reenable inplace editing by adding an @samp{inplace=1} argument +prior to files that should be subject to inplace editing. + The @code{_inplace_filename} variable serves to keep track of the current filename so as to not invoke @code{inplace_end()} before processing the first file. @@ -33725,6 +33922,10 @@ $ @kbd{gawk -i inplace -v INPLACE_SUFFIX=.bak '@{ gsub(/foo/, "bar") @}} > @kbd{@{ print @}' file1 file2 file3} @end example +Please note that, while the extension does attempt to preserve ownership and permissions, it makes no attempt to copy the ACLs from the original file. + +If the program dies prematurely, as might happen if an unhandled signal is received, a temporary file may be left behind. + @node Extension Sample Ord @subsection Character and Numeric values: @code{ord()} and @code{chr()} @@ -34203,7 +34404,7 @@ function to tell if the input file is a terminal. (Hint: this function is usually expensive to call; try to call it just once.) The content of the prompt should come from a variable settable by @command{awk}-level code. -You can write the prompt to stanard error. However, +You can write the prompt to standard error. However, for best results, open a new file descriptor (or file pointer) on @file{/dev/tty} and print the prompt there, in case standard error has been redirected. @@ -34332,7 +34533,7 @@ User-defined functions and the @code{return} statement (@pxref{User-defined}) @item -The @code{delete} statement (@pxref{Delete}). +The @code{delete} statement (@pxref{Delete}) @item The @code{do}-@code{while} statement @@ -34509,7 +34710,7 @@ The ability to delete all of an array at once with @samp{delete @var{array}} @end itemize -@DBXREF{Common Extensions} for a list of common extensions +@xref{Common Extensions} for a list of common extensions not permitted by the POSIX standard. The 2008 POSIX standard can be found online at @@ -34554,7 +34755,7 @@ or array elements through it @end ignore @end itemize -@DBXREF{Common Extensions} for a full list of the extensions +@xref{Common Extensions} for a full list of the extensions available in his @command{awk}. @node POSIX/GNU @@ -34605,7 +34806,7 @@ The @file{/dev/stdin}, @file{/dev/stdout}, @file{/dev/stderr}, and (@pxref{Special Files}) @item -The @file{/inet}, @file{/inet4}, and @samp{/inet6} special files for +The @file{/inet}, @file{/inet4}, and @file{/inet6} special files for TCP/IP networking using @samp{|&} to specify which version of the IP protocol to use (@pxref{TCP/IP Networking}) @@ -35466,7 +35667,7 @@ The @option{-R} option was removed. @end itemize @item -Support for high precision arithmetic with MPFR. +Support for high precision arithmetic with MPFR (@pxref{Arbitrary Precision Arithmetic}). @item @@ -35732,14 +35933,13 @@ provided the port to Amiga systems and its documentation. @item @cindex Deifik, Scott Scott Deifik -currently maintains the MS-DOS port using DJGPP. +maintained the MS-DOS port using DJGPP. @item @cindex Zaretskii, Eli Eli Zaretskii currently maintains the MS-Windows port using MinGW. - @item @cindex Grigera, Juan Juan Grigera @@ -35938,7 +36138,7 @@ This appendix provides instructions for installing @command{gawk} on the various platforms that are supported by the developers. The primary developer supports GNU/Linux (and Unix), whereas the other ports are contributed. -@DBXREF{Bugs} +@xref{Bugs} for the email addresses of the people who maintain the respective ports. @@ -35997,6 +36197,9 @@ The up-to-date list of mirror sites is available from Try to use one of the mirrors; they will be less busy, and you can usually find one closer to your site. +You may also retrieve the @command{gawk} source code from the official +Git repository; for more information see @ref{Accessing The Source}. + @node Extracting @appendixsubsec Extracting the Distribution @command{gawk} is distributed as several @code{tar} files compressed with @@ -36202,7 +36405,7 @@ source file for this @value{DOCUMENT}. It also contains a @file{Makefile.in} fil The library functions from @ref{Library Functions}, and the @command{igawk} program from -@DBREF{Igawk Program} +@ref{Igawk Program} are included as ready-to-use files in the @command{gawk} distribution. They are installed as part of the installation process. The rest of the programs in this @value{DOCUMENT} are available in appropriate @@ -36221,11 +36424,11 @@ Files needed for building @command{gawk} under MS-Windows @ifclear FOR_PRINT and OS/2 @end ifclear -(@DBPXREF{PC Installation} for details). +(@pxref{PC Installation} for details). @item vms/* Files needed for building @command{gawk} under Vax/VMS and OpenVMS -(@DBPXREF{VMS Installation} for details). +(@pxref{VMS Installation} for details). @item test/* A test suite for @@ -36426,7 +36629,7 @@ Autoconf will not work on your system in some other fashion. If you do have a problem, the @file{configure.ac} file is the input for Autoconf. You may be able to change this file and generate a new version of @command{configure} that works on your system -(@DBPXREF{Bugs} +(@pxref{Bugs} for information on how to report problems in configuring @command{gawk}). The same mechanism may be used to send in updates to @file{configure.ac} and/or @file{custom.h}. @@ -36526,13 +36729,13 @@ or more detailed installation instructions. @appendixsubsubsec Compiling @command{gawk} for PC Operating Systems @ifclear FOR_PRINT -@command{gawk} can be compiled for MS-DOS, Windows32, and OS/2 using the GNU -development tools from DJ Delorie (DJGPP: MS-DOS only), MinGW (Windows32) or Eberhard +@command{gawk} can be compiled for MS-DOS, Windows32, and OS/2 using +MinGW (Windows32) or Eberhard Mattes (EMX: MS-DOS, Windows32 and OS/2). @end ifclear @ifset FOR_PRINT -@command{gawk} can be compiled for MS-DOS and Windows32 using the GNU -development tools from DJ Delorie (DJGPP: MS-DOS only) or MinGW (Windows32). +@command{gawk} can be compiled for Windows32 using +MinGW. @end ifset The file @file{README_d/README.pc} in the @command{gawk} distribution contains @@ -36550,10 +36753,8 @@ to be edited in order to work with your @command{make} utility. The @file{Makefile} supports a number of targets for building various MS-DOS and Windows32 versions. A list of targets is printed if the -@command{make} command is given without a target. As an example, to -build @command{gawk} using the DJGPP tools, enter @samp{make djgpp}. -(The DJGPP tools needed for the build may be found at -@uref{ftp://ftp.delorie.com/pub/djgpp/current/v2gnu/}.) To build a +@command{make} command is given without a target. As an example, +to build a native MS-Windows binary of @command{gawk} using the MinGW tools, type @samp{make mingw32}. @@ -36702,13 +36903,16 @@ E.g., if @env{UNIXROOT} is set to @file{e:} the complete default search path is An @command{sh}-like shell (as opposed to @command{command.com} under MS-DOS or @command{cmd.exe} under MS-Windows or OS/2) may be useful for @command{awk} programming. -The DJGPP collection of tools includes an MS-DOS port of Bash, +The DJGPP collection of tools@footnote{Available from +@uref{ftp://ftp.delorie.com/pub/djgpp/current/v2gnu/}.} +includes an MS-DOS port of Bash, and several shells are available for OS/2, including @command{ksh}. @end ifclear @ifset FOR_PRINT An @command{sh}-like shell (as opposed to @command{command.com} under MS-DOS or @command{cmd.exe} under MS-Windows) may be useful for @command{awk} programming. -The DJGPP collection of tools includes an MS-DOS port of Bash. +The DJGPP collection of tools@footnote{Available from +@uref{ftp://ftp.delorie.com/pub/djgpp/current/v2gnu/}.} includes an MS-DOS port of Bash. @end ifset @cindex common extensions, @code{BINMODE} variable @@ -36901,7 +37105,7 @@ The most recent builds used HP C V7.3 on Alpha VMS 8.3 and both Alpha and IA64 VMS 8.4 used HP C 7.3.@footnote{The IA64 architecture is also known as ``Itanium.''} -@DBXREF{VMS GNV} for information on building +@xref{VMS GNV} for information on building @command{gawk} as a PCSI kit that is compatible with the GNV product. @node VMS Dynamic Extensions @@ -37057,8 +37261,8 @@ to the original shell-style interface (see the help entry for details). One side effect of dual command-line parsing is that if there is only a single parameter (as in the quoted string program), the command becomes ambiguous. To work around this, the normally optional @option{--} -flag is required to force Unix-style parsing rather than @code{DCL} parsing. If any -other dash-type options (or multiple parameters such as @value{DF}s to +flag is required to force Unix-style parsing rather than @code{DCL} parsing. +If any other dash-type options (or multiple parameters such as @value{DF}s to process) are present, there is no ambiguity and @option{--} can be omitted. @cindex exit status, of VMS @@ -37076,15 +37280,15 @@ added to the number shifted over by 3 bits to make room for the severity codes. To extract the actual @command{gawk} exit code from the VMS status, use: @example -unix_status = (vms_status .and. &x7f8) / 8 +unix_status = (vms_status .and. %x7f8) / 8 @end example @noindent A C program that uses @code{exec()} to call @command{gawk} will get the original Unix-style exit value. -Older versions of @command{gawk} for VMS treated a Unix exit code 0 as 1, a failure -as 2, a fatal error as 4, and passed all the other numbers through. +Older versions of @command{gawk} for VMS treated a Unix exit code 0 as 1, +a failure as 2, a fatal error as 4, and passed all the other numbers through. This violated the VMS exit status coding requirements. @cindex floating-point, VAX/VMS @@ -37105,6 +37309,52 @@ of @env{AWKPATH} is a comma-separated list of directory specifications. When defining it, the value should be quoted so that it retains a single translation and not a multitranslation @code{RMS} searchlist. +@cindex redirection on VMS + +This restriction also applies to running @command{gawk} under GNV, +as redirection is always to a DCL command. + +If you are redirecting data to a VMS command or utility, the current +implementation requires that setting up a VMS foreign command that runs +a command file before invoking @command{gawk}. +(This restriction may be removed in a future release of @command{gawk} on VMS.) + +Without this command file, the input data will also appear prepended +to the output data. + +This also allows simulating POSIX commands that are not found on VMS or the +use of GNV utilities. + +The example below is for @command{gawk} redirecting data to the VMS +@command{sort} command. + +@example +$ sort = "@@device:[dir]vms_gawk_sort.com" +@end example + +The command file needs to be of the format in the example below. + +The first line inhibits the passed input data from also showing up in the +output. It must be in the format in the example. + +The next line creates a foreign command that overrides the outer foreign +command which prevents an infinite recursion of command files. + +The next to the last command redirects @code{sys$input} to be +@code{sys$command}, in order to pick up the data that is being redirected +to the command. + +The last line runs the actual command. It must be the last command as the data +redirected from @command{gawk} will be read when the command file ends. + +@example +$!'f$verify(0,0)' +$ sort := sort +$ define/user sys$input sys$command: +$ sort sys$input: sys$output: +@end example + + @node VMS GNV @appendixsubsubsec The VMS GNV Project @@ -37239,6 +37489,17 @@ CC: chet.ramey@case.edu .... I gave up on usenet a couple of years ago and haven't really looked back. It's like sports talk radio -- you feel smarter for not having read it. + +And another one: + +Date: Thu, 11 Jun 2015 09:00:56 -0400 +From: Chet Ramey + +My memory was imperfect. Back in June 2009, I wrote: + +"That's the nice thing about open source, right? You can take your ball +and run to another section of the playground. Then, if you like mixing +metaphors, you can throw rocks from there." @end ignore @quotation NOTE @@ -37272,12 +37533,13 @@ The people maintaining the various @command{gawk} ports are: @cindex Deifik, Scott @cindex Malmberg, John @cindex Pitts, Dave +@cindex G., Daniel Richard @cindex Robbins, Arnold @cindex Zaretskii, Eli @multitable {MS-Windows with MinGW} {123456789012345678901234567890123456789001234567890} @item Unix and POSIX systems @tab Arnold Robbins, @EMAIL{arnold@@skeeve.com,arnold at skeeve dot com} -@item MS-DOS with DJGPP @tab Scott Deifik, @EMAIL{scottd.mail@@sbcglobal.net,scottd dot mail at sbcglobal dot net} +@c @item MS-DOS with DJGPP @tab Scott Deifik, @EMAIL{scottd.mail@@sbcglobal.net,scottd dot mail at sbcglobal dot net} @item MS-Windows with MinGW @tab Eli Zaretskii, @EMAIL{eliz@@gnu.org,eliz at gnu dot org} @@ -37287,12 +37549,17 @@ The people maintaining the various @command{gawk} ports are: @item VMS @tab John Malmberg, @EMAIL{wb8tyw@@qsl.net,wb8tyw at qsl.net} -@item z/OS (OS/390) @tab Dave Pitts, @EMAIL{dpitts@@cozx.com,dpitts at cozx dot com} +@item z/OS (OS/390) @tab Daniel Richard G.@: @EMAIL{skunk@@iSKUNK.ORG,skunk at iSKUNK.ORG} +@item @tab Dave Pitts (Maintainer Emeritus), @EMAIL{dpitts@@cozx.com,dpitts at cozx dot com} @end multitable If your bug is also reproducible under Unix, send a copy of your report to the @EMAIL{bug-gawk@@gnu.org,bug-gawk at gnu dot org} email list as well. +The DJGPP port is no longer supported; it will remain in the code base for a while in case +a volunteer wishes to take it over. If this does not happen, then eventually code for this +port will be removed. + @node Other Versions @appendixsec Other Freely Available @command{awk} Implementations @cindex @command{awk}, implementations @@ -37362,7 +37629,7 @@ directory named @file{awk}. This version requires an ISO C (1990 standard) compiler; the C compiler from GCC (the GNU Compiler Collection) works quite nicely. -@DBXREF{Common Extensions} +@xref{Common Extensions} for a list of extensions in this @command{awk} that are not in POSIX @command{awk}. As a side note, Dan Bornstein has created a Git repository tracking @@ -37398,7 +37665,7 @@ Once you have it, is similar to @command{gawk}'s (@pxref{Unix Installation}). -@DBXREF{Common Extensions} +@xref{Common Extensions} for a list of extensions in @command{mawk} that are not in POSIX @command{awk}. @cindex Sumner, Andrew @@ -37504,10 +37771,12 @@ This is an independent implementation of @command{awk} distributed under the GPL. It has a large number of extensions over standard @command{awk} and may not be 100% syntactically compatible with it. See @uref{http://www.quiktrim.org/QTawk.html} for more information, -including the manual and a download link. +including the manual. The download link there is out of date; see +@uref{http://www.quiktrim.org/#AdditionalResources} for the latest +download link. The project may also be frozen; no new code changes have been made -since approximately 2008. +since approximately 2014. @item Other versions See also the ``Versions and implementations'' section of the @@ -37533,7 +37802,8 @@ cd gawk-@value{VERSION}.@value{PATCHLEVEL} @item @command{gawk} may be built on non-POSIX systems as well. The currently -supported systems are MS-Windows using DJGPP, MSYS, MinGW, and Cygwin, +supported systems are MS-Windows using +MSYS, MinGW, and Cygwin, @ifclear FOR_PRINT OS/2 using EMX, @end ifclear @@ -37624,7 +37894,7 @@ as well as any considerations you should bear in mind. @appendixsubsec Accessing The @command{gawk} Git Repository As @command{gawk} is Free Software, the source code is always available. -@DBREF{Gawk Distribution} describes how to get and build the formal, +@ref{Gawk Distribution} describes how to get and build the formal, released versions of @command{gawk}. @cindex @command{git} utility @@ -37726,6 +37996,9 @@ Use ANSI/ISO style (prototype) function headers when defining functions. Put the name of the function at the beginning of its own line. @item +Use @samp{#elif} instead of nesting @samp{#if} inside @samp{#else}. + +@item Put the return type of the function, even if it is @code{int}, on the line above the line with the name and arguments of the function. @@ -39537,7 +39810,7 @@ An internal mechanism in @command{gawk} to minimize the amount of memory needed to store the value of string variables. If the value assumed by a variable is used in more than one place, only one copy of the value itself is kept, and the associated reference count is increased when the -same value is used by an additional variable, and decresed when the related +same value is used by an additional variable, and decreased when the related variable is no longer in use. When the reference count goes to zero, the memory space used to store the value of the variable is freed. @@ -41018,7 +41291,7 @@ Consistency issues: awk '{ ... }' - + Do show it when showing command-line arguments, data files, etc, even if there is no output shown. diff --git a/doc/sidebar.awk b/doc/sidebar.awk index bb381aa..d1f3efc 100644 --- a/doc/sidebar.awk +++ b/doc/sidebar.awk @@ -1,6 +1,6 @@ # sidebar.awk --- add support for sidebars, other stuff to gawk.texi -# Copyright (C) 2013 the Free Software Foundation, Inc. +# Copyright (C) 2013, 2016 the Free Software Foundation, Inc. # # This file is part of GAWK, the GNU implementation of the # AWK Programming Language. @@ -28,14 +28,14 @@ BEGIN { } /^@sidebar/ { - sub(/^@sidebar[[:space:]]+/, "", $0) + sub(/^@sidebar[ \t]+/, "", $0) title = $0 body = "" collecting = 1 next } -/^@end[[:space:]]+sidebar[[:space:]]*$/ { +/^@end[ \t]+sidebar[ \t]*$/ { collecting = 0 printf "@cindex sidebar, %s\n", title printf "@ifdocbook\n" diff --git a/doc/texinfo.tex b/doc/texinfo.tex index 152e985..ddda670 100644 --- a/doc/texinfo.tex +++ b/doc/texinfo.tex @@ -3,11 +3,11 @@ % Load plain if necessary, i.e., if running under initex. \expandafter\ifx\csname fmtname\endcsname\relax\input plain\fi % -\def\texinfoversion{2015-05-06.11} +\def\texinfoversion{2016-02-05.07} % % Copyright 1985, 1986, 1988, 1990, 1991, 1992, 1993, 1994, 1995, % 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, -% 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014, 2015 +% 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014, 2015, 2016 % Free Software Foundation, Inc. % % This texinfo.tex file is free software: you can redistribute it and/or @@ -158,22 +158,10 @@ \ifx\putwordDefopt\undefined \gdef\putwordDefopt{User Option}\fi \ifx\putwordDeffunc\undefined \gdef\putwordDeffunc{Function}\fi -% Since the category of space is not known, we have to be careful. -\chardef\spacecat = 10 -\def\spaceisspace{\catcode`\ =\spacecat} +% Give the space character the catcode for a space. +\def\spaceisspace{\catcode`\ =10\relax} -% sometimes characters are active, so we need control sequences. -\chardef\ampChar = `\& -\chardef\colonChar = `\: -\chardef\commaChar = `\, \chardef\dashChar = `\- -\chardef\dotChar = `\. -\chardef\exclamChar= `\! -\chardef\hashChar = `\# -\chardef\lquoteChar= `\` -\chardef\questChar = `\? -\chardef\rquoteChar= `\' -\chardef\semiChar = `\; \chardef\slashChar = `\/ \chardef\underChar = `\_ @@ -196,17 +184,6 @@ wide-spread wrap-around } -% Margin to add to right of even pages, to left of odd pages. -\newdimen\bindingoffset -\newdimen\normaloffset -\newdimen\pagewidth \newdimen\pageheight - -% For a final copy, take out the rectangles -% that mark overfull boxes (in case you have decided -% that the text looks ok even though it passes the margin). -% -\def\finalout{\overfullrule=0pt } - % Sometimes it is convenient to have everything in the transcript file % and nothing on the terminal. We don't just call \tracingall here, % since that produces some useless output on the terminal. We also make @@ -251,6 +228,15 @@ \def\bigbreak{\ifnum\lastpenalty<10000\par\ifdim\lastskip<\bigskipamount \removelastskip\penalty-200\bigskip\fi\fi} +% Output routine +% + +% For a final copy, take out the rectangles +% that mark overfull boxes (in case you have decided +% that the text looks ok even though it passes the margin). +% +\def\finalout{\overfullrule=0pt } + % Do @cropmarks to get crop marks. % \newif\ifcropmarks @@ -273,10 +259,18 @@ % % Another complication is to let the user choose whether \thischapter % (\thissection) refers to the chapter (section) in effect at the top -% of a page, or that at the bottom of a page. The solution is -% described on page 260 of The TeXbook. It involves outputting two -% marks for the sectioning macros, one before the section break, and -% one after. I won't pretend I can describe this better than DEK... +% of a page, or that at the bottom of a page. + +% \domark is called twice inside \chapmacro, to add one +% mark before the section break, and one after. +% In the second call \prevchapterdefs is the same as \lastchapterdefs, +% and \prevsectiondefs is the same as \lastsectiondefs. +% Then if the page is not broken at the mark, some of the previous +% section appears on the page, and we can get the name of this section +% from \firstmark for @everyheadingmarks top. +% @everyheadingmarks bottom uses \botmark. +% +% See page 260 of The TeXbook. \def\domark{% \toks0=\expandafter{\lastchapterdefs}% \toks2=\expandafter{\lastsectiondefs}% @@ -284,11 +278,15 @@ \toks6=\expandafter{\prevsectiondefs}% \toks8=\expandafter{\lastcolordefs}% \mark{% - \the\toks0 \the\toks2 % 0: top marks (\last...) - \noexpand\or \the\toks4 \the\toks6 % 1: bottom marks (default, \prev...) + \the\toks0 \the\toks2 % 0: marks for @everyheadingmarks top + \noexpand\or \the\toks4 \the\toks6 % 1: for @everyheadingmarks bottom \noexpand\else \the\toks8 % 2: color marks }% } + +% \gettopheadingmarks, \getbottomheadingmarks, +% \getcolormarks - extract needed part of mark. +% % \topmark doesn't work for the very first chapter (after the title % page or the contents), so we use \firstmark there -- this gets us % the mark with the chapter defs, unless the user sneaks in, e.g., @@ -304,36 +302,67 @@ % Avoid "undefined control sequence" errors. \def\lastchapterdefs{} \def\lastsectiondefs{} +\def\lastsection{} \def\prevchapterdefs{} \def\prevsectiondefs{} \def\lastcolordefs{} +% Margin to add to right of even pages, to left of odd pages. +\newdimen\bindingoffset +\newdimen\normaloffset +\newdimen\pagewidth \newdimen\pageheight + % Main output routine. +% \chardef\PAGE = 255 \output = {\onepageout{\pagecontents\PAGE}} \newbox\headlinebox \newbox\footlinebox -% \onepageout takes a vbox as an argument. Note that \pagecontents -% does insertions, but you have to call it yourself. +% \onepageout takes a vbox as an argument. +% \shipout a vbox for a single page, adding an optional header, footer, +% cropmarks, and footnote. This also causes index entries for this page +% to be written to the auxiliary files. +% \def\onepageout#1{% \ifcropmarks \hoffset=0pt \else \hoffset=\normaloffset \fi % \ifodd\pageno \advance\hoffset by \bindingoffset \else \advance\hoffset by -\bindingoffset\fi % + % Common context changes for both heading and footing. % Do this outside of the \shipout so @code etc. will be expanded in % the headline as they should be, not taken literally (outputting ''code). \def\commmonheadfootline{\let\hsize=\pagewidth \texinfochars} % - \ifodd\pageno \getoddheadingmarks \else \getevenheadingmarks \fi - \global\setbox\headlinebox = \vbox{\commmonheadfootline \makeheadline}% + % Retrieve the information for the headings from the marks in the page, + % and call Plain TeX's \makeheadline and \makefootline, which use the + % values in \headline and \footline. + % + % This is used to check if we are on the first page of a chapter. + \ifcase1\topmark\fi + \let\prevchaptername\thischaptername + \ifcase0\firstmark\fi + \let\curchaptername\thischaptername % + \ifodd\pageno \getoddheadingmarks \else \getevenheadingmarks \fi \ifodd\pageno \getoddfootingmarks \else \getevenfootingmarks \fi + % + \ifx\curchaptername\prevchaptername + \let\thischapterheading\thischapter + \else + % \thischapterheading is the same as \thischapter except it is blank + % for the first page of a chapter. This is to prevent the chapter name + % being shown twice. + \def\thischapterheading{}% + \fi + % + \global\setbox\headlinebox = \vbox{\commmonheadfootline \makeheadline}% \global\setbox\footlinebox = \vbox{\commmonheadfootline \makefootline}% % {% + % Set context for writing to auxiliary files like index files. % Have to do this stuff outside the \shipout because we want it to % take effect in \write's, yet the group defined by the \vbox ends % before the \shipout runs. @@ -342,10 +371,10 @@ \normalturnoffactive % \ in index entries must not stay \, e.g., if % the page break happens to be in the middle of an example. % We don't want .vr (or whatever) entries like this: - % \entry{{\tt \indexbackslash }acronym}{32}{\code {\acronym}} + % \entry{{\indexbackslash }acronym}{32}{\code {\acronym}} % "\acronym" won't work when it's read back in; % it needs to be - % {\code {{\tt \backslashcurfont }acronym} + % {\code {{\backslashcurfont }acronym} \shipout\vbox{% % Do this early so pdf references go to the beginning of the page. \ifpdfmakepagedest \pdfdest name{\the\pageno} xyz\fi @@ -403,6 +432,7 @@ \newinsert\margin \dimen\margin=\maxdimen +% Main part of page, including any footnotes \def\pagebody#1{\vbox to\pageheight{\boxmaxdepth=\maxdepth #1}} {\catcode`\@ =11 \gdef\pagecontents#1{\ifvoid\topins\else\unvbox\topins\fi @@ -425,9 +455,13 @@ \def\nsbot{\vbox {\hrule height\cornerlong depth\cornerthick width\cornerthick}} + +% Argument parsing + % Parse an argument, then pass it to #1. The argument is the rest of % the input line (except we remove a trailing comment). #1 should be a % macro which expects an ordinary undelimited TeX argument. +% For example, \def\foo{\parsearg\fooxxx}. % \def\parsearg{\parseargusing{}} \def\parseargusing#1#2{% @@ -446,9 +480,11 @@ }% } -% First remove any @comment, then any @c comment. +% First remove any @comment, then any @c comment. Also remove a @texinfoc +% comment (see \scanmacro for details). Pass the result on to \argcheckspaces. \def\argremovecomment#1\comment#2\ArgTerm{\argremovec #1\c\ArgTerm} -\def\argremovec#1\c#2\ArgTerm{\argcheckspaces#1\^^M\ArgTerm} +\def\argremovec#1\c#2\ArgTerm{\argremovetexinfoc #1\texinfoc\ArgTerm} +\def\argremovetexinfoc#1\texinfoc#2\ArgTerm{\argcheckspaces#1\^^M\ArgTerm} % Each occurrence of `\^^M' or `\^^M' is replaced by a single space. % @@ -483,14 +519,13 @@ % \def\finishparsearg#1 \ArgTerm{\expandafter\argtorun\expandafter{#1}} + +% \parseargdef - define a command taking an argument on the line +% % \parseargdef\foo{...} % is roughly equivalent to % \def\foo{\parsearg\Xfoo} % \def\Xfoo#1{...} -% -% Actually, I use \csname\string\foo\endcsname, ie. \\foo, as it is my -% favourite TeX trick. --kasal, 16nov03 - \def\parseargdef#1{% \expandafter \doparseargdef \csname\string#1\endcsname #1% } @@ -680,6 +715,12 @@ \endgraf % Not \par, as it may have been set to \lisppar. \global\dimen1 = \prevdepth \egroup % End the \vtop. + \addgroupbox + \prevdepth = \dimen1 + \checkinserts +} + +\def\addgroupbox{ % \dimen0 is the vertical size of the group's box. \dimen0 = \ht\groupbox \advance\dimen0 by \dp\groupbox % \dimen2 is how much space is left on the page (more or less). @@ -692,9 +733,8 @@ \fi \fi \box\groupbox - \prevdepth = \dimen1 - \checkinserts } + % % TeX puts in an \escapechar (i.e., `@') at the beginning of the help % message, so this ends up printing `@group can only ...'. @@ -937,12 +977,20 @@ where each line of input produces a line of output.} % @c is the same as @comment % @ignore ... @end ignore is another way to write a comment % -\def\comment{\begingroup \catcode`\^^M=\other% +\def\comment{\begingroup \catcode`\^^M=\active% +\catcode`\@=\other \catcode`\{=\other \catcode`\}=\other\commentxxx}% + +{\catcode`\^^M=\active% +\gdef\commentxxx#1^^M{\endgroup% +\futurelet\nexttoken\commentxxxx}% +\gdef\commentxxxx{\ifx\nexttoken\aftermacro\expandafter\comment\fi}% +} + +\def\c{\begingroup \catcode`\^^M=\active% \catcode`\@=\other \catcode`\{=\other \catcode`\}=\other% -\commentxxx} -{\catcode`\^^M=\other \gdef\commentxxx#1^^M{\endgroup}} -% -\let\c=\comment +\cxxx} +{\catcode`\^^M=\active \gdef\cxxx#1^^M{\endgroup}} +% See comment in \scanmacro about why the definitions of @c and @comment differ % @paragraphindent NCHARS % We'll use ems for NCHARS, close enough. @@ -1028,45 +1076,8 @@ where each line of input produces a line of output.} % @refill is a no-op. \let\refill=\relax -% If working on a large document in chapters, it is convenient to -% be able to disable indexing, cross-referencing, and contents, for test runs. -% This is done with @novalidate (before @setfilename). -% -\newif\iflinks \linkstrue % by default we want the aux files. -\let\novalidate = \linksfalse - -% @setfilename is done at the beginning of every texinfo file. -% So open here the files we need to have open while reading the input. -% This makes it possible to make a .fmt file for texinfo. -\def\setfilename{% - \fixbackslash % Turn off hack to swallow `\input texinfo'. - \iflinks - \tryauxfile - % Open the new aux file. TeX will close it automatically at exit. - \immediate\openout\auxfile=\jobname.aux - \fi % \openindices needs to do some work in any case. - \openindices - \let\setfilename=\comment % Ignore extra @setfilename cmds. - % - % If texinfo.cnf is present on the system, read it. - % Useful for site-wide @afourpaper, etc. - \openin 1 texinfo.cnf - \ifeof 1 \else \input texinfo.cnf \fi - \closein 1 - % - \comment % Ignore the actual filename. -} - -% Called from \setfilename. -% -\def\openindices{% - \newindex{cp}% - \newcodeindex{fn}% - \newcodeindex{vr}% - \newcodeindex{tp}% - \newcodeindex{ky}% - \newcodeindex{pg}% -} +% @setfilename INFO-FILENAME - ignored +\let\setfilename=\comment % @bye. \outer\def\bye{\pagealignmacro\tracingstats=1\ptexend} @@ -1084,6 +1095,7 @@ where each line of input produces a line of output.} \newtoks\toksC \newtoks\toksD \newbox\boxA +\newbox\boxB \newcount\countA \newif\ifpdf \newif\ifpdfmakepagedest @@ -1141,8 +1153,8 @@ output) for that.)} \def\rgbDarkRed{0.50 0.09 0.12} \def\rgbBlack{0 0 0} % - % k sets the color for filling (usual text, etc.); - % K sets the color for stroking (thin rules, e.g., normal _'s). + % rg sets the color for filling (usual text, etc.); + % RG sets the color for stroking (thin rules, e.g., normal _'s). \def\pdfsetcolor#1{\pdfliteral{#1 rg #1 RG}} % % Set color, and create a mark which defines \thiscolor accordingly, @@ -1437,6 +1449,56 @@ output) for that.)} \let\pdfmakeoutlines = \relax \fi % \ifx\pdfoutput +% +% @image support for XeTeX +% +\newif\ifxeteximgpdf +\ifx\XeTeXrevision\thisisundefined +\else + % + % #1 is image name, #2 width (might be empty/whitespace), #3 height (ditto). + \def\doxeteximage#1#2#3{% + \def\xeteximagewidth{#2}\setbox0 = \hbox{\ignorespaces #2}% + \def\xeteximageheight{#3}\setbox2 = \hbox{\ignorespaces #3}% + % + % XeTeX (and the PDF format) support .pdf, .png, .jpg (among + % others). Let's try in that order, PDF first since if + % someone has a scalable image, presumably better to use that than a + % bitmap. + \let\xeteximgext=\empty + \xeteximgpdffalse + \begingroup + \openin 1 #1.pdf \ifeof 1 + \openin 1 #1.PDF \ifeof 1 + \openin 1 #1.png \ifeof 1 + \openin 1 #1.jpg \ifeof 1 + \openin 1 #1.jpeg \ifeof 1 + \openin 1 #1.JPG \ifeof 1 + \errmessage{Could not find image file #1 for XeTeX}% + \else \gdef\xeteximgext{JPG}% + \fi + \else \gdef\xeteximgext{jpeg}% + \fi + \else \gdef\xeteximgext{jpg}% + \fi + \else \gdef\xeteximgext{png}% + \fi + \else \gdef\xeteximgext{PDF} \global\xeteximgpdftrue% + \fi + \else \gdef\xeteximgext{pdf} \global\xeteximgpdftrue% + \fi + \closein 1 + \endgroup + % + \ifxeteximgpdf + \XeTeXpdffile "#1".\xeteximgext "" + \else + \XeTeXpicfile "#1".\xeteximgext "" + \fi + \ifdim \wd0 >0pt width \xeteximagewidth \fi + \ifdim \wd2 >0pt height \xeteximageheight \fi \relax + } +\fi \message{fonts,} @@ -1820,8 +1882,10 @@ end % A few fonts for @defun names and args. \setfont\defbf\bfshape{10}{\magstep1}{OT1} \setfont\deftt\ttshape{10}{\magstep1}{OT1TT} +\setfont\defsl\slshape{10}{\magstep1}{OT1TT} \setfont\defttsl\ttslshape{10}{\magstep1}{OT1TT} -\def\df{\let\tentt=\deftt \let\tenbf = \defbf \let\tenttsl=\defttsl \bf} +\def\df{\let\tentt=\deftt \let\tenbf = \defbf +\let\tenttsl=\defttsl \let\tensl=\defsl \bf} % Fonts for indices, footnotes, small examples (9pt). \def\smallnominalsize{9pt} @@ -1882,6 +1946,7 @@ end % Section fonts (14.4pt). \def\secnominalsize{14pt} \setfont\secrm\rmbshape{12}{\magstep1}{OT1} +\setfont\secrmnotbold\rmshape{12}{\magstep1}{OT1} \setfont\secit\itbshape{10}{\magstep2}{OT1IT} \setfont\secsl\slbshape{10}{\magstep2}{OT1} \setfont\sectt\ttbshape{12}{\magstep1}{OT1TT} @@ -1951,8 +2016,10 @@ end % A few fonts for @defun names and args. \setfont\defbf\bfshape{10}{\magstephalf}{OT1} \setfont\deftt\ttshape{10}{\magstephalf}{OT1TT} +\setfont\defsl\slshape{10}{\magstephalf}{OT1TT} \setfont\defttsl\ttslshape{10}{\magstephalf}{OT1TT} -\def\df{\let\tentt=\deftt \let\tenbf = \defbf \let\tenttsl=\defttsl \bf} +\def\df{\let\tentt=\deftt \let\tenbf = \defbf +\let\tensl=\defsl \let\tenttsl=\defttsl \bf} % Fonts for indices, footnotes, small examples (9pt). \def\smallnominalsize{9pt} @@ -2423,8 +2490,8 @@ end % \catcode`@=11 \def\plainfrenchspacing{% - \sfcode\dotChar =\@m \sfcode\questChar=\@m \sfcode\exclamChar=\@m - \sfcode\colonChar=\@m \sfcode\semiChar =\@m \sfcode\commaChar =\@m + \sfcode`\.=\@m \sfcode`\?=\@m \sfcode`\!=\@m + \sfcode`\:=\@m \sfcode`\;=\@m \sfcode`\,=\@m \def\endofsentencespacefactor{1000}% for @. and friends } \def\plainnonfrenchspacing{% @@ -2612,9 +2679,9 @@ end % Allow line breaks around only a few characters (only). \def\urefcatcodes{% - \catcode\ampChar=\active \catcode\dotChar=\active - \catcode\hashChar=\active \catcode\questChar=\active - \catcode\slashChar=\active + \catcode`\&=\active \catcode`\.=\active + \catcode`\#=\active \catcode`\?=\active + \catcode`\/=\active } { \urefcatcodes @@ -2771,11 +2838,6 @@ end % \def\dmn#1{\thinspace #1} -% @l was never documented to mean ``switch to the Lisp font'', -% and it is not used as such in any manual I can find. We need it for -% Polish suppressed-l. --karl, 22sep96. -%\def\l#1{{\li #1}\null} - % @acronym for "FBI", "NATO", and the like. % We print this one point size smaller, since it's intended for % all-uppercase. @@ -2828,23 +2890,24 @@ end \def\mathbackslash{\ifnum\fam=\ttfam \mathchar"075C \else\backslash \fi} % \def\math{% - \tex - \mathunderscore - \let\\ = \mathbackslash - \mathactive - % make the texinfo accent commands work in math mode - \let\"=\ddot - \let\'=\acute - \let\==\bar - \let\^=\hat - \let\`=\grave - \let\u=\breve - \let\v=\check - \let\~=\tilde - \let\dotaccent=\dot - % have to provide another name for sup operator - \let\mathopsup=\sup - $\finishmath + \ifmmode\else % only go into math if not in math mode already + \tex + \mathunderscore + \let\\ = \mathbackslash + \mathactive + % make the texinfo accent commands work in math mode + \let\"=\ddot + \let\'=\acute + \let\==\bar + \let\^=\hat + \let\`=\grave + \let\u=\breve + \let\v=\check + \let\~=\tilde + \let\dotaccent=\dot + % have to provide another name for sup operator + \let\mathopsup=\sup + $\expandafter\finishmath\fi } \def\finishmath#1{#1$\endgroup} % Close the group opened by \tex. @@ -2879,9 +2942,6 @@ end \def\sup{\ifmmode \expandafter\ptexsp \else \expandafter\finishsup\fi} \def\finishsup#1{$\ptexsp{\hbox{\selectfonts\lllsize #1}}$}% -% ctrl is no longer a Texinfo command, but leave this definition for fun. -\def\ctrl #1{{\tt \rawbackslash \hat}#1} - % @inlinefmt{FMTNAME,PROCESSED-TEXT} and @inlineraw{FMTNAME,RAW-TEXT}. % Ignore unless FMTNAME == tex; then it is like @iftex and @tex, % except specified as a normal braced arg, so no newlines to worry about. @@ -3195,8 +3255,15 @@ end \def\Eogonek{{\ecfont \char"86}}\def\macrocharE{E} \def\eogonek{{\ecfont \char"A6}}\def\macrochare{e} % -% Use the ec* fonts (cm-super in outline format) for non-CM glyphs. -\def\ecfont{% +% Use the European Computer Modern fonts (cm-super in outline format) +% for non-CM glyphs. That is ec* for regular text and tc* for the text +% companion symbols (LaTeX TS1 encoding). Both are part of the ec +% package and follow the same conventions. +% +\def\ecfont{\etcfont{e}} +\def\tcfont{\etcfont{t}} +% +\def\etcfont#1{% % We can't distinguish serif/sans and italic/slanted, but this % is used for crude hacks anyway (like adding French and German % quotes to documents typeset with CM, where we lose kerning), so @@ -3205,14 +3272,14 @@ end \edef\nominalsize{\csname\curfontsize nominalsize\endcsname}% \ifmonospace % typewriter: - \font\thisecfont = ectt\ecsize \space at \nominalsize + \font\thisecfont = #1ctt\ecsize \space at \nominalsize \else \ifx\curfontstyle\bfstylename % bold: - \font\thisecfont = ecb\ifusingit{i}{x}\ecsize \space at \nominalsize + \font\thisecfont = #1cb\ifusingit{i}{x}\ecsize \space at \nominalsize \else % regular: - \font\thisecfont = ec\ifusingit{ti}{rm}\ecsize \space at \nominalsize + \font\thisecfont = #1c\ifusingit{ti}{rm}\ecsize \space at \nominalsize \fi \fi \thisecfont @@ -3382,7 +3449,7 @@ end \newtoks\evenfootline % footline on even pages \newtoks\oddfootline % footline on odd pages -% Now make TeX use those variables +% Now make \makeheadline and \makefootline in Plain TeX use those variables \headline={{\textfonts\rm \ifodd\pageno \the\oddheadline \else \the\evenheadline \fi}} \footline={{\textfonts\rm \ifodd\pageno \the\oddfootline @@ -3438,6 +3505,10 @@ end % @everyheadingmarks % @everyfootingmarks +% These define \getoddheadingmarks, \getevenheadingmarks, +% \getoddfootingmarks, and \getevenfootingmarks, each to one of +% \gettopheadingmarks, \getbottomheadingmarks. +% \def\evenheadingmarks{\headingmarks{even}{heading}} \def\oddheadingmarks{\headingmarks{odd}{heading}} \def\evenfootingmarks{\headingmarks{even}{footing}} @@ -3485,7 +3556,7 @@ end \global\evenfootline={\hfil} \global\oddfootline={\hfil} \global\evenheadline={\line{\folio\hfil\thistitle}} -\global\oddheadline={\line{\thischapter\hfil\folio}} +\global\oddheadline={\line{\thischapterheading\hfil\folio}} \global\let\contentsalignmacro = \chapoddpage } \let\contentsalignmacro = \chappager @@ -3496,8 +3567,8 @@ end \global\pageno=1 \global\evenfootline={\hfil} \global\oddfootline={\hfil} -\global\evenheadline={\line{\thischapter\hfil\folio}} -\global\oddheadline={\line{\thischapter\hfil\folio}} +\global\evenheadline={\line{\thischapterheading\hfil\folio}} +\global\oddheadline={\line{\thischapterheading\hfil\folio}} \global\let\contentsalignmacro = \chappager } \def\HEADINGSon{\HEADINGSdouble} @@ -3508,7 +3579,7 @@ end \global\evenfootline={\hfil} \global\oddfootline={\hfil} \global\evenheadline={\line{\folio\hfil\thistitle}} -\global\oddheadline={\line{\thischapter\hfil\folio}} +\global\oddheadline={\line{\thischapterheading\hfil\folio}} \global\let\contentsalignmacro = \chapoddpage } @@ -3516,8 +3587,8 @@ end \def\HEADINGSsinglex{% \global\evenfootline={\hfil} \global\oddfootline={\hfil} -\global\evenheadline={\line{\thischapter\hfil\folio}} -\global\oddheadline={\line{\thischapter\hfil\folio}} +\global\evenheadline={\line{\thischapterheading\hfil\folio}} +\global\oddheadline={\line{\thischapterheading\hfil\folio}} \global\let\contentsalignmacro = \chappager } @@ -3727,7 +3798,12 @@ end \noindent \hbox to 0pt{\hss \itemcontents \kern\itemmargin}% % - \vadjust{\penalty 1200}}% not good to break after first line of item. + \ifinner\else + \vadjust{\penalty 1200}% not good to break after first line of item. + \fi + % We can be in inner vertical mode in a footnote, although an + % @itemize looks awful there. + }% \flushcr } @@ -4349,19 +4425,16 @@ end % 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 -% \fooindex ...rest of line... puts an entry in the index foo. -% It also defines \fooindfile to be the number of the output channel for -% the file that accumulates this index. The file's extension is foo. +% \newindex {foo} defines an index named IX. +% It automatically defines \IXindex such that +% \IXindex ...rest of line... puts an entry in the index IX. +% It also defines \IXindfile to be the number of the output channel for +% the file that accumulates this index. The file's extension is IX. % The name of an index should be no more than 2 characters long % for the sake of vms. % \def\newindex#1{% - \iflinks - \expandafter\newwrite \csname#1indfile\endcsname - \openout \csname#1indfile\endcsname \jobname.#1 % Open the file - \fi + \expandafter\chardef\csname#1indfile\endcsname=0 \expandafter\xdef\csname#1index\endcsname{% % Define @#1index \noexpand\doindex{#1}} } @@ -4375,14 +4448,19 @@ end \def\defcodeindex{\parsearg\newcodeindex} % \def\newcodeindex#1{% - \iflinks - \expandafter\newwrite \csname#1indfile\endcsname - \openout \csname#1indfile\endcsname \jobname.#1 - \fi + \expandafter\chardef\csname#1indfile\endcsname=0 \expandafter\xdef\csname#1index\endcsname{% \noexpand\docodeindex{#1}}% } +% The default indices: +\newindex{cp}% concepts, +\newcodeindex{fn}% functions, +\newcodeindex{vr}% variables, +\newcodeindex{tp}% types, +\newcodeindex{ky}% keys +\newcodeindex{pg}% and programs. + % @synindex foo bar makes index foo feed into index bar. % Do this instead of @defindex foo if you don't want it as a separate index. @@ -4411,26 +4489,19 @@ end \expandafter\xdef\csname#2index\endcsname{\noexpand#1{#3}}% } -% Define \doindex, the driver for all \fooindex macros. +% Define \doindex, the driver for all index macros. % Argument #1 is generated by the calling \fooindex macro, -% and it is "foo", the name of the index. +% and it the two-letter name of the index. -% \doindex just uses \parsearg; it calls \doind for the actual work. -% This is because \doind is more useful to call from other macros. - -% There is also \dosubind {index}{topic}{subtopic} -% which makes an entry in a two-level index such as the operation index. - -\def\doindex#1{\edef\indexname{#1}\parsearg\singleindexer} -\def\singleindexer #1{\doind{\indexname}{#1}} +\def\doindex#1{\edef\indexname{#1}\parsearg\doindexxxx} +\def\doindexxxx #1{\doind{\indexname}{#1}} % like the previous two, but they put @code around the argument. -\def\docodeindex#1{\edef\indexname{#1}\parsearg\singlecodeindexer} -\def\singlecodeindexer #1{\doind{\indexname}{\code{#1}}} +\def\docodeindex#1{\edef\indexname{#1}\parsearg\docodeindexxxx} +\def\docodeindexxxx #1{\doind{\indexname}{\code{#1}}} -% Take care of Texinfo commands that can appear in an index entry. -% Since there are some commands we want to expand, and others we don't, -% we have to laboriously prevent expansion for those that we don't. +% Used when writing an index entry out to an index file, to prevent +% expansion of Texinfo commands that can appear in an index entry. % \def\indexdummies{% \escapechar = `\\ % use backslash in output files. @@ -4446,31 +4517,6 @@ end \def\{{{\tt\char123}}% \def\}{{\tt\char125}}% % - % I don't entirely understand this, but when an index entry is - % generated from a macro call, the \endinput which \scanmacro inserts - % causes processing to be prematurely terminated. This is, - % apparently, because \indexsorttmp is fully expanded, and \endinput - % is an expandable command. The redefinition below makes \endinput - % disappear altogether for that purpose -- although logging shows that - % processing continues to some further point. On the other hand, it - % seems \endinput does not hurt in the printed index arg, since that - % is still getting written without apparent harm. - % - % Sample source (mac-idx3.tex, reported by Graham Percival to - % help-texinfo, 22may06): - % @macro funindex {WORD} - % @findex xyz - % @end macro - % ... - % @funindex commtest - % This is not enough to reproduce the bug, but it gives the flavor. - % - % Sample whatsit resulting: - % .@write3{\entry{xyz}{@folio }{@code {xyz@endinput }}} - % - % So: - \let\endinput = \empty - % % Do the redefinitions. \commondummies } @@ -4599,6 +4645,8 @@ end } % \commondummiesnofonts: common to \commondummies and \indexnofonts. +% Define \definedumyletter, \definedummyaccent and \definedummyword before +% using. % \def\commondummiesnofonts{% % Control letters and accents. @@ -4667,21 +4715,54 @@ end \definedummyword\verb \definedummyword\w \definedummyword\xref - % - % Consider: - % @macro mkind{arg1,arg2} - % @cindex \arg2\ - % @end macro - % @mkind{foo, bar} - % The space after the comma will end up in the temporary definition - % that we make for arg2 (see \parsemargdef ff.). We want all this to be - % expanded for the sake of the index, so we end up just seeing "bar". - \let\xeatspaces = \eatspaces } % For testing: output @{ and @} in index sort strings as \{ and \}. \newif\ifusebracesinindexes +\let\indexlbrace\relax +\let\indexrbrace\relax + +{\catcode`\@=0 +\catcode`\\=13 + @gdef@backslashdisappear{@def\{}} +} + +{ +\catcode`\<=13 +\catcode`\-=13 +\catcode`\`=13 + \gdef\indexnonalnumdisappear{% + \expandafter\ifx\csname SETtxiindexlquoteignore\endcsname\relax\else + % @set txiindexlquoteignore makes us ignore left quotes in the sort term. + % (Introduced for FSFS 2nd ed.) + \let`=\empty + \fi + % + \expandafter\ifx\csname SETtxiindexbackslashignore\endcsname\relax\else + \backslashdisappear + \fi + % + \expandafter\ifx\csname SETtxiindexhyphenignore\endcsname\relax\else + \def-{}% + \fi + \expandafter\ifx\csname SETtxiindexlessthanignore\endcsname\relax\else + \def<{}% + \fi + \expandafter\ifx\csname SETtxiindexatsignignore\endcsname\relax\else + \def\@{}% + \fi + } + + \gdef\indexnonalnumreappear{% + \useindexbackslash + \let-\normaldash + \let<\normalless + \def\@{@}% + } +} + + % \indexnofonts is used when outputting the strings to sort the index % by, and when constructing control sequence names. It eliminates all % control sequences and just writes whatever the best ASCII sort string @@ -4694,7 +4775,6 @@ end \def\definedummyletter##1{\let##1\empty}% % All control words become @asis by default; overrides below. \let\definedummyword\definedummyaccent - % \commondummiesnofonts % % Don't no-op \tt, since it isn't a user-level command @@ -4707,19 +4787,10 @@ end \def\_{\normalunderscore}% \def\-{}% @- shouldn't affect sorting % - % Unfortunately, texindex is not prepared to handle braces in the - % content at all. So for index sorting, we map @{ and @} to strings - % starting with |, since that ASCII character is between ASCII { and }. - \ifusebracesinindexes - \def\lbracechar{\lbracecmd}% - \def\rbracechar{\rbracecmd}% - \else - \def\lbracechar{|a}% - \def\rbracechar{|b}% - \fi - \let\{=\lbracechar - \let\}=\rbracechar - % + \uccode`\1=`\{ \uppercase{\def\{{1}}% + \uccode`\1=`\} \uppercase{\def\}{1}}% + \let\lbracechar\{% + \let\rbracechar\}% % % Non-English letters. \def\AA{AA}% @@ -4728,7 +4799,7 @@ end \def\L{L}% \def\OE{OE}% \def\O{O}% - \def\TH{ZZZ}% + \def\TH{TH}% \def\aa{aa}% \def\ae{ae}% \def\dh{dzz}% @@ -4740,7 +4811,7 @@ end \def\o{o}% \def\questiondown{?}% \def\ss{ss}% - \def\th{zzz}% + \def\th{th}% % \def\LaTeX{LaTeX}% \def\TeX{TeX}% @@ -4777,9 +4848,6 @@ end \def\result{=>}% \def\textdegree{o}% % - \expandafter\ifx\csname SETtxiindexlquoteignore\endcsname\relax - \else \indexlquoteignore \fi - % % We need to get rid of all macros, leaving only the arguments (if present). % Of course this is not nearly correct, but it is the best we can do for now. % makeinfo does not expand macros in the argument to @deffn, which ends up @@ -4793,19 +4861,18 @@ end \macrolist } -% Undocumented (for FSFS 2nd ed.): @set txiindexlquoteignore makes us -% ignore left quotes in the sort term. -{\catcode`\`=\active - \gdef\indexlquoteignore{\let`=\empty}} -\let\indexbackslash=0 %overridden during \printindex. \let\SETmarginindex=\relax % put index entries in margin (undocumented)? % Most index entries go through here, but \dosubind is the general case. % #1 is the index name, #2 is the entry text. \def\doind#1#2{\dosubind{#1}{#2}{}} -% Workhorse for all \fooindexes. +% There is also \dosubind {index}{topic}{subtopic} +% which makes an entry in a two-level index such as the operation index. +% TODO: Two-level index? Operation index? + +% Workhorse for all indexes. % #1 is name of index, #2 is stuff to put there, #3 is subentry -- % empty if called from \doind, as we usually are (the main exception % is with most defuns, which call us directly). @@ -4813,6 +4880,7 @@ end \def\dosubind#1#2#3{% \iflinks {% + \requireopenindexfile{#1}% % Store the main index entry text (including the third arg). \toks0 = {#2}% % If third arg is present, precede it with a space. @@ -4828,7 +4896,49 @@ end \fi } -% Write the entry in \toks0 to the index file: +% Check if an index file has been opened, and if not, open it. +\def\requireopenindexfile#1{% +\ifnum\csname #1indfile\endcsname=0 + \expandafter\newwrite \csname#1indfile\endcsname + \edef\suffix{#1}% + % A .fls suffix would conflict with the file extension for the output + % of -recorder, so use .f1s instead. + \ifx\suffix\indexisfl\def\suffix{f1}\fi + % Open the file + \immediate\openout\csname#1indfile\endcsname \jobname.\suffix + % Using \immediate here prevents an object entering into the current box, + % which could confound checks such as those in \safewhatsit for preceding + % skips. +\fi} +\def\indexisfl{fl} + +% Output \ as {\indexbackslash}, because \ is an escape character in +% the index files. +\let\indexbackslash=\relax +{\catcode`\@=0 \catcode`\\=\active + @gdef@useindexbackslash{@def\{{@indexbackslash}}} +} + +% Definition for writing index entry text. +\def\sortas#1{\ignorespaces}% + +% Definition for writing index entry sort key. Should occur at the at +% the beginning of the index entry, like +% @cindex @sortas{september} \september +% The \ignorespaces takes care of following space, but there's no way +% to remove space before it. +{ +\catcode`\-=13 +\gdef\indexwritesortas{% + \begingroup + \indexnonalnumreappear + \indexwritesortasxxx} +\gdef\indexwritesortasxxx#1{% + \xdef\indexsortkey{#1}\endgroup} +} + + +% Write the entry in \toks0 to the index file. % \def\dosubindwrite{% % Put the index entry in the margin if desired. @@ -4838,14 +4948,26 @@ end % % Remember, we are within a group. \indexdummies % Must do this here, since \bf, etc expand at this stage - \def\backslashcurfont{\indexbackslash}% \indexbackslash isn't defined now - % so it will be output as is; and it will print as backslash. + \useindexbackslash % \indexbackslash isn't defined now so it will be output + % as is; and it will print as backslash. + % The braces around \indexbrace are recognized by texindex. % - % Process the index entry with all font commands turned off, to - % get the string to sort by. + % Get the string to sort by, by processing the index entry with all + % font commands turned off. {\indexnofonts - \edef\temp{\the\toks0}% need full expansion - \xdef\indexsorttmp{\temp}% + \def\lbracechar{{\indexlbrace}}% + \def\rbracechar{{\indexrbrace}}% + \let\{=\lbracechar + \let\}=\rbracechar + \indexnonalnumdisappear + \xdef\indexsortkey{}% + \let\sortas=\indexwritesortas + \edef\temp{\the\toks0}% + \setbox\dummybox = \hbox{\temp}% Make sure to execute any \sortas + \ifx\indexsortkey\empty + \xdef\indexsortkey{\temp}% + \ifx\indexsortkey\empty\xdef\indexsortkey{ }\fi + \fi }% % % Set up the complete index entry, with both the sort key and @@ -4855,10 +4977,11 @@ end % sorted result. \edef\temp{% \write\writeto{% - \string\entry{\indexsorttmp}{\noexpand\folio}{\the\toks0}}% + \string\entry{\indexsortkey}{\noexpand\folio}{\the\toks0}}% }% \temp } +\newbox\dummybox % used above % Take care of unwanted page breaks/skips around a whatsit: % @@ -4984,7 +5107,9 @@ end % as its first line, TeX doesn't complain about mismatched braces % (because it thinks @} is a control sequence). \catcode`\@ = 11 - \openin 1 \jobname.#1s + % See comment in \requireopenindexfile. + \def\indexname{#1}\ifx\indexname\indexisfl\def\indexname{f1}\fi + \openin 1 \jobname.\indexname s \ifeof 1 % \enddoublecolumns gets confused if there is no text in the index, % and it loses the chapter title and the aux file entries for the @@ -4992,43 +5117,96 @@ end % there is some text. \putwordIndexNonexistent \else + \catcode`\\ = 0 + \escapechar = `\\ % % If the index file exists but is empty, then \openin leaves \ifeof % false. We have to make TeX try to read something from the file, so % it can discover if there is anything in it. - \read 1 to \temp + \read 1 to \thisline \ifeof 1 \putwordIndexIsEmpty \else % Index files are almost Texinfo source, but we use \ as the escape % character. It would be better to use @, but that's too big a change % to make right now. - \def\indexbackslash{\backslashcurfont}% - \catcode`\\ = 0 - \escapechar = `\\ + \def\indexbackslash{\ttbackslash}% + \let\indexlbrace\{ % Likewise, set these sequences for braces + \let\indexrbrace\} % used in the sort key. \begindoublecolumns - \input \jobname.#1s + \let\entryorphanpenalty=\indexorphanpenalty + % + % Read input from the index file line by line. + \loopdo + \ifeof1 + \let\firsttoken\relax + \else + \read 1 to \nextline + \edef\act{\gdef\noexpand\firsttoken{\getfirsttoken\nextline}}% + \act + \fi + \thisline + % + \ifeof1\else + \let\thisline\nextline + \repeat + %% \enddoublecolumns \fi \fi \closein 1 \endgroup} +\def\getfirsttoken#1{\expandafter\getfirsttokenx#1\endfirsttoken} +\long\def\getfirsttokenx#1#2\endfirsttoken{\noexpand#1} + +\def\loopdo#1\repeat{\def\body{#1}\loopdoxxx} +\def\loopdoxxx{\let\next=\relax\body\let\next=\loopdoxxx\fi\next} + % These macros are used by the sorted index file itself. % Change them to control the appearance of the index. -\def\initial#1{{% - % Some minor font changes for the special characters. - \let\tentt=\sectt \let\tt=\sectt \let\sf=\sectt - % +{\catcode`\/=13 \catcode`\-=13 \catcode`\^=13 \catcode`\~=13 \catcode`\_=13 +\catcode`\|=13 \catcode`\<=13 \catcode`\>=13 \catcode`\+=13 \catcode`\"=13 +\catcode`\$=3 +\gdef\initialglyphs{% + % Some changes for non-alphabetic characters. Using the glyphs from the + % math fonts looks more consistent than the typewriter font used elsewhere + % for these characters. + \def\indexbackslash{\math{\backslash}}% + \let\\=\indexbackslash + % + % Can't get bold backslash so don't use bold forward slash + \catcode`\/=13 + \def/{{\secrmnotbold \normalslash}}% + \def-{{\normaldash\normaldash}}% en dash `--' + \def^{{\chapbf \normalcaret}}% + \def~{{\chapbf \normaltilde}}% + \def\_{% + \leavevmode \kern.07em \vbox{\hrule width.3em height.1ex}\kern .07em }% + \def|{$\vert$}% + \def<{$\less$}% + \def>{$\gtr$}% + \def+{$\normalplus$}% +}} + +\def\initial{% + \bgroup + \initialglyphs + \initialx +} + +\def\initialx#1{% % Remove any glue we may have, we'll be inserting our own. \removelastskip % % We like breaks before the index initials, so insert a bonus. + % The glue before the bonus allows a little bit of space at the + % bottom of a column to reduce an increase in inter-line spacing. \nobreak - \vskip 0pt plus 3\baselineskip - \penalty 0 - \vskip 0pt plus -3\baselineskip + \vskip 0pt plus 5\baselineskip + \penalty -300 + \vskip 0pt plus -5\baselineskip % % Typeset the initial. Making this add up to a whole number of % baselineskips increases the chance of the dots lining up from column @@ -5036,24 +5214,24 @@ end % we need before each entry, but it's better. % % No shrink because it confuses \balancecolumns. - \vskip 1.67\baselineskip plus .5\baselineskip - \leftline{\secbf #1}% + \vskip 1.67\baselineskip plus 1\baselineskip + \leftline{\secfonts \kern-0.05em \secbf #1}% + % \secfonts is inside the argument of \leftline so that the change of + % \baselineskip will not affect any glue inserted before the vbox that + % \leftline creates. % Do our best not to break after the initial. \nobreak \vskip .33\baselineskip plus .1\baselineskip -}} + \egroup % \initialglyphs +} + +\newdimen\entryrightmargin +\entryrightmargin=0pt % \entry typesets a paragraph consisting of the text (#1), dot leaders, and % then page number (#2) flushed to the right margin. It is used for index % and table of contents entries. The paragraph is indented by \leftskip. % -% A straightforward implementation would start like this: -% \def\entry#1#2{... -% But this freezes the catcodes in the argument, and can cause problems to -% @code, which sets - active. This problem was fixed by a kludge--- -% ``-'' was active throughout whole index, but this isn't really right. -% The right solution is to prevent \entry from swallowing the whole text. -% --kasal, 21nov03 \def\entry{% \begingroup % @@ -5061,38 +5239,18 @@ end % affect previous text. \par % - % Do not fill out the last line with white space. - \parfillskip = 0in - % % No extra space above this paragraph. \parskip = 0in % - % Do not prefer a separate line ending with a hyphen to fewer lines. - \finalhyphendemerits = 0 - % - % \hangindent is only relevant when the entry text and page number - % don't both fit on one line. In that case, bob suggests starting the - % dots pretty far over on the line. Unfortunately, a large - % indentation looks wrong when the entry text itself is broken across - % lines. So we use a small indentation and put up with long leaders. - % - % \hangafter is reset to 1 (which is the value we want) at the start - % of each paragraph, so we need not do anything with that. - \hangindent = 2em - % - % When the entry text needs to be broken, just fill out the first line - % with blank space. - \rightskip = 0pt plus1fil - % - % A bit of stretch before each entry for the benefit of balancing - % columns. - \vskip 0pt plus1pt - % % When reading the text of entry, convert explicit line breaks % from @* into spaces. The user might give these in long section % titles, for instance. \def\*{\unskip\space\ignorespaces}% - \def\entrybreak{\hfil\break}% + \def\entrybreak{\hfil\break}% An undocumented command + % + % A bit of stretch before each entry for the benefit of balancing + % columns. + \vskip 0pt plus0.5pt % % Swallow the left brace of the text (first parameter): \afterassignment\doentry @@ -5100,45 +5258,162 @@ end } \def\entrybreak{\unskip\space\ignorespaces}% \def\doentry{% + % Save the text of the entry + \global\setbox\boxA=\hbox\bgroup \bgroup % Instead of the swallowed brace. \noindent \aftergroup\finishentry % And now comes the text of the entry. + % Not absorbing as a macro argument reduces the chance of problems + % with catcodes occurring. } -\def\finishentry#1{% +{\catcode`\@=11 +\gdef\finishentry#1{% + \egroup % end box A + \dimen@ = \wd\boxA % Length of text of entry + \global\setbox\boxA=\hbox\bgroup\unhbox\boxA % #1 is the page number. % - % The following is kludged to not output a line of dots in the index if - % there are no page numbers. The next person who breaks this will be - % cursed by a Unix daemon. - \setbox\boxA = \hbox{#1}% - \ifdim\wd\boxA = 0pt - \ % + % Get the width of the page numbers, and only use + % leaders if they are present. + \global\setbox\boxB = \hbox{#1}% + \ifdim\wd\boxB = 0pt + \null\nobreak\hfill\ % \else % - % If we must, put the page number on a line of its own, and fill out - % this line with blank space. (The \hfil is overwhelmed with the - % fill leaders glue in \indexdotfill if the page number does fit.) - \hfil\penalty50 \null\nobreak\indexdotfill % Have leaders before the page number. % - % The `\ ' here is removed by the implicit \unskip that TeX does as - % part of (the primitive) \par. Without it, a spurious underfull - % \hbox ensues. \ifpdf - \pdfgettoks#1.% - \ \the\toksA + \pdfgettoks#1.% + \bgroup\let\domark\relax + \hskip\skip\thinshrinkable\the\toksA + \egroup + % The redefinion of \domark stops marks being added in \pdflink to + % preserve coloured links across page boundaries. Otherwise the marks + % would get in the way of \lastbox in \insertindexentrybox. \else - \ #1% + \hskip\skip\thinshrinkable #1% \fi \fi - \par + \egroup % end \boxA + \ifdim\wd\boxB = 0pt + \global\setbox\entryindexbox=\vbox{\unhbox\boxA}% + \else + \global\setbox\entryindexbox=\vbox\bgroup + \prevdepth=\entrylinedepth + \noindent + % We want the text of the entries to be aligned to the left, and the + % page numbers to be aligned to the right. + % + \advance\leftskip by 0pt plus 1fil + \advance\leftskip by 0pt plus -1fill + \rightskip = 0pt plus -1fil + \advance\rightskip by 0pt plus 1fill + % Cause last line, which could consist of page numbers on their own + % if the list of page numbers is long, to be aligned to the right. + \parfillskip=0pt plus -1fill + % + \hangindent=1em + % + \advance\rightskip by \entryrightmargin + % Determine how far we can stretch into the margin. + % This allows, e.g., "Appendix H GNU Free Documentation License" to + % fit on one line in @letterpaper format. + \ifdim\entryrightmargin>2.1em + \dimen@i=2.1em + \else + \dimen@i=0em + \fi + \advance \parfillskip by 0pt minus 1\dimen@i + % + \dimen@ii = \hsize + \advance\dimen@ii by -1\leftskip + \advance\dimen@ii by -1\entryrightmargin + \advance\dimen@ii by 1\dimen@i + \ifdim\wd\boxA > \dimen@ii % If the entry doesn't fit in one line + \ifdim\dimen@ > 0.8\dimen@ii % due to long index text + \dimen@ = 0.7\dimen@ % Try to split the text roughly evenly + \dimen@ii = \hsize + \advance \dimen@ii by -1em + \ifnum\dimen@>\dimen@ii + % If the entry is too long, use the whole line + \dimen@ = \dimen@ii + \fi + \advance\leftskip by 0pt plus 1fill % ragged right + \advance \dimen@ by 1\rightskip + \parshape = 2 0pt \dimen@ 1em \dimen@ii + % Ideally we'd add a finite glue at the end of the first line only, but + % TeX doesn't seem to provide a way to do such a thing. + \fi\fi + \unhbox\boxA + % + % Do not prefer a separate line ending with a hyphen to fewer lines. + \finalhyphendemerits = 0 + % + % Word spacing - no stretch + \spaceskip=\fontdimen2\font minus \fontdimen4\font + % + \linepenalty=1000 % Discourage line breaks. + \hyphenpenalty=5000 % Discourage hyphenation. + % + \par % format the paragraph + \egroup % The \vbox + \fi \endgroup + % delay text of entry until after penalty + \bgroup\aftergroup\insertindexentrybox + \entryorphanpenalty +}} + +\newskip\thinshrinkable +\skip\thinshrinkable=.15em minus .15em + +\newbox\entryindexbox +\def\insertindexentrybox{% + \copy\entryindexbox + % The following gets the depth of the last box. This is for even + % line spacing when entries span several lines. + \setbox\dummybox\vbox{% + \unvbox\entryindexbox + \nointerlineskip + \lastbox + \global\entrylinedepth=\prevdepth + }% + % Note that we couldn't simply \unvbox\entryindexbox followed by + % \nointerlineskip\lastbox to remove the last box and then reinstate it, + % because this resets how far the box has been \moveleft'ed to 0. \unvbox + % doesn't affect \prevdepth either. +} +\newdimen\entrylinedepth + +% Default is no penalty +\let\entryorphanpenalty\egroup + +% Used from \printindex. \firsttoken should be the first token +% after the \entry. If it's not another \entry, we are at the last +% line of a group of index entries, so insert a penalty to discourage +% orphaned index entries. +\long\def\indexorphanpenalty{% + \def\isentry{\entry}% + \ifx\firsttoken\isentry + \else + \unskip\penalty 9000 + % The \unskip here stops breaking before the glue. It relies on the + % \vskip above being there, otherwise there is an error + % "You can't use `\unskip' in vertical mode". There has to be glue + % in the current vertical list that hasn't been added to the + % "current page". See Chapter 24 of the TeXbook. This contradicts + % Section 8.3.7 in "TeX by Topic," though. + \fi + \egroup % now comes the box added with \aftergroup } % Like plain.tex's \dotfill, except uses up at least 1 em. +% The filll stretch here overpowers both the fil and fill stretch to push +% the page number to the right. \def\indexdotfill{\cleaders - \hbox{$\mathsurround=0pt \mkern1.5mu.\mkern1.5mu$}\hskip 1em plus 1fill} + \hbox{$\mathsurround=0pt \mkern1.5mu.\mkern1.5mu$}\hskip 1em plus 1filll} + \def\primary #1{\line{#1\hfil}} @@ -5160,12 +5435,39 @@ end % Define two-column mode, which we use to typeset indexes. % Adapted from the TeXbook, page 416, which is to say, % the manmac.tex format used to print the TeXbook itself. -\catcode`\@=11 +\catcode`\@=11 % private names \newbox\partialpage \newdimen\doublecolumnhsize +\newdimen\doublecolumntopgap +\doublecolumntopgap = 0pt + +% Use inside an output routine to save \topmark and \firstmark +\def\savemarks{% + \global\savedtopmark=\expandafter{\topmark }% + \global\savedfirstmark=\expandafter{\firstmark }% +} +\newtoks\savedtopmark +\newtoks\savedfirstmark + +% Set \topmark and \firstmark for next time \output runs. +% Can't be run from withinside \output (because any material +% added while an output routine is active, including +% penalties, is saved for after it finishes). The page so far +% should be empty, otherwise what's on it will be thrown away. +\def\restoremarks{% + \mark{\the\savedtopmark}% + \bgroup\output = {% + \setbox\dummybox=\box\PAGE + }abc\eject\egroup + % "abc" because output routine doesn't fire for a completely empty page. + \mark{\the\savedfirstmark}% +} \def\begindoublecolumns{\begingroup % ended by \enddoublecolumns + % If not much space left on page, start a new page. + \ifdim\pagetotal>0.8\vsize\vfill\eject\fi + % % Grab any single-column material above us. \output = {% % @@ -5185,8 +5487,15 @@ end \unvbox\PAGE \kern-\topskip \kern\baselineskip }% + \savemarks }% \eject % run that output routine to set \partialpage + \restoremarks + % + % We recover the two marks that the last output routine saved in order + % to propagate the information in marks added around a chapter heading, + % which could be otherwise be lost by the time the final page is output. + % % % Use the double-column output routine for subsequent pages. \output = {\doublecolumnout}% @@ -5214,13 +5523,19 @@ end % % Double the \vsize as well. (We don't need a separate register here, % since nobody clobbers \vsize.) + \global\doublecolumntopgap = \topskip + \global\advance\doublecolumntopgap by -1\baselineskip + \advance\vsize by -1\doublecolumntopgap \vsize = 2\vsize + \topskip=0pt + \global\entrylinedepth=0pt\relax } % The double-column output routine for all double-column pages except -% the last. +% the last, which is done by \balancecolumns. % \def\doublecolumnout{% + % \splittopskip=\topskip \splitmaxdepth=\maxdepth % Get the available space for the double columns -- the normal % (undoubled) page height minus any material left over from the @@ -5243,10 +5558,13 @@ end % \hsize = \doublecolumnhsize \wd0=\hsize \wd2=\hsize - \hbox to\pagewidth{\box0\hfil\box2}% + \vbox{% + \vskip\doublecolumntopgap + \hbox to\pagewidth{\box0\hfil\box2}}% } -% -% All done with double columns. + + +% Finished with with double columns. \def\enddoublecolumns{% % The following penalty ensures that the page builder is exercised % _before_ we change the output routine. This is necessary in the @@ -5277,21 +5595,21 @@ end \penalty0 % \output = {% - % Split the last of the double-column material. Leave it on the - % current page, no automatic page break. + % Split the last of the double-column material. + \savemarks \balancecolumns % - % If we end up splitting too much material for the current page, - % though, there will be another page break right after this \output - % invocation ends. Having called \balancecolumns once, we do not + % Having called \balancecolumns once, we do not % want to call it again. Therefore, reset \output to its normal - % definition right away. (We hope \balancecolumns will never be - % called on to balance too much material, but if it is, this makes - % the output somewhat more palatable.) + % definition right away. \global\output = {\onepageout{\pagecontents\PAGE}}% }% \eject \endgroup % started in \begindoublecolumns + \restoremarks + % Leave the double-column material on the current page, no automatic + % page break. + \box\balancedcolumns % % \pagegoal was set to the doubled \vsize above, since we restarted % the current page. We're now back to normal single-column @@ -5299,31 +5617,52 @@ end % \endgroup where \vsize got restored). \pagegoal = \vsize } +\newbox\balancedcolumns +\setbox\balancedcolumns=\vbox{shouldnt see this}% % -% Called at the end of the double column material. +% Only called for the last of the double column material. \doublecolumnout +% does the others. \def\balancecolumns{% \setbox0 = \vbox{\unvbox255}% like \box255 but more efficient, see p.120. \dimen@ = \ht0 \advance\dimen@ by \topskip \advance\dimen@ by-\baselineskip - \divide\dimen@ by 2 % target to split to - %debug\message{final 2-column material height=\the\ht0, target=\the\dimen@.}% - \splittopskip = \topskip - % Loop until we get a decent breakpoint. - {% - \vbadness = 10000 - \loop - \global\setbox3 = \copy0 - \global\setbox1 = \vsplit3 to \dimen@ - \ifdim\ht3>\dimen@ - \global\advance\dimen@ by 1pt - \repeat - }% - %debug\message{split to \the\dimen@, column heights: \the\ht1, \the\ht3.}% - \setbox0=\vbox to\dimen@{\unvbox1}% - \setbox2=\vbox to\dimen@{\unvbox3}% + \ifdim\dimen@<14\baselineskip + % Don't split a short final column in two. + \setbox2=\vbox{}% + \else + \divide\dimen@ by 2 % target to split to + \dimen@ii = \dimen@ + \splittopskip = \topskip + % Loop until the second column is no higher than the first + {% + \vbadness = 10000 + \loop + \global\setbox3 = \copy0 + \global\setbox1 = \vsplit3 to \dimen@ + % Remove glue from bottom of first column to + % make sure it is higher than the second. + \global\setbox1 = \vbox{\unvbox1\unpenalty\unskip}% + \ifdim\ht3>\ht1 + \global\advance\dimen@ by 1pt + \repeat + }% + \multiply\dimen@ii by 4 + \divide\dimen@ii by 5 + \ifdim\ht3<\dimen@ii + % Column heights are too different, so don't make their bottoms + % flush with each other. The glue at the end of the second column + % allows a second column to stretch, reducing the difference in + % height between the two. + \setbox0=\vbox to\dimen@{\unvbox1\vfill}% + \setbox2=\vbox to\dimen@{\unvbox3\vskip 0pt plus 0.3\ht0}% + \else + \setbox0=\vbox to\dimen@{\unvbox1}% + \setbox2=\vbox to\dimen@{\unvbox3}% + \fi + \fi % - \pagesofar + \global\setbox\balancedcolumns=\vbox{\pagesofar}% } \catcode`\@ = \other @@ -5342,6 +5681,10 @@ end \let\lastnode=\empty % no node to associate with \writetocentry{part}{#1}{}% but put it in the toc \headingsoff % no headline or footline on the part page + % This outputs a mark at the end of the page that clears \thischapter + % and \thissection, as is done in \startcontents. + \let\pchapsepmacro\relax + \chapmacro{}{Yomitfromtoc}{}% \chapoddpage \endgroup } @@ -5586,9 +5929,6 @@ end % @centerchap is like @unnumbered, but the heading is centered. \outer\parseargdef\centerchap{% - % Well, we could do the following in a group, but that would break - % an assumption that \chapmacro is called at the outermost level. - % Thus we are safer this way: --kasal, 24feb04 \let\centerparametersmaybe = \centerparameters \unnmhead0{#1}% \let\centerparametersmaybe = \relax @@ -5712,7 +6052,11 @@ end % Define plain chapter starts, and page on/off switching for it. \def\chapbreak{\dobreak \chapheadingskip {-4000}} + +% Start a new page \def\chappager{\par\vfill\supereject} + +% \chapoddpage - start on an odd page for a new chapter % Because \domark is called before \chapoddpage, the filler page will % get the headings for the next chapter, which is wrong. But we don't % care -- we just disable all headings on the filler page. @@ -5748,7 +6092,7 @@ end \CHAPPAGon -% Chapter opening. +% \chapmacro - Chapter opening. % % #1 is the text, #2 is the section type (Ynumbered, Ynothing, % Yappendix, Yomitfromtoc), #3 the chapter number. @@ -5760,7 +6104,13 @@ end \def\Yomitfromtockeyword{Yomitfromtoc} % \def\chapmacro#1#2#3{% - \checkenv{}% chapters, etc., should not start inside an environment. + \expandafter\ifx\thisenv\titlepage\else + \checkenv{}% chapters, etc., should not start inside an environment. + \fi + % FIXME: \chapmacro is currently called from inside \titlepage when + % \setcontentsaftertitlepage to print the "Table of Contents" heading, but + % this should probably be done by \sectionheading with an option to print + % in chapter size. % % Insert the first mark before the heading break (see notes for \domark). \let\prevchapterdefs=\lastchapterdefs @@ -6142,7 +6492,7 @@ end \savepageno = \pageno \begingroup % Set up to handle contents files properly. \raggedbottom % Worry more about breakpoints than the bottom. - \advance\hsize by -\contentsrightmargin % Don't use the full line length. + \entryrightmargin=\contentsrightmargin % Don't use the full line length. % % Roman numerals for page numbers. \ifnum \pageno>0 \global\pageno = \lastnegativepageno \fi @@ -6247,7 +6597,7 @@ end % Chapters, in the main contents. \def\numchapentry#1#2#3#4{\dochapentry{#2\labelspace#1}{#4}} -% + % Chapters, in the short toc. % See comments in \dochapentry re vbox and related settings. \def\shortchapentry#1#2#3#4{% @@ -6262,7 +6612,7 @@ end \setbox0 = \hbox{\putwordAppendix{} M}% \hbox to \wd0{\putwordAppendix{} #1\hss}} % -\def\appentry#1#2#3#4{\dochapentry{\appendixbox{#2}\labelspace#1}{#4}} +\def\appentry#1#2#3#4{\dochapentry{\appendixbox{#2}\hskip.7em#1}{#4}} % Unnumbered chapters. \def\unnchapentry#1#2#3#4{\dochapentry{#1}{#4}} @@ -6295,6 +6645,8 @@ end \def\dochapentry#1#2{% \penalty-300 \vskip1\baselineskip plus.33\baselineskip minus.25\baselineskip \begingroup + % Move the page numbers slightly to the right + \advance\entryrightmargin by -0.05em \chapentryfonts \tocentry{#1}{\dopageno\bgroup#2\egroup}% \endgroup @@ -6414,6 +6766,24 @@ end \endgraf \ifdim\lastskip<\envskipamount \removelastskip + \ifnum\lastpenalty<10000 + % Penalize breaking before the environment, because preceding text + % often leads into it. + \penalty100 + \fi + \vskip\envskipamount + \fi + \fi +}} + +\def\afterenvbreak{{% + % =10000 instead of <10000 because of a special case in \itemzzz and + % \sectionheading, q.v. + \ifnum \lastpenalty=10000 \else + \advance\envskipamount by \parskip + \endgraf + \ifdim\lastskip<\envskipamount + \removelastskip % it's not a good place to break if the last penalty was \nobreak % or better ... \ifnum\lastpenalty<10000 \penalty-50 \fi @@ -6422,8 +6792,6 @@ end \fi }} -\let\afterenvbreak = \aboveenvbreak - % \nonarrowing is a flag. If "set", @lisp etc don't narrow margins; it will % also clear it, so that its embedded environments do the narrowing again. \let\nonarrowing=\relax @@ -6467,7 +6835,7 @@ end % collide with the section heading. \ifnum\lastpenalty>10000 \vskip\parskip \penalty\lastpenalty \fi % - \vbox\bgroup + \setbox\groupbox=\vbox\bgroup \baselineskip=0pt\parskip=0pt\lineskip=0pt \carttop \hbox\bgroup @@ -6491,6 +6859,7 @@ end \egroup \cartbot \egroup + \addgroupbox \checkinserts } @@ -6873,7 +7242,7 @@ end % typesetting commands (@smallbook, font changes, etc.) have to be done % beforehand -- and a) we want @copying to be done first in the source % file; b) letting users define the frontmatter in as flexible order as -% possible is very desirable. +% possible is desirable. % \def\copying{\checkenv{}\begingroup\scanargctxt\docopying} \def\docopying#1@end copying{\endgroup\def\copyingtext{#1}} @@ -6968,7 +7337,7 @@ end \temp } -% \domakedefun \deffn \deffnx \deffnheader +% \domakedefun \deffn \deffnx \deffnheader { (defn. of \deffnheader) } % % Define \deffn and \deffnx, without parameters. % \deffnheader has to be defined explicitly. @@ -7306,34 +7675,43 @@ end } \fi -\def\scanmacro#1{\begingroup +\let\aftermacroxxx\relax +\def\aftermacro{\aftermacroxxx} + +% alias because \c means cedilla in @tex or @math +\let\texinfoc=\c + +% Used at the time of macro expansion. +% Argument is macro body with arguments substituted +\def\scanmacro#1{% \newlinechar`\^^M - \let\xeatspaces\eatspaces - % - % Undo catcode changes of \startcontents and \doprintindex - % 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=`\@ + \def\xprocessmacroarg{\eatspaces}% % - % ... and for \example: - \spaceisspace + % Process the macro body under the current catcode regime. + \scantokens{#1\texinfoc}\aftermacro% % - % The \empty here causes a following catcode 5 newline to be eaten as - % part of reading whitespace after a control sequence. It does not - % eat a catcode 13 newline. There's no good way to handle the two - % cases (untried: maybe e-TeX's \everyeof could help, though plain TeX - % would then have different behavior). See the Macro Details node in - % the manual for the workaround we recommend for macros and - % line-oriented commands. - % - \scantokens{#1\empty}% -\endgroup} + % The \c is to remove the \newlinechar added by \scantokens, and + % can be noticed by \parsearg. + % The \aftermacro allows a \comment at the end of the macro definition + % to duplicate itself past the final \newlinechar added by \scantokens: + % this is used in the definition of \group to comment out a newline. We + % don't do the same for \c to support Texinfo files with macros that ended + % with a @c, which should no longer be necessary. + % We avoid surrounding the call to \scantokens with \bgroup and \egroup + % to allow macros to open or close groups themselves. +} +% Used for copying and captions \def\scanexp#1{% + \bgroup + % Undo catcode changes of \startcontents and \printindex + % When called from @insertcopying or (short)caption, we need active + % backslash to get it printed correctly. + % FIXME: This may not be needed. + %\catcode`\@=0 \catcode`\\=\active \escapechar=`\@ \edef\temp{\noexpand\scanmacro{#1}}% \temp + \egroup } \newcount\paramno % Count of parameters @@ -7399,7 +7777,6 @@ end \catcode`\+=\other \catcode`\<=\other \catcode`\>=\other - \catcode`\@=\other \catcode`\^=\other \catcode`\_=\other \catcode`\|=\other @@ -7409,37 +7786,36 @@ end \def\scanargctxt{% used for copying and captions, not macros. \scanctxt + \catcode`\@=\other \catcode`\\=\other \catcode`\^^M=\other } \def\macrobodyctxt{% used for @macro definitions \scanctxt + \catcode`\ =\other + \catcode`\@=\other \catcode`\{=\other \catcode`\}=\other \catcode`\^^M=\other \usembodybackslash } -\def\macroargctxt{% used when scanning invocations +% Used when scanning braced macro arguments. Note, however, that catcode +% changes here are ineffectual if the macro invocation was nested inside +% an argument to another Texinfo command. +\def\macroargctxt{% \scanctxt - \catcode`\\=0 + \catcode`\ =\active + \catcode`\^^M=\other + \catcode`\\=\active +} + +\def\macrolineargctxt{% used for whole-line arguments without braces + \scanctxt + \catcode`\{=\other + \catcode`\}=\other } -% why catcode 0 for \ in the above? To recognize \\ \{ \} as "escapes" -% for the single characters \ { }. Thus, we end up with the "commands" -% that would be written @\ @{ @} in a Texinfo document. -% -% We already have @{ and @}. For @\, we define it here, and only for -% this purpose, to produce a typewriter backslash (so, the @\ that we -% define for @math can't be used with @macro calls): -% -\def\\{\normalbackslash}% -% -% We would like to do this for \, too, since that is what makeinfo does. -% But it is not possible, because Texinfo already has a command @, for a -% cedilla accent. Documents must use @comma{} instead. -% -% \anythingelse will almost certainly be an error of some kind. % \mbodybackslash is the definition of \ in @macro bodies. % It maps \foo\ => \csname macarg.foo\endcsname => #N @@ -7511,56 +7887,36 @@ end \fi } -% This makes use of the obscure feature that if the last token of a -% is #, then the preceding argument is delimited by -% an opening brace, and that opening brace is not consumed. +% \getargs -- Parse the arguments to a @macro line. Set \macname to +% the name of the macro, and \argl to the braced argument list. \def\getargs#1{\getargsxxx#1{}} \def\getargsxxx#1#{\getmacname #1 \relax\getmacargs} \def\getmacname#1 #2\relax{\macname={#1}} \def\getmacargs#1{\def\argl{#1}} +% This made use of the feature that if the last token of a +% is #, then the preceding argument is delimited by +% an opening brace, and that opening brace is not consumed. -% For macro processing make @ a letter so that we can make Texinfo private macro names. -\edef\texiatcatcode{\the\catcode`\@} -\catcode `@=11\relax - -% Parse the optional {params} list. Set up \paramno and \paramlist -% so \defmacro knows what to do. Define \macarg.BLAH for each BLAH -% in the params list to some hook where the argument is to be expanded. If -% there are less than 10 arguments that hook is to be replaced by ##N where N +% Parse the optional {params} list to @macro or @rmacro. +% Set \paramno to the number of arguments, +% and \paramlist to a parameter text for the macro (e.g. #1,#2,#3 for a +% three-param macro.) Define \macarg.BLAH for each BLAH in the params +% list to some hook where the argument is to be expanded. If there are +% less than 10 arguments that hook is to be replaced by ##N where N % is the position in that list, that is to say the macro arguments are to be % defined `a la TeX in the macro body. % % That gets used by \mbodybackslash (above). % -% We need to get `macro parameter char #' into several definitions. -% The technique used is stolen from LaTeX: let \hash be something -% unexpandable, insert that wherever you need a #, and then redefine -% it to # just before using the token list produced. -% -% The same technique is used to protect \eatspaces till just before -% the macro is used. +% If there are 10 or more arguments, a different technique is used: see +% \parsemmanyargdef. % -% If there are 10 or more arguments, a different technique is used, where the -% hook remains in the body, and when macro is to be expanded the body is -% processed again to replace the arguments. -% -% In that case, the hook is \the\toks N-1, and we simply set \toks N-1 to the -% argument N value and then \edef the body (nothing else will expand because of -% the catcode regime underwhich the body was input). -% -% If you compile with TeX (not eTeX), and you have macros with 10 or more -% arguments, no macro can have more than 256 arguments (else error). \def\parsemargdef#1;{% \paramno=0\def\paramlist{}% \let\hash\relax - \let\xeatspaces\relax + % \hash is redefined to `#' later to get it into definitions + \let\processmacroarg\relax \parsemargdefxxx#1,;,% - % In case that there are 10 or more arguments we parse again the arguments - % list to set new definitions for the \macarg.BLAH macros corresponding to - % each BLAH argument. It was anyhow needed to parse already once this list - % in order to count the arguments, and as macros with at most 9 arguments - % are by far more frequent than macro with 10 or more arguments, defining - % twice the \macarg.BLAH macros does not cost too much processing power. \ifnum\paramno<10\relax\else \paramno0\relax \parsemmanyargdef@@#1,;,% 10 or more arguments @@ -7571,10 +7927,47 @@ end \else \let\next=\parsemargdefxxx \advance\paramno by 1 \expandafter\edef\csname macarg.\eatspaces{#1}\endcsname - {\xeatspaces{\hash\the\paramno}}% + {\processmacroarg{\hash\the\paramno}}% \edef\paramlist{\paramlist\hash\the\paramno,}% \fi\next} +% \parsemacbody, \parsermacbody +% +% Read recursive and nonrecursive macro bodies. (They're different since +% rec and nonrec macros end differently.) +% +% We are in \macrobodyctxt, and the \xdef causes backslashshes in the macro +% body to be transformed. +% Set \macrobody to the body of the macro, and call \defmacro. +% +{\catcode`\ =\other\long\gdef\parsemacbody#1@end macro{% +\xdef\macrobody{\eatcr{#1}}\endgroup\defmacro}}% +{\catcode`\ =\other\long\gdef\parsermacbody#1@end rmacro{% +\xdef\macrobody{\eatcr{#1}}\endgroup\defmacro}}% + +% Make @ a letter, so that we can make private-to-Texinfo macro names. +\edef\texiatcatcode{\the\catcode`\@} +\catcode `@=11\relax + +%%%%%%%%%%%%%% Code for > 10 arguments only %%%%%%%%%%%%%%%%%% + +% If there are 10 or more arguments, a different technique is used, where the +% hook remains in the body, and when macro is to be expanded the body is +% processed again to replace the arguments. +% +% In that case, the hook is \the\toks N-1, and we simply set \toks N-1 to the +% argument N value and then \edef the body (nothing else will expand because of +% the catcode regime under which the body was input). +% +% If you compile with TeX (not eTeX), and you have macros with 10 or more +% arguments, no macro can have more than 256 arguments (else error). +% +% In case that there are 10 or more arguments we parse again the arguments +% list to set new definitions for the \macarg.BLAH macros corresponding to +% each BLAH argument. It was anyhow needed to parse already once this list +% in order to count the arguments, and as macros with at most 9 arguments +% are by far more frequent than macro with 10 or more arguments, defining +% twice the \macarg.BLAH macros does not cost too much processing power. \def\parsemmanyargdef@@#1,{% \if#1;\let\next=\relax \else @@ -7590,16 +7983,6 @@ end \advance\paramno by 1\relax \fi\next} -% These two commands read recursive and nonrecursive macro bodies. -% (They're different since rec and nonrec macros end differently.) -% - -\catcode `\@\texiatcatcode -\long\def\parsemacbody#1@end macro% -{\xdef\temp{\eatcr{#1}}\endgroup\defmacro}% -\long\def\parsermacbody#1@end rmacro% -{\xdef\temp{\eatcr{#1}}\endgroup\defmacro}% -\catcode `\@=11\relax \let\endargs@\relax \let\nil@\relax @@ -7607,7 +7990,7 @@ end \long\def\nillm@{\nil@}% % This macro is expanded during the Texinfo macro expansion, not during its -% definition. It gets all the arguments values and assigns them to macros +% definition. It gets all the arguments' values and assigns them to macros % macarg.ARGNAME % % #1 is the macro name @@ -7628,8 +8011,6 @@ end \getargvals@@ \fi } - -% \def\getargvals@@{% \ifx\paramlist\nilm@ % Some sanity check needed here that \argvaluelist is also empty. @@ -7673,7 +8054,8 @@ end } % Replace arguments by their values in the macro body, and place the result -% in macro \@tempa +% in macro \@tempa. +% \def\macvalstoargs@{% % To do this we use the property that token registers that are \the'ed % within an \edef expand only once. So we are going to place all argument @@ -7697,8 +8079,9 @@ end \expandafter\def\expandafter\@tempa\expandafter{\@tempc}% } +% Define the named-macro outside of this group and then close this group. +% \def\macargexpandinbody@{% - %% Define the named-macro outside of this group and then close this group. \expandafter \endgroup \macargdeflist@ @@ -7735,14 +8118,8 @@ end \next } -% Save the token stack pointer into macro #1 -\def\texisavetoksstackpoint#1{\edef#1{\the\@cclvi}} -% Restore the token stack pointer from number in macro #1 -\def\texirestoretoksstackpoint#1{\expandafter\mathchardef\expandafter\@cclvi#1\relax} -% newtoks that can be used non \outer . -\def\texinonouternewtoks{\alloc@ 5\toks \toksdef \@cclvi} - -% Tailing missing arguments are set to empty +% Trailing missing arguments are set to empty. +% \def\setemptyargvalues@{% \ifx\paramlist\nilm@ \let\next\macargexpandinbody@ @@ -7772,99 +8149,244 @@ end \long\def#2{#4}% } -% This defines a Texinfo @macro. There are eight cases: recursive and -% nonrecursive macros of zero, one, up to nine, and many arguments. -% Much magic with \expandafter here. + +%%%%%%%%%%%%%% End of code for > 10 arguments %%%%%%%%%%%%%%%%%% + + + +% Remove following spaces at the expansion stage. +% This works because spaces are discarded before each argument when TeX is +% getting the arguments for a macro. +% This must not be immediately followed by a }. +\long\def\gobblespaces#1{#1} + +% This defines a Texinfo @macro or @rmacro, called by \parsemacbody. +% \macrobody has the body of the macro in it, with placeholders for +% its parameters, looking like "\processmacroarg{\hash 1}". +% \paramno is the number of parameters +% \paramlist is a TeX parameter text, e.g. "#1,#2,#3," +% There are eight cases: recursive and nonrecursive macros of zero, one, +% up to nine, and many arguments. % \xdef is used so that macro definitions will survive the file -% they're defined in; @include reads the file inside a group. +% they're defined in: @include reads the file inside a group. % \def\defmacro{% \let\hash=##% convert placeholders to macro parameter chars - \ifrecursive + \ifnum\paramno=1 + \def\processmacroarg{\gobblespaces}% + % This removes the pair of braces around the argument. We don't + % use \eatspaces, because this can cause ends of lines to be lost + % when the argument to \eatspaces is read, leading to line-based + % commands like "@itemize" not being read correctly. + \else + \def\processmacroarg{\xprocessmacroarg}% + \let\xprocessmacroarg\relax + \fi + \ifrecursive %%%%%%%%%%%%%% Recursive %%%%%%%%%%%%%%%%%%%%%%%%%%%%% \ifcase\paramno % 0 \expandafter\xdef\csname\the\macname\endcsname{% - \noexpand\scanmacro{\temp}}% + \noexpand\scanmacro{\macrobody}}% \or % 1 \expandafter\xdef\csname\the\macname\endcsname{% - \bgroup\noexpand\macroargctxt + \bgroup \noexpand\braceorline - \expandafter\noexpand\csname\the\macname xxx\endcsname}% - \expandafter\xdef\csname\the\macname xxx\endcsname##1{% - \egroup\noexpand\scanmacro{\temp}}% + \expandafter\noexpand\csname\the\macname @@@\endcsname}% + \expandafter\xdef\csname\the\macname @@@\endcsname##1{% + \expandafter\noexpand\csname\the\macname @@@@\endcsname{% + \noexpand\gobblespaces##1\empty}% + % The \empty is for \gobblespaces in case #1 is empty + }% + \expandafter\xdef\csname\the\macname @@@@\endcsname##1{% + \egroup\noexpand\scanmacro{\macrobody}}% \else \ifnum\paramno<10\relax % at most 9 + % See non-recursive section below for comments \expandafter\xdef\csname\the\macname\endcsname{% - \bgroup\noexpand\macroargctxt - \noexpand\csname\the\macname xx\endcsname}% - \expandafter\xdef\csname\the\macname xx\endcsname##1{% - \expandafter\noexpand\csname\the\macname xxx\endcsname ##1,}% + \bgroup + \noexpand\expandafter + \noexpand\macroargctxt + \noexpand\expandafter + \expandafter\noexpand\csname\the\macname @@\endcsname}% + \expandafter\xdef\csname\the\macname @@\endcsname##1{% + \noexpand\passargtomacro + \expandafter\noexpand\csname\the\macname @@@\endcsname{##1,}}% + \expandafter\xdef\csname\the\macname @@@\endcsname##1{% + \expandafter\noexpand\csname\the\macname @@@@\endcsname ##1}% \expandafter\expandafter \expandafter\xdef \expandafter\expandafter - \csname\the\macname xxx\endcsname - \paramlist{\egroup\noexpand\scanmacro{\temp}}% + \csname\the\macname @@@@\endcsname\paramlist{% + \egroup\noexpand\scanmacro{\macrobody}}% \else % 10 or more \expandafter\xdef\csname\the\macname\endcsname{% \noexpand\getargvals@{\the\macname}{\argl}% }% - \global\expandafter\let\csname mac.\the\macname .body\endcsname\temp + \global\expandafter\let\csname mac.\the\macname .body\endcsname\macrobody \global\expandafter\let\csname mac.\the\macname .recurse\endcsname\gobble \fi \fi - \else + \else %%%%%%%%%%%%%%%%%%%%%% Non-recursive %%%%%%%%%%%%%%%%%%%%%%%%%% \ifcase\paramno % 0 \expandafter\xdef\csname\the\macname\endcsname{% - \noexpand\norecurse{\the\macname}% - \noexpand\scanmacro{\temp}\egroup}% + \noexpand\scanmacro{\macrobody}}% \or % 1 \expandafter\xdef\csname\the\macname\endcsname{% - \bgroup\noexpand\macroargctxt + \bgroup \noexpand\braceorline - \expandafter\noexpand\csname\the\macname xxx\endcsname}% - \expandafter\xdef\csname\the\macname xxx\endcsname##1{% + \expandafter\noexpand\csname\the\macname @@@\endcsname}% + \expandafter\xdef\csname\the\macname @@@\endcsname##1{% + \expandafter\noexpand\csname\the\macname @@@@\endcsname{% + \noexpand\gobblespaces##1\empty}% + % The \empty is for \gobblespaces in case #1 is empty + }% + \expandafter\xdef\csname\the\macname @@@@\endcsname##1{% \egroup - \noexpand\norecurse{\the\macname}% - \noexpand\scanmacro{\temp}\egroup}% + \noexpand\scanmacro{\macrobody}% + }% \else % at most 9 \ifnum\paramno<10\relax + % @MACNAME sets the context for reading the macro argument + % @MACNAME@@ gets the argument, processes backslashes and appends a + % comma. + % @MACNAME@@@ removes braces surrounding the argument list. + % @MACNAME@@@@ scans the macro body with arguments substituted. \expandafter\xdef\csname\the\macname\endcsname{% - \bgroup\noexpand\macroargctxt - \expandafter\noexpand\csname\the\macname xx\endcsname}% - \expandafter\xdef\csname\the\macname xx\endcsname##1{% - \expandafter\noexpand\csname\the\macname xxx\endcsname ##1,}% + \bgroup + \noexpand\expandafter % This \expandafter skip any spaces after the + \noexpand\macroargctxt % macro before we change the catcode of space. + \noexpand\expandafter + \expandafter\noexpand\csname\the\macname @@\endcsname}% + \expandafter\xdef\csname\the\macname @@\endcsname##1{% + \noexpand\passargtomacro + \expandafter\noexpand\csname\the\macname @@@\endcsname{##1,}}% + \expandafter\xdef\csname\the\macname @@@\endcsname##1{% + \expandafter\noexpand\csname\the\macname @@@@\endcsname ##1}% \expandafter\expandafter \expandafter\xdef \expandafter\expandafter - \csname\the\macname xxx\endcsname - \paramlist{% - \egroup - \noexpand\norecurse{\the\macname}% - \noexpand\scanmacro{\temp}\egroup}% + \csname\the\macname @@@@\endcsname\paramlist{% + \egroup\noexpand\scanmacro{\macrobody}}% \else % 10 or more: \expandafter\xdef\csname\the\macname\endcsname{% \noexpand\getargvals@{\the\macname}{\argl}% }% - \global\expandafter\let\csname mac.\the\macname .body\endcsname\temp + \global\expandafter\let\csname mac.\the\macname .body\endcsname\macrobody \global\expandafter\let\csname mac.\the\macname .recurse\endcsname\norecurse \fi \fi \fi} -\catcode `\@\texiatcatcode\relax +\catcode `\@\texiatcatcode\relax % end private-to-Texinfo catcodes \def\norecurse#1{\bgroup\cslet{#1}{macsave.#1}} -% \braceorline decides whether the next nonwhitespace character is a -% {. If so it reads up to the closing }, if not, it reads the whole -% line. Whatever was read is then fed to the next control sequence -% as an argument (by \parsebrace or \parsearg). + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +% +{\catcode`\@=0 \catcode`\\=13 % We need to manipulate \ so use @ as escape +@catcode`@_=11 % private names +@catcode`@!=11 % used as argument separator + +% \passargtomacro#1#2 - +% Call #1 with a list of tokens #2, with any doubled backslashes in #2 +% compressed to one. +% +% This implementation works by expansion, and not execution (so we cannot use +% \def or similar). This reduces the risk of this failing in contexts where +% complete expansion is done with no execution (for example, in writing out to +% an auxiliary file for an index entry). +% +% State is kept in the input stream: the argument passed to +% @look_ahead, @gobble_and_check_finish and @add_segment is +% +% THE_MACRO ARG_RESULT ! {PENDING_BS} NEXT_TOKEN (... rest of input) +% +% where: +% THE_MACRO - name of the macro we want to call +% ARG_RESULT - argument list we build to pass to that macro +% PENDING_BS - either a backslash or nothing +% NEXT_TOKEN - used to look ahead in the input stream to see what's coming next + +@gdef@passargtomacro#1#2{% + @add_segment #1!{}@relax#2\@_finish\% +} +@gdef@_finish{@_finishx} @global@let@_finishx@relax + +% #1 - THE_MACRO ARG_RESULT +% #2 - PENDING_BS +% #3 - NEXT_TOKEN +% #4 used to look ahead +% +% If the next token is not a backslash, process the rest of the argument; +% otherwise, remove the next token. +@gdef@look_ahead#1!#2#3#4{% + @ifx#4\% + @expandafter@gobble_and_check_finish + @else + @expandafter@add_segment + @fi#1!{#2}#4#4% +} + +% #1 - THE_MACRO ARG_RESULT +% #2 - PENDING_BS +% #3 - NEXT_TOKEN +% #4 should be a backslash, which is gobbled. +% #5 looks ahead +% +% Double backslash found. Add a single backslash, and look ahead. +@gdef@gobble_and_check_finish#1!#2#3#4#5{% + @add_segment#1\!{}#5#5% +} + +@gdef@is_fi{@fi} + +% #1 - THE_MACRO ARG_RESULT +% #2 - PENDING_BS +% #3 - NEXT_TOKEN +% #4 is input stream until next backslash +% +% Input stream is either at the start of the argument, or just after a +% backslash sequence, either a lone backslash, or a doubled backslash. +% NEXT_TOKEN contains the first token in the input stream: if it is \finish, +% finish; otherwise, append to ARG_RESULT the segment of the argument up until +% the next backslash. PENDING_BACKSLASH contains a backslash to represent +% a backslash just before the start of the input stream that has not been +% added to ARG_RESULT. +@gdef@add_segment#1!#2#3#4\{% +@ifx#3@_finish + @call_the_macro#1!% +@else + % append the pending backslash to the result, followed by the next segment + @expandafter@is_fi@look_ahead#1#2#4!{\}@fi + % this @fi is discarded by @look_ahead. + % we can't get rid of it with \expandafter because we don't know how + % long #4 is. +} + +% #1 - THE_MACRO +% #2 - ARG_RESULT +% #3 discards the res of the conditional in @add_segment, and @is_fi ends the +% conditional. +@gdef@call_the_macro#1#2!#3@fi{@is_fi #1{#2}} + +} +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +% \braceorline MAC is used for a one-argument macro MAC. It checks +% whether the next non-whitespace character is a {. It sets the context +% for reading the argument (slightly different in the two cases). Then, +% to read the argument, in the whole-line case, it then calls the regular +% \parsearg MAC; in the lbrace case, it calls \passargtomacro MAC. % \def\braceorline#1{\let\macnamexxx=#1\futurelet\nchar\braceorlinexxx} \def\braceorlinexxx{% - \ifx\nchar\bgroup\else - \expandafter\parsearg + \ifx\nchar\bgroup + \macroargctxt + \expandafter\passargtomacro + \else + \macrolineargctxt\expandafter\parsearg \fi \macnamexxx} @@ -7946,6 +8468,7 @@ end \pdfmkdest{#1}% \iflinks {% + \requireauxfile \atdummies % preserve commands, but don't expand them \edef\writexrdef##1##2{% \write\auxfile{@xrdef{#1-% #1 of \setref, expanded by the \edef @@ -7985,9 +8508,12 @@ end % node name, #4 the name of the Info file, #5 the name of the printed % manual. All but the node name can be omitted. % -\def\pxref#1{\putwordsee{} \xrefX[#1,,,,,,,]} -\def\xref#1{\putwordSee{} \xrefX[#1,,,,,,,]} -\def\ref#1{\xrefX[#1,,,,,,,]} +\def\pxref{\putwordsee{} \xrefXX} +\def\xref{\putwordSee{} \xrefXX} +\def\ref{\xrefXX} + +\def\xrefXX#1{\def\xrefXXarg{#1}\futurelet\tokenafterxref\xrefXXX} +\def\xrefXXX{\expandafter\xrefX\expandafter[\xrefXXarg,,,,,,,]} % \newbox\toprefbox \newbox\printedrefnamebox @@ -8061,10 +8587,6 @@ end }% \setcolor{\linkcolor}% \fi - % - % Float references are printed completely differently: "Figure 1.2" - % instead of "[somenode], p.3". We distinguish them by the - % LABEL-title being set to a magic string. {% % Have to otherify everything special to allow the \csname to % include an _ in the xref name, etc. @@ -8073,6 +8595,10 @@ end \expandafter\global\expandafter\let\expandafter\Xthisreftitle \csname XR#1-title\endcsname }% + % + % Float references are printed completely differently: "Figure 1.2" + % instead of "[somenode], p.3". \iffloat distinguishes them by + % \Xthisreftitle being set to a magic string. \iffloat\Xthisreftitle % If the user specified the print name (third arg) to the ref, % print it instead of our usual "Figure 1.2". @@ -8131,6 +8657,15 @@ end % % output the `page 3'. \turnoffactive \putwordpage\tie\refx{#1-pg}{}% + % Add a , if xref followed by a space + \if\space\noexpand\tokenafterxref ,% + \else\ifx\ \tokenafterxref ,% @TAB + \else\ifx\*\tokenafterxref ,% @* + \else\ifx\ \tokenafterxref ,% @SPACE + \else\ifx\ + \tokenafterxref ,% @NL + \else\ifx\tie\tokenafterxref ,% @tie + \fi\fi\fi\fi\fi\fi \fi\fi \fi \endlink @@ -8201,6 +8736,7 @@ end % If its value is nonempty, SUFFIX is output afterward. % \def\refx#1#2{% + \requireauxfile {% \indexnofonts \otherbackslash @@ -8264,6 +8800,23 @@ end \fi } +% If working on a large document in chapters, it is convenient to +% be able to disable indexing, cross-referencing, and contents, for test runs. +% This is done with @novalidate at the beginning of the file. +% +\newif\iflinks \linkstrue % by default we want the aux files. +\let\novalidate = \linksfalse + +% Used when writing to the aux file, or when using data from it. +\def\requireauxfile{% + \iflinks + \tryauxfile + % Open the new aux file. TeX will close it automatically at exit. + \immediate\openout\auxfile=\jobname.aux + \fi + \global\let\requireauxfile=\relax % Only do this once. +} + % Read the last existing aux file, if any. No error if none exists. % \def\tryauxfile{% @@ -8557,6 +9110,7 @@ end \def\imagexxx#1,#2,#3,#4,#5,#6\finish{\begingroup \catcode`\^^M = 5 % in case we're inside an example \normalturnoffactive % allow _ et al. in names + \def\xprocessmacroarg{\eatspaces}% in case we are being used via a macro % If the image is by itself, center it. \ifvmode \imagevmodetrue @@ -8586,12 +9140,21 @@ end % % Output the image. \ifpdf + % For pdfTeX and LuaTeX <= 0.80 \dopdfimage{#1}{#2}{#3}% \else - % \epsfbox itself resets \epsf?size at each figure. - \setbox0 = \hbox{\ignorespaces #2}\ifdim\wd0 > 0pt \epsfxsize=#2\relax \fi - \setbox0 = \hbox{\ignorespaces #3}\ifdim\wd0 > 0pt \epsfysize=#3\relax \fi - \epsfbox{#1.eps}% + \ifx\XeTeXrevision\thisisundefined + % For epsf.tex + % \epsfbox itself resets \epsf?size at each figure. + \setbox0 = \hbox{\ignorespaces #2}% + \ifdim\wd0 > 0pt \epsfxsize=#2\relax \fi + \setbox0 = \hbox{\ignorespaces #3}% + \ifdim\wd0 > 0pt \epsfysize=#3\relax \fi + \epsfbox{#1.eps}% + \else + % For XeTeX + \doxeteximage{#1}{#2}{#3}% + \fi \fi % \ifimagevmode @@ -8737,6 +9300,7 @@ end % \floatlabel-lof. Besides \floatident, we include the short % caption if specified, else the full caption if specified, else nothing. {% + \requireauxfile \atdummies % % since we read the caption text in the macro world, where ^^M @@ -8937,6 +9501,45 @@ directory should work if nowhere else does.} \global\righthyphenmin = #3\relax } +% Get input by bytes instead of by UTF-8 codepoints for XeTeX and LuaTeX, +% otherwise the encoding support is completely broken. +\ifx\XeTeXrevision\thisisundefined +\else +\XeTeXdefaultencoding "bytes" % For subsequent files to be read +\XeTeXinputencoding "bytes" % Effective in texinfo.tex only +% Unfortunately, there seems to be no corresponding XeTeX command for +% output encoding. This is a problem for auxiliary index and TOC files. +% The only solution would be perhaps to write out @U{...} sequences in +% place of UTF-8 characters. +\fi + +\ifx\luatexversion\thisisundefined +\else +\directlua{ +local utf8_char, byte, gsub = unicode.utf8.char, string.byte, string.gsub +local function convert_char (char) + return utf8_char(byte(char)) +end + +local function convert_line (line) + return gsub(line, ".", convert_char) +end + +callback.register("process_input_buffer", convert_line) + +local function convert_line_out (line) + local line_out = "" + for c in string.utfvalues(line) do + line_out = line_out .. string.char(c) + end + return line_out +end + +callback.register("process_output_buffer", convert_line_out) +} +\fi + + % Helpers for encodings. % Set the catcode of characters 128 through 255 to the specified number. % @@ -8954,13 +9557,21 @@ directory should work if nowhere else does.} \catcode\count255=#1\relax \advance\count255 by 1 \repeat - } % @documentencoding sets the definition of non-ASCII characters % according to the specified encoding. % -\parseargdef\documentencoding{% +\def\documentencoding{\parseargusing\filenamecatcodes\documentencodingzzz} +\def\documentencodingzzz#1{% + % Get input by bytes instead of by UTF-8 codepoints for XeTeX, + % otherwise the encoding support is completely broken. + % This settings is for the document root file. + \ifx\XeTeXrevision\thisisundefined + \else + \XeTeXinputencoding "bytes" + \fi + % % Encoding being declared for the document. \def\declaredencoding{\csname #1.enc\endcsname}% % @@ -9021,17 +9632,17 @@ directory should work if nowhere else does.} \def\latonechardefs{% \gdef^^a0{\tie} \gdef^^a1{\exclamdown} - \gdef^^a2{\missingcharmsg{CENT SIGN}} - \gdef^^a3{{\pounds}} - \gdef^^a4{\missingcharmsg{CURRENCY SIGN}} - \gdef^^a5{\missingcharmsg{YEN SIGN}} - \gdef^^a6{\missingcharmsg{BROKEN BAR}} + \gdef^^a2{{\tcfont \char162}} % cent + \gdef^^a3{\pounds} + \gdef^^a4{{\tcfont \char164}} % currency + \gdef^^a5{{\tcfont \char165}} % yen + \gdef^^a6{{\tcfont \char166}} % broken bar \gdef^^a7{\S} \gdef^^a8{\"{}} \gdef^^a9{\copyright} \gdef^^aa{\ordf} \gdef^^ab{\guillemetleft} - \gdef^^ac{$\lnot$} + \gdef^^ac{\ensuremath\lnot} \gdef^^ad{\-} \gdef^^ae{\registeredsymbol} \gdef^^af{\={}} @@ -9337,7 +9948,7 @@ directory should work if nowhere else does.} \gdef\UTFviiiTmp{#2}% % \expandafter\ifx\csname uni:#1\endcsname \relax \else - \errmessage{Internal error, already defined: #1}% + \message{Internal error, already defined: #1}% \fi % % define an additional control sequence for this code point. @@ -9396,7 +10007,11 @@ directory should work if nowhere else does.} \def\utfeightchardefs{% \DeclareUnicodeCharacter{00A0}{\tie} \DeclareUnicodeCharacter{00A1}{\exclamdown} + \DeclareUnicodeCharacter{00A2}{{\tcfont \char162}}% 0242=cent \DeclareUnicodeCharacter{00A3}{\pounds} + \DeclareUnicodeCharacter{00A4}{{\tcfont \char164}}% 0244=currency + \DeclareUnicodeCharacter{00A5}{{\tcfont \char165}}% 0245=yen + \DeclareUnicodeCharacter{00A6}{{\tcfont \char166}}% 0246=brokenbar \DeclareUnicodeCharacter{00A7}{\S} \DeclareUnicodeCharacter{00A8}{\"{ }} \DeclareUnicodeCharacter{00A9}{\copyright} @@ -9406,7 +10021,7 @@ directory should work if nowhere else does.} \DeclareUnicodeCharacter{00AD}{\-} \DeclareUnicodeCharacter{00AE}{\registeredsymbol} \DeclareUnicodeCharacter{00AF}{\={ }} - + % \DeclareUnicodeCharacter{00B0}{\ringaccent{ }} \DeclareUnicodeCharacter{00B1}{\ensuremath\pm} \DeclareUnicodeCharacter{00B2}{$^2$} @@ -9423,7 +10038,7 @@ directory should work if nowhere else does.} \DeclareUnicodeCharacter{00BD}{$1\over2$} \DeclareUnicodeCharacter{00BE}{$3\over4$} \DeclareUnicodeCharacter{00BF}{\questiondown} - + % \DeclareUnicodeCharacter{00C0}{\`A} \DeclareUnicodeCharacter{00C1}{\'A} \DeclareUnicodeCharacter{00C2}{\^A} @@ -9440,7 +10055,7 @@ directory should work if nowhere else does.} \DeclareUnicodeCharacter{00CD}{\'I} \DeclareUnicodeCharacter{00CE}{\^I} \DeclareUnicodeCharacter{00CF}{\"I} - + % \DeclareUnicodeCharacter{00D0}{\DH} \DeclareUnicodeCharacter{00D1}{\~N} \DeclareUnicodeCharacter{00D2}{\`O} @@ -9457,7 +10072,7 @@ directory should work if nowhere else does.} \DeclareUnicodeCharacter{00DD}{\'Y} \DeclareUnicodeCharacter{00DE}{\TH} \DeclareUnicodeCharacter{00DF}{\ss} - + % \DeclareUnicodeCharacter{00E0}{\`a} \DeclareUnicodeCharacter{00E1}{\'a} \DeclareUnicodeCharacter{00E2}{\^a} @@ -9474,7 +10089,7 @@ directory should work if nowhere else does.} \DeclareUnicodeCharacter{00ED}{\'{\dotless{i}}} \DeclareUnicodeCharacter{00EE}{\^{\dotless{i}}} \DeclareUnicodeCharacter{00EF}{\"{\dotless{i}}} - + % \DeclareUnicodeCharacter{00F0}{\dh} \DeclareUnicodeCharacter{00F1}{\~n} \DeclareUnicodeCharacter{00F2}{\`o} @@ -9491,7 +10106,7 @@ directory should work if nowhere else does.} \DeclareUnicodeCharacter{00FD}{\'y} \DeclareUnicodeCharacter{00FE}{\th} \DeclareUnicodeCharacter{00FF}{\"y} - + % \DeclareUnicodeCharacter{0100}{\=A} \DeclareUnicodeCharacter{0101}{\=a} \DeclareUnicodeCharacter{0102}{\u{A}} @@ -9508,7 +10123,7 @@ directory should work if nowhere else does.} \DeclareUnicodeCharacter{010D}{\v{c}} \DeclareUnicodeCharacter{010E}{\v{D}} \DeclareUnicodeCharacter{010F}{d'} - + % \DeclareUnicodeCharacter{0110}{\DH} \DeclareUnicodeCharacter{0111}{\dh} \DeclareUnicodeCharacter{0112}{\=E} @@ -9525,7 +10140,7 @@ directory should work if nowhere else does.} \DeclareUnicodeCharacter{011D}{\^g} \DeclareUnicodeCharacter{011E}{\u{G}} \DeclareUnicodeCharacter{011F}{\u{g}} - + % \DeclareUnicodeCharacter{0120}{\dotaccent{G}} \DeclareUnicodeCharacter{0121}{\dotaccent{g}} \DeclareUnicodeCharacter{0122}{\cedilla{G}} @@ -9542,7 +10157,7 @@ directory should work if nowhere else does.} \DeclareUnicodeCharacter{012D}{\u{\dotless{i}}} \DeclareUnicodeCharacter{012E}{\ogonek{I}} \DeclareUnicodeCharacter{012F}{\ogonek{i}} - + % \DeclareUnicodeCharacter{0130}{\dotaccent{I}} \DeclareUnicodeCharacter{0131}{\dotless{i}} \DeclareUnicodeCharacter{0132}{IJ} @@ -9559,7 +10174,7 @@ directory should work if nowhere else does.} \DeclareUnicodeCharacter{013D}{L'}% should kern \DeclareUnicodeCharacter{013E}{l'}% should kern \DeclareUnicodeCharacter{013F}{L\U{00B7}} - + % \DeclareUnicodeCharacter{0140}{l\U{00B7}} \DeclareUnicodeCharacter{0141}{\L} \DeclareUnicodeCharacter{0142}{\l} @@ -9576,7 +10191,7 @@ directory should work if nowhere else does.} \DeclareUnicodeCharacter{014D}{\=o} \DeclareUnicodeCharacter{014E}{\u{O}} \DeclareUnicodeCharacter{014F}{\u{o}} - + % \DeclareUnicodeCharacter{0150}{\H{O}} \DeclareUnicodeCharacter{0151}{\H{o}} \DeclareUnicodeCharacter{0152}{\OE} @@ -9593,7 +10208,7 @@ directory should work if nowhere else does.} \DeclareUnicodeCharacter{015D}{\^s} \DeclareUnicodeCharacter{015E}{\cedilla{S}} \DeclareUnicodeCharacter{015F}{\cedilla{s}} - + % \DeclareUnicodeCharacter{0160}{\v{S}} \DeclareUnicodeCharacter{0161}{\v{s}} \DeclareUnicodeCharacter{0162}{\cedilla{T}} @@ -9610,7 +10225,7 @@ directory should work if nowhere else does.} \DeclareUnicodeCharacter{016D}{\u{u}} \DeclareUnicodeCharacter{016E}{\ringaccent{U}} \DeclareUnicodeCharacter{016F}{\ringaccent{u}} - + % \DeclareUnicodeCharacter{0170}{\H{U}} \DeclareUnicodeCharacter{0171}{\H{u}} \DeclareUnicodeCharacter{0172}{\ogonek{U}} @@ -9627,7 +10242,7 @@ directory should work if nowhere else does.} \DeclareUnicodeCharacter{017D}{\v{Z}} \DeclareUnicodeCharacter{017E}{\v{z}} \DeclareUnicodeCharacter{017F}{\missingcharmsg{LONG S}} - + % \DeclareUnicodeCharacter{01C4}{D\v{Z}} \DeclareUnicodeCharacter{01C5}{D\v{z}} \DeclareUnicodeCharacter{01C6}{d\v{z}} @@ -9640,20 +10255,20 @@ directory should work if nowhere else does.} \DeclareUnicodeCharacter{01CD}{\v{A}} \DeclareUnicodeCharacter{01CE}{\v{a}} \DeclareUnicodeCharacter{01CF}{\v{I}} - + % \DeclareUnicodeCharacter{01D0}{\v{\dotless{i}}} \DeclareUnicodeCharacter{01D1}{\v{O}} \DeclareUnicodeCharacter{01D2}{\v{o}} \DeclareUnicodeCharacter{01D3}{\v{U}} \DeclareUnicodeCharacter{01D4}{\v{u}} - + % \DeclareUnicodeCharacter{01E2}{\={\AE}} \DeclareUnicodeCharacter{01E3}{\={\ae}} \DeclareUnicodeCharacter{01E6}{\v{G}} \DeclareUnicodeCharacter{01E7}{\v{g}} \DeclareUnicodeCharacter{01E8}{\v{K}} \DeclareUnicodeCharacter{01E9}{\v{k}} - + % \DeclareUnicodeCharacter{01F0}{\v{\dotless{j}}} \DeclareUnicodeCharacter{01F1}{DZ} \DeclareUnicodeCharacter{01F2}{Dz} @@ -9666,23 +10281,100 @@ directory should work if nowhere else does.} \DeclareUnicodeCharacter{01FD}{\'{\ae}} \DeclareUnicodeCharacter{01FE}{\'{\O}} \DeclareUnicodeCharacter{01FF}{\'{\o}} - + % \DeclareUnicodeCharacter{021E}{\v{H}} \DeclareUnicodeCharacter{021F}{\v{h}} - + % \DeclareUnicodeCharacter{0226}{\dotaccent{A}} \DeclareUnicodeCharacter{0227}{\dotaccent{a}} \DeclareUnicodeCharacter{0228}{\cedilla{E}} \DeclareUnicodeCharacter{0229}{\cedilla{e}} \DeclareUnicodeCharacter{022E}{\dotaccent{O}} \DeclareUnicodeCharacter{022F}{\dotaccent{o}} - + % \DeclareUnicodeCharacter{0232}{\=Y} \DeclareUnicodeCharacter{0233}{\=y} \DeclareUnicodeCharacter{0237}{\dotless{j}} - + % \DeclareUnicodeCharacter{02DB}{\ogonek{ }} - + % + % Greek letters upper case + \DeclareUnicodeCharacter{0391}{{\it A}} + \DeclareUnicodeCharacter{0392}{{\it B}} + \DeclareUnicodeCharacter{0393}{\ensuremath{\mit\Gamma}} + \DeclareUnicodeCharacter{0394}{\ensuremath{\mit\Delta}} + \DeclareUnicodeCharacter{0395}{{\it E}} + \DeclareUnicodeCharacter{0396}{{\it Z}} + \DeclareUnicodeCharacter{0397}{{\it H}} + \DeclareUnicodeCharacter{0398}{\ensuremath{\mit\Theta}} + \DeclareUnicodeCharacter{0399}{{\it I}} + \DeclareUnicodeCharacter{039A}{{\it K}} + \DeclareUnicodeCharacter{039B}{\ensuremath{\mit\Lambda}} + \DeclareUnicodeCharacter{039C}{{\it M}} + \DeclareUnicodeCharacter{039D}{{\it N}} + \DeclareUnicodeCharacter{039E}{\ensuremath{\mit\Xi}} + \DeclareUnicodeCharacter{039F}{{\it O}} + \DeclareUnicodeCharacter{03A0}{\ensuremath{\mit\Pi}} + \DeclareUnicodeCharacter{03A1}{{\it P}} + %\DeclareUnicodeCharacter{03A2}{} % none - corresponds to final sigma + \DeclareUnicodeCharacter{03A3}{\ensuremath{\mit\Sigma}} + \DeclareUnicodeCharacter{03A4}{{\it T}} + \DeclareUnicodeCharacter{03A5}{\ensuremath{\mit\Upsilon}} + \DeclareUnicodeCharacter{03A6}{\ensuremath{\mit\Phi}} + \DeclareUnicodeCharacter{03A7}{{\it X}} + \DeclareUnicodeCharacter{03A8}{\ensuremath{\mit\Psi}} + \DeclareUnicodeCharacter{03A9}{\ensuremath{\mit\Omega}} + % + % Vowels with accents + \DeclareUnicodeCharacter{0390}{\ensuremath{\ddot{\acute\iota}}} + \DeclareUnicodeCharacter{03AC}{\ensuremath{\acute\alpha}} + \DeclareUnicodeCharacter{03AD}{\ensuremath{\acute\epsilon}} + \DeclareUnicodeCharacter{03AE}{\ensuremath{\acute\eta}} + \DeclareUnicodeCharacter{03AF}{\ensuremath{\acute\iota}} + \DeclareUnicodeCharacter{03B0}{\ensuremath{\acute{\ddot\upsilon}}} + % + % Standalone accent + \DeclareUnicodeCharacter{0384}{\ensuremath{\acute{\ }}} + % + % Greek letters lower case + \DeclareUnicodeCharacter{03B1}{\ensuremath\alpha} + \DeclareUnicodeCharacter{03B2}{\ensuremath\beta} + \DeclareUnicodeCharacter{03B3}{\ensuremath\gamma} + \DeclareUnicodeCharacter{03B4}{\ensuremath\delta} + \DeclareUnicodeCharacter{03B5}{\ensuremath\epsilon} + \DeclareUnicodeCharacter{03B6}{\ensuremath\zeta} + \DeclareUnicodeCharacter{03B7}{\ensuremath\eta} + \DeclareUnicodeCharacter{03B8}{\ensuremath\theta} + \DeclareUnicodeCharacter{03B9}{\ensuremath\iota} + \DeclareUnicodeCharacter{03BA}{\ensuremath\kappa} + \DeclareUnicodeCharacter{03BB}{\ensuremath\lambda} + \DeclareUnicodeCharacter{03BC}{\ensuremath\mu} + \DeclareUnicodeCharacter{03BD}{\ensuremath\nu} + \DeclareUnicodeCharacter{03BE}{\ensuremath\xi} + \DeclareUnicodeCharacter{03BF}{{\it o}} % omicron + \DeclareUnicodeCharacter{03C0}{\ensuremath\pi} + \DeclareUnicodeCharacter{03C1}{\ensuremath\rho} + \DeclareUnicodeCharacter{03C2}{\ensuremath\varsigma} + \DeclareUnicodeCharacter{03C3}{\ensuremath\sigma} + \DeclareUnicodeCharacter{03C4}{\ensuremath\tau} + \DeclareUnicodeCharacter{03C5}{\ensuremath\upsilon} + \DeclareUnicodeCharacter{03C6}{\ensuremath\phi} + \DeclareUnicodeCharacter{03C7}{\ensuremath\chi} + \DeclareUnicodeCharacter{03C8}{\ensuremath\psi} + \DeclareUnicodeCharacter{03C9}{\ensuremath\omega} + % + % More Greek vowels with accents + \DeclareUnicodeCharacter{03CA}{\ensuremath{\ddot\iota}} + \DeclareUnicodeCharacter{03CB}{\ensuremath{\ddot\upsilon}} + \DeclareUnicodeCharacter{03CC}{\ensuremath{\acute o}} + \DeclareUnicodeCharacter{03CD}{\ensuremath{\acute\upsilon}} + \DeclareUnicodeCharacter{03CE}{\ensuremath{\acute\omega}} + % + % Variant Greek letters + \DeclareUnicodeCharacter{03D1}{\ensuremath\vartheta} + \DeclareUnicodeCharacter{03D6}{\ensuremath\varpi} + \DeclareUnicodeCharacter{03F1}{\ensuremath\varrho} + % \DeclareUnicodeCharacter{1E02}{\dotaccent{B}} \DeclareUnicodeCharacter{1E03}{\dotaccent{b}} \DeclareUnicodeCharacter{1E04}{\udotaccent{B}} @@ -9695,10 +10387,10 @@ directory should work if nowhere else does.} \DeclareUnicodeCharacter{1E0D}{\udotaccent{d}} \DeclareUnicodeCharacter{1E0E}{\ubaraccent{D}} \DeclareUnicodeCharacter{1E0F}{\ubaraccent{d}} - + % \DeclareUnicodeCharacter{1E1E}{\dotaccent{F}} \DeclareUnicodeCharacter{1E1F}{\dotaccent{f}} - + % \DeclareUnicodeCharacter{1E20}{\=G} \DeclareUnicodeCharacter{1E21}{\=g} \DeclareUnicodeCharacter{1E22}{\dotaccent{H}} @@ -9707,7 +10399,7 @@ directory should work if nowhere else does.} \DeclareUnicodeCharacter{1E25}{\udotaccent{h}} \DeclareUnicodeCharacter{1E26}{\"H} \DeclareUnicodeCharacter{1E27}{\"h} - + % \DeclareUnicodeCharacter{1E30}{\'K} \DeclareUnicodeCharacter{1E31}{\'k} \DeclareUnicodeCharacter{1E32}{\udotaccent{K}} @@ -9720,7 +10412,7 @@ directory should work if nowhere else does.} \DeclareUnicodeCharacter{1E3B}{\ubaraccent{l}} \DeclareUnicodeCharacter{1E3E}{\'M} \DeclareUnicodeCharacter{1E3F}{\'m} - + % \DeclareUnicodeCharacter{1E40}{\dotaccent{M}} \DeclareUnicodeCharacter{1E41}{\dotaccent{m}} \DeclareUnicodeCharacter{1E42}{\udotaccent{M}} @@ -9731,7 +10423,7 @@ directory should work if nowhere else does.} \DeclareUnicodeCharacter{1E47}{\udotaccent{n}} \DeclareUnicodeCharacter{1E48}{\ubaraccent{N}} \DeclareUnicodeCharacter{1E49}{\ubaraccent{n}} - + % \DeclareUnicodeCharacter{1E54}{\'P} \DeclareUnicodeCharacter{1E55}{\'p} \DeclareUnicodeCharacter{1E56}{\dotaccent{P}} @@ -9742,7 +10434,7 @@ directory should work if nowhere else does.} \DeclareUnicodeCharacter{1E5B}{\udotaccent{r}} \DeclareUnicodeCharacter{1E5E}{\ubaraccent{R}} \DeclareUnicodeCharacter{1E5F}{\ubaraccent{r}} - + % \DeclareUnicodeCharacter{1E60}{\dotaccent{S}} \DeclareUnicodeCharacter{1E61}{\dotaccent{s}} \DeclareUnicodeCharacter{1E62}{\udotaccent{S}} @@ -9753,12 +10445,12 @@ directory should work if nowhere else does.} \DeclareUnicodeCharacter{1E6D}{\udotaccent{t}} \DeclareUnicodeCharacter{1E6E}{\ubaraccent{T}} \DeclareUnicodeCharacter{1E6F}{\ubaraccent{t}} - + % \DeclareUnicodeCharacter{1E7C}{\~V} \DeclareUnicodeCharacter{1E7D}{\~v} \DeclareUnicodeCharacter{1E7E}{\udotaccent{V}} \DeclareUnicodeCharacter{1E7F}{\udotaccent{v}} - + % \DeclareUnicodeCharacter{1E80}{\`W} \DeclareUnicodeCharacter{1E81}{\`w} \DeclareUnicodeCharacter{1E82}{\'W} @@ -9775,7 +10467,7 @@ directory should work if nowhere else does.} \DeclareUnicodeCharacter{1E8D}{\"x} \DeclareUnicodeCharacter{1E8E}{\dotaccent{Y}} \DeclareUnicodeCharacter{1E8F}{\dotaccent{y}} - + % \DeclareUnicodeCharacter{1E90}{\^Z} \DeclareUnicodeCharacter{1E91}{\^z} \DeclareUnicodeCharacter{1E92}{\udotaccent{Z}} @@ -9786,30 +10478,31 @@ directory should work if nowhere else does.} \DeclareUnicodeCharacter{1E97}{\"t} \DeclareUnicodeCharacter{1E98}{\ringaccent{w}} \DeclareUnicodeCharacter{1E99}{\ringaccent{y}} - + % \DeclareUnicodeCharacter{1EA0}{\udotaccent{A}} \DeclareUnicodeCharacter{1EA1}{\udotaccent{a}} - + % \DeclareUnicodeCharacter{1EB8}{\udotaccent{E}} \DeclareUnicodeCharacter{1EB9}{\udotaccent{e}} \DeclareUnicodeCharacter{1EBC}{\~E} \DeclareUnicodeCharacter{1EBD}{\~e} - + % \DeclareUnicodeCharacter{1ECA}{\udotaccent{I}} \DeclareUnicodeCharacter{1ECB}{\udotaccent{i}} \DeclareUnicodeCharacter{1ECC}{\udotaccent{O}} \DeclareUnicodeCharacter{1ECD}{\udotaccent{o}} - + % \DeclareUnicodeCharacter{1EE4}{\udotaccent{U}} \DeclareUnicodeCharacter{1EE5}{\udotaccent{u}} - + % \DeclareUnicodeCharacter{1EF2}{\`Y} \DeclareUnicodeCharacter{1EF3}{\`y} \DeclareUnicodeCharacter{1EF4}{\udotaccent{Y}} - + % \DeclareUnicodeCharacter{1EF8}{\~Y} \DeclareUnicodeCharacter{1EF9}{\~y} - + % + % Punctuation \DeclareUnicodeCharacter{2013}{--} \DeclareUnicodeCharacter{2014}{---} \DeclareUnicodeCharacter{2018}{\quoteleft} @@ -9821,18 +10514,166 @@ directory should work if nowhere else does.} \DeclareUnicodeCharacter{2020}{\ensuremath\dagger} \DeclareUnicodeCharacter{2021}{\ensuremath\ddagger} \DeclareUnicodeCharacter{2022}{\bullet} + \DeclareUnicodeCharacter{202F}{\thinspace} \DeclareUnicodeCharacter{2026}{\dots} \DeclareUnicodeCharacter{2039}{\guilsinglleft} \DeclareUnicodeCharacter{203A}{\guilsinglright} + % \DeclareUnicodeCharacter{20AC}{\euro} - + % \DeclareUnicodeCharacter{2192}{\expansion} \DeclareUnicodeCharacter{21D2}{\result} - + % + % Mathematical symbols + \DeclareUnicodeCharacter{2200}{\ensuremath\forall} + \DeclareUnicodeCharacter{2203}{\ensuremath\exists} + \DeclareUnicodeCharacter{2208}{\ensuremath\in} \DeclareUnicodeCharacter{2212}{\minus} - \DeclareUnicodeCharacter{2217}{\point} + \DeclareUnicodeCharacter{2217}{\ast} + \DeclareUnicodeCharacter{221E}{\ensuremath\infty} \DeclareUnicodeCharacter{2225}{\ensuremath\parallel} + \DeclareUnicodeCharacter{2227}{\ensuremath\wedge} + \DeclareUnicodeCharacter{2229}{\ensuremath\cap} \DeclareUnicodeCharacter{2261}{\equiv} + \DeclareUnicodeCharacter{2264}{\ensuremath\leq} + \DeclareUnicodeCharacter{2265}{\ensuremath\geq} + \DeclareUnicodeCharacter{2282}{\ensuremath\subset} + \DeclareUnicodeCharacter{2287}{\ensuremath\supseteq} + % + \DeclareUnicodeCharacter{2016}{\ensuremath\Vert} + \DeclareUnicodeCharacter{2032}{\ensuremath\prime} + \DeclareUnicodeCharacter{210F}{\ensuremath\hbar} + \DeclareUnicodeCharacter{2111}{\ensuremath\Im} + \DeclareUnicodeCharacter{2113}{\ensuremath\ell} + \DeclareUnicodeCharacter{2118}{\ensuremath\wp} + \DeclareUnicodeCharacter{211C}{\ensuremath\Re} + \DeclareUnicodeCharacter{2127}{\ensuremath\mho} + \DeclareUnicodeCharacter{2135}{\ensuremath\aleph} + \DeclareUnicodeCharacter{2190}{\ensuremath\leftarrow} + \DeclareUnicodeCharacter{2191}{\ensuremath\uparrow} + \DeclareUnicodeCharacter{2193}{\ensuremath\downarrow} + \DeclareUnicodeCharacter{2194}{\ensuremath\leftrightarrow} + \DeclareUnicodeCharacter{2195}{\ensuremath\updownarrow} + \DeclareUnicodeCharacter{2196}{\ensuremath\nwarrow} + \DeclareUnicodeCharacter{2197}{\ensuremath\nearrow} + \DeclareUnicodeCharacter{2198}{\ensuremath\searrow} + \DeclareUnicodeCharacter{2199}{\ensuremath\swarrow} + \DeclareUnicodeCharacter{21A6}{\ensuremath\mapsto} + \DeclareUnicodeCharacter{21A9}{\ensuremath\hookleftarrow} + \DeclareUnicodeCharacter{21AA}{\ensuremath\hookrightarrow} + \DeclareUnicodeCharacter{21BC}{\ensuremath\leftharpoonup} + \DeclareUnicodeCharacter{21BD}{\ensuremath\leftharpoondown} + \DeclareUnicodeCharacter{21BE}{\ensuremath\upharpoonright} + \DeclareUnicodeCharacter{21C0}{\ensuremath\rightharpoonup} + \DeclareUnicodeCharacter{21C1}{\ensuremath\rightharpoondown} + \DeclareUnicodeCharacter{21CC}{\ensuremath\rightleftharpoons} + \DeclareUnicodeCharacter{21D0}{\ensuremath\Leftarrow} + \DeclareUnicodeCharacter{21D1}{\ensuremath\Uparrow} + \DeclareUnicodeCharacter{21D3}{\ensuremath\Downarrow} + \DeclareUnicodeCharacter{21D4}{\ensuremath\Leftrightarrow} + \DeclareUnicodeCharacter{21D5}{\ensuremath\Updownarrow} + \DeclareUnicodeCharacter{21DD}{\ensuremath\leadsto} + \DeclareUnicodeCharacter{2201}{\ensuremath\complement} + \DeclareUnicodeCharacter{2202}{\ensuremath\partial} + \DeclareUnicodeCharacter{2205}{\ensuremath\emptyset} + \DeclareUnicodeCharacter{2207}{\ensuremath\nabla} + \DeclareUnicodeCharacter{2209}{\ensuremath\notin} + \DeclareUnicodeCharacter{220B}{\ensuremath\owns} + \DeclareUnicodeCharacter{220F}{\ensuremath\prod} + \DeclareUnicodeCharacter{2210}{\ensuremath\coprod} + \DeclareUnicodeCharacter{2211}{\ensuremath\sum} + \DeclareUnicodeCharacter{2213}{\ensuremath\mp} + \DeclareUnicodeCharacter{2218}{\ensuremath\circ} + \DeclareUnicodeCharacter{221A}{\ensuremath\surd} + \DeclareUnicodeCharacter{221D}{\ensuremath\propto} + \DeclareUnicodeCharacter{2220}{\ensuremath\angle} + \DeclareUnicodeCharacter{2223}{\ensuremath\mid} + \DeclareUnicodeCharacter{2228}{\ensuremath\vee} + \DeclareUnicodeCharacter{222A}{\ensuremath\cup} + \DeclareUnicodeCharacter{222B}{\ensuremath\smallint} + \DeclareUnicodeCharacter{222E}{\ensuremath\oint} + \DeclareUnicodeCharacter{223C}{\ensuremath\sim} + \DeclareUnicodeCharacter{2240}{\ensuremath\wr} + \DeclareUnicodeCharacter{2243}{\ensuremath\simeq} + \DeclareUnicodeCharacter{2245}{\ensuremath\cong} + \DeclareUnicodeCharacter{2248}{\ensuremath\approx} + \DeclareUnicodeCharacter{224D}{\ensuremath\asymp} + \DeclareUnicodeCharacter{2250}{\ensuremath\doteq} + \DeclareUnicodeCharacter{2260}{\ensuremath\neq} + \DeclareUnicodeCharacter{226A}{\ensuremath\ll} + \DeclareUnicodeCharacter{226B}{\ensuremath\gg} + \DeclareUnicodeCharacter{227A}{\ensuremath\prec} + \DeclareUnicodeCharacter{227B}{\ensuremath\succ} + \DeclareUnicodeCharacter{2283}{\ensuremath\supset} + \DeclareUnicodeCharacter{2286}{\ensuremath\subseteq} + \DeclareUnicodeCharacter{228E}{\ensuremath\uplus} + \DeclareUnicodeCharacter{228F}{\ensuremath\sqsubset} + \DeclareUnicodeCharacter{2290}{\ensuremath\sqsupset} + \DeclareUnicodeCharacter{2291}{\ensuremath\sqsubseteq} + \DeclareUnicodeCharacter{2292}{\ensuremath\sqsupseteq} + \DeclareUnicodeCharacter{2293}{\ensuremath\sqcap} + \DeclareUnicodeCharacter{2294}{\ensuremath\sqcup} + \DeclareUnicodeCharacter{2295}{\ensuremath\oplus} + \DeclareUnicodeCharacter{2296}{\ensuremath\ominus} + \DeclareUnicodeCharacter{2297}{\ensuremath\otimes} + \DeclareUnicodeCharacter{2298}{\ensuremath\oslash} + \DeclareUnicodeCharacter{2299}{\ensuremath\odot} + \DeclareUnicodeCharacter{22A2}{\ensuremath\vdash} + \DeclareUnicodeCharacter{22A3}{\ensuremath\dashv} + \DeclareUnicodeCharacter{22A4}{\ensuremath\ptextop} + \DeclareUnicodeCharacter{22A5}{\ensuremath\bot} + \DeclareUnicodeCharacter{22A8}{\ensuremath\models} + \DeclareUnicodeCharacter{22B4}{\ensuremath\unlhd} + \DeclareUnicodeCharacter{22B5}{\ensuremath\unrhd} + \DeclareUnicodeCharacter{22C0}{\ensuremath\bigwedge} + \DeclareUnicodeCharacter{22C1}{\ensuremath\bigvee} + \DeclareUnicodeCharacter{22C2}{\ensuremath\bigcap} + \DeclareUnicodeCharacter{22C3}{\ensuremath\bigcup} + \DeclareUnicodeCharacter{22C4}{\ensuremath\diamond} + \DeclareUnicodeCharacter{22C5}{\ensuremath\cdot} + \DeclareUnicodeCharacter{22C6}{\ensuremath\star} + \DeclareUnicodeCharacter{22C8}{\ensuremath\bowtie} + \DeclareUnicodeCharacter{2308}{\ensuremath\lceil} + \DeclareUnicodeCharacter{2309}{\ensuremath\rceil} + \DeclareUnicodeCharacter{230A}{\ensuremath\lfloor} + \DeclareUnicodeCharacter{230B}{\ensuremath\rfloor} + \DeclareUnicodeCharacter{2322}{\ensuremath\frown} + \DeclareUnicodeCharacter{2323}{\ensuremath\smile} + % + \DeclareUnicodeCharacter{25A1}{\ensuremath\Box} + \DeclareUnicodeCharacter{25B3}{\ensuremath\triangle} + \DeclareUnicodeCharacter{25B7}{\ensuremath\triangleright} + \DeclareUnicodeCharacter{25BD}{\ensuremath\bigtriangledown} + \DeclareUnicodeCharacter{25C1}{\ensuremath\triangleleft} + \DeclareUnicodeCharacter{25C7}{\ensuremath\Diamond} + \DeclareUnicodeCharacter{2660}{\ensuremath\spadesuit} + \DeclareUnicodeCharacter{2661}{\ensuremath\heartsuit} + \DeclareUnicodeCharacter{2662}{\ensuremath\diamondsuit} + \DeclareUnicodeCharacter{2663}{\ensuremath\clubsuit} + \DeclareUnicodeCharacter{266D}{\ensuremath\flat} + \DeclareUnicodeCharacter{266E}{\ensuremath\natural} + \DeclareUnicodeCharacter{266F}{\ensuremath\sharp} + \DeclareUnicodeCharacter{26AA}{\ensuremath\bigcirc} + \DeclareUnicodeCharacter{27B9}{\ensuremath\rangle} + \DeclareUnicodeCharacter{27C2}{\ensuremath\perp} + \DeclareUnicodeCharacter{27E8}{\ensuremath\langle} + \DeclareUnicodeCharacter{27F5}{\ensuremath\longleftarrow} + \DeclareUnicodeCharacter{27F6}{\ensuremath\longrightarrow} + \DeclareUnicodeCharacter{27F7}{\ensuremath\longleftrightarrow} + \DeclareUnicodeCharacter{27FC}{\ensuremath\longmapsto} + \DeclareUnicodeCharacter{29F5}{\ensuremath\setminus} + \DeclareUnicodeCharacter{2A00}{\ensuremath\bigodot} + \DeclareUnicodeCharacter{2A01}{\ensuremath\bigoplus} + \DeclareUnicodeCharacter{2A02}{\ensuremath\bigotimes} + \DeclareUnicodeCharacter{2A04}{\ensuremath\biguplus} + \DeclareUnicodeCharacter{2A06}{\ensuremath\bigsqcup} + \DeclareUnicodeCharacter{2A1D}{\ensuremath\Join} + \DeclareUnicodeCharacter{2A3F}{\ensuremath\amalg} + \DeclareUnicodeCharacter{2AAF}{\ensuremath\preceq} + \DeclareUnicodeCharacter{2AB0}{\ensuremath\succeq} + % + \global\mathchardef\checkmark="1370 % actually the square root sign + \DeclareUnicodeCharacter{2713}{\ensuremath\checkmark} }% end of \utfeightchardefs % US-ASCII character definitions. @@ -10150,26 +10991,25 @@ directory should work if nowhere else does.} % this is not a problem. \def\ifusingit#1#2{\ifdim \fontdimen1\font>0pt #1\else #2\fi} -% Turn off all special characters except @ -% (and those which the user can use as if they were ordinary). +% Set catcodes for Texinfo file + +% Active characters for printing the wanted glyph. % Most of these we simply print from the \tt font, but for some, we can % use math or other variants that look better in normal text. - +% \catcode`\"=\active \def\activedoublequote{{\tt\char34}} \let"=\activedoublequote \catcode`\~=\active \def\activetilde{{\tt\char126}} \let~ = \activetilde -\chardef\hat=`\^ -\catcode`\^=\active \def\activehat{{\tt \hat}} \let^ = \activehat +\chardef\hatchar=`\^ +\catcode`\^=\active \def\activehat{{\tt \hatchar}} \let^ = \activehat \catcode`\_=\active \def_{\ifusingtt\normalunderscore\_} -\let\realunder=_ -% Subroutine for the previous macro. \def\_{\leavevmode \kern.07em \vbox{\hrule width.3em height.1ex}\kern .07em } +\let\realunder=_ -\catcode`\|=\active -\def|{{\tt\char124}} +\catcode`\|=\active \def|{{\tt\char124}} \chardef \less=`\< \catcode`\<=\active \def\activeless{{\tt \less}}\let< = \activeless @@ -10177,6 +11017,8 @@ directory should work if nowhere else does.} \catcode`\>=\active \def\activegtr{{\tt \gtr}}\let> = \activegtr \catcode`\+=\active \def+{{\tt \char 43}} \catcode`\$=\active \def${\ifusingit{{\sl\$}}\normaldollar}%$ font-lock fix +\catcode`\-=\active \let-=\normaldash + % used for headline/footline in the output routine, in case the page % breaks in the middle of an @tex block. @@ -10191,12 +11033,6 @@ directory should work if nowhere else does.} % in principle, all other definitions in \tex have to be undone too. } -% If a .fmt file is being used, characters that might appear in a file -% name cannot be active until we have parsed the command line. -% So turn them off again, and have \everyjob (or @setfilename) turn them on. -% \otherifyactive is called near the end of this file. -\def\otherifyactive{\catcode`+=\other \catcode`\_=\other} - % Used sometimes to turn off (effectively) the active characters even after % parsing them. \def\turnoffactive{% @@ -10215,23 +11051,22 @@ directory should work if nowhere else does.} % \doublebackslash is two of them (for the pdf outlines). {\catcode`\\=\other @gdef@realbackslash{\} @gdef@doublebackslash{\\}} -% In texinfo, backslash is an active character; it prints the backslash +% In Texinfo, backslash is an active character; it prints the backslash % in fixed width font. \catcode`\\=\active % @ for escape char from now on. -% The story here is that in math mode, the \char of \backslashcurfont -% ends up printing the roman \ from the math symbol font (because \char -% in math mode uses the \mathcode, and plain.tex sets -% \mathcode`\\="026E). It seems better for @backslashchar{} to always -% print a typewriter backslash, hence we use an explicit \mathchar, +% Print a typewriter backslash. For math mode, we can't simply use +% \backslashcurfont: the story here is that in math mode, the \char +% of \backslashcurfont ends up printing the roman \ from the math symbol +% font (because \char in math mode uses the \mathcode, and plain.tex +% sets \mathcode`\\="026E). Hence we use an explicit \mathchar, % which is the decimal equivalent of "715c (class 7, e.g., use \fam; % ignored family value; char position "5C). We can't use " for the % usual hex value because it has already been made active. -@def@normalbackslash{{@tt @ifmmode @mathchar29020 @else @backslashcurfont @fi}} -@let@backslashchar = @normalbackslash % @backslashchar{} is for user documents. -% On startup, @fixbackslash assigns: -% @let \ = @normalbackslash +@def@ttbackslash{{@tt @ifmmode @mathchar29020 @else @backslashcurfont @fi}} +@let@backslashchar = @ttbackslash % @backslashchar{} is for user documents. + % \rawbackslash defines an active \ to do \backslashcurfont. % \otherbackslash defines an active \ to be a literal `\' character with % catcode other. We switch back and forth between these. @@ -10239,8 +11074,7 @@ directory should work if nowhere else does.} @gdef@otherbackslash{@let\=@realbackslash} % Same as @turnoffactive except outputs \ as {\tt\char`\\} instead of -% the literal character `\'. Also revert - to its normal character, in -% case the active - from code has slipped in. +% the literal character `\'. % {@catcode`- = @active @gdef@normalturnoffactive{% @@ -10251,40 +11085,77 @@ directory should work if nowhere else does.} @let+=@normalplus @let<=@normalless @let>=@normalgreater - @let\=@normalbackslash @let^=@normalcaret @let_=@normalunderscore @let|=@normalverticalbar @let~=@normaltilde + @let\=@ttbackslash @markupsetuplqdefault @markupsetuprqdefault @unsepspaces } } -% Make _ and + \other characters, temporarily. -% This is canceled by @fixbackslash. -@otherifyactive +% If a .fmt file is being used, characters that might appear in a file +% name cannot be active until we have parsed the command line. +% So turn them off again, and have @fixbackslash turn them back on. +@catcode`+=@other @catcode`@_=@other +% \enablebackslashhack - allow file to begin `\input texinfo' +% % If a .fmt file is being used, we don't want the `\input texinfo' to show up. % That is what \eatinput is for; after that, the `\' should revert to printing % a backslash. -% -@gdef@eatinput input texinfo{@fixbackslash} -@global@let\ = @eatinput +% If the file did not have a `\input texinfo', then it is turned off after +% the first line; otherwise the first `\' in the file would cause an error. +% This is used on the very last line of this file, texinfo.tex. +% We also use @c to call @fixbackslash, in case ends of lines are hidden. +{ +@catcode`@^=7 +@catcode`@^^M=13@gdef@enablebackslashhack{% + @global@let\ = @eatinput% + @catcode`@^^M=13% + @def@c{@fixbackslash@c}% + @def ^^M{@let^^M@secondlinenl}% + @gdef @secondlinenl{@let^^M@thirdlinenl}% + @gdef @thirdlinenl{@fixbackslash}% +}} + +{@catcode`@^=7 @catcode`@^^M=13% +@gdef@eatinput input texinfo#1^^M{@fixbackslash}} + +% Emergency active definition of newline, in case an active newline token +% appears by mistake. +{@catcode`@^=7 @catcode13=13% +@gdef@enableemergencynewline{% + @gdef^^M{% + @par% + %@par% +}}} + -% On the other hand, perhaps the file did not have a `\input texinfo'. Then -% the first `\' in the file would cause an error. This macro tries to fix -% that, assuming it is called before the first `\' could plausibly occur. -% Also turn back on active characters that might appear in the input -% file name, in case not using a pre-dumped format. -% @gdef@fixbackslash{% - @ifx\@eatinput @let\ = @normalbackslash @fi + @ifx\@eatinput @let\ = @ttbackslash @fi + @catcode13=5 % regular end of line + @enableemergencynewline + @let@c=@texinfoc + % Also turn back on active characters that might appear in the input + % file name, in case not using a pre-dumped format. @catcode`+=@active @catcode`@_=@active + % + % If texinfo.cnf is present on the system, read it. + % Useful for site-wide @afourpaper, etc. This macro, @fixbackslash, gets + % called at the beginning of every Texinfo file. Not opening texinfo.cnf + % directly in this file, texinfo.tex, makes it possible to make a format + % file for Texinfo. + % + @openin 1 texinfo.cnf + @ifeof 1 @else @input texinfo.cnf @fi + @closein 1 } + % Say @foo, not \foo, in error messages. @escapechar = `@@ @@ -10324,3 +11195,4 @@ directory should work if nowhere else does.} @ignore arch-tag: e1b36e32-c96e-4135-a41a-0b2efa2ea115 @end ignore +@enablebackslashhack diff --git a/doc/wordlist b/doc/wordlist new file mode 100644 index 0000000..7bbed13 --- /dev/null +++ b/doc/wordlist @@ -0,0 +1,1937 @@ +AA +AAAA +ABC +ABCDEFGHIJKLMNOPQRSTUVWXYZ +ABCXYabcdxyz +ACLs +ACM +ADR +AF +ANDing +API +API's +APIs +ARG +ARGC +ARGIND +ARGV +AWK +AWK's +AWKBUFSIZE +AWKLIBPATH +AWKPATH +AWKREADFUNC +Acknowledgements +Adams's +AdditionalResources +Affero +Aharon +Aho +Akim +Anders +Andreas +Argind +Assaf +Attractant +Autoconf +Automake +Autotools +Avahi +Awk +Awkstuff +Ayalon +BBBB +BEGINFILE +BEL +BINMODE +BLKSIZE +BSIZE +BTL +BWK +Banzai +BeOS +Bentley's +Benzinger +Bitwise +Bleah +Bornstein +Bourne +Breakpoint +Brin's +Brini +Brini's +Broder +Broderick +Buening +Burridge +BusyBox +CAKuGj +CASEFOLD +CC +CDE +CEST +CFLAGS +CGI +CHEM +CMP +COMFOLLOW +COMMONEXT +CONFIG +CONVFMT +CRC +CRTL +CSV +CTYPE +Callback +Chana +ChangeLog +Chassell +Chet +Christos +CliffRandomNumberGenerator +Cloutier +Cn +Collado +Constant's +Coprocess +Coprocesses +Coreutils +Corinna +Ctrl +Cygwin +DARKCORNER +DCL +DCLTABLES +DD +DDEBUG +DDF +DEV +DF +DFA +DGAWK +DHAVE +DIR +DJGPP +DK +DST +DTD +DVI +Datafile +Davide +Davide's +Decrement +Decrementing +Deifik +Demaille +Dinline +Drepper +Duman +Dupword +EAGAIN +EBCDIC +EC +ECBDIC +EINTR +EMISTERED +EMRED +EMX +ENDFILE +ENVIRON +EOF +EREs +ERRNO +ESC +EST +ETIMEDOUT +EWOULDBLOCK +EY +Eberhard +Ec +Ee +Efraim +Eggert +Egrep +Emptor +Executables +Exp +Expat +Ey +FAIA +FD +FDL +FF +FFN +FHS +FIELDWIDTHS +FILENAME +FIXME +FN +FNM +FNR +FOO +FORmula +FP +FPAT +FS +FSF +FSF's +FTS +FULLXREF +FUNCTAB +Fabi +Fabius +Fenlason +Filename +Filetrans +Fnames +Fnmatch +Formatter +Formfeed +Fortran +FreeBSD +Friedl +GAWKINETTITLE +GCC +GCC's +GDB +GETGRENT +GMP +GMT +GNITS +GNU's +GNV +GPL +GR +Garfinkle +GetSystemTimeAsFileTime +Getline +Getlocaltime +Getopt +GitHub +Grigera +Groucho +GyeoNxTFby +Gzip +HELPLIB +HH +HHMM +HT +HUP +HURD +Haible +Hankerson +Haque +Hartholz +Hasegawa +Hermann +Hitchhiker's +Hoare's +Hurd +Hurray +IA +IFBLK +IFCHR +IFDIR +IFDOOR +IFIFO +IFLNK +IFMT +IFREG +IFSOCK +IGNORECASE +INPLACE +INT +IPv +ISBLK +ISBN +ISCHR +ISLNK +Igawk +Illumos +Incrementing +Inf +Inplace +InstallingGNVPackages +Internetworking +Isamu +Itanium +JCPU +JF +JPG +JVM +Jaegermann +Jeroen +Johansen +Johansen's +KOI +Kahrs +Kai +Kasal +Kenobi +Kernighan +Kernighan's +Korn +Kwityn +Kwok +LARGEFILE +LC +LDFLAGS +LEQ +LF +LGPL +LIBS +LXIX +Langston +LeBlanc +Libmawk +Libtool +Lijewski +Lvalue +MALLOC +MAXLINES +MC +MERCHANTABILITY +MINGW +MIPS +MKS +MMC +MMK +MMS +MP +MPFR +MSC +MSEC +MSG +MSYS +MVX +MW +Makefile +Makefiles +Malka +Malmberg +MathWorld +McIlroy +McPhee +Mecky +Metacharacters +MiXeD +Michal +Microsystems +MinGW +MirBSD +Mlynarik +Mortice +Multiauthor +Multicharacter +Multiscanning +MyState +MyTown +NF +NL +NLS +NNTP +NOCHDIR +NOESCAPE +NOMATCH +NR +NT +NUMCUR +NaN +Nachum +NeXT +NetBSD +Newsreader +Nextfile +Nlines +Nof +Nonalphabetic +Nonconstant +Nondecimal +Nonduplicated +Noninteractive +Nonoption +O'Reilly +ODS +OFMT +OFS +OI +OM +OMF +ORG +ORS +OU +OV +Obi +Od +Oe +Om +Ooops +Op +OpenBSD +OpenSolaris +OpenVMS +Ops +Optarg +Opterr +Optind +Optopt +Oram +Ord +Ou +Oy +PASSWD +PATCHLEVEL +PATHNAME +PCPU +PCSI +PDF +PEBKAC +PNG +POS +POSIX +POSIXLY +PP +PREC +PROCINFO +PVERSION +PW +PWD +Panos +Papadopoulos +Parsers +Passwd +Peifer +PiFormulas +Plauger +Plugin +PostScript +PostgreSQL +Postprocessing +PowerPC +Pr +Pre +Preopened +Prestandard +Printf +Prolog +QSE +QSINGLE +QTawk +Quanstrom +Quicksort +QuikTrim +RANLIB +README +RELICENSING +REVOUT +RLENGTH +RMS +ROUNDMODE +RRI +RSTART +RT +Rakitzis +Ramey +Readdir +Readfile +Readline +Redirections +Redis +Regexp +Regexps +Reimplementing +Revout +RiscOS +Ritchie +Rivka +Rvalue +SA +SAUiRuff +SEEDOT +SHell +SIGHUP +SIGINT +SIGQUIT +SIGUSR +SPARC +SRC +SS +SSC +SSL +STACKSIZE +STAT +STD +STDC +STR +STRCUR +STRNUM +STRUCT +SUBSEP +SVR +SYMTAB +SYS +Schorr +Schreiber +Sed +Sep +Sheehan +Shirokov +Significand +Skywalker +Smalltalk +Smallville +Solaris +Stallman +Stepan +Stewartson's +Strtonum +Subarrays +Sublicensing +SunOS +SylvestersSequence +TABs +TCP +TEXTDOMAIN +TIDYMEM +TODO +TRANslator +TZ +Tcl +Texinfo +Timestamp +Topher +Toporek +Trueman +UC +UDP +UI +UNIXROOT +USR +UTC +UTF +Ubuntu +Ulrich +Ultrix +Unary +Uncomment +Uniq +Uwe +VER +VMS +VT +Vax +Versioning +Vinschen +WIPO +Walamazoo +Wallin +Wasserman +Watchpoint +Wc +Weinberger +Weinberger's +Weisstein +Wfile +Wfoo +WhidbeyNet +Whitespace +Whoope +Wikipedia +Woehlke +Wsource +Wversion +Ww +XCF +XDEV +XP +XXX +XXXX +XYZ +XaXbXcX +Xref +YYYY +Yawitz +Za +Zaphod +Zaretskii +Zcrtdll +Zeichen +Zeichenkette +Zlinker +Zmt +Zomf +Zoulas +Zstack +aB +aCa +aIt +aSAgbfocFVtguG +aaa +aaaabcd +aaccdd +ab +abCDEf +abc +abcca +abcd +abcde +abcdef +abcdefg +abcdefghijklmnopqrstuvwxyz +abcdxyz +abs +abx +ac +acbfoo +acknowledgements +aclocal +addrs +adm +adminprog +aeiouy +ai +aka +aksx +alast +alecthomas +algebrar +algebrarum +aline +aliq +aliquotiens +alloca +allskip +alnum +althour +altweekday +altweeknum +amc +amelia +ampm +andreas +andrew +andrewsumner +andspan +andy +anthony +apache +api +appendixsec +appendixsubsec +appendixsubsubsec +approx +aqb +aqc +ar +arctangent +arg +argc +args +argv +arnold +arr +arraydump +arraymax +arsenio +asc +ascii +asis +asn +asort +asorti +asserturo +asusodin +atan +atexit +atime +atl +austingroupbugs +autoconf +automake +autotools +avahi +aval +avg +awf +awk +awka +awkcard +awkforai +awkgram +awklib +awkp +awkprof +awks +awksed +awkvars +babbly +babery +bable +backreference +backtrace +bak +barney +barrrrr +basedefs +baselineskip +bax +baz +bc +bcd +becky +beebe +beginfile +begpat +behaviour +bellcore +beslab +bf +bfoo +bignum +bigskip +bindtextdomain +binmode +bisonfix +bitwise +blabber +blabbers +blabby +blacky +blat +blech +bletch +blksize +blockdev +blockquote +blocksize +bool +boolean +boundar +br +brabble +brabbles +branchname +breakpoint +brennan +brent +brini +broderick +bt +btl +buening +buf +bufsize +buildable +builtin +busybox +bwk +bwkawk +bycount +bygid +byname +byuid +bz +bzip +cAsE +callback +callbacks +calloc +caltech +camelot +camilla +campanor +campanorum +cardfonts +cartouche +catb +catcode +cb +cbARG +cc +cd +cde +cdot +ce +centerline +cgi +cgit +cgiwrap +ch +changeit +charcount +chardev +charlist +chdir +chem +chet +chien +chmod +chown +chr +cinaP +cinap +cindex +cindexawkfunc +cindexgawkfunc +clast +cld +cline +cmd +cmp +cns +cnswww +cntrl +co +codeNF +codesets +codicib +codicibus +col +colname +colsep +colspec +columnfractions +colwidth +com +comcast +commandline +commen +comp +compat +compdemo +compl +conan +concat +config +configh +const +coprocess +coprocess's +coprocesses +copyediting +copyleft +copyrightable +coreutils +cos +cosmogen +counterintuitive +cozx +cp +cplusplus +cr +cron +csh +cssun +csv +csvil +ctime +cul +curdir +curfile +cwru +cygwin +cyrillic +dCaaCbaaa +daabaaa +danfuzz +dartmouth +datadir +datafile +datafiles +datespec +dave +david +dayname +db +dcgettext +dcngettext +de +deallocations +debuggee +debugger's +decommented +decrement +decrementing +def +del +delarray +delim +delorie +denorm +depcomp +desc +descrip +designator +dest +destructors +detailmenu +dev +devbsize +dfa +dfn +dgawk +dict +diff +diffs +digts +dimensioned +dir +dircategory +direntry +distributable +djgpp +dl +dlload +dlopen +dlsym +dn +docbook +dom +dont +dorking +doug +dpitts +dportein +dps +dresdnerbank +drwxr +dtect +dumparray +duncan +dup +dupword +dvi +dx +ebcdic +eca +edu +eg +egid +egrep +eklye +el +elem +elif +eliz +elled +emalloc +embeddable +emory +emph +emxomfar +en +encodings +enddots +endfile +endgrent +endif +endlesssoftware +endpat +endpwent +enrichening +enum +env +environ +eof +eql +equiv +erealloc +erik +errcode +errno +esac +esp +etre +eu +euid +eval +evenheading +exe +execl +executables +exepack +exitval +exp +expat +expr +ext +extenders +extern +fPIC +fabi +fabius +fakenode +fclose +fcount +fd +fdata +fe +ferror +fffffffffff +fflush +fi +fieldlist +fieldpat +fieldsep +fifo +filedata +filefuncs +filename +filenames +fileno +fileref +filesystem +filesystem's +filesystems +filetype +filll +finalout +findpat +finx +firstname +flac +flist +fmode +fn +fname +fnmatch +fo +foObAr +foo +foo's +foob +foobar +foooo +foooobazbarrrrr +fopen +formatter +formatters +formfeed +fp +fpat +fpath +fprintf +fr +freebsd +freefriends +freq +fs +fsf +fstat +ftrans +fts +ftype +fullyear +func +funcp +funcs +funstuff +fw +fwrite +ga +gai +gatech +gawkapi +gawkextlib +gawkfts +gawkinet +gawklibpath +gawkmisc +gawkpath +gawkrc +gawktexi +gcc +gdb +gdef +ge +gecos +gen +gensub +gerard +getaddrinfo +getegid +geteuid +getgid +getgrent +getgrgid +getgrnam +getgruser +getline +getlocaltime +getopt +getpwent +getpwnam +getpwuid +gettext +gettime +gettimeofday +getuid +gid +gierd +github +gmail +gmo +gmp +gmplib +gmx +gnubin +gnv +goldberg +goodie +goto +gr +grcat +grep +groff +groupawk +groupsbyuser +grp +gst +gsub +gunzip +gvim +gz +gzip +halign +hankedr +hardcoded +hboxes +headitem +helpfull +helplib +hfil +hh +hhob +histsort +hlp +hobbes +hodge +hotmail +hpmuseum +hrule +hrulefill +hspan +htm +html +http +https +hu +hzang +hzuo +iCF +iSKUNK +ibufp +idir +idx +ieee +ietf +ifclear +ifdef +ifdocbook +ifhtml +ifinfo +ifndef +ifnotdocbook +ifnothtml +ifnotinfo +ifnotplaintext +ifnottex +ifnotxml +ifplaintext +ifset +iftex +ifxml +igawk +iggy +ileaf +illumos +imagedata +imageobject +implementers +implementors +inbuf +incrementing +ind +indirectcall +indx +inelegancies +inet +inexactitude +inf +infodir +inforef +informaltable +infusarum +ing +ington +init +inited +initializations +inline +inlinefmt +inlineraw +inmargin +ino +inode +inplace +inputfile +insertcopying +int +intdiv +interline +internl +interprocess +io +iobuf +isarray +isatty +iso +ist +itd +itemx +ith +ival +iw +jawk +jcvx +jeanpa +jeanpaul +jedi +jeroen +jmp +joan +jobtitle +joe +johansen +johnny +joyent +julie +karl +katie +kb +kbd +kilgrona +kmem +kpilot +ksh +labadie +lan +lanceolis +lang +lawyering +lc +ld +ldquo +le +lefthand +len +leq +lex +lf +lflashlight +lgcc +lgpl +lhs +li +libexec +libexecdir +libintl +libmawk +libtool +licensors +lineannotation +lineno +linespace +linkcolor +linkend +linksize +linkval +lintwarn +linux +listsize +literallayout +localhost +locutus +loopcheck +lordchr +lp +lshift +lstat +lt +ltarget +ltmain +lu +lvalue +lvalues +lwall +lwc +madronabluff +maintainer's +makeinfo +malloc +malloced +mandir +matcher +matchers +matchit +mathcs +mathworld +mawk +maxelt +maxsub +mbfw +mbprintf +mediaobject +mem +memcpy +memset +metacharacter +metacharacters +metaflac +metasyntactic +mey +min +mingw +miriam +misc +mit +mk +mkdir +mkinstalldirs +mktime +mmk +mms +mo +mon +monthday +monthname +moore +mortoneccc +mpfr +msg +msgfmt +msgid +msgstr +mtime +mtrace +multiFOO +multibyte +multicharacter +multiflag +multiline +multispan +multitable +multitranslation +murphy +mv +mydata +myfile +myfileaa +myfileab +myfiles +myfunc +myprint +myprog +mystrtonum +mysub +nInfo +nLINE +nOUCH +nameend +namespace +namespaces +namest +nan +nanosleep +naptime +nargs +nawk +nboxes +nbsp +nc +ncustomers +nd +ndash +ndevicesim +ndirs +ne +netbsd +netlabs +netlib +newdata +newdir +newgawk +newsxfer +nexgo +nextfile +nexti +nf +nfields +ni +nline +nlink +nls +nmatches +nmemb +nmsu +nnn +noalign +noassign +nogroup +noindent +nologin +nonalphabetic +nonalphanumeric +nonblank +nonchangeable +noncommercially +nonconstant +nondecimal +nonformat +nonhexadecimal +nonintegral +noninteractive +noninteractively +nonmatching +nonnegative +nonnumeric +nonobvious +nonoption +nonoverlapping +nonportable +nonprintable +nonprinting +nonproduction +nonquoted +nonrectangular +nonrepeated +nonspecial +nonwhitespace +noone +nr +nroff +nul +num +nums +nusers +nvalue +nwords +ny +nyah +nyu +obaCLDUX +obufp +oct +octuple +oddheading +ofB +offinterlineskip +ok +olddol +oldfilename +oldfs +oldrs +omment +onetrueawk +onlinepubs +oo +op +opcodes +openbsd +opengroup +ops +optarg +opterr +opti +optind +optitle +optopt +ord +ordchr +org +orig +orspan +os +otiens +ourfile +ourne +outbuf +outfile +outname +outputfile +overfulls +pactechdata +panos +para +param +parameterized +parsedebug +parser's +parsers +passwd +passwdawk +pathlist +pathname +pathnames +pathto +patsplit +pawk +pc +pdf +pdksh +pdq +peifer +perl +perscr +perscrutabor +pgawk +pgr +pgrpid +ph +phhhhhhhhhhhhhhooey +phore +php +phph +phphph +pic +pid +pival +plugin +pm +pmode +png +po +podge +portably +posix +postfix +postincrement +pp +ppid +pr +pre +prec +precedences +precisions +prefaceinfo +preformatted +preopened +prepend +prepended +prepending +prepends +prepinfo +preprocessor +prev +princeton +printf +printindex +printpage +priori +proc +processarray +profiler +prog +progfile +pseudorandom +psl +psx +pt +ptr +pty +ptys +pud +punct +putchar +pw +pwcat +pwd +pxref +qb +qc +qquad +qse +qsl +qsort +quanstro +quicksort +quiktrim +rab +radians +raincloud +raison +ramey +rand +randint +rankin +rdev +rdquo +reada +readdir +readfile +readline +realloc +recomputation +reddit +redir +redirections +reenable +regcomp +regex +regexec +regexp +regexps +reimplementing +relationals +relicensing +reparsed +repl +repo +representable +resplit +ret +retargetable +retitle +retval +revoutput +revtwoway +rfc +rflashlight +righthand +rm +rms +ro +roundTiesToAway +roundTiesToEven +roundTowardNegative +roundTowardPositive +roundTowardZero +rowsep +rpath +rshift +rsort +rt +ru +runnable +runtime +rvalues +rw +rwarray +rwxr +sam +samp +samuel +sar +savannah +sbcglobal +sbin +sbuf +sc +scl +scm +scottd +sdot +searchlist +sed +sep +seps +setchapternewpage +setenv +setfilename +settitle +sf +shar +shellquote +shortdayname +shorthands +shortmonth +shorttitlepage +showargs +shu +si +signedness +significand +sim +sizeof +skeeve +skynet +slrn +smallbook +smallexample +smallskip +smtp +snmp +snobol +solaris +sophie +sortcom +sourceforge +sp +spanname +spanspec +spawnl +sprintf +sprintlink +sq +sqQ +sqrt +srand +src +ssize +stackptr +standalone +stat +statdata +statfunc +stdbuf +stddef +stderr +stdin +stdlib +stdout +stepi +str +stranslate +strcmp +strcoll +strcpy +strerror +strftime +strlen +strnum +strtod +strtonum +struct +subarray +subarrays +subdirectories +subdirectory +subexpression +subexpressions +sublicense +sublicenses +subscripting +substr +substring +substrings +subsubsection +subunit +sudo +summarycontents +superset +svil +sylogin +sym +symlink +syncodeindex +synindex +sys +syshlp +systime +t'noD +t'nod +tAHPQ +tARGV +tabor +tarball +tarballs +tbody +tbreak +tchars +tcount +tcp +tcpip +tcsh +tdata +teardown +tegrep +tempfile +testarray +testbits +testdir +testext +testff +tew +tex +texi +texindex +texinfo +textdomain +tgroup +th +thead +thes +thischapter +thisopt +thispage +thrudvang +timestamp +timestamps +titlepage +tlines +tm +tmp +tmy +tolower +toupper +tr +traceback +tracy +transfile +troff +trunc +tst +ttotal +tty +ttyD +ttyV +ttyp +ttyq +ttyv +tvpeople +twords +txt +typedef +typeof +tyw +ucb +udc +udp +uid +ulink +umask +umb +umich +un +unary +uncommented +undef +undevicesimus +undisplay +unduplicated +unformatted +unhandled +unicode +uniq +unistd +unix +unnumberedsec +unnumberedsubsec +unparenthesized +unredirected +unsetting +unspecialize +untyped +unwatch +unwritable +uref +urefurlonlylinktrue +urgen +url +urlcolor +usebracesinindexestrue +usenet +username +usernames +usleep +usr +utah +utc +utf +utils +vF +val +validlab +valrep +valtype +var +variadic +vbox +vc +vec +versa +vglue +vio +vms +vmsbuild +vr +vrule +vskip +waitpid +walkarray +washington +wass +watchpoint +watchpoints +wb +wc +wcscoll +webmail +weeknum +wget +wh +whhhhhy +whhhhy +whhhy +whhy +whidbey +whitespace +whizprog +wiki +wikipedia +wildcard +wildcards +wlv +wnewmail +wordfreq +wr +writea +www +wy +xA +xDEADBEEF +xDeadBeef +xFOO +xX +xaa +xab +xalloc +xbd +xdeadBEEF +xdigit +xfcc +xfcd +xgawk +xgettext +xnrkb +xor +xorspan +xp +xpg +xpzvf +xr +xrat +xref +xrefprintnodename +xvpf +xvpzf +xxAA +xxBxx +xxx +xyz +xyzzy +xz +yabber +yacc +yballs +yearday +ylwrap +yourprog +yxaay +zA +zbcom +zerofile +zodiacusque +zsh +zzz +zzzzzz diff --git a/eval.c b/eval.c index dfb99a4..36dab2f 100644 --- a/eval.c +++ b/eval.c @@ -3,7 +3,7 @@ */ /* - * Copyright (C) 1986, 1988, 1989, 1991-2015 the Free Software Foundation, Inc. + * Copyright (C) 1986, 1988, 1989, 1991-2016 the Free Software Foundation, Inc. * * This file is part of GAWK, the GNU implementation of the * AWK Programming Language. @@ -122,7 +122,7 @@ char casetable[] = { C('\360'), C('\361'), C('\362'), C('\363'), C('\364'), C('\365'), C('\366'), C('\367'), C('\370'), C('\371'), C('\372'), C('\373'), C('\374'), C('\375'), C('\376'), C('\377'), }; -#elif 'a' == 0x81 /* it's EBCDIC */ +#elif defined(USE_EBCDIC) char casetable[] = { /*00 NU SH SX EX PF HT LC DL */ 0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, @@ -215,11 +215,13 @@ load_casetable(void) if (cp == NULL || strcmp(cp, "C") == 0 || strcmp(cp, "POSIX") == 0) return; -#ifndef ZOS_USS +#ifndef USE_EBCDIC /* use of isalpha is ok here (see is_alpha in awkgram.y) */ for (i = 0200; i <= 0377; i++) { if (isalpha(i) && islower(i) && i != toupper(i)) casetable[i] = toupper(i); + else + casetable[i] = i; } #endif #endif @@ -949,6 +951,10 @@ set_LINT() int old_lint = do_lint; NODE *n = LINT_node->var_value; + /* start with clean defaults */ + lintfunc = r_warning; + do_flags &= ~(DO_LINT_ALL|DO_LINT_INVALID); + if ((n->flags & (STRING|STRCUR)) != 0) { if ((n->flags & MAYBE_NUM) == 0) { const char *lintval; @@ -958,38 +964,24 @@ set_LINT() lintval = n->stptr; lintlen = n->stlen; if (lintlen > 0) { - do_flags |= DO_LINT_ALL; - if (lintlen == 5 && strncmp(lintval, "fatal", 5) == 0) - lintfunc = r_fatal; - else if (lintlen == 7 && strncmp(lintval, "invalid", 7) == 0) { - do_flags &= ~ DO_LINT_ALL; + if (lintlen == 7 && strncmp(lintval, "invalid", 7) == 0) do_flags |= DO_LINT_INVALID; - } else - lintfunc = warning; - } else { - do_flags &= ~(DO_LINT_ALL|DO_LINT_INVALID); - lintfunc = warning; + else { + do_flags |= DO_LINT_ALL; + if (lintlen == 5 && strncmp(lintval, "fatal", 5) == 0) + lintfunc = r_fatal; + } } } else { (void) force_number(n); if (! iszero(n)) do_flags |= DO_LINT_ALL; - else - do_flags &= ~(DO_LINT_ALL|DO_LINT_INVALID); - lintfunc = warning; } } else if ((n->flags & (NUMCUR|NUMBER)) != 0) { (void) force_number(n); if (! iszero(n)) do_flags |= DO_LINT_ALL; - else - do_flags &= ~(DO_LINT_ALL|DO_LINT_INVALID); - lintfunc = warning; - } else - do_flags &= ~(DO_LINT_ALL|DO_LINT_INVALID); /* shouldn't happen */ - - if (! do_lint) - lintfunc = warning; + } /* explicitly use warning() here, in case lintfunc == r_fatal */ if (old_lint != do_lint && old_lint && ! do_lint) @@ -1154,7 +1146,7 @@ r_get_lhs(NODE *n, bool reference) array_vname(n)); if (n->orig_array->type != Node_var) { n->orig_array->type = Node_var; - n->orig_array->var_value = Nnull_string; + n->orig_array->var_value = dupnode(Nnull_string); } /* fall through */ case Node_var_new: diff --git a/ext.c b/ext.c index cf81367..45f1e6d 100644 --- a/ext.c +++ b/ext.c @@ -7,7 +7,8 @@ */ /* - * Copyright (C) 1995 - 2001, 2003-2014 the Free Software Foundation, Inc. + * Copyright (C) 1995 - 2001, 2003-2014, 2016, + * the Free Software Foundation, Inc. * * This file is part of GAWK, the GNU implementation of the * AWK Programming Language. @@ -330,32 +331,18 @@ get_argument(int i) /* * get_actual_argument --- get the i'th scalar or array argument of a - * dynamically linked function, allowed to be optional. + * dynamically linked function. */ NODE * -get_actual_argument(int i, bool optional, bool want_array) +get_actual_argument(NODE *t, int i, bool want_array) { - NODE *t; char *fname; - int pcount; INSTRUCTION *pc; pc = TOP()->code_ptr; /* Op_ext_builtin instruction */ fname = (pc + 1)->func_name; - pcount = (pc + 1)->expr_count; - t = get_argument(i); - if (t == NULL) { - if (i >= pcount) /* must be fatal */ - fatal(_("function `%s' defined to take no more than %d argument(s)"), - fname, pcount); - if (! optional) - fatal(_("function `%s': missing argument #%d"), - fname, i + 1); - return NULL; - } - if (t->type == Node_var_new) { if (want_array) return force_array(t, false); diff --git a/extension/ChangeLog b/extension/ChangeLog index 1539ed9..f8d1517 100644 --- a/extension/ChangeLog +++ b/extension/ChangeLog @@ -1,3 +1,78 @@ +2016-08-25 Arnold D. Robbins + + * 4.1.4: Release tar ball made. + +2016-07-01 Arnold D. Robbins + + * inplace.c (do_inplace_begin): Flush stdout at the start to + try to avoid flushing problems on some obscure BSD systems. + * revtwoway.c (gawk_getdtablesize): Renamed from getdtablesize. + (getdtablesize): New macro. Avoids problems on FreeBSD 10 + where configure didn't work correctly. Thanks to Nelson Beebe. + Update copyright year. + +2016-01-27 Arnold D. Robbins + + * filefuncs.c (do_statvfs): Define out f_fsid on AIX. + +2016-01-20 Arnold D. Robbins + + * filefuncs.c: Add statvfs function. Undocumented for now. + * configure.ac: Add appropriate stuff to check for statvfs. + * configure, configh.in: Regenerated. + +2015-12-16 Arnold D. Robbins + + * Makefile.am (EXTRA_DIST): Add ext_custom.h so that it will be + included in the distribution tarballs. + +2015-12-16 Arnold D. Robbins + + Make change of 2015-10-26 actually work. + + * ext_custom.h: New file. Move _DEFAULT_SOURCE dance to here. + * configure.ac: Add call to AH_BOTTOM. + * configure: Regenerate. + +2015-11-15 Ville Skytta + + * fnmatch.3am, fork.3am, inplace.3am, ordchr.3am, readdir.3am, + readfile.3am, revoutput.3am, revtwoway.3am, rwarray.3am, + time.3am: Fix troff markup to avoid warnings. + +2015-10-26 Arnold D. Robbins + + * config.h.in: Turn on _DEFAULT_SOURCE for very recent + GLIBC. Thanks to Michal Jaegermann + for the report. + +2015-08-28 Daniel Richard G. + + * rwarray.c: Removed z/OS-specific code that is no longer needed due + to improvements in Gawk's general Autotools support. + * Makefile.am, configure.ac: Make use of the AC_ZOS_USS macro so + that this sub-project can support that platform as well. + * gawkfts.h, readdir.c: Use a proper platform cpp symbol to guard + z/OS-specific code, and eliminate the z/OS-specific use of "long" + inode numbers as "long long" works perfectly well there. + +2015-08-02 Arnold D. Robbins + + * revoutput.c (init_revoutput): Don't install REVOUT if it's + there already. Makes the extension usable with -v. + * revoutput.3am: Add a BUGS section. + +2015-06-17 Andrew J. Schorr + + * inplace.3am (BUGS): Document that ACLs are not preserved, and + a temporary file may be left behind if the program is killed by + a signal. + +2015-06-17 Andrew J. Schorr + + * inplace.3am: Document new inplace variable to control whether + inplace editing is active. + 2015-05-19 Arnold D. Robbins * 4.1.3: Release tar ball made. diff --git a/extension/Makefile.am b/extension/Makefile.am index 92f5637..de0513b 100644 --- a/extension/Makefile.am +++ b/extension/Makefile.am @@ -27,7 +27,7 @@ AM_CPPFLAGS = -I$(srcdir)/.. # This variable insures that aclocal runs # correctly after changing configure.ac -ACLOCAL_AMFLAGS = -I m4 +ACLOCAL_AMFLAGS = -I m4 -I ../m4 # For some make's, e.g. OpenBSD, that don't define this RM = rm -f @@ -118,6 +118,7 @@ uninstall-recursive: uninstall-so EXTRA_DIST = build-aux/config.rpath \ ChangeLog \ ChangeLog.0 \ + ext_custom.h \ fts.3 \ README.fts \ rwarray0.c diff --git a/extension/Makefile.in b/extension/Makefile.in index 4c14836..629c5e6 100644 --- a/extension/Makefile.in +++ b/extension/Makefile.in @@ -113,10 +113,11 @@ build_triplet = @build@ host_triplet = @host@ subdir = . ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 -am__aclocal_m4_deps = $(top_srcdir)/m4/dirfd.m4 \ - $(top_srcdir)/m4/libtool.m4 $(top_srcdir)/m4/ltoptions.m4 \ - $(top_srcdir)/m4/ltsugar.m4 $(top_srcdir)/m4/ltversion.m4 \ - $(top_srcdir)/m4/lt~obsolete.m4 $(top_srcdir)/configure.ac +am__aclocal_m4_deps = $(top_srcdir)/../m4/arch.m4 \ + $(top_srcdir)/m4/dirfd.m4 $(top_srcdir)/m4/libtool.m4 \ + $(top_srcdir)/m4/ltoptions.m4 $(top_srcdir)/m4/ltsugar.m4 \ + $(top_srcdir)/m4/ltversion.m4 $(top_srcdir)/m4/lt~obsolete.m4 \ + $(top_srcdir)/configure.ac am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ $(ACLOCAL_M4) DIST_COMMON = $(srcdir)/Makefile.am $(top_srcdir)/configure \ @@ -499,7 +500,7 @@ AM_CPPFLAGS = -I$(srcdir)/.. # This variable insures that aclocal runs # correctly after changing configure.ac -ACLOCAL_AMFLAGS = -I m4 +ACLOCAL_AMFLAGS = -I m4 -I ../m4 # For some make's, e.g. OpenBSD, that don't define this RM = rm -f @@ -563,6 +564,7 @@ testext_la_LIBADD = $(MY_LIBS) EXTRA_DIST = build-aux/config.rpath \ ChangeLog \ ChangeLog.0 \ + ext_custom.h \ fts.3 \ README.fts \ rwarray0.c diff --git a/extension/aclocal.m4 b/extension/aclocal.m4 index d2e755e..5665d48 100644 --- a/extension/aclocal.m4 +++ b/extension/aclocal.m4 @@ -1210,6 +1210,7 @@ AC_SUBST([am__tar]) AC_SUBST([am__untar]) ]) # _AM_PROG_TAR +m4_include([../m4/arch.m4]) m4_include([m4/dirfd.m4]) m4_include([m4/libtool.m4]) m4_include([m4/ltoptions.m4]) diff --git a/extension/build-aux/ChangeLog b/extension/build-aux/ChangeLog index a97f468..b6e8cc1 100644 --- a/extension/build-aux/ChangeLog +++ b/extension/build-aux/ChangeLog @@ -1,3 +1,28 @@ +2016-08-25 Arnold D. Robbins + + * 4.1.4: Release tar ball made. + +2016-07-18 Arnold D. Robbins + + * config.sub: Update from GNULIB. Again. + +2016-06-15 Arnold D. Robbins + + * config.sub: Update from GNULIB. + +2016-06-10 Arnold D. Robbins + + * config.guess, config.sub: Get latest from Gnulib master. + +2016-02-23 Arnold D. Robbins + + * config.guess, config.rpath, config.sub: Update to latest + from GNULIB. + +2015-09-25 Arnold D. Robbins + + * config.guess, config.sub, config.rpath: Updated. + 2015-05-19 Arnold D. Robbins * 4.1.3: Release tar ball made. diff --git a/extension/build-aux/config.guess b/extension/build-aux/config.guess index dbfb978..c4bd827 100755 --- a/extension/build-aux/config.guess +++ b/extension/build-aux/config.guess @@ -1,8 +1,8 @@ #! /bin/sh # Attempt to guess a canonical system name. -# Copyright 1992-2015 Free Software Foundation, Inc. +# Copyright 1992-2016 Free Software Foundation, Inc. -timestamp='2015-01-01' +timestamp='2016-05-15' # 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 @@ -27,7 +27,7 @@ timestamp='2015-01-01' # Originally written by Per Bothner; maintained since 2000 by Ben Elliston. # # You can get the latest version of this script from: -# http://git.savannah.gnu.org/gitweb/?p=config.git;a=blob_plain;f=config.guess;hb=HEAD +# http://git.savannah.gnu.org/gitweb/?p=config.git;a=blob_plain;f=config.guess # # Please send patches to . @@ -50,7 +50,7 @@ version="\ GNU config.guess ($timestamp) Originally written by Per Bothner. -Copyright 1992-2015 Free Software Foundation, Inc. +Copyright 1992-2016 Free Software Foundation, Inc. This is free software; see the source for copying conditions. There is NO warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE." @@ -168,19 +168,29 @@ case "${UNAME_MACHINE}:${UNAME_SYSTEM}:${UNAME_RELEASE}:${UNAME_VERSION}" in # Note: NetBSD doesn't particularly care about the vendor # portion of the name. We always set it to "unknown". sysctl="sysctl -n hw.machine_arch" - UNAME_MACHINE_ARCH=`(/sbin/$sysctl 2>/dev/null || \ - /usr/sbin/$sysctl 2>/dev/null || echo unknown)` + UNAME_MACHINE_ARCH=`(uname -p 2>/dev/null || \ + /sbin/$sysctl 2>/dev/null || \ + /usr/sbin/$sysctl 2>/dev/null || \ + echo unknown)` case "${UNAME_MACHINE_ARCH}" in armeb) machine=armeb-unknown ;; arm*) machine=arm-unknown ;; sh3el) machine=shl-unknown ;; sh3eb) machine=sh-unknown ;; sh5el) machine=sh5le-unknown ;; + earmv*) + arch=`echo ${UNAME_MACHINE_ARCH} | sed -e 's,^e\(armv[0-9]\).*$,\1,'` + endian=`echo ${UNAME_MACHINE_ARCH} | sed -ne 's,^.*\(eb\)$,\1,p'` + machine=${arch}${endian}-unknown + ;; *) machine=${UNAME_MACHINE_ARCH}-unknown ;; esac # The Operating System including object format, if it has switched - # to ELF recently, or will in the future. + # to ELF recently (or will in the future) and ABI. case "${UNAME_MACHINE_ARCH}" in + earm*) + os=netbsdelf + ;; arm*|i386|m68k|ns32k|sh3*|sparc|vax) eval $set_cc_for_build if echo __ELF__ | $CC_FOR_BUILD -E - 2>/dev/null \ @@ -197,6 +207,13 @@ case "${UNAME_MACHINE}:${UNAME_SYSTEM}:${UNAME_RELEASE}:${UNAME_VERSION}" in os=netbsd ;; esac + # Determine ABI tags. + case "${UNAME_MACHINE_ARCH}" in + earm*) + expr='s/^earmv[0-9]/-eabi/;s/eb$//' + abi=`echo ${UNAME_MACHINE_ARCH} | sed -e "$expr"` + ;; + esac # The OS release # Debian GNU/NetBSD machines have a different userland, and # thus, need a distinct triplet. However, they do not need @@ -207,13 +224,13 @@ case "${UNAME_MACHINE}:${UNAME_SYSTEM}:${UNAME_RELEASE}:${UNAME_VERSION}" in release='-gnu' ;; *) - release=`echo ${UNAME_RELEASE}|sed -e 's/[-_].*/\./'` + release=`echo ${UNAME_RELEASE} | sed -e 's/[-_].*//' | cut -d. -f1,2` ;; esac # Since CPU_TYPE-MANUFACTURER-KERNEL-OPERATING_SYSTEM: # contains redundant information, the shorter form: # CPU_TYPE-MANUFACTURER-OPERATING_SYSTEM is used. - echo "${machine}-${os}${release}" + echo "${machine}-${os}${release}${abi}" exit ;; *:Bitrig:*:*) UNAME_MACHINE_ARCH=`arch | sed 's/Bitrig.//'` @@ -223,6 +240,10 @@ case "${UNAME_MACHINE}:${UNAME_SYSTEM}:${UNAME_RELEASE}:${UNAME_VERSION}" in UNAME_MACHINE_ARCH=`arch | sed 's/OpenBSD.//'` echo ${UNAME_MACHINE_ARCH}-unknown-openbsd${UNAME_RELEASE} exit ;; + *:LibertyBSD:*:*) + UNAME_MACHINE_ARCH=`arch | sed 's/^.*BSD\.//'` + echo ${UNAME_MACHINE_ARCH}-unknown-libertybsd${UNAME_RELEASE} + exit ;; *:ekkoBSD:*:*) echo ${UNAME_MACHINE}-unknown-ekkobsd${UNAME_RELEASE} exit ;; @@ -235,6 +256,9 @@ case "${UNAME_MACHINE}:${UNAME_SYSTEM}:${UNAME_RELEASE}:${UNAME_VERSION}" in *:MirBSD:*:*) echo ${UNAME_MACHINE}-unknown-mirbsd${UNAME_RELEASE} exit ;; + *:Sortix:*:*) + echo ${UNAME_MACHINE}-unknown-sortix + exit ;; alpha:OSF1:*:*) case $UNAME_RELEASE in *4.0) @@ -251,42 +275,42 @@ case "${UNAME_MACHINE}:${UNAME_SYSTEM}:${UNAME_RELEASE}:${UNAME_VERSION}" in ALPHA_CPU_TYPE=`/usr/sbin/psrinfo -v | sed -n -e 's/^ The alpha \(.*\) processor.*$/\1/p' | head -n 1` case "$ALPHA_CPU_TYPE" in "EV4 (21064)") - UNAME_MACHINE="alpha" ;; + UNAME_MACHINE=alpha ;; "EV4.5 (21064)") - UNAME_MACHINE="alpha" ;; + UNAME_MACHINE=alpha ;; "LCA4 (21066/21068)") - UNAME_MACHINE="alpha" ;; + UNAME_MACHINE=alpha ;; "EV5 (21164)") - UNAME_MACHINE="alphaev5" ;; + UNAME_MACHINE=alphaev5 ;; "EV5.6 (21164A)") - UNAME_MACHINE="alphaev56" ;; + UNAME_MACHINE=alphaev56 ;; "EV5.6 (21164PC)") - UNAME_MACHINE="alphapca56" ;; + UNAME_MACHINE=alphapca56 ;; "EV5.7 (21164PC)") - UNAME_MACHINE="alphapca57" ;; + UNAME_MACHINE=alphapca57 ;; "EV6 (21264)") - UNAME_MACHINE="alphaev6" ;; + UNAME_MACHINE=alphaev6 ;; "EV6.7 (21264A)") - UNAME_MACHINE="alphaev67" ;; + UNAME_MACHINE=alphaev67 ;; "EV6.8CB (21264C)") - UNAME_MACHINE="alphaev68" ;; + UNAME_MACHINE=alphaev68 ;; "EV6.8AL (21264B)") - UNAME_MACHINE="alphaev68" ;; + UNAME_MACHINE=alphaev68 ;; "EV6.8CX (21264D)") - UNAME_MACHINE="alphaev68" ;; + UNAME_MACHINE=alphaev68 ;; "EV6.9A (21264/EV69A)") - UNAME_MACHINE="alphaev69" ;; + UNAME_MACHINE=alphaev69 ;; "EV7 (21364)") - UNAME_MACHINE="alphaev7" ;; + UNAME_MACHINE=alphaev7 ;; "EV7.9 (21364A)") - UNAME_MACHINE="alphaev79" ;; + UNAME_MACHINE=alphaev79 ;; esac # A Pn.n version is a patched version. # A Vn.n version is a released version. # A Tn.n version is a released field test version. # A Xn.n version is an unreleased experimental baselevel. # 1.2 uses "1.2" for uname -r. - echo ${UNAME_MACHINE}-dec-osf`echo ${UNAME_RELEASE} | sed -e 's/^[PVTX]//' | tr 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz'` + echo ${UNAME_MACHINE}-dec-osf`echo ${UNAME_RELEASE} | sed -e 's/^[PVTX]//' | tr ABCDEFGHIJKLMNOPQRSTUVWXYZ abcdefghijklmnopqrstuvwxyz` # Reset EXIT trap before exiting to avoid spurious non-zero exit code. exitcode=$? trap '' 0 @@ -359,16 +383,16 @@ case "${UNAME_MACHINE}:${UNAME_SYSTEM}:${UNAME_RELEASE}:${UNAME_VERSION}" in exit ;; i86pc:SunOS:5.*:* | i86xen:SunOS:5.*:*) eval $set_cc_for_build - SUN_ARCH="i386" + SUN_ARCH=i386 # If there is a compiler, see if it is configured for 64-bit objects. # Note that the Sun cc does not turn __LP64__ into 1 like gcc does. # This test works for both compilers. - if [ "$CC_FOR_BUILD" != 'no_compiler_found' ]; then + if [ "$CC_FOR_BUILD" != no_compiler_found ]; then if (echo '#ifdef __amd64'; echo IS_64BIT_ARCH; echo '#endif') | \ - (CCOPTS= $CC_FOR_BUILD -E - 2>/dev/null) | \ + (CCOPTS="" $CC_FOR_BUILD -E - 2>/dev/null) | \ grep IS_64BIT_ARCH >/dev/null then - SUN_ARCH="x86_64" + SUN_ARCH=x86_64 fi fi echo ${SUN_ARCH}-pc-solaris2`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'` @@ -393,7 +417,7 @@ case "${UNAME_MACHINE}:${UNAME_SYSTEM}:${UNAME_RELEASE}:${UNAME_VERSION}" in exit ;; sun*:*:4.2BSD:*) UNAME_RELEASE=`(sed 1q /etc/motd | awk '{print substr($5,1,3)}') 2>/dev/null` - test "x${UNAME_RELEASE}" = "x" && UNAME_RELEASE=3 + test "x${UNAME_RELEASE}" = x && UNAME_RELEASE=3 case "`/bin/arch`" in sun3) echo m68k-sun-sunos${UNAME_RELEASE} @@ -618,13 +642,13 @@ EOF sc_cpu_version=`/usr/bin/getconf SC_CPU_VERSION 2>/dev/null` sc_kernel_bits=`/usr/bin/getconf SC_KERNEL_BITS 2>/dev/null` case "${sc_cpu_version}" in - 523) HP_ARCH="hppa1.0" ;; # CPU_PA_RISC1_0 - 528) HP_ARCH="hppa1.1" ;; # CPU_PA_RISC1_1 + 523) HP_ARCH=hppa1.0 ;; # CPU_PA_RISC1_0 + 528) HP_ARCH=hppa1.1 ;; # CPU_PA_RISC1_1 532) # CPU_PA_RISC2_0 case "${sc_kernel_bits}" in - 32) HP_ARCH="hppa2.0n" ;; - 64) HP_ARCH="hppa2.0w" ;; - '') HP_ARCH="hppa2.0" ;; # HP-UX 10.20 + 32) HP_ARCH=hppa2.0n ;; + 64) HP_ARCH=hppa2.0w ;; + '') HP_ARCH=hppa2.0 ;; # HP-UX 10.20 esac ;; esac fi @@ -663,11 +687,11 @@ EOF exit (0); } EOF - (CCOPTS= $CC_FOR_BUILD -o $dummy $dummy.c 2>/dev/null) && HP_ARCH=`$dummy` + (CCOPTS="" $CC_FOR_BUILD -o $dummy $dummy.c 2>/dev/null) && HP_ARCH=`$dummy` test -z "$HP_ARCH" && HP_ARCH=hppa fi ;; esac - if [ ${HP_ARCH} = "hppa2.0w" ] + if [ ${HP_ARCH} = hppa2.0w ] then eval $set_cc_for_build @@ -680,12 +704,12 @@ EOF # $ CC_FOR_BUILD="cc +DA2.0w" ./config.guess # => hppa64-hp-hpux11.23 - if echo __LP64__ | (CCOPTS= $CC_FOR_BUILD -E - 2>/dev/null) | + if echo __LP64__ | (CCOPTS="" $CC_FOR_BUILD -E - 2>/dev/null) | grep -q __LP64__ then - HP_ARCH="hppa2.0w" + HP_ARCH=hppa2.0w else - HP_ARCH="hppa64" + HP_ARCH=hppa64 fi fi echo ${HP_ARCH}-hp-hpux${HPUX_REV} @@ -790,14 +814,14 @@ EOF echo craynv-cray-unicosmp${UNAME_RELEASE} | sed -e 's/\.[^.]*$/.X/' exit ;; F30[01]:UNIX_System_V:*:* | F700:UNIX_System_V:*:*) - FUJITSU_PROC=`uname -m | tr 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz'` - FUJITSU_SYS=`uname -p | tr 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz' | sed -e 's/\///'` + FUJITSU_PROC=`uname -m | tr ABCDEFGHIJKLMNOPQRSTUVWXYZ abcdefghijklmnopqrstuvwxyz` + FUJITSU_SYS=`uname -p | tr ABCDEFGHIJKLMNOPQRSTUVWXYZ abcdefghijklmnopqrstuvwxyz | sed -e 's/\///'` FUJITSU_REL=`echo ${UNAME_RELEASE} | sed -e 's/ /_/'` echo "${FUJITSU_PROC}-fujitsu-${FUJITSU_SYS}${FUJITSU_REL}" exit ;; 5000:UNIX_System_V:4.*:*) - FUJITSU_SYS=`uname -p | tr 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz' | sed -e 's/\///'` - FUJITSU_REL=`echo ${UNAME_RELEASE} | tr 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz' | sed -e 's/ /_/'` + FUJITSU_SYS=`uname -p | tr ABCDEFGHIJKLMNOPQRSTUVWXYZ abcdefghijklmnopqrstuvwxyz | sed -e 's/\///'` + FUJITSU_REL=`echo ${UNAME_RELEASE} | tr ABCDEFGHIJKLMNOPQRSTUVWXYZ abcdefghijklmnopqrstuvwxyz | sed -e 's/ /_/'` echo "sparc-fujitsu-${FUJITSU_SYS}${FUJITSU_REL}" exit ;; i*86:BSD/386:*:* | i*86:BSD/OS:*:* | *:Ascend\ Embedded/OS:*:*) @@ -879,7 +903,7 @@ EOF exit ;; *:GNU/*:*:*) # other systems with GNU libc and userland - echo ${UNAME_MACHINE}-unknown-`echo ${UNAME_SYSTEM} | sed 's,^[^/]*/,,' | tr '[A-Z]' '[a-z]'``echo ${UNAME_RELEASE}|sed -e 's/[-(].*//'`-${LIBC} + echo ${UNAME_MACHINE}-unknown-`echo ${UNAME_SYSTEM} | sed 's,^[^/]*/,,' | tr "[:upper:]" "[:lower:]"``echo ${UNAME_RELEASE}|sed -e 's/[-(].*//'`-${LIBC} exit ;; i*86:Minix:*:*) echo ${UNAME_MACHINE}-pc-minix @@ -902,7 +926,7 @@ EOF EV68*) UNAME_MACHINE=alphaev68 ;; esac objdump --private-headers /bin/sh | grep -q ld.so.1 - if test "$?" = 0 ; then LIBC="gnulibc1" ; fi + if test "$?" = 0 ; then LIBC=gnulibc1 ; fi echo ${UNAME_MACHINE}-unknown-linux-${LIBC} exit ;; arc:Linux:*:* | arceb:Linux:*:*) @@ -933,6 +957,9 @@ EOF crisv32:Linux:*:*) echo ${UNAME_MACHINE}-axis-linux-${LIBC} exit ;; + e2k:Linux:*:*) + echo ${UNAME_MACHINE}-unknown-linux-${LIBC} + exit ;; frv:Linux:*:*) echo ${UNAME_MACHINE}-unknown-linux-${LIBC} exit ;; @@ -945,6 +972,9 @@ EOF ia64:Linux:*:*) echo ${UNAME_MACHINE}-unknown-linux-${LIBC} exit ;; + k1om:Linux:*:*) + echo ${UNAME_MACHINE}-unknown-linux-${LIBC} + exit ;; m32r*:Linux:*:*) echo ${UNAME_MACHINE}-unknown-linux-${LIBC} exit ;; @@ -1021,7 +1051,7 @@ EOF echo ${UNAME_MACHINE}-dec-linux-${LIBC} exit ;; x86_64:Linux:*:*) - echo ${UNAME_MACHINE}-unknown-linux-${LIBC} + echo ${UNAME_MACHINE}-pc-linux-${LIBC} exit ;; xtensa*:Linux:*:*) echo ${UNAME_MACHINE}-unknown-linux-${LIBC} @@ -1100,7 +1130,7 @@ EOF # uname -m prints for DJGPP always 'pc', but it prints nothing about # the processor, so we play safe by assuming i586. # Note: whatever this is, it MUST be the same as what config.sub - # prints for the "djgpp" host, or else GDB configury will decide that + # prints for the "djgpp" host, or else GDB configure will decide that # this is a cross-build. echo i586-pc-msdosdjgpp exit ;; @@ -1249,6 +1279,9 @@ EOF SX-8R:SUPER-UX:*:*) echo sx8r-nec-superux${UNAME_RELEASE} exit ;; + SX-ACE:SUPER-UX:*:*) + echo sxace-nec-superux${UNAME_RELEASE} + exit ;; Power*:Rhapsody:*:*) echo powerpc-apple-rhapsody${UNAME_RELEASE} exit ;; @@ -1262,9 +1295,9 @@ EOF UNAME_PROCESSOR=powerpc fi if test `echo "$UNAME_RELEASE" | sed -e 's/\..*//'` -le 10 ; then - if [ "$CC_FOR_BUILD" != 'no_compiler_found' ]; then + if [ "$CC_FOR_BUILD" != no_compiler_found ]; then if (echo '#ifdef __LP64__'; echo IS_64BIT_ARCH; echo '#endif') | \ - (CCOPTS= $CC_FOR_BUILD -E - 2>/dev/null) | \ + (CCOPTS="" $CC_FOR_BUILD -E - 2>/dev/null) | \ grep IS_64BIT_ARCH >/dev/null then case $UNAME_PROCESSOR in @@ -1286,7 +1319,7 @@ EOF exit ;; *:procnto*:*:* | *:QNX:[0123456789]*:*) UNAME_PROCESSOR=`uname -p` - if test "$UNAME_PROCESSOR" = "x86"; then + if test "$UNAME_PROCESSOR" = x86; then UNAME_PROCESSOR=i386 UNAME_MACHINE=pc fi @@ -1317,7 +1350,7 @@ EOF # "uname -m" is not consistent, so use $cputype instead. 386 # is converted to i386 for consistency with other x86 # operating systems. - if test "$cputype" = "386"; then + if test "$cputype" = 386; then UNAME_MACHINE=i386 else UNAME_MACHINE="$cputype" @@ -1359,7 +1392,7 @@ EOF echo i386-pc-xenix exit ;; i*86:skyos:*:*) - echo ${UNAME_MACHINE}-pc-skyos`echo ${UNAME_RELEASE}` | sed -e 's/ .*$//' + echo ${UNAME_MACHINE}-pc-skyos`echo ${UNAME_RELEASE} | sed -e 's/ .*$//'` exit ;; i*86:rdos:*:*) echo ${UNAME_MACHINE}-pc-rdos @@ -1370,23 +1403,25 @@ EOF x86_64:VMkernel:*:*) echo ${UNAME_MACHINE}-unknown-esx exit ;; + amd64:Isilon\ OneFS:*:*) + echo x86_64-unknown-onefs + exit ;; esac cat >&2 < in order to provide the needed -information to handle your system. +If $0 has already been updated, send the following data and any +information you think might be pertinent to config-patches@gnu.org to +provide the necessary information to handle your system. config.guess timestamp = $timestamp diff --git a/extension/build-aux/config.rpath b/extension/build-aux/config.rpath index ab6fd99..98183ff 100755 --- a/extension/build-aux/config.rpath +++ b/extension/build-aux/config.rpath @@ -2,7 +2,7 @@ # Output a system dependent set of variables, describing how to set the # run time search path of shared libraries in an executable. # -# Copyright 1996-2014 Free Software Foundation, Inc. +# Copyright 1996-2016 Free Software Foundation, Inc. # Taken from GNU libtool, 2001 # Originally by Gordon Matzigkeit , 1996 # @@ -367,11 +367,7 @@ else dgux*) hardcode_libdir_flag_spec='-L$libdir' ;; - freebsd2.2*) - hardcode_libdir_flag_spec='-R$libdir' - hardcode_direct=yes - ;; - freebsd2*) + freebsd2.[01]*) hardcode_direct=yes hardcode_minus_L=yes ;; @@ -548,13 +544,11 @@ case "$host_os" in dgux*) library_names_spec='$libname$shrext' ;; + freebsd[23].*) + library_names_spec='$libname$shrext$versuffix' + ;; freebsd* | dragonfly*) - case "$host_os" in - freebsd[123]*) - library_names_spec='$libname$shrext$versuffix' ;; - *) - library_names_spec='$libname$shrext' ;; - esac + library_names_spec='$libname$shrext' ;; gnu*) library_names_spec='$libname$shrext' diff --git a/extension/build-aux/config.sub b/extension/build-aux/config.sub index 6d2e94c..9feb73b 100755 --- a/extension/build-aux/config.sub +++ b/extension/build-aux/config.sub @@ -1,8 +1,8 @@ #! /bin/sh # Configuration validation subroutine script. -# Copyright 1992-2015 Free Software Foundation, Inc. +# Copyright 1992-2016 Free Software Foundation, Inc. -timestamp='2015-01-01' +timestamp='2016-06-20' # This file is free software; you can redistribute it and/or modify it # under the terms of the GNU General Public License as published by @@ -33,7 +33,7 @@ timestamp='2015-01-01' # Otherwise, we print the canonical config type on stdout and succeed. # You can get the latest version of this script from: -# http://git.savannah.gnu.org/gitweb/?p=config.git;a=blob_plain;f=config.sub;hb=HEAD +# http://git.savannah.gnu.org/gitweb/?p=config.git;a=blob_plain;f=config.sub # This file is supposed to be the same for all GNU packages # and recognize all the CPU types, system types and aliases @@ -53,8 +53,7 @@ timestamp='2015-01-01' me=`echo "$0" | sed -e 's,.*/,,'` usage="\ -Usage: $0 [OPTION] CPU-MFR-OPSYS - $0 [OPTION] ALIAS +Usage: $0 [OPTION] CPU-MFR-OPSYS or ALIAS Canonicalize a configuration name. @@ -68,7 +67,7 @@ Report bugs and patches to ." version="\ GNU config.sub ($timestamp) -Copyright 1992-2015 Free Software Foundation, Inc. +Copyright 1992-2016 Free Software Foundation, Inc. This is free software; see the source for copying conditions. There is NO warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE." @@ -117,7 +116,7 @@ maybe_os=`echo $1 | sed 's/^\(.*\)-\([^-]*-[^-]*\)$/\2/'` case $maybe_os in nto-qnx* | linux-gnu* | linux-android* | linux-dietlibc | linux-newlib* | \ linux-musl* | linux-uclibc* | uclinux-uclibc* | uclinux-gnu* | kfreebsd*-gnu* | \ - knetbsd*-gnu* | netbsd*-gnu* | \ + knetbsd*-gnu* | netbsd*-gnu* | netbsd*-eabi* | \ kopensolaris*-gnu* | \ storm-chaos* | os2-emx* | rtmk-nova*) os=-$maybe_os @@ -255,11 +254,12 @@ case $basic_machine in | arc | arceb \ | arm | arm[bl]e | arme[lb] | armv[2-8] | armv[3-8][lb] | armv7[arm] \ | avr | avr32 \ + | ba \ | be32 | be64 \ | bfin \ | c4x | c8051 | clipper \ | d10v | d30v | dlx | dsp16xx \ - | epiphany \ + | e2k | epiphany \ | fido | fr30 | frv | ft32 \ | h8300 | h8500 | hppa | hppa1.[01] | hppa2.0 | hppa2.0[nw] | hppa64 \ | hexagon \ @@ -305,7 +305,7 @@ case $basic_machine in | riscv32 | riscv64 \ | rl78 | rx \ | score \ - | sh | sh[1234] | sh[24]a | sh[24]aeb | sh[23]e | sh[34]eb | sheb | shbe | shle | sh[1234]le | sh3ele \ + | sh | sh[1234] | sh[24]a | sh[24]aeb | sh[23]e | sh[234]eb | sheb | shbe | shle | sh[1234]le | sh3ele \ | sh64 | sh64le \ | sparc | sparc64 | sparc64b | sparc64v | sparc86x | sparclet | sparclite \ | sparcv8 | sparcv9 | sparcv9b | sparcv9v \ @@ -376,12 +376,13 @@ case $basic_machine in | alphapca5[67]-* | alpha64pca5[67]-* | arc-* | arceb-* \ | arm-* | armbe-* | armle-* | armeb-* | armv*-* \ | avr-* | avr32-* \ + | ba-* \ | be32-* | be64-* \ | bfin-* | bs2000-* \ | c[123]* | c30-* | [cjt]90-* | c4x-* \ | c8051-* | clipper-* | craynv-* | cydra-* \ | d10v-* | d30v-* | dlx-* \ - | elxsi-* \ + | e2k-* | elxsi-* \ | f30[01]-* | f700-* | fido-* | fr30-* | frv-* | fx80-* \ | h8300-* | h8500-* \ | hppa-* | hppa1.[01]-* | hppa2.0-* | hppa2.0[nw]-* | hppa64-* \ @@ -428,12 +429,13 @@ case $basic_machine in | pdp10-* | pdp11-* | pj-* | pjl-* | pn-* | power-* \ | powerpc-* | powerpc64-* | powerpc64le-* | powerpcle-* \ | pyramid-* \ + | riscv32-* | riscv64-* \ | rl78-* | romp-* | rs6000-* | rx-* \ | sh-* | sh[1234]-* | sh[24]a-* | sh[24]aeb-* | sh[23]e-* | sh[34]eb-* | sheb-* | shbe-* \ | shle-* | sh[1234]le-* | sh3ele-* | sh64-* | sh64le-* \ | sparc-* | sparc64-* | sparc64b-* | sparc64v-* | sparc86x-* | sparclet-* \ | sparclite-* \ - | sparcv8-* | sparcv9-* | sparcv9b-* | sparcv9v-* | sv1-* | sx?-* \ + | sparcv8-* | sparcv9-* | sparcv9b-* | sparcv9v-* | sv1-* | sx*-* \ | tahoe-* \ | tic30-* | tic4x-* | tic54x-* | tic55x-* | tic6x-* | tic80-* \ | tile*-* \ @@ -518,6 +520,9 @@ case $basic_machine in basic_machine=i386-pc os=-aros ;; + asmjs) + basic_machine=asmjs-unknown + ;; aux) basic_machine=m68k-apple os=-aux @@ -638,6 +643,14 @@ case $basic_machine in basic_machine=m68k-bull os=-sysv3 ;; + e500v[12]) + basic_machine=powerpc-unknown + os=$os"spe" + ;; + e500v[12]-*) + basic_machine=powerpc-`echo $basic_machine | sed 's/^[^-]*-//'` + os=$os"spe" + ;; ebmon29k) basic_machine=a29k-amd os=-ebmon @@ -1373,18 +1386,18 @@ case $os in | -hpux* | -unos* | -osf* | -luna* | -dgux* | -auroraux* | -solaris* \ | -sym* | -kopensolaris* | -plan9* \ | -amigaos* | -amigados* | -msdos* | -newsos* | -unicos* | -aof* \ - | -aos* | -aros* \ + | -aos* | -aros* | -cloudabi* | -sortix* \ | -nindy* | -vxsim* | -vxworks* | -ebmon* | -hms* | -mvs* \ | -clix* | -riscos* | -uniplus* | -iris* | -rtu* | -xenix* \ | -hiux* | -386bsd* | -knetbsd* | -mirbsd* | -netbsd* \ - | -bitrig* | -openbsd* | -solidbsd* \ + | -bitrig* | -openbsd* | -solidbsd* | -libertybsd* \ | -ekkobsd* | -kfreebsd* | -freebsd* | -riscix* | -lynxos* \ | -bosx* | -nextstep* | -cxux* | -aout* | -elf* | -oabi* \ | -ptx* | -coff* | -ecoff* | -winnt* | -domain* | -vsta* \ | -udi* | -eabi* | -lites* | -ieee* | -go32* | -aux* \ | -chorusos* | -chorusrdb* | -cegcc* \ | -cygwin* | -msys* | -pe* | -psos* | -moss* | -proelf* | -rtems* \ - | -mingw32* | -mingw64* | -linux-gnu* | -linux-android* \ + | -midipix* | -mingw32* | -mingw64* | -linux-gnu* | -linux-android* \ | -linux-newlib* | -linux-musl* | -linux-uclibc* \ | -uxpv* | -beos* | -mpeix* | -udk* | -moxiebox* \ | -interix* | -uwin* | -mks* | -rhapsody* | -darwin* | -opened* \ @@ -1393,7 +1406,8 @@ case $os in | -os2* | -vos* | -palmos* | -uclinux* | -nucleus* \ | -morphos* | -superux* | -rtmk* | -rtmk-nova* | -windiss* \ | -powermax* | -dnix* | -nx6 | -nx7 | -sei* | -dragonfly* \ - | -skyos* | -haiku* | -rdos* | -toppers* | -drops* | -es* | -tirtos*) + | -skyos* | -haiku* | -rdos* | -toppers* | -drops* | -es* \ + | -onefs* | -tirtos* | -phoenix*) # Remember, each alternative MUST END IN *, to match a version number. ;; -qnx*) @@ -1525,6 +1539,8 @@ case $os in ;; -nacl*) ;; + -ios) + ;; -none) ;; *) diff --git a/extension/configh.in b/extension/configh.in index d3f7361..d3a226a 100644 --- a/extension/configh.in +++ b/extension/configh.in @@ -60,6 +60,9 @@ /* Define to 1 if you have the `select' function. */ #undef HAVE_SELECT +/* Define to 1 if you have the `statvfs' function. */ +#undef HAVE_STATVFS + /* Define to 1 if you have the header file. */ #undef HAVE_STDINT_H @@ -89,6 +92,9 @@ /* Define to 1 if you have the header file. */ #undef HAVE_SYS_SELECT_H +/* Define to 1 if you have the header file. */ +#undef HAVE_SYS_STATVFS_H + /* Define to 1 if you have the header file. */ #undef HAVE_SYS_STAT_H @@ -190,3 +196,5 @@ #ifndef __cplusplus #undef inline #endif + +#include "ext_custom.h" diff --git a/extension/configure b/extension/configure index 3a89c9a..4060155 100755 --- a/extension/configure +++ b/extension/configure @@ -1,6 +1,6 @@ #! /bin/sh # Guess values for system-dependent variables and create Makefiles. -# Generated by GNU Autoconf 2.69 for GNU Awk Bundled Extensions 4.1.3. +# Generated by GNU Autoconf 2.69 for GNU Awk Bundled Extensions 4.1.4. # # Report bugs to . # @@ -590,8 +590,8 @@ MAKEFLAGS= # Identity of this package. PACKAGE_NAME='GNU Awk Bundled Extensions' PACKAGE_TARNAME='gawk-extensions' -PACKAGE_VERSION='4.1.3' -PACKAGE_STRING='GNU Awk Bundled Extensions 4.1.3' +PACKAGE_VERSION='4.1.4' +PACKAGE_STRING='GNU Awk Bundled Extensions 4.1.4' PACKAGE_BUGREPORT='bug-gawk@gnu.org' PACKAGE_URL='http://www.gnu.org/software/gawk-extensions/' @@ -1314,7 +1314,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 Bundled Extensions 4.1.3 to adapt to many kinds of systems. +\`configure' configures GNU Awk Bundled Extensions 4.1.4 to adapt to many kinds of systems. Usage: $0 [OPTION]... [VAR=VALUE]... @@ -1384,7 +1384,7 @@ fi if test -n "$ac_init_help"; then case $ac_init_help in - short | recursive ) echo "Configuration of GNU Awk Bundled Extensions 4.1.3:";; + short | recursive ) echo "Configuration of GNU Awk Bundled Extensions 4.1.4:";; esac cat <<\_ACEOF @@ -1497,7 +1497,7 @@ fi test -n "$ac_init_help" && exit $ac_status if $ac_init_version; then cat <<\_ACEOF -GNU Awk Bundled Extensions configure 4.1.3 +GNU Awk Bundled Extensions configure 4.1.4 generated by GNU Autoconf 2.69 Copyright (C) 2012 Free Software Foundation, Inc. @@ -1969,7 +1969,7 @@ cat >config.log <<_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 Bundled Extensions $as_me 4.1.3, which was +It was created by GNU Awk Bundled Extensions $as_me 4.1.4, which was generated by GNU Autoconf 2.69. Invocation command line was $ $0 $@ @@ -3660,6 +3660,99 @@ $as_echo "$ac_cv_safe_to_define___extensions__" >&6; } +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for z/OS USS compilation" >&5 +$as_echo_n "checking for z/OS USS compilation... " >&6; } +if ${ac_cv_zos_uss+:} false; then : + $as_echo_n "(cached) " >&6 +else + +if test "OS/390" = "`uname`" +then + ac_cv_zos_uss=yes +else + ac_cv_zos_uss=no +fi + +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: ${ac_cv_zos_uss}" >&5 +$as_echo "${ac_cv_zos_uss}" >&6; } +if test "x$ac_cv_zos_uss" = "xyes" +then + ac_zos_uss_cc_id=unknown + echo " $CC " | $EGREP ' (/bin/)?c89 |_' >/dev/null && ac_zos_uss_cc_id=c89 + echo " $CC " | $EGREP ' (/bin/)?c99 |_' >/dev/null && ac_zos_uss_cc_id=xlc + echo " $CC " | $EGREP ' (/bin/)?cc |_' >/dev/null && ac_zos_uss_cc_id=cc + echo " $CC " | $EGREP ' (/bin/)?xlc |_' >/dev/null && ac_zos_uss_cc_id=xlc + echo " $CC " | $EGREP ' (/bin/)?xlC |_' >/dev/null && ac_zos_uss_cc_id=xlc++ + echo " $CC " | $EGREP ' (/bin/)?xlc\+\+ |_' >/dev/null && ac_zos_uss_cc_id=xlc++ + test "x$GCC" = "xyes" && ac_zos_uss_cc_id=gcc + CPPFLAGS="$CPPFLAGS -D_ALL_SOURCE" + test "$ac_zos_uss_cc_id" != xlc++ && CPPFLAGS="$CPPFLAGS -D_XOPEN_SOURCE=600" + case "$ac_zos_uss_cc_id" in + c89) + if test -n "$_C89_OPTIONS" + then + { $as_echo "$as_me:${as_lineno-$LINENO}: CC = $CC" >&5 +$as_echo "$as_me: CC = $CC" >&6;} + { $as_echo "$as_me:${as_lineno-$LINENO}: _C89_OPTIONS = $_C89_OPTIONS" >&5 +$as_echo "$as_me: _C89_OPTIONS = $_C89_OPTIONS" >&6;} + else + as_fn_error $? "c89-setup-required +To build GNU Awk using \"c89\", please set + + _C89_OPTIONS=\"-W c,langlvl(stdc99,libext),haltonmsg(CCN3296)\" + +in your environment, and reconfigure. (The above flags cannot be specified +in CFLAGS/CPPFLAGS, due to the parentheses.)" "$LINENO" 5 + fi + ;; + gcc) + ;; + cc) + as_fn_error $? "cc-invalid +The z/OS \"cc\" compiler does not build GNU Awk correctly. + +If the \"xlc\" or \"c89\" compiler is available, please set CC accordingly +and reconfigure. (\"xlc\" is the recommended compiler on z/OS.)" "$LINENO" 5 + ;; + xlc*) + CFLAGS="$CFLAGS -qlanglvl=stdc99:libext" + cat >zos-cc < directives) rather +# than before. +# +# This script allows the code and the build system to assume standard +# compiler behavior. +# + +PS4='zos-cc: ' +REAL_CC="$CC" + +set -x +\$REAL_CC -qhaltonmsg=CCN3296 -qnosearch "\$@" -qsearch=/usr/include +EOF + chmod +x zos-cc + { $as_echo "$as_me:${as_lineno-$LINENO}: wrapping $CC with zos-cc to obtain standard behavior" >&5 +$as_echo "$as_me: wrapping $CC with zos-cc to obtain standard behavior" >&6;} + CC="`pwd`/zos-cc" + ;; + *) + { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: unrecognized compiler environment" >&5 +$as_echo "$as_me: WARNING: unrecognized compiler environment" >&2;} + ;; + esac +fi # ac_cv_zos_uss = yes + + INSTALL="$ac_aux_dir/install-sh -c" export INSTALL @@ -4209,7 +4302,7 @@ fi # Define the identity of the package. PACKAGE='gawk-extensions' - VERSION='4.1.3' + VERSION='4.1.4' cat >>confdefs.h <<_ACEOF @@ -4638,7 +4731,7 @@ else We can't simply define LARGE_OFF_T to be 9223372036854775807, since some C++ compilers masquerading as C compilers incorrectly reject 9223372036854775807. */ -#define LARGE_OFF_T ((((off_t) 1 << 31) << 31) - 1 + (((off_t) 1 << 31) << 31)) +#define LARGE_OFF_T (((off_t) 1 << 62) - 1 + ((off_t) 1 << 62)) int off_t_is_large[(LARGE_OFF_T % 2147483629 == 721 && LARGE_OFF_T % 2147483647 == 1) ? 1 : -1]; @@ -4684,7 +4777,7 @@ else We can't simply define LARGE_OFF_T to be 9223372036854775807, since some C++ compilers masquerading as C compilers incorrectly reject 9223372036854775807. */ -#define LARGE_OFF_T ((((off_t) 1 << 31) << 31) - 1 + (((off_t) 1 << 31) << 31)) +#define LARGE_OFF_T (((off_t) 1 << 62) - 1 + ((off_t) 1 << 62)) int off_t_is_large[(LARGE_OFF_T % 2147483629 == 721 && LARGE_OFF_T % 2147483647 == 1) ? 1 : -1]; @@ -4708,7 +4801,7 @@ rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext We can't simply define LARGE_OFF_T to be 9223372036854775807, since some C++ compilers masquerading as C compilers incorrectly reject 9223372036854775807. */ -#define LARGE_OFF_T ((((off_t) 1 << 31) << 31) - 1 + (((off_t) 1 << 31) << 31)) +#define LARGE_OFF_T (((off_t) 1 << 62) - 1 + ((off_t) 1 << 62)) int off_t_is_large[(LARGE_OFF_T % 2147483629 == 721 && LARGE_OFF_T % 2147483647 == 1) ? 1 : -1]; @@ -4753,7 +4846,7 @@ else We can't simply define LARGE_OFF_T to be 9223372036854775807, since some C++ compilers masquerading as C compilers incorrectly reject 9223372036854775807. */ -#define LARGE_OFF_T ((((off_t) 1 << 31) << 31) - 1 + (((off_t) 1 << 31) << 31)) +#define LARGE_OFF_T (((off_t) 1 << 62) - 1 + ((off_t) 1 << 62)) int off_t_is_large[(LARGE_OFF_T % 2147483629 == 721 && LARGE_OFF_T % 2147483647 == 1) ? 1 : -1]; @@ -4777,7 +4870,7 @@ rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext We can't simply define LARGE_OFF_T to be 9223372036854775807, since some C++ compilers masquerading as C compilers incorrectly reject 9223372036854775807. */ -#define LARGE_OFF_T ((((off_t) 1 << 31) << 31) - 1 + (((off_t) 1 << 31) << 31)) +#define LARGE_OFF_T (((off_t) 1 << 62) - 1 + ((off_t) 1 << 62)) int off_t_is_large[(LARGE_OFF_T % 2147483629 == 721 && LARGE_OFF_T % 2147483647 == 1) ? 1 : -1]; @@ -12509,7 +12602,7 @@ else $as_echo "no" >&6; } fi -for ac_header in fnmatch.h limits.h sys/time.h sys/select.h sys/param.h +for ac_header in fnmatch.h limits.h sys/time.h sys/select.h sys/param.h sys/statvfs.h do : as_ac_Header=`$as_echo "ac_cv_header_$ac_header" | $as_tr_sh` ac_fn_c_check_header_mongrel "$LINENO" "$ac_header" "$as_ac_Header" "$ac_includes_default" @@ -12767,7 +12860,7 @@ fi for ac_func in fdopendir fnmatch gettimeofday \ - getdtablesize nanosleep select GetSystemTimeAsFileTime + getdtablesize nanosleep select statvfs GetSystemTimeAsFileTime do : as_ac_var=`$as_echo "ac_cv_func_$ac_func" | $as_tr_sh` ac_fn_c_check_func "$LINENO" "$ac_func" "$as_ac_var" @@ -12942,6 +13035,7 @@ esac ac_config_headers="$ac_config_headers config.h:configh.in" + ac_config_files="$ac_config_files Makefile" cat >confcache <<\_ACEOF @@ -13474,7 +13568,7 @@ cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 # report actual input values of CONFIG_FILES etc. instead of their # values after options handling. ac_log=" -This file was extended by GNU Awk Bundled Extensions $as_me 4.1.3, which was +This file was extended by GNU Awk Bundled Extensions $as_me 4.1.4, which was generated by GNU Autoconf 2.69. Invocation command line was CONFIG_FILES = $CONFIG_FILES @@ -13542,7 +13636,7 @@ _ACEOF cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 ac_cs_config="`$as_echo "$ac_configure_args" | sed 's/^ //; s/[\\""\`\$]/\\\\&/g'`" ac_cs_version="\\ -GNU Awk Bundled Extensions config.status 4.1.3 +GNU Awk Bundled Extensions config.status 4.1.4 configured by $0, generated by GNU Autoconf 2.69, with options \\"\$ac_cs_config\\" diff --git a/extension/configure.ac b/extension/configure.ac index f99742b..d0eed3c 100644 --- a/extension/configure.ac +++ b/extension/configure.ac @@ -1,7 +1,7 @@ dnl dnl configure.ac --- autoconf input file for gawk dnl -dnl Copyright (C) 2012-2015 the Free Software Foundation, Inc. +dnl Copyright (C) 2012-2016 the Free Software Foundation, Inc. dnl dnl This file is part of GAWK, the GNU implementation of the dnl AWK Programming Language. @@ -23,12 +23,13 @@ dnl dnl Process this file with autoconf to produce a configure script. -AC_INIT([GNU Awk Bundled Extensions], 4.1.3, bug-gawk@gnu.org, gawk-extensions) +AC_INIT([GNU Awk Bundled Extensions], 4.1.4, bug-gawk@gnu.org, gawk-extensions) AC_CONFIG_MACRO_DIR([m4]) AC_CONFIG_AUX_DIR([build-aux]) AC_USE_SYSTEM_EXTENSIONS +AC_ZOS_USS INSTALL="$ac_aux_dir/install-sh -c" export INSTALL @@ -63,13 +64,13 @@ else AC_MSG_RESULT([no]) fi -AC_CHECK_HEADERS(fnmatch.h limits.h sys/time.h sys/select.h sys/param.h) +AC_CHECK_HEADERS(fnmatch.h limits.h sys/time.h sys/select.h sys/param.h sys/statvfs.h) AC_HEADER_DIRENT AC_HEADER_MAJOR AC_HEADER_TIME AC_CHECK_FUNCS(fdopendir fnmatch gettimeofday \ - getdtablesize nanosleep select GetSystemTimeAsFileTime) + getdtablesize nanosleep select statvfs GetSystemTimeAsFileTime) GAWK_FUNC_DIRFD GAWK_PREREQ_DIRFD @@ -78,6 +79,7 @@ dnl checks for compiler characteristics AC_C_INLINE AC_CONFIG_HEADERS([config.h:configh.in]) +AH_BOTTOM([#include "ext_custom.h"]) AC_CONFIG_FILES(Makefile) AC_OUTPUT diff --git a/extension/ext_custom.h b/extension/ext_custom.h new file mode 100644 index 0000000..13702f2 --- /dev/null +++ b/extension/ext_custom.h @@ -0,0 +1,37 @@ +/* + * ext_custom.h + * + * This file is for use on systems where Autoconf isn't quite able to + * get things right. It is appended to the bottom of config.h by configure, + * in order to override definitions from Autoconf that are erroneous. See + * the manual for more information. + * + * If you make additions to this file for your system, please send me + * the information, to arnold@skeeve.com. + */ + +/* + * Copyright (C) 2015 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 3 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 + */ + +/* From Michal Jaegermann for bleeding edge GLIBC. */ +#if defined _GNU_SOURCE && !defined _DEFAULT_SOURCE +# define _DEFAULT_SOURCE +#endif diff --git a/extension/filefuncs.c b/extension/filefuncs.c index 1441cb3..b33fcf1 100644 --- a/extension/filefuncs.c +++ b/extension/filefuncs.c @@ -6,10 +6,11 @@ * Arnold Robbins and John Haque, update for 3.1.4, applied Mon Jun 14 13:55:30 IDT 2004 * Arnold Robbins and Andrew Schorr, revised for new extension API, May 2012. * Arnold Robbins, add fts(), August 2012 + * Arnold Robbins, add statvfs(), November 2015 */ /* - * Copyright (C) 2001, 2004, 2005, 2010-2015 + * Copyright (C) 2001, 2004, 2005, 2010-2016 * the Free Software Foundation, Inc. * * This file is part of GAWK, the GNU implementation of the @@ -84,6 +85,10 @@ #include #endif +#if defined(HAVE_SYS_STATVFS_H) && defined(HAVE_STATVFS) +#include +#endif + #include "gawkapi.h" #include "gettext.h" @@ -502,6 +507,66 @@ do_stat(int nargs, awk_value_t *result) return make_number(ret, result); } +#if defined(HAVE_SYS_STATVFS_H) && defined(HAVE_STATVFS) + +/* do_statvfs --- provide a statvfs() function for gawk */ + +static awk_value_t * +do_statvfs(int nargs, awk_value_t *result) +{ + awk_value_t file_param, array_param; + char *name; + awk_array_t array; + int ret; + struct statvfs vfsbuf; + + assert(result != NULL); + + if (nargs != 2) { + if (do_lint) + lintwarn(ext_id, _("statvfs: called with wrong number of arguments")); + return make_number(-1, result); + } + + /* file is first arg, array to hold results is second */ + if ( ! get_argument(0, AWK_STRING, & file_param) + || ! get_argument(1, AWK_ARRAY, & array_param)) { + warning(ext_id, _("stat: bad parameters")); + return make_number(-1, result); + } + + name = file_param.str_value.str; + array = array_param.array_cookie; + + /* always empty out the array */ + clear_array(array); + + /* stat the file; if error, set ERRNO and return */ + ret = statvfs(name, & vfsbuf); + if (ret < 0) { + update_ERRNO_int(errno); + return make_number(ret, result); + } + + array_set_numeric(array, "bsize", vfsbuf.f_bsize); /* filesystem block size */ + array_set_numeric(array, "frsize", vfsbuf.f_frsize); /* fragment size */ + array_set_numeric(array, "blocks", vfsbuf.f_blocks); /* size of fs in f_frsize units */ + array_set_numeric(array, "bfree", vfsbuf.f_bfree); /* # free blocks */ + array_set_numeric(array, "bavail", vfsbuf.f_bavail); /* # free blocks for unprivileged users */ + array_set_numeric(array, "files", vfsbuf.f_files); /* # inodes */ + array_set_numeric(array, "ffree", vfsbuf.f_ffree); /* # free inodes */ + array_set_numeric(array, "favail", vfsbuf.f_favail); /* # free inodes for unprivileged users */ +#ifndef _AIX + array_set_numeric(array, "fsid", vfsbuf.f_fsid); /* filesystem ID */ +#endif + array_set_numeric(array, "flag", vfsbuf.f_flag); /* mount flags */ + array_set_numeric(array, "namemax", vfsbuf.f_namemax); /* maximum filename length */ + + + return make_number(ret, result); +} +#endif + /* init_filefuncs --- initialization routine */ static awk_bool_t @@ -868,6 +933,9 @@ static awk_ext_func_t func_table[] = { #ifndef __MINGW32__ { "fts", do_fts, 3 }, #endif +#if defined(HAVE_SYS_STATVFS_H) && defined(HAVE_STATVFS) + { "statvfs", do_statvfs, 2 }, +#endif }; diff --git a/extension/fnmatch.3am b/extension/fnmatch.3am index e2e8391..ed4f367 100644 --- a/extension/fnmatch.3am +++ b/extension/fnmatch.3am @@ -73,7 +73,7 @@ Nothing prevents AWK code from changing the predefined variabale .BR FNM_NOMATCH , but doing so may cause strange results. -... .SH BUGS +.\" .SH BUGS .SH EXAMPLE .ft CW .nf diff --git a/extension/fork.3am b/extension/fork.3am index c87dada..9933d19 100644 --- a/extension/fork.3am +++ b/extension/fork.3am @@ -36,7 +36,7 @@ This function waits for the first child to die. The return value is that of the .IR wait (2) system call. -... .SH NOTES +.\" .SH NOTES .SH BUGS There is no corresponding .B exec() diff --git a/extension/gawkfts.h b/extension/gawkfts.h index f1ca26f..447b175 100644 --- a/extension/gawkfts.h +++ b/extension/gawkfts.h @@ -45,7 +45,7 @@ # endif #endif -#ifdef ZOS_USS +#ifdef __MVS__ #include #define MAXPATHLEN FILENAME_MAX #endif @@ -81,11 +81,7 @@ typedef struct _ftsent { struct _ftsent *fts_cycle; /* cycle node */ struct _ftsent *fts_parent; /* parent directory */ struct _ftsent *fts_link; /* next file in directory */ -#ifdef ZOS_USS - long fts_number; /* local numeric value */ -#else - long long fts_number; /* local numeric value */ -#endif + long long fts_number; /* local numeric value */ void *fts_pointer; /* local address value */ char *fts_accpath; /* access path */ char *fts_path; /* root path */ diff --git a/extension/inplace.3am b/extension/inplace.3am index 64aec91..b771748 100644 --- a/extension/inplace.3am +++ b/extension/inplace.3am @@ -1,4 +1,4 @@ -.TH INPLACE 3am "Apr 08 2015" "Free Software Foundation" "GNU Awk Extension Modules" +.TH INPLACE 3am "Jun 17 2015" "Free Software Foundation" "GNU Awk Extension Modules" .SH NAME inplace \- emulate sed/perl/ruby in-place editing .SH SYNOPSIS @@ -32,8 +32,18 @@ rule or on the command line, then the extension concatenates that suffix onto the original filename and uses the result as a filename for renaming the original. -... .SH NOTES -... .SH BUGS +.PP +One can disable inplace editing selectively by placing +.B inplace=0 +on the command line prior to files that should be processed normally. +One can reenable inplace editing by placing +.B inplace=1 +prior to files that should be subject to inplace editing. +.\" .SH NOTES +.SH BUGS +While the extension does attempt to preserve ownership and permissions, it makes no attempt to copy the ACLs from the original file. +.PP +If the program dies prematurely, as might happen if an unhandled signal is received, a temporary file may be left behind. .SH EXAMPLE .ft CW .nf diff --git a/extension/inplace.c b/extension/inplace.c index 07d256b..c7eb556 100644 --- a/extension/inplace.c +++ b/extension/inplace.c @@ -125,6 +125,7 @@ do_inplace_begin(int nargs, awk_value_t *result) int fd; assert(result != NULL); + fflush(stdout); if (state.tname) fatal(ext_id, _("inplace_begin: in-place editing already active")); diff --git a/extension/ordchr.3am b/extension/ordchr.3am index a2b712f..1b19938 100644 --- a/extension/ordchr.3am +++ b/extension/ordchr.3am @@ -28,8 +28,8 @@ whose first character is that represented by the number. .PP These functions are inspired by the Pascal language functions of the same name. -... .SH NOTES -... .SH BUGS +.\" .SH NOTES +.\" .SH BUGS .SH EXAMPLE .ft CW .nf diff --git a/extension/readdir.3am b/extension/readdir.3am index 4ba5abc..1cb64cb 100644 --- a/extension/readdir.3am +++ b/extension/readdir.3am @@ -52,7 +52,7 @@ You can use the extension to call .I stat() in order to get correct type information. -... .SH BUGS +.\" .SH BUGS .SH EXAMPLE .ft CW .nf diff --git a/extension/readdir.c b/extension/readdir.c index 7bcabcb..4578b86 100644 --- a/extension/readdir.c +++ b/extension/readdir.c @@ -137,11 +137,7 @@ ftype(struct dirent *entry, const char *dirname) } /* get_inode --- get the inode of a file */ -#ifdef ZOS_USS -static long -#else static long long -#endif get_inode(struct dirent *entry, const char *dirname) { #ifdef __MINGW32__ @@ -179,11 +175,7 @@ dir_get_record(char **out, awk_input_buf_t *iobuf, int *errcode, int len; open_directory_t *the_dir; const char *ftstr; -#ifdef ZOS_USS - unsigned long ino; -#else unsigned long long ino; -#endif /* * The caller sets *errcode to 0, so we should set it only if an @@ -208,9 +200,7 @@ dir_get_record(char **out, awk_input_buf_t *iobuf, int *errcode, ino = get_inode (dirent, iobuf->name); -#if defined(ZOS_USS) - len = sprintf(the_dir->buf, "%lu/%s", ino, dirent->d_name); -#elif __MINGW32__ +#if __MINGW32__ len = sprintf(the_dir->buf, "%I64u/%s", ino, dirent->d_name); #else len = sprintf(the_dir->buf, "%llu/%s", ino, dirent->d_name); diff --git a/extension/readfile.3am b/extension/readfile.3am index 0cb2eb5..25a73e7 100644 --- a/extension/readfile.3am +++ b/extension/readfile.3am @@ -34,8 +34,8 @@ PROCINFO["readfile"] exists. When activated, each input file is returned in its entirety as \f(CW$0\fR. \f(CWRT\fP is set to the null string. -... .SH NOTES -... .SH BUGS +.\" .SH NOTES +.\" .SH BUGS .SH EXAMPLE .ft CW .nf diff --git a/extension/revoutput.3am b/extension/revoutput.3am index 9c8f062..f6cb22a 100644 --- a/extension/revoutput.3am +++ b/extension/revoutput.3am @@ -1,4 +1,4 @@ -.TH REVOUTPUT 3am "Jan 15 2013" "Free Software Foundation" "GNU Awk Extension Modules" +.TH REVOUTPUT 3am "Aug 02 2015" "Free Software Foundation" "GNU Awk Extension Modules" .SH NAME revoutput \- Reverse output strings sample extension .SH SYNOPSIS @@ -15,7 +15,7 @@ adds a simple output wrapper that reverses the characters in each output line. It's main purpose is to show how to write an output wrapper, although it may be mildy amusing for the unwary. -... .SH BUGS +.\" .SH BUGS .SH EXAMPLE .ft CW .nf @@ -35,6 +35,8 @@ The output from this program is: dlrow ,olleh .fi .ft R +.SH BUGS +This extension does not affect the default standard output. .SH "SEE ALSO" .IR "GAWK: Effective AWK Programming" , .IR filefuncs (3am), diff --git a/extension/revoutput.c b/extension/revoutput.c index ae4b444..6925716 100644 --- a/extension/revoutput.c +++ b/extension/revoutput.c @@ -7,7 +7,7 @@ */ /* - * Copyright (C) 2012, 2013 the Free Software Foundation, Inc. + * Copyright (C) 2012, 2013, 2015 the Free Software Foundation, Inc. * * This file is part of GAWK, the GNU implementation of the * AWK Programming Language. @@ -47,7 +47,7 @@ static const gawk_api_t *api; /* for convenience macros to work */ static awk_ext_id_t *ext_id; -static const char *ext_version = "revoutput extension: version 1.0"; +static const char *ext_version = "revoutput extension: version 1.1"; static awk_bool_t init_revoutput(void); static awk_bool_t (*init_func)(void) = init_revoutput; @@ -120,11 +120,14 @@ init_revoutput() register_output_wrapper(& output_wrapper); - make_number(0.0, & value); /* init to false */ - if (! sym_update("REVOUT", & value)) { - warning(ext_id, _("revoutput: could not initialize REVOUT variable")); + if (! sym_lookup("REVOUT", AWK_SCALAR, & value)) { + /* only install it if not there, e.g. -v REVOUT=1 */ + make_number(0.0, & value); /* init to false */ + if (! sym_update("REVOUT", & value)) { + warning(ext_id, _("revoutput: could not initialize REVOUT variable")); - return awk_false; + return awk_false; + } } return awk_true; diff --git a/extension/revtwoway.3am b/extension/revtwoway.3am index 3426971..04c480f 100644 --- a/extension/revtwoway.3am +++ b/extension/revtwoway.3am @@ -23,7 +23,7 @@ adds a simple two-way processor that reverses the characters in each line sent to it for reading back by the AWK program. It's main purpose is to show how to write a two-way extension, although it may also be mildy amusing. -... .SH BUGS +.\" .SH BUGS .SH "SEE ALSO" .IR "GAWK: Effective AWK Programming" , .IR filefuncs (3am), diff --git a/extension/revtwoway.c b/extension/revtwoway.c index c0d9381..dfe58a1 100644 --- a/extension/revtwoway.c +++ b/extension/revtwoway.c @@ -7,7 +7,7 @@ */ /* - * Copyright (C) 2012-2014 the Free Software Foundation, Inc. + * Copyright (C) 2012-2014, 2016 the Free Software Foundation, Inc. * * This file is part of GAWK, the GNU implementation of the * AWK Programming Language. @@ -64,10 +64,10 @@ int plugin_is_GPL_compatible; static size_t max_fds; #ifndef HAVE_GETDTABLESIZE -/* getdtablesize --- replacement version that should be good enough */ +/* gawk_getdtablesize --- replacement version that should be good enough */ static inline int -getdtablesize() +gawk_getdtablesize() { /* * Algorithm for the GNULIB folks: @@ -89,6 +89,8 @@ getdtablesize() /* In the meantime, this is good enough for us: */ return 1024; } + +#define getdtablesize() gawk_getdtablesize() #endif /* diff --git a/extension/rwarray.3am b/extension/rwarray.3am index 359d91c..85ec580 100644 --- a/extension/rwarray.3am +++ b/extension/rwarray.3am @@ -53,7 +53,7 @@ However, double precision floating-point values are written as native binary data. Thus, arrays containing only string data can theoretically be dumped on systems with one byte order and restored on systems with a different one, but this has not been tried. -... .SH BUGS +.\" .SH BUGS .SH EXAMPLE .ft CW .nf diff --git a/extension/rwarray.c b/extension/rwarray.c index aa05a0d..155cc47 100644 --- a/extension/rwarray.c +++ b/extension/rwarray.c @@ -53,17 +53,6 @@ #define _(msgid) gettext(msgid) #define N_(msgid) msgid -#if defined(ZOS_USS) -#include -#define INT32_MAX INT_MAX -#define INT32_MIN INT_MIN -#ifndef __uint32_t -#define __uint32_t 1 -typedef unsigned long uint32_t; -#endif -typedef long int32_t; -#endif /* ZOS_USS */ - #define MAGIC "awkrulz\n" #define MAJOR 3 #define MINOR 0 diff --git a/extension/time.3am b/extension/time.3am index aeb5919..00e9d8b 100644 --- a/extension/time.3am +++ b/extension/time.3am @@ -35,8 +35,8 @@ then it returns \-1 and sets .BR ERRNO . Otherwise, the function should return 0 after sleeping for the indicated amount of time. -... .SH NOTES -... .SH BUGS +.\" .SH NOTES +.\" .SH BUGS .SH EXAMPLE .ft CW .nf diff --git a/field.c b/field.c index 6a7c6b1..5f5b2b6 100644 --- a/field.c +++ b/field.c @@ -3,7 +3,7 @@ */ /* - * Copyright (C) 1986, 1988, 1989, 1991-2014 the Free Software Foundation, Inc. + * Copyright (C) 1986, 1988, 1989, 1991-2016 the Free Software Foundation, Inc. * * This file is part of GAWK, the GNU implementation of the * AWK Programming Language. @@ -1270,8 +1270,12 @@ choose_fs_function: } else if (fs->stptr[0] == '\\') { /* yet another special case */ strcpy(buf, "[\\\\\n]"); - } else if (fs->stptr[0] != '\n') + } else if (fs->stptr[0] == '\0') { + /* and yet another special case */ + strcpy(buf, "[\\000\n]"); + } else if (fs->stptr[0] != '\n') { sprintf(buf, "[%c\n]", fs->stptr[0]); + } } } else { if (do_posix) @@ -1598,9 +1602,8 @@ fpat_parse_field(long up_to, /* parse only up to this field number */ if (in_middle) { regex_flags |= RE_NO_BOL; - non_empty = rp->non_empty; - } else - non_empty = false; + } + non_empty = rp->non_empty; eosflag = false; need_to_set_sep = true; diff --git a/floatcomp.c b/floatcomp.c index 16a6d88..9ba169a 100644 --- a/floatcomp.c +++ b/floatcomp.c @@ -3,7 +3,8 @@ */ /* - * Copyright (C) 1986, 1988, 1989, 1991-2011 the Free Software Foundation, Inc. + * Copyright (C) 1986, 1988, 1989, 1991-2011, 2016 + * the Free Software Foundation, Inc. * * This file is part of GAWK, the GNU implementation of the * AWK Programming Language. @@ -71,6 +72,20 @@ Please port the following code to your weird host; #define AWKNUM_FRACTION_BITS (AWKNUM_MANT_DIG * (FLT_RADIX == 2 ? 1 : 4)) #define DBL_FRACTION_BITS (DBL_MANT_DIG * (FLT_RADIX == 2 ? 1 : 4)) +/* Return the number of trailing zeros in N. N must be nonzero. */ +static int +count_trailing_zeros(uintmax_t n) +{ +#if 3 < (__GNUC__ + (4 <= __GNUC_MINOR__)) && UINTMAX_MAX <= ULLONG_MAX + return __builtin_ctzll(n); +#else + int i = 0; + for (; (n & 3) == 0; n >>= 2) + i += 2; + return i + (1 & ~n); +#endif +} + /* adjust_uint --- fiddle with values, ask Paul Eggert to explain */ uintmax_t @@ -84,8 +99,15 @@ adjust_uint(uintmax_t n) * This is more desirable in practice, since it means the user sees * integers that are the same width as the AWKNUM fractions. */ - if (AWKNUM_FRACTION_BITS < CHAR_BIT * sizeof n) - n &= ((uintmax_t) 1 << AWKNUM_FRACTION_BITS) - 1; + int wordbits = CHAR_BIT * sizeof n; + if (AWKNUM_FRACTION_BITS < wordbits) { + uintmax_t one = 1; + uintmax_t sentinel = one << (wordbits - AWKNUM_FRACTION_BITS); + int shift = count_trailing_zeros(n | sentinel); + uintmax_t mask = (one << AWKNUM_FRACTION_BITS) - 1; + + n &= mask << shift; + } return n; } diff --git a/gawkapi.c b/gawkapi.c index 3b49545..1ef2f79 100644 --- a/gawkapi.c +++ b/gawkapi.c @@ -3,7 +3,7 @@ */ /* - * Copyright (C) 2012-2015 the Free Software Foundation, Inc. + * Copyright (C) 2012-2016 the Free Software Foundation, Inc. * * This file is part of GAWK, the GNU implementation of the * AWK Programming Language. @@ -82,7 +82,7 @@ api_get_argument(awk_ext_id_t id, size_t count, array: /* get the array here */ - arg = get_array_argument(count, false); + arg = get_array_argument(arg, count); if (arg == NULL) return awk_false; @@ -90,7 +90,7 @@ array: scalar: /* at this point we have a real type that is not an array */ - arg = get_scalar_argument(count, false); + arg = get_scalar_argument(arg, count); if (arg == NULL) return awk_false; @@ -120,7 +120,7 @@ api_set_argument(awk_ext_id_t id, || arg->type != Node_var_new) return awk_false; - arg = get_array_argument(count, false); + arg = get_array_argument(arg, count); if (arg == NULL) return awk_false; @@ -193,7 +193,7 @@ api_fatal(awk_ext_id_t id, const char *format, ...) va_end(args); } -/* api_warning --- print a warning message and exit */ +/* api_warning --- print a warning message */ static void api_warning(awk_ext_id_t id, const char *format, ...) @@ -219,11 +219,10 @@ api_lintwarn(awk_ext_id_t id, const char *format, ...) va_start(args, format); if (lintwarn == r_fatal) { err(true, _("fatal: "), format, args); - va_end(args); } else { err(false, _("warning: "), format, args); - va_end(args); } + va_end(args); } /* api_register_input_parser --- register an input_parser; for opening files read-only */ diff --git a/gawkapi.h b/gawkapi.h index 2be5c80..039ec5f 100644 --- a/gawkapi.h +++ b/gawkapi.h @@ -3,7 +3,7 @@ */ /* - * Copyright (C) 2012-2015 the Free Software Foundation, Inc. + * Copyright (C) 2012-2016 the Free Software Foundation, Inc. * * This file is part of GAWK, the GNU implementation of the * AWK Programming Language. @@ -260,10 +260,13 @@ typedef struct awk_two_way_processor { awk_const struct awk_two_way_processor *awk_const next; /* for use by gawk */ } awk_two_way_processor_t; +#define gawk_api_major_version 1 +#define gawk_api_minor_version 1 + /* Current version of the API. */ enum { - GAWK_API_MAJOR_VERSION = 1, - GAWK_API_MINOR_VERSION = 1 + GAWK_API_MAJOR_VERSION = gawk_api_major_version, + GAWK_API_MINOR_VERSION = gawk_api_minor_version }; /* A number of typedefs related to different types of values. */ diff --git a/getopt.c b/getopt.c index 4de0b9a..8bc5961 100644 --- a/getopt.c +++ b/getopt.c @@ -2,7 +2,7 @@ NOTE: getopt is 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-2015 Free Software Foundation, Inc. + Copyright (C) 1987-2016 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 @@ -597,7 +597,7 @@ _getopt_internal_r (int argc, char *const *argv, const char *optstring, char *buf = NULL; size_t buflen = 0; - FILE *fp = open_memstream (&buf, &buflen); + FILE *fp = __open_memstream (&buf, &buflen); if (fp != NULL) { fprintf (fp, diff --git a/getopt.h b/getopt.h index 75cd5e8..8393569 100644 --- a/getopt.h +++ b/getopt.h @@ -1,5 +1,5 @@ /* Declarations for getopt. - Copyright (C) 1989-2015 Free Software Foundation, Inc. + Copyright (C) 1989-2016 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 diff --git a/getopt1.c b/getopt1.c index b61041d..438fe52 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-2015 Free Software Foundation, Inc. + Copyright (C) 1987-2016 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 diff --git a/getopt_int.h b/getopt_int.h index 03d6227..514a1be 100644 --- a/getopt_int.h +++ b/getopt_int.h @@ -1,5 +1,5 @@ /* Internal declarations for getopt. - Copyright (C) 1989-2015 Free Software Foundation, Inc. + Copyright (C) 1989-2016 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 diff --git a/gettext.h b/gettext.h index 38b94c4..474419a 100644 --- a/gettext.h +++ b/gettext.h @@ -1,5 +1,6 @@ /* Convenience header for conditional use of GNU . - Copyright (C) 1995-1998, 2000-2002, 2004-2006, 2009-2013 Free Software Foundation, Inc. + Copyright (C) 1995-1998, 2000-2002, 2004-2006, 2009-2011, 2015 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 diff --git a/int_array.c b/int_array.c index c2bf37b..6cffec8 100644 --- a/int_array.c +++ b/int_array.c @@ -3,7 +3,8 @@ */ /* - * Copyright (C) 1986, 1988, 1989, 1991-2013 the Free Software Foundation, Inc. + * Copyright (C) 1986, 1988, 1989, 1991-2013, 2016, + * the Free Software Foundation, Inc. * * This file is part of GAWK, the GNU implementation of the * AWK Programming Language. @@ -74,7 +75,37 @@ int_array_init(NODE *symbol, NODE *subs ATTRIBUTE_UNUSED) } else null_array(symbol); - return (NODE **) ! NULL; + return & success_node; +} + +/* + * standard_integer_string -- check whether the string matches what + * sprintf("%ld", ) would produce. This is accomplished by accepting + * only strings that look like /^0$/ or /^-?[1-9][0-9]*$/. This should be + * faster than comparing vs. the results of actually calling sprintf. + */ + +static bool +standard_integer_string(const char *s, size_t len) +{ + const char *end; + + if (len == 0) + return false; + if (*s == '0' && len == 1) + return true; + end = s + len; + /* ignore leading minus sign */ + if (*s == '-' && ++s == end) + return false; + /* check first char is [1-9] */ + if (*s < '1' || *s > '9') + return false; + while (++s < end) { + if (*s < '0' || *s > '9') + return false; + } + return true; } /* is_integer --- check if subscript is an integer */ @@ -82,22 +113,52 @@ int_array_init(NODE *symbol, NODE *subs ATTRIBUTE_UNUSED) NODE ** is_integer(NODE *symbol, NODE *subs) { +#ifndef CHECK_INTEGER_USING_FORCE_NUMBER long l; +#endif AWKNUM d; + if ((subs->flags & NUMINT) != 0) + /* quick exit */ + return & success_node; + if (subs == Nnull_string || do_mpfr) return NULL; - if ((subs->flags & NUMINT) != 0) - return (NODE **) ! NULL; +#ifdef CHECK_INTEGER_USING_FORCE_NUMBER + /* + * This approach is much simpler, because we remove all of the strtol + * logic below. But this may be slower in some usage cases. + */ + if ((subs->flags & NUMCUR) == 0) { + str2number(subs); - if ((subs->flags & NUMBER) != 0) { + /* check again in case force_number set NUMINT */ + if ((subs->flags & NUMINT) != 0) + return & success_node; + } +#else /* CHECK_INTEGER_USING_FORCE_NUMBER */ + if ((subs->flags & NUMCUR) != 0) { +#endif /* CHECK_INTEGER_USING_FORCE_NUMBER */ d = subs->numbr; if (d <= INT32_MAX && d >= INT32_MIN && d == (int32_t) d) { - subs->flags |= NUMINT; - return (NODE **) ! NULL; + /* + * The numeric value is an integer, but we must + * protect against strings that cannot be generated + * from sprintf("%ld", ). This can happen + * with strnum or string values. We could skip this + * check for pure NUMBER values, but unfortunately the + * code does not currently distinguish between NUMBER + * and strnum values. + */ + if ( (subs->flags & STRCUR) == 0 + || standard_integer_string(subs->stptr, subs->stlen)) { + subs->flags |= NUMINT; + return & success_node; + } } return NULL; +#ifndef CHECK_INTEGER_USING_FORCE_NUMBER } /* a[3]=1; print "3" in a -- true @@ -126,7 +187,7 @@ is_integer(NODE *symbol, NODE *subs) subs->flags |= NUMBER; } subs->flags |= (NUMCUR|NUMINT); - return (NODE **) ! NULL; + return & success_node; } cpend = cp + len; @@ -146,10 +207,11 @@ is_integer(NODE *symbol, NODE *subs) subs->flags |= NUMCUR; if (l <= INT32_MAX && l >= INT32_MIN) { subs->flags |= NUMINT; - return (NODE **) ! NULL; + return & success_node; } } return NULL; +#endif /* CHECK_INTEGER_USING_FORCE_NUMBER */ } @@ -303,7 +365,7 @@ int_remove(NODE *symbol, NODE *subs) } symbol->table_size--; assert(symbol->table_size > 0); - return (NODE **) ! NULL; + return & success_node; } k = subs->numbr; @@ -372,7 +434,7 @@ removed: freenode(xn); } - return (NODE **) ! NULL; /* return success */ + return & success_node; /* return success */ } diff --git a/io.c b/io.c index 2344c2a..20d9ee2 100644 --- a/io.c +++ b/io.c @@ -3,7 +3,8 @@ */ /* - * Copyright (C) 1986, 1988, 1989, 1991-2014 the Free Software Foundation, Inc. + * Copyright (C) 1986, 1988, 1989, 1991-2016, + * the Free Software Foundation, Inc. * * This file is part of GAWK, the GNU implementation of the * AWK Programming Language. @@ -76,6 +77,10 @@ #include #endif /* HAVE_NETDB_H */ +#ifdef HAVE_SYS_SELECT_H +#include +#endif /* HAVE_SYS_SELECT_H */ + #ifndef HAVE_GETADDRINFO #include "missing_d/getaddrinfo.h" #endif @@ -208,8 +213,6 @@ #define INCREMENT_REC(X) X++ #endif -typedef enum { CLOSE_ALL, CLOSE_TO, CLOSE_FROM } two_way_close_type; - /* Several macros to make the code a bit clearer. */ #define at_eof(iop) (((iop)->flag & IOP_AT_EOF) != 0) #define has_no_data(iop) ((iop)->dataend == NULL) @@ -892,9 +895,15 @@ redirect(NODE *redir_exp, int redirtype, int *errflg) (void) flush_io(); os_restore_mode(fileno(stdin)); +#ifdef SIGPIPE + signal(SIGPIPE, SIG_DFL); +#endif if ((rp->output.fp = popen(str, binmode("w"))) == NULL) fatal(_("can't open pipe `%s' for output (%s)"), str, strerror(errno)); +#ifdef SIGPIPE + signal(SIGPIPE, SIG_IGN); +#endif /* set close-on-exec */ os_close_on_exec(fileno(rp->output.fp), str, "pipe", "to"); @@ -997,8 +1006,10 @@ redirect(NODE *redir_exp, int redirtype, int *errflg) (vaxc$errno == SS$_EXQUOTA || vaxc$errno == SS$_EXBYTLM || vaxc$errno == RMS$_ACC || - vaxc$errno == RMS$_SYN)) + vaxc$errno == RMS$_SYN)) { + close_one(); close_one(); + } #endif else { /* @@ -1164,7 +1175,7 @@ do_close(int nargs) /* close_rp --- separate function to just do closing */ -static int +int close_rp(struct redirect *rp, two_way_close_type how) { int status = 0; @@ -1322,7 +1333,7 @@ flush_io() warning(_("error writing standard error (%s)"), strerror(errno)); status++; } - for (rp = red_head; rp != NULL; rp = rp->next) + for (rp = red_head; rp != NULL; rp = rp->next) { /* flush both files and pipes, what the heck */ if ((rp->flag & RED_WRITE) != 0 && rp->output.fp != NULL) { if (rp->output.gawk_fflush(rp->output.fp, rp->output.opaque)) { @@ -1338,6 +1349,7 @@ flush_io() status++; } } + } if (status != 0) status = -1; /* canonicalize it */ return status; @@ -1519,7 +1531,7 @@ socketopen(int family, int type, const char *localpname, #ifdef MSG_PEEK char buf[10]; struct sockaddr_storage remote_addr; - socklen_t read_len = 0; + socklen_t read_len = sizeof(remote_addr); if (recvfrom(socket_fd, buf, 1, MSG_PEEK, (struct sockaddr *) & remote_addr, @@ -1774,7 +1786,7 @@ two_way_open(const char *str, struct redirect *rp) if (find_two_way_processor(str, rp)) return true; -#if defined(HAVE_TERMIOS_H) && ! defined(ZOS_USS) +#if defined(HAVE_TERMIOS_H) /* case 3: use ptys for two-way communications to child */ if (! no_ptys && pty_vs_pipe(str)) { static bool initialized = false; @@ -1875,56 +1887,75 @@ two_way_open(const char *str, struct redirect *rp) goto use_pipes; got_the_pty: - if ((slave = open(slavenam, O_RDWR)) < 0) { - close(master); - fatal(_("could not open `%s', mode `%s'"), - slavenam, "r+"); - } -#ifdef I_PUSH /* - * Push the necessary modules onto the slave to - * get terminal semantics. + * We specifically open the slave only in the child. This allows + * certain, er, "limited" systems to work. The open is specifically + * without O_NOCTTY in order to make the slave become the controlling + * terminal. */ - ioctl(slave, I_PUSH, "ptem"); - ioctl(slave, I_PUSH, "ldterm"); + + switch (pid = fork()) { + case 0: + /* Child process */ + setsid(); + + if ((slave = open(slavenam, O_RDWR)) < 0) { + close(master); + fatal(_("could not open `%s', mode `%s'"), + slavenam, "r+"); + } + +#ifdef I_PUSH + /* + * Push the necessary modules onto the slave to + * get terminal semantics. Check that they aren't + * already there to avoid hangs on said "limited" systems. + */ +#ifdef I_FIND + if (ioctl(slave, I_FIND, "ptem") == 0) +#endif + ioctl(slave, I_PUSH, "ptem"); +#ifdef I_FIND + if (ioctl(slave, I_FIND, "ldterm") == 0) +#endif + ioctl(slave, I_PUSH, "ldterm"); #endif + tcgetattr(slave, & st); - tcgetattr(slave, & st); - st.c_iflag &= ~(ISTRIP | IGNCR | INLCR | IXOFF); - st.c_iflag |= (ICRNL | IGNPAR | BRKINT | IXON); - st.c_oflag &= ~OPOST; - st.c_cflag &= ~CSIZE; - st.c_cflag |= CREAD | CS8 | CLOCAL; - st.c_lflag &= ~(ECHO | ECHOE | ECHOK | NOFLSH | TOSTOP); - st.c_lflag |= ISIG; + st.c_iflag &= ~(ISTRIP | IGNCR | INLCR | IXOFF); + st.c_iflag |= (ICRNL | IGNPAR | BRKINT | IXON); + st.c_oflag &= ~OPOST; + st.c_cflag &= ~CSIZE; + st.c_cflag |= CREAD | CS8 | CLOCAL; + st.c_lflag &= ~(ECHO | ECHOE | ECHOK | NOFLSH | TOSTOP); + st.c_lflag |= ISIG; - /* Set some control codes to default values */ + /* Set some control codes to default values */ #ifdef VINTR - st.c_cc[VINTR] = '\003'; /* ^c */ + st.c_cc[VINTR] = '\003'; /* ^c */ #endif #ifdef VQUIT - st.c_cc[VQUIT] = '\034'; /* ^| */ + st.c_cc[VQUIT] = '\034'; /* ^| */ #endif #ifdef VERASE - st.c_cc[VERASE] = '\177'; /* ^? */ + st.c_cc[VERASE] = '\177'; /* ^? */ #endif #ifdef VKILL - st.c_cc[VKILL] = '\025'; /* ^u */ + st.c_cc[VKILL] = '\025'; /* ^u */ #endif #ifdef VEOF - st.c_cc[VEOF] = '\004'; /* ^d */ + st.c_cc[VEOF] = '\004'; /* ^d */ #endif - tcsetattr(slave, TCSANOW, & st); - - switch (pid = fork()) { - case 0: - /* Child process */ - setsid(); #ifdef TIOCSCTTY + /* + * This may not necessary anymore given that we + * open the slave in the child, but it doesn't hurt. + */ ioctl(slave, TIOCSCTTY, 0); #endif + tcsetattr(slave, TCSANOW, & st); if (close(master) == -1) fatal(_("close of master pty failed (%s)"), strerror(errno)); @@ -1951,19 +1982,11 @@ two_way_open(const char *str, struct redirect *rp) case -1: save_errno = errno; close(master); - close(slave); errno = save_errno; return false; } - /* parent */ - if (close(slave) != 0) { - close(master); - (void) kill(pid, SIGKILL); - fatal(_("close of slave pty failed (%s)"), strerror(errno)); - } - rp->pid = pid; rp->iop = iop_alloc(master, str, 0); find_input_parser(rp->iop); @@ -2000,7 +2023,7 @@ two_way_open(const char *str, struct redirect *rp) first_pty_letter = '\0'; /* reset for next command */ return true; } -#endif /* defined(HAVE_TERMIOS_H) && ! defined(ZOS_USS) */ +#endif /* defined(HAVE_TERMIOS_H) */ use_pipes: #ifndef PIPES_SIMULATED /* real pipes */ @@ -2387,9 +2410,18 @@ gawk_popen(const char *cmd, struct redirect *rp) FILE *current; os_restore_mode(fileno(stdin)); +#ifdef SIGPIPE + signal(SIGPIPE, SIG_DFL); +#endif + current = popen(cmd, binmode("r")); + if ((BINMODE & BINMODE_INPUT) != 0) os_setbinmode(fileno(stdin), O_BINARY); +#ifdef SIGPIPE + signal(SIGPIPE, SIG_IGN); +#endif + if (current == NULL) return NULL; os_close_on_exec(fileno(current), cmd, "pipe", "from"); @@ -2456,6 +2488,9 @@ do_getline_redir(int into_variable, enum redirval redirtype) update_ERRNO_int(redir_error); } return make_number((AWKNUM) -1.0); + } else if ((rp->flag & RED_TWOWAY) != 0 && rp->iop == NULL) { + (void) close_rp(rp, CLOSE_ALL); + fatal(_("getline: attempt to read from closed read end of two-way pipe")); } iop = rp->iop; if (iop == NULL) /* end of input */ @@ -3649,7 +3684,7 @@ set_RS() if (RS->stlen == 0) { RS_is_null = true; matchrec = rsnullscan; - } else if (RS->stlen > 1) { + } else if (RS->stlen > 1 && ! do_traditional) { static bool warned = false; RS_re_yes_case = make_regexp(RS->stptr, RS->stlen, false, true, true); diff --git a/m4/ChangeLog b/m4/ChangeLog index 62d2a6e..e801ddc 100644 --- a/m4/ChangeLog +++ b/m4/ChangeLog @@ -1,3 +1,48 @@ +2016-08-25 Arnold D. Robbins + + * 4.1.4: Release tar ball made. + +2016-02-22 gettextize + + * gettext.m4: Upgrade to gettext-0.19.7. + * lib-ld.m4: Upgrade to gettext-0.19.7. + * lib-link.m4: Upgrade to gettext-0.19.7. + * lib-prefix.m4: Upgrade to gettext-0.19.7. + * nls.m4: Upgrade to gettext-0.19.7. + * po.m4: Upgrade to gettext-0.19.7. + * progtest.m4: Upgrade to gettext-0.19.7. + +2015-09-11 Daniel Richard G. + + * arch.m4: Rework again. In particular, provide a wrapper + for CC to work around some issues. + +2015-08-28 Daniel Richard G. + + * arch.m4: Complete rewrite of AC_ZOS_USS. It no longer + deletes awkgram.c and command.c on a z/OS system, as these are + now usable in EBCDIC-land without regeneration; it sets some + important CFLAGS/CPPFLAGS to enable standard compiler + behavior, like giving an error instead of a warning when a + header file cannot be found (!); prevents the use of cc(1), + which on z/OS does not build gawk correctly; and gives some + help to the user if s/he is building with c89(1), which + presents some difficulties due to its option syntax. + +2015-08-02 Arnold D. Robbins + + * codeset.m4, glibc2.m4, glibc21.m4, intdiv0.m4, intl.m4, + intlmacosx.m4, intmax.m4, inttypes-pri.m4, inttypes_h.m4, + lcmessage.m4, lock.m4, longlong.m4, printf-posix.m4, + size_max.m4, stdint_h.m4, visibility.m4, wchar_t.m4, + wint_t.m4, xsize.m4: Updated via autoreconf -f -i. + * extern-inline.m4, fcntl-o.m4, threadlib.m4: Added. + + +2015-06-15 Yuta SATOH + + * readline.m4: Add check for libtermcap on Gentoo/FreeBSD. + 2015-05-19 Arnold D. Robbins * 4.1.3: Release tar ball made. diff --git a/m4/arch.m4 b/m4/arch.m4 index 2402435..441602c 100644 --- a/m4/arch.m4 +++ b/m4/arch.m4 @@ -1,7 +1,8 @@ dnl dnl arch.m4 --- autoconf input file for gawk dnl -dnl Copyright (C) 1995, 1996, 1998, 1999, 2000, 2003, 2004 the Free Software Foundation, Inc. +dnl Copyright (C) 1995, 1996, 1998, 1999, 2000, 2003, 2004, 2015 +dnl the Free Software Foundation, Inc. dnl dnl This file is part of GAWK, the GNU implementation of the dnl AWK Progamming Language. @@ -61,14 +62,98 @@ AC_MSG_RESULT([${gawk_cv_linux_alpha_hack}]) dnl Check for z/OS Unix Systems Services AC_DEFUN([AC_ZOS_USS], [ AC_MSG_CHECKING([for z/OS USS compilation]) +AC_CACHE_VAL(ac_cv_zos_uss, [ if test "OS/390" = "`uname`" then - CFLAGS="$CFLAGS -D_ALL_SOURCE -DZOS_USS -DUSE_EBCDIC" - # Must rebuild awkgram.c and command.c from Bison for EBCDIC - rm -f awkgram.c command.c ac_cv_zos_uss=yes else ac_cv_zos_uss=no fi +])dnl AC_MSG_RESULT([${ac_cv_zos_uss}]) +if test "x$ac_cv_zos_uss" = "xyes" +then + dnl Identify the compiler. + ac_zos_uss_cc_id=unknown + echo " $CC " | $EGREP ' (/bin/)?c89[ |_]' >/dev/null && ac_zos_uss_cc_id=c89 + echo " $CC " | $EGREP ' (/bin/)?c99[ |_]' >/dev/null && ac_zos_uss_cc_id=xlc + echo " $CC " | $EGREP ' (/bin/)?cc[ |_]' >/dev/null && ac_zos_uss_cc_id=cc + echo " $CC " | $EGREP ' (/bin/)?xlc[ |_]' >/dev/null && ac_zos_uss_cc_id=xlc + echo " $CC " | $EGREP ' (/bin/)?xlC[ |_]' >/dev/null && ac_zos_uss_cc_id=xlc++ + echo " $CC " | $EGREP ' (/bin/)?xlc\+\+[ |_]' >/dev/null && ac_zos_uss_cc_id=xlc++ + test "x$GCC" = "xyes" && ac_zos_uss_cc_id=gcc + dnl These feature test macros are needed on z/OS. + CPPFLAGS="$CPPFLAGS -D_ALL_SOURCE" + test "$ac_zos_uss_cc_id" != xlc++ && CPPFLAGS="$CPPFLAGS -D_XOPEN_SOURCE=600" + case "$ac_zos_uss_cc_id" in + c89) + dnl If the user has set CC=c89 and _C89_OPTIONS, then don't get in + dnl their way. c89 (as well as cc) pre-dates xlc, and accepts an + dnl option syntax that involves parentheses and cannot be handled + dnl in the usual way in C(PP)FLAGS. However, c89 will also accept + dnl options via the aforementioned environment variable, which + dnl gives the user one way around the problem. (If you're + dnl wondering about cc, it is meant for programs written in + dnl "Common Usage C" [a.k.a. K&R C] as opposed to "Standard C" + dnl [a.k.a. ANSI], and does not build gawk correctly.) + if test -n "$_C89_OPTIONS" + then + AC_MSG_NOTICE([CC = $CC]) + AC_MSG_NOTICE([_C89_OPTIONS = $_C89_OPTIONS]) + else + AC_MSG_ERROR([c89-setup-required +To build GNU Awk using "c89", please set + + _C89_OPTIONS="-W c,langlvl(stdc99,libext),haltonmsg(CCN3296)" + +in your environment, and reconfigure. (The above flags cannot be specified +in CFLAGS/CPPFLAGS, due to the parentheses.)]) + fi + ;; + gcc) + dnl GCC has not yet been ported to z/OS as of this writing + ;; + cc) + AC_MSG_ERROR([cc-invalid +The z/OS "cc" compiler does not build GNU Awk correctly. + +If the "xlc" or "c89" compiler is available, please set CC accordingly +and reconfigure. ("xlc" is the recommended compiler on z/OS.)]) + ;; + xlc*) + dnl This enables C99, and on z/OS 1.11, the setenv() prototype. + CFLAGS="$CFLAGS -qlanglvl=stdc99:libext" + dnl Use a compiler wrapper script to address some annoyances. + cat >zos-cc < directives) rather +# than before. +# +# This script allows the code and the build system to assume standard +# compiler behavior. +# + +PS4='zos-cc: ' +REAL_CC="$CC" + +set -x +\$REAL_CC -qhaltonmsg=CCN3296 -qnosearch "\$[]@" -qsearch=/usr/include +EOF + chmod +x zos-cc + AC_MSG_NOTICE([wrapping $CC with zos-cc to obtain standard behavior]) + CC="`pwd`/zos-cc" + ;; + *) + AC_MSG_WARN([unrecognized compiler environment]) + ;; + esac +fi # ac_cv_zos_uss = yes ])dnl diff --git a/m4/codeset.m4 b/m4/codeset.m4 index a53c042..d7de8d6 100644 --- a/m4/codeset.m4 +++ b/m4/codeset.m4 @@ -1,5 +1,5 @@ -# codeset.m4 serial 4 (gettext-0.18) -dnl Copyright (C) 2000-2002, 2006, 2008-2010 Free Software Foundation, Inc. +# codeset.m4 serial 5 (gettext-0.18.2) +dnl Copyright (C) 2000-2002, 2006, 2008-2014 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. @@ -9,10 +9,12 @@ dnl From Bruno Haible. AC_DEFUN([AM_LANGINFO_CODESET], [ AC_CACHE_CHECK([for nl_langinfo and CODESET], [am_cv_langinfo_codeset], - [AC_TRY_LINK([#include ], - [char* cs = nl_langinfo(CODESET); return !cs;], - [am_cv_langinfo_codeset=yes], - [am_cv_langinfo_codeset=no]) + [AC_LINK_IFELSE( + [AC_LANG_PROGRAM( + [[#include ]], + [[char* cs = nl_langinfo(CODESET); return !cs;]])], + [am_cv_langinfo_codeset=yes], + [am_cv_langinfo_codeset=no]) ]) if test $am_cv_langinfo_codeset = yes; then AC_DEFINE([HAVE_LANGINFO_CODESET], [1], diff --git a/m4/extern-inline.m4 b/m4/extern-inline.m4 new file mode 100644 index 0000000..0edbe3c --- /dev/null +++ b/m4/extern-inline.m4 @@ -0,0 +1,100 @@ +dnl 'extern inline' a la ISO C99. + +dnl Copyright 2012-2014 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_EXTERN_INLINE], +[ + AH_VERBATIM([extern_inline], +[/* Please see the Gnulib manual for how to use these macros. + + Suppress extern inline with HP-UX cc, as it appears to be broken; see + . + + Suppress extern inline with Sun C in standards-conformance mode, as it + mishandles inline functions that call each other. E.g., for 'inline void f + (void) { } inline void g (void) { f (); }', c99 incorrectly complains + 'reference to static identifier "f" in extern inline function'. + This bug was observed with Sun C 5.12 SunOS_i386 2011/11/16. + + Suppress extern inline (with or without __attribute__ ((__gnu_inline__))) + on configurations that mistakenly use 'static inline' to implement + functions or macros in standard C headers like . For example, + if isdigit is mistakenly implemented via a static inline function, + a program containing an extern inline function that calls isdigit + may not work since the C standard prohibits extern inline functions + from calling static functions. This bug is known to occur on: + + OS X 10.8 and earlier; see: + http://lists.gnu.org/archive/html/bug-gnulib/2012-12/msg00023.html + + DragonFly; see + http://muscles.dragonflybsd.org/bulk/bleeding-edge-potential/latest-per-pkg/ah-tty-0.3.12.log + + FreeBSD; see: + http://lists.gnu.org/archive/html/bug-gnulib/2014-07/msg00104.html + + OS X 10.9 has a macro __header_inline indicating the bug is fixed for C and + for clang but remains for g++; see . + Assume DragonFly and FreeBSD will be similar. */ +#if (((defined __APPLE__ && defined __MACH__) \ + || defined __DragonFly__ || defined __FreeBSD__) \ + && (defined __header_inline \ + ? (defined __cplusplus && defined __GNUC_STDC_INLINE__ \ + && ! defined __clang__) \ + : ((! defined _DONT_USE_CTYPE_INLINE_ \ + && (defined __GNUC__ || defined __cplusplus)) \ + || (defined _FORTIFY_SOURCE && 0 < _FORTIFY_SOURCE \ + && defined __GNUC__ && ! defined __cplusplus)))) +# define _GL_EXTERN_INLINE_STDHEADER_BUG +#endif +#if ((__GNUC__ \ + ? defined __GNUC_STDC_INLINE__ && __GNUC_STDC_INLINE__ \ + : (199901L <= __STDC_VERSION__ \ + && !defined __HP_cc \ + && !(defined __SUNPRO_C && __STDC__))) \ + && !defined _GL_EXTERN_INLINE_STDHEADER_BUG) +# define _GL_INLINE inline +# define _GL_EXTERN_INLINE extern inline +# define _GL_EXTERN_INLINE_IN_USE +#elif (2 < __GNUC__ + (7 <= __GNUC_MINOR__) && !defined __STRICT_ANSI__ \ + && !defined _GL_EXTERN_INLINE_STDHEADER_BUG) +# if defined __GNUC_GNU_INLINE__ && __GNUC_GNU_INLINE__ + /* __gnu_inline__ suppresses a GCC 4.2 diagnostic. */ +# define _GL_INLINE extern inline __attribute__ ((__gnu_inline__)) +# else +# define _GL_INLINE extern inline +# endif +# define _GL_EXTERN_INLINE extern +# define _GL_EXTERN_INLINE_IN_USE +#else +# define _GL_INLINE static _GL_UNUSED +# define _GL_EXTERN_INLINE static _GL_UNUSED +#endif + +/* In GCC, suppress bogus "no previous prototype for 'FOO'" + and "no previous declaration for 'FOO'" diagnostics, + when FOO is an inline function in the header; see + and + . */ +#if 4 < __GNUC__ + (6 <= __GNUC_MINOR__) +# if defined __GNUC_STDC_INLINE__ && __GNUC_STDC_INLINE__ +# define _GL_INLINE_HEADER_CONST_PRAGMA +# else +# define _GL_INLINE_HEADER_CONST_PRAGMA \ + _Pragma ("GCC diagnostic ignored \"-Wsuggest-attribute=const\"") +# endif +# define _GL_INLINE_HEADER_BEGIN \ + _Pragma ("GCC diagnostic push") \ + _Pragma ("GCC diagnostic ignored \"-Wmissing-prototypes\"") \ + _Pragma ("GCC diagnostic ignored \"-Wmissing-declarations\"") \ + _GL_INLINE_HEADER_CONST_PRAGMA +# define _GL_INLINE_HEADER_END \ + _Pragma ("GCC diagnostic pop") +#else +# define _GL_INLINE_HEADER_BEGIN +# define _GL_INLINE_HEADER_END +#endif]) +]) diff --git a/m4/fcntl-o.m4 b/m4/fcntl-o.m4 new file mode 100644 index 0000000..43c9312 --- /dev/null +++ b/m4/fcntl-o.m4 @@ -0,0 +1,134 @@ +# fcntl-o.m4 serial 4 +dnl Copyright (C) 2006, 2009-2014 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 Written by Paul Eggert. + +# Test whether the flags O_NOATIME and O_NOFOLLOW actually work. +# Define HAVE_WORKING_O_NOATIME to 1 if O_NOATIME works, or to 0 otherwise. +# Define HAVE_WORKING_O_NOFOLLOW to 1 if O_NOFOLLOW works, or to 0 otherwise. +AC_DEFUN([gl_FCNTL_O_FLAGS], +[ + dnl Persuade glibc to define O_NOATIME and O_NOFOLLOW. + dnl AC_USE_SYSTEM_EXTENSIONS was introduced in autoconf 2.60 and obsoletes + dnl AC_GNU_SOURCE. + m4_ifdef([AC_USE_SYSTEM_EXTENSIONS], + [AC_REQUIRE([AC_USE_SYSTEM_EXTENSIONS])], + [AC_REQUIRE([AC_GNU_SOURCE])]) + + AC_CHECK_HEADERS_ONCE([unistd.h]) + AC_CHECK_FUNCS_ONCE([symlink]) + AC_CACHE_CHECK([for working fcntl.h], [gl_cv_header_working_fcntl_h], + [AC_RUN_IFELSE( + [AC_LANG_PROGRAM( + [[#include + #include + #if HAVE_UNISTD_H + # include + #else /* on Windows with MSVC */ + # include + # include + # defined sleep(n) _sleep ((n) * 1000) + #endif + #include + #ifndef O_NOATIME + #define O_NOATIME 0 + #endif + #ifndef O_NOFOLLOW + #define O_NOFOLLOW 0 + #endif + static int const constants[] = + { + O_CREAT, O_EXCL, O_NOCTTY, O_TRUNC, O_APPEND, + O_NONBLOCK, O_SYNC, O_ACCMODE, O_RDONLY, O_RDWR, O_WRONLY + }; + ]], + [[ + int result = !constants; + #if HAVE_SYMLINK + { + static char const sym[] = "conftest.sym"; + if (symlink ("/dev/null", sym) != 0) + result |= 2; + else + { + int fd = open (sym, O_WRONLY | O_NOFOLLOW | O_CREAT, 0); + if (fd >= 0) + { + close (fd); + result |= 4; + } + } + if (unlink (sym) != 0 || symlink (".", sym) != 0) + result |= 2; + else + { + int fd = open (sym, O_RDONLY | O_NOFOLLOW); + if (fd >= 0) + { + close (fd); + result |= 4; + } + } + unlink (sym); + } + #endif + { + static char const file[] = "confdefs.h"; + int fd = open (file, O_RDONLY | O_NOATIME); + if (fd < 0) + result |= 8; + else + { + struct stat st0; + if (fstat (fd, &st0) != 0) + result |= 16; + else + { + char c; + sleep (1); + if (read (fd, &c, 1) != 1) + result |= 24; + else + { + if (close (fd) != 0) + result |= 32; + else + { + struct stat st1; + if (stat (file, &st1) != 0) + result |= 40; + else + if (st0.st_atime != st1.st_atime) + result |= 64; + } + } + } + } + } + return result;]])], + [gl_cv_header_working_fcntl_h=yes], + [case $? in #( + 4) gl_cv_header_working_fcntl_h='no (bad O_NOFOLLOW)';; #( + 64) gl_cv_header_working_fcntl_h='no (bad O_NOATIME)';; #( + 68) gl_cv_header_working_fcntl_h='no (bad O_NOATIME, O_NOFOLLOW)';; #( + *) gl_cv_header_working_fcntl_h='no';; + esac], + [gl_cv_header_working_fcntl_h=cross-compiling])]) + + case $gl_cv_header_working_fcntl_h in #( + *O_NOATIME* | no | cross-compiling) ac_val=0;; #( + *) ac_val=1;; + esac + AC_DEFINE_UNQUOTED([HAVE_WORKING_O_NOATIME], [$ac_val], + [Define to 1 if O_NOATIME works.]) + + case $gl_cv_header_working_fcntl_h in #( + *O_NOFOLLOW* | no | cross-compiling) ac_val=0;; #( + *) ac_val=1;; + esac + AC_DEFINE_UNQUOTED([HAVE_WORKING_O_NOFOLLOW], [$ac_val], + [Define to 1 if O_NOFOLLOW works.]) +]) diff --git a/m4/gettext.m4 b/m4/gettext.m4 index be247bf..da31efe 100644 --- a/m4/gettext.m4 +++ b/m4/gettext.m4 @@ -1,16 +1,16 @@ -# gettext.m4 serial 66 (gettext-0.18.2) +# gettext.m4 serial 67 (gettext-0.19.6) dnl Copyright (C) 1995-2014 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 This file can be used in projects which are not available under dnl the GNU General Public License or the GNU Library General Public dnl License but which still want to provide support for the GNU gettext dnl functionality. dnl Please note that the actual code of the GNU gettext library is covered dnl by the GNU Library General Public License, and the rest of the GNU -dnl gettext package package is covered by the GNU General Public License. +dnl gettext package is covered by the GNU General Public License. dnl They are *not* in the public domain. dnl Authors: @@ -399,3 +399,7 @@ AC_DEFUN([AM_GNU_GETTEXT_NEED], dnl Usage: AM_GNU_GETTEXT_VERSION([gettext-version]) AC_DEFUN([AM_GNU_GETTEXT_VERSION], []) + + +dnl Usage: AM_GNU_GETTEXT_REQUIRE_VERSION([gettext-version]) +AC_DEFUN([AM_GNU_GETTEXT_REQUIRE_VERSION], []) diff --git a/m4/glibc2.m4 b/m4/glibc2.m4 index f148c12..71dd8a1 100644 --- a/m4/glibc2.m4 +++ b/m4/glibc2.m4 @@ -1,5 +1,6 @@ -# glibc2.m4 serial 2 -dnl Copyright (C) 2000-2002, 2004, 2008-2010 Free Software Foundation, Inc. +# glibc2.m4 serial 3 +dnl Copyright (C) 2000-2002, 2004, 2008, 2010-2014 Free Software Foundation, +dnl 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. @@ -15,7 +16,7 @@ AC_DEFUN([gt_GLIBC2], [ #include #ifdef __GNU_LIBRARY__ - #if (__GLIBC__ >= 2) + #if (__GLIBC__ >= 2) && !defined __UCLIBC__ Lucky GNU user #endif #endif diff --git a/m4/glibc21.m4 b/m4/glibc21.m4 index 68ada9d..ab58b71 100644 --- a/m4/glibc21.m4 +++ b/m4/glibc21.m4 @@ -1,17 +1,18 @@ -# glibc21.m4 serial 4 -dnl Copyright (C) 2000-2002, 2004, 2008-2010 Free Software Foundation, Inc. +# glibc21.m4 serial 5 +dnl Copyright (C) 2000-2002, 2004, 2008, 2010-2014 Free Software Foundation, +dnl 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. +# Test for the GNU C Library, version 2.1 or newer, or uClibc. # From Bruno Haible. AC_DEFUN([gl_GLIBC21], [ - AC_CACHE_CHECK([whether we are using the GNU C Library 2.1 or newer], + AC_CACHE_CHECK([whether we are using the GNU C Library >= 2.1 or uClibc], [ac_cv_gnu_library_2_1], - [AC_EGREP_CPP([Lucky GNU user], + [AC_EGREP_CPP([Lucky], [ #include #ifdef __GNU_LIBRARY__ @@ -19,6 +20,9 @@ AC_DEFUN([gl_GLIBC21], Lucky GNU user #endif #endif +#ifdef __UCLIBC__ + Lucky user +#endif ], [ac_cv_gnu_library_2_1=yes], [ac_cv_gnu_library_2_1=no]) diff --git a/m4/intdiv0.m4 b/m4/intdiv0.m4 index 289c4df..afa9acb 100644 --- a/m4/intdiv0.m4 +++ b/m4/intdiv0.m4 @@ -1,5 +1,5 @@ -# intdiv0.m4 serial 3 (gettext-0.18) -dnl Copyright (C) 2002, 2007-2010 Free Software Foundation, Inc. +# intdiv0.m4 serial 6 (gettext-0.18.2) +dnl Copyright (C) 2002, 2007-2008, 2010-2014 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. @@ -18,7 +18,7 @@ AC_DEFUN([gt_INTDIV0], changequote(,)dnl case "$host_os" in macos* | darwin[6-9]* | darwin[1-9][0-9]*) - # On MacOS X 10.2 or newer, just assume the same as when cross- + # On Mac OS X 10.2 or newer, just assume the same as when cross- # compiling. If we were to perform the real test, 1 Crash Report # dialog window would pop up. case "$host_cpu" in @@ -29,7 +29,8 @@ changequote(,)dnl esac changequote([,])dnl if test -z "$gt_cv_int_divbyzero_sigfpe"; then - AC_TRY_RUN([ + AC_RUN_IFELSE( + [AC_LANG_SOURCE([[ #include #include @@ -59,9 +60,11 @@ int main () z = x / y; nan = y / y; - exit (1); + exit (2); } -], [gt_cv_int_divbyzero_sigfpe=yes], [gt_cv_int_divbyzero_sigfpe=no], +]])], + [gt_cv_int_divbyzero_sigfpe=yes], + [gt_cv_int_divbyzero_sigfpe=no], [ # Guess based on the CPU. changequote(,)dnl diff --git a/m4/intl.m4 b/m4/intl.m4 index d18cc01..0c29ad0 100644 --- a/m4/intl.m4 +++ b/m4/intl.m4 @@ -1,5 +1,5 @@ -# intl.m4 serial 17 (gettext-0.18) -dnl Copyright (C) 1995-2009 Free Software Foundation, Inc. +# intl.m4 serial 28 (gettext-0.19) +dnl Copyright (C) 1995-2014 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. @@ -17,7 +17,7 @@ dnl Authors: dnl Ulrich Drepper , 1995-2000. dnl Bruno Haible , 2000-2009. -AC_PREREQ([2.52]) +AC_PREREQ([2.60]) dnl Checks for all prerequisites of the intl subdirectory, dnl except for INTL_LIBTOOL_SUFFIX_PREFIX (and possibly LIBTOOL), INTLOBJS, @@ -42,6 +42,8 @@ AC_DEFUN([AM_INTL_SUBDIR], AC_REQUIRE([gl_XSIZE])dnl AC_REQUIRE([gl_FCNTL_O_FLAGS])dnl AC_REQUIRE([gt_INTL_MACOSX])dnl + AC_REQUIRE([gl_EXTERN_INLINE])dnl + AC_REQUIRE([gt_GL_ATTRIBUTE])dnl dnl Support for automake's --enable-silent-rules. case "$enable_silent_rules" in @@ -55,21 +57,19 @@ AC_DEFUN([AM_INTL_SUBDIR], [AC_DEFINE([ptrdiff_t], [long], [Define as the type of the result of subtracting two pointers, if the system doesn't define it.]) ]) - AC_CHECK_HEADERS([stddef.h stdlib.h string.h]) + AC_CHECK_HEADERS([features.h stddef.h stdlib.h string.h]) AC_CHECK_FUNCS([asprintf fwprintf newlocale putenv setenv setlocale \ snprintf strnlen wcslen wcsnlen mbrtowc wcrtomb]) dnl Use the _snprintf function only if it is declared (because on NetBSD it dnl is defined as a weak alias of snprintf; we prefer to use the latter). - gt_CHECK_DECL(_snprintf, [#include ]) - gt_CHECK_DECL(_snwprintf, [#include ]) + AC_CHECK_DECLS([_snprintf, _snwprintf], , , [#include ]) dnl Use the *_unlocked functions only if they are declared. dnl (because some of them were defined without being declared in Solaris dnl 2.5.1 but were removed in Solaris 2.6, whereas we want binaries built dnl on Solaris 2.5.1 to run on Solaris 2.6). - dnl Don't use AC_CHECK_DECLS because it isn't supported in autoconf-2.13. - gt_CHECK_DECL(getc_unlocked, [#include ]) + AC_CHECK_DECLS([getc_unlocked], , , [#include ]) case $gt_cv_func_printf_posix in *yes) HAVE_POSIX_PRINTF=1 ;; @@ -220,9 +220,10 @@ AC_DEFUN([gt_INTL_SUBDIR_CORE], AC_REQUIRE([gt_INTTYPES_PRI])dnl AC_REQUIRE([gl_LOCK])dnl - AC_TRY_LINK( - [int foo (int a) { a = __builtin_expect (a, 10); return a == 10 ? 0 : 1; }], - [], + AC_LINK_IFELSE( + [AC_LANG_PROGRAM( + [[int foo (int a) { a = __builtin_expect (a, 10); return a == 10 ? 0 : 1; }]], + [[]])], [AC_DEFINE([HAVE_BUILTIN_EXPECT], [1], [Define to 1 if the compiler understands __builtin_expect.])]) @@ -235,16 +236,13 @@ AC_DEFUN([gt_INTL_SUBDIR_CORE], dnl (because some of them were defined without being declared in Solaris dnl 2.5.1 but were removed in Solaris 2.6, whereas we want binaries built dnl on Solaris 2.5.1 to run on Solaris 2.6). - dnl Don't use AC_CHECK_DECLS because it isn't supported in autoconf-2.13. - gt_CHECK_DECL([feof_unlocked], [#include ]) - gt_CHECK_DECL([fgets_unlocked], [#include ]) + AC_CHECK_DECLS([feof_unlocked, fgets_unlocked], , , [#include ]) AM_ICONV dnl intl/plural.c is generated from intl/plural.y. It requires bison, dnl because plural.y uses bison specific features. It requires at least - dnl bison-1.26 because earlier versions generate a plural.c that doesn't - dnl compile. + dnl bison-2.7 for %define api.pure. dnl bison is only needed for the maintainer (who touches plural.y). But in dnl order to avoid separate Makefiles or --enable-maintainer-mode, we put dnl the rule in general Makefile. Now, some people carelessly touch the @@ -261,7 +259,7 @@ changequote(<<,>>)dnl ac_prog_version=`$INTLBISON --version 2>&1 | sed -n 's/^.*GNU Bison.* \([0-9]*\.[0-9.]*\).*$/\1/p'` case $ac_prog_version in '') ac_prog_version="v. ?.??, bad"; ac_verc_fail=yes;; - 1.2[6-9]* | 1.[3-9][0-9]* | [2-9].*) + 2.[7-9]* | [3-9].*) changequote([,])dnl ac_prog_version="$ac_prog_version, ok"; ac_verc_fail=no;; *) ac_prog_version="$ac_prog_version, bad"; ac_verc_fail=yes;; @@ -273,22 +271,28 @@ changequote([,])dnl fi ]) +dnl Copies _GL_UNUSED and _GL_ATTRIBUTE_PURE definitions from +dnl gnulib-common.m4 as a fallback, if the project isn't using Gnulib. +AC_DEFUN([gt_GL_ATTRIBUTE], [ + m4_ifndef([gl_[]COMMON], + AH_VERBATIM([gt_gl_attribute], +[/* Define as a marker that can be attached to declarations that might not + be used. This helps to reduce warnings, such as from + GCC -Wunused-parameter. */ +#ifndef _GL_UNUSED +# if __GNUC__ >= 3 || (__GNUC__ == 2 && __GNUC_MINOR__ >= 7) +# define _GL_UNUSED __attribute__ ((__unused__)) +# else +# define _GL_UNUSED +# endif +#endif -dnl gt_CHECK_DECL(FUNC, INCLUDES) -dnl Check whether a function is declared. -AC_DEFUN([gt_CHECK_DECL], -[ - AC_CACHE_CHECK([whether $1 is declared], [ac_cv_have_decl_$1], - [AC_TRY_COMPILE([$2], [ -#ifndef $1 - char *p = (char *) $1; +/* The __pure__ attribute was added in gcc 2.96. */ +#ifndef _GL_ATTRIBUTE_PURE +# if __GNUC__ > 2 || (__GNUC__ == 2 && __GNUC_MINOR__ >= 96) +# define _GL_ATTRIBUTE_PURE __attribute__ ((__pure__)) +# else +# define _GL_ATTRIBUTE_PURE /* empty */ +# endif #endif -], ac_cv_have_decl_$1=yes, ac_cv_have_decl_$1=no)]) - if test $ac_cv_have_decl_$1 = yes; then - gt_value=1 - else - gt_value=0 - fi - AC_DEFINE_UNQUOTED([HAVE_DECL_]translit($1, [a-z], [A-Z]), [$gt_value], - [Define to 1 if you have the declaration of `$1', and to 0 if you don't.]) -]) +]))]) diff --git a/m4/intlmacosx.m4 b/m4/intlmacosx.m4 index dd91025..8a045f6 100644 --- a/m4/intlmacosx.m4 +++ b/m4/intlmacosx.m4 @@ -1,5 +1,5 @@ -# intlmacosx.m4 serial 3 (gettext-0.18) -dnl Copyright (C) 2004-2010 Free Software Foundation, Inc. +# intlmacosx.m4 serial 5 (gettext-0.18.2) +dnl Copyright (C) 2004-2014 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. @@ -13,35 +13,40 @@ dnl by the GNU Library General Public License, and the rest of the GNU dnl gettext package package is covered by the GNU General Public License. dnl They are *not* in the public domain. -dnl Checks for special options needed on MacOS X. +dnl Checks for special options needed on Mac OS X. dnl Defines INTL_MACOSX_LIBS. AC_DEFUN([gt_INTL_MACOSX], [ - dnl Check for API introduced in MacOS X 10.2. + dnl Check for API introduced in Mac OS X 10.2. AC_CACHE_CHECK([for CFPreferencesCopyAppValue], [gt_cv_func_CFPreferencesCopyAppValue], [gt_save_LIBS="$LIBS" LIBS="$LIBS -Wl,-framework -Wl,CoreFoundation" - AC_TRY_LINK([#include ], - [CFPreferencesCopyAppValue(NULL, NULL)], + AC_LINK_IFELSE( + [AC_LANG_PROGRAM( + [[#include ]], + [[CFPreferencesCopyAppValue(NULL, NULL)]])], [gt_cv_func_CFPreferencesCopyAppValue=yes], [gt_cv_func_CFPreferencesCopyAppValue=no]) 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.]) + [Define to 1 if you have the Mac OS X function CFPreferencesCopyAppValue in the CoreFoundation framework.]) fi - dnl Check for API introduced in MacOS X 10.3. + dnl Check for API introduced in Mac OS X 10.3. AC_CACHE_CHECK([for CFLocaleCopyCurrent], [gt_cv_func_CFLocaleCopyCurrent], [gt_save_LIBS="$LIBS" LIBS="$LIBS -Wl,-framework -Wl,CoreFoundation" - AC_TRY_LINK([#include ], [CFLocaleCopyCurrent();], + AC_LINK_IFELSE( + [AC_LANG_PROGRAM( + [[#include ]], + [[CFLocaleCopyCurrent();]])], [gt_cv_func_CFLocaleCopyCurrent=yes], [gt_cv_func_CFLocaleCopyCurrent=no]) 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.]) + [Define to 1 if you have the Mac OS 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 diff --git a/m4/intmax.m4 b/m4/intmax.m4 index 74aaaf5..f70ceee 100644 --- a/m4/intmax.m4 +++ b/m4/intmax.m4 @@ -1,5 +1,5 @@ -# intmax.m4 serial 5 (gettext-0.18) -dnl Copyright (C) 2002-2005, 2008-2010 Free Software Foundation, Inc. +# intmax.m4 serial 6 (gettext-0.18.2) +dnl Copyright (C) 2002-2005, 2008-2014 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. @@ -13,7 +13,9 @@ AC_DEFUN([gt_TYPE_INTMAX_T], 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([ + [AC_COMPILE_IFELSE( + [AC_LANG_PROGRAM( + [[ #include #include #if HAVE_STDINT_H_WITH_UINTMAX @@ -22,8 +24,9 @@ AC_DEFUN([gt_TYPE_INTMAX_T], #if HAVE_INTTYPES_H_WITH_UINTMAX #include #endif -], [intmax_t x = -1; - return !x;], + ]], + [[intmax_t x = -1; + return !x;]])], [gt_cv_c_intmax_t=yes], [gt_cv_c_intmax_t=no])]) if test $gt_cv_c_intmax_t = yes; then diff --git a/m4/inttypes-pri.m4 b/m4/inttypes-pri.m4 index 718a4f4..00251e1 100644 --- a/m4/inttypes-pri.m4 +++ b/m4/inttypes-pri.m4 @@ -1,12 +1,12 @@ -# inttypes-pri.m4 serial 6 (gettext-0.18) -dnl Copyright (C) 1997-2002, 2006, 2008-2010 Free Software Foundation, Inc. +# inttypes-pri.m4 serial 7 (gettext-0.18.2) +dnl Copyright (C) 1997-2002, 2006, 2008-2014 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.52]) +AC_PREREQ([2.53]) # Define PRI_MACROS_BROKEN if exists and defines the PRI* # macros to non-string values. This is the case on AIX 4.3.3. @@ -18,11 +18,17 @@ AC_DEFUN([gt_INTTYPES_PRI], AC_CACHE_CHECK([whether the inttypes.h PRIxNN macros are broken], [gt_cv_inttypes_pri_broken], [ - AC_TRY_COMPILE([#include + AC_COMPILE_IFELSE( + [AC_LANG_PROGRAM( + [[ +#include #ifdef PRId32 char *p = PRId32; #endif -], [], [gt_cv_inttypes_pri_broken=no], [gt_cv_inttypes_pri_broken=yes]) + ]], + [[]])], + [gt_cv_inttypes_pri_broken=no], + [gt_cv_inttypes_pri_broken=yes]) ]) fi if test "$gt_cv_inttypes_pri_broken" = yes; then diff --git a/m4/inttypes_h.m4 b/m4/inttypes_h.m4 index 782d77e..87be9cf 100644 --- a/m4/inttypes_h.m4 +++ b/m4/inttypes_h.m4 @@ -1,5 +1,5 @@ -# inttypes_h.m4 serial 9 -dnl Copyright (C) 1997-2004, 2006, 2008-2010 Free Software Foundation, Inc. +# inttypes_h.m4 serial 10 +dnl Copyright (C) 1997-2004, 2006, 2008-2014 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. @@ -12,12 +12,15 @@ dnl From Paul Eggert. AC_DEFUN([gl_AC_HEADER_INTTYPES_H], [ AC_CACHE_CHECK([for inttypes.h], [gl_cv_header_inttypes_h], - [AC_TRY_COMPILE( - [#include -#include ], - [uintmax_t i = (uintmax_t) -1; return !i;], - [gl_cv_header_inttypes_h=yes], - [gl_cv_header_inttypes_h=no])]) + [AC_COMPILE_IFELSE( + [AC_LANG_PROGRAM( + [[ +#include +#include + ]], + [[uintmax_t i = (uintmax_t) -1; return !i;]])], + [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 exists, doesn't clash with , diff --git a/m4/lcmessage.m4 b/m4/lcmessage.m4 index 1a70543..7470ec5 100644 --- a/m4/lcmessage.m4 +++ b/m4/lcmessage.m4 @@ -1,5 +1,5 @@ -# lcmessage.m4 serial 6 (gettext-0.18) -dnl Copyright (C) 1995-2002, 2004-2005, 2008-2010 Free Software Foundation, +# lcmessage.m4 serial 7 (gettext-0.18.2) +dnl Copyright (C) 1995-2002, 2004-2005, 2008-2014 Free Software Foundation, dnl Inc. dnl This file is free software; the Free Software Foundation dnl gives unlimited permission to copy and/or distribute it, @@ -22,8 +22,12 @@ dnl Ulrich Drepper , 1995. AC_DEFUN([gt_LC_MESSAGES], [ AC_CACHE_CHECK([for LC_MESSAGES], [gt_cv_val_LC_MESSAGES], - [AC_TRY_LINK([#include ], [return LC_MESSAGES], - [gt_cv_val_LC_MESSAGES=yes], [gt_cv_val_LC_MESSAGES=no])]) + [AC_LINK_IFELSE( + [AC_LANG_PROGRAM( + [[#include ]], + [[return LC_MESSAGES]])], + [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 file defines LC_MESSAGES.]) diff --git a/m4/lib-ld.m4 b/m4/lib-ld.m4 index ddc569f..91ca911 100644 --- a/m4/lib-ld.m4 +++ b/m4/lib-ld.m4 @@ -1,5 +1,5 @@ # lib-ld.m4 serial 6 -dnl Copyright (C) 1996-2003, 2009-2014 Free Software Foundation, Inc. +dnl Copyright (C) 1996-2003, 2009-2015 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. diff --git a/m4/lib-link.m4 b/m4/lib-link.m4 index 3522d99..d8d5d1f 100644 --- a/m4/lib-link.m4 +++ b/m4/lib-link.m4 @@ -1,5 +1,5 @@ # lib-link.m4 serial 26 (gettext-0.18.2) -dnl Copyright (C) 2001-2014 Free Software Foundation, Inc. +dnl Copyright (C) 2001-2015 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. diff --git a/m4/lib-prefix.m4 b/m4/lib-prefix.m4 index 31f49e4..0465f47 100644 --- a/m4/lib-prefix.m4 +++ b/m4/lib-prefix.m4 @@ -1,5 +1,5 @@ # lib-prefix.m4 serial 7 (gettext-0.18) -dnl Copyright (C) 2001-2005, 2008-2014 Free Software Foundation, Inc. +dnl Copyright (C) 2001-2005, 2008-2015 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. diff --git a/m4/lock.m4 b/m4/lock.m4 index 9da8465..73a3c54 100644 --- a/m4/lock.m4 +++ b/m4/lock.m4 @@ -1,5 +1,5 @@ -# lock.m4 serial 10 (gettext-0.18) -dnl Copyright (C) 2005-2010 Free Software Foundation, Inc. +# lock.m4 serial 13 (gettext-0.18.2) +dnl Copyright (C) 2005-2014 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. @@ -10,7 +10,7 @@ AC_DEFUN([gl_LOCK], [ AC_REQUIRE([gl_THREADLIB]) if test "$gl_threads_api" = posix; then - # OSF/1 4.0 and MacOS X 10.1 lack the pthread_rwlock_t type and the + # OSF/1 4.0 and Mac OS X 10.1 lack the pthread_rwlock_t type and the # pthread_rwlock_* functions. AC_CHECK_TYPE([pthread_rwlock_t], [AC_DEFINE([HAVE_PTHREAD_RWLOCK], [1], @@ -18,20 +18,25 @@ AC_DEFUN([gl_LOCK], [], [#include ]) # glibc defines PTHREAD_MUTEX_RECURSIVE as enum, not as a macro. - AC_TRY_COMPILE([#include ], - [#if __FreeBSD__ == 4 + AC_COMPILE_IFELSE([ + AC_LANG_PROGRAM( + [[#include ]], + [[ +#if __FreeBSD__ == 4 error "No, in FreeBSD 4.0 recursive mutexes actually don't work." +#elif (defined __ENVIRONMENT_MAC_OS_X_VERSION_MIN_REQUIRED__ \ + && __ENVIRONMENT_MAC_OS_X_VERSION_MIN_REQUIRED__ < 1070) +error "No, in Mac OS X < 10.7 recursive mutexes actually don't work." #else int x = (int)PTHREAD_MUTEX_RECURSIVE; return !x; -#endif], +#endif + ]])], [AC_DEFINE([HAVE_PTHREAD_MUTEX_RECURSIVE], [1], [Define if the defines PTHREAD_MUTEX_RECURSIVE.])]) fi gl_PREREQ_LOCK ]) -# Prerequisites of lib/lock.c. -AC_DEFUN([gl_PREREQ_LOCK], [ - AC_REQUIRE([AC_C_INLINE]) -]) +# Prerequisites of lib/glthread/lock.c. +AC_DEFUN([gl_PREREQ_LOCK], [:]) diff --git a/m4/longlong.m4 b/m4/longlong.m4 index cca3c1a..eefb37c 100644 --- a/m4/longlong.m4 +++ b/m4/longlong.m4 @@ -1,5 +1,5 @@ -# longlong.m4 serial 14 -dnl Copyright (C) 1999-2007, 2009-2010 Free Software Foundation, Inc. +# longlong.m4 serial 17 +dnl Copyright (C) 1999-2007, 2009-2014 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. @@ -7,8 +7,8 @@ dnl with or without modifications, as long as this notice is preserved. dnl From Paul Eggert. # Define HAVE_LONG_LONG_INT if 'long long int' works. -# This fixes a bug in Autoconf 2.61, but can be removed once we -# assume 2.62 everywhere. +# This fixes a bug in Autoconf 2.61, and can be faster +# than what's in Autoconf 2.62 through 2.68. # Note: If the type 'long long int' exists but is only 32 bits large # (as on some very old compilers), HAVE_LONG_LONG_INT will not be @@ -16,44 +16,48 @@ dnl From Paul Eggert. AC_DEFUN([AC_TYPE_LONG_LONG_INT], [ + AC_REQUIRE([AC_TYPE_UNSIGNED_LONG_LONG_INT]) AC_CACHE_CHECK([for long long int], [ac_cv_type_long_long_int], - [AC_LINK_IFELSE( - [_AC_TYPE_LONG_LONG_SNIPPET], - [dnl This catches a bug in Tandem NonStop Kernel (OSS) cc -O circa 2004. - dnl If cross compiling, assume the bug isn't important, since - dnl nobody cross compiles for this platform as far as we know. - AC_RUN_IFELSE( - [AC_LANG_PROGRAM( - [[@%:@include - @%:@ifndef LLONG_MAX - @%:@ define HALF \ - (1LL << (sizeof (long long int) * CHAR_BIT - 2)) - @%:@ define LLONG_MAX (HALF - 1 + HALF) - @%:@endif]], - [[long long int n = 1; - int i; - for (i = 0; ; i++) - { - long long int m = n << i; - if (m >> i != n) - return 1; - if (LLONG_MAX / 2 < m) - break; - } - return 0;]])], - [ac_cv_type_long_long_int=yes], - [ac_cv_type_long_long_int=no], - [ac_cv_type_long_long_int=yes])], - [ac_cv_type_long_long_int=no])]) + [ac_cv_type_long_long_int=yes + if test "x${ac_cv_prog_cc_c99-no}" = xno; then + ac_cv_type_long_long_int=$ac_cv_type_unsigned_long_long_int + if test $ac_cv_type_long_long_int = yes; then + dnl Catch a bug in Tandem NonStop Kernel (OSS) cc -O circa 2004. + dnl If cross compiling, assume the bug is not important, since + dnl nobody cross compiles for this platform as far as we know. + AC_RUN_IFELSE( + [AC_LANG_PROGRAM( + [[@%:@include + @%:@ifndef LLONG_MAX + @%:@ define HALF \ + (1LL << (sizeof (long long int) * CHAR_BIT - 2)) + @%:@ define LLONG_MAX (HALF - 1 + HALF) + @%:@endif]], + [[long long int n = 1; + int i; + for (i = 0; ; i++) + { + long long int m = n << i; + if (m >> i != n) + return 1; + if (LLONG_MAX / 2 < m) + break; + } + return 0;]])], + [], + [ac_cv_type_long_long_int=no], + [:]) + fi + fi]) if test $ac_cv_type_long_long_int = yes; then AC_DEFINE([HAVE_LONG_LONG_INT], [1], - [Define to 1 if the system has the type `long long int'.]) + [Define to 1 if the system has the type 'long long int'.]) fi ]) # Define HAVE_UNSIGNED_LONG_LONG_INT if 'unsigned long long int' works. -# This fixes a bug in Autoconf 2.61, but can be removed once we -# assume 2.62 everywhere. +# This fixes a bug in Autoconf 2.61, and can be faster +# than what's in Autoconf 2.62 through 2.68. # Note: If the type 'unsigned long long int' exists but is only 32 bits # large (as on some very old compilers), AC_TYPE_UNSIGNED_LONG_LONG_INT @@ -64,13 +68,16 @@ AC_DEFUN([AC_TYPE_UNSIGNED_LONG_LONG_INT], [ AC_CACHE_CHECK([for unsigned long long int], [ac_cv_type_unsigned_long_long_int], - [AC_LINK_IFELSE( - [_AC_TYPE_LONG_LONG_SNIPPET], - [ac_cv_type_unsigned_long_long_int=yes], - [ac_cv_type_unsigned_long_long_int=no])]) + [ac_cv_type_unsigned_long_long_int=yes + if test "x${ac_cv_prog_cc_c99-no}" = xno; then + AC_LINK_IFELSE( + [_AC_TYPE_LONG_LONG_SNIPPET], + [], + [ac_cv_type_unsigned_long_long_int=no]) + fi]) if test $ac_cv_type_unsigned_long_long_int = yes; then AC_DEFINE([HAVE_UNSIGNED_LONG_LONG_INT], [1], - [Define to 1 if the system has the type `unsigned long long int'.]) + [Define to 1 if the system has the type 'unsigned long long int'.]) fi ]) diff --git a/m4/nls.m4 b/m4/nls.m4 index 53cdc8b..93df8d3 100644 --- a/m4/nls.m4 +++ b/m4/nls.m4 @@ -5,13 +5,13 @@ 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 This file can be used in projects which are not available under dnl the GNU General Public License or the GNU Library General Public dnl License but which still want to provide support for the GNU gettext dnl functionality. dnl Please note that the actual code of the GNU gettext library is covered dnl by the GNU Library General Public License, and the rest of the GNU -dnl gettext package package is covered by the GNU General Public License. +dnl gettext package is covered by the GNU General Public License. dnl They are *not* in the public domain. dnl Authors: diff --git a/m4/po.m4 b/m4/po.m4 index 43012dc..d4bc262 100644 --- a/m4/po.m4 +++ b/m4/po.m4 @@ -4,13 +4,13 @@ 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 This file can be used in projects which are not available under dnl the GNU General Public License or the GNU Library General Public dnl License but which still want to provide support for the GNU gettext dnl functionality. dnl Please note that the actual code of the GNU gettext library is covered dnl by the GNU Library General Public License, and the rest of the GNU -dnl gettext package package is covered by the GNU General Public License. +dnl gettext package is covered by the GNU General Public License. dnl They are *not* in the public domain. dnl Authors: diff --git a/m4/printf-posix.m4 b/m4/printf-posix.m4 index 1eacf95..3be95c1 100644 --- a/m4/printf-posix.m4 +++ b/m4/printf-posix.m4 @@ -1,5 +1,5 @@ -# printf-posix.m4 serial 5 (gettext-0.18) -dnl Copyright (C) 2003, 2007, 2009-2010 Free Software Foundation, Inc. +# printf-posix.m4 serial 6 (gettext-0.18.2) +dnl Copyright (C) 2003, 2007, 2009-2014 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. @@ -14,7 +14,8 @@ AC_DEFUN([gt_PRINTF_POSIX], AC_CACHE_CHECK([whether printf() supports POSIX/XSI format strings], gt_cv_func_printf_posix, [ - AC_TRY_RUN([ + AC_RUN_IFELSE( + [AC_LANG_SOURCE([[ #include #include /* The string "%2$d %1$d", with dollar characters protected from the shell's @@ -25,16 +26,18 @@ int main () { sprintf (buf, format, 33, 55); return (strcmp (buf, "55 33") != 0); -}], gt_cv_func_printf_posix=yes, gt_cv_func_printf_posix=no, - [ - AC_EGREP_CPP([notposix], [ +}]])], + [gt_cv_func_printf_posix=yes], + [gt_cv_func_printf_posix=no], + [ + AC_EGREP_CPP([notposix], [ #if defined __NetBSD__ || defined __BEOS__ || defined _MSC_VER || defined __MINGW32__ || defined __CYGWIN__ notposix #endif - ], - [gt_cv_func_printf_posix="guessing no"], - [gt_cv_func_printf_posix="guessing yes"]) - ]) + ], + [gt_cv_func_printf_posix="guessing no"], + [gt_cv_func_printf_posix="guessing yes"]) + ]) ]) case $gt_cv_func_printf_posix in *yes) diff --git a/m4/progtest.m4 b/m4/progtest.m4 index b499f79..0921e1e 100644 --- a/m4/progtest.m4 +++ b/m4/progtest.m4 @@ -1,16 +1,16 @@ # progtest.m4 serial 7 (gettext-0.18.2) -dnl Copyright (C) 1996-2003, 2005, 2008-2014 Free Software Foundation, Inc. +dnl Copyright (C) 1996-2003, 2005, 2008-2015 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 This file can be used in projects which are not available under dnl the GNU General Public License or the GNU Library General Public dnl License but which still want to provide support for the GNU gettext dnl functionality. dnl Please note that the actual code of the GNU gettext library is covered dnl by the GNU Library General Public License, and the rest of the GNU -dnl gettext package package is covered by the GNU General Public License. +dnl gettext package is covered by the GNU General Public License. dnl They are *not* in the public domain. dnl Authors: diff --git a/m4/readline.m4 b/m4/readline.m4 index 740b9c7..5c0bb1e 100644 --- a/m4/readline.m4 +++ b/m4/readline.m4 @@ -92,7 +92,7 @@ dnl action if not found: if test $_found_readline = yes ; then case $host_os in - *bsd* ) _combo="$_combo -ltermcap" + *bsd* ) AC_CHECK_LIB(termcap, tgetent, _combo="$_combo -ltermcap") ;; esac AC_DEFINE(HAVE_LIBREADLINE,1, diff --git a/m4/size_max.m4 b/m4/size_max.m4 index ce992db..7e192d5 100644 --- a/m4/size_max.m4 +++ b/m4/size_max.m4 @@ -1,5 +1,5 @@ -# size_max.m4 serial 9 -dnl Copyright (C) 2003, 2005-2006, 2008-2010 Free Software Foundation, Inc. +# size_max.m4 serial 10 +dnl Copyright (C) 2003, 2005-2006, 2008-2014 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. @@ -34,10 +34,14 @@ Found it if test $fits_in_uint = 1; then dnl Even though SIZE_MAX fits in an unsigned int, it must be of type dnl 'unsigned long' if the type 'size_t' is the same as 'unsigned long'. - AC_TRY_COMPILE([#include - extern size_t foo; - extern unsigned long foo; - ], [], [fits_in_uint=0]) + AC_COMPILE_IFELSE( + [AC_LANG_PROGRAM( + [[#include + extern size_t foo; + extern unsigned long foo; + ]], + [[]])], + [fits_in_uint=0]) fi dnl We cannot use 'expr' to simplify this expression, because 'expr' dnl works only with 'long' integers in the host environment, while we diff --git a/m4/stdint_h.m4 b/m4/stdint_h.m4 index b8e3c6c..7fc2ce9 100644 --- a/m4/stdint_h.m4 +++ b/m4/stdint_h.m4 @@ -1,5 +1,5 @@ -# stdint_h.m4 serial 8 -dnl Copyright (C) 1997-2004, 2006, 2008-2010 Free Software Foundation, Inc. +# stdint_h.m4 serial 9 +dnl Copyright (C) 1997-2004, 2006, 2008-2014 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. @@ -12,12 +12,13 @@ dnl From Paul Eggert. AC_DEFUN([gl_AC_HEADER_STDINT_H], [ AC_CACHE_CHECK([for stdint.h], [gl_cv_header_stdint_h], - [AC_TRY_COMPILE( - [#include -#include ], - [uintmax_t i = (uintmax_t) -1; return !i;], - [gl_cv_header_stdint_h=yes], - [gl_cv_header_stdint_h=no])]) + [AC_COMPILE_IFELSE( + [AC_LANG_PROGRAM( + [[#include + #include ]], + [[uintmax_t i = (uintmax_t) -1; return !i;]])], + [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 exists, doesn't clash with , diff --git a/m4/threadlib.m4 b/m4/threadlib.m4 new file mode 100644 index 0000000..dc9a3d8 --- /dev/null +++ b/m4/threadlib.m4 @@ -0,0 +1,389 @@ +# threadlib.m4 serial 11 (gettext-0.18.2) +dnl Copyright (C) 2005-2014 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 gl_THREADLIB +dnl ------------ +dnl Tests for a multithreading library to be used. +dnl If the configure.ac contains a definition of the gl_THREADLIB_DEFAULT_NO +dnl (it must be placed before the invocation of gl_THREADLIB_EARLY!), then the +dnl default is 'no', otherwise it is system dependent. In both cases, the user +dnl can change the choice through the options --enable-threads=choice or +dnl --disable-threads. +dnl Defines at most one of the macros USE_POSIX_THREADS, USE_SOLARIS_THREADS, +dnl USE_PTH_THREADS, USE_WINDOWS_THREADS +dnl Sets the variables LIBTHREAD and LTLIBTHREAD to the linker options for use +dnl in a Makefile (LIBTHREAD for use without libtool, LTLIBTHREAD for use with +dnl libtool). +dnl Sets the variables LIBMULTITHREAD and LTLIBMULTITHREAD similarly, for +dnl programs that really need multithread functionality. The difference +dnl between LIBTHREAD and LIBMULTITHREAD is that on platforms supporting weak +dnl symbols, typically LIBTHREAD is empty whereas LIBMULTITHREAD is not. +dnl Adds to CPPFLAGS the flag -D_REENTRANT or -D_THREAD_SAFE if needed for +dnl multithread-safe programs. + +AC_DEFUN([gl_THREADLIB_EARLY], +[ + AC_REQUIRE([gl_THREADLIB_EARLY_BODY]) +]) + +dnl The guts of gl_THREADLIB_EARLY. Needs to be expanded only once. + +AC_DEFUN([gl_THREADLIB_EARLY_BODY], +[ + dnl Ordering constraints: This macro modifies CPPFLAGS in a way that + dnl influences the result of the autoconf tests that test for *_unlocked + dnl declarations, on AIX 5 at least. Therefore it must come early. + AC_BEFORE([$0], [gl_FUNC_GLIBC_UNLOCKED_IO])dnl + AC_BEFORE([$0], [gl_ARGP])dnl + + AC_REQUIRE([AC_CANONICAL_HOST]) + dnl _GNU_SOURCE is needed for pthread_rwlock_t on glibc systems. + dnl AC_USE_SYSTEM_EXTENSIONS was introduced in autoconf 2.60 and obsoletes + dnl AC_GNU_SOURCE. + m4_ifdef([AC_USE_SYSTEM_EXTENSIONS], + [AC_REQUIRE([AC_USE_SYSTEM_EXTENSIONS])], + [AC_REQUIRE([AC_GNU_SOURCE])]) + dnl Check for multithreading. + m4_ifdef([gl_THREADLIB_DEFAULT_NO], + [m4_divert_text([DEFAULTS], [gl_use_threads_default=no])], + [m4_divert_text([DEFAULTS], [gl_use_threads_default=])]) + AC_ARG_ENABLE([threads], +AC_HELP_STRING([--enable-threads={posix|solaris|pth|windows}], [specify multithreading API])m4_ifdef([gl_THREADLIB_DEFAULT_NO], [], [ +AC_HELP_STRING([--disable-threads], [build without multithread safety])]), + [gl_use_threads=$enableval], + [if test -n "$gl_use_threads_default"; then + gl_use_threads="$gl_use_threads_default" + else +changequote(,)dnl + case "$host_os" in + dnl Disable multithreading by default on OSF/1, because it interferes + dnl with fork()/exec(): When msgexec is linked with -lpthread, its + dnl child process gets an endless segmentation fault inside execvp(). + dnl Disable multithreading by default on Cygwin 1.5.x, because it has + dnl bugs that lead to endless loops or crashes. See + dnl . + osf*) gl_use_threads=no ;; + cygwin*) + case `uname -r` in + 1.[0-5].*) gl_use_threads=no ;; + *) gl_use_threads=yes ;; + esac + ;; + *) gl_use_threads=yes ;; + esac +changequote([,])dnl + fi + ]) + if test "$gl_use_threads" = yes || test "$gl_use_threads" = posix; then + # For using : + case "$host_os" in + osf*) + # On OSF/1, the compiler needs the flag -D_REENTRANT so that it + # groks . cc also understands the flag -pthread, but + # we don't use it because 1. gcc-2.95 doesn't understand -pthread, + # 2. putting a flag into CPPFLAGS that has an effect on the linker + # causes the AC_LINK_IFELSE test below to succeed unexpectedly, + # leading to wrong values of LIBTHREAD and LTLIBTHREAD. + CPPFLAGS="$CPPFLAGS -D_REENTRANT" + ;; + esac + # Some systems optimize for single-threaded programs by default, and + # need special flags to disable these optimizations. For example, the + # definition of 'errno' in . + case "$host_os" in + aix* | freebsd*) CPPFLAGS="$CPPFLAGS -D_THREAD_SAFE" ;; + solaris*) CPPFLAGS="$CPPFLAGS -D_REENTRANT" ;; + esac + fi +]) + +dnl The guts of gl_THREADLIB. Needs to be expanded only once. + +AC_DEFUN([gl_THREADLIB_BODY], +[ + AC_REQUIRE([gl_THREADLIB_EARLY_BODY]) + gl_threads_api=none + LIBTHREAD= + LTLIBTHREAD= + LIBMULTITHREAD= + LTLIBMULTITHREAD= + if test "$gl_use_threads" != no; then + dnl Check whether the compiler and linker support weak declarations. + AC_CACHE_CHECK([whether imported symbols can be declared weak], + [gl_cv_have_weak], + [gl_cv_have_weak=no + dnl First, test whether the compiler accepts it syntactically. + AC_LINK_IFELSE( + [AC_LANG_PROGRAM( + [[extern void xyzzy (); +#pragma weak xyzzy]], + [[xyzzy();]])], + [gl_cv_have_weak=maybe]) + if test $gl_cv_have_weak = maybe; then + dnl Second, test whether it actually works. On Cygwin 1.7.2, with + dnl gcc 4.3, symbols declared weak always evaluate to the address 0. + AC_RUN_IFELSE( + [AC_LANG_SOURCE([[ +#include +#pragma weak fputs +int main () +{ + return (fputs == NULL); +}]])], + [gl_cv_have_weak=yes], + [gl_cv_have_weak=no], + [dnl When cross-compiling, assume that only ELF platforms support + dnl weak symbols. + AC_EGREP_CPP([Extensible Linking Format], + [#ifdef __ELF__ + Extensible Linking Format + #endif + ], + [gl_cv_have_weak="guessing yes"], + [gl_cv_have_weak="guessing no"]) + ]) + fi + ]) + if test "$gl_use_threads" = yes || test "$gl_use_threads" = posix; then + # On OSF/1, the compiler needs the flag -pthread or -D_REENTRANT so that + # it groks . It's added above, in gl_THREADLIB_EARLY_BODY. + AC_CHECK_HEADER([pthread.h], + [gl_have_pthread_h=yes], [gl_have_pthread_h=no]) + if test "$gl_have_pthread_h" = yes; then + # Other possible tests: + # -lpthreads (FSU threads, PCthreads) + # -lgthreads + gl_have_pthread= + # Test whether both pthread_mutex_lock and pthread_mutexattr_init exist + # in libc. IRIX 6.5 has the first one in both libc and libpthread, but + # the second one only in libpthread, and lock.c needs it. + # + # If -pthread works, prefer it to -lpthread, since Ubuntu 14.04 + # needs -pthread for some reason. See: + # http://lists.gnu.org/archive/html/bug-gnulib/2014-09/msg00023.html + save_LIBS=$LIBS + for gl_pthread in '' '-pthread'; do + LIBS="$LIBS $gl_pthread" + AC_LINK_IFELSE( + [AC_LANG_PROGRAM( + [[#include + pthread_mutex_t m; + pthread_mutexattr_t ma; + ]], + [[pthread_mutex_lock (&m); + pthread_mutexattr_init (&ma);]])], + [gl_have_pthread=yes + LIBTHREAD=$gl_pthread LTLIBTHREAD=$gl_pthread + LIBMULTITHREAD=$gl_pthread LTLIBMULTITHREAD=$gl_pthread]) + LIBS=$save_LIBS + test -n "$gl_have_pthread" && break + done + + # Test for libpthread by looking for pthread_kill. (Not pthread_self, + # since it is defined as a macro on OSF/1.) + if test -n "$gl_have_pthread" && test -z "$LIBTHREAD"; then + # The program links fine without libpthread. But it may actually + # need to link with libpthread in order to create multiple threads. + AC_CHECK_LIB([pthread], [pthread_kill], + [LIBMULTITHREAD=-lpthread LTLIBMULTITHREAD=-lpthread + # On Solaris and HP-UX, most pthread functions exist also in libc. + # Therefore pthread_in_use() needs to actually try to create a + # thread: pthread_create from libc will fail, whereas + # pthread_create will actually create a thread. + case "$host_os" in + solaris* | hpux*) + AC_DEFINE([PTHREAD_IN_USE_DETECTION_HARD], [1], + [Define if the pthread_in_use() detection is hard.]) + esac + ]) + elif test -z "$gl_have_pthread"; then + # Some library is needed. Try libpthread and libc_r. + AC_CHECK_LIB([pthread], [pthread_kill], + [gl_have_pthread=yes + LIBTHREAD=-lpthread LTLIBTHREAD=-lpthread + LIBMULTITHREAD=-lpthread LTLIBMULTITHREAD=-lpthread]) + if test -z "$gl_have_pthread"; then + # For FreeBSD 4. + AC_CHECK_LIB([c_r], [pthread_kill], + [gl_have_pthread=yes + LIBTHREAD=-lc_r LTLIBTHREAD=-lc_r + LIBMULTITHREAD=-lc_r LTLIBMULTITHREAD=-lc_r]) + fi + fi + if test -n "$gl_have_pthread"; then + gl_threads_api=posix + AC_DEFINE([USE_POSIX_THREADS], [1], + [Define if the POSIX multithreading library can be used.]) + if test -n "$LIBMULTITHREAD" || test -n "$LTLIBMULTITHREAD"; then + if case "$gl_cv_have_weak" in *yes) true;; *) false;; esac; then + AC_DEFINE([USE_POSIX_THREADS_WEAK], [1], + [Define if references to the POSIX multithreading library should be made weak.]) + LIBTHREAD= + LTLIBTHREAD= + fi + fi + fi + fi + fi + if test -z "$gl_have_pthread"; then + if test "$gl_use_threads" = yes || test "$gl_use_threads" = solaris; then + gl_have_solaristhread= + gl_save_LIBS="$LIBS" + LIBS="$LIBS -lthread" + AC_LINK_IFELSE( + [AC_LANG_PROGRAM( + [[ +#include +#include + ]], + [[thr_self();]])], + [gl_have_solaristhread=yes]) + LIBS="$gl_save_LIBS" + if test -n "$gl_have_solaristhread"; then + gl_threads_api=solaris + LIBTHREAD=-lthread + LTLIBTHREAD=-lthread + LIBMULTITHREAD="$LIBTHREAD" + LTLIBMULTITHREAD="$LTLIBTHREAD" + AC_DEFINE([USE_SOLARIS_THREADS], [1], + [Define if the old Solaris multithreading library can be used.]) + if case "$gl_cv_have_weak" in *yes) true;; *) false;; esac; then + AC_DEFINE([USE_SOLARIS_THREADS_WEAK], [1], + [Define if references to the old Solaris multithreading library should be made weak.]) + LIBTHREAD= + LTLIBTHREAD= + fi + fi + fi + fi + if test "$gl_use_threads" = pth; then + gl_save_CPPFLAGS="$CPPFLAGS" + AC_LIB_LINKFLAGS([pth]) + gl_have_pth= + gl_save_LIBS="$LIBS" + LIBS="$LIBS $LIBPTH" + AC_LINK_IFELSE( + [AC_LANG_PROGRAM([[#include ]], [[pth_self();]])], + [gl_have_pth=yes]) + LIBS="$gl_save_LIBS" + if test -n "$gl_have_pth"; then + gl_threads_api=pth + LIBTHREAD="$LIBPTH" + LTLIBTHREAD="$LTLIBPTH" + LIBMULTITHREAD="$LIBTHREAD" + LTLIBMULTITHREAD="$LTLIBTHREAD" + AC_DEFINE([USE_PTH_THREADS], [1], + [Define if the GNU Pth multithreading library can be used.]) + if test -n "$LIBMULTITHREAD" || test -n "$LTLIBMULTITHREAD"; then + if case "$gl_cv_have_weak" in *yes) true;; *) false;; esac; then + AC_DEFINE([USE_PTH_THREADS_WEAK], [1], + [Define if references to the GNU Pth multithreading library should be made weak.]) + LIBTHREAD= + LTLIBTHREAD= + fi + fi + else + CPPFLAGS="$gl_save_CPPFLAGS" + fi + fi + if test -z "$gl_have_pthread"; then + case "$gl_use_threads" in + yes | windows | win32) # The 'win32' is for backward compatibility. + if { case "$host_os" in + mingw*) true;; + *) false;; + esac + }; then + gl_threads_api=windows + AC_DEFINE([USE_WINDOWS_THREADS], [1], + [Define if the native Windows multithreading API can be used.]) + fi + ;; + esac + fi + fi + AC_MSG_CHECKING([for multithread API to use]) + AC_MSG_RESULT([$gl_threads_api]) + AC_SUBST([LIBTHREAD]) + AC_SUBST([LTLIBTHREAD]) + AC_SUBST([LIBMULTITHREAD]) + AC_SUBST([LTLIBMULTITHREAD]) +]) + +AC_DEFUN([gl_THREADLIB], +[ + AC_REQUIRE([gl_THREADLIB_EARLY]) + AC_REQUIRE([gl_THREADLIB_BODY]) +]) + + +dnl gl_DISABLE_THREADS +dnl ------------------ +dnl Sets the gl_THREADLIB default so that threads are not used by default. +dnl The user can still override it at installation time, by using the +dnl configure option '--enable-threads'. + +AC_DEFUN([gl_DISABLE_THREADS], [ + m4_divert_text([INIT_PREPARE], [gl_use_threads_default=no]) +]) + + +dnl Survey of platforms: +dnl +dnl Platform Available Compiler Supports test-lock +dnl flavours option weak result +dnl --------------- --------- --------- -------- --------- +dnl Linux 2.4/glibc posix -lpthread Y OK +dnl +dnl GNU Hurd/glibc posix +dnl +dnl Ubuntu 14.04 posix -pthread Y OK +dnl +dnl FreeBSD 5.3 posix -lc_r Y +dnl posix -lkse ? Y +dnl posix -lpthread ? Y +dnl posix -lthr Y +dnl +dnl FreeBSD 5.2 posix -lc_r Y +dnl posix -lkse Y +dnl posix -lthr Y +dnl +dnl FreeBSD 4.0,4.10 posix -lc_r Y OK +dnl +dnl NetBSD 1.6 -- +dnl +dnl OpenBSD 3.4 posix -lpthread Y OK +dnl +dnl Mac OS X 10.[123] posix -lpthread Y OK +dnl +dnl Solaris 7,8,9 posix -lpthread Y Sol 7,8: 0.0; Sol 9: OK +dnl solaris -lthread Y Sol 7,8: 0.0; Sol 9: OK +dnl +dnl HP-UX 11 posix -lpthread N (cc) OK +dnl Y (gcc) +dnl +dnl IRIX 6.5 posix -lpthread Y 0.5 +dnl +dnl AIX 4.3,5.1 posix -lpthread N AIX 4: 0.5; AIX 5: OK +dnl +dnl OSF/1 4.0,5.1 posix -pthread (cc) N OK +dnl -lpthread (gcc) Y +dnl +dnl Cygwin posix -lpthread Y OK +dnl +dnl Any of the above pth -lpth 0.0 +dnl +dnl Mingw windows N OK +dnl +dnl BeOS 5 -- +dnl +dnl The test-lock result shows what happens if in test-lock.c EXPLICIT_YIELD is +dnl turned off: +dnl OK if all three tests terminate OK, +dnl 0.5 if the first test terminates OK but the second one loops endlessly, +dnl 0.0 if the first test already loops endlessly. diff --git a/m4/visibility.m4 b/m4/visibility.m4 index 077c476..552e397 100644 --- a/m4/visibility.m4 +++ b/m4/visibility.m4 @@ -1,5 +1,5 @@ -# visibility.m4 serial 3 (gettext-0.18) -dnl Copyright (C) 2005, 2008-2010 Free Software Foundation, Inc. +# visibility.m4 serial 5 (gettext-0.18.2) +dnl Copyright (C) 2005, 2008, 2010-2014 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. @@ -12,7 +12,7 @@ dnl __attribute__((__visibility__("hidden"))) and dnl __attribute__((__visibility__("default"))). dnl Does *not* test for __visibility__("protected") - which has tricky dnl semantics (see the 'vismain' test in glibc) and does not exist e.g. on -dnl MacOS X. +dnl Mac OS X. dnl Does *not* test for __visibility__("internal") - which has processor dnl dependent semantics. dnl Does *not* test for #pragma GCC visibility push(hidden) - which is @@ -33,7 +33,8 @@ AC_DEFUN([gl_VISIBILITY], AC_CACHE_VAL([gl_cv_cc_vis_werror], [ gl_save_CFLAGS="$CFLAGS" CFLAGS="$CFLAGS -Werror" - AC_TRY_COMPILE([], [], + AC_COMPILE_IFELSE( + [AC_LANG_PROGRAM([[]], [[]])], [gl_cv_cc_vis_werror=yes], [gl_cv_cc_vis_werror=no]) CFLAGS="$gl_save_CFLAGS"]) @@ -51,13 +52,15 @@ AC_DEFUN([gl_VISIBILITY], if test $gl_cv_cc_vis_werror = yes; then CFLAGS="$CFLAGS -Werror" fi - AC_TRY_COMPILE( - [extern __attribute__((__visibility__("hidden"))) int hiddenvar; - extern __attribute__((__visibility__("default"))) int exportedvar; - extern __attribute__((__visibility__("hidden"))) int hiddenfunc (void); - extern __attribute__((__visibility__("default"))) int exportedfunc (void); - void dummyfunc (void) {}], - [], + AC_COMPILE_IFELSE( + [AC_LANG_PROGRAM( + [[extern __attribute__((__visibility__("hidden"))) int hiddenvar; + extern __attribute__((__visibility__("default"))) int exportedvar; + extern __attribute__((__visibility__("hidden"))) int hiddenfunc (void); + extern __attribute__((__visibility__("default"))) int exportedfunc (void); + void dummyfunc (void) {} + ]], + [[]])], [gl_cv_cc_visibility=yes], [gl_cv_cc_visibility=no]) CFLAGS="$gl_save_CFLAGS"]) diff --git a/m4/wchar_t.m4 b/m4/wchar_t.m4 index ed804e6..839a04c 100644 --- a/m4/wchar_t.m4 +++ b/m4/wchar_t.m4 @@ -1,5 +1,5 @@ -# wchar_t.m4 serial 3 (gettext-0.18) -dnl Copyright (C) 2002-2003, 2008-2010 Free Software Foundation, Inc. +# wchar_t.m4 serial 4 (gettext-0.18.2) +dnl Copyright (C) 2002-2003, 2008-2014 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. @@ -11,9 +11,13 @@ dnl Prerequisite: AC_PROG_CC AC_DEFUN([gt_TYPE_WCHAR_T], [ AC_CACHE_CHECK([for wchar_t], [gt_cv_c_wchar_t], - [AC_TRY_COMPILE([#include - wchar_t foo = (wchar_t)'\0';], , - [gt_cv_c_wchar_t=yes], [gt_cv_c_wchar_t=no])]) + [AC_COMPILE_IFELSE( + [AC_LANG_PROGRAM( + [[#include + wchar_t foo = (wchar_t)'\0';]], + [[]])], + [gt_cv_c_wchar_t=yes], + [gt_cv_c_wchar_t=no])]) if test $gt_cv_c_wchar_t = yes; then AC_DEFINE([HAVE_WCHAR_T], [1], [Define if you have the 'wchar_t' type.]) fi diff --git a/m4/wint_t.m4 b/m4/wint_t.m4 index a6c7d15..9b07b07 100644 --- a/m4/wint_t.m4 +++ b/m4/wint_t.m4 @@ -1,5 +1,5 @@ -# wint_t.m4 serial 4 (gettext-0.18) -dnl Copyright (C) 2003, 2007-2010 Free Software Foundation, Inc. +# wint_t.m4 serial 5 (gettext-0.18.2) +dnl Copyright (C) 2003, 2007-2014 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. @@ -11,7 +11,9 @@ dnl Prerequisite: AC_PROG_CC AC_DEFUN([gt_TYPE_WINT_T], [ AC_CACHE_CHECK([for wint_t], [gt_cv_c_wint_t], - [AC_TRY_COMPILE([ + [AC_COMPILE_IFELSE( + [AC_LANG_PROGRAM( + [[ /* Tru64 with Desktop Toolkit C has a bug: must be included before . BSD/OS 4.0.1 has a bug: , and must be included @@ -20,8 +22,10 @@ AC_DEFUN([gt_TYPE_WINT_T], #include #include #include - wint_t foo = (wchar_t)'\0';], , - [gt_cv_c_wint_t=yes], [gt_cv_c_wint_t=no])]) + wint_t foo = (wchar_t)'\0';]], + [[]])], + [gt_cv_c_wint_t=yes], + [gt_cv_c_wint_t=no])]) if test $gt_cv_c_wint_t = yes; then AC_DEFINE([HAVE_WINT_T], [1], [Define if you have the 'wint_t' type.]) fi diff --git a/m4/xsize.m4 b/m4/xsize.m4 index b653693..3af23ec 100644 --- a/m4/xsize.m4 +++ b/m4/xsize.m4 @@ -1,5 +1,5 @@ -# xsize.m4 serial 4 -dnl Copyright (C) 2003-2004, 2008-2010 Free Software Foundation, Inc. +# xsize.m4 serial 5 +dnl Copyright (C) 2003-2004, 2008-2014 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. @@ -8,6 +8,5 @@ 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 fa4bcee..be21003 100644 --- a/main.c +++ b/main.c @@ -3,7 +3,7 @@ */ /* - * Copyright (C) 1986, 1988, 1989, 1991-2015 the Free Software Foundation, Inc. + * Copyright (C) 1986, 1988, 1989, 1991-2016 the Free Software Foundation, Inc. * * This file is part of GAWK, the GNU implementation of the * AWK Programming Language. @@ -24,7 +24,7 @@ */ /* FIX THIS BEFORE EVERY RELEASE: */ -#define UPDATE_YEAR 2015 +#define UPDATE_YEAR 2016 #include "awk.h" #include "getopt.h" @@ -152,6 +152,7 @@ static int do_nostalgia = false; /* provide a blast from the past */ static int do_binary = false; /* hands off my data! */ static int do_version = false; /* print version info */ static const char *locale = ""; /* default value to setlocale */ +static char *locale_dir = LOCALEDIR; /* default locale dir */ int use_lc_numeric = false; /* obey locale for decimal point */ @@ -219,6 +220,10 @@ main(int argc, char **argv) char *extra_stack; int have_srcfile = 0; SRCFILE *s; + char *cp; +#if defined(LOCALEDEBUG) + const char *initial_locale; +#endif /* do these checks early */ if (getenv("TIDYMEM") != NULL) @@ -237,8 +242,13 @@ main(int argc, char **argv) if (argc < 2) usage(EXIT_FAILURE, stderr); - (void) bindtextdomain(PACKAGE, LOCALEDIR); - (void) textdomain(PACKAGE); + if ((cp = getenv("GAWK_LOCALE_DIR")) != NULL) + locale_dir = cp; + +#if defined(LOCALEDEBUG) + initial_locale = locale; +#endif + set_locale_stuff(); (void) signal(SIGFPE, catchsig); #ifdef SIGBUS @@ -286,7 +296,10 @@ main(int argc, char **argv) parse_args(argc, argv); - set_locale_stuff(); +#if defined(LOCALEDEBUG) + if (locale != initial_locale) + set_locale_stuff(); +#endif /* * In glibc, MB_CUR_MAX is actually a function. This value is @@ -1134,7 +1147,9 @@ arg_assign(char *arg, bool initing) */ if (do_posix) setlocale(LC_NUMERIC, "C"); +#endif /* LC_NUMERIC */ (void) force_number(it); +#ifdef LC_NUMERIC if (do_posix) setlocale(LC_NUMERIC, locale); #endif /* LC_NUMERIC */ @@ -1681,4 +1696,8 @@ set_locale_stuff(void) #if defined(LC_TIME) setlocale(LC_TIME, locale); #endif + + /* These must be done after calling setlocale */ + (void) bindtextdomain(PACKAGE, locale_dir); + (void) textdomain(PACKAGE); } diff --git a/mbsupport.h b/mbsupport.h index f4e1a82..37dd219 100644 --- a/mbsupport.h +++ b/mbsupport.h @@ -3,7 +3,8 @@ */ /* - * Copyright (C) 2004, 2005, 2011, 2012 the Free Software Foundation, Inc. + * Copyright (C) 2004, 2005, 2011, 2012, 2015, 2016 + * the Free Software Foundation, Inc. * * This file is part of GAWK, the GNU implementation of the * AWK Programming Language. @@ -43,6 +44,8 @@ #define wcslen strlen #define wctob(wc) (EOF) +#define mbstate_t int + extern wctype_t wctype(const char *name); extern int iswctype(wint_t wc, wctype_t desc); extern int wcscoll(const wchar_t *ws1, const wchar_t *ws2); diff --git a/missing_d/ChangeLog b/missing_d/ChangeLog index f21c8cd..53b7a81 100644 --- a/missing_d/ChangeLog +++ b/missing_d/ChangeLog @@ -1,3 +1,7 @@ +2016-08-25 Arnold D. Robbins + + * 4.1.4: Release tar ball made. + 2015-05-19 Arnold D. Robbins * 4.1.3: Release tar ball made. diff --git a/mpfr.c b/mpfr.c index a89b2bc..db2eb69 100644 --- a/mpfr.c +++ b/mpfr.c @@ -3,7 +3,7 @@ */ /* - * Copyright (C) 2012, 2013 the Free Software Foundation, Inc. + * Copyright (C) 2012, 2013, 2015 the Free Software Foundation, Inc. * * This file is part of GAWK, the GNU implementation of the * AWK Programming Language. @@ -39,6 +39,8 @@ mpz_t MFNR; bool do_ieee_fmt; /* IEEE-754 floating-point emulation */ mpfr_rnd_t ROUND_MODE; +static mpfr_prec_t default_prec; + static mpfr_rnd_t get_rnd_mode(const char rmode); static NODE *mpg_force_number(NODE *n); static NODE *mpg_make_number(double); @@ -70,7 +72,7 @@ static inline mpfr_ptr mpg_tofloat(mpfr_ptr mf, mpz_ptr mz); void init_mpfr(mpfr_prec_t prec, const char *rmode) { - mpfr_set_default_prec(prec); + mpfr_set_default_prec(default_prec = prec); ROUND_MODE = get_rnd_mode(rmode[0]); mpfr_set_default_rounding_mode(ROUND_MODE); make_number = mpg_make_number; @@ -377,7 +379,7 @@ mpg_format_val(const char *format, int index, NODE *s) } else { r = format_tree(format, fmt_list[index]->stlen, dummy, 2); assert(r != NULL); - s->stfmt = (char) index; + s->stfmt = index; } s->flags = oflags; s->stlen = r->stlen; @@ -525,7 +527,7 @@ set_PREC() if ((val->flags & MAYBE_NUM) != 0) force_number(val); - if ((val->flags & (STRING|NUMBER)) == STRING) { + if ((val->flags & STRCUR) != 0) { int i, j; /* emulate IEEE-754 binary format */ @@ -561,7 +563,7 @@ set_PREC() } if (prec > 0) - mpfr_set_default_prec(prec); + mpfr_set_default_prec(default_prec = prec); } @@ -705,6 +707,7 @@ do_mpfr_func(const char *name, NODE *t1, *res; mpfr_ptr p1; int tval; + mpfr_prec_t argprec; t1 = POP_SCALAR(); if (do_lint && (t1->flags & (NUMCUR|NUMBER)) == 0) @@ -713,7 +716,8 @@ do_mpfr_func(const char *name, force_number(t1); p1 = MP_FLOAT(t1); res = mpg_float(); - mpfr_set_prec(res->mpg_numbr, mpfr_get_prec(p1)); /* needed at least for sqrt() */ + if ((argprec = mpfr_get_prec(p1)) > default_prec) + mpfr_set_prec(res->mpg_numbr, argprec); /* needed at least for sqrt() */ tval = mpfr_func(res->mpg_numbr, p1, ROUND_MODE); IEEE_FMT(res->mpg_numbr, tval); DEREF(t1); @@ -1214,9 +1218,17 @@ mpg_tofloat(mpfr_ptr mf, mpz_ptr mz) prec -= (size_t) mpz_scan1(mz, 0); /* least significant 1 bit index starting at 0 */ if (prec > MPFR_PREC_MAX) prec = MPFR_PREC_MAX; - if (prec > PRECISION_MIN) - mpfr_set_prec(mf, prec); + else if (prec < PRECISION_MIN) + prec = PRECISION_MIN; } + else + prec = PRECISION_MIN; + /* + * Always set the precision to avoid hysteresis, since do_mpfr_func + * may copy our precision. + */ + if (prec != mpfr_get_prec(mf)) + mpfr_set_prec(mf, prec); mpfr_set_z(mf, mz, ROUND_MODE); return mf; diff --git a/node.c b/node.c index 1741a13..b63017a 100644 --- a/node.c +++ b/node.c @@ -38,6 +38,20 @@ NODE *(*str2number)(NODE *) = r_force_number; NODE *(*format_val)(const char *, int, NODE *) = r_format_val; int (*cmp_numbers)(const NODE *, const NODE *) = cmp_awknums; +/* is_hex --- return true if a string looks like a hex value */ + +static bool +is_hex(const char *str) +{ + if (*str == '-' || *str == '+') + str++; + + if (str[0] == '0' && (str[1] == 'x' || str[1] == 'X')) + return true; + + return false; +} + /* force_number --- force a value to be numeric */ NODE * @@ -78,6 +92,7 @@ r_force_number(NODE *n) if ((n->flags & MAYBE_NUM) != 0) n->flags &= ~MAYBE_NUM; n->flags |= NUMBER|NUMCUR; + n->flags &= ~STRING; n->numbr = get_ieee_magic_val(n->stptr); return n; @@ -96,8 +111,7 @@ r_force_number(NODE *n) || (! do_posix /* not POSIXLY paranoid and */ && (is_alpha((unsigned char) *cp) /* letter, or */ /* CANNOT do non-decimal and saw 0x */ - || (! do_non_decimal_data && cp[0] == '0' - && (cp[1] == 'x' || cp[1] == 'X'))))) { + || (! do_non_decimal_data && is_hex(cp))))) { return n; } @@ -112,6 +126,7 @@ r_force_number(NODE *n) n->numbr = (AWKNUM)(*cp - '0'); n->flags |= newflags; n->flags |= NUMCUR; + n->flags &= ~STRING; if (cp == n->stptr) /* no leading spaces */ n->flags |= NUMINT; } @@ -123,6 +138,7 @@ r_force_number(NODE *n) if (! do_traditional && get_numbase(cp, true) != 10) { n->numbr = nondec2awknum(cp, cpend - cp); n->flags |= NUMCUR; + n->flags &= ~STRING; ptr = cpend; goto finish; } @@ -230,7 +246,7 @@ r_format_val(const char *format, int index, NODE *s) } else { r = format_tree(format, fmt_list[index]->stlen, dummy, 2); assert(r != NULL); - s->stfmt = (char) index; + s->stfmt = index; } s->flags = oflags; s->stlen = r->stlen; @@ -717,22 +733,37 @@ str2wstr(NODE *n, size_t **ptr) case (size_t) -2: case (size_t) -1: /* - * Just skip the bad byte and keep going, so that - * we get a more-or-less full string, instead of - * stopping early. This is particularly important - * for match() where we need to build the indices. - */ - sp++; - src_count--; - /* * mbrtowc(3) says the state of mbs becomes undefined * after a bad character, so reset it. */ memset(& mbs, 0, sizeof(mbs)); - /* And warn the user something's wrong */ - if (do_lint && ! warned) { + + /* Warn the user something's wrong */ + if (! warned) { warned = true; - lintwarn(_("Invalid multibyte data detected. There may be a mismatch between your data and your locale.")); + warning(_("Invalid multibyte data detected. There may be a mismatch between your data and your locale.")); + } + + /* + * 8/2015: If we're using UTF, then instead of just + * skipping the character, plug in the Unicode + * replacement character. In most cases this gives + * us "better" results, in that character counts + * and string lengths tend to make more sense. + * + * Otherwise, just skip the bad byte and keep going, + * so that we get a more-or-less full string, instead of + * stopping early. This is particularly important + * for match() where we need to build the indices. + */ + if (dfa_using_utf8()) { + count = 1; + wc = 0xFFFD; /* unicode replacement character */ + goto set_wc; + } else { + /* skip it and keep going */ + sp++; + src_count--; } break; @@ -740,6 +771,7 @@ str2wstr(NODE *n, size_t **ptr) count = 1; /* fall through */ default: + set_wc: *wsp++ = wc; src_count -= count; while (count--) { diff --git a/nonposix.h b/nonposix.h index 88fd9e6..3aae512 100644 --- a/nonposix.h +++ b/nonposix.h @@ -3,7 +3,7 @@ */ /* - * Copyright (C) 2012, 2013 the Free Software Foundation, Inc. + * Copyright (C) 2012, 2013, 2016 the Free Software Foundation, Inc. * * This file is part of GAWK, the GNU implementation of the * AWK Programming Language. @@ -29,3 +29,38 @@ */ #define FAKE_FD_VALUE 42 + +#ifdef __MINGW32__ +/* Replacements for sys/wait.h macros. */ +# define WEXITSTATUS(stv) (((unsigned)(stv)) & ~0xC0000000) +/* MS-Windows programs that crash due to a fatal exception exit with + an exit code whose 2 MSB bits are set. */ +# define WIFEXITED(stv) ((((unsigned)(stv)) & 0xC0000000) == 0) +# define WIFSIGNALED(stv) ((((unsigned)(stv)) & 0xC0000000) == 0xC0000000) +# define WTERMSIG(stv) w32_status_to_termsig ((unsigned)stv) +# define WIFSTOPPED(stv) (0) +# define WSTOPSIG(stv) (0) + +int w32_status_to_termsig (unsigned); + +/* Prototypes of for Posix functions for which we define replacements + in pc/ files. */ + +/* getid.c */ +unsigned int getuid (void); +unsigned int geteuid (void); +unsigned int getgid (void); +unsigned int getegid (void); + +/* gawkmisc.pc */ +int unsetenv (const char *); +int setenv (const char *, const char *, int); +#endif /* __MINGW32__ */ + +#if defined(VMS) || defined(__DJGPP__) || defined(__MINGW32__) +int getpgrp(void); +#endif + +#if defined(__DJGPP__) || defined(__MINGW32__) +int getppid(void); +#endif diff --git a/pc/ChangeLog b/pc/ChangeLog index a9c7ec8..f5dbe4a 100644 --- a/pc/ChangeLog +++ b/pc/ChangeLog @@ -1,3 +1,86 @@ +2016-08-25 Arnold D. Robbins + + * 4.1.4: Release tar ball made. + +2016-08-08 Eli Zaretskii + + * Makefile.tst (BASIC_TESTS): Add ofmtstrnum and sortfor2. + (rscompat, ofmtstrnum, sortfor2): New tests. + +2016-07-01 Scott Deifik + + * Makefile.tst: Sync with mainline. + +2016-06-14 Arnold D. Robbins + + * Makefile.tst: Sync with mainline: + (mixed1, symtab10, subback): New tests. + (FAIL_CODE1): Updated. + +2016-05-25 Eli Zaretskii + + * Makefile.tst (BASIC_TESTS): Add arrayind1 and sigpipe1. + (anchgsub, sclifin): New tests. + +2016-05-15 Scott Deifik + + * Makefile.tst: Sync with mainline. + +2016-05-12 Eli Zaretskii + + * Makefile ($(ALLOBJS) $(LIBOBJS)): Depend on nonposix.h. + +2016-04-23 Eli Zaretskii + + * Makefile.tst (pty1): Ignore errors (happens with MinGW). + +2016-04-17 Scott Deifik + + * Makefile.tst: Sync with mainline. + +2016-04-16 Eli Zaretskii + + * config.sed (HAVE_BTOWC): Now unconditionally defined to 1. + (HAVE_SYS_WAIT_H): Define to 1 for DJGPP. + +2016-04-08 Eli Zaretskii + + * Makefile.tst (BASIC_TESTS, GAWK_EXT_TESTS): Add new tests. + (mbstr1): Expect to fail on MinGW. + (mbstr2, profile8, muldimposix, watchpoint1, aryprm9, nulinsrc) + (readbuf, clos1way2, clos1way3, clos1way4, clos1way5, fpat5): New + tests. + +2016-04-07 Eli Zaretskii + + * config.h: Don't define WEXITSTATUS, it is now defined in + nonposix.h. + + * config.sed: Don't define WEXITSTATUS, it is now defined in + nonposix.h. + + * gawkmisc.pc (w32_status_to_termsig) [__MINGW32__]: New function. + +2016-03-16 Eli Zaretskii + + * gawkmisc.pc (usleep): Condition on MinGW runtime version older + than 3.21, which defines 'usleep' as an inline function in + unistd.h, and thus causes compilation errors due to conflicting + definitions. Reported by Ivan Suchý . + + * Makefile (mingw32, mingw32-readline, mingw32-mpfr) + (mingw32-readline-mpfr): Use -Wno-deprecated-declarations, to + avoid warnings about 'usleep' in newer versions of mingw.org's + MinGW runtime. + +2015-05-29 Arnold D. Robbins + + * Makefile.tst (negtime): Sync with mainline. + +2015-05-29 Scott Deifik + + * Makefile.tst (dbugeval): Sync with mainline. + 2015-05-19 Arnold D. Robbins * 4.1.3: Release tar ball made. diff --git a/pc/Makefile b/pc/Makefile index d1c0806..7bf8a7e 100644 --- a/pc/Makefile +++ b/pc/Makefile @@ -6,7 +6,7 @@ # Tested with GNU make on Windows, OS/2 and DOS. -# Copyright (C) 1989-2014 Free Software Foundation, Inc. +# Copyright (C) 1989-2016 Free Software Foundation, Inc. # This Makefile is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, @@ -168,28 +168,28 @@ LMINGW32 = $(CC) $(LF) -o $@ $(GAWKOBJS) $(LF2) mingw32: $(MAK) all \ - CC=gcc O=.o CF="-D__USE_MINGW_ANSI_STDIO -O2 -gdwarf-2 -g3" \ + CC=gcc O=.o CF="-D__USE_MINGW_ANSI_STDIO -O2 -gdwarf-2 -g3 -Wno-deprecated-declarations" \ OBJ=popen.o LNK=LMINGW32 LF="-gdwarf-2 -g3" \ LF2="-lws2_32 -lmsvcp60" RSP= mingw32-readline: $(MAK) all \ CC=gcc O=.o \ - CF="-D__USE_MINGW_ANSI_STDIO -DHAVE_LIBREADLINE -O2 -gdwarf-2 -g3" \ + CF="-D__USE_MINGW_ANSI_STDIO -DHAVE_LIBREADLINE -O2 -gdwarf-2 -g3 -Wno-deprecated-declarations" \ OBJ=popen.o LNK=LMINGW32 LF="-gdwarf-2 -g3" \ LF2="-lreadline -lws2_32 -lmsvcp60 -Wl,--enable-auto-import" RSP= mingw32-mpfr: $(MAK) all \ CC=gcc O=.o \ - CF="-D__USE_MINGW_ANSI_STDIO -DHAVE_MPFR -O2 -gdwarf-2 -g3" \ + CF="-D__USE_MINGW_ANSI_STDIO -DHAVE_MPFR -O2 -gdwarf-2 -g3 -Wno-deprecated-declarations" \ OBJ=popen.o LNK=LMINGW32 LF="-gdwarf-2 -g3" \ LF2="-lmpfr -lgmp -lws2_32 -lmsvcp60 -Wl,--enable-auto-import" RSP= mingw32-readline-mpfr: $(MAK) all \ CC=gcc O=.o \ - CF="-D__USE_MINGW_ANSI_STDIO -DHAVE_LIBREADLINE -DHAVE_MPFR -O2 -gdwarf-2 -g3" \ + CF="-D__USE_MINGW_ANSI_STDIO -DHAVE_LIBREADLINE -DHAVE_MPFR -O2 -gdwarf-2 -g3 -Wno-deprecated-declarations" \ OBJ=popen.o LNK=LMINGW32 LF="-gdwarf-2 -g3" \ LF2="-lmpfr -lgmp -lreadline -lws2_32 -lmsvcp60 -Wl,--enable-auto-import" RSP= @@ -242,7 +242,7 @@ $(RSPFILE) : $(GAWKOBJS) # included by awk.h. # 2. custom.h is not mentioned because pc ports don't use it. $(ALLOBJS) $(LIBOBJS): \ - awk.h regex.h config.h gettext.h mbsupport.h protos.h dfa.h getopt.h + awk.h regex.h config.h gettext.h mbsupport.h protos.h dfa.h getopt.h nonposix.h builtin$O: floatmagic.h random.h popen.h diff --git a/pc/Makefile.tst b/pc/Makefile.tst index 8b7baa2..9eb173f 100644 --- a/pc/Makefile.tst +++ b/pc/Makefile.tst @@ -1,6 +1,6 @@ # Makefile for GNU Awk test suite. # -# Copyright (C) 1988-2015 the Free Software Foundation, Inc. +# Copyright (C) 1988-2016 the Free Software Foundation, Inc. # # This file is part of GAWK, the GNU implementation of the # AWK Programming Language. @@ -138,39 +138,41 @@ CLEANFILES = core core.* fmtspcl.ok # try to keep these sorted. each letter starts a new line BASIC_TESTS = \ - addcomma anchgsub argarray arrayparm arrayprm2 arrayprm3 \ + addcomma anchgsub argarray arrayind1 arrayparm arrayprm2 arrayprm3 \ arrayref arrymem1 arryref2 arryref3 arryref4 arryref5 arynasty \ arynocls aryprm1 aryprm2 aryprm3 aryprm4 aryprm5 aryprm6 aryprm7 \ - aryprm8 arysubnm asgext awkpath \ + aryprm8 aryprm9 arysubnm asgext awkpath \ back89 backgsub badassign1 badbuild \ callparam childin clobber closebad clsflnam compare compare2 concat1 concat2 \ concat3 concat4 convfmt \ datanonl defref delargv delarpm2 delarprm delfunc dfamb1 dfastress dynlj \ eofsplit exit2 exitval1 exitval2 exitval3 \ fcall_exit fcall_exit2 fldchg fldchgnf fnamedat fnarray fnarray2 \ - fnaryscl fnasgnm fnmisc fordel forref forsimp fsbs fsrs fsspcoln \ + fnaryscl fnasgnm fnmisc fordel forref forsimp fsbs fsnul1 fsrs fsspcoln \ fstabplus funsemnl funsmnam funstack \ getline getline2 getline3 getline4 getline5 getlnbuf getnr2tb getnr2tm \ gsubasgn gsubtest gsubtst2 gsubtst3 gsubtst4 gsubtst5 gsubtst6 \ gsubtst7 gsubtst8 \ - hex hsprint \ + hex hex2 hsprint \ inpref inputred intest intprec iobug1 \ leaddig leadnl litoct longsub longwrds \ manglprm math membug1 messages minusstr mmap8k mtchi18n \ nasty nasty2 negexp negrange nested nfldstr nfloop nfneg nfset nlfldsep \ nlinstr nlstrina noeffect nofile nofmtch noloop1 noloop2 nonl \ - noparms nors nulrsend numindex numsubstr \ - octsub ofmt ofmta ofmtbig ofmtfidl ofmts ofs1 onlynl opasnidx opasnslf \ + noparms nors nulinsrc nulrsend numindex numsubstr \ + octsub ofmt ofmta ofmtbig ofmtfidl ofmts ofmtstrnum ofs1 onlynl \ + opasnidx opasnslf \ paramasfunc1 paramasfunc2 \ paramdup paramres paramtyp paramuninitglobal parse1 parsefld parseme \ pcntplus posix2008sub prdupval prec printf0 printf1 prmarscl prmreuse \ prt1eval prtoeval \ - rand range1 rebrackloc rebt8b1 redfilnm regeq regexpbrack regexpbrack2 \ + rand range1 readbuf rebrackloc rebt8b1 redfilnm \ + regeq regexpbrack regexpbrack2 \ regexprange regrange reindops \ - reparse resplit rri1 rs rsnul1nl rsnulbig rsnulbig2 rstest1 rstest2 \ + reparse resplit rri1 rs rscompat rsnul1nl rsnulbig rsnulbig2 rstest1 rstest2 \ rstest3 rstest4 rstest5 rswhite \ - scalar sclforin sclifin sortempty sortglos splitargv splitarr splitdef \ - splitvar splitwht strcat1 strnum1 strtod subamp subi18n \ + scalar sclforin sclifin sigpipe1 sortempty sortglos splitargv splitarr splitdef \ + splitvar splitwht strcat1 strnum1 strtod subamp subback subi18n \ subsepnm subslash substr swaplns synerr1 synerr2 tradanch tweakfld \ uninit2 uninit3 uninit4 uninit5 uninitialized unterm uparrfs \ wideidx wideidx2 widesub widesub2 widesub3 widesub4 wjposer1 \ @@ -183,23 +185,27 @@ UNIX_TESTS = \ GAWK_EXT_TESTS = \ aadelete1 aadelete2 aarray1 aasort aasorti argtest arraysort \ backw badargs beginfile1 beginfile2 binmode1 charasbytes \ - colonwarn clos1way crlf dbugeval delsub devfd devfd1 devfd2 dumpvars exit \ - fieldwdth fpat1 fpat2 fpat3 fpat4 fpatnull fsfwfs funlen \ + colonwarn clos1way clos1way2 clos1way3 clos1way4 clos1way5 \ + crlf dbugeval delsub devfd devfd1 devfd2 dumpvars exit \ + fieldwdth fpat1 fpat2 fpat3 fpat4 fpat5 fpatnull fsfwfs funlen \ functab1 functab2 functab3 fwtest fwtest2 fwtest3 \ genpot gensub gensub2 getlndir gnuops2 gnuops3 gnureops \ - icasefs icasers id igncdym igncfs ignrcas2 ignrcase \ + icasefs icasers id igncdym igncfs ignrcas2 ignrcas3 ignrcase \ incdupe incdupe2 incdupe3 incdupe4 incdupe5 incdupe6 incdupe7 \ include include2 indirectbuiltin indirectcall indirectcall2 \ lint lintold lintwarn \ - manyfiles match1 match2 match3 mbstr1 \ + mixed1 manyfiles match1 match2 match3 mbstr1 mbstr2 \ + muldimposix \ nastyparm negtime next nondec nondec2 \ patsplit posix printfbad1 printfbad2 printfbad3 printfbad4 printhuge procinfs \ - profile0 profile1 profile2 profile3 profile4 profile5 profile6 profile7 pty1 \ + profile0 profile1 profile2 profile3 profile4 profile5 profile6 \ + profile7 profile8 pty1 \ rebuf regnul1 regnul2 regx8bit reginttrad reint reint2 rsgetline rsglstdin rsstart1 \ - rsstart2 rsstart3 rstest6 shadow sortfor sortu split_after_fpat \ + rsstart2 rsstart3 rstest6 shadow sortfor sortfor2 sortu split_after_fpat \ splitarg4 strftime \ strtonum switch2 symtab1 symtab2 symtab3 symtab4 symtab5 symtab6 \ - symtab7 symtab8 symtab9 + symtab7 symtab8 symtab9 symtab10 \ + watchpoint1 EXTRA_TESTS = inftest regtest INET_TESTS = inetdayu inetdayt inetechu inetecht @@ -216,6 +222,7 @@ SHLIB_TESTS = \ fnmatch filefuncs fork fork2 fts functab4 inplace1 inplace2 inplace3 \ ordchr ordchr2 readdir readfile readfile2 revout revtwoway rwarray testext time + # List of the tests which should be run with --lint option: NEED_LINT = \ defref fmtspcl lintwarn noeffect nofmtch shadow \ @@ -227,7 +234,10 @@ NEED_LINT_OLD = lintold # List of the tests which fail with EXIT CODE 1 FAIL_CODE1 = \ - fnarray2 fnmisc gsubasgn mixed1 noparms paramdup synerr1 synerr2 unterm + badassign1 badbuild callparam delfunc fcall_exit fcall_exit2 \ + fnamedat fnarray fnarray2 fnasgnm fnmisc funsmnam gsubasgn \ + incdupe2 lintwarn match2 mixed1 noparms paramasfunc1 paramasfunc2 \ + paramdup paramres parseme readbuf synerr1 synerr2 unterm # List of files which have .ok versions for MPFR @@ -268,6 +278,7 @@ charset-tests-all: $(MAKE) charset-msg-start charset-tests charset-msg-end; \ else \ echo %%%%%%%%%% Inadequate locale support: skipping charset tests. ; \ + echo %%%%%%%%%% At least en_US.UTF-8, ru_RU.UTF-8 and ja_JP.UTF-8 are needed. ; \ fi charset-tests: $(LOCALE_CHARSET_TESTS) @@ -334,7 +345,7 @@ charset-msg-start: @echo "======== Starting tests that can vary based on character set or locale support ========" @echo "**************************************************************************" @echo "* Some or all of these tests may fail if you have inadequate or missing *" - @echo "* locale support At least en_US.UTF-8, ru_RU.UTF-8 and ja_JP.UTF-8 are *" + @echo "* locale support. At least en_US.UTF-8, ru_RU.UTF-8 and ja_JP.UTF-8 are *" @echo "* needed. However, if you see this message, the Makefile thinks you have *" @echo "* what you need ... *" @echo "**************************************************************************" @@ -845,10 +856,18 @@ gsubtst6:: mbstr1:: @echo $@ + @echo Expect mbstr1 to fail with MinGW. @[ -z "$$GAWKLOCALE" ] && GAWKLOCALE=en_US.UTF-8; \ AWKPATH="$(srcdir)" $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@ @-$(CMP) "$(srcdir)"/$@.ok _$@ && rm -f _$@ +mbstr2:: + @echo $@ + @echo Expect mbstr2 to fail with MinGW. + @[ -z "$$GAWKLOCALE" ] && GAWKLOCALE=en_US.UTF-8; \ + AWKPATH="$(srcdir)" $(AWK) -f $@.awk < "$(srcdir)"/$@.in >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@ + @-$(CMP) "$(srcdir)"/$@.ok _$@ && rm -f _$@ + printfbad2: printfbad2.ok @echo $@ @$(AWK) --lint -f "$(srcdir)"/$@.awk "$(srcdir)"/$@.in 2>&1 | sed 's;$(srcdir)/;;g' >_$@ || echo EXIT CODE: $$? >>_$@ @@ -922,6 +941,12 @@ profile7: @sed 1,2d < ap-$@.out > _$@; rm ap-$@.out @-$(CMP) "$(srcdir)"/$@.ok _$@ && rm -f _$@ +profile8: + @echo $@ + @$(AWK) --pretty=ap-$@.out -f "$(srcdir)"/$@.awk < /dev/null + @sed 1,2d < ap-$@.out > _$@; rm ap-$@.out + @-$(CMP) "$(srcdir)"/$@.ok _$@ && rm -f _$@ + posix2008sub: @echo $@ @$(AWK) --posix -f "$(srcdir)"/$@.awk > _$@ 2>&1 @@ -1201,8 +1226,10 @@ backsmalls2: dbugeval:: @echo $@ - @$(AWK) --debug -f /dev/null < "$(srcdir)"/$@.in > _$@ 2>&1 || echo EXIT CODE: $$? >>_$@ - @-$(CMP) "$(srcdir)"/$@.ok _$@ && rm -f _$@ + @if [ -t 0 ]; then \ + $(AWK) --debug -f /dev/null < "$(srcdir)"/$@.in > _$@ 2>&1 || echo EXIT CODE: $$? >>_$@ ; \ + $(CMP) "$(srcdir)"/$@.ok _$@ && rm -f _$@ ; \ + fi printhuge:: @echo $@ @@ -1232,9 +1259,46 @@ paramasfunc2:: negtime:: @echo $@ - @echo Expect negtime to fail with MinGW and DJGPP @TZ=GMT AWKPATH="$(srcdir)" $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@ + @AWKPATH="$(srcdir)" $(AWK) -f checknegtime.awk "$(srcdir)"/$@.ok _$@ && rm -f _$@ + +muldimposix:: + @echo $@ + @AWKPATH="$(srcdir)" $(AWK) -f $@.awk --posix >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@ + @-$(CMP) "$(srcdir)"/$@.ok _$@ && rm -f _$@ + +watchpoint1: + @echo $@ + @AWKPATH="$(srcdir)" $(AWK) -D -f $@.awk $(srcdir)/$@.in < $(srcdir)/$@.script >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@ + @-$(CMP) "$(srcdir)"/$@.ok _$@ && rm -f _$@ + +pty1: + @echo $@ + @echo Expect pty1 to fail with DJGPP and MinGW. + @-case `uname` in \ + *[Oo][Ss]/390*) : ;; \ + *) AWKPATH="$(srcdir)" $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@ ; \ + $(CMP) "$(srcdir)"/$@.ok _$@ && rm -f _$@ ;; \ + esac + +rscompat: + @echo $@ + @AWKPATH="$(srcdir)" $(AWK) --traditional -f $@.awk "$(srcdir)/$@.in" >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@ @-$(CMP) "$(srcdir)"/$@.ok _$@ && rm -f _$@ + +symtab10: + @echo $@ + @AWKPATH="$(srcdir)" $(AWK) -D -f $@.awk < "$(srcdir)/$@.in" >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@ + @-$(CMP) "$(srcdir)"/$@.ok _$@ && rm -f _$@ + +ignrcas3:: + @echo $@ + @echo Expect ignrcas3 to fail with MinGW and DJGPP + @if locale -a | grep ell_GRC.1253 > /dev/null ; then \ + @GAWKLOCALE=ell_GRC.1253 \ + AWKPATH="$(srcdir)" $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@ ; \ + @-$(CMP) "$(srcdir)"/$@.ok _$@ && rm -f _$@ ; \ + fi Gt-dummy: # file Maketests, generated from Makefile.am by the Gentests program addcomma: @@ -1247,6 +1311,11 @@ anchgsub: @AWKPATH="$(srcdir)" $(AWK) -f $@.awk < "$(srcdir)"/$@.in >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@ @-$(CMP) "$(srcdir)"/$@.ok _$@ && rm -f _$@ +arrayind1: + @echo $@ + @AWKPATH="$(srcdir)" $(AWK) -f $@.awk < "$(srcdir)"/$@.in >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@ + @-$(CMP) "$(srcdir)"/$@.ok _$@ && rm -f _$@ + arrayparm: @echo $@ @AWKPATH="$(srcdir)" $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@ @@ -1337,6 +1406,11 @@ aryprm8: @AWKPATH="$(srcdir)" $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@ @-$(CMP) "$(srcdir)"/$@.ok _$@ && rm -f _$@ +aryprm9: + @echo $@ + @AWKPATH="$(srcdir)" $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@ + @-$(CMP) "$(srcdir)"/$@.ok _$@ && rm -f _$@ + arysubnm: @echo $@ @AWKPATH="$(srcdir)" $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@ @@ -1543,6 +1617,11 @@ fsbs: @AWKPATH="$(srcdir)" $(AWK) -f $@.awk < "$(srcdir)"/$@.in >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@ @-$(CMP) "$(srcdir)"/$@.ok _$@ && rm -f _$@ +fsnul1: + @echo $@ + @AWKPATH="$(srcdir)" $(AWK) -f $@.awk < "$(srcdir)"/$@.in >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@ + @-$(CMP) "$(srcdir)"/$@.ok _$@ && rm -f _$@ + fsrs: @echo $@ @AWKPATH="$(srcdir)" $(AWK) -f $@.awk < "$(srcdir)"/$@.in >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@ @@ -1638,6 +1717,11 @@ hex: @AWKPATH="$(srcdir)" $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@ @-$(CMP) "$(srcdir)"/$@.ok _$@ && rm -f _$@ +hex2: + @echo $@ + @AWKPATH="$(srcdir)" $(AWK) -f $@.awk < "$(srcdir)"/$@.in >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@ + @-$(CMP) "$(srcdir)"/$@.ok _$@ && rm -f _$@ + hsprint: @echo $@ @AWKPATH="$(srcdir)" $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@ @@ -1790,6 +1874,11 @@ noparms: @AWKPATH="$(srcdir)" $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@ @-$(CMP) "$(srcdir)"/$@.ok _$@ && rm -f _$@ +nulinsrc: + @echo $@ + @AWKPATH="$(srcdir)" $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@ + @-$(CMP) "$(srcdir)"/$@.ok _$@ && rm -f _$@ + nulrsend: @echo $@ @AWKPATH="$(srcdir)" $(AWK) -f $@.awk < "$(srcdir)"/$@.in >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@ @@ -1835,6 +1924,11 @@ ofmts: @AWKPATH="$(srcdir)" $(AWK) -f $@.awk < "$(srcdir)"/$@.in >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@ @-$(CMP) "$(srcdir)"/$@.ok _$@ && rm -f _$@ +ofmtstrnum: + @echo $@ + @AWKPATH="$(srcdir)" $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@ + @-$(CMP) "$(srcdir)"/$@.ok _$@ && rm -f _$@ + ofs1: @echo $@ @AWKPATH="$(srcdir)" $(AWK) -f $@.awk < "$(srcdir)"/$@.in >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@ @@ -1942,6 +2036,11 @@ range1: @AWKPATH="$(srcdir)" $(AWK) -f $@.awk < "$(srcdir)"/$@.in >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@ @-$(CMP) "$(srcdir)"/$@.ok _$@ && rm -f _$@ +readbuf: + @echo $@ + @AWKPATH="$(srcdir)" $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@ + @-$(CMP) "$(srcdir)"/$@.ok _$@ && rm -f _$@ + rebrackloc: @echo $@ @AWKPATH="$(srcdir)" $(AWK) -f $@.awk < "$(srcdir)"/$@.in >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@ @@ -2049,6 +2148,11 @@ sclifin: @AWKPATH="$(srcdir)" $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@ @-$(CMP) "$(srcdir)"/$@.ok _$@ && rm -f _$@ +sigpipe1: + @echo $@ + @AWKPATH="$(srcdir)" $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@ + @-$(CMP) "$(srcdir)"/$@.ok _$@ && rm -f _$@ + sortempty: @echo $@ @AWKPATH="$(srcdir)" $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@ @@ -2100,6 +2204,11 @@ strtod: @AWKPATH="$(srcdir)" $(AWK) -f $@.awk < "$(srcdir)"/$@.in >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@ @-$(CMP) "$(srcdir)"/$@.ok _$@ && rm -f _$@ +subback: + @echo $@ + @AWKPATH="$(srcdir)" $(AWK) -f $@.awk < "$(srcdir)"/$@.in >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@ + @-$(CMP) "$(srcdir)"/$@.ok _$@ && rm -f _$@ + subsepnm: @echo $@ @AWKPATH="$(srcdir)" $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@ @@ -2226,6 +2335,26 @@ backw: @AWKPATH="$(srcdir)" $(AWK) -f $@.awk < "$(srcdir)"/$@.in >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@ @-$(CMP) "$(srcdir)"/$@.ok _$@ && rm -f _$@ +clos1way2: + @echo $@ + @AWKPATH="$(srcdir)" $(AWK) -f $@.awk < "$(srcdir)"/$@.in >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@ + @-$(CMP) "$(srcdir)"/$@.ok _$@ && rm -f _$@ + +clos1way3: + @echo $@ + @AWKPATH="$(srcdir)" $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@ + @-$(CMP) "$(srcdir)"/$@.ok _$@ && rm -f _$@ + +clos1way4: + @echo $@ + @AWKPATH="$(srcdir)" $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@ + @-$(CMP) "$(srcdir)"/$@.ok _$@ && rm -f _$@ + +clos1way5: + @echo $@ + @AWKPATH="$(srcdir)" $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@ + @-$(CMP) "$(srcdir)"/$@.ok _$@ && rm -f _$@ + crlf: @echo $@ @AWKPATH="$(srcdir)" $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@ @@ -2261,6 +2390,11 @@ fpat4: @AWKPATH="$(srcdir)" $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@ @-$(CMP) "$(srcdir)"/$@.ok _$@ && rm -f _$@ +fpat5: + @echo $@ + @AWKPATH="$(srcdir)" $(AWK) -f $@.awk < "$(srcdir)"/$@.in >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@ + @-$(CMP) "$(srcdir)"/$@.ok _$@ && rm -f _$@ + fpatnull: @echo $@ @AWKPATH="$(srcdir)" $(AWK) -f $@.awk < "$(srcdir)"/$@.in >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@ @@ -2459,12 +2593,6 @@ procinfs: @AWKPATH="$(srcdir)" $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@ @-$(CMP) "$(srcdir)"/$@.ok _$@ && rm -f _$@ -pty1: - @echo $@ - @echo Expect pty1 to fail with DJGPP and MinGW. - @AWKPATH="$(srcdir)" $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@ - @-$(CMP) "$(srcdir)"/$@.ok _$@ && rm -f _$@ - regnul1: @echo $@ @AWKPATH="$(srcdir)" $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@ @@ -2500,6 +2628,11 @@ sortfor: @AWKPATH="$(srcdir)" $(AWK) -f $@.awk < "$(srcdir)"/$@.in >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@ @-$(CMP) "$(srcdir)"/$@.ok _$@ && rm -f _$@ +sortfor2: + @echo $@ + @AWKPATH="$(srcdir)" $(AWK) -f $@.awk < "$(srcdir)"/$@.in >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@ + @-$(CMP) "$(srcdir)"/$@.ok _$@ && rm -f _$@ + sortu: @echo $@ @AWKPATH="$(srcdir)" $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@ @@ -2667,11 +2800,11 @@ time: # Targets generated for other tests: -$(srcdir)/Maketests: $(srcdir)/Makefile.am $(srcdir)/Gentests +Maketests: $(srcdir)/Makefile.am $(srcdir)/Gentests files=`cd "$(srcdir)" && echo *.awk *.in`; \ - $(AWK) -f "$(srcdir)"/Gentests "$(srcdir)"/Makefile.am $$files > "$(srcdir)"/Maketests + $(AWK) -f "$(srcdir)"/Gentests "$(srcdir)"/Makefile.am $$files > $@ -clean: +clean-local: rm -fr _* core core.* fmtspcl.ok junk strftime.ok test1 test2 \ seq *~ readfile.ok fork.tmp.* testext.awk fts.ok readdir.ok \ mmap8k.ok profile1.ok @@ -2698,7 +2831,7 @@ diffout: diff -c "$(srcdir)"/$${base}.ok $$i ; \ fi ; \ fi ; \ - done | less + done | more # convenient way to scan valgrind results for errors valgrind-scan: diff --git a/pc/config.h b/pc/config.h index d6fee70..e166c53 100644 --- a/pc/config.h +++ b/pc/config.h @@ -27,15 +27,13 @@ #define HAVE_ATEXIT 1 /* Define to 1 if you have the `btowc' function. */ -#ifdef _WIN32 #define HAVE_BTOWC 1 -#endif -/* Define to 1 if you have the MacOS X function CFLocaleCopyCurrent in the +/* Define to 1 if you have the Mac OS X function CFLocaleCopyCurrent in the CoreFoundation framework. */ #undef HAVE_CFLOCALECOPYCURRENT -/* Define to 1 if you have the MacOS X function CFPreferencesCopyAppValue in +/* Define to 1 if you have the Mac OS X function CFPreferencesCopyAppValue in the CoreFoundation framework. */ #undef HAVE_CFPREFERENCESCOPYAPPVALUE @@ -131,7 +129,7 @@ #define HAVE_LOCALE_H 1 #endif -/* Define to 1 if the system has the type `long long int'. */ +/* Define to 1 if the system has the type 'long long int'. */ #undef HAVE_LONG_LONG_INT /* Define to 1 if you have the `mbrlen' function. */ @@ -285,6 +283,12 @@ #define HAVE_STRTOUL 1 #endif +/* Define to 1 if `gr_passwd' is a member of `struct group'. */ +#undef HAVE_STRUCT_GROUP_GR_PASSWD + +/* Define to 1 if `pw_passwd' is a member of `struct passwd'. */ +#undef HAVE_STRUCT_PASSWD_PW_PASSWD + /* Define to 1 if `st_blksize' is a member of `struct stat'. */ #undef HAVE_STRUCT_STAT_ST_BLKSIZE @@ -302,6 +306,9 @@ #define HAVE_SYS_PARAM_H 1 #endif +/* Define to 1 if you have the header file. */ +#undef HAVE_SYS_SELECT_H + /* Define to 1 if you have the header file. */ #undef HAVE_SYS_SOCKET_H @@ -319,7 +326,9 @@ #define HAVE_SYS_TYPES_H 1 /* Define to 1 if you have that is POSIX.1 compatible. */ -#undef HAVE_SYS_WAIT_H +#ifdef __DJGPP__ +#define HAVE_SYS_WAIT_H 1 +#endif /* Define to 1 if you have the header file. */ #undef HAVE_TERMIOS_H @@ -407,6 +416,9 @@ /* Define to 1 if the system has the type `_Bool'. */ #undef HAVE__BOOL +/* Define to 1 if you have the `__etoa_l' function. */ +#undef HAVE___ETOA_L + /* enable severe portability problems */ #undef I_DONT_KNOW_WHAT_IM_DOING @@ -426,7 +438,7 @@ #define PACKAGE_NAME "GNU Awk" /* Define to the full name and version of this package. */ -#define PACKAGE_STRING "GNU Awk 4.1.3" +#define PACKAGE_STRING "GNU Awk 4.1.4" /* Define to the one symbol short name of this package. */ #define PACKAGE_TARNAME "gawk" @@ -435,7 +447,7 @@ #define PACKAGE_URL "http://www.gnu.org/software/gawk/" /* Define to the version of this package. */ -#define PACKAGE_VERSION "4.1.3" +#define PACKAGE_VERSION "4.1.4" /* Define to 1 if *printf supports %F format */ #undef PRINTF_HAS_F_FORMAT @@ -471,6 +483,9 @@ /* Define to 1 if your declares `struct tm'. */ #undef TM_IN_SYS_TIME +/* Define to 1 if the character set is EBCDIC */ +#undef USE_EBCDIC + /* force use of our version of strftime */ #undef USE_INCLUDED_STRFTIME @@ -497,7 +512,7 @@ /* Version number of package */ -#define VERSION "4.1.3" +#define VERSION "4.1.4" /* Enable large inode numbers on Mac OS X 10.5. */ #ifndef _DARWIN_USE_64_BIT_INODE @@ -618,7 +633,3 @@ typedef int int32_t; #define strcasecmp stricmp #define strncasecmp strnicmp #endif - -#if defined(__MINGW32__) -# define WEXITSTATUS(stat_val) ((stat_val) & ~0xC0000000) -#endif diff --git a/pc/config.sed b/pc/config.sed index e18a6e6..6c1fb3a 100644 --- a/pc/config.sed +++ b/pc/config.sed @@ -2,7 +2,7 @@ # Configuration script for pc/config.h # ---------------------------------------------------------------------- -# Copyright (C) 2011 the Free Software Foundation, Inc. +# Copyright (C) 2011, 2016 the Free Software Foundation, Inc. # This file is part of GAWK, the GNU implementation of the # AWK Programming Language. @@ -39,9 +39,7 @@ s/^#undef GETGROUPS_T *$/#define GETGROUPS_T gid_t/ s/^#undef HAVE_ALARM *$/#define HAVE_ALARM 1/ s/^#undef HAVE_ATEXIT *$/#define HAVE_ATEXIT 1/ /^#undef HAVE_BTOWC *$/c\ -#ifdef _WIN32\ -#define HAVE_BTOWC 1\ -#endif +#define HAVE_BTOWC 1 /^#undef HAVE_DECL_TZNAME *$/c\ #ifdef __MINGW32__\ #define HAVE_DECL_TZNAME 1\ @@ -182,6 +180,10 @@ s/^#undef HAVE_SYSTEM *$/#define HAVE_SYSTEM 1/ #define HAVE_SYS_TIME_H 1\ #endif s/^#undef HAVE_SYS_TYPES_H *$/#define HAVE_SYS_TYPES_H 1/ +/^#undef HAVE_SYS_WAIT_H *$/c\ +#ifdef __DJGPP__\ +#define HAVE_SYS_WAIT_H 1\ +#endif /^#undef HAVE_TOWLOWER *$/c\ #ifdef __MINGW32__\ #define HAVE_TOWLOWER 1\ @@ -297,8 +299,4 @@ typedef int int32_t;\ #if defined(__EMX__)\ #define strcasecmp stricmp\ #define strncasecmp strnicmp\ -#endif\ -\ -#if defined(__MINGW32__)\ -# define WEXITSTATUS(stat_val) ((stat_val) & ~0xC0000000)\ #endif diff --git a/pc/gawkmisc.pc b/pc/gawkmisc.pc index fdd32e7..9939fb4 100644 --- a/pc/gawkmisc.pc +++ b/pc/gawkmisc.pc @@ -3,7 +3,8 @@ */ /* - * Copyright (C) 1986, 1988, 1989, 1991 - 2003, 2012 the Free Software Foundation, Inc. + * Copyright (C) 1986, 1988, 1989, 1991 - 2003, 2012, 2016 + * the Free Software Foundation, Inc. * * This file is part of GAWK, the GNU implementation of the * AWK Progamming Language. @@ -584,6 +585,9 @@ unsetenv (const char *name) return setenv (name, "", 1); } +/* MinGW 3.21 and later defines usleep as an inline function in + unistd.h, which conflicts with the version below. */ +#if __MINGW32_MAJOR_VERSION + (__MINGW32_MINOR_VERSION > 20) < 4 int usleep(unsigned int usec) { @@ -593,6 +597,7 @@ usleep(unsigned int usec) return usec - msecf * 1000 < 0 ? 0 : (int)(usec - msecf * 1000); } +#endif /* The implementation of wctob in the MS runtime is problematic because it doesn't allow to distinguish between WEOF and 0xff, due @@ -848,6 +853,50 @@ w32_shutdown (int fd, int how) #endif /* HAVE_SOCKETS */ +/* Translate abnormal exit status of Windows programs into the signal + that terminated the program. This is required to support scm_kill + and WTERMSIG. */ + +#include + +struct signal_and_status { + int sig; + unsigned status; +}; + +static const struct signal_and_status sigtbl[] = { + {SIGSEGV, 0xC0000005}, /* access to invalid address */ + {SIGSEGV, 0xC0000008}, /* invalid handle */ + {SIGILL, 0xC000001D}, /* illegal instruction */ + {SIGILL, 0xC0000025}, /* non-continuable instruction */ + {SIGSEGV, 0xC000008C}, /* array bounds exceeded */ + {SIGFPE, 0xC000008D}, /* float denormal */ + {SIGFPE, 0xC000008E}, /* float divide by zero */ + {SIGFPE, 0xC000008F}, /* float inexact */ + {SIGFPE, 0xC0000090}, /* float invalid operation */ + {SIGFPE, 0xC0000091}, /* float overflow */ + {SIGFPE, 0xC0000092}, /* float stack check */ + {SIGFPE, 0xC0000093}, /* float underflow */ + {SIGFPE, 0xC0000094}, /* integer divide by zero */ + {SIGFPE, 0xC0000095}, /* integer overflow */ + {SIGILL, 0xC0000096}, /* privileged instruction */ + {SIGSEGV, 0xC00000FD}, /* stack overflow */ + {SIGTERM, 0xC000013A}, /* Ctrl-C exit */ + {SIGINT, 0xC000013A} +}; + +int +w32_status_to_termsig (unsigned status) +{ + int i; + + for (i = 0; i < sizeof (sigtbl) / sizeof (sigtbl[0]); i++) + if (status == sigtbl[i].status) + return sigtbl[i].sig; + + return SIGTERM; +} + #endif /* __MINGW32__ */ #if defined(__DJGPP__) || defined(__MINGW32__) || defined(__EMX__) diff --git a/po/ChangeLog b/po/ChangeLog index 4b0ca14..149526a 100644 --- a/po/ChangeLog +++ b/po/ChangeLog @@ -1,3 +1,12 @@ +2016-08-25 Arnold D. Robbins + + * 4.1.4: Release tar ball made. + +2016-02-22 gettextize + + * Makefile.in.in: Upgrade to gettext-0.19.7. + * Rules-quot: Upgrade to gettext-0.19.7. + 2015-05-19 Arnold D. Robbins * 4.1.3: Release tar ball made. diff --git a/po/LINGUAS b/po/LINGUAS index d00794e..ffa8f58 100644 --- a/po/LINGUAS +++ b/po/LINGUAS @@ -4,6 +4,7 @@ de es fi fr +id it ja ms @@ -11,3 +12,4 @@ nl pl sv vi +zh_CN diff --git a/po/Makefile.in.in b/po/Makefile.in.in index 65184f6..8f34f00 100644 --- a/po/Makefile.in.in +++ b/po/Makefile.in.in @@ -1,14 +1,12 @@ # Makefile for PO directory in any package using GNU gettext. # Copyright (C) 1995-1997, 2000-2007, 2009-2010 by Ulrich Drepper # -# This file can be copied and used freely without restrictions. It can -# be used in projects which are not available under the GNU General Public -# License but which still want to provide support for the GNU gettext -# functionality. -# Please note that the actual code of GNU gettext is covered by the GNU -# General Public License and is *not* in the public domain. +# Copying and distribution of this file, with or without modification, +# are permitted in any medium without royalty provided the copyright +# notice and this notice are preserved. This file is offered as-is, +# without any warranty. # -# Origin: gettext-0.19 +# Origin: gettext-0.19.7 GETTEXT_MACRO_VERSION = 0.19 PACKAGE = @PACKAGE@ @@ -45,6 +43,11 @@ install_sh = $(SHELL) @install_sh@ MKDIR_P = @MKDIR_P@ mkdir_p = @mkdir_p@ +# When building gettext-tools, we prefer to use the built programs +# rather than installed programs. However, we can't do that when we +# are cross compiling. +CROSS_COMPILING = @CROSS_COMPILING@ + GMSGFMT_ = @GMSGFMT@ GMSGFMT_no = @GMSGFMT@ GMSGFMT_yes = @GMSGFMT_015@ @@ -197,6 +200,11 @@ $(DOMAIN).pot-update: $(POTFILES) $(srcdir)/POTFILES.in remove-potcdate.sed ;; \ esac test ! -f $(DOMAIN).po || { \ + if test -f $(srcdir)/$(DOMAIN).pot-header; then \ + sed -e '1,/^#$$/d' < $(DOMAIN).po > $(DOMAIN).1po && \ + cat $(srcdir)/$(DOMAIN).pot-header $(DOMAIN).1po > $(DOMAIN).po; \ + rm -f $(DOMAIN).1po; \ + fi; \ if test -f $(srcdir)/$(DOMAIN).pot; then \ sed -f remove-potcdate.sed < $(srcdir)/$(DOMAIN).pot > $(DOMAIN).1po && \ sed -f remove-potcdate.sed < $(DOMAIN).po > $(DOMAIN).2po && \ @@ -226,7 +234,7 @@ $(POFILES): $(POFILESDEPS) test "$(srcdir)" = . && cdcmd="" || cdcmd="cd $(srcdir) && "; \ echo "$${cdcmd}$(MSGMERGE_UPDATE) $(MSGMERGE_OPTIONS) --lang=$${lang} $${lang}.po $(DOMAIN).pot"; \ cd $(srcdir) \ - && { case `$(MSGMERGE_UPDATE) --version | sed 1q | sed -e 's,^[^0-9]*,,'` in \ + && { case `$(MSGMERGE) --version | sed 1q | sed -e 's,^[^0-9]*,,'` in \ '' | 0.[0-9] | 0.[0-9].* | 0.1[0-7] | 0.1[0-7].*) \ $(MSGMERGE_UPDATE) $(MSGMERGE_OPTIONS) $${lang}.po $(DOMAIN).pot;; \ *) \ @@ -427,7 +435,7 @@ update-po: Makefile .nop.po-update: @lang=`echo $@ | sed -e 's/\.po-update$$//'`; \ - if test "$(PACKAGE)" = "gettext-tools"; then PATH=`pwd`/../src:$$PATH; fi; \ + if test "$(PACKAGE)" = "gettext-tools" && test "$(CROSS_COMPILING)" != "yes"; then PATH=`pwd`/../src:$$PATH; fi; \ tmpdir=`pwd`; \ echo "$$lang:"; \ test "$(srcdir)" = . && cdcmd="" || cdcmd="cd $(srcdir) && "; \ diff --git a/po/Rules-quot b/po/Rules-quot index 9dc9630..baf6528 100644 --- a/po/Rules-quot +++ b/po/Rules-quot @@ -15,7 +15,7 @@ en@boldquot.po-update: en@boldquot.po-update-en .insert-header.po-update-en: @lang=`echo $@ | sed -e 's/\.po-update-en$$//'`; \ - if test "$(PACKAGE)" = "gettext-tools"; then PATH=`pwd`/../src:$$PATH; GETTEXTLIBDIR=`cd $(top_srcdir)/src && pwd`; export GETTEXTLIBDIR; fi; \ + if test "$(PACKAGE)" = "gettext-tools" && test "$(CROSS_COMPILING)" != "yes"; then PATH=`pwd`/../src:$$PATH; GETTEXTLIBDIR=`cd $(top_srcdir)/src && pwd`; export GETTEXTLIBDIR; fi; \ tmpdir=`pwd`; \ echo "$$lang:"; \ ll=`echo $$lang | sed -e 's/@.*//'`; \ diff --git a/po/ca.po b/po/ca.po index bb7afe1..d1f0a51 100644 --- a/po/ca.po +++ b/po/ca.po @@ -2,13 +2,13 @@ # Copyright (C) 2003 Free Software Foundation, Inc. # This file is distributed under the same license as the gawk package. # Antoni Bella Perez , 2003. -# Walter Garcia-Fontes , 2014. +# Walter Garcia-Fontes , 2015. msgid "" msgstr "" -"Project-Id-Version: gawk 4.1.0b\n" +"Project-Id-Version: gawk 4.1.1d\n" "Report-Msgid-Bugs-To: bug-gawk@gnu.org\n" -"POT-Creation-Date: 2015-05-19 16:06+0300\n" -"PO-Revision-Date: 2014-02-26 20:18+0100\n" +"POT-Creation-Date: 2016-08-25 06:19+0300\n" +"PO-Revision-Date: 2015-11-19 19:14+0100\n" "Last-Translator: Walter Garcia-Fontes \n" "Language-Team: Catalan \n" "Language: ca\n" @@ -17,92 +17,92 @@ msgstr "" "Content-Transfer-Encoding: 8bit\n" "X-Generator: KBabel 1.0.1\n" -#: array.c:256 +#: array.c:259 #, c-format msgid "from %s" msgstr "de %s" -#: array.c:357 +#: array.c:360 msgid "attempt to use a scalar value as array" msgstr "s'ha intentat usar un valor escalar com a una matriu" -#: array.c:359 +#: array.c:362 #, c-format msgid "attempt to use scalar parameter `%s' as an array" msgstr "s'ha intentat usar un paràmetre escalar `%s' com a una matriu" -#: array.c:362 +#: array.c:365 #, c-format msgid "attempt to use scalar `%s' as an array" msgstr "s'ha intentat usar la dada escalar `%s' com a una matriu" -#: array.c:409 array.c:576 builtin.c:85 builtin.c:1606 builtin.c:1652 -#: builtin.c:1665 builtin.c:2112 builtin.c:2126 eval.c:1149 eval.c:1153 -#: eval.c:1564 +#: array.c:412 array.c:579 builtin.c:85 builtin.c:1612 builtin.c:1658 +#: builtin.c:1671 builtin.c:2160 builtin.c:2179 eval.c:1141 eval.c:1145 +#: eval.c:1556 #, c-format msgid "attempt to use array `%s' in a scalar context" msgstr "s'ha intentat usar la matriu `%s' en un context escalar" -#: array.c:583 +#: array.c:586 #, c-format msgid "delete: index `%s' not in array `%s'" msgstr "delete: l'índex `%s' no està en la matriu `%s'" -#: array.c:597 +#: array.c:600 #, c-format msgid "attempt to use scalar `%s[\"%.*s\"]' as an array" msgstr "s'ha intentat usar la dada escalar `%s[\"%.*s\"]' com a una matriu" -#: array.c:776 +#: array.c:779 msgid "adump: first argument not an array" msgstr "adump: el primer argument no és una matriu" -#: array.c:815 +#: array.c:818 msgid "asort: second argument not an array" msgstr "asort: el segon argument no és una matriu" -#: array.c:816 +#: array.c:819 msgid "asorti: second argument not an array" msgstr "asorti: el segon argument no és una matriu" -#: array.c:823 +#: array.c:826 msgid "asort: first argument not an array" msgstr "asort: el primer argument no és una matriu" -#: array.c:824 +#: array.c:827 msgid "asorti: first argument not an array" msgstr "asort: el primer argument no és una matriu" -#: array.c:831 +#: array.c:834 msgid "asort: cannot use a subarray of first arg for second arg" msgstr "" "asort: no es pot usar una submatriu com a primer argument per al segon " "argument" -#: array.c:832 +#: array.c:835 msgid "asorti: cannot use a subarray of first arg for second arg" msgstr "" "asorti: no es pot usar una submatriu com a primer argument per al segon " "argument" -#: array.c:837 +#: array.c:840 msgid "asort: cannot use a subarray of second arg for first arg" msgstr "" "asort: no es pot usar una submatriu com a segon argument per al primer " "argument" -#: array.c:838 +#: array.c:841 msgid "asorti: cannot use a subarray of second arg for first arg" msgstr "" "asorti: no es pot usar una submatriu com a segon argument per al primer " "argument" -#: array.c:1313 +#: array.c:1316 #, c-format msgid "`%s' is invalid as a function name" msgstr "`%s' no és vàlid com a nom de funció" -#: array.c:1317 +#: array.c:1320 #, c-format msgid "sort comparison function `%s' is not defined" msgstr "la funció de comparació d'ordenació `%s' no està definida" @@ -148,11 +148,11 @@ msgid "duplicate `default' detected in switch body" msgstr "" "s'ha detectat el cas predeterminat `default' duplicat a l'expressió switch " -#: awkgram.y:793 awkgram.y:3763 +#: awkgram.y:793 awkgram.y:3774 msgid "`break' is not allowed outside a loop or switch" msgstr "no es permet `break' a fora d'un bucle o bifurcació" -#: awkgram.y:802 awkgram.y:3755 +#: awkgram.y:802 awkgram.y:3766 msgid "`continue' is not allowed outside a loop" msgstr "no es permet `continue' a fora d'un bucle" @@ -173,8 +173,7 @@ msgstr "`return' #: awkgram.y:919 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 " -"\"\"'" +"el «print» simple en la regla BEGIN o END probablement ha de ser «print \"\"»" #: awkgram.y:985 awkgram.y:1034 msgid "`delete' is not allowed with SYMTAB" @@ -210,9 +209,9 @@ msgid "regular expression on right of comparison" msgstr "expressió regular a la dreta de la comparació" #: awkgram.y:1413 -#, fuzzy, c-format +#, c-format msgid "non-redirected `getline' invalid inside `%s' rule" -msgstr "`getline' no és vàlid a dins de la regla `%s'" +msgstr "`getline' sense redirigir no és vàlid a dins de la regla `%s'" #: awkgram.y:1416 msgid "non-redirected `getline' undefined inside END action" @@ -237,15 +236,15 @@ msgstr "" "no es pot usar la variable especial `%s' per a una crida indirecta de funció" #: awkgram.y:1637 -#, fuzzy, c-format +#, c-format msgid "attempt to use non-function `%s' in function call" -msgstr "s'ha intentat usar la funció «%s» com a una matriu" +msgstr "s'ha intentat usar la no-funció «%s» en una crida a funcions" #: awkgram.y:1701 msgid "invalid subscript expression" msgstr "expressió de subíndex no vàlida" -#: awkgram.y:2047 awkgram.y:2067 gawkapi.c:206 gawkapi.c:224 msg.c:126 +#: awkgram.y:2047 awkgram.y:2067 gawkapi.c:206 gawkapi.c:223 msg.c:126 msgid "warning: " msgstr "advertiment: " @@ -253,264 +252,269 @@ msgstr "advertiment: " msgid "fatal: " msgstr "fatal: " -#: awkgram.y:2115 +#: awkgram.y:2116 msgid "unexpected newline or end of string" msgstr "nova línia inesperada o final d'una cadena de caràcters" -#: awkgram.y:2394 awkgram.y:2470 awkgram.y:2693 debug.c:523 debug.c:539 -#: debug.c:2812 debug.c:5055 +#: awkgram.y:2397 awkgram.y:2473 awkgram.y:2696 debug.c:523 debug.c:539 +#: debug.c:2812 debug.c:5101 #, 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:2395 awkgram.y:2520 +#: awkgram.y:2398 awkgram.y:2523 #, c-format msgid "can't open shared library `%s' for reading (%s)" msgstr "no es pot obrir la llibreria compartida `%s' per a lectura (%s)" -#: awkgram.y:2397 awkgram.y:2471 awkgram.y:2521 builtin.c:135 debug.c:5206 +#: awkgram.y:2400 awkgram.y:2474 awkgram.y:2524 builtin.c:135 debug.c:5252 msgid "reason unknown" msgstr "motiu desconegut" -#: awkgram.y:2406 awkgram.y:2430 +#: awkgram.y:2409 awkgram.y:2433 #, c-format msgid "can't include `%s' and use it as a program file" msgstr "no es pot incloure `%s' i usar-lo com un fitxer de programa" -#: awkgram.y:2419 +#: awkgram.y:2422 #, c-format msgid "already included source file `%s'" msgstr "ja s'ha inclòs el fitxer font `%s'" -#: awkgram.y:2420 +#: awkgram.y:2423 #, c-format msgid "already loaded shared library `%s'" msgstr "ja s'ha carregat la biblioteca compartida `%s'" -#: awkgram.y:2455 +#: awkgram.y:2458 msgid "@include is a gawk extension" msgstr "@include és una extensió de gawk" -#: awkgram.y:2461 +#: awkgram.y:2464 msgid "empty filename after @include" msgstr "nom de fitxer buit després de @include" -#: awkgram.y:2505 +#: awkgram.y:2508 msgid "@load is a gawk extension" msgstr "@load és una extensió de gawk" -#: awkgram.y:2511 +#: awkgram.y:2514 msgid "empty filename after @load" msgstr "fitxer buit després de @load" -#: awkgram.y:2645 +#: awkgram.y:2648 msgid "empty program text on command line" msgstr "el text del programa en la línia de comandaments està buit" -#: awkgram.y:2760 +#: awkgram.y:2763 #, c-format msgid "can't read sourcefile `%s' (%s)" msgstr "no es pot llegir el fitxer font `%s' (%s)" -#: awkgram.y:2771 +#: awkgram.y:2774 #, c-format msgid "source file `%s' is empty" msgstr "el fitxer font `%s' està buit" -#: awkgram.y:2830 +#: awkgram.y:2833 #, c-format msgid "PEBKAC error: invalid character '\\%03o' in source code" -msgstr "" +msgstr "Error PEBKAC: caràcter «\\%03o'» no vàlid al codi font" -#: awkgram.y:2961 +#: awkgram.y:2964 msgid "source file does not end in newline" msgstr "el fitxer font no finalitza amb un retorn de carro" -#: awkgram.y:3074 +#: awkgram.y:3081 msgid "unterminated regexp ends with `\\' at end of file" msgstr "expressió regular sense finalitzar acaba amb `\\' al final del fitxer" -#: awkgram.y:3101 +#: awkgram.y:3108 #, c-format msgid "%s: %d: tawk regex modifier `/.../%c' doesn't work in gawk" msgstr "%s: %d: el modificador regex tawk `/.../%c' no funciona a gawk" -#: awkgram.y:3105 +#: awkgram.y:3112 #, c-format msgid "tawk regex modifier `/.../%c' doesn't work in gawk" msgstr "el modificador regex tawk `/.../%c' no funciona a gawk" -#: awkgram.y:3112 +#: awkgram.y:3119 msgid "unterminated regexp" msgstr "expressió regular sense finalitzar" -#: awkgram.y:3116 +#: awkgram.y:3123 msgid "unterminated regexp at end of file" msgstr "expressió regular sense finalitzar al final del fitxer" -#: awkgram.y:3174 +#: awkgram.y:3181 msgid "use of `\\ #...' line continuation is not portable" msgstr "l'ús de `\\ #...' com a continuació de línia no és portable" -#: awkgram.y:3190 +#: awkgram.y:3197 msgid "backslash not last character on line" msgstr "la barra invertida no és l'últim caràcter en la línia" -#: awkgram.y:3251 +#: awkgram.y:3235 awkgram.y:3237 +#, fuzzy +msgid "multidimensional arrays are a gawk extension" +msgstr "les crides a funcions indirectes són una extensió gawk" + +#: awkgram.y:3262 msgid "POSIX does not allow operator `**='" msgstr "POSIX no permet l'operador `**='" -#: awkgram.y:3253 +#: awkgram.y:3264 msgid "old awk does not support operator `**='" msgstr "l'antic awk no suporta l'operador `**='" -#: awkgram.y:3262 +#: awkgram.y:3273 msgid "POSIX does not allow operator `**'" msgstr "POSIX no permet l'operador `**'" -#: awkgram.y:3264 +#: awkgram.y:3275 msgid "old awk does not support operator `**'" msgstr "l'antic awk no suporta l'operador `**='" -#: awkgram.y:3299 +#: awkgram.y:3310 msgid "operator `^=' is not supported in old awk" msgstr "l'operador `^=' no està suportat en l'antic awk" -#: awkgram.y:3307 +#: awkgram.y:3318 msgid "operator `^' is not supported in old awk" msgstr "l'operador `^' no està suportat en l'antic awk" -#: awkgram.y:3404 awkgram.y:3422 command.y:1180 +#: awkgram.y:3415 awkgram.y:3433 command.y:1187 msgid "unterminated string" msgstr "cadena sense finalitzar" -#: awkgram.y:3643 +#: awkgram.y:3654 #, c-format msgid "invalid char '%c' in expression" msgstr "caràcter `%c' no vàlid en l'expressió" -#: awkgram.y:3690 +#: awkgram.y:3701 #, c-format msgid "`%s' is a gawk extension" msgstr "`%s' és una extensió de gawk" -#: awkgram.y:3695 +#: awkgram.y:3706 #, c-format msgid "POSIX does not allow `%s'" msgstr "POSIX no permet «%s»" -#: awkgram.y:3703 +#: awkgram.y:3714 #, c-format msgid "`%s' is not supported in old awk" msgstr "`%s' no està suportat en l'antic awk" -#: awkgram.y:3793 +#: awkgram.y:3804 msgid "`goto' considered harmful!\n" msgstr "`goto' es considera perjudicial!\n" -#: awkgram.y:3827 +#: awkgram.y:3873 #, 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:3862 +#: awkgram.y:3908 #, 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:3867 +#: awkgram.y:3913 #, c-format msgid "%s third parameter is not a changeable object" msgstr "%s el tercer paràmetre no és un objecte intercanviable" -#: awkgram.y:3950 awkgram.y:3953 +#: awkgram.y:3996 awkgram.y:3999 msgid "match: third argument is a gawk extension" msgstr "match: el tercer argument és una extensió de gawk" -#: awkgram.y:4007 awkgram.y:4010 +#: awkgram.y:4053 awkgram.y:4056 msgid "close: second argument is a gawk extension" msgstr "close: el segon argument és una extensió de gawk" -#: awkgram.y:4022 +#: awkgram.y:4068 msgid "use of dcgettext(_\"...\") is incorrect: remove leading underscore" msgstr "" "l'ús de dcgettext(_\"...\") no és correcte: elimineu el guió baix inicial" -#: awkgram.y:4037 +#: awkgram.y:4083 msgid "use of dcngettext(_\"...\") is incorrect: remove leading underscore" msgstr "" "l'ús de dcgettext(_\"...\") no és correcte: elimineu el guió baix inicial" -#: awkgram.y:4056 +#: awkgram.y:4102 msgid "index: regexp constant as second argument is not allowed" msgstr "índex: no es permet una constant regexp com a segon argument" -#: awkgram.y:4109 +#: awkgram.y:4155 #, c-format msgid "function `%s': parameter `%s' shadows global variable" msgstr "funció `%s': paràmetre `%s' ofusca la variable global" -#: awkgram.y:4166 debug.c:4041 debug.c:4084 debug.c:5204 +#: awkgram.y:4214 debug.c:4087 debug.c:4130 debug.c:5250 #, c-format msgid "could not open `%s' for writing (%s)" msgstr "no es pot obrir `%s' per a escriptura (%s)" -#: awkgram.y:4167 +#: awkgram.y:4215 msgid "sending variable list to standard error" msgstr "s'està enviant la llista de variables a l'eixida d'error estàndard" -#: awkgram.y:4175 +#: awkgram.y:4223 #, c-format msgid "%s: close failed (%s)" msgstr "%s: tancament erroni (%s)" -#: awkgram.y:4200 +#: awkgram.y:4248 msgid "shadow_funcs() called twice!" msgstr "shadow_funcs() s'ha cridat dues vegades!" -#: awkgram.y:4208 +#: awkgram.y:4256 msgid "there were shadowed variables." msgstr "hi ha hagut variables a l'ombra" -#: awkgram.y:4279 +#: awkgram.y:4327 #, c-format msgid "function name `%s' previously defined" msgstr "nom de la funció `%s' definida prèviament" -#: awkgram.y:4325 +#: awkgram.y:4373 #, 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:4328 +#: awkgram.y:4376 #, c-format msgid "function `%s': can't use special variable `%s' as a function parameter" msgstr "" "funció `%s': no es pot usar la variable especial `%s' com a un paràmetre de " "funció" -#: awkgram.y:4336 +#: awkgram.y:4384 #, 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:4423 awkgram.y:4429 +#: awkgram.y:4471 awkgram.y:4477 #, c-format msgid "function `%s' called but never defined" msgstr "es crida a la funció `%s' però no s'ha definit" -#: awkgram.y:4433 +#: awkgram.y:4481 #, c-format msgid "function `%s' defined but never called directly" msgstr "la funció `%s' està definida però no s'ha cridat mai directament" -#: awkgram.y:4465 +#: awkgram.y:4513 #, 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:4480 +#: awkgram.y:4528 #, c-format msgid "" "function `%s' called with space between name and `(',\n" @@ -519,23 +523,23 @@ msgstr "" "s'ha cridat a la funció `%s' amb espai entre el nom i el '(',\n" "o s'ha usat com a variable o matriu" -#: awkgram.y:4686 +#: awkgram.y:4734 msgid "division by zero attempted" msgstr "s'ha intentat una divisió per zero" -#: awkgram.y:4695 +#: awkgram.y:4743 #, c-format msgid "division by zero attempted in `%%'" msgstr "s'ha intentat una divisió per zero en `%%'" -#: awkgram.y:5015 +#: awkgram.y:5064 msgid "" "cannot assign a value to the result of a field post-increment expression" msgstr "" "no es pot assignar un valor al resultat d'una expressió post-increment de " "camp" -#: awkgram.y:5018 +#: awkgram.y:5067 #, c-format msgid "invalid target of assignment (opcode %s)" msgstr "destí no vàlid d'assignació (opcode %s)" @@ -572,208 +576,219 @@ msgstr "" "fflush: no es pot netejar: el fitxer `%s' s'ha obert per a lectura, no per a " "escriptura" -#: builtin.c:244 +#: builtin.c:241 +#, fuzzy, c-format +msgid "fflush: cannot flush: two-way pipe `%s' has closed write end" +msgstr "" +"fflush: no es pot netejar: la canonada `%s' s'ha obert per a lectura, no per " +"a escriptura" + +#: builtin.c:247 #, 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:351 +#: builtin.c:354 msgid "index: received non-string first argument" msgstr "índex: el primer argument rebut no és una cadena" -#: builtin.c:353 +#: builtin.c:356 msgid "index: received non-string second argument" msgstr "índex: el segon argument rebut no és una cadena" -#: builtin.c:466 mpfr.c:777 +#: builtin.c:469 mpfr.c:781 msgid "int: received non-numeric argument" msgstr "int: s'ha rebut un argument no numèric" -#: builtin.c:503 +#: builtin.c:506 msgid "length: received array argument" msgstr "length: s'ha rebut un argument de matriu" -#: builtin.c:506 +#: builtin.c:509 msgid "`length(array)' is a gawk extension" msgstr "`length(array)' és una extensió de gawk" -#: builtin.c:525 +#: builtin.c:528 msgid "length: received non-string argument" msgstr "length: s'ha rebut un argument que no és una cadena" -#: builtin.c:554 +#: builtin.c:557 msgid "log: received non-numeric argument" msgstr "log: s'ha rebut un argument no numèric" -#: builtin.c:557 +#: builtin.c:560 #, c-format msgid "log: received negative argument %g" msgstr "log: s'ha rebut l'argument negatiu %g" -#: builtin.c:755 builtin.c:760 builtin.c:911 +#: builtin.c:758 builtin.c:763 builtin.c:914 msgid "fatal: must use `count$' on all formats or none" msgstr "fatal: s'ha d'usar `count$' a tots els format o a cap" -#: builtin.c:830 +#: builtin.c:833 #, c-format msgid "field width is ignored for `%%' specifier" msgstr "l'amplada de camp s'ignorarà per a l'especificador `%%'" -#: builtin.c:832 +#: builtin.c:835 #, c-format msgid "precision is ignored for `%%' specifier" msgstr "la precisió s'ignorarà per a l'especificador `%%'" -#: builtin.c:834 +#: builtin.c:837 #, c-format msgid "field width and precision are ignored for `%%' specifier" msgstr "l'amplada de camp i la precisió s'ignoraran per a l'especificador `%%'" -#: builtin.c:885 +#: builtin.c:888 msgid "fatal: `$' is not permitted in awk formats" msgstr "fatal: no es permeten `$' en els formats awk" -#: builtin.c:894 +#: builtin.c:897 msgid "fatal: arg count with `$' must be > 0" msgstr "fatal: el recompte d'arguments amb `$' ha de ser > 0" -#: builtin.c:898 +#: builtin.c:901 #, c-format msgid "fatal: arg count %ld greater than total number of supplied arguments" msgstr "" "fatal: el recompte d'arguments %ld és major que el nombre total d'arguments " "proporcionats" -#: builtin.c:902 +#: builtin.c:905 msgid "fatal: `$' not permitted after period in format" msgstr "fatal: no es permet `$' després d'un punt en el format" -#: builtin.c:921 +#: builtin.c:924 msgid "fatal: no `$' supplied for positional field width or precision" msgstr "" "fatal: no es proporciona `$' per a l'ample o precisió del camp de posició" -#: builtin.c:991 +#: builtin.c:994 msgid "`l' is meaningless in awk formats; ignored" msgstr "`l' manca de significat en els formats awk; serà ignorat" -#: builtin.c:995 +#: builtin.c:998 msgid "fatal: `l' is not permitted in POSIX awk formats" msgstr "fatal: `l' no està permès en els formats POSIX de awk" -#: builtin.c:1008 +#: builtin.c:1011 msgid "`L' is meaningless in awk formats; ignored" msgstr "`L' manca de significat en els formats awk; serà ignorat" -#: builtin.c:1012 +#: builtin.c:1015 msgid "fatal: `L' is not permitted in POSIX awk formats" msgstr "fatal: `L' no està permès en els formats POSIX de awk" -#: builtin.c:1025 +#: builtin.c:1028 msgid "`h' is meaningless in awk formats; ignored" msgstr "`h' manca de significat en els formats awk; serà ignorat" -#: builtin.c:1029 +#: builtin.c:1032 msgid "fatal: `h' is not permitted in POSIX awk formats" msgstr "fatal: `h' no està permès en els formats POSIX de awk" -#: builtin.c:1055 -#, fuzzy, c-format +#: builtin.c:1058 +#, c-format msgid "[s]printf: value %g is too big for %%c format" -msgstr "[s]printf: el valor %g està fora de rang per al format `%%%c'" +msgstr "[s]printf: el valor %g és massa gran per al format `%%c'" -#: builtin.c:1068 -#, fuzzy, c-format +#: builtin.c:1071 +#, c-format msgid "[s]printf: value %g is not a valid wide character" -msgstr "[s]printf: el valor %g està fora de rang per al format `%%%c'" +msgstr "[s]printf: el valor %g no és un caràcter ampli vàlid" -#: builtin.c:1454 +#: builtin.c:1457 #, c-format msgid "[s]printf: value %g is out of range for `%%%c' format" msgstr "[s]printf: el valor %g està fora de rang per al format `%%%c'" -#: builtin.c:1552 +#: builtin.c:1555 #, c-format msgid "ignoring unknown format specifier character `%c': no argument converted" msgstr "" "s'ignorarà el caràcter especificador de format `%c': no s'ha convertit cap " "argument" -#: builtin.c:1557 +#: builtin.c:1560 msgid "fatal: not enough arguments to satisfy format string" msgstr "fatal: no hi ha prou arguments per a satisfer el format d'una cadena" -#: builtin.c:1559 +#: builtin.c:1562 msgid "^ ran out for this one" msgstr "^ desbordament per a aquest" -#: builtin.c:1566 +#: builtin.c:1569 msgid "[s]printf: format specifier does not have control letter" msgstr "[s]printf: l'especificador de format no conté lletra de control" -#: builtin.c:1569 +#: builtin.c:1572 msgid "too many arguments supplied for format string" msgstr "s'han proporcionat masses arguments per a la cadena de format" -#: builtin.c:1625 +#: builtin.c:1631 msgid "sprintf: no arguments" msgstr "sprintf: sense arguments" -#: builtin.c:1648 builtin.c:1659 +#: builtin.c:1654 builtin.c:1665 msgid "printf: no arguments" msgstr "printf: sense arguments" -#: builtin.c:1702 +#: builtin.c:1676 +msgid "printf: attempt to write to closed write end of two-way pipe" +msgstr "" + +#: builtin.c:1713 msgid "sqrt: received non-numeric argument" msgstr "sqrt: s'ha rebut un argument no numèric" -#: builtin.c:1706 +#: builtin.c:1717 #, c-format msgid "sqrt: called with negative argument %g" msgstr "sqrt: cridat amb l'argument negatiu %g" -#: builtin.c:1737 +#: builtin.c:1748 #, c-format msgid "substr: length %g is not >= 1" msgstr "substr: la longitud %g no és >= 1" -#: builtin.c:1739 +#: builtin.c:1750 #, c-format msgid "substr: length %g is not >= 0" msgstr "substr: la longitud %g no és >= 0" -#: builtin.c:1753 +#: builtin.c:1764 #, 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:1758 +#: builtin.c:1769 #, c-format msgid "substr: length %g too big for string indexing, truncating to %g" msgstr "" "substr: la llargada %g és massa gran per a la indexació de cadenes de " "caràcters, es truncarà a %g" -#: builtin.c:1770 +#: builtin.c:1781 #, 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:1775 +#: builtin.c:1786 #, 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:1798 +#: builtin.c:1809 msgid "substr: source string is zero length" msgstr "substr: la cadena font és de longitud zero" -#: builtin.c:1812 +#: builtin.c:1823 #, c-format msgid "substr: start index %g is past end of string" msgstr "substr: l'índex d'inici %g sobrepassa l'acabament de la cadena" -#: builtin.c:1820 +#: builtin.c:1831 #, c-format msgid "" "substr: length %g at start index %g exceeds length of first argument (%lu)" @@ -781,318 +796,320 @@ msgstr "" "substr: la longitud %g a l'índex d'inici %g excedeix la longitud del primer " "argument (%lu)" -#: builtin.c:1892 +#: builtin.c:1903 msgid "strftime: format value in PROCINFO[\"strftime\"] has numeric type" msgstr "strftime: el valor de format a PROCINFO[\"strftime\"] té tipus numèric" -#: builtin.c:1915 +#: builtin.c:1926 msgid "strftime: received non-numeric second argument" msgstr "strftime: s'ha rebut un segon argument no numèric" -#: builtin.c:1925 +#: builtin.c:1936 msgid "strftime: second argument less than 0 or too big for time_t" msgstr "" "strftime: el segon argument és més petit que 0 o massa gran per a time_t" -#: builtin.c:1932 -#, fuzzy +#: builtin.c:1943 msgid "strftime: second argument out of range for time_t" -msgstr "" -"strftime: el segon argument és més petit que 0 o massa gran per a time_t" +msgstr "strftime: ssegon argument fora de rang per a time_t" -#: builtin.c:1941 +#: builtin.c:1952 msgid "strftime: received non-string first argument" msgstr "strftime: el primer argument rebut no és una cadena" -#: builtin.c:1948 +#: builtin.c:1959 msgid "strftime: received empty format string" msgstr "strftime: s'ha rebut una cadena de format buida" -#: builtin.c:2017 +#: builtin.c:2028 msgid "mktime: received non-string argument" msgstr "mktime: s'ha rebut un argument que no és una cadena" -#: builtin.c:2034 +#: builtin.c:2045 msgid "mktime: at least one of the values is out of the default range" msgstr "mktime: almenys un dels valors està forra del rang predeterminat" -#: builtin.c:2069 +#: builtin.c:2081 msgid "'system' function not allowed in sandbox mode" msgstr "la funció 'system' no es permet fora del mode entorn de proves" -#: builtin.c:2074 +#: builtin.c:2086 msgid "system: received non-string argument" msgstr "system: s'ha rebut un argument que no és una cadena" -#: builtin.c:2194 +#: builtin.c:2165 builtin.c:2230 +msgid "print: attempt to write to closed write end of two-way pipe" +msgstr "" + +#: builtin.c:2248 #, c-format msgid "reference to uninitialized field `$%d'" msgstr "referència a una variable sense inicialitzar `$%d'" -#: builtin.c:2279 +#: builtin.c:2333 msgid "tolower: received non-string argument" msgstr "tolower: s'ha rebut un argument que no és una cadena" -#: builtin.c:2310 +#: builtin.c:2364 msgid "toupper: received non-string argument" msgstr "toupper: s'ha rebut un argument que no és una cadena" -#: builtin.c:2343 mpfr.c:679 +#: builtin.c:2397 mpfr.c:681 msgid "atan2: received non-numeric first argument" msgstr "atan2: el primer argument rebut no és numèric" -#: builtin.c:2345 mpfr.c:681 +#: builtin.c:2399 mpfr.c:683 msgid "atan2: received non-numeric second argument" msgstr "atan2: el segon argument rebut no és numèric" -#: builtin.c:2364 +#: builtin.c:2418 msgid "sin: received non-numeric argument" msgstr "sin: s'ha rebut un argument que no és numèric" -#: builtin.c:2380 +#: builtin.c:2434 msgid "cos: received non-numeric argument" msgstr "cos: s'ha rebut un argument que no és numèric" -#: builtin.c:2433 mpfr.c:1176 +#: builtin.c:2487 mpfr.c:1180 msgid "srand: received non-numeric argument" msgstr "srand: s'ha rebut un argument que no és numèric" -#: builtin.c:2464 +#: builtin.c:2518 msgid "match: third argument is not an array" msgstr "match: el tercer argument no és una matriu" -#: builtin.c:2725 -#, fuzzy, c-format +#: builtin.c:2779 +#, c-format msgid "gensub: third argument `%.*s' treated as 1" -msgstr "gensub: el tercer argument de 0 és tractat com a 1" +msgstr "gensub: el tercer argument `%.*s' es tractarà com a 1" -#: builtin.c:2740 -#, fuzzy, c-format +#: builtin.c:2794 +#, c-format msgid "gensub: third argument %g treated as 1" -msgstr "gensub: el tercer argument de 0 és tractat com a 1" +msgstr "gensub: el tercer argument %g es tractarà com a 1" -#: builtin.c:3038 -#, fuzzy, c-format +#: builtin.c:3096 +#, c-format msgid "%s: can be called indirectly only with two arguments" -msgstr "and: cridat amb menys de dos arguments" +msgstr "%s: es pot cridar indirectament amb dos arguments" -#: builtin.c:3128 -#, fuzzy, c-format +#: builtin.c:3186 +#, c-format msgid "indirect call to %s requires at least two arguments" -msgstr "and: cridat amb menys de dos arguments" +msgstr "la crida indirecta a %s requereix almenys dos arguments" -#: builtin.c:3180 +#: builtin.c:3238 msgid "lshift: received non-numeric first argument" msgstr "lshift: el primer argument rebut no és numèric" -#: builtin.c:3182 +#: builtin.c:3240 msgid "lshift: received non-numeric second argument" msgstr "lshift: el segon argument rebut no és numèric" -#: builtin.c:3188 +#: builtin.c:3246 #, c-format msgid "lshift(%f, %f): negative values will give strange results" msgstr "lshift(%f, %f): els valors negatius donaran resultats estranys" -#: builtin.c:3190 +#: builtin.c:3248 #, c-format msgid "lshift(%f, %f): fractional values will be truncated" msgstr "lshift(%f, %f): els valors fraccionaris sernn truncats" -#: builtin.c:3192 +#: builtin.c:3250 #, c-format msgid "lshift(%f, %f): too large shift value will give strange results" msgstr "" "lshift(%f, %f): un valor de desplaçament massa gran donarà resultats estranys" -#: builtin.c:3217 +#: builtin.c:3275 msgid "rshift: received non-numeric first argument" msgstr "rshift: el primer argument rebut no és numèric" -#: builtin.c:3219 +#: builtin.c:3277 msgid "rshift: received non-numeric second argument" msgstr "rshift: el segon argument rebut no és numèric" -#: builtin.c:3225 +#: builtin.c:3283 #, c-format msgid "rshift(%f, %f): negative values will give strange results" msgstr "rshift(%f, %f): els valors negatius donaran resultats estranys" -#: builtin.c:3227 +#: builtin.c:3285 #, c-format msgid "rshift(%f, %f): fractional values will be truncated" msgstr "rshift(%f, %f): els valors fraccionaris seran truncats" -#: builtin.c:3229 +#: builtin.c:3287 #, c-format msgid "rshift(%f, %f): too large shift value will give strange results" msgstr "" "rshift(%f, %f): un valor de desplaçament massa gran donarà resultats estranys" -#: builtin.c:3254 mpfr.c:988 +#: builtin.c:3312 mpfr.c:992 msgid "and: called with less than two arguments" msgstr "and: cridat amb menys de dos arguments" -#: builtin.c:3259 +#: builtin.c:3317 #, c-format msgid "and: argument %d is non-numeric" msgstr "exp: l'argument %d no és numèric" -#: builtin.c:3263 +#: builtin.c:3321 #, c-format msgid "and: argument %d negative value %g will give strange results" msgstr "and: l'argument %d amb valor negatiu %g donarà resultats estranys" -#: builtin.c:3286 mpfr.c:1020 +#: builtin.c:3344 mpfr.c:1024 msgid "or: called with less than two arguments" msgstr "or: cridat amb menys de dos arguments" -#: builtin.c:3291 +#: builtin.c:3349 #, c-format msgid "or: argument %d is non-numeric" msgstr "or: l'argument %d no és numèric" -#: builtin.c:3295 +#: builtin.c:3353 #, c-format msgid "or: argument %d negative value %g will give strange results" msgstr "or: l'argument %d amb valor negatiu %g donarà resultats estranys" -#: builtin.c:3317 mpfr.c:1051 +#: builtin.c:3375 mpfr.c:1055 msgid "xor: called with less than two arguments" msgstr "xort: cridat amb menys de dos arguments" -#: builtin.c:3323 +#: builtin.c:3381 #, c-format msgid "xor: argument %d is non-numeric" msgstr "xor: l'argument %d no és numèric" -#: builtin.c:3327 +#: builtin.c:3385 #, c-format msgid "xor: argument %d negative value %g will give strange results" msgstr "xor: l'argument %d del valor negatiu %g donarà resultats estranys" -#: builtin.c:3352 mpfr.c:807 +#: builtin.c:3410 mpfr.c:811 msgid "compl: received non-numeric argument" msgstr "compl: s'ha rebut un argument que no és numèric" -#: builtin.c:3358 +#: builtin.c:3416 #, c-format msgid "compl(%f): negative value will give strange results" msgstr "compl(%f): el valor negatiu donarà resultats estranys" -#: builtin.c:3360 +#: builtin.c:3418 #, c-format msgid "compl(%f): fractional value will be truncated" msgstr "compl(%f): el valor fraccionari serà truncat" -#: builtin.c:3529 +#: builtin.c:3588 #, c-format msgid "dcgettext: `%s' is not a valid locale category" msgstr "dcgettext: `%s' no és una categoria local vàlida" -#: command.y:225 +#: command.y:226 #, c-format msgid "Type (g)awk statement(s). End with the command \"end\"\n" msgstr "Escriviu proposició(ns) g(awk). Termineu amb la instrucció \"end\"\n" -#: command.y:289 +#: command.y:290 #, c-format msgid "invalid frame number: %d" msgstr "número invàlid de marc: %d" -#: command.y:295 +#: command.y:296 #, c-format msgid "info: invalid option - \"%s\"" msgstr "info: opció no vàlida - \"%s\"" -#: command.y:321 +#: command.y:322 #, c-format msgid "source \"%s\": already sourced." msgstr "source \"%s\": ja s'ha utilitzat." -#: command.y:326 +#: command.y:327 #, c-format msgid "save \"%s\": command not permitted." msgstr "save \"%s\": ordre no permesa." -#: command.y:339 +#: command.y:340 msgid "Can't use command `commands' for breakpoint/watchpoint commands" msgstr "" "No es pot usar l'ordre `commands' per a ordres de punt d'interrupció/" "inspecció" -#: command.y:341 +#: command.y:342 msgid "no breakpoint/watchpoint has been set yet" msgstr "no s'ha establert encara cap punt d'interrupció/verificació" -#: command.y:343 +#: command.y:344 msgid "invalid breakpoint/watchpoint number" msgstr "número de punt d'interrupció/inspecció no vàlid" -#: command.y:348 +#: command.y:349 #, c-format msgid "Type commands for when %s %d is hit, one per line.\n" msgstr "Escriviu les ordres per a quan s'assoleix %s %d, una per línia.\n" -#: command.y:350 +#: command.y:351 #, c-format msgid "End with the command \"end\"\n" msgstr "Termineu amb l'ordre \"end\"\n" -#: command.y:357 +#: command.y:358 msgid "`end' valid only in command `commands' or `eval'" msgstr "`end' és vàlid sols a les ordres `commands' o `eval'" -#: command.y:367 +#: command.y:368 msgid "`silent' valid only in command `commands'" msgstr "`silent' és vàlid sols a l'ordre `commands'" -#: command.y:373 +#: command.y:374 #, c-format msgid "trace: invalid option - \"%s\"" msgstr "traç: opció no vàlida - \"%s\"" -#: command.y:387 +#: command.y:388 msgid "condition: invalid breakpoint/watchpoint number" msgstr "condició: número de punt d'interrupció/inspecció no vàlid" -#: command.y:449 +#: command.y:450 msgid "argument not a string" msgstr "l'argument no és una cadena de caràcters" -#: command.y:459 command.y:464 +#: command.y:460 command.y:465 #, c-format msgid "option: invalid parameter - \"%s\"" msgstr "opció: paràmetre no vàlid - \"%s\"" -#: command.y:474 +#: command.y:475 #, c-format msgid "no such function - \"%s\"" msgstr "no existeix aquesta funció - \"%s\"" -#: command.y:531 +#: command.y:532 #, c-format msgid "enable: invalid option - \"%s\"" msgstr "enable: opció no vàlida - \"%s\"" -#: command.y:597 +#: command.y:598 #, c-format msgid "invalid range specification: %d - %d" msgstr "especificació no vàlida de rang: %d - %d" -#: command.y:659 +#: command.y:660 msgid "non-numeric value for field number" msgstr "valor no numèric per al número de camp" -#: command.y:680 command.y:687 +#: command.y:681 command.y:688 msgid "non-numeric value found, numeric expected" msgstr "s'ha trobat un valor no numèric, s'esperava un valor numèric" -#: command.y:712 command.y:718 +#: command.y:713 command.y:719 msgid "non-zero integer value" msgstr "valor enter no zero" -#: command.y:817 +#: command.y:818 msgid "" "backtrace [N] - print trace of all or N innermost (outermost if N < 0) " "frames." @@ -1100,19 +1117,19 @@ msgstr "" "backtrace [N] - imprimeix la traça de tot els N marcs interiors (exteriors " "si N < 0)." -#: command.y:819 +#: command.y:820 msgid "" "break [[filename:]N|function] - set breakpoint at the specified location." msgstr "" "break [[fitxer:]N|funció] - estableix el punt d'interrupció a la ubicació " "especificada." -#: command.y:821 +#: command.y:822 msgid "clear [[filename:]N|function] - delete breakpoints previously set." msgstr "" "clear [[fitxer:]N|funció] - suprimeix els punts establerts prèviament." -#: command.y:823 +#: command.y:824 msgid "" "commands [num] - starts a list of commands to be executed at a " "breakpoint(watchpoint) hit." @@ -1120,78 +1137,83 @@ msgstr "" "commands [num] - inicia una llista d'ordres a executar quan s'arribi a un " "punt d'interrupció/inspecció." -#: command.y:825 +#: command.y:826 msgid "condition num [expr] - set or clear breakpoint or watchpoint condition." msgstr "" "condition num [expr] - estableix o neteja una condició de punt d'interrupció " "o d'inspecció." -#: command.y:827 +#: command.y:828 msgid "continue [COUNT] - continue program being debugged." msgstr "continue [RECOMPTE] - continua el programa que s'està depurant." -#: command.y:829 +#: command.y:830 msgid "delete [breakpoints] [range] - delete specified breakpoints." msgstr "" "delete [punts d'interrupció] [rang] - esborra els punts d'interrupció " "especificats." -#: command.y:831 +#: command.y:832 msgid "disable [breakpoints] [range] - disable specified breakpoints." msgstr "" "disable [punts d'interrupció] [rang] - deshabilita els punts d'interrupció " "especificats." -#: command.y:833 +#: command.y:834 msgid "display [var] - print value of variable each time the program stops." msgstr "" "display [var] - imprimeix el valor de la variable cada cop que el programa " "s'atura" -#: command.y:835 +#: command.y:836 msgid "down [N] - move N frames down the stack." msgstr "down [N] - mou N marcs cap a baix a la pila." -#: command.y:837 +#: command.y:838 msgid "dump [filename] - dump instructions to file or stdout." msgstr "" "dump [filename] - aboca les instruccions a un fitxer o a la sortida " "estàndard." -#: command.y:839 +#: command.y:840 msgid "enable [once|del] [breakpoints] [range] - enable specified breakpoints." msgstr "" "enable [once|del] [punts d'interrupció] [rang] - habilita els punts " "d'interrupció especificats." -#: command.y:841 +#: command.y:842 msgid "end - end a list of commands or awk statements." msgstr "end - finalitza una llista de ordres o declaracions awk." -#: command.y:843 +#: command.y:844 msgid "eval stmt|[p1, p2, ...] - evaluate awk statement(s)." msgstr "eval stmt|[p1, p2, ...] - avalua la(es) declaració(ns) awk." -#: command.y:845 +#: command.y:846 +#, fuzzy +msgid "exit - (same as quit) exit debugger." +msgstr "quit - surt del depurador." + +#: command.y:848 msgid "finish - execute until selected stack frame returns." msgstr "" "finish - executa fins que hi hagi un retorn del marc de pila seleccionat." -#: command.y:847 +#: command.y:850 msgid "frame [N] - select and print stack frame number N." msgstr "frame [N] - selecciona i imprimeix el marc de pila amb número N." -#: command.y:849 +#: command.y:852 msgid "help [command] - print list of commands or explanation of command." msgstr "help [ordre] - imprimeix una llista d'ordres o una explica de l'ordre." -#: command.y:851 +#: command.y:854 msgid "ignore N COUNT - set ignore-count of breakpoint number N to COUNT." msgstr "" "ignore N RECOMPTE - estableix ignore-count del punt d'interrupció número N " "fins RECOMPTE." -#: command.y:853 +#: command.y:856 msgid "" "info topic - source|sources|variables|functions|break|frame|args|locals|" "display|watch." @@ -1199,97 +1221,97 @@ msgstr "" "info topic - source|sources|variables|functions|break|frame|args|locals|" "display|watch." -#: command.y:855 +#: command.y:858 msgid "list [-|+|[filename:]lineno|function|range] - list specified line(s)." msgstr "" "list [-|+|[fitxer:]número-de-línia|funció|rang] - fes una llista la(es) " "línia(es) especificada(es)." -#: command.y:857 +#: command.y:860 msgid "next [COUNT] - step program, proceeding through subroutine calls." msgstr "" "next [RECOMPTE] - avança el programa pas per pas, tot procedint a través de " "les crides de subrutines." -#: command.y:859 +#: command.y:862 msgid "" "nexti [COUNT] - step one instruction, but proceed through subroutine calls." msgstr "" "nexti [RECOMPTE] - avança una instrucció, però procedeix a través de crides " "de subrutines." -#: command.y:861 +#: command.y:864 msgid "option [name[=value]] - set or display debugger option(s)." msgstr "" "option [nom[=valor]] - estableix o mostra la(es) opció(ns) del depurador." -#: command.y:863 +#: command.y:866 msgid "print var [var] - print value of a variable or array." msgstr "print var [var] - imprimeix el valor de la variable o matriu." -#: command.y:865 +#: command.y:868 msgid "printf format, [arg], ... - formatted output." msgstr "printf format, [arg], ... - sortida amb format." -#: command.y:867 +#: command.y:870 msgid "quit - exit debugger." msgstr "quit - surt del depurador." -#: command.y:869 +#: command.y:872 msgid "return [value] - make selected stack frame return to its caller." msgstr "" "return [valor] - fes que el marc seleccionat de pila retorni a l'element que " "l'ha cridat." -#: command.y:871 +#: command.y:874 msgid "run - start or restart executing program." msgstr "run - inicia o reinicia el programa que s'està executant." -#: command.y:874 +#: command.y:877 msgid "save filename - save commands from the session to file." msgstr "save filename - desa les ordres de la sessió a un fitxer." -#: command.y:877 +#: command.y:880 msgid "set var = value - assign value to a scalar variable." msgstr "set var = valor - assigna un valor a una variable escalar." -#: command.y:879 +#: command.y:882 msgid "" "silent - suspends usual message when stopped at a breakpoint/watchpoint." msgstr "" "silent - suspèn els missatges habituals quan s'autra a un punt d'interrupció/" "inspecció." -#: command.y:881 +#: command.y:884 msgid "source file - execute commands from file." msgstr "source file - executa una ordre des d'un fitxer." -#: command.y:883 +#: command.y:886 msgid "step [COUNT] - step program until it reaches a different source line." msgstr "" "step [RECOMPTE] - avança pas per pas pel programa fins que arribi a una " "línia diferent de la font." -#: command.y:885 +#: command.y:888 msgid "stepi [COUNT] - step one instruction exactly." msgstr "stepi [RECOMPTE] - avança exactament una instrucció." -#: command.y:887 +#: command.y:890 msgid "tbreak [[filename:]N|function] - set a temporary breakpoint." msgstr "" "tbreak [[fitxer:]N|funció] - estableix un punt temporari d'interrupció." -#: command.y:889 +#: command.y:892 msgid "trace on|off - print instruction before executing." msgstr "trace on|off - imprimeix la instrucció abans d'executar-la." -#: command.y:891 +#: command.y:894 msgid "undisplay [N] - remove variable(s) from automatic display list." msgstr "" "undisplay [N] - remou la(es) variable(s) de la llista automàtica " "visualització." -#: command.y:893 +#: command.y:896 msgid "" "until [[filename:]N|function] - execute until program reaches a different " "line or line N within current frame." @@ -1297,61 +1319,60 @@ msgstr "" "until [[fitxer:]N|funció] - executa fins que el programa arribi a una línia " "diferent a la línia N dins del marc actual." -#: command.y:895 +#: command.y:898 msgid "unwatch [N] - remove variable(s) from watch list." msgstr "unwatch [N] - remou la(es) variable(s) de la llista d'inspecció." -#: command.y:897 +#: command.y:900 msgid "up [N] - move N frames up the stack." msgstr "up [N] - mou-te N marcs cap a dalt de la pila." -#: command.y:899 +#: command.y:902 msgid "watch var - set a watchpoint for a variable." msgstr "watch var - estableix un punt d'inspecció per a una variable." -#: command.y:901 -#, fuzzy +#: command.y:904 msgid "" "where [N] - (same as backtrace) print trace of all or N innermost (outermost " "if N < 0) frames." msgstr "" -"backtrace [N] - imprimeix la traça de tot els N marcs interiors (exteriors " -"si N < 0)." +"on [N] - (igual que la traça inversa) imprimeix la traça de tots els N marcs " +"interiors (exteriors si N < 0)." -#: command.y:1013 debug.c:401 msg.c:135 +#: command.y:1016 debug.c:401 msg.c:135 #, c-format msgid "error: " msgstr "error: " -#: command.y:1053 +#: command.y:1060 #, c-format msgid "can't read command (%s)\n" msgstr "no es pot llegir l'ordre (%s)\n" -#: command.y:1067 +#: command.y:1074 #, c-format msgid "can't read command (%s)" msgstr "no es pot llegir l'ordre (%s)" -#: command.y:1118 +#: command.y:1125 msgid "invalid character in command" msgstr "caràcter no vàlida en la instucció" -#: command.y:1154 +#: command.y:1161 #, c-format msgid "unknown command - \"%.*s\", try help" msgstr "ordre desconeguda - \"%.*s\", prova l'ajuda" -#: command.y:1224 +#: command.y:1231 #, c-format msgid "%s" msgstr "%s" -#: command.y:1286 +#: command.y:1293 msgid "invalid character" msgstr "caràcter no vàlid" -#: command.y:1457 +#: command.y:1497 #, c-format msgid "undefined command: %s\n" msgstr "ordre no definida: %s\n" @@ -1567,17 +1588,17 @@ msgstr "[\"%s\"] no est msgid "`%s[\"%s\"]' is not an array\n" msgstr "`%s[\"%s\"]' no és una matriu\n" -#: debug.c:1236 debug.c:4964 +#: debug.c:1236 debug.c:5010 #, c-format msgid "`%s' is not a scalar variable" msgstr "`%s' no és una variable escalar" -#: debug.c:1258 debug.c:4994 +#: debug.c:1258 debug.c:5040 #, c-format msgid "attempt to use array `%s[\"%s\"]' in a scalar context" msgstr "s'ha intentat usar la matriu `%s[\"%s\"]' en un context escalar" -#: debug.c:1280 debug.c:5005 +#: debug.c:1280 debug.c:5051 #, c-format msgid "attempt to use scalar `%s[\"%s\"]' as array" msgstr "s'ha intentat usar la dada escalar `%s[\"%s\"]' com a una matriu" @@ -1861,101 +1882,99 @@ msgstr "'finish' no t msgid "'until' not meaningful with non-local jump '%s'\n" msgstr "'until' no té significat amb salt no local '%s'\n" -#: debug.c:4185 +#: debug.c:4231 msgid "\t------[Enter] to continue or q [Enter] to quit------" msgstr "\t------[Intro] per continuar o q [Intro] per sortir------" -#: debug.c:4186 +#: debug.c:4232 msgid "q" msgstr "q" -#: debug.c:5001 +#: debug.c:5047 #, c-format msgid "[\"%s\"] not in array `%s'" msgstr "[\"%s\"] no està a la matriu `%s'" -#: debug.c:5207 +#: debug.c:5253 #, c-format msgid "sending output to stdout\n" msgstr "s'està enviant la sortida a la sortida estàndard\n" -#: debug.c:5247 +#: debug.c:5293 msgid "invalid number" msgstr "número no vàlid" -#: debug.c:5381 +#: debug.c:5427 #, c-format msgid "`%s' not allowed in current context; statement ignored" msgstr "`%s' no està permès al context actual; s'ignorarà la declaració" -#: debug.c:5389 +#: debug.c:5435 msgid "`return' not allowed in current context; statement ignored" msgstr "`return' no està permès al context actual; s'ignorarà la declaració" -#: debug.c:5604 +#: debug.c:5650 #, c-format msgid "No symbol `%s' in current context" msgstr "No hi ha un símbol `%s' al context actual" -#: dfa.c:1062 dfa.c:1065 dfa.c:1084 dfa.c:1094 dfa.c:1106 dfa.c:1142 -#: dfa.c:1151 dfa.c:1154 dfa.c:1159 dfa.c:1173 dfa.c:1221 +#: dfa.c:1090 dfa.c:1093 dfa.c:1112 dfa.c:1122 dfa.c:1135 dfa.c:1163 dfa.c:1172 +#: dfa.c:1175 dfa.c:1180 dfa.c:1202 dfa.c:1205 msgid "unbalanced [" msgstr "[ sense aparellar" -#: dfa.c:1118 +#: dfa.c:1148 msgid "invalid character class" msgstr "classe no vàlida de caràcters" -#: dfa.c:1264 +#: dfa.c:1271 msgid "character class syntax is [[:space:]], not [:space:]" msgstr "la sintaxi de la classe de caràcters és [[:espai:]], no [:espai:]" -#: dfa.c:1326 +#: dfa.c:1332 msgid "unfinished \\ escape" msgstr "seqüència d'escapada \\ sense finalitzar" -#: dfa.c:1473 -#, fuzzy +#: dfa.c:1499 msgid "invalid content of \\{\\}" -msgstr "Contingut no vàlid de \\{\\}" +msgstr "contingut no vàlid de \\{\\}" -#: dfa.c:1476 -#, fuzzy +#: dfa.c:1502 msgid "regular expression too big" -msgstr "L'expressió regular és massa gran" +msgstr "l'expressió regular és massa gran" -#: dfa.c:1911 +#: dfa.c:1916 msgid "unbalanced (" msgstr "( sense aparellar" -#: dfa.c:2037 +#: dfa.c:2044 msgid "no syntax specified" msgstr "no s'ha especificat una sintaxi" -#: dfa.c:2045 +#: dfa.c:2052 msgid "unbalanced )" msgstr ") sense aparellar" -#: eval.c:396 +#: eval.c:398 #, c-format msgid "unknown nodetype %d" msgstr "tipus de node %d desconegut" -#: eval.c:407 eval.c:421 +#: eval.c:409 eval.c:423 #, c-format msgid "unknown opcode %d" msgstr "opcode %d desconegut" -#: eval.c:418 +#: eval.c:420 #, c-format msgid "opcode %s not an operator or keyword" msgstr "l'opcode %s no és un operador o una paraula clau" -#: eval.c:474 +#: eval.c:476 msgid "buffer overflow in genflags2str" msgstr "desbordament del cau temporal en genflags2str" -#: eval.c:676 +#: eval.c:678 #, c-format msgid "" "\n" @@ -1966,296 +1985,291 @@ msgstr "" "\t# Pila de crida a les funcions:\n" "\n" -#: eval.c:705 +#: eval.c:707 msgid "`IGNORECASE' is a gawk extension" msgstr "`IGNORECASE' és una extensió de gawk" -#: eval.c:737 +#: eval.c:739 msgid "`BINMODE' is a gawk extension" msgstr "`BINMODE' és una extensió de gawk" -#: eval.c:795 +#: eval.c:797 #, c-format msgid "BINMODE value `%s' is invalid, treated as 3" msgstr "El valor BINMODE `%s' no és vàlid, es tractarà com 3" -#: eval.c:912 +#: eval.c:914 #, c-format msgid "bad `%sFMT' specification `%s'" msgstr "`%sFMT' especificació errònia `%s'" -#: eval.c:996 +#: eval.c:988 msgid "turning off `--lint' due to assignment to `LINT'" msgstr "desactivant `--lint' degut a una assignació a `LINT'" -#: eval.c:1174 +#: eval.c:1166 #, c-format msgid "reference to uninitialized argument `%s'" msgstr "referència a un argument sense inicialitzar `%s'" -#: eval.c:1175 +#: eval.c:1167 #, c-format msgid "reference to uninitialized variable `%s'" msgstr "referència a una variable sense inicialitzar `%s'" -#: eval.c:1193 +#: eval.c:1185 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:1195 +#: eval.c:1187 msgid "attempt to field reference from null string" msgstr "s'ha intentat entrar una referència a partir d'una cadena nul·la" -#: eval.c:1203 +#: eval.c:1195 #, c-format msgid "attempt to access field %ld" msgstr "s'ha intentat accedir al camp %ld" -#: eval.c:1212 +#: eval.c:1204 #, c-format msgid "reference to uninitialized field `$%ld'" msgstr "referència a una variable sense inicialitzar `$%ld'" -#: eval.c:1299 +#: eval.c:1291 #, 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:1506 +#: eval.c:1498 #, c-format msgid "unwind_stack: unexpected type `%s'" msgstr "unwind_stack: tipus no esperat `%s'" -#: eval.c:1602 +#: eval.c:1594 msgid "division by zero attempted in `/='" msgstr "s'ha intentat una divisió per zero en `/='" -#: eval.c:1609 +#: eval.c:1601 #, c-format msgid "division by zero attempted in `%%='" msgstr "s'ha intentat una divisió per zero en `%%='" -#: ext.c:65 ext.c:147 +#: ext.c:66 ext.c:148 msgid "extensions are not allowed in sandbox mode" msgstr "les extensions no estan permeses en mode de proves" -#: ext.c:68 +#: ext.c:69 msgid "-l / @load are gawk extensions" msgstr "-l / @load són extensions gawk" -#: ext.c:71 +#: ext.c:72 msgid "load_ext: received NULL lib_name" msgstr "load_ext: s'ha rebut lib_name nul" -#: ext.c:74 +#: ext.c:75 #, c-format msgid "load_ext: cannot open library `%s' (%s)\n" msgstr "load_ext: no es pot obrir la llibreria `%s' (%s)\n" -#: ext.c:80 +#: ext.c:81 #, c-format msgid "" "load_ext: library `%s': does not define `plugin_is_GPL_compatible' (%s)\n" msgstr "" "load_ext: biblioteca `%s': no defineix `plugin_is_GPL_compatible' (%s)\n" -#: ext.c:86 +#: ext.c:87 #, c-format msgid "load_ext: library `%s': cannot call function `%s' (%s)\n" msgstr "load_ext: biblioteca `%s': no es pot cridar a la funció `%s' (%s)\n" -#: ext.c:90 +#: ext.c:91 #, c-format msgid "load_ext: library `%s' initialization routine `%s' failed\n" msgstr "" "load_ext: la biblioteca `%s' amb rutina d'inicialització `%s' ha fallat\n" -#: ext.c:150 +#: ext.c:151 msgid "`extension' is a gawk extension" msgstr "`extension' és una extensió gawk" -#: ext.c:153 +#: ext.c:154 msgid "extension: received NULL lib_name" msgstr "extension: s'ha rebut lib_name nul" -#: ext.c:156 +#: ext.c:157 #, c-format msgid "extension: cannot open library `%s' (%s)" msgstr "extension: no es pot obrir la biblioteca `%s' (%s)" -#: ext.c:162 +#: ext.c:163 #, c-format msgid "" "extension: library `%s': does not define `plugin_is_GPL_compatible' (%s)" msgstr "" "extension: biblioteca `%s': no defineix `plugin_is_GPL_compatible' (%s)" -#: ext.c:166 +#: ext.c:167 #, c-format msgid "extension: library `%s': cannot call function `%s' (%s)" msgstr "extension: biblioteca `%s': no es pot cridar a la funció `%s' (%s)" -#: ext.c:197 +#: ext.c:198 msgid "make_builtin: missing function name" msgstr "make_builtin: nom absent de funció" -#: ext.c:212 +#: ext.c:213 #, c-format msgid "make_builtin: can't redefine function `%s'" msgstr "make_builtin: no es pot redefinir la funció `%s'" -#: ext.c:216 +#: ext.c:217 #, c-format msgid "make_builtin: function `%s' already defined" msgstr "make_builtin: la funció `%s' ja està definida" -#: ext.c:220 +#: ext.c:221 #, c-format msgid "make_builtin: function name `%s' previously defined" msgstr "make_builtin: nom de la funció `%s' definida prèviament" -#: ext.c:222 +#: ext.c:223 #, c-format msgid "make_builtin: can't use gawk built-in `%s' as function name" msgstr "make_builtin: no es pot usar el nom intern `%s' com a nom de funció" -#: ext.c:225 ext.c:280 +#: ext.c:226 ext.c:281 #, c-format msgid "make_builtin: negative argument count for function `%s'" msgstr "make_builtin: recompte negatiu d'arguments per a la funció `%s'" -#: ext.c:252 +#: ext.c:253 msgid "extension: missing function name" msgstr "extension: nom absent de funció" -#: ext.c:255 ext.c:259 +#: ext.c:256 ext.c:260 #, c-format msgid "extension: illegal character `%c' in function name `%s'" msgstr "extension: caràcter `%c' il·legal al nom de funció `%s'" -#: ext.c:267 +#: ext.c:268 #, c-format msgid "extension: can't redefine function `%s'" msgstr "extension: no es pot redefinir la funció `%s'" -#: ext.c:271 +#: ext.c:272 #, c-format msgid "extension: function `%s' already defined" msgstr "extension: la funció `%s' ja està definida" -#: ext.c:275 +#: ext.c:276 #, c-format msgid "extension: function name `%s' previously defined" msgstr "extension: nom de la funció `%s' definida prèviament" -#: ext.c:277 +#: ext.c:278 #, c-format msgid "extension: can't use gawk built-in `%s' as function name" msgstr "extension: no es pot usar el nom intern `%s' com a nom de funció" -#: ext.c:351 -#, c-format -msgid "function `%s' defined to take no more than %d argument(s)" -msgstr "la funció `%s' està definida per agafar no més de %d argument(s)" - -#: ext.c:354 -#, c-format -msgid "function `%s': missing argument #%d" -msgstr "funció `%s': falta l'argument #%d" - -#: ext.c:371 +#: ext.c:358 #, c-format msgid "function `%s': argument #%d: attempt to use scalar as an array" msgstr "" "funció `%s': argument #%d: s'ha intentat usar una dada escalar com a una " "matriu" -#: ext.c:375 +#: ext.c:362 #, c-format msgid "function `%s': argument #%d: attempt to use array as a scalar" msgstr "" "funció `%s': argument #%d: s'ha intentat usar una matriu com a un escalar" -#: ext.c:389 +#: ext.c:376 msgid "dynamic loading of library not supported" msgstr "no està suportada la càrrega dinàmica de la biblioteca" -#: extension/filefuncs.c:159 +#: extension/filefuncs.c:164 msgid "chdir: called with incorrect number of arguments, expecting 1" msgstr "chdir: cridat amb un nombre incorrecte d'arguments, s'esperava 1" -#: extension/filefuncs.c:439 +#: extension/filefuncs.c:444 #, c-format msgid "stat: unable to read symbolic link `%s'" msgstr "stat: no s'ha pogut llegir l'enllaç simbòlic `%s'" -#: extension/filefuncs.c:472 +#: extension/filefuncs.c:477 msgid "stat: called with wrong number of arguments" msgstr "stat: cridat amb un nombre incorrecte d'arguments" -#: extension/filefuncs.c:479 +#: extension/filefuncs.c:484 extension/filefuncs.c:534 msgid "stat: bad parameters" msgstr "stata: arguments dolents" -#: extension/filefuncs.c:533 +#: extension/filefuncs.c:527 +#, fuzzy +msgid "statvfs: called with wrong number of arguments" +msgstr "stat: cridat amb un nombre incorrecte d'arguments" + +#: extension/filefuncs.c:598 #, c-format msgid "fts init: could not create variable %s" msgstr "fts init: no s'ha pogut crear la variable %s" -#: extension/filefuncs.c:554 +#: extension/filefuncs.c:619 msgid "fts is not supported on this system" msgstr "fts no està suportat en aquest sistema" -#: extension/filefuncs.c:573 +#: extension/filefuncs.c:638 msgid "fill_stat_element: could not create array" msgstr "fill_stat_element: no s'ha pogut crear la matriu" -#: extension/filefuncs.c:582 +#: extension/filefuncs.c:647 msgid "fill_stat_element: could not set element" msgstr "fill_stat_element: no s'ha pogut establir l'element" -#: extension/filefuncs.c:597 +#: extension/filefuncs.c:662 msgid "fill_path_element: could not set element" msgstr "fill_path_element: no s'ha pogut establir l'element" -#: extension/filefuncs.c:613 +#: extension/filefuncs.c:678 msgid "fill_error_element: could not set element" msgstr "fill_error_element: no s'ha pogut establir l'element" -#: extension/filefuncs.c:660 extension/filefuncs.c:707 +#: extension/filefuncs.c:725 extension/filefuncs.c:772 msgid "fts-process: could not create array" msgstr "fts-process: no s'ha pogut crear la matriu" -#: extension/filefuncs.c:670 extension/filefuncs.c:717 -#: extension/filefuncs.c:735 +#: extension/filefuncs.c:735 extension/filefuncs.c:782 +#: extension/filefuncs.c:800 msgid "fts-process: could not set element" msgstr "fts-process: no s'ha pogut establir l'element" -#: extension/filefuncs.c:784 +#: extension/filefuncs.c:849 msgid "fts: called with incorrect number of arguments, expecting 3" msgstr "fts: cridat amb un nombre incorrecte d'arguments, s'esperaven 3" -#: extension/filefuncs.c:787 +#: extension/filefuncs.c:852 msgid "fts: bad first parameter" msgstr "fts: el segon argument és dolent" -#: extension/filefuncs.c:793 +#: extension/filefuncs.c:858 msgid "fts: bad second parameter" msgstr "fts: el segon argument és dolent" -#: extension/filefuncs.c:799 +#: extension/filefuncs.c:864 msgid "fts: bad third parameter" msgstr "fts: el tercer paràmeter es dolent" -#: extension/filefuncs.c:806 +#: extension/filefuncs.c:871 msgid "fts: could not flatten array\n" msgstr "fts: no s'ha pogut aplanar la matriu\n" -#: extension/filefuncs.c:824 +#: extension/filefuncs.c:889 msgid "fts: ignoring sneaky FTS_NOSTAT flag. nyah, nyah, nyah." msgstr "fts: s'ignorarà l'indicador FTS_NOSTAT furtiu. T'he enxampat!" -#: extension/filefuncs.c:841 +#: extension/filefuncs.c:906 msgid "fts: clear_array() failed\n" msgstr "fts: clear_array() ha fallat\n" @@ -2316,94 +2330,94 @@ msgstr "wait: s'ha cridat amb cap argument" msgid "wait: called with too many arguments" msgstr "wait: s'ha cridat amb massa arguments" -#: extension/inplace.c:130 +#: extension/inplace.c:131 msgid "inplace_begin: in-place editing already active" msgstr "inplace_begin: l'edició in situ ja està activa" -#: extension/inplace.c:133 extension/inplace.c:210 +#: extension/inplace.c:134 extension/inplace.c:211 #, c-format msgid "inplace_begin: expects 2 arguments but called with %d" msgstr "inplace_begin: s'esperaven 2 arguments però s'ha cridat amb %d" -#: extension/inplace.c:136 +#: extension/inplace.c:137 msgid "inplace_begin: cannot retrieve 1st argument as a string filename" msgstr "" "inplace_begin: no es pot obtenir el primer argument com nom de fitxer cadena " "de caràcters" -#: extension/inplace.c:144 +#: extension/inplace.c:145 #, c-format msgid "inplace_begin: disabling in-place editing for invalid FILENAME `%s'" msgstr "" "inplace_begin: s'està deshabilitant l'edició in situ per al nom de fitxer no " "vàlid `%s'" -#: extension/inplace.c:151 +#: extension/inplace.c:152 #, c-format msgid "inplace_begin: Cannot stat `%s' (%s)" msgstr "implace_begin: No es pot obrir `%s' (%s)" -#: extension/inplace.c:158 +#: extension/inplace.c:159 #, c-format msgid "inplace_begin: `%s' is not a regular file" msgstr "inplace_begin: `%s' no és un fitxer regular" -#: extension/inplace.c:169 +#: extension/inplace.c:170 #, c-format msgid "inplace_begin: mkstemp(`%s') failed (%s)" msgstr "inplace_begin: mkstemp(`%s') ha fallat (%s)" -#: extension/inplace.c:181 +#: extension/inplace.c:182 #, c-format msgid "inplace_begin: chmod failed (%s)" msgstr "inplace_begin: ha fallat chmod (%s)" -#: extension/inplace.c:188 +#: extension/inplace.c:189 #, c-format msgid "inplace_begin: dup(stdout) failed (%s)" msgstr "inplace_begin: dup(stdout) ha fallat(%s)" -#: extension/inplace.c:191 +#: extension/inplace.c:192 #, c-format msgid "inplace_begin: dup2(%d, stdout) failed (%s)" msgstr "inplace_begin: dup2(%d, stdout) ha fallat (%s)" -#: extension/inplace.c:194 +#: extension/inplace.c:195 #, c-format msgid "inplace_begin: close(%d) failed (%s)" msgstr "inplace begin: close(%d) ha fallat (%s)" -#: extension/inplace.c:213 +#: extension/inplace.c:214 msgid "inplace_end: cannot retrieve 1st argument as a string filename" msgstr "" "inplace_end: no es pot obtenir el primer argument com un nom de fitxer " "cadena de caràcters" -#: extension/inplace.c:220 +#: extension/inplace.c:221 msgid "inplace_end: in-place editing not active" msgstr "inplace_end: no està activa l'edició in situ" -#: extension/inplace.c:226 +#: extension/inplace.c:227 #, c-format msgid "inplace_end: dup2(%d, stdout) failed (%s)" msgstr "inplace_end: dup2(%d, stdout) ha fallat (%s)" -#: extension/inplace.c:229 +#: extension/inplace.c:230 #, c-format msgid "inplace_end: close(%d) failed (%s)" msgstr "inplace_end: close(%d) ha fallat (%s)" -#: extension/inplace.c:233 +#: extension/inplace.c:234 #, c-format msgid "inplace_end: fsetpos(stdout) failed (%s)" msgstr "inplace_end: fsetpos(stdout) ha fallat (%s)" -#: extension/inplace.c:246 +#: extension/inplace.c:247 #, c-format msgid "inplace_end: link(`%s', `%s') failed (%s)" msgstr "inplace_end: link(`%s', `%s') ha fallat (%s)" -#: extension/inplace.c:256 +#: extension/inplace.c:257 #, c-format msgid "inplace_end: rename(`%s', `%s') failed (%s)" msgstr "inplace_end: rename(`%s', `%s') ha fallat (%s)" @@ -2432,7 +2446,7 @@ msgstr "chr: s'ha cridat amb cap argument" msgid "chr: called with inappropriate argument(s)" msgstr "chr: s'ha cridat amb argument(s) no apropiat(s)" -#: extension/readdir.c:281 +#: extension/readdir.c:271 #, c-format msgid "dir_take_control_of: opendir/fdopendir failed: %s" msgstr "dir_take_control_of: opendir/fdopendir ha fallat: %s" @@ -2445,54 +2459,54 @@ msgstr "readfile: s'ha cridat amb massa arguments" msgid "readfile: called with no arguments" msgstr "readfile: s'ha cridat amb cap argument" -#: extension/revoutput.c:125 +#: extension/revoutput.c:127 msgid "revoutput: could not initialize REVOUT variable" -msgstr "" +msgstr "revoutput: no s'ha pogut inicialitzar la variable REVOUT" -#: extension/rwarray.c:124 extension/rwarray0.c:109 +#: extension/rwarray.c:113 extension/rwarray0.c:109 msgid "writea: called with too many arguments" msgstr "writea: s'ha cridat amb massa arguments" -#: extension/rwarray.c:131 extension/rwarray0.c:116 +#: extension/rwarray.c:120 extension/rwarray0.c:116 #, c-format msgid "do_writea: argument 0 is not a string\n" msgstr "do_writea: l'argument 0 no és una cadena de caràcters\n" -#: extension/rwarray.c:137 extension/rwarray0.c:122 +#: extension/rwarray.c:126 extension/rwarray0.c:122 #, c-format msgid "do_writea: argument 1 is not an array\n" msgstr "do_writea: l'argument 1 no és una matriu\n" -#: extension/rwarray.c:184 extension/rwarray0.c:169 +#: extension/rwarray.c:173 extension/rwarray0.c:169 #, c-format msgid "write_array: could not flatten array\n" msgstr "write_array: no s'ha pogut aplanar la matriu\n" -#: extension/rwarray.c:198 extension/rwarray0.c:183 +#: extension/rwarray.c:187 extension/rwarray0.c:183 #, c-format msgid "write_array: could not release flattened array\n" msgstr "write_array: no s'ha pogut alliberar la matriu aplanada\n" -#: extension/rwarray.c:280 extension/rwarray0.c:265 +#: extension/rwarray.c:269 extension/rwarray0.c:265 msgid "reada: called with too many arguments" msgstr "reada: s'ha cridat amb massa arguments" -#: extension/rwarray.c:287 extension/rwarray0.c:272 +#: extension/rwarray.c:276 extension/rwarray0.c:272 #, c-format msgid "do_reada: argument 0 is not a string\n" msgstr "do_reada: l'argument 0 no és una cadena de caràcters\n" -#: extension/rwarray.c:293 extension/rwarray0.c:278 +#: extension/rwarray.c:282 extension/rwarray0.c:278 #, c-format msgid "do_reada: argument 1 is not an array\n" msgstr "do_reada: l'argument 1 no és una matriu\n" -#: extension/rwarray.c:337 extension/rwarray0.c:322 +#: extension/rwarray.c:326 extension/rwarray0.c:322 #, c-format msgid "do_reada: clear_array failed\n" msgstr "do_reada: clear_array ha fallat\n" -#: extension/rwarray.c:374 extension/rwarray0.c:358 +#: extension/rwarray.c:363 extension/rwarray0.c:358 #, c-format msgid "read_array: set_array_element failed\n" msgstr "read_array: set_array_element ha fallat\n" @@ -2600,7 +2614,7 @@ msgstr "la cadena nul msgid "old awk does not support regexps as value of `FS'" msgstr "l'antic awk no suporta expressions regulars com a valor de `FS'" -#: field.c:1380 +#: field.c:1384 msgid "`FPAT' is a gawk extension" msgstr "`FPAT' és una extensió gawk" @@ -2608,28 +2622,28 @@ msgstr "`FPAT' msgid "awk_value_to_node: received null retval" msgstr "awk_value_to_node: s'ha rebut retval nul" -#: gawkapi.c:384 +#: gawkapi.c:383 msgid "node_to_awk_value: received null node" msgstr "node_to_awk_value: s'ha rebut un node nul" -#: gawkapi.c:387 +#: gawkapi.c:386 msgid "node_to_awk_value: received null val" msgstr "node_to_awk_value: s'ha rebut un valor nul" -#: gawkapi.c:809 +#: gawkapi.c:808 msgid "remove_element: received null array" msgstr "remove_element: s'ha rebut una matriu nul·la" -#: gawkapi.c:812 +#: gawkapi.c:811 msgid "remove_element: received null subscript" msgstr "remove_element: s'ha rebut un subíndex nul" -#: gawkapi.c:949 +#: gawkapi.c:948 #, c-format msgid "api_flatten_array: could not convert index %d\n" msgstr "api_flatten_array: no s'ha pogut convertir l'índex %d\n" -#: gawkapi.c:954 +#: gawkapi.c:953 #, c-format msgid "api_flatten_array: could not convert value %d\n" msgstr "api_flatten_array: no s'ha pogut convertir el valor %d\n" @@ -2689,281 +2703,285 @@ msgstr "%s: l'opci msgid "%s: option '-W %s' requires an argument\n" msgstr "%s: l'opció `-W %s' requereix un argument\n" -#: io.c:423 +#: io.c:426 #, c-format msgid "command line argument `%s' is a directory: skipped" msgstr "l'argument `%s' de línia d'ordres és un directori: s'ignorarà" -#: io.c:426 io.c:544 +#: io.c:429 io.c:547 #, c-format msgid "cannot open file `%s' for reading (%s)" msgstr "no es pot obrir el fitxer `%s' per a lectura (%s)" -#: io.c:671 +#: io.c:674 #, c-format msgid "close of fd %d (`%s') failed (%s)" msgstr "la finalització del descriptor fd %d (`%s') ha fallat (%s)" -#: io.c:749 +#: io.c:752 msgid "redirection not allowed in sandbox mode" msgstr "no est permeten redireccions en mode de proves" -#: io.c:783 +#: io.c:786 #, 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:789 +#: io.c:792 #, 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:794 +#: io.c:797 #, 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:842 +#: io.c:845 #, c-format msgid "unnecessary mixing of `>' and `>>' for file `%.*s'" msgstr "mescla innecessària de `>' i `>>' per al fitxer `%.*s'" -#: io.c:896 +#: io.c:902 #, 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:906 +#: io.c:915 #, 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:937 +#: io.c:946 #, 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:1019 +#: io.c:1030 #, c-format msgid "can't redirect from `%s' (%s)" msgstr "no es pot redirigir des de `%s' (%s)" -#: io.c:1022 +#: io.c:1033 #, c-format msgid "can't redirect to `%s' (%s)" msgstr "no es pot redirigir cap a `%s' (%s)" -#: io.c:1073 +#: io.c:1084 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:1089 +#: io.c:1100 #, c-format msgid "close of `%s' failed (%s)." msgstr "la finalització de `%s' ha fallat (%s)" -#: io.c:1097 +#: io.c:1108 msgid "too many pipes or input files open" msgstr "masses canonades o fitxers d'entrada oberts" -#: io.c:1119 +#: io.c:1130 msgid "close: second argument must be `to' or `from'" msgstr "close: el segon argument hauria de ser `to' o `from'" -#: io.c:1136 +#: io.c:1147 #, 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:1141 +#: io.c:1152 msgid "close of redirection that was never opened" msgstr "finalització d'una redirecció que no s'ha obert" -#: io.c:1238 +#: io.c:1249 #, 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:1255 +#: io.c:1266 #, c-format msgid "failure status (%d) on pipe close of `%s' (%s)" msgstr "estat de fallada (%d) en la finalització de la canonada `%s' (%s)" -#: io.c:1258 +#: io.c:1269 #, c-format msgid "failure status (%d) on file close of `%s' (%s)" msgstr "estat de falla (%d) en la finalització del fitxer `%s' (%s)" -#: io.c:1278 +#: io.c:1289 #, c-format msgid "no explicit close of socket `%s' provided" msgstr "no s'aporta la finalització explícita del socket `%s'" -#: io.c:1281 +#: io.c:1292 #, 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:1284 +#: io.c:1295 #, c-format msgid "no explicit close of pipe `%s' provided" msgstr "no s'aporta la finalització explícita de la canonada `%s'" -#: io.c:1287 +#: io.c:1298 #, c-format msgid "no explicit close of file `%s' provided" msgstr "no s'aporta la finalització explícita del fitxer `%s'" -#: io.c:1317 io.c:1375 main.c:632 main.c:674 +#: io.c:1328 io.c:1387 main.c:645 main.c:687 #, c-format msgid "error writing standard output (%s)" msgstr "error en escriure a la sortida estàndard (%s)" -#: io.c:1322 io.c:1381 main.c:634 +#: io.c:1333 io.c:1393 main.c:647 #, c-format msgid "error writing standard error (%s)" msgstr "error en escriure a la sortida d'error estàndard (%s)" -#: io.c:1330 +#: io.c:1341 #, c-format msgid "pipe flush of `%s' failed (%s)." msgstr "la neteja de la canonada de `%sx' ha fallat (%s)." -#: io.c:1333 +#: io.c:1344 #, 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:1336 +#: io.c:1347 #, c-format msgid "file flush of `%s' failed (%s)." msgstr "la neteja del fitxer `%s' ha fallat (%s)." -#: io.c:1453 +#: io.c:1465 #, c-format msgid "local port %s invalid in `/inet'" msgstr "port local %s no vàlid a `/inet'" -#: io.c:1471 +#: io.c:1483 #, c-format msgid "remote host and port information (%s, %s) invalid" msgstr "amfitrió remot i informació de port (%s, %s) no vàlids" -#: io.c:1699 +#: io.c:1711 msgid "TCP/IP communications are not supported" msgstr "les comunicacions TCP/IP no estan suportades" -#: io.c:1880 +#: io.c:1905 #, c-format msgid "could not open `%s', mode `%s'" msgstr "no es pot obrir `%s', mode `%s'" -#: io.c:1930 +#: io.c:1961 #, c-format msgid "close of master pty failed (%s)" msgstr "ha fallat el tancament del pty mestre (%s)" -#: io.c:1932 io.c:2118 io.c:2319 +#: io.c:1963 io.c:2141 io.c:2342 #, c-format msgid "close of stdout in child failed (%s)" msgstr "" "ha fallat la finalització de la sortida estàndard en els processos fills (%s)" -#: io.c:1935 +#: io.c:1966 #, c-format msgid "moving slave pty to stdout in child failed (dup: %s)" msgstr "" "ha fallat el trasllat del pty esclau cap a l'eixida estàndard dels processos " "fills (dup: %s)" -#: io.c:1937 io.c:2123 +#: io.c:1968 io.c:2146 #, 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:1940 +#: io.c:1971 #, c-format msgid "moving slave pty to stdin in child failed (dup: %s)" msgstr "" "ha fallat el trasllat del pty esclau cap a l'entrada estàndard dels " "processos fills (dup: %s)" -#: io.c:1942 io.c:1964 +#: io.c:1973 #, c-format msgid "close of slave pty failed (%s)" msgstr "ha fallat el tancament del pty esclau (%s)" -#: io.c:2053 io.c:2121 io.c:2290 io.c:2322 +#: io.c:2076 io.c:2144 io.c:2313 io.c:2345 #, 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:2060 io.c:2126 +#: io.c:2083 io.c:2149 #, 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:2086 io.c:2312 +#: io.c:2109 io.c:2335 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:2094 +#: io.c:2117 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:2129 io.c:2324 io.c:2339 +#: io.c:2152 io.c:2347 io.c:2362 #, c-format msgid "close of pipe failed (%s)" msgstr "ha fallat la finalització de la canonada (%s)" -#: io.c:2188 +#: io.c:2211 msgid "`|&' not supported" msgstr "`|&' no està suportat" -#: io.c:2275 +#: io.c:2298 #, c-format msgid "cannot open pipe `%s' (%s)" msgstr "no es pot obrir la canonada `%s' (%s)" -#: io.c:2333 +#: io.c:2356 #, 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:2760 +#: io.c:2493 +msgid "getline: attempt to read from closed read end of two-way pipe" +msgstr "" + +#: io.c:2795 msgid "register_input_parser: received NULL pointer" msgstr "register_input_parser: s'ha rebut un punter nul" -#: io.c:2788 +#: io.c:2823 #, c-format msgid "input parser `%s' conflicts with previously installed input parser `%s'" msgstr "" "l'analitzador d'entrades `%s' està en conflicte amb analitzador d'entrades `" "%s' instal·lat prèviament" -#: io.c:2795 +#: io.c:2830 #, c-format msgid "input parser `%s' failed to open `%s'" msgstr "l'analitzador d'entrada `%s' no ha pogut obrir `%s'" -#: io.c:2815 +#: io.c:2850 msgid "register_output_wrapper: received NULL pointer" msgstr "register_output_wrapper: s'ha rebut un punter nul" -#: io.c:2843 +#: io.c:2878 #, c-format msgid "" "output wrapper `%s' conflicts with previously installed output wrapper `%s'" @@ -2971,16 +2989,16 @@ msgstr "" "l'embolcall de sortida `%s' està en conflicte amb l'embolcall de sortida `" "%s' instal·lat prèviament" -#: io.c:2850 +#: io.c:2885 #, c-format msgid "output wrapper `%s' failed to open `%s'" msgstr "l'embolcall de sortida `%s' no ha pogut obrir `%s'" -#: io.c:2871 +#: io.c:2906 msgid "register_output_processor: received NULL pointer" msgstr "register_output_processor: s'ha rebut un punter nul" -#: io.c:2900 +#: io.c:2935 #, c-format msgid "" "two-way processor `%s' conflicts with previously installed two-way processor " @@ -2989,197 +3007,199 @@ msgstr "" "el processsador de dues vies `%s' està en conflicte amb el processador de " "dues vies `%s' instal·lat prèviament" -#: io.c:2909 +#: io.c:2944 #, c-format msgid "two way processor `%s' failed to open `%s'" msgstr "el processador de dues vies `%s' no ha pogut obrir `%s'" -#: io.c:3034 +#: io.c:3069 #, c-format msgid "data file `%s' is empty" msgstr "el fitxer de dades `%s' està buit" -#: io.c:3076 io.c:3084 +#: io.c:3111 io.c:3119 msgid "could not allocate more input memory" msgstr "no s'ha pogut assignar més memòria d'entrada" -#: io.c:3662 +#: io.c:3697 msgid "multicharacter value of `RS' is a gawk extension" msgstr "el valor multicaràcter de `RS' és una extensió de gawk" -#: io.c:3809 +#: io.c:3844 msgid "IPv6 communication is not supported" msgstr "la comunicació IPv6 no està suportada" -#: main.c:321 +#: main.c:334 msgid "environment variable `POSIXLY_CORRECT' set: turning on `--posix'" msgstr "" "la variable d'entorn `POSIXLY_CORRECT' està establerta: usant `--posix'" -#: main.c:327 +#: main.c:340 msgid "`--posix' overrides `--traditional'" msgstr "`--posix' solapa a `--traditional'" -#: main.c:338 +#: main.c:351 msgid "`--posix'/`--traditional' overrides `--non-decimal-data'" msgstr "`--posix' i `--traditional' solapen a `--non-decimal-data'" -#: main.c:342 +#: main.c:355 #, 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:346 +#: main.c:359 msgid "`--posix' overrides `--characters-as-bytes'" msgstr "`--posix' anul·la a `--characters-as-bytes'" -#: main.c:404 +#: main.c:417 #, c-format msgid "can't set binary mode on stdin (%s)" msgstr "no es pot establir el mode binari en l'entrada estàndard (%s)" -#: main.c:407 +#: main.c:420 #, 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:409 +#: main.c:422 #, 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:469 +#: main.c:482 msgid "no program text at all!" msgstr "no hi ha cap text per al programa!" -#: main.c:563 +#: main.c:576 #, 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:565 +#: main.c:578 #, 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:570 +#: main.c:583 msgid "POSIX options:\t\tGNU long options: (standard)\n" msgstr "Opcions POSIX:\t\tOpcions llargues GNU: (estàndard)\n" -#: main.c:571 +#: main.c:584 msgid "\t-f progfile\t\t--file=progfile\n" msgstr "\t-f fitx_prog\t\t--file=fitx_prog\n" -#: main.c:572 +#: main.c:585 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:573 +#: main.c:586 msgid "\t-v var=val\t\t--assign=var=val\n" msgstr "\t-v var=valor\t\t--assign=var=valor\n" -#: main.c:574 +#: main.c:587 msgid "Short options:\t\tGNU long options: (extensions)\n" msgstr "Opcions curtes:\t\tOpcions llargues GNU: (extensions)\n" -#: main.c:575 +#: main.c:588 msgid "\t-b\t\t\t--characters-as-bytes\n" msgstr "\t-b\t\t\t--characters-as-bytes\n" -#: main.c:576 +#: main.c:589 msgid "\t-c\t\t\t--traditional\n" msgstr "\t-c\t\t\t--traditional\n" -#: main.c:577 +#: main.c:590 msgid "\t-C\t\t\t--copyright\n" msgstr "\t-C\t\t\t--copyright\n" -#: main.c:578 +#: main.c:591 msgid "\t-d[file]\t\t--dump-variables[=file]\n" msgstr "\t-d[file]\t\t--dump-variables[=file]\n" -#: main.c:579 +#: main.c:592 msgid "\t-D[file]\t\t--debug[=file]\n" msgstr "\t-D[file]\t\t--debug[=file]\n" -#: main.c:580 +#: main.c:593 msgid "\t-e 'program-text'\t--source='program-text'\n" msgstr "\t-e 'program-text'\t--source='program-text'\n" -#: main.c:581 +#: main.c:594 msgid "\t-E file\t\t\t--exec=file\n" msgstr "\t-E file\t\t\t--exec=file\n" -#: main.c:582 +#: main.c:595 msgid "\t-g\t\t\t--gen-pot\n" msgstr "\t-g\t\t\t--gen-pot\n" -#: main.c:583 +#: main.c:596 msgid "\t-h\t\t\t--help\n" msgstr "\t-h\t\t\t--help\n" -#: main.c:584 +#: main.c:597 msgid "\t-i includefile\t\t--include=includefile\n" msgstr "\t-i includefile\t\t--include=fitxer a incloure\n" -#: main.c:585 +#: main.c:598 msgid "\t-l library\t\t--load=library\n" msgstr "\t-l library\t\t--load=biblioteca\n" -#: main.c:590 -#, fuzzy +#. TRANSLATORS: the "fatal" and "invalid" here are literal +#. values, they should not be translated. Thanks. +#. +#: main.c:603 msgid "\t-L[fatal|invalid]\t--lint[=fatal|invalid]\n" -msgstr "\t-L [fatal]\t\t--lint[=fatal]\n" +msgstr "\t-L[fatal|invalid]\t--lint[=fatal|invalid]\n" -#: main.c:591 +#: main.c:604 msgid "\t-M\t\t\t--bignum\n" msgstr "\t-M\t\t\t--bignum\n" -#: main.c:592 +#: main.c:605 msgid "\t-N\t\t\t--use-lc-numeric\n" msgstr "\t-N\t\t\t--use-lc-numeric\n" -#: main.c:593 +#: main.c:606 msgid "\t-n\t\t\t--non-decimal-data\n" msgstr "\t-n\t\t\t--non-decimal-data\n" -#: main.c:594 +#: main.c:607 msgid "\t-o[file]\t\t--pretty-print[=file]\n" msgstr "\t-o[file]\t\t--pretty-print[=file]\n" -#: main.c:595 +#: main.c:608 msgid "\t-O\t\t\t--optimize\n" msgstr "\t-O\t\t\t--optimize\n" -#: main.c:596 +#: main.c:609 msgid "\t-p[file]\t\t--profile[=file]\n" msgstr "\t-p[file]\t\t--profile[=file]\n" -#: main.c:597 +#: main.c:610 msgid "\t-P\t\t\t--posix\n" msgstr "\t-P\t\t\t--posix\n" -#: main.c:598 +#: main.c:611 msgid "\t-r\t\t\t--re-interval\n" msgstr "\t-r\t\t\t--re-interval\n" -#: main.c:599 +#: main.c:612 msgid "\t-S\t\t\t--sandbox\n" msgstr "\t-S\t\t\t--sandbox\n" -#: main.c:600 +#: main.c:613 msgid "\t-t\t\t\t--lint-old\n" msgstr "\t-t\t\t\t--lint-old\n" -#: main.c:601 +#: main.c:614 msgid "\t-V\t\t\t--version\n" msgstr "\t-V\t\t\t--version\n" -#: main.c:603 +#: main.c:616 msgid "\t-W nostalgia\t\t--nostalgia\n" msgstr "\t-W nostalgia\t\t--nostalgia\n" -#: main.c:606 +#: main.c:619 msgid "\t-Y\t\t--parsedebug\n" msgstr "\t-Y\t\t--parsedebug\n" @@ -3188,7 +3208,7 @@ msgstr "\t-Y\t\t--parsedebug\n" #. for this application. Please add _another line_ with the #. address for translation bugs. #. no-wrap -#: main.c:615 +#: main.c:628 msgid "" "\n" "To report bugs, see node `Bugs' in `gawk.info', which is\n" @@ -3200,7 +3220,7 @@ msgstr "" "és la secció `Informant sobre problemes i errors' a la versió impresa.\n" "Informeu dels errors de traducció a \n" -#: main.c:619 +#: main.c:632 msgid "" "gawk is a pattern scanning and processing language.\n" "By default it reads standard input and writes standard output.\n" @@ -3210,7 +3230,7 @@ msgstr "" "De forma predeterminada llegeix l'entrada estàndard i escriu a la sortida " "estàndar.\n" -#: main.c:623 +#: main.c:636 msgid "" "Examples:\n" "\tgawk '{ sum += $1 }; END { print sum }' file\n" @@ -3220,7 +3240,7 @@ msgstr "" "\tgawk '{ sum += $1 }; END { print sum }' fitxer\n" "\tgawk -F: '{ print $1 }' /etc/passwd\n" -#: main.c:648 +#: main.c:661 #, c-format msgid "" "Copyright (C) 1989, 1991-%d Free Software Foundation.\n" @@ -3239,7 +3259,7 @@ msgstr "" "Llicència, o (a la vostra elecció) qualsevol versió posterior.\n" "\n" -#: main.c:656 +#: main.c:669 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" @@ -3253,7 +3273,7 @@ msgstr "" "Per a més detalls consulteu la Llicència Pública General de GNU.\n" "\n" -#: main.c:662 +#: main.c:675 msgid "" "You should have received a copy of the GNU General Public License\n" "along with this program. If not, see http://www.gnu.org/licenses/.\n" @@ -3261,16 +3281,16 @@ msgstr "" "Junt amb aquest programa hauríeu d'haver rebut una còpia de la Llicència\n" "Pública General de GNU; si no és així, vegeu http://www.gnu.org/licenses/.\n" -#: main.c:699 +#: main.c:712 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:986 +#: main.c:999 #, c-format msgid "unknown value for field spec: %d\n" msgstr "valor desconegut per a l'especificació de camp: %d\n" -#: main.c:1084 +#: main.c:1097 #, c-format msgid "" "%s: `%s' argument to `-v' not in `var=value' form\n" @@ -3279,117 +3299,117 @@ msgstr "" "%s: `%s' l'argument per a `-v' no està en forma `var=valor'\n" "\n" -#: main.c:1110 +#: main.c:1123 #, c-format msgid "`%s' is not a legal variable name" msgstr "`%s' no és nom legal de variable" -#: main.c:1113 +#: main.c:1126 #, c-format msgid "`%s' is not a variable name, looking for file `%s=%s'" msgstr "`%s' no és un valor de variable, s'esperava fitxer `%s=%s'" -#: main.c:1117 +#: main.c:1130 #, c-format msgid "cannot use gawk builtin `%s' as variable name" msgstr "" "no es pot usar el nom de la funció integrada `%s' com a nom de variable" -#: main.c:1122 +#: main.c:1135 #, c-format msgid "cannot use function `%s' as variable name" msgstr "no es pot usar el nom de la funció interna `%s' com nom de variable" -#: main.c:1175 +#: main.c:1190 msgid "floating point exception" msgstr "excepció de coma flotant" -#: main.c:1182 +#: main.c:1197 msgid "fatal error: internal error" msgstr "error fatal: error intern" -#: main.c:1197 +#: main.c:1212 msgid "fatal error: internal error: segfault" msgstr "error fatal: error intern: segfault" -#: main.c:1209 +#: main.c:1224 msgid "fatal error: internal error: stack overflow" msgstr "error fatal: error intern: sobreeiximent de pila" -#: main.c:1268 +#: main.c:1283 #, c-format msgid "no pre-opened fd %d" msgstr "no s'ha pre-obert el descriptor fd per a %d" -#: main.c:1275 +#: main.c:1290 #, 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:1489 +#: main.c:1504 msgid "empty argument to `-e/--source' ignored" msgstr "s'ignonarà l'argument buit de `-e/--source'" -#: main.c:1560 +#: main.c:1575 msgid "-M ignored: MPFR/GMP support not compiled in" -msgstr "" +msgstr "-M ignorat: no s'ha compilat el suport MPFR/GMP" -#: main.c:1581 +#: main.c:1596 #, c-format msgid "%s: option `-W %s' unrecognized, ignored\n" msgstr "%s: no es reconeix l'opció `-W %s', serà ignorada\n" -#: main.c:1634 +#: main.c:1649 #, c-format msgid "%s: option requires an argument -- %c\n" msgstr "%s: l'opció requereix un argument -- %c\n" -#: mpfr.c:557 +#: mpfr.c:559 #, c-format msgid "PREC value `%.*s' is invalid" msgstr "Valor PREC `%.*s' no és vàlid" -#: mpfr.c:615 +#: mpfr.c:617 #, c-format msgid "RNDMODE value `%.*s' is invalid" msgstr "Valor RNDMODE `%.*s' no és vàlid" -#: mpfr.c:711 +#: mpfr.c:714 #, c-format msgid "%s: received non-numeric argument" msgstr "%s: s'ha rebut un argument que no és numèric" -#: mpfr.c:820 +#: mpfr.c:824 msgid "compl(%Rg): negative value will give strange results" msgstr "compl(%Rg): el valor negatiu donarà resultats estranys" -#: mpfr.c:824 +#: mpfr.c:828 msgid "comp(%Rg): fractional value will be truncated" msgstr "compl(%Rg): el valor fraccionari serà truncat" -#: mpfr.c:836 +#: mpfr.c:840 #, c-format msgid "cmpl(%Zd): negative values will give strange results" msgstr "cmpl(%Zd): els valors negatius donaran resultats estranys" -#: mpfr.c:855 +#: mpfr.c:859 #, c-format msgid "%s: received non-numeric argument #%d" msgstr "%s: s'ha rebut un argument no numèric #%d" -#: mpfr.c:865 +#: mpfr.c:869 msgid "%s: argument #%d has invalid value %Rg, using 0" msgstr "%s: l'argument #%d té valor no vàlid %Rg, s'usarà 0" -#: mpfr.c:877 +#: mpfr.c:881 msgid "%s: argument #%d negative value %Rg will give strange results" msgstr "%s: l'argument #%d amb valor negatiu %Rg donarà resultats estranys" -#: mpfr.c:883 +#: mpfr.c:887 msgid "%s: argument #%d fractional value %Rg will be truncated" msgstr "%s: l'argument #%d amb valor fraccional %Rg serà truncat" -#: mpfr.c:898 +#: mpfr.c:902 #, c-format msgid "%s: argument #%d negative value %Zd will give strange results" msgstr "%s: l'argument #%d amb valor negatiu %Zd donarà resultats estranys" @@ -3399,24 +3419,24 @@ msgstr "%s: l'argument #%d amb valor negatiu %Zd donar msgid "cmd. line:" msgstr "línia cmd.:" -#: node.c:418 +#: node.c:434 msgid "backslash at end of string" msgstr "barra invertida al final de la cadena" -#: node.c:497 +#: node.c:513 #, c-format msgid "old awk does not support the `\\%c' escape sequence" msgstr "l'antic awk no dóna suport a la seqüencia d'escapada `\\%c'" -#: node.c:548 +#: node.c:564 msgid "POSIX does not allow `\\x' escapes" msgstr "POSIX no permet seqüències d'escapada `\\x'" -#: node.c:554 +#: node.c:570 msgid "no hex digits in `\\x' escape sequence" msgstr "no hi ha dígits hexadecimals en la seqüència d'escapada `\\x'" -#: node.c:576 +#: node.c:592 #, c-format msgid "" "hex escape \\x%.*s of %d characters probably not interpreted the way you " @@ -3425,12 +3445,12 @@ msgstr "" "probablement no s'han interpretat els caràcters hex escape \\x%.*s of %d de " "la manera que esperàveu" -#: node.c:591 +#: node.c:607 #, c-format msgid "escape sequence `\\%c' treated as plain `%c'" msgstr "la seqüència d'escapada `\\%c' és tractada com a una simple `%c'" -#: node.c:735 +#: node.c:744 msgid "" "Invalid multibyte data detected. There may be a mismatch between your data " "and your locale." @@ -3449,25 +3469,25 @@ msgstr "" msgid "%s %s `%s': could not set close-on-exec: (fcntl F_SETFD: %s)" msgstr "%s %s `%s': no s'ha pogut establir close-on-exec: (fcntl F_SETFD: %s)" -#: profile.c:91 +#: profile.c:94 #, c-format msgid "could not open `%s' for writing: %s" msgstr "no es pot obrir `%s' per a escriptura: %s" -#: profile.c:93 +#: profile.c:96 msgid "sending profile to standard error" msgstr "enviant el perfil a l'eixida d'error estàndard" -#: profile.c:213 -#, fuzzy, c-format +#: profile.c:216 +#, c-format msgid "" "\t# %s rule(s)\n" "\n" msgstr "" -"\t# Regla(es)\n" +"\t# %s regla(es)\n" "\n" -#: profile.c:218 +#: profile.c:221 #, c-format msgid "" "\t# Rule(s)\n" @@ -3476,16 +3496,16 @@ msgstr "" "\t# Regla(es)\n" "\n" -#: profile.c:292 +#: profile.c:295 #, c-format msgid "internal error: %s with null vname" msgstr "error intern: %s amb vname nul" -#: profile.c:558 +#: profile.c:561 msgid "internal error: builtin with null fname" msgstr "error intern: funció integrada amb fname nul" -#: profile.c:978 +#: profile.c:1006 #, c-format msgid "" "\t# Loaded extensions (-l and/or @load)\n" @@ -3494,12 +3514,12 @@ msgstr "" "\t# Extensions carregades (-l i/o @load)\n" "\n" -#: profile.c:1001 +#: profile.c:1029 #, c-format msgid "\t# gawk profile, created %s\n" msgstr "\t# perfil gawk, creat %s\n" -#: profile.c:1555 +#: profile.c:1600 #, c-format msgid "" "\n" @@ -3508,98 +3528,103 @@ msgstr "" "\n" "\t# Funcions, llistades alfabèticament\n" -#: profile.c:1593 +#: profile.c:1638 #, c-format msgid "redir2str: unknown redirection type %d" msgstr "redir2str: tipus desconegut de redireccionament %d" -#: re.c:607 +#: re.c:610 #, c-format msgid "regexp component `%.*s' should probably be `[%.*s]'" msgstr "el component regexp `%.*s' probablement hauria de ser `[%.*s]'" -#: regcomp.c:139 +#: regcomp.c:143 msgid "Success" msgstr "Èxit" -#: regcomp.c:142 +#: regcomp.c:146 msgid "No match" msgstr "No hi ha concordança" -#: regcomp.c:145 +#: regcomp.c:149 msgid "Invalid regular expression" msgstr "Expressió regular no vàlida" -#: regcomp.c:148 +#: regcomp.c:152 msgid "Invalid collation character" msgstr "Caràcter de comparació no vàlid" -#: regcomp.c:151 +#: regcomp.c:155 msgid "Invalid character class name" msgstr "Nom de classe de caràcters no vàlid" -#: regcomp.c:154 +#: regcomp.c:158 msgid "Trailing backslash" msgstr "Barra invertida extra al final" -#: regcomp.c:157 +#: regcomp.c:161 msgid "Invalid back reference" msgstr "Referència cap endarrere no vàlida" -#: regcomp.c:160 -#, fuzzy +#: regcomp.c:164 msgid "Unmatched [, [^, [:, [., or [=" -msgstr "[ o [^ desemparellats" +msgstr "[, [^, [:, [., o [= sense concordança" -#: regcomp.c:163 +#: regcomp.c:167 msgid "Unmatched ( or \\(" msgstr "( o \\( desemparellats" -#: regcomp.c:166 +#: regcomp.c:170 msgid "Unmatched \\{" msgstr "\\{ desemparellat" -#: regcomp.c:169 +#: regcomp.c:173 msgid "Invalid content of \\{\\}" msgstr "Contingut no vàlid de \\{\\}" -#: regcomp.c:172 +#: regcomp.c:176 msgid "Invalid range end" msgstr "Final de rang no vàlid" -#: regcomp.c:175 +#: regcomp.c:179 msgid "Memory exhausted" msgstr "Memòria exhaurida" -#: regcomp.c:178 +#: regcomp.c:182 msgid "Invalid preceding regular expression" msgstr "Expressió regular precedent no vàlida" -#: regcomp.c:181 +#: regcomp.c:185 msgid "Premature end of regular expression" msgstr "Fí prematura de l'expressió regular" -#: regcomp.c:184 +#: regcomp.c:188 msgid "Regular expression too big" msgstr "L'expressió regular és massa gran" -#: regcomp.c:187 +#: regcomp.c:191 msgid "Unmatched ) or \\)" msgstr ") o \\) desemparellats" -#: regcomp.c:712 +#: regcomp.c:701 msgid "No previous regular expression" msgstr "No hi ha una expressió regular prèvia" -#: symbol.c:678 -#, fuzzy, c-format +#: symbol.c:684 +#, c-format msgid "function `%s': can't use function `%s' as a parameter name" -msgstr "funció `%s»: no pot usar el nom de la funció com a paràmetre" +msgstr "funció %s»: no es pot usar la funció `%s' com a nom de paràmetre" -#: symbol.c:810 +#: symbol.c:816 msgid "can not pop main context" msgstr "no es pot mostrar el context principal" +#~ msgid "function `%s' defined to take no more than %d argument(s)" +#~ msgstr "la funció `%s' està definida per agafar no més de %d argument(s)" + +#~ msgid "function `%s': missing argument #%d" +#~ msgstr "funció `%s': falta l'argument #%d" + #~ msgid "`getline var' invalid inside `%s' rule" #~ msgstr "`getline var' no és vàlid a dins de la regla `%s'" diff --git a/po/da.po b/po/da.po index 17822ce..6af3908 100644 --- a/po/da.po +++ b/po/da.po @@ -10,7 +10,7 @@ msgid "" msgstr "" "Project-Id-Version: gawk 4.1.1d\n" "Report-Msgid-Bugs-To: bug-gawk@gnu.org\n" -"POT-Creation-Date: 2015-05-19 16:06+0300\n" +"POT-Creation-Date: 2016-08-25 06:19+0300\n" "PO-Revision-Date: 2015-05-18 12:37+0200\n" "Last-Translator: Keld Simonsen \n" "Language-Team: Danish \n" @@ -21,88 +21,88 @@ msgstr "" "X-Generator: Lokalize 1.0\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n" -#: array.c:256 +#: array.c:259 #, c-format msgid "from %s" msgstr "fra %s" -#: array.c:357 +#: array.c:360 msgid "attempt to use a scalar value as array" msgstr "forsøg på at bruge en skalar som array" -#: array.c:359 +#: array.c:362 #, c-format msgid "attempt to use scalar parameter `%s' as an array" msgstr "forsøg på at bruge skalarparameteren '%s' som et array" -#: array.c:362 +#: array.c:365 #, c-format msgid "attempt to use scalar `%s' as an array" msgstr "forsøg på at bruge skalar '%s' som et array" -#: array.c:409 array.c:576 builtin.c:85 builtin.c:1606 builtin.c:1652 -#: builtin.c:1665 builtin.c:2112 builtin.c:2126 eval.c:1149 eval.c:1153 -#: eval.c:1564 +#: array.c:412 array.c:579 builtin.c:85 builtin.c:1612 builtin.c:1658 +#: builtin.c:1671 builtin.c:2160 builtin.c:2179 eval.c:1141 eval.c:1145 +#: eval.c:1556 #, c-format msgid "attempt to use array `%s' in a scalar context" msgstr "forsøg på at bruge array '%s' i skalarsammenhæng" -#: array.c:583 +#: array.c:586 #, c-format msgid "delete: index `%s' not in array `%s'" msgstr "delete: indeks '%s' findes ikke i array '%s'" -#: array.c:597 +#: array.c:600 #, c-format msgid "attempt to use scalar `%s[\"%.*s\"]' as an array" msgstr "forsøg på at bruge skalaren '%s[\"%.*s\"]' som array" -#: array.c:776 +#: array.c:779 msgid "adump: first argument not an array" msgstr "adump: første argument er ikke et array" -#: array.c:815 +#: array.c:818 msgid "asort: second argument not an array" msgstr "asort: andet argument er ikke et array" -#: array.c:816 +#: array.c:819 msgid "asorti: second argument not an array" msgstr "asorti: andet argument er ikke et array" -#: array.c:823 +#: array.c:826 msgid "asort: first argument not an array" msgstr "asort: første argument er ikke et array" -#: array.c:824 +#: array.c:827 msgid "asorti: first argument not an array" msgstr "asorti: første argument er ikke et array" -#: array.c:831 +#: array.c:834 msgid "asort: cannot use a subarray of first arg for second arg" msgstr "" "asort: kan ikke bruge et underarray af første argument for andet argument" -#: array.c:832 +#: array.c:835 msgid "asorti: cannot use a subarray of first arg for second arg" msgstr "" "asorti: kan ikke bruge et underarray af første argument for andet argument" -#: array.c:837 +#: array.c:840 msgid "asort: cannot use a subarray of second arg for first arg" msgstr "" "asort: kan ikke bruge et underarray af andet argument for første argument" -#: array.c:838 +#: array.c:841 msgid "asorti: cannot use a subarray of second arg for first arg" msgstr "" "asorti: kan ikke bruge et underarray af andet argument for første argument" -#: array.c:1313 +#: array.c:1316 #, c-format msgid "`%s' is invalid as a function name" msgstr "'%s' er ugyldigt som funktionsnavn" -#: array.c:1317 +#: array.c:1320 #, c-format msgid "sort comparison function `%s' is not defined" msgstr "funktionen for sorteringssammenligning '%s' er ikke defineret" @@ -144,11 +144,11 @@ msgstr "dublet case-v msgid "duplicate `default' detected in switch body" msgstr "dublet 'default' opdaget i switch-krop" -#: awkgram.y:793 awkgram.y:3763 +#: awkgram.y:793 awkgram.y:3774 msgid "`break' is not allowed outside a loop or switch" msgstr "'break' uden for en løkke eller switch er ikke tilladt" -#: awkgram.y:802 awkgram.y:3755 +#: awkgram.y:802 awkgram.y:3766 msgid "`continue' is not allowed outside a loop" msgstr "'continue' uden for en løkke er ikke tilladt" @@ -240,7 +240,7 @@ msgstr "fors msgid "invalid subscript expression" msgstr "ugyldigt indeksudtryk" -#: awkgram.y:2047 awkgram.y:2067 gawkapi.c:206 gawkapi.c:224 msg.c:126 +#: awkgram.y:2047 awkgram.y:2067 gawkapi.c:206 gawkapi.c:223 msg.c:126 msgid "warning: " msgstr "advarsel: " @@ -248,266 +248,271 @@ msgstr "advarsel: " msgid "fatal: " msgstr "fatal: " -#: awkgram.y:2115 +#: awkgram.y:2116 msgid "unexpected newline or end of string" msgstr "uventet nylinjetegn eller strengafslutning" -#: awkgram.y:2394 awkgram.y:2470 awkgram.y:2693 debug.c:523 debug.c:539 -#: debug.c:2812 debug.c:5055 +#: awkgram.y:2397 awkgram.y:2473 awkgram.y:2696 debug.c:523 debug.c:539 +#: debug.c:2812 debug.c:5101 #, c-format msgid "can't open source file `%s' for reading (%s)" msgstr "kan ikke åbne kildefilen '%s' for læsning (%s)" -#: awkgram.y:2395 awkgram.y:2520 +#: awkgram.y:2398 awkgram.y:2523 #, c-format msgid "can't open shared library `%s' for reading (%s)" msgstr "kan ikke åbne delt bibliotek '%s' for læsning (%s)" -#: awkgram.y:2397 awkgram.y:2471 awkgram.y:2521 builtin.c:135 debug.c:5206 +#: awkgram.y:2400 awkgram.y:2474 awkgram.y:2524 builtin.c:135 debug.c:5252 msgid "reason unknown" msgstr "ukendt årsag" -#: awkgram.y:2406 awkgram.y:2430 +#: awkgram.y:2409 awkgram.y:2433 #, c-format msgid "can't include `%s' and use it as a program file" msgstr "" -#: awkgram.y:2419 +#: awkgram.y:2422 #, c-format msgid "already included source file `%s'" msgstr "allerede inkluderet kildefil '%s'" -#: awkgram.y:2420 +#: awkgram.y:2423 #, c-format msgid "already loaded shared library `%s'" msgstr "allerede indlæst delt bibliotek '%s'" -#: awkgram.y:2455 +#: awkgram.y:2458 msgid "@include is a gawk extension" msgstr "@include er en gawk-udvidelse" -#: awkgram.y:2461 +#: awkgram.y:2464 msgid "empty filename after @include" msgstr "tomt filnavn efter @include" -#: awkgram.y:2505 +#: awkgram.y:2508 msgid "@load is a gawk extension" msgstr "@load er en gawk-udvidelse" -#: awkgram.y:2511 +#: awkgram.y:2514 msgid "empty filename after @load" msgstr "tomt filnavn efter @load" -#: awkgram.y:2645 +#: awkgram.y:2648 msgid "empty program text on command line" msgstr "tom programtekst på kommandolinjen" -#: awkgram.y:2760 +#: awkgram.y:2763 #, c-format msgid "can't read sourcefile `%s' (%s)" msgstr "kan ikke læse kildefilen '%s' (%s)" -#: awkgram.y:2771 +#: awkgram.y:2774 #, c-format msgid "source file `%s' is empty" msgstr "kildefilen '%s' er tom" -#: awkgram.y:2830 +#: awkgram.y:2833 #, c-format msgid "PEBKAC error: invalid character '\\%03o' in source code" msgstr "" -#: awkgram.y:2961 +#: awkgram.y:2964 msgid "source file does not end in newline" msgstr "kildefilen slutter ikke med en ny linje" -#: awkgram.y:3074 +#: awkgram.y:3081 msgid "unterminated regexp ends with `\\' at end of file" msgstr "uafsluttet regulært udtryk slutter med '\\' i slutningen af filen" -#: awkgram.y:3101 +#: awkgram.y:3108 #, c-format msgid "%s: %d: tawk regex modifier `/.../%c' doesn't work in gawk" msgstr "%s: %d: regex-ændringstegn '/.../%c' fra tawk virker ikke i gawk" -#: awkgram.y:3105 +#: awkgram.y:3112 #, c-format msgid "tawk regex modifier `/.../%c' doesn't work in gawk" msgstr "regex-ændringstegn '/.../%c' fra tawk virker ikke i gawk" -#: awkgram.y:3112 +#: awkgram.y:3119 msgid "unterminated regexp" msgstr "uafsluttet regulært udtryk" -#: awkgram.y:3116 +#: awkgram.y:3123 msgid "unterminated regexp at end of file" msgstr "uafsluttet regulært udtryk i slutningen af filen" -#: awkgram.y:3174 +#: awkgram.y:3181 msgid "use of `\\ #...' line continuation is not portable" msgstr "brug af '\\ #...' for linjefortsættelse er ikke portabelt" -#: awkgram.y:3190 +#: awkgram.y:3197 msgid "backslash not last character on line" msgstr "sidste tegn på linjen er ikke en omvendt skråstreg" -#: awkgram.y:3251 +#: awkgram.y:3235 awkgram.y:3237 +#, fuzzy +msgid "multidimensional arrays are a gawk extension" +msgstr "indirekte funktionskald er en gawk-udvidelse" + +#: awkgram.y:3262 msgid "POSIX does not allow operator `**='" msgstr "POSIX tillader ikke operatoren '**='" -#: awkgram.y:3253 +#: awkgram.y:3264 msgid "old awk does not support operator `**='" msgstr "gamle versioner af awk understøtter ikke operatoren '**='" -#: awkgram.y:3262 +#: awkgram.y:3273 msgid "POSIX does not allow operator `**'" msgstr "POSIX tillader ikke operatoren '**'" -#: awkgram.y:3264 +#: awkgram.y:3275 msgid "old awk does not support operator `**'" msgstr "gamle versioner af awk understøtter ikke operatoren '**'" -#: awkgram.y:3299 +#: awkgram.y:3310 msgid "operator `^=' is not supported in old awk" msgstr "operatoren '^=' understøttes ikke i gamle versioner af awk" -#: awkgram.y:3307 +#: awkgram.y:3318 msgid "operator `^' is not supported in old awk" msgstr "operatoren '^' understøttes ikke i gamle versioner af awk" -#: awkgram.y:3404 awkgram.y:3422 command.y:1180 +#: awkgram.y:3415 awkgram.y:3433 command.y:1187 msgid "unterminated string" msgstr "uafsluttet streng" -#: awkgram.y:3643 +#: awkgram.y:3654 #, c-format msgid "invalid char '%c' in expression" msgstr "ugyldigt tegn '%c' i udtryk" -#: awkgram.y:3690 +#: awkgram.y:3701 #, c-format msgid "`%s' is a gawk extension" msgstr "'%s' er en gawk-udvidelse" -#: awkgram.y:3695 +#: awkgram.y:3706 #, c-format msgid "POSIX does not allow `%s'" msgstr "POSIX tillader ikke '%s'" -#: awkgram.y:3703 +#: awkgram.y:3714 #, c-format msgid "`%s' is not supported in old awk" msgstr "'%s' understøttes ikke i gamle versioner af awk" -#: awkgram.y:3793 +#: awkgram.y:3804 msgid "`goto' considered harmful!\n" msgstr "'goto' anses for skadelig!\n" -#: awkgram.y:3827 +#: awkgram.y:3873 #, c-format msgid "%d is invalid as number of arguments for %s" msgstr "%d er et ugyldigt antal argumenter for %s" -#: awkgram.y:3862 +#: awkgram.y:3908 #, 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:3867 +#: awkgram.y:3913 #, c-format msgid "%s third parameter is not a changeable object" msgstr "%s: tredje argument er ikke et ændringsbart objekt" -#: awkgram.y:3950 awkgram.y:3953 +#: awkgram.y:3996 awkgram.y:3999 msgid "match: third argument is a gawk extension" msgstr "match: tredje argument er en gawk-udvidelse" -#: awkgram.y:4007 awkgram.y:4010 +#: awkgram.y:4053 awkgram.y:4056 msgid "close: second argument is a gawk extension" msgstr "close: andet argument er en gawk-udvidelse" -#: awkgram.y:4022 +#: awkgram.y:4068 msgid "use of dcgettext(_\"...\") is incorrect: remove leading underscore" msgstr "" "brug af dcgettext(_\"...\") er forkert: fjern det indledende " "understregningstegn" -#: awkgram.y:4037 +#: awkgram.y:4083 msgid "use of dcngettext(_\"...\") is incorrect: remove leading underscore" msgstr "" "brug af dcgettext(_\"...\") er forkert: fjern det indledende " "understregningstegn" -#: awkgram.y:4056 +#: awkgram.y:4102 msgid "index: regexp constant as second argument is not allowed" msgstr "index: regexp-konstant som andet argument er ikke tilladt" -#: awkgram.y:4109 +#: awkgram.y:4155 #, c-format msgid "function `%s': parameter `%s' shadows global variable" msgstr "funktionen '%s': parameteren '%s' overskygger en global variabel" -#: awkgram.y:4166 debug.c:4041 debug.c:4084 debug.c:5204 +#: awkgram.y:4214 debug.c:4087 debug.c:4130 debug.c:5250 #, c-format msgid "could not open `%s' for writing (%s)" msgstr "kunne ikke åbne '%s' for skrivning (%s)" -#: awkgram.y:4167 +#: awkgram.y:4215 msgid "sending variable list to standard error" msgstr "sender variabelliste til standard fejl" -#: awkgram.y:4175 +#: awkgram.y:4223 #, c-format msgid "%s: close failed (%s)" msgstr "%s: lukning mislykkedes (%s)" -#: awkgram.y:4200 +#: awkgram.y:4248 msgid "shadow_funcs() called twice!" msgstr "shadow_funcs() kaldt to gange!" -#: awkgram.y:4208 +#: awkgram.y:4256 msgid "there were shadowed variables." msgstr "der var skyggede variable." -#: awkgram.y:4279 +#: awkgram.y:4327 #, c-format msgid "function name `%s' previously defined" msgstr "funktionsnavnet '%s' er allerede defineret" -#: awkgram.y:4325 +#: awkgram.y:4373 #, c-format msgid "function `%s': can't use function name as parameter name" msgstr "funktionen '%s': kan ikke bruge funktionsnavn som parameternavn" -#: awkgram.y:4328 +#: awkgram.y:4376 #, c-format msgid "function `%s': can't use special variable `%s' as a function parameter" msgstr "" "funktionen '%s': kan ikke bruge specialvariabel '%s' som en " "funktionsparameter" -#: awkgram.y:4336 +#: awkgram.y:4384 #, c-format msgid "function `%s': parameter #%d, `%s', duplicates parameter #%d" msgstr "funktionen '%s': parameter %d, '%s', er samme som parameter %d" -#: awkgram.y:4423 awkgram.y:4429 +#: awkgram.y:4471 awkgram.y:4477 #, c-format msgid "function `%s' called but never defined" msgstr "funktionen '%s' kaldt, men aldrig defineret" -#: awkgram.y:4433 +#: awkgram.y:4481 #, c-format msgid "function `%s' defined but never called directly" msgstr "funktionen '%s' defineret, men aldrig kaldt direkte" -#: awkgram.y:4465 +#: awkgram.y:4513 #, 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:4480 +#: awkgram.y:4528 #, c-format msgid "" "function `%s' called with space between name and `(',\n" @@ -516,21 +521,21 @@ msgstr "" "funktionen '%s' kaldt med blanktegn mellem navnet og '(',\n" "eller brugt som en variabel eller et array" -#: awkgram.y:4686 +#: awkgram.y:4734 msgid "division by zero attempted" msgstr "forsøgte at dividere med nul" -#: awkgram.y:4695 +#: awkgram.y:4743 #, c-format msgid "division by zero attempted in `%%'" msgstr "forsøgte at dividere med nul i '%%'" -#: awkgram.y:5015 +#: awkgram.y:5064 msgid "" "cannot assign a value to the result of a field post-increment expression" msgstr "" -#: awkgram.y:5018 +#: awkgram.y:5067 #, fuzzy, c-format msgid "invalid target of assignment (opcode %s)" msgstr "%d er et ugyldigt antal argumenter for %s" @@ -564,203 +569,213 @@ msgstr "" msgid "fflush: cannot flush: file `%s' opened for reading, not writing" msgstr "fflush: kan ikke rense: filen '%s' åbnet for læsning, ikke skrivning" -#: builtin.c:244 +#: builtin.c:241 +#, fuzzy, c-format +msgid "fflush: cannot flush: two-way pipe `%s' has closed write end" +msgstr "" +"fflush: kan ikke rense: datakanalen '%s' åbnet for læsning, ikke skrivning" + +#: builtin.c:247 #, 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:351 +#: builtin.c:354 msgid "index: received non-string first argument" msgstr "indeks: første argument er ikke en streng" -#: builtin.c:353 +#: builtin.c:356 msgid "index: received non-string second argument" msgstr "indeks: andet argument er ikke en streng" -#: builtin.c:466 mpfr.c:777 +#: builtin.c:469 mpfr.c:781 msgid "int: received non-numeric argument" msgstr "int: fik et ikke-numerisk argument" -#: builtin.c:503 +#: builtin.c:506 msgid "length: received array argument" msgstr "length: fik et array-argument" -#: builtin.c:506 +#: builtin.c:509 msgid "`length(array)' is a gawk extension" msgstr "'length(array)' er en gawk-udvidelse" -#: builtin.c:525 +#: builtin.c:528 msgid "length: received non-string argument" msgstr "length: fik et argument som ikke er en streng" -#: builtin.c:554 +#: builtin.c:557 msgid "log: received non-numeric argument" msgstr "log: fik et ikke-numerisk argument" -#: builtin.c:557 +#: builtin.c:560 #, c-format msgid "log: received negative argument %g" msgstr "log: fik et negativt argument %g" -#: builtin.c:755 builtin.c:760 builtin.c:911 +#: builtin.c:758 builtin.c:763 builtin.c:914 msgid "fatal: must use `count$' on all formats or none" msgstr "fatal: skal bruge 'count$' på alle formater eller ikke nogen" -#: builtin.c:830 +#: builtin.c:833 #, c-format msgid "field width is ignored for `%%' specifier" msgstr "feltbredde ignoreret for '%%'-angivelse" -#: builtin.c:832 +#: builtin.c:835 #, c-format msgid "precision is ignored for `%%' specifier" msgstr "præcision ignoreret for '%%'-angivelse" -#: builtin.c:834 +#: builtin.c:837 #, c-format msgid "field width and precision are ignored for `%%' specifier" msgstr "feltbredde og præcision ignoreret for '%%'-angivelse" -#: builtin.c:885 +#: builtin.c:888 msgid "fatal: `$' is not permitted in awk formats" msgstr "fatal: '$' tillades ikke i awk-formater" -#: builtin.c:894 +#: builtin.c:897 msgid "fatal: arg count with `$' must be > 0" msgstr "fatal: argumentantallet med '$' skal være > 0" -#: builtin.c:898 +#: builtin.c:901 #, c-format msgid "fatal: arg count %ld greater than total number of supplied arguments" msgstr "fatal: argumentantallet %ld er større end antal givne argumenter" -#: builtin.c:902 +#: builtin.c:905 msgid "fatal: `$' not permitted after period in format" msgstr "fatal: '$' tillades ikke efter et punktum i formatet" -#: builtin.c:921 +#: builtin.c:924 msgid "fatal: no `$' supplied for positional field width or precision" msgstr "" "fatal: intet '$' angivet for bredde eller præcision af positionsangivet felt" -#: builtin.c:991 +#: builtin.c:994 msgid "`l' is meaningless in awk formats; ignored" msgstr "'l' er meningsløst i awk-formater, ignoreret" -#: builtin.c:995 +#: builtin.c:998 msgid "fatal: `l' is not permitted in POSIX awk formats" msgstr "fatal: 'l' tillades ikke i POSIX awk-formater" -#: builtin.c:1008 +#: builtin.c:1011 msgid "`L' is meaningless in awk formats; ignored" msgstr "'L' er meningsløst i awk-formater, ignoreret" -#: builtin.c:1012 +#: builtin.c:1015 msgid "fatal: `L' is not permitted in POSIX awk formats" msgstr "fatal: 'L' tillades ikke i POSIX awk-formater" -#: builtin.c:1025 +#: builtin.c:1028 msgid "`h' is meaningless in awk formats; ignored" msgstr "'h' er meningsløst i awk-formater, ignoreret" -#: builtin.c:1029 +#: builtin.c:1032 msgid "fatal: `h' is not permitted in POSIX awk formats" msgstr "fatal: 'h' tillades ikke i POSIX awk-formater" -#: builtin.c:1055 +#: builtin.c:1058 #, c-format msgid "[s]printf: value %g is too big for %%c format" msgstr "[s]printf: værdi %g er for stor for %%c-format" -#: builtin.c:1068 +#: builtin.c:1071 #, c-format msgid "[s]printf: value %g is not a valid wide character" msgstr "[s]printf: værdi %g er ikke et gyldigt bredt tegn" -#: builtin.c:1454 +#: builtin.c:1457 #, c-format msgid "[s]printf: value %g is out of range for `%%%c' format" msgstr "[s]printf: værdi %g er uden for område for '%%%c'-format" -#: builtin.c:1552 +#: builtin.c:1555 #, c-format msgid "ignoring unknown format specifier character `%c': no argument converted" msgstr "" "ignorerer ukendt formatspecificeringstegn '%c': intet argument konverteret" -#: builtin.c:1557 +#: builtin.c:1560 msgid "fatal: not enough arguments to satisfy format string" msgstr "fatal: for få argumenter til formatstrengen" -#: builtin.c:1559 +#: builtin.c:1562 msgid "^ ran out for this one" msgstr "^ sluttede her" -#: builtin.c:1566 +#: builtin.c:1569 msgid "[s]printf: format specifier does not have control letter" msgstr "[s]printf: formatspecifikation har intet kommandobogstav" -#: builtin.c:1569 +#: builtin.c:1572 msgid "too many arguments supplied for format string" msgstr "for mange argumenter til formatstrengen" -#: builtin.c:1625 +#: builtin.c:1631 msgid "sprintf: no arguments" msgstr "sprintf: ingen argumenter" -#: builtin.c:1648 builtin.c:1659 +#: builtin.c:1654 builtin.c:1665 msgid "printf: no arguments" msgstr "printf: ingen argumenter" -#: builtin.c:1702 +#: builtin.c:1676 +msgid "printf: attempt to write to closed write end of two-way pipe" +msgstr "" + +#: builtin.c:1713 msgid "sqrt: received non-numeric argument" msgstr "sqrt: fik ikke-numerisk argument" -#: builtin.c:1706 +#: builtin.c:1717 #, c-format msgid "sqrt: called with negative argument %g" msgstr "sqrt: kaldt med negativt argument %g" -#: builtin.c:1737 +#: builtin.c:1748 #, c-format msgid "substr: length %g is not >= 1" msgstr "substr: længden %g er ikke >= 1" -#: builtin.c:1739 +#: builtin.c:1750 #, c-format msgid "substr: length %g is not >= 0" msgstr "substr: længden %g er ikke >= 0" -#: builtin.c:1753 +#: builtin.c:1764 #, c-format msgid "substr: non-integer length %g will be truncated" msgstr "substr: længden %g som ikke er et heltal vil blive trunkeret" -#: builtin.c:1758 +#: builtin.c:1769 #, c-format msgid "substr: length %g too big for string indexing, truncating to %g" msgstr "substr: længden %g for stor til strengindeksering, trunkerer til %g" -#: builtin.c:1770 +#: builtin.c:1781 #, c-format msgid "substr: start index %g is invalid, using 1" msgstr "substr: startindeks %g er ugyldigt, bruger 1" -#: builtin.c:1775 +#: builtin.c:1786 #, c-format msgid "substr: non-integer start index %g will be truncated" msgstr "substr: startindeks %g som ikke er et heltal vil blive trunkeret" -#: builtin.c:1798 +#: builtin.c:1809 msgid "substr: source string is zero length" msgstr "substr: kildestrengen er tom" -#: builtin.c:1812 +#: builtin.c:1823 #, c-format msgid "substr: start index %g is past end of string" msgstr "substr: startindeks %g er forbi slutningen på strengen" -#: builtin.c:1820 +#: builtin.c:1831 #, c-format msgid "" "substr: length %g at start index %g exceeds length of first argument (%lu)" @@ -768,525 +783,533 @@ msgstr "" "substr: længden %g ved startindeks %g overskrider længden af første argument " "(%lu)" -#: builtin.c:1892 +#: builtin.c:1903 msgid "strftime: format value in PROCINFO[\"strftime\"] has numeric type" msgstr "strftime: formatværdi i PROCINFO[\"strftime\"] har numerisk type" -#: builtin.c:1915 +#: builtin.c:1926 msgid "strftime: received non-numeric second argument" msgstr "strftime: fik et ikke-numerisk andet argument" -#: builtin.c:1925 +#: builtin.c:1936 msgid "strftime: second argument less than 0 or too big for time_t" msgstr "strftime: andet argument mindre end 0 eller for stort til time_t" -#: builtin.c:1932 +#: builtin.c:1943 msgid "strftime: second argument out of range for time_t" msgstr "strftime: andet argument uden for område for time_t" -#: builtin.c:1941 +#: builtin.c:1952 msgid "strftime: received non-string first argument" msgstr "strftime: fik et første argument som ikke er en streng" -#: builtin.c:1948 +#: builtin.c:1959 msgid "strftime: received empty format string" msgstr "strftime: fik en tom formatstreng" -#: builtin.c:2017 +#: builtin.c:2028 msgid "mktime: received non-string argument" msgstr "mktime: fik et argument som ikke er en streng" -#: builtin.c:2034 +#: builtin.c:2045 msgid "mktime: at least one of the values is out of the default range" msgstr "mktime: mindst én af værdierne er udenfor standardområdet" -#: builtin.c:2069 +#: builtin.c:2081 msgid "'system' function not allowed in sandbox mode" msgstr "'system'-funktion ikke tilladt i sandkasse-tilstand" -#: builtin.c:2074 +#: builtin.c:2086 msgid "system: received non-string argument" msgstr "system: fik et argument som ikke er en streng" -#: builtin.c:2194 +#: builtin.c:2165 builtin.c:2230 +msgid "print: attempt to write to closed write end of two-way pipe" +msgstr "" + +#: builtin.c:2248 #, c-format msgid "reference to uninitialized field `$%d'" msgstr "reference til ikke-initieret felt '$%d'" -#: builtin.c:2279 +#: builtin.c:2333 msgid "tolower: received non-string argument" msgstr "tolower: fik et argument som ikke er en streng" -#: builtin.c:2310 +#: builtin.c:2364 msgid "toupper: received non-string argument" msgstr "toupper: fik et argument som ikke er en streng" -#: builtin.c:2343 mpfr.c:679 +#: builtin.c:2397 mpfr.c:681 msgid "atan2: received non-numeric first argument" msgstr "atan2: fik et ikke-numerisk første argument" -#: builtin.c:2345 mpfr.c:681 +#: builtin.c:2399 mpfr.c:683 msgid "atan2: received non-numeric second argument" msgstr "atan2: fik et ikke-numerisk andet argument" -#: builtin.c:2364 +#: builtin.c:2418 msgid "sin: received non-numeric argument" msgstr "sin: fik et ikke-numerisk argument" -#: builtin.c:2380 +#: builtin.c:2434 msgid "cos: received non-numeric argument" msgstr "cos: fik et ikke-numerisk argument" -#: builtin.c:2433 mpfr.c:1176 +#: builtin.c:2487 mpfr.c:1180 msgid "srand: received non-numeric argument" msgstr "srand: fik et ikke-numerisk argument" -#: builtin.c:2464 +#: builtin.c:2518 msgid "match: third argument is not an array" msgstr "match: tredje argument er ikke et array" -#: builtin.c:2725 +#: builtin.c:2779 #, c-format msgid "gensub: third argument `%.*s' treated as 1" msgstr "gensub: tredje argument '%.*s' behandlet som 1" -#: builtin.c:2740 +#: builtin.c:2794 #, c-format msgid "gensub: third argument %g treated as 1" msgstr "gensub: tredje argument %g behandlet som 1" -#: builtin.c:3038 +#: builtin.c:3096 #, c-format msgid "%s: can be called indirectly only with two arguments" msgstr "%s: kan kun kaldes indirekte med to argumenter" -#: builtin.c:3128 +#: builtin.c:3186 #, c-format msgid "indirect call to %s requires at least two arguments" msgstr "indirekte kald til %s kræver mindst to argumenter" -#: builtin.c:3180 +#: builtin.c:3238 msgid "lshift: received non-numeric first argument" msgstr "lshift: fik et ikke-numerisk første argument" -#: builtin.c:3182 +#: builtin.c:3240 msgid "lshift: received non-numeric second argument" msgstr "lshift: fik et ikke-numerisk andet argument" -#: builtin.c:3188 +#: builtin.c:3246 #, c-format msgid "lshift(%f, %f): negative values will give strange results" msgstr "lshift(%f, %f): negative værdier vil give mærkelige resultater" -#: builtin.c:3190 +#: builtin.c:3248 #, c-format msgid "lshift(%f, %f): fractional values will be truncated" msgstr "lshift(%f, %f): kommatalsværdier vil blive trunkeret" -#: builtin.c:3192 +#: builtin.c:3250 #, c-format msgid "lshift(%f, %f): too large shift value will give strange results" msgstr "lshift(%f, %f): for stor skifteværdi vil give mærkelige resultater" -#: builtin.c:3217 +#: builtin.c:3275 msgid "rshift: received non-numeric first argument" msgstr "rshift: fik et ikke-numerisk første argument" -#: builtin.c:3219 +#: builtin.c:3277 msgid "rshift: received non-numeric second argument" msgstr "rshift: fik et ikke-numerisk andet argument" -#: builtin.c:3225 +#: builtin.c:3283 #, c-format msgid "rshift(%f, %f): negative values will give strange results" msgstr "rshift(%f, %f): negative værdier vil give mærkelige resultater" -#: builtin.c:3227 +#: builtin.c:3285 #, c-format msgid "rshift(%f, %f): fractional values will be truncated" msgstr "rshift(%f, %f): kommatalsværdier vil blive trunkeret" -#: builtin.c:3229 +#: builtin.c:3287 #, c-format msgid "rshift(%f, %f): too large shift value will give strange results" msgstr "rshift(%f, %f): for stor skifteværdi vil give mærkelige resultater" -#: builtin.c:3254 mpfr.c:988 +#: builtin.c:3312 mpfr.c:992 msgid "and: called with less than two arguments" msgstr "and: kaldt med mindre end to argumenter" -#: builtin.c:3259 +#: builtin.c:3317 #, c-format msgid "and: argument %d is non-numeric" msgstr "and: argumentet %d er ikke-numerisk" -#: builtin.c:3263 +#: builtin.c:3321 #, c-format msgid "and: argument %d negative value %g will give strange results" msgstr "and: argument %d negativ værdi %g vil give mærkelige resultater" -#: builtin.c:3286 mpfr.c:1020 +#: builtin.c:3344 mpfr.c:1024 msgid "or: called with less than two arguments" msgstr "or: kaldt med mindre end to argumenter" -#: builtin.c:3291 +#: builtin.c:3349 #, c-format msgid "or: argument %d is non-numeric" msgstr "or: argumentet %d er ikke-numerisk" -#: builtin.c:3295 +#: builtin.c:3353 #, c-format msgid "or: argument %d negative value %g will give strange results" msgstr "or: argument %d negativ værdi %g vil give mærkelige resultater" -#: builtin.c:3317 mpfr.c:1051 +#: builtin.c:3375 mpfr.c:1055 msgid "xor: called with less than two arguments" msgstr "zor: kaldt med mindre end to argumenter" -#: builtin.c:3323 +#: builtin.c:3381 #, c-format msgid "xor: argument %d is non-numeric" msgstr "xor: argumentet %d er ikke-numerisk" -#: builtin.c:3327 +#: builtin.c:3385 #, c-format msgid "xor: argument %d negative value %g will give strange results" msgstr "xor: argument %d negativ værdi %g vil give mærkelige resultater" -#: builtin.c:3352 mpfr.c:807 +#: builtin.c:3410 mpfr.c:811 msgid "compl: received non-numeric argument" msgstr "compl: fik et ikke-numerisk argument" -#: builtin.c:3358 +#: builtin.c:3416 #, c-format msgid "compl(%f): negative value will give strange results" msgstr "compl(%f): negativ værdi vil give mærkelige resultater" -#: builtin.c:3360 +#: builtin.c:3418 #, c-format msgid "compl(%f): fractional value will be truncated" msgstr "compl(%f): kommatalsværdi vil blive trunkeret" -#: builtin.c:3529 +#: builtin.c:3588 #, c-format msgid "dcgettext: `%s' is not a valid locale category" msgstr "dcgettext: '%s' er ikke en gyldig lokalitetskategori" -#: command.y:225 +#: command.y:226 #, c-format msgid "Type (g)awk statement(s). End with the command \"end\"\n" msgstr "Indtast (g)awk sætninger. Slut med kommandoen \"end\"\n" -#: command.y:289 +#: command.y:290 #, c-format msgid "invalid frame number: %d" msgstr "ugyldigt rammenummer: %d" -#: command.y:295 +#: command.y:296 #, c-format msgid "info: invalid option - \"%s\"" msgstr "info: ugyldigt flag - '%s'" -#: command.y:321 +#: command.y:322 #, c-format msgid "source \"%s\": already sourced." msgstr "" -#: command.y:326 +#: command.y:327 #, c-format msgid "save \"%s\": command not permitted." msgstr "" -#: command.y:339 +#: command.y:340 msgid "Can't use command `commands' for breakpoint/watchpoint commands" msgstr "" -#: command.y:341 +#: command.y:342 msgid "no breakpoint/watchpoint has been set yet" msgstr "" -#: command.y:343 +#: command.y:344 msgid "invalid breakpoint/watchpoint number" msgstr "" -#: command.y:348 +#: command.y:349 #, c-format msgid "Type commands for when %s %d is hit, one per line.\n" msgstr "" -#: command.y:350 +#: command.y:351 #, c-format msgid "End with the command \"end\"\n" msgstr "" -#: command.y:357 +#: command.y:358 msgid "`end' valid only in command `commands' or `eval'" msgstr "" -#: command.y:367 +#: command.y:368 msgid "`silent' valid only in command `commands'" msgstr "" -#: command.y:373 +#: command.y:374 #, c-format msgid "trace: invalid option - \"%s\"" msgstr "trace: ugyldigt flag - '%s'" -#: command.y:387 +#: command.y:388 msgid "condition: invalid breakpoint/watchpoint number" msgstr "" -#: command.y:449 +#: command.y:450 msgid "argument not a string" msgstr "argument er ikke en streng" -#: command.y:459 command.y:464 +#: command.y:460 command.y:465 #, c-format msgid "option: invalid parameter - \"%s\"" msgstr "flag: ugyldig parameter - \"%s\"" -#: command.y:474 +#: command.y:475 #, c-format msgid "no such function - \"%s\"" msgstr "ingen sådan funktion - \"%s\"" -#: command.y:531 +#: command.y:532 #, c-format msgid "enable: invalid option - \"%s\"" msgstr "enable: ugyldigt flag - '%s'" -#: command.y:597 +#: command.y:598 #, c-format msgid "invalid range specification: %d - %d" msgstr "Ugyldig intervalangivelse: %d - %d" -#: command.y:659 +#: command.y:660 msgid "non-numeric value for field number" msgstr "ikke-numerisk værdi for felt-nummer" -#: command.y:680 command.y:687 +#: command.y:681 command.y:688 msgid "non-numeric value found, numeric expected" msgstr "ikke-numerisk værdi fundet, numerisk forventet" -#: command.y:712 command.y:718 +#: command.y:713 command.y:719 msgid "non-zero integer value" msgstr "ikke-nul heltalsværdi" -#: command.y:817 +#: command.y:818 msgid "" "backtrace [N] - print trace of all or N innermost (outermost if N < 0) " "frames." msgstr "" -#: command.y:819 +#: command.y:820 msgid "" "break [[filename:]N|function] - set breakpoint at the specified location." msgstr "" -#: command.y:821 +#: command.y:822 msgid "clear [[filename:]N|function] - delete breakpoints previously set." msgstr "" -#: command.y:823 +#: command.y:824 msgid "" "commands [num] - starts a list of commands to be executed at a " "breakpoint(watchpoint) hit." msgstr "" -#: command.y:825 +#: command.y:826 msgid "condition num [expr] - set or clear breakpoint or watchpoint condition." msgstr "" -#: command.y:827 +#: command.y:828 msgid "continue [COUNT] - continue program being debugged." msgstr "" -#: command.y:829 +#: command.y:830 msgid "delete [breakpoints] [range] - delete specified breakpoints." msgstr "" -#: command.y:831 +#: command.y:832 msgid "disable [breakpoints] [range] - disable specified breakpoints." msgstr "" -#: command.y:833 +#: command.y:834 msgid "display [var] - print value of variable each time the program stops." msgstr "" -#: command.y:835 +#: command.y:836 msgid "down [N] - move N frames down the stack." msgstr "" -#: command.y:837 +#: command.y:838 msgid "dump [filename] - dump instructions to file or stdout." msgstr "" -#: command.y:839 +#: command.y:840 msgid "enable [once|del] [breakpoints] [range] - enable specified breakpoints." msgstr "" -#: command.y:841 +#: command.y:842 msgid "end - end a list of commands or awk statements." msgstr "" -#: command.y:843 +#: command.y:844 msgid "eval stmt|[p1, p2, ...] - evaluate awk statement(s)." msgstr "" -#: command.y:845 +#: command.y:846 +msgid "exit - (same as quit) exit debugger." +msgstr "" + +#: command.y:848 msgid "finish - execute until selected stack frame returns." msgstr "" -#: command.y:847 +#: command.y:850 msgid "frame [N] - select and print stack frame number N." msgstr "" -#: command.y:849 +#: command.y:852 msgid "help [command] - print list of commands or explanation of command." msgstr "" -#: command.y:851 +#: command.y:854 msgid "ignore N COUNT - set ignore-count of breakpoint number N to COUNT." msgstr "" -#: command.y:853 +#: command.y:856 msgid "" "info topic - source|sources|variables|functions|break|frame|args|locals|" "display|watch." msgstr "" -#: command.y:855 +#: command.y:858 msgid "list [-|+|[filename:]lineno|function|range] - list specified line(s)." msgstr "" -#: command.y:857 +#: command.y:860 msgid "next [COUNT] - step program, proceeding through subroutine calls." msgstr "" -#: command.y:859 +#: command.y:862 msgid "" "nexti [COUNT] - step one instruction, but proceed through subroutine calls." msgstr "" -#: command.y:861 +#: command.y:864 msgid "option [name[=value]] - set or display debugger option(s)." msgstr "" -#: command.y:863 +#: command.y:866 msgid "print var [var] - print value of a variable or array." msgstr "" -#: command.y:865 +#: command.y:868 msgid "printf format, [arg], ... - formatted output." msgstr "" -#: command.y:867 +#: command.y:870 msgid "quit - exit debugger." msgstr "" -#: command.y:869 +#: command.y:872 msgid "return [value] - make selected stack frame return to its caller." msgstr "" -#: command.y:871 +#: command.y:874 msgid "run - start or restart executing program." msgstr "" -#: command.y:874 +#: command.y:877 msgid "save filename - save commands from the session to file." msgstr "" -#: command.y:877 +#: command.y:880 msgid "set var = value - assign value to a scalar variable." msgstr "" -#: command.y:879 +#: command.y:882 msgid "" "silent - suspends usual message when stopped at a breakpoint/watchpoint." msgstr "" -#: command.y:881 +#: command.y:884 msgid "source file - execute commands from file." msgstr "" -#: command.y:883 +#: command.y:886 msgid "step [COUNT] - step program until it reaches a different source line." msgstr "" -#: command.y:885 +#: command.y:888 msgid "stepi [COUNT] - step one instruction exactly." msgstr "" -#: command.y:887 +#: command.y:890 msgid "tbreak [[filename:]N|function] - set a temporary breakpoint." msgstr "" -#: command.y:889 +#: command.y:892 msgid "trace on|off - print instruction before executing." msgstr "" -#: command.y:891 +#: command.y:894 msgid "undisplay [N] - remove variable(s) from automatic display list." msgstr "" -#: command.y:893 +#: command.y:896 msgid "" "until [[filename:]N|function] - execute until program reaches a different " "line or line N within current frame." msgstr "" -#: command.y:895 +#: command.y:898 msgid "unwatch [N] - remove variable(s) from watch list." msgstr "" -#: command.y:897 +#: command.y:900 msgid "up [N] - move N frames up the stack." msgstr "" -#: command.y:899 +#: command.y:902 msgid "watch var - set a watchpoint for a variable." msgstr "" -#: command.y:901 +#: command.y:904 msgid "" "where [N] - (same as backtrace) print trace of all or N innermost (outermost " "if N < 0) frames." msgstr "" -#: command.y:1013 debug.c:401 msg.c:135 +#: command.y:1016 debug.c:401 msg.c:135 #, c-format msgid "error: " msgstr "fejl: " -#: command.y:1053 +#: command.y:1060 #, c-format msgid "can't read command (%s)\n" msgstr "kan ikke læse kommando (%s)\n" -#: command.y:1067 +#: command.y:1074 #, c-format msgid "can't read command (%s)" msgstr "kan ikke læse kommando (%s)" -#: command.y:1118 +#: command.y:1125 msgid "invalid character in command" msgstr "Ugyldigt tegn i kommando" -#: command.y:1154 +#: command.y:1161 #, c-format msgid "unknown command - \"%.*s\", try help" msgstr "" -#: command.y:1224 +#: command.y:1231 #, c-format msgid "%s" msgstr "%s" -#: command.y:1286 +#: command.y:1293 msgid "invalid character" msgstr "Ugyldigt tegn" -#: command.y:1457 +#: command.y:1497 #, c-format msgid "undefined command: %s\n" msgstr "ikke-defineret kommando: %s\n" @@ -1490,17 +1513,17 @@ msgstr "[\"%s\"] findes ikke i array '%s'\n" msgid "`%s[\"%s\"]' is not an array\n" msgstr "`%s[\"%s\"]' er ikke et array\n" -#: debug.c:1236 debug.c:4964 +#: debug.c:1236 debug.c:5010 #, c-format msgid "`%s' is not a scalar variable" msgstr "'%s' er ikke en skalar variabel" -#: debug.c:1258 debug.c:4994 +#: debug.c:1258 debug.c:5040 #, c-format msgid "attempt to use array `%s[\"%s\"]' in a scalar context" msgstr "forsøg på at bruge array '%s[\"%s\"]' i skalarsammenhæng" -#: debug.c:1280 debug.c:5005 +#: debug.c:1280 debug.c:5051 #, c-format msgid "attempt to use scalar `%s[\"%s\"]' as array" msgstr "forsøg på at bruge skalaren '%s[\"%s\"]' som array" @@ -1773,99 +1796,99 @@ msgstr "" msgid "'until' not meaningful with non-local jump '%s'\n" msgstr "" -#: debug.c:4185 +#: debug.c:4231 msgid "\t------[Enter] to continue or q [Enter] to quit------" msgstr "\t------[Retur] for at fortsætte eller q [Retur] for at afslutte------" -#: debug.c:4186 +#: debug.c:4232 msgid "q" msgstr "q" -#: debug.c:5001 +#: debug.c:5047 #, c-format msgid "[\"%s\"] not in array `%s'" msgstr "[\"%s\"] findes ikke i array '%s'" -#: debug.c:5207 +#: debug.c:5253 #, c-format msgid "sending output to stdout\n" msgstr "sender uddata til stdout\n" -#: debug.c:5247 +#: debug.c:5293 msgid "invalid number" msgstr "ugyldigt nummer" -#: debug.c:5381 +#: debug.c:5427 #, fuzzy, c-format msgid "`%s' not allowed in current context; statement ignored" msgstr "'exit' kan ikke kaldes i den aktuelle kontekst" -#: debug.c:5389 +#: debug.c:5435 msgid "`return' not allowed in current context; statement ignored" msgstr "'returnér' ikke tilladt i den aktuelle kontekst, sætning ignoreret" -#: debug.c:5604 +#: debug.c:5650 #, fuzzy, c-format msgid "No symbol `%s' in current context" msgstr "forsøg på at bruge array '%s' i skalarsammenhæng" -#: dfa.c:1062 dfa.c:1065 dfa.c:1084 dfa.c:1094 dfa.c:1106 dfa.c:1142 -#: dfa.c:1151 dfa.c:1154 dfa.c:1159 dfa.c:1173 dfa.c:1221 +#: dfa.c:1090 dfa.c:1093 dfa.c:1112 dfa.c:1122 dfa.c:1135 dfa.c:1163 dfa.c:1172 +#: dfa.c:1175 dfa.c:1180 dfa.c:1202 dfa.c:1205 msgid "unbalanced [" msgstr "" -#: dfa.c:1118 +#: dfa.c:1148 msgid "invalid character class" msgstr "Ugyldig tegnklasse" -#: dfa.c:1264 +#: dfa.c:1271 msgid "character class syntax is [[:space:]], not [:space:]" msgstr "" -#: dfa.c:1326 +#: dfa.c:1332 msgid "unfinished \\ escape" msgstr "" -#: dfa.c:1473 +#: dfa.c:1499 msgid "invalid content of \\{\\}" msgstr "ugyldigt indhold i \\{\\}" -#: dfa.c:1476 +#: dfa.c:1502 msgid "regular expression too big" msgstr "regulært udtryk for stort" -#: dfa.c:1911 +#: dfa.c:1916 msgid "unbalanced (" msgstr "" -#: dfa.c:2037 +#: dfa.c:2044 msgid "no syntax specified" msgstr "ingen syntaks angivet" -#: dfa.c:2045 +#: dfa.c:2052 msgid "unbalanced )" msgstr "" -#: eval.c:396 +#: eval.c:398 #, c-format msgid "unknown nodetype %d" msgstr "ukendt nodetype %d" -#: eval.c:407 eval.c:421 +#: eval.c:409 eval.c:423 #, c-format msgid "unknown opcode %d" msgstr "ukendt opkode %d" -#: eval.c:418 +#: eval.c:420 #, c-format msgid "opcode %s not an operator or keyword" msgstr "opkode %s er ikke en operator eller et nøgleord" -#: eval.c:474 +#: eval.c:476 msgid "buffer overflow in genflags2str" msgstr "bufferoverløb i genflags2str" -#: eval.c:676 +#: eval.c:678 #, c-format msgid "" "\n" @@ -1876,93 +1899,93 @@ msgstr "" "\t# Funktionskaldsstak:\n" "\n" -#: eval.c:705 +#: eval.c:707 msgid "`IGNORECASE' is a gawk extension" msgstr "'IGNORECASE' er en gawk-udvidelse" -#: eval.c:737 +#: eval.c:739 msgid "`BINMODE' is a gawk extension" msgstr "'BINMODE' er en gawk-udvidelse" -#: eval.c:795 +#: eval.c:797 #, c-format msgid "BINMODE value `%s' is invalid, treated as 3" msgstr "BINMODE værdi '%s' er ugyldig, behandles som 3" -#: eval.c:912 +#: eval.c:914 #, c-format msgid "bad `%sFMT' specification `%s'" msgstr "forkert '%sFMT'-specifikation '%s'" -#: eval.c:996 +#: eval.c:988 msgid "turning off `--lint' due to assignment to `LINT'" msgstr "deaktiverer '--lint' på grund af en tildeling til 'LINT'" -#: eval.c:1174 +#: eval.c:1166 #, c-format msgid "reference to uninitialized argument `%s'" msgstr "reference til ikke-initieret argument '%s'" -#: eval.c:1175 +#: eval.c:1167 #, c-format msgid "reference to uninitialized variable `%s'" msgstr "reference til ikke-initieret variabel '%s'" -#: eval.c:1193 +#: eval.c:1185 msgid "attempt to field reference from non-numeric value" msgstr "forsøg på at referere til et felt fra ikke-numerisk værdi" -#: eval.c:1195 +#: eval.c:1187 msgid "attempt to field reference from null string" msgstr "forsøg på at referere til et felt fra tom streng" -#: eval.c:1203 +#: eval.c:1195 #, c-format msgid "attempt to access field %ld" msgstr "forsøg på at få adgang til felt %ld" -#: eval.c:1212 +#: eval.c:1204 #, c-format msgid "reference to uninitialized field `$%ld'" msgstr "reference til ikke-initieret felt '$%ld'" -#: eval.c:1299 +#: eval.c:1291 #, c-format msgid "function `%s' called with more arguments than declared" msgstr "funktionen '%s' kaldt med flere argumenter end deklareret" -#: eval.c:1506 +#: eval.c:1498 #, c-format msgid "unwind_stack: unexpected type `%s'" msgstr "unwind_stack: uventet type `%s'" -#: eval.c:1602 +#: eval.c:1594 msgid "division by zero attempted in `/='" msgstr "forsøgte at dividere med nul i '/='" -#: eval.c:1609 +#: eval.c:1601 #, c-format msgid "division by zero attempted in `%%='" msgstr "forsøgte at dividere med nul i '%%='" -#: ext.c:65 ext.c:147 +#: ext.c:66 ext.c:148 msgid "extensions are not allowed in sandbox mode" msgstr "udvidelser er ikke tilladt i sandkasse-tilstand" -#: ext.c:68 +#: ext.c:69 msgid "-l / @load are gawk extensions" msgstr "-l / @load er gawk-udvidelser" -#: ext.c:71 +#: ext.c:72 msgid "load_ext: received NULL lib_name" msgstr "" -#: ext.c:74 +#: ext.c:75 #, c-format msgid "load_ext: cannot open library `%s' (%s)\n" msgstr "load_ext: kan ikke åbne bibliotek '%s' (%s)\n" -#: ext.c:80 +#: ext.c:81 #, fuzzy, c-format msgid "" "load_ext: library `%s': does not define `plugin_is_GPL_compatible' (%s)\n" @@ -1970,31 +1993,31 @@ msgstr "" "fatalt: extension: bibliotek '%s': definer ikke " "'plugin_is_GPL_compatible' (%s)\n" -#: ext.c:86 +#: ext.c:87 #, fuzzy, c-format msgid "load_ext: library `%s': cannot call function `%s' (%s)\n" msgstr "" "fatalt: extension: bibliotek '%s': kan ikke kalde funktionen '%s' (%s)\n" -#: ext.c:90 +#: ext.c:91 #, c-format msgid "load_ext: library `%s' initialization routine `%s' failed\n" msgstr "" -#: ext.c:150 +#: ext.c:151 msgid "`extension' is a gawk extension" msgstr "'extension' er en gawk-udvidelse" -#: ext.c:153 +#: ext.c:154 msgid "extension: received NULL lib_name" msgstr "" -#: ext.c:156 +#: ext.c:157 #, fuzzy, c-format msgid "extension: cannot open library `%s' (%s)" msgstr "atalt: extension: kan ikke åbne '%s' (%s)\n" -#: ext.c:162 +#: ext.c:163 #, fuzzy, c-format msgid "" "extension: library `%s': does not define `plugin_is_GPL_compatible' (%s)" @@ -2002,181 +2025,176 @@ msgstr "" "fatalt: extension: bibliotek '%s': definer ikke " "'plugin_is_GPL_compatible' (%s)\n" -#: ext.c:166 +#: ext.c:167 #, fuzzy, c-format msgid "extension: library `%s': cannot call function `%s' (%s)" msgstr "" "fatalt: extension: bibliotek '%s': kan ikke kalde funktionen '%s' (%s)\n" -#: ext.c:197 +#: ext.c:198 #, fuzzy msgid "make_builtin: missing function name" msgstr "extension: mangler funktionsnavn" -#: ext.c:212 +#: ext.c:213 #, fuzzy, c-format msgid "make_builtin: can't redefine function `%s'" msgstr "extension: kan ikke omdefinere funktion '%s'" -#: ext.c:216 +#: ext.c:217 #, fuzzy, c-format msgid "make_builtin: function `%s' already defined" msgstr "extension: funktionen '%s' er allerede defineret" -#: ext.c:220 +#: ext.c:221 #, fuzzy, c-format msgid "make_builtin: function name `%s' previously defined" msgstr "extension: funktionsnavnet '%s' er defineret tidligere" -#: ext.c:222 +#: ext.c:223 #, fuzzy, c-format msgid "make_builtin: can't use gawk built-in `%s' as function name" msgstr "extension: kan ikke bruge gawk's indbyggede '%s' som funktionsnavn" -#: ext.c:225 ext.c:280 +#: ext.c:226 ext.c:281 #, c-format msgid "make_builtin: negative argument count for function `%s'" msgstr "make_builtin: negativt argumentantal for funktion '%s'" -#: ext.c:252 +#: ext.c:253 msgid "extension: missing function name" msgstr "extension: mangler funktionsnavn" -#: ext.c:255 ext.c:259 +#: ext.c:256 ext.c:260 #, c-format msgid "extension: illegal character `%c' in function name `%s'" msgstr "extension: ugyldigt tegn '%c' i funktionsnavn '%s'" -#: ext.c:267 +#: ext.c:268 #, c-format msgid "extension: can't redefine function `%s'" msgstr "extension: kan ikke omdefinere funktion '%s'" -#: ext.c:271 +#: ext.c:272 #, c-format msgid "extension: function `%s' already defined" msgstr "extension: funktionen '%s' er allerede defineret" -#: ext.c:275 +#: ext.c:276 #, c-format msgid "extension: function name `%s' previously defined" msgstr "extension: funktionsnavnet '%s' er defineret tidligere" -#: ext.c:277 +#: ext.c:278 #, c-format msgid "extension: can't use gawk built-in `%s' as function name" msgstr "extension: kan ikke bruge gawk's indbyggede '%s' som funktionsnavn" -#: ext.c:351 -#, c-format -msgid "function `%s' defined to take no more than %d argument(s)" -msgstr "funktionen '%s' defineret til at tage ikke mere end %d argumenter" - -#: ext.c:354 -#, c-format -msgid "function `%s': missing argument #%d" -msgstr "funktion '%s': mangler argument nummer %d" - -#: ext.c:371 +#: ext.c:358 #, c-format msgid "function `%s': argument #%d: attempt to use scalar as an array" msgstr "" "funktion '%s': argument nummer %d: forsøg på at bruge skalar som et array" -#: ext.c:375 +#: ext.c:362 #, c-format msgid "function `%s': argument #%d: attempt to use array as a scalar" msgstr "" "funktion '%s': argument nummer %d: forsøg på at bruge array som en skalar" -#: ext.c:389 +#: ext.c:376 msgid "dynamic loading of library not supported" msgstr "" -#: extension/filefuncs.c:159 +#: extension/filefuncs.c:164 #, fuzzy msgid "chdir: called with incorrect number of arguments, expecting 1" msgstr "sqrt: kaldt med negativt argument %g" -#: extension/filefuncs.c:439 +#: extension/filefuncs.c:444 #, c-format msgid "stat: unable to read symbolic link `%s'" msgstr "" -#: extension/filefuncs.c:472 +#: extension/filefuncs.c:477 #, fuzzy msgid "stat: called with wrong number of arguments" msgstr "sqrt: kaldt med negativt argument %g" -#: extension/filefuncs.c:479 +#: extension/filefuncs.c:484 extension/filefuncs.c:534 #, fuzzy msgid "stat: bad parameters" msgstr "%s: er parameter\n" -#: extension/filefuncs.c:533 +#: extension/filefuncs.c:527 +#, fuzzy +msgid "statvfs: called with wrong number of arguments" +msgstr "sqrt: kaldt med negativt argument %g" + +#: extension/filefuncs.c:598 #, c-format msgid "fts init: could not create variable %s" msgstr "" -#: extension/filefuncs.c:554 +#: extension/filefuncs.c:619 #, fuzzy msgid "fts is not supported on this system" msgstr "'%s' understøttes ikke i gamle versioner af awk" -#: extension/filefuncs.c:573 +#: extension/filefuncs.c:638 msgid "fill_stat_element: could not create array" msgstr "" -#: extension/filefuncs.c:582 +#: extension/filefuncs.c:647 msgid "fill_stat_element: could not set element" msgstr "" -#: extension/filefuncs.c:597 +#: extension/filefuncs.c:662 msgid "fill_path_element: could not set element" msgstr "" -#: extension/filefuncs.c:613 +#: extension/filefuncs.c:678 msgid "fill_error_element: could not set element" msgstr "" -#: extension/filefuncs.c:660 extension/filefuncs.c:707 +#: extension/filefuncs.c:725 extension/filefuncs.c:772 msgid "fts-process: could not create array" msgstr "" -#: extension/filefuncs.c:670 extension/filefuncs.c:717 -#: extension/filefuncs.c:735 +#: extension/filefuncs.c:735 extension/filefuncs.c:782 +#: extension/filefuncs.c:800 msgid "fts-process: could not set element" msgstr "" -#: extension/filefuncs.c:784 +#: extension/filefuncs.c:849 #, fuzzy msgid "fts: called with incorrect number of arguments, expecting 3" msgstr "sqrt: kaldt med negativt argument %g" -#: extension/filefuncs.c:787 +#: extension/filefuncs.c:852 #, fuzzy msgid "fts: bad first parameter" msgstr "%s: er parameter\n" -#: extension/filefuncs.c:793 +#: extension/filefuncs.c:858 #, fuzzy msgid "fts: bad second parameter" msgstr "%s: er parameter\n" -#: extension/filefuncs.c:799 +#: extension/filefuncs.c:864 #, fuzzy msgid "fts: bad third parameter" msgstr "%s: er parameter\n" -#: extension/filefuncs.c:806 +#: extension/filefuncs.c:871 msgid "fts: could not flatten array\n" msgstr "" -#: extension/filefuncs.c:824 +#: extension/filefuncs.c:889 msgid "fts: ignoring sneaky FTS_NOSTAT flag. nyah, nyah, nyah." msgstr "" -#: extension/filefuncs.c:841 +#: extension/filefuncs.c:906 msgid "fts: clear_array() failed\n" msgstr "" @@ -2245,88 +2263,88 @@ msgstr "sqrt: kaldt med negativt argument %g" msgid "wait: called with too many arguments" msgstr "sqrt: kaldt med negativt argument %g" -#: extension/inplace.c:130 +#: extension/inplace.c:131 msgid "inplace_begin: in-place editing already active" msgstr "" -#: extension/inplace.c:133 extension/inplace.c:210 +#: extension/inplace.c:134 extension/inplace.c:211 #, c-format msgid "inplace_begin: expects 2 arguments but called with %d" msgstr "" -#: extension/inplace.c:136 +#: extension/inplace.c:137 msgid "inplace_begin: cannot retrieve 1st argument as a string filename" msgstr "" -#: extension/inplace.c:144 +#: extension/inplace.c:145 #, c-format msgid "inplace_begin: disabling in-place editing for invalid FILENAME `%s'" msgstr "" -#: extension/inplace.c:151 +#: extension/inplace.c:152 #, fuzzy, c-format msgid "inplace_begin: Cannot stat `%s' (%s)" msgstr "atalt: extension: kan ikke åbne '%s' (%s)\n" -#: extension/inplace.c:158 +#: extension/inplace.c:159 #, c-format msgid "inplace_begin: `%s' is not a regular file" msgstr "" -#: extension/inplace.c:169 +#: extension/inplace.c:170 #, c-format msgid "inplace_begin: mkstemp(`%s') failed (%s)" msgstr "" -#: extension/inplace.c:181 +#: extension/inplace.c:182 #, fuzzy, c-format msgid "inplace_begin: chmod failed (%s)" msgstr "%s: lukning mislykkedes (%s)" -#: extension/inplace.c:188 +#: extension/inplace.c:189 #, c-format msgid "inplace_begin: dup(stdout) failed (%s)" msgstr "" -#: extension/inplace.c:191 +#: extension/inplace.c:192 #, c-format msgid "inplace_begin: dup2(%d, stdout) failed (%s)" msgstr "" -#: extension/inplace.c:194 +#: extension/inplace.c:195 #, fuzzy, c-format msgid "inplace_begin: close(%d) failed (%s)" msgstr "%s: lukning mislykkedes (%s)" -#: extension/inplace.c:213 +#: extension/inplace.c:214 msgid "inplace_end: cannot retrieve 1st argument as a string filename" msgstr "" -#: extension/inplace.c:220 +#: extension/inplace.c:221 msgid "inplace_end: in-place editing not active" msgstr "" -#: extension/inplace.c:226 +#: extension/inplace.c:227 #, c-format msgid "inplace_end: dup2(%d, stdout) failed (%s)" msgstr "" -#: extension/inplace.c:229 +#: extension/inplace.c:230 #, fuzzy, c-format msgid "inplace_end: close(%d) failed (%s)" msgstr "%s: lukning mislykkedes (%s)" -#: extension/inplace.c:233 +#: extension/inplace.c:234 #, c-format msgid "inplace_end: fsetpos(stdout) failed (%s)" msgstr "" -#: extension/inplace.c:246 +#: extension/inplace.c:247 #, fuzzy, c-format msgid "inplace_end: link(`%s', `%s') failed (%s)" msgstr "datakanalsrensning af '%s' mislykkedes (%s)." -#: extension/inplace.c:256 +#: extension/inplace.c:257 #, fuzzy, c-format msgid "inplace_end: rename(`%s', `%s') failed (%s)" msgstr "lukning af fd %d ('%s') mislykkedes (%s)" @@ -2361,7 +2379,7 @@ msgstr "sqrt: kaldt med negativt argument %g" msgid "chr: called with inappropriate argument(s)" msgstr "sqrt: kaldt med negativt argument %g" -#: extension/readdir.c:281 +#: extension/readdir.c:271 #, c-format msgid "dir_take_control_of: opendir/fdopendir failed: %s" msgstr "" @@ -2376,56 +2394,56 @@ msgstr "sqrt: kaldt med negativt argument %g" msgid "readfile: called with no arguments" msgstr "sqrt: kaldt med negativt argument %g" -#: extension/revoutput.c:125 +#: extension/revoutput.c:127 msgid "revoutput: could not initialize REVOUT variable" msgstr "" -#: extension/rwarray.c:124 extension/rwarray0.c:109 +#: extension/rwarray.c:113 extension/rwarray0.c:109 #, fuzzy msgid "writea: called with too many arguments" msgstr "sqrt: kaldt med negativt argument %g" -#: extension/rwarray.c:131 extension/rwarray0.c:116 +#: extension/rwarray.c:120 extension/rwarray0.c:116 #, fuzzy, c-format msgid "do_writea: argument 0 is not a string\n" msgstr "exp: argumentet %g er uden for det tilladte område" -#: extension/rwarray.c:137 extension/rwarray0.c:122 +#: extension/rwarray.c:126 extension/rwarray0.c:122 #, fuzzy, c-format msgid "do_writea: argument 1 is not an array\n" msgstr "split: fjerde argument er ikke et array" -#: extension/rwarray.c:184 extension/rwarray0.c:169 +#: extension/rwarray.c:173 extension/rwarray0.c:169 #, c-format msgid "write_array: could not flatten array\n" msgstr "" -#: extension/rwarray.c:198 extension/rwarray0.c:183 +#: extension/rwarray.c:187 extension/rwarray0.c:183 #, c-format msgid "write_array: could not release flattened array\n" msgstr "" -#: extension/rwarray.c:280 extension/rwarray0.c:265 +#: extension/rwarray.c:269 extension/rwarray0.c:265 #, fuzzy msgid "reada: called with too many arguments" msgstr "sqrt: kaldt med negativt argument %g" -#: extension/rwarray.c:287 extension/rwarray0.c:272 +#: extension/rwarray.c:276 extension/rwarray0.c:272 #, fuzzy, c-format msgid "do_reada: argument 0 is not a string\n" msgstr "exp: argumentet %g er uden for det tilladte område" -#: extension/rwarray.c:293 extension/rwarray0.c:278 +#: extension/rwarray.c:282 extension/rwarray0.c:278 #, fuzzy, c-format msgid "do_reada: argument 1 is not an array\n" msgstr "adump: argument er ikke et array" -#: extension/rwarray.c:337 extension/rwarray0.c:322 +#: extension/rwarray.c:326 extension/rwarray0.c:322 #, c-format msgid "do_reada: clear_array failed\n" msgstr "" -#: extension/rwarray.c:374 extension/rwarray0.c:358 +#: extension/rwarray.c:363 extension/rwarray0.c:358 #, c-format msgid "read_array: set_array_element failed\n" msgstr "" @@ -2535,7 +2553,7 @@ msgstr "tom streng som 'FS' er en gawk-udvidelse" msgid "old awk does not support regexps as value of `FS'" msgstr "gamle versioner af awk understøtter ikke regexp'er som værdi for 'FS'" -#: field.c:1380 +#: field.c:1384 msgid "`FPAT' is a gawk extension" msgstr "'FPAT' er en gawk-udvidelse" @@ -2543,29 +2561,29 @@ msgstr "'FPAT' er en gawk-udvidelse" msgid "awk_value_to_node: received null retval" msgstr "" -#: gawkapi.c:384 +#: gawkapi.c:383 msgid "node_to_awk_value: received null node" msgstr "" -#: gawkapi.c:387 +#: gawkapi.c:386 msgid "node_to_awk_value: received null val" msgstr "" -#: gawkapi.c:809 +#: gawkapi.c:808 #, fuzzy msgid "remove_element: received null array" msgstr "length: fik et array-argument" -#: gawkapi.c:812 +#: gawkapi.c:811 msgid "remove_element: received null subscript" msgstr "" -#: gawkapi.c:949 +#: gawkapi.c:948 #, c-format msgid "api_flatten_array: could not convert index %d\n" msgstr "" -#: gawkapi.c:954 +#: gawkapi.c:953 #, c-format msgid "api_flatten_array: could not convert value %d\n" msgstr "" @@ -2625,485 +2643,492 @@ msgstr "%s: flaget '-W %s' tillader ikke noget argument\n" msgid "%s: option '-W %s' requires an argument\n" msgstr "%s: flaget '-W %s' kræver et argument\n" -#: io.c:423 +#: io.c:426 #, c-format msgid "command line argument `%s' is a directory: skipped" msgstr "kommandolinjeargument '%s' er et katalog, oversprunget" -#: io.c:426 io.c:544 +#: io.c:429 io.c:547 #, c-format msgid "cannot open file `%s' for reading (%s)" msgstr "kan ikke åbne filen '%s' for læsning (%s)" -#: io.c:671 +#: io.c:674 #, c-format msgid "close of fd %d (`%s') failed (%s)" msgstr "lukning af fd %d ('%s') mislykkedes (%s)" -#: io.c:749 +#: io.c:752 msgid "redirection not allowed in sandbox mode" msgstr "omdirigering ikke tilladt i sandkasse-tilstand" -#: io.c:783 +#: io.c:786 #, c-format msgid "expression in `%s' redirection only has numeric value" msgstr "udtrykket i '%s'-omdirigering har kun numerisk værdi" -#: io.c:789 +#: io.c:792 #, 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:794 +#: io.c:797 #, 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:842 +#: io.c:845 #, c-format msgid "unnecessary mixing of `>' and `>>' for file `%.*s'" msgstr "unødig blanding af '>' og '>>' for filen '%.*s'" -#: io.c:896 +#: io.c:902 #, c-format msgid "can't open pipe `%s' for output (%s)" msgstr "kan ikke åbne datakanalen '%s' for udskrivning (%s)" -#: io.c:906 +#: io.c:915 #, c-format msgid "can't open pipe `%s' for input (%s)" msgstr "kan ikke åbne datakanalen '%s' for indtastning (%s)" -#: io.c:937 +#: io.c:946 #, c-format msgid "can't open two way pipe `%s' for input/output (%s)" msgstr "kan ikke åbne tovejsdatakanalen '%s' for ind-/uddata (%s)" -#: io.c:1019 +#: io.c:1030 #, c-format msgid "can't redirect from `%s' (%s)" msgstr "kan ikke omdirigere fra '%s' (%s)" -#: io.c:1022 +#: io.c:1033 #, c-format msgid "can't redirect to `%s' (%s)" msgstr "kan ikke omdirigere til '%s' (%s)" -#: io.c:1073 +#: io.c:1084 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:1089 +#: io.c:1100 #, c-format msgid "close of `%s' failed (%s)." msgstr "lukning af '%s' mislykkedes (%s)." -#: io.c:1097 +#: io.c:1108 msgid "too many pipes or input files open" msgstr "for mange datakanaler eller inddatafiler åbne" -#: io.c:1119 +#: io.c:1130 msgid "close: second argument must be `to' or `from'" msgstr "close: andet argument skal være 'to' eller 'from'" -#: io.c:1136 +#: io.c:1147 #, 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:1141 +#: io.c:1152 msgid "close of redirection that was never opened" msgstr "lukning af omdirigering som aldrig blev åbnet" -#: io.c:1238 +#: io.c:1249 #, c-format msgid "close: redirection `%s' not opened with `|&', second argument ignored" msgstr "" "close: omdirigeringen '%s' blev ikke åbnet med '|&', andet argument ignoreret" -#: io.c:1255 +#: io.c:1266 #, c-format msgid "failure status (%d) on pipe close of `%s' (%s)" msgstr "fejlstatus (%d) fra lukning af datakanalen '%s' (%s)" -#: io.c:1258 +#: io.c:1269 #, c-format msgid "failure status (%d) on file close of `%s' (%s)" msgstr "fejlstatus (%d) fra fillukning af '%s' (%s)" -#: io.c:1278 +#: io.c:1289 #, c-format msgid "no explicit close of socket `%s' provided" msgstr "ingen eksplicit lukning af soklen '%s' angivet" -#: io.c:1281 +#: io.c:1292 #, c-format msgid "no explicit close of co-process `%s' provided" msgstr "ingen eksplicit lukning af ko-processen '%s' angivet" -#: io.c:1284 +#: io.c:1295 #, c-format msgid "no explicit close of pipe `%s' provided" msgstr "ingen eksplicit lukning af datakanalen '%s' angivet" -#: io.c:1287 +#: io.c:1298 #, c-format msgid "no explicit close of file `%s' provided" msgstr "ingen eksplicit lukning af filen '%s' angivet" -#: io.c:1317 io.c:1375 main.c:632 main.c:674 +#: io.c:1328 io.c:1387 main.c:645 main.c:687 #, c-format msgid "error writing standard output (%s)" msgstr "fejl ved skrivning til standard ud (%s)" -#: io.c:1322 io.c:1381 main.c:634 +#: io.c:1333 io.c:1393 main.c:647 #, c-format msgid "error writing standard error (%s)" msgstr "fejl ved skrivning til standard fejl (%s)" -#: io.c:1330 +#: io.c:1341 #, c-format msgid "pipe flush of `%s' failed (%s)." msgstr "datakanalsrensning af '%s' mislykkedes (%s)." -#: io.c:1333 +#: io.c:1344 #, c-format msgid "co-process flush of pipe to `%s' failed (%s)." msgstr "ko-procesrensning af datakanalen til '%s' mislykkedes (%s)." -#: io.c:1336 +#: io.c:1347 #, c-format msgid "file flush of `%s' failed (%s)." msgstr "filrensning af '%s' mislykkedes (%s)." -#: io.c:1453 +#: io.c:1465 #, c-format msgid "local port %s invalid in `/inet'" msgstr "lokal port %s ugyldig i '/inet'" -#: io.c:1471 +#: io.c:1483 #, c-format msgid "remote host and port information (%s, %s) invalid" msgstr "fjernvært og portinformation (%s, %s) ugyldige" -#: io.c:1699 +#: io.c:1711 msgid "TCP/IP communications are not supported" msgstr "TCP/IP-kommunikation understøttes ikke" -#: io.c:1880 +#: io.c:1905 #, c-format msgid "could not open `%s', mode `%s'" msgstr "kunne ikke åbne '%s', tilstand '%s'" -#: io.c:1930 +#: io.c:1961 #, c-format msgid "close of master pty failed (%s)" msgstr "lukning af master-pty mislykkedes (%s)" -#: io.c:1932 io.c:2118 io.c:2319 +#: io.c:1963 io.c:2141 io.c:2342 #, c-format msgid "close of stdout in child failed (%s)" msgstr "lukning af standard ud i underproces mislykkedes (%s)" -#: io.c:1935 +#: io.c:1966 #, c-format msgid "moving slave pty to stdout in child failed (dup: %s)" msgstr "" "flytning af slave-pty til standard ud i underproces mislykkedes (dup: %s)" -#: io.c:1937 io.c:2123 +#: io.c:1968 io.c:2146 #, c-format msgid "close of stdin in child failed (%s)" msgstr "lukning af standard ind i underproces mislykkedes (%s)" -#: io.c:1940 +#: io.c:1971 #, c-format msgid "moving slave pty to stdin in child failed (dup: %s)" msgstr "" "flytning af slave-pty til standard ind i underproces mislykkedes (dup: %s)" -#: io.c:1942 io.c:1964 +#: io.c:1973 #, c-format msgid "close of slave pty failed (%s)" msgstr "lukning af slave-pty mislykkedes (%s)" -#: io.c:2053 io.c:2121 io.c:2290 io.c:2322 +#: io.c:2076 io.c:2144 io.c:2313 io.c:2345 #, c-format msgid "moving pipe to stdout in child failed (dup: %s)" msgstr "" "flytning af datakanal til standard ud i underproces mislykkedes (dup: %s)" -#: io.c:2060 io.c:2126 +#: io.c:2083 io.c:2149 #, c-format msgid "moving pipe to stdin in child failed (dup: %s)" msgstr "" "flytning af datakanalen til standard ind i underproces mislykkedes (dup: %s)" -#: io.c:2086 io.c:2312 +#: io.c:2109 io.c:2335 msgid "restoring stdout in parent process failed\n" msgstr "genskabelse af standard ud i forælderprocessen mislykkedes\n" -#: io.c:2094 +#: io.c:2117 msgid "restoring stdin in parent process failed\n" msgstr "genskabelse af standard ind i forælderprocessen mislykkedes\n" -#: io.c:2129 io.c:2324 io.c:2339 +#: io.c:2152 io.c:2347 io.c:2362 #, c-format msgid "close of pipe failed (%s)" msgstr "lukning af datakanalen mislykkedes (%s)" -#: io.c:2188 +#: io.c:2211 msgid "`|&' not supported" msgstr "'|&' understøttes ikke" -#: io.c:2275 +#: io.c:2298 #, c-format msgid "cannot open pipe `%s' (%s)" msgstr "kan ikke åbne datakanalen '%s' (%s)" -#: io.c:2333 +#: io.c:2356 #, c-format msgid "cannot create child process for `%s' (fork: %s)" msgstr "kan ikke oprette barneproces for '%s' (fork: %s)" -#: io.c:2760 +#: io.c:2493 +msgid "getline: attempt to read from closed read end of two-way pipe" +msgstr "" + +#: io.c:2795 msgid "register_input_parser: received NULL pointer" msgstr "" -#: io.c:2788 +#: io.c:2823 #, c-format msgid "input parser `%s' conflicts with previously installed input parser `%s'" msgstr "" -#: io.c:2795 +#: io.c:2830 #, c-format msgid "input parser `%s' failed to open `%s'" msgstr "" -#: io.c:2815 +#: io.c:2850 msgid "register_output_wrapper: received NULL pointer" msgstr "" -#: io.c:2843 +#: io.c:2878 #, c-format msgid "" "output wrapper `%s' conflicts with previously installed output wrapper `%s'" msgstr "" -#: io.c:2850 +#: io.c:2885 #, c-format msgid "output wrapper `%s' failed to open `%s'" msgstr "" -#: io.c:2871 +#: io.c:2906 msgid "register_output_processor: received NULL pointer" msgstr "" -#: io.c:2900 +#: io.c:2935 #, c-format msgid "" "two-way processor `%s' conflicts with previously installed two-way processor " "`%s'" msgstr "" -#: io.c:2909 +#: io.c:2944 #, c-format msgid "two way processor `%s' failed to open `%s'" msgstr "" -#: io.c:3034 +#: io.c:3069 #, c-format msgid "data file `%s' is empty" msgstr "datafilen '%s' er tom" -#: io.c:3076 io.c:3084 +#: io.c:3111 io.c:3119 msgid "could not allocate more input memory" msgstr "kunne ikke allokere mere hukommelse til inddata" -#: io.c:3662 +#: io.c:3697 msgid "multicharacter value of `RS' is a gawk extension" msgstr "'RS' som flertegnsværdi er en gawk-udvidelse" -#: io.c:3809 +#: io.c:3844 msgid "IPv6 communication is not supported" msgstr "IPv6-kommunikation understøttes ikke" -#: main.c:321 +#: main.c:334 msgid "environment variable `POSIXLY_CORRECT' set: turning on `--posix'" msgstr "miljøvariablen 'POSIXLY_CORRECT' sat: aktiverer '--posix'" -#: main.c:327 +#: main.c:340 msgid "`--posix' overrides `--traditional'" msgstr "'--posix' tilsidesætter '--traditional'" -#: main.c:338 +#: main.c:351 msgid "`--posix'/`--traditional' overrides `--non-decimal-data'" msgstr "'--posix'/'--traditional' tilsidesætter '--non-decimal-data'" -#: main.c:342 +#: main.c:355 #, 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:346 +#: main.c:359 #, fuzzy msgid "`--posix' overrides `--characters-as-bytes'" msgstr "'--posix' tilsidesætter '--binary'" -#: main.c:404 +#: main.c:417 #, c-format msgid "can't set binary mode on stdin (%s)" msgstr "kan ikke sætte binær tilstand på standard ind (%s)" -#: main.c:407 +#: main.c:420 #, c-format msgid "can't set binary mode on stdout (%s)" msgstr "kan ikke sætte binær tilstand på standard ud (%s)" -#: main.c:409 +#: main.c:422 #, c-format msgid "can't set binary mode on stderr (%s)" msgstr "kan ikke sætte binær tilstand på standard fejl (%s)" -#: main.c:469 +#: main.c:482 msgid "no program text at all!" msgstr "ingen programtekst overhovedet!" -#: main.c:563 +#: main.c:576 #, c-format msgid "Usage: %s [POSIX or GNU style options] -f progfile [--] file ...\n" msgstr "Brug: %s [flag i POSIX- eller GNU-stil] -f progfil [--] fil ...\n" -#: main.c:565 +#: main.c:578 #, c-format msgid "Usage: %s [POSIX or GNU style options] [--] %cprogram%c file ...\n" msgstr "Brug: %s [flag i POSIX- eller GNU-stil] %cprogram%c fil ...\n" -#: main.c:570 +#: main.c:583 msgid "POSIX options:\t\tGNU long options: (standard)\n" msgstr "POSIX-flag:\t\tlange GNU-flag: (standard)\n" -#: main.c:571 +#: main.c:584 msgid "\t-f progfile\t\t--file=progfile\n" msgstr "\t-f progfil\t\t--file=progfil\n" -#: main.c:572 +#: main.c:585 msgid "\t-F fs\t\t\t--field-separator=fs\n" msgstr "\t-F fs\t\t\t--field-separator=fs\n" -#: main.c:573 +#: main.c:586 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:574 +#: main.c:587 msgid "Short options:\t\tGNU long options: (extensions)\n" msgstr "POSIX-flag:\t\tlange GNU-flag: (udvidelser)\n" -#: main.c:575 +#: main.c:588 msgid "\t-b\t\t\t--characters-as-bytes\n" msgstr "\t-b\t\t\t--characters-as-bytes\n" -#: main.c:576 +#: main.c:589 msgid "\t-c\t\t\t--traditional\n" msgstr "\t-c\t\t\t--traditional\n" -#: main.c:577 +#: main.c:590 msgid "\t-C\t\t\t--copyright\n" msgstr "\t-C\t\t\t--copyright\n" -#: main.c:578 +#: main.c:591 msgid "\t-d[file]\t\t--dump-variables[=file]\n" msgstr "\t-d[fil]\t\t--dump-variables[=fil]\n" -#: main.c:579 +#: main.c:592 #, fuzzy msgid "\t-D[file]\t\t--debug[=file]\n" msgstr "\t-p[fil]\t\t--profile[=fil]\n" -#: main.c:580 +#: main.c:593 msgid "\t-e 'program-text'\t--source='program-text'\n" msgstr "\t-e 'programtekst'\t--source='programtekst'\n" -#: main.c:581 +#: main.c:594 msgid "\t-E file\t\t\t--exec=file\n" msgstr "\t-E fil\t\t\t--exec=fil\n" -#: main.c:582 +#: main.c:595 msgid "\t-g\t\t\t--gen-pot\n" msgstr "\t-g\t\t\t--gen-pot\n" -#: main.c:583 +#: main.c:596 msgid "\t-h\t\t\t--help\n" msgstr "\t-h\t\t\t--help\n" -#: main.c:584 +#: main.c:597 msgid "\t-i includefile\t\t--include=includefile\n" msgstr "" -#: main.c:585 +#: main.c:598 msgid "\t-l library\t\t--load=library\n" msgstr "" -#: main.c:590 +#. TRANSLATORS: the "fatal" and "invalid" here are literal +#. values, they should not be translated. Thanks. +#. +#: main.c:603 #, fuzzy msgid "\t-L[fatal|invalid]\t--lint[=fatal|invalid]\n" msgstr "\t-L [fatal]\t\t--lint[=fatal]\n" -#: main.c:591 +#: main.c:604 #, fuzzy msgid "\t-M\t\t\t--bignum\n" msgstr "\t-g\t\t\t--gen-pot\n" -#: main.c:592 +#: main.c:605 msgid "\t-N\t\t\t--use-lc-numeric\n" msgstr "\t-N\t\t\t--use-lc-numeric\n" -#: main.c:593 +#: main.c:606 msgid "\t-n\t\t\t--non-decimal-data\n" msgstr "\t-n\t\t\t--non-decimal-data\n" -#: main.c:594 +#: main.c:607 #, fuzzy msgid "\t-o[file]\t\t--pretty-print[=file]\n" msgstr "\t-p[fil]\t\t--profile[=fil]\n" -#: main.c:595 +#: main.c:608 msgid "\t-O\t\t\t--optimize\n" msgstr "\t-O\t\t\t--optimize\n" -#: main.c:596 +#: main.c:609 msgid "\t-p[file]\t\t--profile[=file]\n" msgstr "\t-p[fil]\t\t--profile[=fil]\n" -#: main.c:597 +#: main.c:610 msgid "\t-P\t\t\t--posix\n" msgstr "\t-P\t\t\t--posix\n" -#: main.c:598 +#: main.c:611 msgid "\t-r\t\t\t--re-interval\n" msgstr "\t-r\t\t\t--re-interval\n" -#: main.c:599 +#: main.c:612 msgid "\t-S\t\t\t--sandbox\n" msgstr "\t-S\t\t\t--sandbox\n" -#: main.c:600 +#: main.c:613 msgid "\t-t\t\t\t--lint-old\n" msgstr "\t-t\t\t\t--lint-old\n" -#: main.c:601 +#: main.c:614 msgid "\t-V\t\t\t--version\n" msgstr "\t-V\t\t\t--version\n" -#: main.c:603 +#: main.c:616 msgid "\t-W nostalgia\t\t--nostalgia\n" msgstr "\t-W nostalgia\t\t--nostalgia\n" -#: main.c:606 +#: main.c:619 msgid "\t-Y\t\t--parsedebug\n" msgstr "\t-Y\t\t--parsedebug\n" @@ -3112,7 +3137,7 @@ msgstr "\t-Y\t\t--parsedebug\n" #. for this application. Please add _another line_ with the #. address for translation bugs. #. no-wrap -#: main.c:615 +#: main.c:628 msgid "" "\n" "To report bugs, see node `Bugs' in `gawk.info', which is\n" @@ -3125,7 +3150,7 @@ msgstr "" "\n" "Rapportér kommentarer til oversættelsen til .\n" -#: main.c:619 +#: main.c:632 msgid "" "gawk is a pattern scanning and processing language.\n" "By default it reads standard input and writes standard output.\n" @@ -3135,7 +3160,7 @@ msgstr "" "Almindeligvis læser gawk fra standard ind og skriver til standard ud.\n" "\n" -#: main.c:623 +#: main.c:636 msgid "" "Examples:\n" "\tgawk '{ sum += $1 }; END { print sum }' file\n" @@ -3145,7 +3170,7 @@ msgstr "" "\tgawk '{ sum += $1 }; END { print sum }' fil\n" "\tgawk -F: '{ print $1 }' /etc/passwd\n" -#: main.c:648 +#: main.c:661 #, c-format msgid "" "Copyright (C) 1989, 1991-%d Free Software Foundation.\n" @@ -3165,7 +3190,7 @@ msgstr "" "enhver senere version.\n" "\n" -#: main.c:656 +#: main.c:669 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" @@ -3179,7 +3204,7 @@ msgstr "" "General Public License for yderligere information.\n" "\n" -#: main.c:662 +#: main.c:675 msgid "" "You should have received a copy of the GNU General Public License\n" "along with this program. If not, see http://www.gnu.org/licenses/.\n" @@ -3187,16 +3212,16 @@ msgstr "" "Du bør have fået en kopi af GNU General Public License sammen\n" "med dette program. Hvis ikke, så se http://www.gnu.org/licenses/.\n" -#: main.c:699 +#: main.c:712 msgid "-Ft does not set FS to tab in POSIX awk" msgstr "-Ft sætter ikke FS til tab i POSIX-awk" -#: main.c:986 +#: main.c:999 #, c-format msgid "unknown value for field spec: %d\n" msgstr "ukendt værdi for felt-spec: %d\n" -#: main.c:1084 +#: main.c:1097 #, c-format msgid "" "%s: `%s' argument to `-v' not in `var=value' form\n" @@ -3205,120 +3230,120 @@ msgstr "" "%s: '%s' argument til '-v' ikke på formen 'var=værdi'\n" "\n" -#: main.c:1110 +#: main.c:1123 #, c-format msgid "`%s' is not a legal variable name" msgstr "'%s' er ikke et gyldigt variabelnavn" -#: main.c:1113 +#: main.c:1126 #, c-format msgid "`%s' is not a variable name, looking for file `%s=%s'" msgstr "'%s' er ikke et variabelnavn, leder efter fil '%s=%s'" -#: main.c:1117 +#: main.c:1130 #, c-format msgid "cannot use gawk builtin `%s' as variable name" msgstr "kan ikke bruge gawk's indbyggede '%s' som variabelnavn" -#: main.c:1122 +#: main.c:1135 #, c-format msgid "cannot use function `%s' as variable name" msgstr "kan ikke bruge funktion '%s' som variabelnavn" -#: main.c:1175 +#: main.c:1190 msgid "floating point exception" msgstr "flydendetalsundtagelse" -#: main.c:1182 +#: main.c:1197 msgid "fatal error: internal error" msgstr "fatal fejl: intern fejl" -#: main.c:1197 +#: main.c:1212 msgid "fatal error: internal error: segfault" msgstr "fatal fejl: intern fejl: segmentfejl" -#: main.c:1209 +#: main.c:1224 msgid "fatal error: internal error: stack overflow" msgstr "fatal fejl: intern fejl: stakoverløb" -#: main.c:1268 +#: main.c:1283 #, c-format msgid "no pre-opened fd %d" msgstr "ingen fd %d åbnet i forvejen" -#: main.c:1275 +#: main.c:1290 #, c-format msgid "could not pre-open /dev/null for fd %d" msgstr "kunne ikke i forvejen åbne /dev/null for fd %d" -#: main.c:1489 +#: main.c:1504 msgid "empty argument to `-e/--source' ignored" msgstr "tomt argument til '-e/--source' ignoreret" -#: main.c:1560 +#: main.c:1575 msgid "-M ignored: MPFR/GMP support not compiled in" msgstr "" -#: main.c:1581 +#: main.c:1596 #, c-format msgid "%s: option `-W %s' unrecognized, ignored\n" msgstr "%s: flaget '-W %s' ukendt, ignoreret\n" -#: main.c:1634 +#: main.c:1649 #, c-format msgid "%s: option requires an argument -- %c\n" msgstr "%s: flaget kræver et argument -- %c\n" -#: mpfr.c:557 +#: mpfr.c:559 #, fuzzy, c-format msgid "PREC value `%.*s' is invalid" msgstr "BINMODE værdi '%s' er ugyldig, behandles som 3" -#: mpfr.c:615 +#: mpfr.c:617 #, fuzzy, c-format msgid "RNDMODE value `%.*s' is invalid" msgstr "BINMODE værdi '%s' er ugyldig, behandles som 3" -#: mpfr.c:711 +#: mpfr.c:714 #, fuzzy, c-format msgid "%s: received non-numeric argument" msgstr "cos: fik et ikke-numerisk argument" -#: mpfr.c:820 +#: mpfr.c:824 #, fuzzy msgid "compl(%Rg): negative value will give strange results" msgstr "compl(%lf): negative værdier vil give mærkelige resultater" -#: mpfr.c:824 +#: mpfr.c:828 #, fuzzy msgid "comp(%Rg): fractional value will be truncated" msgstr "compl(%lf): kommatalsværdier vil blive trunkeret" -#: mpfr.c:836 +#: mpfr.c:840 #, fuzzy, c-format msgid "cmpl(%Zd): negative values will give strange results" msgstr "compl(%lf): negative værdier vil give mærkelige resultater" -#: mpfr.c:855 +#: mpfr.c:859 #, fuzzy, c-format msgid "%s: received non-numeric argument #%d" msgstr "cos: fik et ikke-numerisk argument" -#: mpfr.c:865 +#: mpfr.c:869 msgid "%s: argument #%d has invalid value %Rg, using 0" msgstr "" -#: mpfr.c:877 +#: mpfr.c:881 #, fuzzy msgid "%s: argument #%d negative value %Rg will give strange results" msgstr "and(%lf, %lf): negative værdier vil give mærkelige resultater" -#: mpfr.c:883 +#: mpfr.c:887 #, fuzzy msgid "%s: argument #%d fractional value %Rg will be truncated" msgstr "and(%lf, %lf): kommatalsværdier vil blive trunkeret" -#: mpfr.c:898 +#: mpfr.c:902 #, fuzzy, c-format msgid "%s: argument #%d negative value %Zd will give strange results" msgstr "and(%lf, %lf): negative værdier vil give mærkelige resultater" @@ -3328,24 +3353,24 @@ msgstr "and(%lf, %lf): negative v msgid "cmd. line:" msgstr "kommandolinje:" -#: node.c:418 +#: node.c:434 msgid "backslash at end of string" msgstr "omvendt skråstreg i slutningen af strengen" -#: node.c:497 +#: node.c:513 #, c-format msgid "old awk does not support the `\\%c' escape sequence" msgstr "gamle versioner af awk understøtter ikke '\\%c' undvigesekvens" -#: node.c:548 +#: node.c:564 msgid "POSIX does not allow `\\x' escapes" msgstr "POSIX tillader ikke '\\x'-kontrolsekvenser" -#: node.c:554 +#: node.c:570 msgid "no hex digits in `\\x' escape sequence" msgstr "ingen heksadecimale cifre i '\\x'-kontrolsekvenser" -#: node.c:576 +#: node.c:592 #, c-format msgid "" "hex escape \\x%.*s of %d characters probably not interpreted the way you " @@ -3354,12 +3379,12 @@ msgstr "" "den heksadecimale sekvens \\x%.*s på %d tegn nok ikke forstået som du " "forventer det" -#: node.c:591 +#: node.c:607 #, c-format msgid "escape sequence `\\%c' treated as plain `%c'" msgstr "kontrolsekvensen '\\%c' behandlet som kun '%c'" -#: node.c:735 +#: node.c:744 msgid "" "Invalid multibyte data detected. There may be a mismatch between your data " "and your locale." @@ -3377,16 +3402,16 @@ msgstr "%s %s '%s': kunne ikke f msgid "%s %s `%s': could not set close-on-exec: (fcntl F_SETFD: %s)" msgstr "%s %s '%s': kunne ikke sætte luk-ved-exec (fcntl F_SETFD: %s)" -#: profile.c:91 +#: profile.c:94 #, c-format msgid "could not open `%s' for writing: %s" msgstr "kunne ikke åbne '%s' for skrivning: %s" -#: profile.c:93 +#: profile.c:96 msgid "sending profile to standard error" msgstr "sender profilen til standard fejl" -#: profile.c:213 +#: profile.c:216 #, fuzzy, c-format msgid "" "\t# %s rule(s)\n" @@ -3395,7 +3420,7 @@ msgstr "" "\t# Regler\n" "\n" -#: profile.c:218 +#: profile.c:221 #, c-format msgid "" "\t# Rule(s)\n" @@ -3404,29 +3429,29 @@ msgstr "" "\t# Regler\n" "\n" -#: profile.c:292 +#: profile.c:295 #, c-format msgid "internal error: %s with null vname" msgstr "intern fejl: %s med null vname" -#: profile.c:558 +#: profile.c:561 #, fuzzy msgid "internal error: builtin with null fname" msgstr "intern fejl: %s med null vname" -#: profile.c:978 +#: profile.c:1006 #, c-format msgid "" "\t# Loaded extensions (-l and/or @load)\n" "\n" msgstr "" -#: profile.c:1001 +#: profile.c:1029 #, c-format msgid "\t# gawk profile, created %s\n" msgstr "\t# profil til gawk oprettet %s\n" -#: profile.c:1555 +#: profile.c:1600 #, c-format msgid "" "\n" @@ -3435,98 +3460,104 @@ msgstr "" "\n" "\t# Funktioner, listede alfabetisk\n" -#: profile.c:1593 +#: profile.c:1638 #, c-format msgid "redir2str: unknown redirection type %d" msgstr "redir2str: uykendt omdirigeringstype %d" -#: re.c:607 +#: re.c:610 #, c-format msgid "regexp component `%.*s' should probably be `[%.*s]'" msgstr "regexp-komponent `%.*s' skulle nok være `[%.*s]'" -#: regcomp.c:139 +#: regcomp.c:143 msgid "Success" msgstr "Lykkedes" -#: regcomp.c:142 +#: regcomp.c:146 msgid "No match" msgstr "Mislykkedes" -#: regcomp.c:145 +#: regcomp.c:149 msgid "Invalid regular expression" msgstr "Ugyldigt regulært udtryk" -#: regcomp.c:148 +#: regcomp.c:152 msgid "Invalid collation character" msgstr "Ugyldigt sorteringstegn" -#: regcomp.c:151 +#: regcomp.c:155 msgid "Invalid character class name" msgstr "Ugyldigt tegnklassenavn" -#: regcomp.c:154 +#: regcomp.c:158 msgid "Trailing backslash" msgstr "Efterfølgende omvendt skråstreg" -#: regcomp.c:157 +#: regcomp.c:161 msgid "Invalid back reference" msgstr "Ugyldig bagudreference" -#: regcomp.c:160 +#: regcomp.c:164 #, fuzzy msgid "Unmatched [, [^, [:, [., or [=" msgstr "Ubalanceret [ eller [^" -#: regcomp.c:163 +#: regcomp.c:167 msgid "Unmatched ( or \\(" msgstr "Ubalanceret ( eller \\(" -#: regcomp.c:166 +#: regcomp.c:170 msgid "Unmatched \\{" msgstr "Ubalanceret \\{" -#: regcomp.c:169 +#: regcomp.c:173 msgid "Invalid content of \\{\\}" msgstr "Ugyldigt indhold i \\{\\}" -#: regcomp.c:172 +#: regcomp.c:176 msgid "Invalid range end" msgstr "Ugyldig intervalslutning" -#: regcomp.c:175 +#: regcomp.c:179 msgid "Memory exhausted" msgstr "Hukommelsen opbrugt" -#: regcomp.c:178 +#: regcomp.c:182 msgid "Invalid preceding regular expression" msgstr "Ugyldigt foregående regulært udtryk" -#: regcomp.c:181 +#: regcomp.c:185 msgid "Premature end of regular expression" msgstr "For tidligt slut på regulært udtryk" -#: regcomp.c:184 +#: regcomp.c:188 msgid "Regular expression too big" msgstr "Regulært udtryk for stort" -#: regcomp.c:187 +#: regcomp.c:191 msgid "Unmatched ) or \\)" msgstr "Ubalanceret ) eller \\)" -#: regcomp.c:712 +#: regcomp.c:701 msgid "No previous regular expression" msgstr "Intet foregående regulært udtryk" -#: symbol.c:678 +#: symbol.c:684 #, fuzzy, c-format msgid "function `%s': can't use function `%s' as a parameter name" msgstr "funktionen '%s': kan ikke bruge funktionsnavn som parameternavn" -#: symbol.c:810 +#: symbol.c:816 msgid "can not pop main context" msgstr "" +#~ msgid "function `%s' defined to take no more than %d argument(s)" +#~ msgstr "funktionen '%s' defineret til at tage ikke mere end %d argumenter" + +#~ msgid "function `%s': missing argument #%d" +#~ msgstr "funktion '%s': mangler argument nummer %d" + #~ msgid "reference to uninitialized element `%s[\"%.*s\"]'" #~ msgstr "reference til ikke-initieret element '%s[\"%.*s\"]'" diff --git a/po/de.po b/po/de.po index 19d5d27..a4258f2 100644 --- a/po/de.po +++ b/po/de.po @@ -2,14 +2,14 @@ # Copyright (C) 2000 Free Software Foundation, Inc. # This file is distributed under the same license as the gawk package. # -# Philipp Thomas , 2011, 2012, 2014, 2015 +# Philipp Thomas , 2011, 2012, 2014, 2015, 2016 # msgid "" msgstr "" -"Project-Id-Version: gawk 4.1.1d\n" +"Project-Id-Version: gawk 4.1.3h\n" "Report-Msgid-Bugs-To: bug-gawk@gnu.org\n" -"POT-Creation-Date: 2015-05-19 16:06+0300\n" -"PO-Revision-Date: 2015-04-17 08:17+0200\n" +"POT-Creation-Date: 2016-08-25 06:19+0300\n" +"PO-Revision-Date: 2016-07-11 10:29+0200\n" "Last-Translator: Philipp Thomas \n" "Language-Team: German \n" "Language: de\n" @@ -17,95 +17,95 @@ msgstr "" "Content-Type: text/plain; charset=utf-8\n" "Content-Transfer-Encoding: 8bit\n" -#: array.c:256 +#: array.c:259 #, c-format msgid "from %s" msgstr "von %s" -#: array.c:357 +#: array.c:360 msgid "attempt to use a scalar value as array" msgstr "Es wird versucht, einen Skalar als Feld zu verwenden" -#: array.c:359 +#: array.c:362 #, c-format msgid "attempt to use scalar parameter `%s' as an array" -msgstr "Es wird versucht, den skalaren Parameter »%s« als Feld zu verwenden" +msgstr "Es wird versucht, den skalaren Parameter „%s“ als Feld zu verwenden" -#: array.c:362 +#: array.c:365 #, c-format msgid "attempt to use scalar `%s' as an array" -msgstr "Es wird versucht, den Skalar »%s« als Array zu verwenden" +msgstr "Es wird versucht, den Skalar „%s“ als Array zu verwenden" -#: array.c:409 array.c:576 builtin.c:85 builtin.c:1606 builtin.c:1652 -#: builtin.c:1665 builtin.c:2112 builtin.c:2126 eval.c:1149 eval.c:1153 -#: eval.c:1564 +#: array.c:412 array.c:579 builtin.c:85 builtin.c:1612 builtin.c:1658 +#: builtin.c:1671 builtin.c:2160 builtin.c:2179 eval.c:1141 eval.c:1145 +#: eval.c:1556 #, c-format msgid "attempt to use array `%s' in a scalar context" -msgstr "Es wird versucht, das Feld »%s« in einem Skalarkontext zu verwenden" +msgstr "Es wird versucht, das Feld „%s“ in einem Skalarkontext zu verwenden" -#: array.c:583 +#: array.c:586 #, c-format msgid "delete: index `%s' not in array `%s'" -msgstr "delete: Index »%s« ist in Feld »%s« nicht vorhanden" +msgstr "delete: Index „%s“ ist in Feld „%s“ nicht vorhanden" -#: array.c:597 +#: array.c:600 #, c-format msgid "attempt to use scalar `%s[\"%.*s\"]' as an array" msgstr "Es wird versucht, den Skalar »%s[\"%.*s\"]« als Feld zu verwenden" -#: array.c:776 +#: array.c:779 msgid "adump: first argument not an array" msgstr "adump: Das erste Argument ist kein Feld" -#: array.c:815 +#: array.c:818 msgid "asort: second argument not an array" msgstr "asort: Das zweite Argument ist kein Feld" -#: array.c:816 +#: array.c:819 msgid "asorti: second argument not an array" msgstr "asorti: Das zweite Argument ist kein Feld" -#: array.c:823 +#: array.c:826 msgid "asort: first argument not an array" msgstr "asort: Das erste Argument ist kein Feld" -#: array.c:824 +#: array.c:827 msgid "asorti: first argument not an array" msgstr "asorti: Das erste Argument ist kein Feld" -#: array.c:831 +#: array.c:834 msgid "asort: cannot use a subarray of first arg for second arg" msgstr "" "asort: ein untergeordnetes Feld des ersten Arguments kann nicht als zweites " "Argument verwendet werden" -#: array.c:832 +#: array.c:835 msgid "asorti: cannot use a subarray of first arg for second arg" msgstr "" "asorti: ein untergeordnetes Feld des ersten Arguments kann nicht als zweites " "Argument verwendet werden" -#: array.c:837 +#: array.c:840 msgid "asort: cannot use a subarray of second arg for first arg" msgstr "" "asort: ein untergeordnetes Feld des zweiten Arguments kann nicht als erstes " "Argument verwendet werden" -#: array.c:838 +#: array.c:841 msgid "asorti: cannot use a subarray of second arg for first arg" msgstr "" "asorti: ein untergeordnetes Feld des zweiten Arguments kann nicht als erstes " "Argument verwendet werden" -#: array.c:1313 +#: array.c:1316 #, c-format msgid "`%s' is invalid as a function name" -msgstr "»%s« ist ein unzulässiger Funktionsname" +msgstr "„%s“ ist ein unzulässiger Funktionsname" -#: array.c:1317 +#: array.c:1320 #, c-format msgid "sort comparison function `%s' is not defined" -msgstr "Die Vergleichsfunktion »%s« für das Sortieren ist nicht definiert" +msgstr "Die Vergleichsfunktion „%s“ für das Sortieren ist nicht definiert" #: awkgram.y:225 #, c-format @@ -123,7 +123,7 @@ msgstr "Das alte awk erlaubt keine mehrfachen »BEGIN«- oder »END«-Regeln" #: awkgram.y:367 #, c-format msgid "`%s' is a built-in function, it cannot be redefined" -msgstr "»%s« ist eine eingebaute Funktion und kann nicht umdefiniert werden" +msgstr "„%s“ ist eine eingebaute Funktion und kann nicht umdefiniert werden" #: awkgram.y:416 msgid "regexp constant `//' looks like a C++ comment, but is not" @@ -147,12 +147,12 @@ msgstr "doppelte Case-Werte im Switch-Block: %s" msgid "duplicate `default' detected in switch body" msgstr "doppeltes »default« im Switch-Block gefunden" -#: awkgram.y:793 awkgram.y:3763 +#: awkgram.y:793 awkgram.y:3774 msgid "`break' is not allowed outside a loop or switch" msgstr "" "»break« ist außerhalb einer Schleife oder eines Switch-Blocks nicht zulässig" -#: awkgram.y:802 awkgram.y:3755 +#: awkgram.y:802 awkgram.y:3766 msgid "`continue' is not allowed outside a loop" msgstr "»continue« ist außerhalb einer Schleife nicht zulässig" @@ -210,7 +210,7 @@ msgstr "Regulärer Ausdruck rechts von einem Vergleich" #: awkgram.y:1413 #, c-format msgid "non-redirected `getline' invalid inside `%s' rule" -msgstr "nicht umgeleitetes »getline« ist ungültig innerhalb der »%s«-Regel" +msgstr "nicht umgeleitetes »getline« ist ungültig innerhalb der „%s“-Regel" #: awkgram.y:1416 msgid "non-redirected `getline' undefined inside END action" @@ -233,7 +233,7 @@ msgstr "indirekte Funktionsaufrufe sind eine gawk-Erweiterung" #, c-format msgid "can not use special variable `%s' for indirect function call" msgstr "" -"die besondere Variable »%s« kann nicht für den indirekten Funktionsaufruf " +"die besondere Variable „%s“ kann nicht für den indirekten Funktionsaufruf " "verwendet werden" #: awkgram.y:1637 @@ -245,7 +245,7 @@ msgstr "es wird versucht, „%s“ als Funktion aufzurufen, obwohl es keine ist" msgid "invalid subscript expression" msgstr "Ungültiger Index-Ausdruck" -#: awkgram.y:2047 awkgram.y:2067 gawkapi.c:206 gawkapi.c:224 msg.c:126 +#: awkgram.y:2047 awkgram.y:2067 gawkapi.c:206 gawkapi.c:223 msg.c:126 msgid "warning: " msgstr "Warnung: " @@ -253,299 +253,303 @@ msgstr "Warnung: " msgid "fatal: " msgstr "Fatal: " -#: awkgram.y:2115 +#: awkgram.y:2116 msgid "unexpected newline or end of string" msgstr "Unerwarteter Zeilenumbruch oder Ende der Zeichenkette" -#: awkgram.y:2394 awkgram.y:2470 awkgram.y:2693 debug.c:523 debug.c:539 -#: debug.c:2812 debug.c:5055 +#: awkgram.y:2397 awkgram.y:2473 awkgram.y:2696 debug.c:523 debug.c:539 +#: debug.c:2812 debug.c:5101 #, c-format msgid "can't open source file `%s' for reading (%s)" -msgstr "Quelldatei »%s« kann nicht zum Lesen geöffnet werden (%s)" +msgstr "Quelldatei „%s“ kann nicht zum Lesen geöffnet werden (%s)" -#: awkgram.y:2395 awkgram.y:2520 +#: awkgram.y:2398 awkgram.y:2523 #, c-format msgid "can't open shared library `%s' for reading (%s)" msgstr "" -"Die dynamische Bibliothek »%s« kann nicht zum Lesen geöffnet werden (%s)" +"Die dynamische Bibliothek „%s“ kann nicht zum Lesen geöffnet werden (%s)" -#: awkgram.y:2397 awkgram.y:2471 awkgram.y:2521 builtin.c:135 debug.c:5206 +#: awkgram.y:2400 awkgram.y:2474 awkgram.y:2524 builtin.c:135 debug.c:5252 msgid "reason unknown" msgstr "Unbekannte Ursache" -#: awkgram.y:2406 awkgram.y:2430 +#: awkgram.y:2409 awkgram.y:2433 #, c-format msgid "can't include `%s' and use it as a program file" -msgstr "»%s« kann nicht eingebunden und als Programmdatei verwendet werden" +msgstr "„%s“ kann nicht eingebunden und als Programmdatei verwendet werden" -#: awkgram.y:2419 +#: awkgram.y:2422 #, c-format msgid "already included source file `%s'" -msgstr "Quelldatei »%s« wurde bereits eingebunden" +msgstr "Quelldatei „%s“ wurde bereits eingebunden" -#: awkgram.y:2420 +#: awkgram.y:2423 #, c-format msgid "already loaded shared library `%s'" -msgstr "Die dynamische Bibliothek »%s« wurde bereits eingebunden" +msgstr "Die dynamische Bibliothek „%s“ wurde bereits eingebunden" -#: awkgram.y:2455 +#: awkgram.y:2458 msgid "@include is a gawk extension" msgstr "»@include« ist eine gawk-Erweiterung" -#: awkgram.y:2461 +#: awkgram.y:2464 msgid "empty filename after @include" msgstr "leerer Dateiname nach @include" -#: awkgram.y:2505 +#: awkgram.y:2508 msgid "@load is a gawk extension" msgstr "»@load« ist eine Gawk-Erweiterung" -#: awkgram.y:2511 +#: awkgram.y:2514 msgid "empty filename after @load" msgstr "leerer Dateiname nach @load" -#: awkgram.y:2645 +#: awkgram.y:2648 msgid "empty program text on command line" msgstr "Kein Programmtext auf der Kommandozeile" -#: awkgram.y:2760 +#: awkgram.y:2763 #, c-format msgid "can't read sourcefile `%s' (%s)" -msgstr "Die Quelldatei »%s« kann nicht gelesen werden (%s)" +msgstr "Die Quelldatei „%s“ kann nicht gelesen werden (%s)" -#: awkgram.y:2771 +#: awkgram.y:2774 #, c-format msgid "source file `%s' is empty" -msgstr "Die Quelldatei »%s« ist leer" +msgstr "Die Quelldatei „%s“ ist leer" -#: awkgram.y:2830 +#: awkgram.y:2833 #, c-format msgid "PEBKAC error: invalid character '\\%03o' in source code" msgstr "PEBKAC Fehler: ungültiges Zeichen „\\%03o“ im Quellcode" -#: awkgram.y:2961 +#: awkgram.y:2964 msgid "source file does not end in newline" msgstr "Die Quelldatei hört nicht mit einem Zeilenende auf" -#: awkgram.y:3074 +#: awkgram.y:3081 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:3101 +#: awkgram.y:3108 #, c-format msgid "%s: %d: tawk regex modifier `/.../%c' doesn't work in gawk" msgstr "" "%s: %d: der tawk-Modifizierer für reguläre Ausdrücke »/.../%c« funktioniert " "nicht in gawk" -#: awkgram.y:3105 +#: awkgram.y:3112 #, c-format msgid "tawk regex modifier `/.../%c' doesn't work in gawk" msgstr "" "Der tawk-Modifizierer für reguläre Ausdrücke »/.../%c« funktioniert nicht in " "gawk" -#: awkgram.y:3112 +#: awkgram.y:3119 msgid "unterminated regexp" msgstr "Nicht beendeter regulärer Ausdruck" -#: awkgram.y:3116 +#: awkgram.y:3123 msgid "unterminated regexp at end of file" msgstr "Nicht beendeter regulärer Ausdruck am Dateiende" -#: awkgram.y:3174 +#: awkgram.y:3181 msgid "use of `\\ #...' line continuation is not portable" msgstr "" "Die Verwendung von »\\#...« zur Fortsetzung von Zeilen ist nicht portabel" -#: awkgram.y:3190 +#: awkgram.y:3197 msgid "backslash not last character on line" msgstr "das letzte Zeichen auf der Zeile ist kein Backslash (»\\«)" -#: awkgram.y:3251 +#: awkgram.y:3235 awkgram.y:3237 +msgid "multidimensional arrays are a gawk extension" +msgstr "mehrdimensionale Felder sind eine Gawk-Erweiterung" + +#: awkgram.y:3262 msgid "POSIX does not allow operator `**='" msgstr "POSIX erlaubt den Operator »**=« nicht" -#: awkgram.y:3253 +#: awkgram.y:3264 msgid "old awk does not support operator `**='" msgstr "Das alte awk unterstützt den Operator »**=« nicht" -#: awkgram.y:3262 +#: awkgram.y:3273 msgid "POSIX does not allow operator `**'" msgstr "POSIX erlaubt den Operator »**« nicht" -#: awkgram.y:3264 +#: awkgram.y:3275 msgid "old awk does not support operator `**'" msgstr "Das alte awk unterstützt den Operator »**« nicht" -#: awkgram.y:3299 +#: awkgram.y:3310 msgid "operator `^=' is not supported in old awk" msgstr "Das alte awk unterstützt den Operator »^=« nicht" -#: awkgram.y:3307 +#: awkgram.y:3318 msgid "operator `^' is not supported in old awk" msgstr "Das alte awk unterstützt den Operator »^« nicht" -#: awkgram.y:3404 awkgram.y:3422 command.y:1180 +#: awkgram.y:3415 awkgram.y:3433 command.y:1187 msgid "unterminated string" msgstr "Nicht beendete Zeichenkette" -#: awkgram.y:3643 +#: awkgram.y:3654 #, c-format msgid "invalid char '%c' in expression" msgstr "Ungültiges Zeichen »%c« in einem Ausdruck" -#: awkgram.y:3690 +#: awkgram.y:3701 #, c-format msgid "`%s' is a gawk extension" -msgstr "»%s« ist eine gawk-Erweiterung" +msgstr "„%s“ ist eine gawk-Erweiterung" -#: awkgram.y:3695 +#: awkgram.y:3706 #, c-format msgid "POSIX does not allow `%s'" -msgstr "POSIX erlaubt »%s« nicht" +msgstr "POSIX erlaubt „%s“ nicht" -#: awkgram.y:3703 +#: awkgram.y:3714 #, c-format msgid "`%s' is not supported in old awk" -msgstr "»%s« wird im alten awk nicht unterstützt" +msgstr "„%s“ wird im alten awk nicht unterstützt" -#: awkgram.y:3793 +#: awkgram.y:3804 msgid "`goto' considered harmful!\n" msgstr "»goto« gilt als schlechter Stil!\n" -#: awkgram.y:3827 +#: awkgram.y:3873 #, c-format msgid "%d is invalid as number of arguments for %s" msgstr "Unzulässige Argumentzahl %d für %s" -#: awkgram.y:3862 +#: awkgram.y:3908 #, 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:3867 +#: awkgram.y:3913 #, c-format msgid "%s third parameter is not a changeable object" msgstr "Der dritte Parameter von %s ist ein unveränderliches Objekt" -#: awkgram.y:3950 awkgram.y:3953 +#: awkgram.y:3996 awkgram.y:3999 msgid "match: third argument is a gawk extension" msgstr "match: Das dritte Argument ist eine gawk-Erweiterung" -#: awkgram.y:4007 awkgram.y:4010 +#: awkgram.y:4053 awkgram.y:4056 msgid "close: second argument is a gawk extension" msgstr "close: Das zweite Argument ist eine gawk-Erweiterung" -#: awkgram.y:4022 +#: awkgram.y:4068 msgid "use of dcgettext(_\"...\") is incorrect: remove leading underscore" msgstr "" "Fehlerhafte Verwendung von dcgettext(_\"...\"): \n" "Entfernen Sie den führenden Unterstrich" -#: awkgram.y:4037 +#: awkgram.y:4083 msgid "use of dcngettext(_\"...\") is incorrect: remove leading underscore" msgstr "" "Fehlerhafte Verwendung von dcngettext(_\"...\"): \n" "Entfernen Sie den führenden Unterstrich" -#: awkgram.y:4056 +#: awkgram.y:4102 msgid "index: regexp constant as second argument is not allowed" msgstr "index: eine Regexp-Konstante als zweites Argument ist unzulässig" -#: awkgram.y:4109 +#: awkgram.y:4155 #, c-format msgid "function `%s': parameter `%s' shadows global variable" -msgstr "Funktion »%s«: Parameter »%s« verdeckt eine globale Variable" +msgstr "Funktion „%s“: Parameter „%s“ verdeckt eine globale Variable" -#: awkgram.y:4166 debug.c:4041 debug.c:4084 debug.c:5204 +#: awkgram.y:4214 debug.c:4087 debug.c:4130 debug.c:5250 #, c-format msgid "could not open `%s' for writing (%s)" -msgstr "»%s« kann nicht zum Schreiben geöffne werden(%s)" +msgstr "„%s“ kann nicht zum Schreiben geöffne werden(%s)" -#: awkgram.y:4167 +#: awkgram.y:4215 msgid "sending variable list to standard error" msgstr "Die Liste der Variablen wird auf der Standardfehlerausgabe ausgegeben" -#: awkgram.y:4175 +#: awkgram.y:4223 #, c-format msgid "%s: close failed (%s)" msgstr "%s: close ist gescheitert (%s)" -#: awkgram.y:4200 +#: awkgram.y:4248 msgid "shadow_funcs() called twice!" msgstr "shadow_funcs() zweimal aufgerufen!" -#: awkgram.y:4208 +#: awkgram.y:4256 msgid "there were shadowed variables." msgstr "es sind verdeckte Variablen vorhanden" -#: awkgram.y:4279 +#: awkgram.y:4327 #, c-format msgid "function name `%s' previously defined" -msgstr "Funktion »%s« wurde bereits definiert" +msgstr "Funktion „%s“ wurde bereits definiert" -#: awkgram.y:4325 +#: awkgram.y:4373 #, c-format msgid "function `%s': can't use function name as parameter name" -msgstr "Funktion »%s«: Funktionsnamen können nicht als Parameternamen benutzen" +msgstr "Funktion „%s“: Funktionsnamen können nicht als Parameternamen benutzen" -#: awkgram.y:4328 +#: awkgram.y:4376 #, c-format msgid "function `%s': can't use special variable `%s' as a function parameter" msgstr "" -"Funktion »%s«: die spezielle Variable »%s« kann nicht als Parameter " +"Funktion „%s“: die spezielle Variable „%s“ kann nicht als Parameter " "verwendet werden" -#: awkgram.y:4336 +#: awkgram.y:4384 #, c-format msgid "function `%s': parameter #%d, `%s', duplicates parameter #%d" -msgstr "Funktion »%s«: Parameter #%d, »%s« wiederholt Parameter #%d" +msgstr "Funktion „%s“: Parameter #%d, „%s“ wiederholt Parameter #%d" -#: awkgram.y:4423 awkgram.y:4429 +#: awkgram.y:4471 awkgram.y:4477 #, c-format msgid "function `%s' called but never defined" -msgstr "Aufgerufene Funktion »%s« ist nirgends definiert" +msgstr "Aufgerufene Funktion „%s“ ist nirgends definiert" -#: awkgram.y:4433 +#: awkgram.y:4481 #, c-format msgid "function `%s' defined but never called directly" -msgstr "Funktion »%s« wurde definiert aber nirgends aufgerufen" +msgstr "Funktion „%s“ wurde definiert aber nirgends aufgerufen" -#: awkgram.y:4465 +#: awkgram.y:4513 #, c-format msgid "regexp constant for parameter #%d yields boolean value" msgstr "" "Regulärer-Ausdruck-Konstante für Parameter #%d ergibt einen \n" "logischen Wert" -#: awkgram.y:4480 +#: awkgram.y:4528 #, c-format msgid "" "function `%s' called with space between name and `(',\n" "or used as a variable or an array" msgstr "" -"Funktion »%s« wird mit Leerzeichen zwischen Name und »(« aufgerufen, \n" +"Funktion „%s“ wird mit Leerzeichen zwischen Name und »(« aufgerufen, \n" "oder als Variable oder Feld verwendet" -#: awkgram.y:4686 +#: awkgram.y:4734 msgid "division by zero attempted" msgstr "Division durch Null wurde versucht" -#: awkgram.y:4695 +#: awkgram.y:4743 #, c-format msgid "division by zero attempted in `%%'" msgstr "Division durch Null versucht in »%%«" -#: awkgram.y:5015 +#: awkgram.y:5064 msgid "" "cannot assign a value to the result of a field post-increment expression" msgstr "" "dem Ergebnis eines Feld-Postinkrementausdruck kann kein Wert zugewiesen " "werden" -#: awkgram.y:5018 +#: awkgram.y:5067 #, c-format msgid "invalid target of assignment (opcode %s)" msgstr "Unzulässiges Ziel für eine Zuweisung (Opcode %s)" @@ -572,216 +576,229 @@ msgstr "exp: das Argument %g liegt außerhalb des gültigen Bereichs" #, 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" +"fflush: Leeren der Puffer nicht möglich, Pipe „%s“ ist nur zum Lesen geöffnet" #: builtin.c:232 #, 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 " +"fflush: Leeren der Puffer nicht möglich, Datei „%s“ ist nur zum Lesen " "geöffnet" -#: builtin.c:244 +#: builtin.c:241 +#, c-format +msgid "fflush: cannot flush: two-way pipe `%s' has closed write end" +msgstr "" +"fflush: Leeren der Puffer nicht möglich; zweiseitige Pipe „%s“ hat die " +"schreibende Seite geschlossen" + +#: builtin.c:247 #, 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" +msgstr "fflush: „%s“ ist keine geöffnete Datei, Pipe oder Prozess" -#: builtin.c:351 +#: builtin.c:354 msgid "index: received non-string first argument" msgstr "index: Erstes Argument ist kein String" -#: builtin.c:353 +#: builtin.c:356 msgid "index: received non-string second argument" msgstr "index: Zweites Argument ist kein string" -#: builtin.c:466 mpfr.c:777 +#: builtin.c:469 mpfr.c:781 msgid "int: received non-numeric argument" msgstr "Argument ist keine Zahl" -#: builtin.c:503 +#: builtin.c:506 msgid "length: received array argument" msgstr "length: Argument ist ein Feld" -#: builtin.c:506 +#: builtin.c:509 msgid "`length(array)' is a gawk extension" msgstr "»length(array)« ist eine gawk-Erweiterung" -#: builtin.c:525 +#: builtin.c:528 msgid "length: received non-string argument" msgstr "length: Argument ist kein String" -#: builtin.c:554 +#: builtin.c:557 msgid "log: received non-numeric argument" msgstr "log: Argument ist keine Zahl" -#: builtin.c:557 +#: builtin.c:560 #, c-format msgid "log: received negative argument %g" msgstr "log: Negatives Argument %g" -#: builtin.c:755 builtin.c:760 builtin.c:911 +#: builtin.c:758 builtin.c:763 builtin.c:914 msgid "fatal: must use `count$' on all formats or none" msgstr "Fatal: »count$« muss auf alle Formate angewandt werden oder auf keines" -#: builtin.c:830 +#: builtin.c:833 #, c-format msgid "field width is ignored for `%%' specifier" msgstr "Feldbreite wird für die »%%«-Angabe ignoriert" -#: builtin.c:832 +#: builtin.c:835 #, c-format msgid "precision is ignored for `%%' specifier" msgstr "Genauigkeit wird für die »%%«-Angabe ignoriert" -#: builtin.c:834 +#: builtin.c:837 #, c-format msgid "field width and precision are ignored for `%%' specifier" msgstr "Feldbreite und Genauigkeit werden für die »%%«-Angabe ignoriert" -#: builtin.c:885 +#: builtin.c:888 msgid "fatal: `$' is not permitted in awk formats" msgstr "Fatal: »$« ist in awk-Formaten nicht zulässig" -#: builtin.c:894 +#: builtin.c:897 msgid "fatal: arg count with `$' must be > 0" msgstr "Fatal: die Anzahl der Argumen bei »$« muss > 0 sein" -#: builtin.c:898 +#: builtin.c:901 #, c-format msgid "fatal: arg count %ld greater than total number of supplied arguments" msgstr "" "Fatal: Argumentenanzahl %ld ist größer als die Gesamtzahl angegebener " "Argumente" -#: builtin.c:902 +#: builtin.c:905 msgid "fatal: `$' not permitted after period in format" msgstr "Fatal: »$« nach Punkt in Formatangabe nicht zulässig" -#: builtin.c:921 +#: builtin.c:924 msgid "fatal: no `$' supplied for positional field width or precision" msgstr "Fatal: »$« fehlt in positionsabhängiger Feldbreite oder Genauigkeit" # -#: builtin.c:991 +#: builtin.c:994 msgid "`l' is meaningless in awk formats; ignored" msgstr "»l« ist in awk-Formaten bedeutungslos, ignoriert" -#: builtin.c:995 +#: builtin.c:998 msgid "fatal: `l' is not permitted in POSIX awk formats" msgstr "Fatal: »l« ist in POSIX-awk-Formaten nicht zulässig" -#: builtin.c:1008 +#: builtin.c:1011 msgid "`L' is meaningless in awk formats; ignored" msgstr "»L« ist in awk-Formaten bedeutungslos, ignoriert" -#: builtin.c:1012 +#: builtin.c:1015 msgid "fatal: `L' is not permitted in POSIX awk formats" msgstr "Fatal: »L« ist in POSIX-awk-Formaten nicht zulässig" -#: builtin.c:1025 +#: builtin.c:1028 msgid "`h' is meaningless in awk formats; ignored" msgstr "»h« ist in awk-Formaten bedeutungslos, ignoriert" -#: builtin.c:1029 +#: builtin.c:1032 msgid "fatal: `h' is not permitted in POSIX awk formats" msgstr "Fatal: »h« ist in POSIX-awk-Formaten nicht zulässig" -#: builtin.c:1055 +#: builtin.c:1058 #, c-format msgid "[s]printf: value %g is too big for %%c format" msgstr "[s]printf: Wert %g ist außerhalb des Bereichs für Format »%%c«" -#: builtin.c:1068 +#: builtin.c:1071 #, c-format msgid "[s]printf: value %g is not a valid wide character" msgstr "[s]printf: Wert %g ist kein gultiges Wide-Zeichen" -#: builtin.c:1454 +#: builtin.c:1457 #, c-format msgid "[s]printf: value %g is out of range for `%%%c' format" msgstr "[s]printf: Wert %g ist außerhalb des Bereichs für Format »%%%c«" -#: builtin.c:1552 +#: builtin.c:1555 #, c-format msgid "ignoring unknown format specifier character `%c': no argument converted" msgstr "" "das unbekannte Zeichen »%c« in der Formatspezifikation wird ignoriert: keine " "Argumente umgewandelt" -#: builtin.c:1557 +#: builtin.c:1560 msgid "fatal: not enough arguments to satisfy format string" msgstr "Fatal: Nicht genügend Argumente für die Formatangabe" -#: builtin.c:1559 +#: builtin.c:1562 msgid "^ ran out for this one" msgstr "^ hierfür fehlte es" -#: builtin.c:1566 +#: builtin.c:1569 msgid "[s]printf: format specifier does not have control letter" msgstr "[s]printf: Format-Spezifikation hat keinen Controlcode" -#: builtin.c:1569 +#: builtin.c:1572 msgid "too many arguments supplied for format string" msgstr "Zu viele Argumente für den Formatstring" -#: builtin.c:1625 +#: builtin.c:1631 msgid "sprintf: no arguments" msgstr "sprintf: Keine Argumente" -#: builtin.c:1648 builtin.c:1659 +#: builtin.c:1654 builtin.c:1665 msgid "printf: no arguments" msgstr "printf: Keine Argumente" -#: builtin.c:1702 +#: builtin.c:1676 +msgid "printf: attempt to write to closed write end of two-way pipe" +msgstr "" +"printf: Versuch in die geschlossene schreibende Seite einer bidirektionalen " +"Pipe zu schreiben" + +#: builtin.c:1713 msgid "sqrt: received non-numeric argument" msgstr "sqrt: das Argument ist keine Zahl" -#: builtin.c:1706 +#: builtin.c:1717 #, c-format msgid "sqrt: called with negative argument %g" msgstr "sqrt: das Argument %g ist negativ" -#: builtin.c:1737 +#: builtin.c:1748 #, c-format msgid "substr: length %g is not >= 1" msgstr "substr: Länge %g ist nicht >= 1" -#: builtin.c:1739 +#: builtin.c:1750 #, c-format msgid "substr: length %g is not >= 0" msgstr "substr: Länge %g ist nicht >= 0" -#: builtin.c:1753 +#: builtin.c:1764 #, c-format msgid "substr: non-integer length %g will be truncated" msgstr "substr: Nicht ganzzahlige Länge %g wird abgeschnitten" -#: builtin.c:1758 +#: builtin.c:1769 #, c-format msgid "substr: length %g too big for string indexing, truncating to %g" msgstr "" "substr: Länge %g ist zu groß für Stringindizierung, wird auf %g gekürzt" -#: builtin.c:1770 +#: builtin.c:1781 #, c-format msgid "substr: start index %g is invalid, using 1" msgstr "substr: Start-Index %g ist ungültig, 1 wird verwendet" -#: builtin.c:1775 +#: builtin.c:1786 #, c-format msgid "substr: non-integer start index %g will be truncated" msgstr "substr: Nicht ganzzahliger Start-Wert %g wird abgeschnitten" -#: builtin.c:1798 +#: builtin.c:1809 msgid "substr: source string is zero length" msgstr "substr: Quellstring ist leer" -#: builtin.c:1812 +#: builtin.c:1823 #, c-format msgid "substr: start index %g is past end of string" msgstr "substr: Start-Wert %g liegt hinter dem Ende des Strings" -#: builtin.c:1820 +#: builtin.c:1831 #, c-format msgid "" "substr: length %g at start index %g exceeds length of first argument (%lu)" @@ -789,329 +806,335 @@ msgstr "" "substr: Länge %g am Start-Wert %g überschreitet die Länge des ersten " "Arguments (%lu)" -#: builtin.c:1892 +#: builtin.c:1903 msgid "strftime: format value in PROCINFO[\"strftime\"] has numeric type" msgstr "strftime: Formatwert in PROCINFO[\"strftime\"] ist numerischen Typs" -#: builtin.c:1915 +#: builtin.c:1926 msgid "strftime: received non-numeric second argument" msgstr "strftime: Das zweite Argument ist keine Zahl" -#: builtin.c:1925 +#: builtin.c:1936 msgid "strftime: second argument less than 0 or too big for time_t" msgstr "" "strftime: das zweite Argument ist kleiner als 0 oder zu groß für time_t" -#: builtin.c:1932 +#: builtin.c:1943 msgid "strftime: second argument out of range for time_t" msgstr "" "strftime: das zweite Argument ist ausserhalb des Gültigkeitsbereichs von " "time_t" -#: builtin.c:1941 +#: builtin.c:1952 msgid "strftime: received non-string first argument" msgstr "strftime: Das erste Argument ist kein String" -#: builtin.c:1948 +#: builtin.c:1959 msgid "strftime: received empty format string" msgstr "strftime: Der Format-String ist leer" -#: builtin.c:2017 +#: builtin.c:2028 msgid "mktime: received non-string argument" msgstr "mktime: Das Argument ist kein String" -#: builtin.c:2034 +#: builtin.c:2045 msgid "mktime: at least one of the values is out of the default range" msgstr "mktime: mindestens einer der Werte ist außerhalb des normalen Bereichs" -#: builtin.c:2069 +#: builtin.c:2081 msgid "'system' function not allowed in sandbox mode" msgstr "Die Funktion »system« ist im Sandbox-Modus nicht erlaubt" -#: builtin.c:2074 +#: builtin.c:2086 msgid "system: received non-string argument" msgstr "system: Das Argument ist kein String" -#: builtin.c:2194 +#: builtin.c:2165 builtin.c:2230 +msgid "print: attempt to write to closed write end of two-way pipe" +msgstr "" +"print: Versuch in die geschlossene schreibende Seite einer bidirektionalen " +"Pipe zu schreiben" + +#: builtin.c:2248 #, c-format msgid "reference to uninitialized field `$%d'" msgstr "Referenz auf das nicht initialisierte Feld »$%d«" -#: builtin.c:2279 +#: builtin.c:2333 msgid "tolower: received non-string argument" msgstr "tolower: das Argument ist kein String" -#: builtin.c:2310 +#: builtin.c:2364 msgid "toupper: received non-string argument" msgstr "toupper: das Argument ist kein String" -#: builtin.c:2343 mpfr.c:679 +#: builtin.c:2397 mpfr.c:681 msgid "atan2: received non-numeric first argument" msgstr "atan2: das erste Argument ist keine Zahl" -#: builtin.c:2345 mpfr.c:681 +#: builtin.c:2399 mpfr.c:683 msgid "atan2: received non-numeric second argument" msgstr "atan2: das zweite Argument ist keine Zahl" -#: builtin.c:2364 +#: builtin.c:2418 msgid "sin: received non-numeric argument" msgstr "sin: das Argument ist keine Zahl" -#: builtin.c:2380 +#: builtin.c:2434 msgid "cos: received non-numeric argument" msgstr "cos: das Argument ist keine Zahl" -#: builtin.c:2433 mpfr.c:1176 +#: builtin.c:2487 mpfr.c:1180 msgid "srand: received non-numeric argument" msgstr "srand: das Argument ist keine Zahl" -#: builtin.c:2464 +#: builtin.c:2518 msgid "match: third argument is not an array" msgstr "match: das dritte Argument ist kein Array" -#: builtin.c:2725 +#: builtin.c:2779 #, c-format msgid "gensub: third argument `%.*s' treated as 1" msgstr "gensub: das dritte Argument „%.*s“ wird als 1 interpretiert" -#: builtin.c:2740 +#: builtin.c:2794 #, c-format msgid "gensub: third argument %g treated as 1" msgstr "gensub: das dritte Argument %g wird als 1 interpretiert" -#: builtin.c:3038 +#: builtin.c:3096 #, c-format msgid "%s: can be called indirectly only with two arguments" msgstr "%s: kann indirekt nur mit zwei Argumenten aufgerufen werden" -#: builtin.c:3128 +#: builtin.c:3186 #, c-format msgid "indirect call to %s requires at least two arguments" msgstr "der indirekte Aufruf von %s erfordert mindestens zwei Argumente" -#: builtin.c:3180 +#: builtin.c:3238 msgid "lshift: received non-numeric first argument" msgstr "lshift: das erste Argument ist keine Zahl" -#: builtin.c:3182 +#: builtin.c:3240 msgid "lshift: received non-numeric second argument" msgstr "lshift: das zweite Argument ist keine Zahl" -#: builtin.c:3188 +#: builtin.c:3246 #, c-format msgid "lshift(%f, %f): negative values will give strange results" msgstr "" "lshift(%f, %f): Negative Werte werden zu merkwürdigen Ergebnissen führen" -#: builtin.c:3190 +#: builtin.c:3248 #, c-format msgid "lshift(%f, %f): fractional values will be truncated" msgstr "lshift(%f, %f): Dezimalteil wird abgeschnitten" -#: builtin.c:3192 +#: builtin.c:3250 #, c-format msgid "lshift(%f, %f): too large shift value will give strange results" msgstr "" "lshift(%f, %f): Zu große Shift-Werte werden zu merkwürdigen Ergebnissen " "führen" -#: builtin.c:3217 +#: builtin.c:3275 msgid "rshift: received non-numeric first argument" msgstr "rshift: das erste Argument ist keine Zahl" -#: builtin.c:3219 +#: builtin.c:3277 msgid "rshift: received non-numeric second argument" msgstr "rshift: das zweite Argument ist keine Zahl" -#: builtin.c:3225 +#: builtin.c:3283 #, c-format msgid "rshift(%f, %f): negative values will give strange results" msgstr "" "rshift (%f, %f): Negative Werte werden zu merkwürdigen Ergebnissen führen" -#: builtin.c:3227 +#: builtin.c:3285 #, c-format msgid "rshift(%f, %f): fractional values will be truncated" msgstr "rshift(%f, %f): Dezimalteil wird abgeschnitten" -#: builtin.c:3229 +#: builtin.c:3287 #, c-format msgid "rshift(%f, %f): too large shift value will give strange results" msgstr "" "rshift(%f, %f): Zu große Shift-Werte werden zu merkwürdigen Ergebnissen " "führen" -#: builtin.c:3254 mpfr.c:988 +#: builtin.c:3312 mpfr.c:992 msgid "and: called with less than two arguments" msgstr "and: wird mit weniger als zwei Argumenten aufgerufen" -#: builtin.c:3259 +#: builtin.c:3317 #, c-format msgid "and: argument %d is non-numeric" msgstr "and: das Argument %d ist nicht numerisch" -#: builtin.c:3263 +#: builtin.c:3321 #, c-format msgid "and: argument %d negative value %g will give strange results" msgstr "" "and: der negative Wert %2$g von Argument %1$d wird zu merkwürdigen " "Ergebnissen führen" -#: builtin.c:3286 mpfr.c:1020 +#: builtin.c:3344 mpfr.c:1024 msgid "or: called with less than two arguments" msgstr "or: wird mit weniger als zwei Argumenten aufgerufen" -#: builtin.c:3291 +#: builtin.c:3349 #, c-format msgid "or: argument %d is non-numeric" msgstr "or: das Argument %d ist nicht numerisch" -#: builtin.c:3295 +#: builtin.c:3353 #, c-format msgid "or: argument %d negative value %g will give strange results" msgstr "" "or: der negative Wert %2$g von Argument %1$d wird zu merkwürdigen " "Ergebnissen führen" -#: builtin.c:3317 mpfr.c:1051 +#: builtin.c:3375 mpfr.c:1055 msgid "xor: called with less than two arguments" msgstr "xor: wird mit weniger als zwei Argumenten aufgerufen" -#: builtin.c:3323 +#: builtin.c:3381 #, c-format msgid "xor: argument %d is non-numeric" msgstr "xor: das Argument %d ist nicht numerisch" -#: builtin.c:3327 +#: builtin.c:3385 #, c-format msgid "xor: argument %d negative value %g will give strange results" msgstr "" "xor: der negative Wert %2$g von Argument %1$d wird zu merkwürdigen " "Ergebnissen führen" -#: builtin.c:3352 mpfr.c:807 +#: builtin.c:3410 mpfr.c:811 msgid "compl: received non-numeric argument" msgstr "compl: das erste Argument ist keine Zahl" -#: builtin.c:3358 +#: builtin.c:3416 #, c-format msgid "compl(%f): negative value will give strange results" msgstr "compl(%f): Der negative Wert wird zu merkwürdigen Ergebnissen führen" -#: builtin.c:3360 +#: builtin.c:3418 #, c-format msgid "compl(%f): fractional value will be truncated" msgstr "compl(%f): der Dezimalteil wird abgeschnitten" -#: builtin.c:3529 +#: builtin.c:3588 #, c-format msgid "dcgettext: `%s' is not a valid locale category" -msgstr "dcgettext: »%s« ist keine gültige Locale-Kategorie" +msgstr "dcgettext: „%s“ ist keine gültige Locale-Kategorie" -#: command.y:225 +#: command.y:226 #, c-format msgid "Type (g)awk statement(s). End with the command \"end\"\n" msgstr "Geben Sie »(g)awk Ausdrücke« und zum Abschluss \"end\" ein\n" -#: command.y:289 +#: command.y:290 #, c-format msgid "invalid frame number: %d" msgstr "Ungültige Frame-Nummer: %d" -#: command.y:295 +#: command.y:296 #, c-format msgid "info: invalid option - \"%s\"" -msgstr "info: Ungültige Option - »%s«" +msgstr "info: Ungültige Option - „%s“" -#: command.y:321 +#: command.y:322 #, c-format msgid "source \"%s\": already sourced." -msgstr "Quelle »%s«: wurde bereits eingelesen." +msgstr "Quelle „%s“: wurde bereits eingelesen." -#: command.y:326 +#: command.y:327 #, c-format msgid "save \"%s\": command not permitted." -msgstr "save »%s«: Der Befehl ist nicht zulässig." +msgstr "save „%s“: Der Befehl ist nicht zulässig." -#: command.y:339 +#: command.y:340 msgid "Can't use command `commands' for breakpoint/watchpoint commands" msgstr "" "Der Befehl »commands« kann nicht für Break- bzw. Watchpoints verwendet werden" -#: command.y:341 +#: command.y:342 msgid "no breakpoint/watchpoint has been set yet" msgstr "es wurden noch keine Break-/Watchpoints gesetzt" -#: command.y:343 +#: command.y:344 msgid "invalid breakpoint/watchpoint number" msgstr "ungültige Break-/Watchpoint/Nummer" -#: command.y:348 +#: command.y:349 #, c-format msgid "Type commands for when %s %d is hit, one per line.\n" msgstr "" "Befehle eingeben, die bei Erreichen von %s %d ausgeführt werden sollen, " "einer pro Zeile.\n" -#: command.y:350 +#: command.y:351 #, c-format msgid "End with the command \"end\"\n" msgstr "Abschließen mit dem Befehl »end«\n" -#: command.y:357 +#: command.y:358 msgid "`end' valid only in command `commands' or `eval'" msgstr "»end« ist nur innerhalb der Befehle »commands« oder »eval« zulässig" -#: command.y:367 +#: command.y:368 msgid "`silent' valid only in command `commands'" msgstr "»silent« ist nur innerhalb des Befehls »commands« zuzlässig" -#: command.y:373 +#: command.y:374 #, c-format msgid "trace: invalid option - \"%s\"" -msgstr "trace: Ungültige Option - »%s«" +msgstr "trace: Ungültige Option - „%s“" -#: command.y:387 +#: command.y:388 msgid "condition: invalid breakpoint/watchpoint number" msgstr "condition: Unzulässige Break-/Watchpoint-Nummer" -#: command.y:449 +#: command.y:450 msgid "argument not a string" msgstr "Das Argument ist keine Zeichenkette" -#: command.y:459 command.y:464 +#: command.y:460 command.y:465 #, c-format msgid "option: invalid parameter - \"%s\"" -msgstr "option: ungültiger Parameter - »%s«" +msgstr "option: ungültiger Parameter - „%s“" -#: command.y:474 +#: command.y:475 #, c-format msgid "no such function - \"%s\"" -msgstr "Unbekannte Funktion - »%s«" +msgstr "Unbekannte Funktion - „%s“" -#: command.y:531 +#: command.y:532 #, c-format msgid "enable: invalid option - \"%s\"" -msgstr "enable: Ungültige Option - »%s«" +msgstr "enable: Ungültige Option - „%s“" -#: command.y:597 +#: command.y:598 #, c-format msgid "invalid range specification: %d - %d" msgstr "Ungültige Bereichsangabe: %d - %d" -#: command.y:659 +#: command.y:660 msgid "non-numeric value for field number" msgstr "nichtnumerischer Wert als Feldnummer" -#: command.y:680 command.y:687 +#: command.y:681 command.y:688 msgid "non-numeric value found, numeric expected" msgstr "nichtnumerischer Wert wo ein numerischer erwartet wurde" -#: command.y:712 command.y:718 +#: command.y:713 command.y:719 msgid "non-zero integer value" msgstr "ganyzahliger Wert ungleich Null" -#: command.y:817 +#: command.y:818 msgid "" "backtrace [N] - print trace of all or N innermost (outermost if N < 0) " "frames." @@ -1119,17 +1142,17 @@ msgstr "" "backtrace [N] - log von allen oder den N innersten (äußersten wenn N < 0) " "Rahmen." -#: command.y:819 +#: command.y:820 msgid "" "break [[filename:]N|function] - set breakpoint at the specified location." msgstr "" "break [[Dateiname:]N|funktion - Breakpoint an der angegebenen Stelle setzen.]" -#: command.y:821 +#: command.y:822 msgid "clear [[filename:]N|function] - delete breakpoints previously set." msgstr "clear [[Dateiname:]N|Funktion - zuvor gesetzte Breakpoints löschen." -#: command.y:823 +#: command.y:824 msgid "" "commands [num] - starts a list of commands to be executed at a " "breakpoint(watchpoint) hit." @@ -1137,74 +1160,78 @@ msgstr "" "commands [Nr] - startet eine Liste von Befehlen, die bei Erreichen eines " "Break- bzw. Watchpoints ausgeführt werden." -#: command.y:825 +#: command.y:826 msgid "condition num [expr] - set or clear breakpoint or watchpoint condition." msgstr "" "condition Nr [Ausdruck] - Bedingungen für einen Break-/Watchpoint setzen " "oder löschen." -#: command.y:827 +#: command.y:828 msgid "continue [COUNT] - continue program being debugged." msgstr "continue [ANZAHL] - zu debuggendes Programm fortsetzen." -#: command.y:829 +#: command.y:830 msgid "delete [breakpoints] [range] - delete specified breakpoints." msgstr "delete [Breakpoints] [Bereich] - angegebene Breakpoints entfernen." -#: command.y:831 +#: command.y:832 msgid "disable [breakpoints] [range] - disable specified breakpoints." msgstr "disable [Breakpoints] [Bereich] - angegebene Breakpoints deaktivieren." -#: command.y:833 +#: command.y:834 msgid "display [var] - print value of variable each time the program stops." msgstr "" "display [Var] - den Wert der Variablen bei jedem Programmstop ausgeben." -#: command.y:835 +#: command.y:836 msgid "down [N] - move N frames down the stack." msgstr "down [N] - N Rahmen nach unten im Stack gehen." -#: command.y:837 +#: command.y:838 msgid "dump [filename] - dump instructions to file or stdout." msgstr "" "dump [Dateiname] - Befehle in eine Datei oder auf der Standardausgabe " "ausgeben" -#: command.y:839 +#: command.y:840 msgid "enable [once|del] [breakpoints] [range] - enable specified breakpoints." msgstr "" "enable [once|del] [Breakpoints] [Bereich] - die angegebenen Breakpoints " "aktivieren." -#: command.y:841 +#: command.y:842 msgid "end - end a list of commands or awk statements." msgstr "end - beendet eine Liste von Befehlen oder AWK/Ausdrücken." -#: command.y:843 +#: command.y:844 msgid "eval stmt|[p1, p2, ...] - evaluate awk statement(s)." msgstr "eval stmt[p1, p2, ...] - Awk-Ausdrücke auswerten." -#: command.y:845 +#: command.y:846 +msgid "exit - (same as quit) exit debugger." +msgstr "exit - (identisch mit quit) Debugger verlassen." + +#: command.y:848 msgid "finish - execute until selected stack frame returns." msgstr "" "finish - mit Ausführung fortfahren bis auisgewählter Rahmen verlassen wird." -#: command.y:847 +#: command.y:850 msgid "frame [N] - select and print stack frame number N." msgstr "frame [N] - den Stackrahmen Nummer N auswählen und ausgeben." -#: command.y:849 +#: command.y:852 msgid "help [command] - print list of commands or explanation of command." msgstr "" "help [Befehl] - gibt eine Liste der Befehle oder die Beschreibung eines " "einzelnen Befehls aus." -#: command.y:851 +#: command.y:854 msgid "ignore N COUNT - set ignore-count of breakpoint number N to COUNT." msgstr "" "ignore N ZÄHLER - setzt den Ignorieren-Zähler von Breakpoint N auf ZÄHLER" -#: command.y:853 +#: command.y:856 msgid "" "info topic - source|sources|variables|functions|break|frame|args|locals|" "display|watch." @@ -1212,95 +1239,95 @@ msgstr "" "info Thema - source|sources|variables|functions|break|frame|args|locals|" "display|watch." -#: command.y:855 +#: command.y:858 msgid "list [-|+|[filename:]lineno|function|range] - list specified line(s)." msgstr "" "list [-|+|[Dateiname:]Zeilennr|Funktion|Breich] - die angegebenen Zeilen " "ausgeben" -#: command.y:857 +#: command.y:860 msgid "next [COUNT] - step program, proceeding through subroutine calls." msgstr "" "next [ZÄHLER] - Programm schrittweise ausführen aber Subroutinen in einem " "Rutsch ausführen" -#: command.y:859 +#: command.y:862 msgid "" "nexti [COUNT] - step one instruction, but proceed through subroutine calls." msgstr "" "nexti [ZÄHLER] - einen Befehl abarbeiten. aber Subroutinen in einem Rutsch " "ausführen" -#: command.y:861 +#: command.y:864 msgid "option [name[=value]] - set or display debugger option(s)." msgstr "option [Name[=Wer]] - Debuggeroptionen setzen oder anzeigen." -#: command.y:863 +#: command.y:866 msgid "print var [var] - print value of a variable or array." msgstr "print Var [Var] - den Wert einer Variablen oder eines Feldes ausgeben." -#: command.y:865 +#: command.y:868 msgid "printf format, [arg], ... - formatted output." msgstr "printf Format, [Arg], ... - formatierte Ausgabe." -#: command.y:867 +#: command.y:870 msgid "quit - exit debugger." msgstr "quit - Debugger verlassen" -#: command.y:869 +#: command.y:872 msgid "return [value] - make selected stack frame return to its caller." msgstr "" "return [Wert] - den ausgewählten Stapelrahmen yu seinem Aufrufer zurück " "kehren lassen" -#: command.y:871 +#: command.y:874 msgid "run - start or restart executing program." msgstr "run - startet die (erneute) Ausführung des Programms." -#: command.y:874 +#: command.y:877 msgid "save filename - save commands from the session to file." msgstr "save Dateineme - sichert die Befehle der Sitzung in einer Datei." -#: command.y:877 +#: command.y:880 msgid "set var = value - assign value to a scalar variable." msgstr "set Var = Wert - einer skalaren Variablen einen Wert zuweisen" -#: command.y:879 +#: command.y:882 msgid "" "silent - suspends usual message when stopped at a breakpoint/watchpoint." msgstr "" "silent - unterdrückt die übliche Nachricht, wenn ein Break- bzw. Watchpoint " "erreicht wird." -#: command.y:881 +#: command.y:884 msgid "source file - execute commands from file." msgstr "source Datei - die Befehle in Datei ausführen" -#: command.y:883 +#: command.y:886 msgid "step [COUNT] - step program until it reaches a different source line." msgstr "" "step [ZÄHLER - Programm schrittweise ausführen bis es eine andere Quellzeile " "erricht." -#: command.y:885 +#: command.y:888 msgid "stepi [COUNT] - step one instruction exactly." msgstr "stepi [ZÄHLER - genau eine Instruktion ausführen" -#: command.y:887 +#: command.y:890 msgid "tbreak [[filename:]N|function] - set a temporary breakpoint." msgstr "tbreak [[Dateinem:]N|Funktion] - einen temporären Breakpoint setzen." -#: command.y:889 +#: command.y:892 msgid "trace on|off - print instruction before executing." msgstr "trace on|off - Instruktionen vor der Ausführung ausgeben." -#: command.y:891 +#: command.y:894 msgid "undisplay [N] - remove variable(s) from automatic display list." msgstr "" "undisplay [N] - Variablen von der Liste der automatisch Anzuzeigenden " "entfernen." -#: command.y:893 +#: command.y:896 msgid "" "until [[filename:]N|function] - execute until program reaches a different " "line or line N within current frame." @@ -1308,19 +1335,19 @@ msgstr "" "until [[Dateiname:]N|Funktion - Ausführen bis das Programm eine andere Zeile " "erreicht oder N Zeilen im aktuellen Rahmen." -#: command.y:895 +#: command.y:898 msgid "unwatch [N] - remove variable(s) from watch list." msgstr "unwatch [N} - Variablen von der Beobachtungsliste löschen" -#: command.y:897 +#: command.y:900 msgid "up [N] - move N frames up the stack." msgstr "up [N] - N Rahmen im Kellerspeicher nach oben gehen." -#: command.y:899 +#: command.y:902 msgid "watch var - set a watchpoint for a variable." msgstr "watch Var - einen Watchpoint für eine Variable setzen." -#: command.y:901 +#: command.y:904 msgid "" "where [N] - (same as backtrace) print trace of all or N innermost (outermost " "if N < 0) frames." @@ -1328,40 +1355,40 @@ msgstr "" "where [N] - (wie bei backtrace) Liste von allen oder den N innersten " "(äußersten wenn N <0> Stackframes" -#: command.y:1013 debug.c:401 msg.c:135 +#: command.y:1016 debug.c:401 msg.c:135 #, c-format msgid "error: " msgstr "Fehler: " -#: command.y:1053 +#: command.y:1060 #, c-format msgid "can't read command (%s)\n" -msgstr "der Befehl kann nicht gelesen werden (»%s«)\n" +msgstr "der Befehl kann nicht gelesen werden („%s“)\n" -#: command.y:1067 +#: command.y:1074 #, c-format msgid "can't read command (%s)" -msgstr "der Befehl kann nicht gelesen werden (»%s«)" +msgstr "der Befehl kann nicht gelesen werden („%s“)" -#: command.y:1118 +#: command.y:1125 msgid "invalid character in command" msgstr "Ungültiges Zeichen im Befehl" -#: command.y:1154 +#: command.y:1161 #, c-format msgid "unknown command - \"%.*s\", try help" msgstr "unbekannter Befehl - »%.*s«, versuchen Sie es mit help" -#: command.y:1224 +#: command.y:1231 #, c-format msgid "%s" msgstr "%s" -#: command.y:1286 +#: command.y:1293 msgid "invalid character" msgstr "Ungültiges Zeichen" -#: command.y:1457 +#: command.y:1497 #, c-format msgid "undefined command: %s\n" msgstr "undefinierter Befehl: %s\n" @@ -1403,12 +1430,12 @@ msgstr "Das Programm läuft nicht." #: debug.c:448 debug.c:606 #, c-format msgid "can't read source file `%s' (%s)" -msgstr "Die Quelldatei »%s« kann nicht gelesen werden (%s)" +msgstr "Die Quelldatei „%s“ kann nicht gelesen werden (%s)" #: debug.c:453 #, c-format msgid "source file `%s' is empty.\n" -msgstr "Die Quelldatei »%s« ist leer.\n" +msgstr "Die Quelldatei „%s“ ist leer.\n" #: debug.c:480 msgid "no current source file." @@ -1417,19 +1444,19 @@ msgstr "keine aktuelle Quelldatei" #: debug.c:505 #, c-format msgid "cannot find source file named `%s' (%s)" -msgstr "Die Quelldatei »%s« kann nicht gefunden werden (%s)" +msgstr "Die Quelldatei „%s“ kann nicht gefunden werden (%s)" #: debug.c:529 #, c-format msgid "WARNING: source file `%s' modified since program compilation.\n" msgstr "" -"WARNUNG: Quelldatei »%s« wurde seit der Programmübersetzung verändert.\n" +"WARNUNG: Quelldatei „%s“ wurde seit der Programmübersetzung verändert.\n" #: debug.c:551 #, c-format msgid "line number %d out of range; `%s' has %d lines" msgstr "" -"die Zeilennummer %d ist außerhalb des gültigen Bereichs: »%s« hat %d Zeilen" +"die Zeilennummer %d ist außerhalb des gültigen Bereichs: „%s“ hat %d Zeilen" #: debug.c:611 #, c-format @@ -1439,7 +1466,7 @@ msgstr "Unerwartetes Dateiende beim Lesen von Datei »%s<<, Zeile %d" #: debug.c:620 #, c-format msgid "source file `%s' modified since start of program execution" -msgstr "Quelldatei »%s« wurde seit dem Start des Programmes verändert" +msgstr "Quelldatei „%s“ wurde seit dem Start des Programmes verändert" #: debug.c:732 #, c-format @@ -1546,12 +1573,12 @@ msgstr "" #: debug.c:1029 #, c-format msgid "no symbol `%s' in current context\n" -msgstr "im aktuellen Kontext gibt es kein Symbol mit Namen »%s«\n" +msgstr "im aktuellen Kontext gibt es kein Symbol mit Namen „%s“\n" #: debug.c:1041 debug.c:1427 #, c-format msgid "`%s' is not an array\n" -msgstr "»%s« ist kein Feld\n" +msgstr "„%s“ ist kein Feld\n" #: debug.c:1055 #, c-format @@ -1561,30 +1588,30 @@ msgstr "$%ld = nicht initialisiertes Feld\n" #: debug.c:1076 #, c-format msgid "array `%s' is empty\n" -msgstr "Das Feld »%s« ist leer\n" +msgstr "Das Feld „%s“ ist leer\n" #: debug.c:1119 debug.c:1171 #, c-format msgid "[\"%s\"] not in array `%s'\n" -msgstr "[\"%s\"] ist in Feld »%s« nicht vorhanden\n" +msgstr "[\"%s\"] ist in Feld „%s“ nicht vorhanden\n" #: debug.c:1175 #, c-format msgid "`%s[\"%s\"]' is not an array\n" msgstr "»%s[\"%s\"]« ist kein Feld\n" -#: debug.c:1236 debug.c:4964 +#: debug.c:1236 debug.c:5010 #, c-format msgid "`%s' is not a scalar variable" -msgstr "»%s« ist keine skalare Variable" +msgstr "„%s“ ist keine skalare Variable" -#: debug.c:1258 debug.c:4994 +#: debug.c:1258 debug.c:5040 #, c-format msgid "attempt to use array `%s[\"%s\"]' in a scalar context" msgstr "" "Es wird versucht, das Feld »%s[\"%s\"]« in einem Skalarkontext zu verwenden" -#: debug.c:1280 debug.c:5005 +#: debug.c:1280 debug.c:5051 #, c-format msgid "attempt to use scalar `%s[\"%s\"]' as array" msgstr "Es wird versucht, den Skalar »%s[\"%s\"]« als Feld zu verwenden" @@ -1592,7 +1619,7 @@ msgstr "Es wird versucht, den Skalar »%s[\"%s\"]« als Feld zu verwenden" #: debug.c:1423 #, c-format msgid "`%s' is a function" -msgstr "»%s« ist eine Funktion" +msgstr "„%s“ ist eine Funktion" #: debug.c:1465 #, c-format @@ -1612,7 +1639,7 @@ msgstr "Kein zu beobachtendes Element mit Nummer %ld" #: debug.c:1528 #, c-format msgid "%d: [\"%s\"] not in array `%s'\n" -msgstr "%d: [\"%s\"] ist in Feld »%s« nicht vorhanden\n" +msgstr "%d: [\"%s\"] ist in Feld „%s“ nicht vorhanden\n" #: debug.c:1767 msgid "attempt to use scalar value as array" @@ -1635,12 +1662,12 @@ msgstr "" #: debug.c:1900 #, c-format msgid " in file `%s', line %d\n" -msgstr " in Datei »%s«, Zeile %d\n" +msgstr " in Datei „%s“, Zeile %d\n" #: debug.c:1921 #, c-format msgid " at `%s':%d" -msgstr " bei »%s«:%d" +msgstr " bei „%s“:%d" #: debug.c:1937 debug.c:2000 #, c-format @@ -1688,12 +1715,12 @@ msgstr "Breakpont %d wird auf Datei %s, Zeile %d gesetzt\n" #: debug.c:2340 #, c-format msgid "Can't set breakpoint in file `%s'\n" -msgstr "In Datei »%s« kann kein Breakpoint gesetzt werden\n" +msgstr "In Datei „%s“ kann kein Breakpoint gesetzt werden\n" #: debug.c:2369 debug.c:2492 debug.c:3350 #, c-format msgid "line number %d in file `%s' out of range" -msgstr "Zeile Nummer %d in Datei »%s« liegt außerhalb des gültigen Bereichs" +msgstr "Zeile Nummer %d in Datei „%s“ liegt außerhalb des gültigen Bereichs" #: debug.c:2373 #, c-format @@ -1703,17 +1730,17 @@ msgstr "Die Regel kann nicht gefunden werden!!!\n" #: debug.c:2375 #, c-format msgid "Can't set breakpoint at `%s':%d\n" -msgstr "In »%s«:%d kann kein Breakpoint gesetzt werden\n" +msgstr "In „%s“:%d kann kein Breakpoint gesetzt werden\n" #: debug.c:2387 #, c-format msgid "Can't set breakpoint in function `%s'\n" -msgstr "In Funktion »%s« kann kein Breakpoint gesetzt werden\n" +msgstr "In Funktion „%s“ kann kein Breakpoint gesetzt werden\n" #: debug.c:2403 #, c-format msgid "breakpoint %d set at file `%s', line %d is unconditional\n" -msgstr "Breakpoint %d gestzt auf Datei »%s« Zeile %d ist bedingungslos\n" +msgstr "Breakpoint %d gestzt auf Datei „%s“ Zeile %d ist bedingungslos\n" #: debug.c:2508 debug.c:2530 #, c-format @@ -1723,12 +1750,12 @@ msgstr "Breakpoint %d wurde gelöscht" #: debug.c:2514 #, c-format msgid "No breakpoint(s) at entry to function `%s'\n" -msgstr "Am Beginn von Funktion »%s« gibt es keine Breakpoints\n" +msgstr "Am Beginn von Funktion „%s“ gibt es keine Breakpoints\n" #: debug.c:2541 #, c-format msgid "No breakpoint at file `%s', line #%d\n" -msgstr "Bei Datei »%s« Zeile %d gibt es keine Breakpoints\n" +msgstr "Bei Datei „%s“ Zeile %d gibt es keine Breakpoints\n" #: debug.c:2596 debug.c:2637 debug.c:2657 debug.c:2700 msgid "invalid breakpoint number" @@ -1833,17 +1860,17 @@ msgstr "»return« hat in main() des äußersten Rahmens keine Bedeutung\n" #: debug.c:3369 #, c-format msgid "Can't find specified location in function `%s'\n" -msgstr "Die angegebene Position in Funktion »%s« kann nicht gefunden werden\n" +msgstr "Die angegebene Position in Funktion „%s“ kann nicht gefunden werden\n" #: debug.c:3377 #, c-format msgid "invalid source line %d in file `%s'" -msgstr "ungültige Quellzeilennummer %d in Datei »%s«" +msgstr "ungültige Quellzeilennummer %d in Datei „%s“" #: debug.c:3392 #, c-format msgid "Can't find specified location %d in file `%s'\n" -msgstr "Der Zielpunkt %d in Datei »%s« ist nicht auffindbar\n" +msgstr "Der Zielpunkt %d in Datei „%s“ ist nicht auffindbar\n" #: debug.c:3424 #, c-format @@ -1863,109 +1890,109 @@ msgstr "Stopp in %s ...\n" #: debug.c:3543 #, c-format msgid "'finish' not meaningful with non-local jump '%s'\n" -msgstr "»finish« hat bei dem nichtlokalen Sprung »%s« keine Bedeutung\n" +msgstr "»finish« hat bei dem nichtlokalen Sprung „%s“ keine Bedeutung\n" #: debug.c:3550 #, c-format msgid "'until' not meaningful with non-local jump '%s'\n" -msgstr "»finish« hat bei dem nichtlokalen Sprung »%s« keine Bedeutung\n" +msgstr "»finish« hat bei dem nichtlokalen Sprung „%s“ keine Bedeutung\n" -#: debug.c:4185 +#: debug.c:4231 msgid "\t------[Enter] to continue or q [Enter] to quit------" msgstr "\t-[Eingabe] um fort zu fahren oder b [Eingabe] für geenden -" -#: debug.c:4186 +#: debug.c:4232 msgid "q" msgstr "b" -#: debug.c:5001 +#: debug.c:5047 #, c-format msgid "[\"%s\"] not in array `%s'" -msgstr "[\"%s\"] ist in Feld »%s« nicht vorhanden" +msgstr "[\"%s\"] ist in Feld „%s“ nicht vorhanden" -#: debug.c:5207 +#: debug.c:5253 #, c-format msgid "sending output to stdout\n" msgstr "Ausgabe wird an die Standardausgabe geschickt\n" -#: debug.c:5247 +#: debug.c:5293 msgid "invalid number" msgstr "ungültige Zahl" -#: debug.c:5381 +#: debug.c:5427 #, c-format msgid "`%s' not allowed in current context; statement ignored" msgstr "" -"»%s« ist im aktuellen Kontext nicht zulässig; der Ausdruck wird ignoriert" +"„%s“ ist im aktuellen Kontext nicht zulässig; der Ausdruck wird ignoriert" -#: debug.c:5389 +#: debug.c:5435 msgid "`return' not allowed in current context; statement ignored" msgstr "" "»reeturn« ist im aktuellen Kontext nicht zulässig; der Ausdruck wird " "ignoriert" -#: debug.c:5604 +#: debug.c:5650 #, c-format msgid "No symbol `%s' in current context" -msgstr "Im aktuelln Kontext gibt es kein Symbol »%s«" +msgstr "Im aktuelln Kontext gibt es kein Symbol „%s“" -#: dfa.c:1062 dfa.c:1065 dfa.c:1084 dfa.c:1094 dfa.c:1106 dfa.c:1142 -#: dfa.c:1151 dfa.c:1154 dfa.c:1159 dfa.c:1173 dfa.c:1221 +#: dfa.c:1090 dfa.c:1093 dfa.c:1112 dfa.c:1122 dfa.c:1135 dfa.c:1163 dfa.c:1172 +#: dfa.c:1175 dfa.c:1180 dfa.c:1202 dfa.c:1205 msgid "unbalanced [" msgstr "nicht geschlossene [" -#: dfa.c:1118 +#: dfa.c:1148 msgid "invalid character class" msgstr "ungültige Zeichenklasse" -#: dfa.c:1264 +#: dfa.c:1271 msgid "character class syntax is [[:space:]], not [:space:]" msgstr "Die Syntax für Zeichenklassen ist [[:space:]], nicht [:space:]" -#: dfa.c:1326 +#: dfa.c:1332 msgid "unfinished \\ escape" msgstr "nicht beendetes \\ Escape" -#: dfa.c:1473 +#: dfa.c:1499 msgid "invalid content of \\{\\}" msgstr "Ungültiger Inhalt von \\{\\}" -#: dfa.c:1476 +#: dfa.c:1502 msgid "regular expression too big" msgstr "Regulärer Ausdruck ist zu groß" -#: dfa.c:1911 +#: dfa.c:1916 msgid "unbalanced (" msgstr "nicht geschlossene (" -#: dfa.c:2037 +#: dfa.c:2044 msgid "no syntax specified" msgstr "keine Syntax angegeben" -#: dfa.c:2045 +#: dfa.c:2052 msgid "unbalanced )" msgstr "nicht geöffnete )" -#: eval.c:396 +#: eval.c:398 #, c-format msgid "unknown nodetype %d" msgstr "Unbekannter Knotentyp %d" -#: eval.c:407 eval.c:421 +#: eval.c:409 eval.c:423 #, c-format msgid "unknown opcode %d" msgstr "Unbekannter Opcode %d" -#: eval.c:418 +#: eval.c:420 #, c-format msgid "opcode %s not an operator or keyword" msgstr "Opcode %s ist weder ein Operator noch ein Schlüsselwort" -#: eval.c:474 +#: eval.c:476 msgid "buffer overflow in genflags2str" msgstr "Pufferüberlauf in genflags2str" -#: eval.c:676 +#: eval.c:678 #, c-format msgid "" "\n" @@ -1976,308 +2003,300 @@ msgstr "" "\t# Funktions-Aufruf-Stack\n" "\n" -#: eval.c:705 +#: eval.c:707 msgid "`IGNORECASE' is a gawk extension" msgstr "»IGNORECASE« ist eine gawk-Erweiterung" -#: eval.c:737 +#: eval.c:739 msgid "`BINMODE' is a gawk extension" msgstr "»BINMODE« ist eine gawk-Erweiterung" -#: eval.c:795 +#: eval.c:797 #, c-format msgid "BINMODE value `%s' is invalid, treated as 3" -msgstr "BINMODE Wert »%s« ist ungültig und wird als 3 behandelt" +msgstr "BINMODE Wert „%s“ ist ungültig und wird als 3 behandelt" -#: eval.c:912 +#: eval.c:914 #, c-format msgid "bad `%sFMT' specification `%s'" -msgstr "Falsche »%sFMT«-Angabe »%s«" +msgstr "Falsche »%sFMT«-Angabe „%s“" -#: eval.c:996 +#: eval.c:988 msgid "turning off `--lint' due to assignment to `LINT'" msgstr "»--lint« wird abgeschaltet, da an »LINT« zugewiesen wird" -#: eval.c:1174 +#: eval.c:1166 #, c-format msgid "reference to uninitialized argument `%s'" -msgstr "Referenz auf nicht initialisiertes Argument »%s«" +msgstr "Referenz auf nicht initialisiertes Argument „%s“" -#: eval.c:1175 +#: eval.c:1167 #, c-format msgid "reference to uninitialized variable `%s'" -msgstr "Referenz auf die nicht initialisierte Variable »%s«" +msgstr "Referenz auf die nicht initialisierte Variable „%s“" -#: eval.c:1193 +#: eval.c:1185 msgid "attempt to field reference from non-numeric value" msgstr "Nicht numerischer Wert für Feldreferenz verwendet" -#: eval.c:1195 +#: eval.c:1187 msgid "attempt to field reference from null string" msgstr "Referenz auf ein Feld von einem Null-String" -#: eval.c:1203 +#: eval.c:1195 #, c-format msgid "attempt to access field %ld" msgstr "Versuch des Zugriffs auf Feld %ld" -#: eval.c:1212 +#: eval.c:1204 #, c-format msgid "reference to uninitialized field `$%ld'" msgstr "Referenz auf das nicht initialisierte Feld »$%ld«" -#: eval.c:1299 +#: eval.c:1291 #, c-format msgid "function `%s' called with more arguments than declared" -msgstr "Funktion »%s« mit zu vielen Argumenten aufgerufen" +msgstr "Funktion „%s“ mit zu vielen Argumenten aufgerufen" -#: eval.c:1506 +#: eval.c:1498 #, c-format msgid "unwind_stack: unexpected type `%s'" -msgstr "unwind_stack: unerwarteter Typ »%s«" +msgstr "unwind_stack: unerwarteter Typ „%s“" -#: eval.c:1602 +#: eval.c:1594 msgid "division by zero attempted in `/='" msgstr "Division durch Null versucht in »/=«" -#: eval.c:1609 +#: eval.c:1601 #, c-format msgid "division by zero attempted in `%%='" msgstr "Division durch Null versucht in »%%=«" -#: ext.c:65 ext.c:147 +#: ext.c:66 ext.c:148 msgid "extensions are not allowed in sandbox mode" msgstr "Erweiterungen sind im Sandbox-Modus nicht erlaubt" -#: ext.c:68 +#: ext.c:69 msgid "-l / @load are gawk extensions" msgstr "-l / @load sind gawk-Erweiterungen" -#: ext.c:71 +#: ext.c:72 msgid "load_ext: received NULL lib_name" msgstr "load_ext: NULL lib_name erhalten" -#: ext.c:74 +#: ext.c:75 #, c-format msgid "load_ext: cannot open library `%s' (%s)\n" -msgstr "load_ext: Bibliothek »%s« kann nicht geöffnet werden (%s)\n" +msgstr "load_ext: Bibliothek „%s“ kann nicht geöffnet werden (%s)\n" -#: ext.c:80 +#: ext.c:81 #, c-format msgid "" "load_ext: library `%s': does not define `plugin_is_GPL_compatible' (%s)\n" msgstr "" -"load_ext: Bibliothek »%s«: definiert »plugin_is_GPL_compatible« nicht (%s)\n" +"load_ext: Bibliothek „%s“: definiert »plugin_is_GPL_compatible« nicht (%s)\n" -#: ext.c:86 +#: ext.c:87 #, c-format msgid "load_ext: library `%s': cannot call function `%s' (%s)\n" msgstr "" -"load_ext: Bibliothek »%s«: Funktion »%s« kann nicht aufgerufen werden (%s)\n" +"load_ext: Bibliothek „%s“: Funktion „%s“ kann nicht aufgerufen werden (%s)\n" -#: ext.c:90 +#: ext.c:91 #, c-format msgid "load_ext: library `%s' initialization routine `%s' failed\n" msgstr "" "load_ext: die Initialisierungsroutine %2$s von Bibliothek »%1$s« ist " "gescheitert\n" -#: ext.c:150 +#: ext.c:151 msgid "`extension' is a gawk extension" msgstr "»extension« ist eine gawk-Erweiterung" -#: ext.c:153 +#: ext.c:154 msgid "extension: received NULL lib_name" msgstr "extension: NULL lib_name erhalten" -#: ext.c:156 +#: ext.c:157 #, c-format msgid "extension: cannot open library `%s' (%s)" -msgstr "extension: Bibliothek »%s« kann nicht geöffnet werden (%s)" +msgstr "extension: Bibliothek „%s“ kann nicht geöffnet werden (%s)" -#: ext.c:162 +#: ext.c:163 #, c-format msgid "" "extension: library `%s': does not define `plugin_is_GPL_compatible' (%s)" msgstr "" -"extension: Bibliothek »%s«: definiert »plugin_is_GPL_compatible« nicht (%s)" +"extension: Bibliothek „%s“: definiert »plugin_is_GPL_compatible« nicht (%s)" -#: ext.c:166 +#: ext.c:167 #, c-format msgid "extension: library `%s': cannot call function `%s' (%s)" msgstr "" -"extension: Bibliothek »%s«: Funktion »%s« kann nicht aufgerufen werden (%s)" +"extension: Bibliothek „%s“: Funktion „%s“ kann nicht aufgerufen werden (%s)" -#: ext.c:197 +#: ext.c:198 msgid "make_builtin: missing function name" msgstr "make_builtin: Funktionsname fehlt" -#: ext.c:212 +#: ext.c:213 #, c-format msgid "make_builtin: can't redefine function `%s'" -msgstr "make_builtin: Funktion »%s« kann nicht neu definiert werden" +msgstr "make_builtin: Funktion „%s“ kann nicht neu definiert werden" -#: ext.c:216 +#: ext.c:217 #, c-format msgid "make_builtin: function `%s' already defined" -msgstr "make_builtin: Funktion »%s« wurde bereits definiert" +msgstr "make_builtin: Funktion „%s“ wurde bereits definiert" -#: ext.c:220 +#: ext.c:221 #, c-format msgid "make_builtin: function name `%s' previously defined" -msgstr "make_builtin: Funktion »%s« wurde bereits vorher definiert" +msgstr "make_builtin: Funktion „%s“ wurde bereits vorher definiert" -#: ext.c:222 +#: ext.c:223 #, c-format msgid "make_builtin: can't use gawk built-in `%s' as function name" msgstr "" -"make_builtin: die in gawk eingebaute Funktion »%s« kann nicht als " +"make_builtin: die in gawk eingebaute Funktion „%s“ kann nicht als " "Funktionsname verwendet werden" -#: ext.c:225 ext.c:280 +#: ext.c:226 ext.c:281 #, c-format msgid "make_builtin: negative argument count for function `%s'" -msgstr "make_builtin: negative Anzahl von Argumenten für Funktion »%s«" +msgstr "make_builtin: negative Anzahl von Argumenten für Funktion „%s“" -#: ext.c:252 +#: ext.c:253 msgid "extension: missing function name" msgstr "Erweiterung: Funktionsname fehlt" -#: ext.c:255 ext.c:259 +#: ext.c:256 ext.c:260 #, c-format msgid "extension: illegal character `%c' in function name `%s'" -msgstr "extension: unzulässiges Zeichen »%c« in Funktionsname »%s«" +msgstr "extension: unzulässiges Zeichen »%c« in Funktionsname „%s“" -#: ext.c:267 +#: ext.c:268 #, c-format msgid "extension: can't redefine function `%s'" -msgstr "extension: Funktion »%s« kann nicht neu definiert werden" +msgstr "extension: Funktion „%s“ kann nicht neu definiert werden" -#: ext.c:271 +#: ext.c:272 #, c-format msgid "extension: function `%s' already defined" -msgstr "extension: Funktion »%s« wurde bereits definiert" +msgstr "extension: Funktion „%s“ wurde bereits definiert" -#: ext.c:275 +#: ext.c:276 #, c-format msgid "extension: function name `%s' previously defined" -msgstr "extension: Funktion »%s« wurde bereits vorher definiert" +msgstr "extension: Funktion „%s“ wurde bereits vorher definiert" -#: ext.c:277 +#: ext.c:278 #, c-format msgid "extension: can't use gawk built-in `%s' as function name" msgstr "" -"extension: die eingebaute Funktion »%s« kann nicht als Funktionsname " +"extension: die eingebaute Funktion „%s“ kann nicht als Funktionsname " "verwendet werden" -#: ext.c:351 -#, c-format -msgid "function `%s' defined to take no more than %d argument(s)" -msgstr "" -"Funktion »%s« wird als Funktion definiert, die nie mehr als %d Argument(e) " -"akzeptiert" - -#: ext.c:354 -#, c-format -msgid "function `%s': missing argument #%d" -msgstr "Funktion »%s«: fehlendes Argument #%d" - -#: ext.c:371 +#: ext.c:358 #, c-format msgid "function `%s': argument #%d: attempt to use scalar as an array" msgstr "" -"Funktion »%s«: Argument #%d: Es wird versucht, einen Skalar als Feld zu " +"Funktion „%s“: Argument #%d: Es wird versucht, einen Skalar als Feld zu " "verwenden" -#: ext.c:375 +#: ext.c:362 #, c-format msgid "function `%s': argument #%d: attempt to use array as a scalar" msgstr "" -"Funktion »%s«: Argument #%d: Es wird versucht, ein Feld als Skalar zu " +"Funktion „%s“: Argument #%d: Es wird versucht, ein Feld als Skalar zu " "verwenden" -#: ext.c:389 +#: ext.c:376 msgid "dynamic loading of library not supported" msgstr "das dynamische Laden von Bibliotheken wird nicht unterstützt" -#: extension/filefuncs.c:159 +#: extension/filefuncs.c:164 msgid "chdir: called with incorrect number of arguments, expecting 1" msgstr "" "chdir: Aufgruf mit einer ungültigen Anzahl von Argumenten, 1 wird erwartet" -#: extension/filefuncs.c:439 +#: extension/filefuncs.c:444 #, c-format msgid "stat: unable to read symbolic link `%s'" -msgstr "stst: die symbolische Verknüpfung »%s« kann nicht gelesenb werden" +msgstr "stst: die symbolische Verknüpfung „%s“ kann nicht gelesenb werden" -#: extension/filefuncs.c:472 +#: extension/filefuncs.c:477 msgid "stat: called with wrong number of arguments" msgstr "stat: Aufruf mit falscher Anzahl Argumenten" -#: extension/filefuncs.c:479 +#: extension/filefuncs.c:484 extension/filefuncs.c:534 msgid "stat: bad parameters" msgstr "stat: ungültige Parameter" -#: extension/filefuncs.c:533 +#: extension/filefuncs.c:527 +msgid "statvfs: called with wrong number of arguments" +msgstr "statvfs: Aufruf mit falscher Anzahl von Argumenten" + +#: extension/filefuncs.c:598 #, c-format msgid "fts init: could not create variable %s" msgstr "fts_init: Variable %s konnte nicht angelegt werden" -#: extension/filefuncs.c:554 +#: extension/filefuncs.c:619 msgid "fts is not supported on this system" msgstr "fts wird auf diesem System nicht unterstützt" -#: extension/filefuncs.c:573 +#: extension/filefuncs.c:638 msgid "fill_stat_element: could not create array" msgstr "fill_stat_element: das Feld konnte nicht angelegt werden" -#: extension/filefuncs.c:582 +#: extension/filefuncs.c:647 msgid "fill_stat_element: could not set element" msgstr "fill_stat_element: das Element konnte nicht gesetzt werden" -#: extension/filefuncs.c:597 +#: extension/filefuncs.c:662 msgid "fill_path_element: could not set element" msgstr "fill_path_element: das Element konnte nicht gesetzt werden" -#: extension/filefuncs.c:613 +#: extension/filefuncs.c:678 msgid "fill_error_element: could not set element" msgstr "fill_error_element: das Element konnte nicht gesetzt werden" -#: extension/filefuncs.c:660 extension/filefuncs.c:707 +#: extension/filefuncs.c:725 extension/filefuncs.c:772 msgid "fts-process: could not create array" msgstr "fts-process: das Feld konnte nicht anglegt werden" -#: extension/filefuncs.c:670 extension/filefuncs.c:717 -#: extension/filefuncs.c:735 +#: extension/filefuncs.c:735 extension/filefuncs.c:782 +#: extension/filefuncs.c:800 msgid "fts-process: could not set element" msgstr "fts-process: das Element konnte nicht gesetzt werden" -#: extension/filefuncs.c:784 +#: extension/filefuncs.c:849 msgid "fts: called with incorrect number of arguments, expecting 3" msgstr "fts: Aufruf mit falscher Anzahl an Argumenten, es werden 3 erwartet" -#: extension/filefuncs.c:787 +#: extension/filefuncs.c:852 msgid "fts: bad first parameter" msgstr "fts: ungültiger Parameter" -#: extension/filefuncs.c:793 +#: extension/filefuncs.c:858 msgid "fts: bad second parameter" msgstr "fts: ungültiger zweiter Parameter" -#: extension/filefuncs.c:799 +#: extension/filefuncs.c:864 msgid "fts: bad third parameter" msgstr "%s: ist ein Parameter" -#: extension/filefuncs.c:806 +#: extension/filefuncs.c:871 msgid "fts: could not flatten array\n" msgstr "fts: ungültiger dritter Parameter\n" -#: extension/filefuncs.c:824 +#: extension/filefuncs.c:889 msgid "fts: ignoring sneaky FTS_NOSTAT flag. nyah, nyah, nyah." msgstr "" "fts: die heimtückische Kennung FTS_NOSTAT wird ignoriert, ätsch bätsch." -#: extension/filefuncs.c:841 +#: extension/filefuncs.c:906 msgid "fts: clear_array() failed\n" msgstr "fts: clear_array() ist gescheitert\n" @@ -2339,93 +2358,93 @@ msgstr "wait: Aufruf ohne Argumente" msgid "wait: called with too many arguments" msgstr "wait: Aufruf mit zu vielen Argumenten" -#: extension/inplace.c:130 +#: extension/inplace.c:131 msgid "inplace_begin: in-place editing already active" msgstr "inplace_begin: direktes Editieren ist bereits aktiv" -#: extension/inplace.c:133 extension/inplace.c:210 +#: extension/inplace.c:134 extension/inplace.c:211 #, c-format msgid "inplace_begin: expects 2 arguments but called with %d" msgstr "inplace_begin: erwartet 2 Argumente aber wurde aufgerufen mit %d" -#: extension/inplace.c:136 +#: extension/inplace.c:137 msgid "inplace_begin: cannot retrieve 1st argument as a string filename" msgstr "inplace_begin: das erste Argument ist kein Dateiname" -#: extension/inplace.c:144 +#: extension/inplace.c:145 #, c-format msgid "inplace_begin: disabling in-place editing for invalid FILENAME `%s'" msgstr "" "inplace_begin: direktes Editieren wird deaktiviert wegen des ungültigen " -"Dateinamens »%s«" +"Dateinamens „%s“" -#: extension/inplace.c:151 +#: extension/inplace.c:152 #, c-format msgid "inplace_begin: Cannot stat `%s' (%s)" -msgstr "inplace_begin: Status von »%s« kann nicht ermittelt werden (%s)" +msgstr "inplace_begin: Status von „%s“ kann nicht ermittelt werden (%s)" -#: extension/inplace.c:158 +#: extension/inplace.c:159 #, c-format msgid "inplace_begin: `%s' is not a regular file" -msgstr "inplace_begin: »%s« ist keine reguläre Datei" +msgstr "inplace_begin: „%s“ ist keine reguläre Datei" -#: extension/inplace.c:169 +#: extension/inplace.c:170 #, c-format msgid "inplace_begin: mkstemp(`%s') failed (%s)" -msgstr "inplace_begin: mkstemp(»%s«) ist gescheitert (%s)" +msgstr "inplace_begin: mkstemp(„%s“) ist gescheitert (%s)" -#: extension/inplace.c:181 +#: extension/inplace.c:182 #, c-format msgid "inplace_begin: chmod failed (%s)" msgstr "inplace_begin:: chmod ist gescheitert (%s)" -#: extension/inplace.c:188 +#: extension/inplace.c:189 #, c-format msgid "inplace_begin: dup(stdout) failed (%s)" msgstr "inplace_begin: dup(stdout) ist gescheitert (%s)" -#: extension/inplace.c:191 +#: extension/inplace.c:192 #, c-format msgid "inplace_begin: dup2(%d, stdout) failed (%s)" msgstr "inplace_begin: dup2(%d, stdout) ist gescheitert (%s)" -#: extension/inplace.c:194 +#: extension/inplace.c:195 #, c-format msgid "inplace_begin: close(%d) failed (%s)" msgstr "inplace_begin: close(%d) ist gescheitert (%s)" -#: extension/inplace.c:213 +#: extension/inplace.c:214 msgid "inplace_end: cannot retrieve 1st argument as a string filename" msgstr "inplace_end: das erste Argument ist kein Dateiname" -#: extension/inplace.c:220 +#: extension/inplace.c:221 msgid "inplace_end: in-place editing not active" msgstr "inplace_end: direktes Editieren ist nicht aktiv" -#: extension/inplace.c:226 +#: extension/inplace.c:227 #, c-format msgid "inplace_end: dup2(%d, stdout) failed (%s)" msgstr "inplace_end: dup2(%d, stdout) ist gescheitert (%s)" -#: extension/inplace.c:229 +#: extension/inplace.c:230 #, c-format msgid "inplace_end: close(%d) failed (%s)" msgstr "inplace_end: close(%d) ist gescheitert (%s)" -#: extension/inplace.c:233 +#: extension/inplace.c:234 #, c-format msgid "inplace_end: fsetpos(stdout) failed (%s)" msgstr "inplace_end: fsetpos(stdout) ist gescheitert (%s)" -#: extension/inplace.c:246 +#: extension/inplace.c:247 #, c-format msgid "inplace_end: link(`%s', `%s') failed (%s)" -msgstr "inplace_end: link(»%s«, »%s«) ist gescheitert (%s)" +msgstr "inplace_end: link(„%s“, „%s“) ist gescheitert (%s)" -#: extension/inplace.c:256 +#: extension/inplace.c:257 #, c-format msgid "inplace_end: rename(`%s', `%s') failed (%s)" -msgstr "inplace_end: rename(»%s«, »%s«) ist gescheitert (%s)" +msgstr "inplace_end: rename(„%s“, „%s“) ist gescheitert (%s)" #: extension/ordchr.c:69 msgid "ord: called with too many arguments" @@ -2451,7 +2470,7 @@ msgstr "chr: Aufruf ohne Argumente" msgid "chr: called with inappropriate argument(s)" msgstr "chr: Aufruf mit ungeeigneten Argumenten" -#: extension/readdir.c:281 +#: extension/readdir.c:271 #, c-format msgid "dir_take_control_of: opendir/fdopendir failed: %s" msgstr "dir_take_control_of: opendir/fdopendir ist gescheitert: %s" @@ -2464,54 +2483,54 @@ msgstr "readfile: Aufruf mit zu vielen Argumenten" msgid "readfile: called with no arguments" msgstr "readfile: Aufruf ohen Argumente" -#: extension/revoutput.c:125 +#: extension/revoutput.c:127 msgid "revoutput: could not initialize REVOUT variable" msgstr "revoutput: die Variable REVOUT konnte nicht initialisiert werden" -#: extension/rwarray.c:124 extension/rwarray0.c:109 +#: extension/rwarray.c:113 extension/rwarray0.c:109 msgid "writea: called with too many arguments" msgstr "writea: Aufruf mit zu vielen Argumenten" -#: extension/rwarray.c:131 extension/rwarray0.c:116 +#: extension/rwarray.c:120 extension/rwarray0.c:116 #, c-format msgid "do_writea: argument 0 is not a string\n" msgstr "do_writea: das Argument 0 ist keine Zeichenkette\n" -#: extension/rwarray.c:137 extension/rwarray0.c:122 +#: extension/rwarray.c:126 extension/rwarray0.c:122 #, c-format msgid "do_writea: argument 1 is not an array\n" msgstr "do_writea: das Argument 1 ist kein Feld\n" -#: extension/rwarray.c:184 extension/rwarray0.c:169 +#: extension/rwarray.c:173 extension/rwarray0.c:169 #, c-format msgid "write_array: could not flatten array\n" msgstr "write_array: das Feld konnte nicht niveliert werden\n" -#: extension/rwarray.c:198 extension/rwarray0.c:183 +#: extension/rwarray.c:187 extension/rwarray0.c:183 #, c-format msgid "write_array: could not release flattened array\n" msgstr "write_array: das nivelierte Feld konnte nicht frei gegeben werden\n" -#: extension/rwarray.c:280 extension/rwarray0.c:265 +#: extension/rwarray.c:269 extension/rwarray0.c:265 msgid "reada: called with too many arguments" msgstr "reada: Aufruf mit zu vielen Argumenten" -#: extension/rwarray.c:287 extension/rwarray0.c:272 +#: extension/rwarray.c:276 extension/rwarray0.c:272 #, c-format msgid "do_reada: argument 0 is not a string\n" msgstr "do_reada: Argument 0 ist keine Zeichenkette\n" -#: extension/rwarray.c:293 extension/rwarray0.c:278 +#: extension/rwarray.c:282 extension/rwarray0.c:278 #, c-format msgid "do_reada: argument 1 is not an array\n" msgstr "do_reada: Argument 1 ist kein Feld\n" -#: extension/rwarray.c:337 extension/rwarray0.c:322 +#: extension/rwarray.c:326 extension/rwarray0.c:322 #, c-format msgid "do_reada: clear_array failed\n" msgstr "do_reada: clear_array ist gescheitert\n" -#: extension/rwarray.c:374 extension/rwarray0.c:358 +#: extension/rwarray.c:363 extension/rwarray0.c:358 #, c-format msgid "read_array: set_array_element failed\n" msgstr "read_array: set_array_element ist gescheitert\n" @@ -2615,7 +2634,7 @@ msgstr "»FIELDWIDTHS« ist eine gawk-Erweiterung" #: field.c:1184 #, c-format msgid "invalid FIELDWIDTHS value, near `%s'" -msgstr "ungültiger FIELDWIDTHS-Wert nah bei »%s«" +msgstr "ungültiger FIELDWIDTHS-Wert nah bei „%s“" #: field.c:1257 msgid "null string for `FS' is a gawk extension" @@ -2625,7 +2644,7 @@ msgstr "Null-String für »FS« ist eine gawk-Erweiterung" msgid "old awk does not support regexps as value of `FS'" msgstr "Das alte awk unterstützt keine regulären Ausdrücke als Wert von »FS«" -#: field.c:1380 +#: field.c:1384 msgid "`FPAT' is a gawk extension" msgstr "»FPAT« ist eine gawk-Erweiterung" @@ -2633,28 +2652,28 @@ msgstr "»FPAT« ist eine gawk-Erweiterung" msgid "awk_value_to_node: received null retval" msgstr "awk_value_to_node: Rückgabewert Null erhalten" -#: gawkapi.c:384 +#: gawkapi.c:383 msgid "node_to_awk_value: received null node" msgstr "node_to_awk_value: Null-Knoten erhalten" -#: gawkapi.c:387 +#: gawkapi.c:386 msgid "node_to_awk_value: received null val" msgstr "node_to_awk_value: Null-Wert erhalten" -#: gawkapi.c:809 +#: gawkapi.c:808 msgid "remove_element: received null array" msgstr "remove_element: Null-Feld erhalten" -#: gawkapi.c:812 +#: gawkapi.c:811 msgid "remove_element: received null subscript" msgstr "remove_element: Null-Index erhalten" -#: gawkapi.c:949 +#: gawkapi.c:948 #, c-format msgid "api_flatten_array: could not convert index %d\n" msgstr "api_flatten_array: Index %d konnte nicht umgewandelt werden\n" -#: gawkapi.c:954 +#: gawkapi.c:953 #, c-format msgid "api_flatten_array: could not convert value %d\n" msgstr "api_flatten_array: Wert %d konnte nicht umgewandelt werden\n" @@ -2662,7 +2681,7 @@ msgstr "api_flatten_array: Wert %d konnte nicht umgewandelt werden\n" #: getopt.c:604 getopt.c:633 #, c-format msgid "%s: option '%s' is ambiguous; possibilities:" -msgstr "%s: Option »%s« ist mehrdeutig; Mögliche Bedautung:" +msgstr "%s: Option „%s“ ist mehrdeutig; Mögliche Bedautung:" #: getopt.c:679 getopt.c:683 #, c-format @@ -2677,7 +2696,7 @@ msgstr "%s: Die Option »%c%s« hat keine Argument\n" #: getopt.c:740 getopt.c:759 #, c-format msgid "%s: option '--%s' requires an argument\n" -msgstr "%s: Die Option »%s« erfordert ein Argument\n" +msgstr "%s: Die Option „%s“ erfordert ein Argument\n" #: getopt.c:797 getopt.c:800 #, c-format @@ -2714,502 +2733,511 @@ msgstr "%s: Die Option »-W %s« hat keine Argumente\n" msgid "%s: option '-W %s' requires an argument\n" msgstr "%s: Die Option »-W %s« erfordert ein Argument\n" -#: io.c:423 +#: io.c:426 #, c-format msgid "command line argument `%s' is a directory: skipped" msgstr "" -"das Kommandozeilen-Argument »%s« ist ein Verzeichnis: wird übersprungen" +"das Kommandozeilen-Argument „%s“ ist ein Verzeichnis: wird übersprungen" -#: io.c:426 io.c:544 +#: io.c:429 io.c:547 #, c-format msgid "cannot open file `%s' for reading (%s)" -msgstr "Die Datei »%s« kann nicht zum Lesen geöffnet werden (%s)" +msgstr "Die Datei „%s“ kann nicht zum Lesen geöffnet werden (%s)" -#: io.c:671 +#: io.c:674 #, c-format msgid "close of fd %d (`%s') failed (%s)" -msgstr "Das Schließen des Dateideskriptors %d (»%s«) ist gescheitert (%s)" +msgstr "Das Schließen des Dateideskriptors %d („%s“) ist gescheitert (%s)" -#: io.c:749 +#: io.c:752 msgid "redirection not allowed in sandbox mode" msgstr "Umlenkungen sind im Sandbox-Modus nicht erlaubt" -#: io.c:783 +#: io.c:786 #, c-format msgid "expression in `%s' redirection only has numeric value" msgstr "" -"Der Ausdruck in einer Umlenkung mittels »%s« hat nur einen numerischen Wert" +"Der Ausdruck in einer Umlenkung mittels „%s“ hat nur einen numerischen Wert" -#: io.c:789 +#: io.c:792 #, c-format msgid "expression for `%s' redirection has null string value" -msgstr "Der Ausdruck für eine Umlenkung mittels »%s« ist ein leerer String" +msgstr "Der Ausdruck für eine Umlenkung mittels „%s“ ist ein leerer String" -#: io.c:794 +#: io.c:797 #, c-format msgid "filename `%s' for `%s' redirection may be result of logical expression" msgstr "" -"Der Dateiname »%s« für eine Umlenkung mittels »%s« kann das Ergebnis eines " +"Der Dateiname „%s“ für eine Umlenkung mittels „%s“ kann das Ergebnis eines " "logischen Ausdrucks sein" -#: io.c:842 +#: io.c:845 #, c-format msgid "unnecessary mixing of `>' and `>>' for file `%.*s'" msgstr "Unnötige Kombination von »>« und »>>« für Datei »%.*s«" -#: io.c:896 +#: io.c:902 #, c-format msgid "can't open pipe `%s' for output (%s)" -msgstr "Die Pipe »%s« kann nicht für die Ausgabe geöffnet werden (%s)" +msgstr "Die Pipe „%s“ kann nicht für die Ausgabe geöffnet werden (%s)" -#: io.c:906 +#: io.c:915 #, c-format msgid "can't open pipe `%s' for input (%s)" -msgstr "Die Pipe »%s« kann nicht für die Eingabe geöffnet werden (%s)" +msgstr "Die Pipe „%s“ kann nicht für die Eingabe geöffnet werden (%s)" -#: io.c:937 +#: io.c:946 #, c-format msgid "can't open two way pipe `%s' for input/output (%s)" msgstr "" -"Die bidirektionale Pipe »%s« kann nicht für die Ein-/Ausgabe geöffnet werden " +"Die bidirektionale Pipe „%s“ kann nicht für die Ein-/Ausgabe geöffnet werden " "(%s)" -#: io.c:1019 +#: io.c:1030 #, c-format msgid "can't redirect from `%s' (%s)" -msgstr "Von »%s« kann nicht umgelenkt werden (%s)" +msgstr "Von „%s“ kann nicht umgelenkt werden (%s)" -#: io.c:1022 +#: io.c:1033 #, c-format msgid "can't redirect to `%s' (%s)" -msgstr "Zu »%s« kann nicht umgelenkt werden (%s)" +msgstr "Zu „%s“ kann nicht umgelenkt werden (%s)" -#: io.c:1073 +#: io.c:1084 msgid "" "reached system limit for open files: starting to multiplex file descriptors" msgstr "" "Die Systemgrenze offener Dateien ist erreicht, daher werden nun " "Dateideskriptoren mehrfach verwendet" -#: io.c:1089 +#: io.c:1100 #, c-format msgid "close of `%s' failed (%s)." -msgstr "Das Schließen von »%s« ist gescheitert (%s)." +msgstr "Das Schließen von „%s“ ist gescheitert (%s)." -#: io.c:1097 +#: io.c:1108 msgid "too many pipes or input files open" msgstr "Zu viele Pipes oder Eingabedateien offen" -#: io.c:1119 +#: io.c:1130 msgid "close: second argument must be `to' or `from'" msgstr "close: Das zweite Argument muss »to« oder »from« sein" -#: io.c:1136 +#: io.c:1147 #, c-format msgid "close: `%.*s' is not an open file, pipe or co-process" msgstr "close: »%.*s« ist weder offene Datei, noch Pipe oder Ko-Prozess" -#: io.c:1141 +#: io.c:1152 msgid "close of redirection that was never opened" msgstr "»close« für eine Umlenkung, die nie geöffnet wurde" -#: io.c:1238 +#: io.c:1249 #, c-format msgid "close: redirection `%s' not opened with `|&', second argument ignored" msgstr "" -"close: Umlenkung »%s« wurde nicht mit »[&« geöffnet, das zweite Argument " +"close: Umlenkung „%s“ wurde nicht mit »[&« geöffnet, das zweite Argument " "wird ignoriert" -#: io.c:1255 +#: io.c:1266 #, c-format msgid "failure status (%d) on pipe close of `%s' (%s)" -msgstr "Fehlerstatus (%d) beim Schließen der Pipe »%s« (%s)" +msgstr "Fehlerstatus (%d) beim Schließen der Pipe „%s“ (%s)" -#: io.c:1258 +#: io.c:1269 #, c-format msgid "failure status (%d) on file close of `%s' (%s)" -msgstr "Fehlerstatus (%d) beim Schließen der Datei »%s« (%s)" +msgstr "Fehlerstatus (%d) beim Schließen der Datei „%s“ (%s)" -#: io.c:1278 +#: io.c:1289 #, c-format msgid "no explicit close of socket `%s' provided" -msgstr "Das explizite Schließen des Sockets »%s« fehlt" +msgstr "Das explizite Schließen des Sockets „%s“ fehlt" -#: io.c:1281 +#: io.c:1292 #, c-format msgid "no explicit close of co-process `%s' provided" -msgstr "Das explizite Schließen des Ko-Prozesses »%s« fehlt" +msgstr "Das explizite Schließen des Ko-Prozesses „%s“ fehlt" -#: io.c:1284 +#: io.c:1295 #, c-format msgid "no explicit close of pipe `%s' provided" -msgstr "Das explizite Schließen der Pipe »%s« fehlt" +msgstr "Das explizite Schließen der Pipe „%s“ fehlt" -#: io.c:1287 +#: io.c:1298 #, c-format msgid "no explicit close of file `%s' provided" -msgstr "Das explizite Schließen der Datei »%s« fehlt" +msgstr "Das explizite Schließen der Datei „%s“ fehlt" -#: io.c:1317 io.c:1375 main.c:632 main.c:674 +#: io.c:1328 io.c:1387 main.c:645 main.c:687 #, c-format msgid "error writing standard output (%s)" msgstr "Fehler beim Schreiben auf die Standardausgabe (%s)" -#: io.c:1322 io.c:1381 main.c:634 +#: io.c:1333 io.c:1393 main.c:647 #, c-format msgid "error writing standard error (%s)" msgstr "Fehler beim Schreiben auf die Standardfehlerausgabe (%s)" -#: io.c:1330 +#: io.c:1341 #, c-format msgid "pipe flush of `%s' failed (%s)." -msgstr "Das Leeren der Pipe »%s« ist gescheitert (%s)" +msgstr "Das Leeren der Pipe „%s“ ist gescheitert (%s)" -#: io.c:1333 +#: io.c:1344 #, c-format msgid "co-process flush of pipe to `%s' failed (%s)." -msgstr "Ko-Prozess: Das Leeren der Pipe zu »%s« ist gescheitert (%s)" +msgstr "Ko-Prozess: Das Leeren der Pipe zu „%s“ ist gescheitert (%s)" -#: io.c:1336 +#: io.c:1347 #, c-format msgid "file flush of `%s' failed (%s)." -msgstr "Das Leeren der Datei »%s« ist gescheitert (%s)" +msgstr "Das Leeren der Datei „%s“ ist gescheitert (%s)" -#: io.c:1453 +#: io.c:1465 #, c-format msgid "local port %s invalid in `/inet'" -msgstr "Der lokale Port »%s« ist ungültig in »/inet«" +msgstr "Der lokale Port „%s“ ist ungültig in »/inet«" -#: io.c:1471 +#: io.c:1483 #, c-format msgid "remote host and port information (%s, %s) invalid" msgstr "Die Angaben zu entferntem Host und Port (%s, %s) sind ungültig" -#: io.c:1699 +#: io.c:1711 msgid "TCP/IP communications are not supported" msgstr "TCP/IP-Verbindungen werden nicht unterstützt" -#: io.c:1880 +#: io.c:1905 #, c-format msgid "could not open `%s', mode `%s'" -msgstr "»%s« konnte nicht geöffnet werden, Modus »%s«" +msgstr "„%s“ konnte nicht geöffnet werden, Modus „%s“" -#: io.c:1930 +#: io.c:1961 #, c-format msgid "close of master pty failed (%s)" msgstr "" "Das Schließen der übergeordneten Terminal-Gerätedatei ist gescheitert (%s)" -#: io.c:1932 io.c:2118 io.c:2319 +#: io.c:1963 io.c:2141 io.c:2342 #, c-format msgid "close of stdout in child failed (%s)" msgstr "Das Schließen der Standardausgabe im Kindprozess ist gescheitert (%s)" -#: io.c:1935 +#: io.c:1966 #, c-format msgid "moving slave pty to stdout in child failed (dup: %s)" msgstr "" "Das Verschieben der untergeordneten Terminal-Gerätedatei zur Standardausgabe " "im Kindprozess ist gescheitert (dup: %s)" -#: io.c:1937 io.c:2123 +#: io.c:1968 io.c:2146 #, c-format msgid "close of stdin in child failed (%s)" msgstr "Schließen von stdin im Kindprozess gescheitert (%s)" -#: io.c:1940 +#: io.c:1971 #, c-format msgid "moving slave pty to stdin in child failed (dup: %s)" msgstr "" "Das Verschieben der untergeordneten Terminal-Gerätedatei zur Standardeingabe " "im Kindprozess ist gescheitert (dup: %s)" -#: io.c:1942 io.c:1964 +#: io.c:1973 #, c-format msgid "close of slave pty failed (%s)" msgstr "" "Das Schließen der untergeordneten Terminal-Gerätedatei ist gescheitert (%s)" -#: io.c:2053 io.c:2121 io.c:2290 io.c:2322 +#: io.c:2076 io.c:2144 io.c:2313 io.c:2345 #, c-format msgid "moving pipe to stdout in child failed (dup: %s)" msgstr "" "Das Verschieben der Pipe zur Standardausgabe im Kindprozess ist gescheitert " "(dup: %s)" -#: io.c:2060 io.c:2126 +#: io.c:2083 io.c:2149 #, c-format msgid "moving pipe to stdin in child failed (dup: %s)" msgstr "" "Das Verschieben der Pipe zur Standardeingabe im Kindprozess ist gescheitert " "(dup: %s)" -#: io.c:2086 io.c:2312 +#: io.c:2109 io.c:2335 msgid "restoring stdout in parent process failed\n" msgstr "" "Das Wiederherstellen der Standardausgabe im Elternprozess ist gescheitert\n" -#: io.c:2094 +#: io.c:2117 msgid "restoring stdin in parent process failed\n" msgstr "" "Das Wiederherstellen der Standardeingabe im Elternprozess ist gescheitert\n" -#: io.c:2129 io.c:2324 io.c:2339 +#: io.c:2152 io.c:2347 io.c:2362 #, c-format msgid "close of pipe failed (%s)" msgstr "Das Schließen der Pipe ist gescheitert (%s)" -#: io.c:2188 +#: io.c:2211 msgid "`|&' not supported" msgstr "»|&« wird nicht unterstützt" -#: io.c:2275 +#: io.c:2298 #, c-format msgid "cannot open pipe `%s' (%s)" -msgstr "Pipe »%s« kann nicht geöffnet werden (%s)" +msgstr "Pipe „%s“ kann nicht geöffnet werden (%s)" -#: io.c:2333 +#: io.c:2356 #, c-format msgid "cannot create child process for `%s' (fork: %s)" -msgstr "Kindprozess für »%s« kann nicht erzeugt werden (fork: %s)" +msgstr "Kindprozess für „%s“ kann nicht erzeugt werden (fork: %s)" -#: io.c:2760 +#: io.c:2493 +msgid "getline: attempt to read from closed read end of two-way pipe" +msgstr "" +"getline: es wird versucht, vom geschlossenen lesenden Ende einer " +"bidirektionalen Pipe zu lesen" + +#: io.c:2795 msgid "register_input_parser: received NULL pointer" msgstr "register_input_parser: NULL-Zeiger erhalten" -#: io.c:2788 +#: io.c:2823 #, c-format msgid "input parser `%s' conflicts with previously installed input parser `%s'" msgstr "" -"Eingabeparser »%s« steht im Konflikt mit dem vorher installierten " -"Eingabeparser »%s«" +"Eingabeparser „%s“ steht im Konflikt mit dem vorher installierten " +"Eingabeparser „%s“" -#: io.c:2795 +#: io.c:2830 #, c-format msgid "input parser `%s' failed to open `%s'" -msgstr "Eingabeparser »%s« konnte »%s« nicht öffnen" +msgstr "Eingabeparser „%s“ konnte „%s“ nicht öffnen" -#: io.c:2815 +#: io.c:2850 msgid "register_output_wrapper: received NULL pointer" msgstr "register_output_wrapper: NULL-Zeiger erhalten" -#: io.c:2843 +#: io.c:2878 #, c-format msgid "" "output wrapper `%s' conflicts with previously installed output wrapper `%s'" -msgstr "Ausgabeverpackung »%s« steht im Konflikt mit Ausgabeverpackung »%s«" +msgstr "Ausgabeverpackung „%s“ steht im Konflikt mit Ausgabeverpackung „%s“" -#: io.c:2850 +#: io.c:2885 #, c-format msgid "output wrapper `%s' failed to open `%s'" -msgstr "Ausgabeverpackung »%s« konnte »%s« nicht öffnen" +msgstr "Ausgabeverpackung „%s“ konnte „%s“ nicht öffnen" -#: io.c:2871 +#: io.c:2906 msgid "register_output_processor: received NULL pointer" msgstr "register_output_processor: NULL-Zeiger erhalten" -#: io.c:2900 +#: io.c:2935 #, c-format msgid "" "two-way processor `%s' conflicts with previously installed two-way processor " "`%s'" -msgstr "Zweiwegeprozessor »%s« steht im Konflikt mit Zweiwegeprozessor »%s«" +msgstr "Zweiwegeprozessor „%s“ steht im Konflikt mit Zweiwegeprozessor „%s“" -#: io.c:2909 +#: io.c:2944 #, c-format msgid "two way processor `%s' failed to open `%s'" -msgstr "Zweiwegeprozessor »%s« konnte »%s« nicht öffnen" +msgstr "Zweiwegeprozessor „%s“ konnte „%s“ nicht öffnen" -#: io.c:3034 +#: io.c:3069 #, c-format msgid "data file `%s' is empty" -msgstr "Die Datei »%s« ist leer" +msgstr "Die Datei „%s“ ist leer" -#: io.c:3076 io.c:3084 +#: io.c:3111 io.c:3119 msgid "could not allocate more input memory" msgstr "Es konnte kein weiterer Speicher für die Eingabe beschafft werden" -#: io.c:3662 +#: io.c:3697 msgid "multicharacter value of `RS' is a gawk extension" msgstr "Multicharacter-Wert von »RS« ist eine gawk-Erweiterung" -#: io.c:3809 +#: io.c:3844 msgid "IPv6 communication is not supported" msgstr "IPv6-Verbindungen werden nicht unterstützt" -#: main.c:321 +#: main.c:334 msgid "environment variable `POSIXLY_CORRECT' set: turning on `--posix'" msgstr "" "Die Umgebungsvariable »POSIXLY_CORRECT« ist gesetzt: »--posix« wird " "eingeschaltet" -#: main.c:327 +#: main.c:340 msgid "`--posix' overrides `--traditional'" msgstr "»--posix« hat Vorrang vor »--traditional«" -#: main.c:338 +#: main.c:351 msgid "`--posix'/`--traditional' overrides `--non-decimal-data'" msgstr "»--posix« /»--traditional« hat Vorrang vor »--non-decimal-data«" -#: main.c:342 +#: main.c:355 #, 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:346 +#: main.c:359 msgid "`--posix' overrides `--characters-as-bytes'" msgstr "»--posix« hat Vorrang vor »--characters-as-bytes«" -#: main.c:404 +#: main.c:417 #, c-format msgid "can't set binary mode on stdin (%s)" msgstr "" "Das Setzen des Binärermodus für die Standardeingabe ist nicht möglich (%s)" -#: main.c:407 +#: main.c:420 #, c-format msgid "can't set binary mode on stdout (%s)" msgstr "" "Das Setzen des Binärermodus für die Standardausgabe ist nicht möglich (%s)" -#: main.c:409 +#: main.c:422 #, c-format msgid "can't set binary mode on stderr (%s)" msgstr "" "Das Setzen des Binärermodus für die Standardfehlerausgabe ist nicht möglich " "(%s)" -#: main.c:469 +#: main.c:482 msgid "no program text at all!" msgstr "Es wurde überhaupt kein Programmtext angegeben!" -#: main.c:563 +#: main.c:576 #, c-format msgid "Usage: %s [POSIX or GNU style options] -f progfile [--] file ...\n" msgstr "Aufruf: %s [POSIX- oder GNU-Optionen] -f PROGRAMM [--] Datei ...\n" -#: main.c:565 +#: main.c:578 #, c-format msgid "Usage: %s [POSIX or GNU style options] [--] %cprogram%c file ...\n" msgstr "Aufruf: %s [POSIX- oder GNU-Optionen] -- %cPROGRAMM%c Datei ...\n" -#: main.c:570 +#: main.c:583 msgid "POSIX options:\t\tGNU long options: (standard)\n" msgstr "POSIX-Optionen\t\tlange GNU-Optionen: (standard)\n" -#: main.c:571 +#: main.c:584 msgid "\t-f progfile\t\t--file=progfile\n" msgstr "\t-f PROGRAMM\t\t--file=PROGRAMM\n" -#: main.c:572 +#: main.c:585 msgid "\t-F fs\t\t\t--field-separator=fs\n" msgstr "\t-F Feldtrenner\t\t\t--field-separator=Feldtrenner\n" -#: main.c:573 +#: main.c:586 msgid "\t-v var=val\t\t--assign=var=val\n" msgstr "\t-v var=Wert\t\t--assign=var=Wert\n" -#: main.c:574 +#: main.c:587 msgid "Short options:\t\tGNU long options: (extensions)\n" msgstr "POSIX-Optionen\t\tGNU-Optionen (lang): (Erweiterungen)\n" -#: main.c:575 +#: main.c:588 msgid "\t-b\t\t\t--characters-as-bytes\n" msgstr "\t-b\t\t\t--characters-as-bytes\n" -#: main.c:576 +#: main.c:589 msgid "\t-c\t\t\t--traditional\n" msgstr "\t-c\t\t\t--traditional\n" -#: main.c:577 +#: main.c:590 msgid "\t-C\t\t\t--copyright\n" msgstr "\t-C\t\t\t--copyright\n" -#: main.c:578 +#: main.c:591 msgid "\t-d[file]\t\t--dump-variables[=file]\n" msgstr "\t-d [Datei]\t\t--dump-variables[=Datei]\n" -#: main.c:579 +#: main.c:592 msgid "\t-D[file]\t\t--debug[=file]\n" msgstr "\t-D[Datei]\t\t--debug[=Datei]\n" -#: main.c:580 +#: main.c:593 msgid "\t-e 'program-text'\t--source='program-text'\n" msgstr "\t-e 'Programmtext'\t--source=Programmtext\n" -#: main.c:581 +#: main.c:594 msgid "\t-E file\t\t\t--exec=file\n" msgstr "\t-E Datei\t\t\t--exec=Datei\n" -#: main.c:582 +#: main.c:595 msgid "\t-g\t\t\t--gen-pot\n" msgstr "\t-g\t\t\t--gen-pot\n" -#: main.c:583 +#: main.c:596 msgid "\t-h\t\t\t--help\n" msgstr "\t-h\t\t\t--help\n" -#: main.c:584 +#: main.c:597 msgid "\t-i includefile\t\t--include=includefile\n" msgstr "\t-i einzubindende_datei\t\t--include=einzubindende_datei\n" -#: main.c:585 +#: main.c:598 msgid "\t-l library\t\t--load=library\n" msgstr "\t-l Bibliothek\t\t--load=Bibliothek\n" -#: main.c:590 +#. TRANSLATORS: the "fatal" and "invalid" here are literal +#. values, they should not be translated. Thanks. +#. +#: main.c:603 msgid "\t-L[fatal|invalid]\t--lint[=fatal|invalid]\n" msgstr "\t-L[fatal|invalid]\t--lint[=fatal|invalid]\n" -#: main.c:591 +#: main.c:604 msgid "\t-M\t\t\t--bignum\n" msgstr "\t-M\t\t\t--bignum\n" -#: main.c:592 +#: main.c:605 msgid "\t-N\t\t\t--use-lc-numeric\n" msgstr "\t-N\t\t\t--use-lc-numeric\n" -#: main.c:593 +#: main.c:606 msgid "\t-n\t\t\t--non-decimal-data\n" msgstr "\t-n\t\t\t--non-decimal-data\n" -#: main.c:594 +#: main.c:607 msgid "\t-o[file]\t\t--pretty-print[=file]\n" msgstr "\t-o[Datei]\t\t--pretty-print[=Datei]\n" -#: main.c:595 +#: main.c:608 msgid "\t-O\t\t\t--optimize\n" msgstr "\t-O\t\t\t--optimize\n" -#: main.c:596 +#: main.c:609 msgid "\t-p[file]\t\t--profile[=file]\n" msgstr "\t-p [Datei]\t\t--profile[=Datei]\n" -#: main.c:597 +#: main.c:610 msgid "\t-P\t\t\t--posix\n" msgstr "\t-P\t\t\t--posix\n" -#: main.c:598 +#: main.c:611 msgid "\t-r\t\t\t--re-interval\n" msgstr "\t-r\t\t\t--re-interval\n" -#: main.c:599 +#: main.c:612 msgid "\t-S\t\t\t--sandbox\n" msgstr "\t-S\t\t\t--sandbox\n" -#: main.c:600 +#: main.c:613 msgid "\t-t\t\t\t--lint-old\n" msgstr "\t-t\t\t\t--lint-old\n" -#: main.c:601 +#: main.c:614 msgid "\t-V\t\t\t--version\n" msgstr "\t-V\t\t\t--version\n" -#: main.c:603 +#: main.c:616 msgid "\t-W nostalgia\t\t--nostalgia\n" msgstr "\t-W nostalgia\t\t--nostalgia\n" -#: main.c:606 +#: main.c:619 msgid "\t-Y\t\t--parsedebug\n" msgstr "\t-Y\t\t--parsedebug\n" @@ -3218,7 +3246,7 @@ msgstr "\t-Y\t\t--parsedebug\n" #. for this application. Please add _another line_ with the #. address for translation bugs. #. no-wrap -#: main.c:615 +#: main.c:628 msgid "" "\n" "To report bugs, see node `Bugs' in `gawk.info', which is\n" @@ -3234,7 +3262,7 @@ msgstr "" "translation-team-de@lists.sourceforge.net\n" "\n" -#: main.c:619 +#: main.c:632 msgid "" "gawk is a pattern scanning and processing language.\n" "By default it reads standard input and writes standard output.\n" @@ -3245,7 +3273,7 @@ msgstr "" "auf der Standardausgabe aus.\n" "\n" -#: main.c:623 +#: main.c:636 msgid "" "Examples:\n" "\tgawk '{ sum += $1 }; END { print sum }' file\n" @@ -3255,7 +3283,7 @@ msgstr "" "\tgawk '{ sum += $1 }; END { print sum }' file\n" "\tgawk -F: '{ print $1 }' /etc/passwd\n" -#: main.c:648 +#: main.c:661 #, c-format msgid "" "Copyright (C) 1989, 1991-%d Free Software Foundation.\n" @@ -3275,7 +3303,7 @@ msgstr "" "spätere Version.\n" "\n" -#: main.c:656 +#: main.c:669 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" @@ -3288,7 +3316,7 @@ msgstr "" "leistung einer HANDELBARKEIT oder der EIGNUNG FÃœR EINEN BESTIMMTEN ZWECK.\n" "Sehen Sie bitte die GNU General Public License für weitere Details.\n" -#: main.c:662 +#: main.c:675 msgid "" "You should have received a copy of the GNU General Public License\n" "along with this program. If not, see http://www.gnu.org/licenses/.\n" @@ -3297,141 +3325,141 @@ msgstr "" "diesem Programm erhalten haben. Wenn nicht, lesen Sie bitte\n" "http://www.gnu.org/licenses/.\n" -#: main.c:699 +#: main.c:712 msgid "-Ft does not set FS to tab in POSIX awk" msgstr "-Ft setzt FS im POSIX-awk nicht auf Tab" -#: main.c:986 +#: main.c:999 #, c-format msgid "unknown value for field spec: %d\n" msgstr "unbekannter Wert für eine Feldangabe: %d\n" -#: main.c:1084 +#: main.c:1097 #, c-format msgid "" "%s: `%s' argument to `-v' not in `var=value' form\n" "\n" msgstr "" -"%s: Argument »%s« von »-v« ist nicht in der Form »Variable=Wert«\n" +"%s: Argument „%s“ von »-v« ist nicht in der Form »Variable=Wert«\n" "\n" -#: main.c:1110 +#: main.c:1123 #, c-format msgid "`%s' is not a legal variable name" -msgstr "»%s« ist kein gültiger Variablenname" +msgstr "„%s“ ist kein gültiger Variablenname" -#: main.c:1113 +#: main.c:1126 #, c-format msgid "`%s' is not a variable name, looking for file `%s=%s'" -msgstr "»%s« ist kein Variablenname, es wird nach der Datei »%s=%s« gesucht" +msgstr "„%s“ ist kein Variablenname, es wird nach der Datei »%s=%s« gesucht" -#: main.c:1117 +#: main.c:1130 #, c-format msgid "cannot use gawk builtin `%s' as variable name" msgstr "" -"die eingebaute Funktion »%s« kann nicht als Variablenname verwendet werden" +"die eingebaute Funktion „%s“ kann nicht als Variablenname verwendet werden" # c-format -#: main.c:1122 +#: main.c:1135 #, c-format msgid "cannot use function `%s' as variable name" -msgstr "Funktion »%s« kann nicht als Name einer Variablen verwendet werden" +msgstr "Funktion „%s“ kann nicht als Name einer Variablen verwendet werden" -#: main.c:1175 +#: main.c:1190 msgid "floating point exception" msgstr "Fließkomma-Ausnahme" -#: main.c:1182 +#: main.c:1197 msgid "fatal error: internal error" msgstr "Fataler Fehler: interner Fehler" -#: main.c:1197 +#: main.c:1212 msgid "fatal error: internal error: segfault" msgstr "Fataler Fehler: interner Fehler: Speicherbegrenzungsfehler" -#: main.c:1209 +#: main.c:1224 msgid "fatal error: internal error: stack overflow" msgstr "Fataler Fehler: interner Fehler: Stapelüberlauf" -#: main.c:1268 +#: main.c:1283 #, c-format msgid "no pre-opened fd %d" msgstr "Kein bereits geöffneter Dateideskriptor %d" -#: main.c:1275 +#: main.c:1290 #, c-format msgid "could not pre-open /dev/null for fd %d" msgstr "/dev/null konnte nicht für Dateideskriptor %d geöffnet werden" -#: main.c:1489 +#: main.c:1504 msgid "empty argument to `-e/--source' ignored" msgstr "Das leere Argument für »--source« wird ignoriert" -#: main.c:1560 +#: main.c:1575 msgid "-M ignored: MPFR/GMP support not compiled in" msgstr "" "-M wurde ignoriert: die Unterstützung von MPFR/GMP wurde nicht eingebaut" -#: main.c:1581 +#: main.c:1596 #, c-format msgid "%s: option `-W %s' unrecognized, ignored\n" msgstr "%s: Die Option »-W %s« ist unbekannt und wird ignoriert\n" -#: main.c:1634 +#: main.c:1649 #, c-format msgid "%s: option requires an argument -- %c\n" msgstr "%s: Die Option %c erfordert ein Argument\n" -#: mpfr.c:557 +#: mpfr.c:559 #, c-format msgid "PREC value `%.*s' is invalid" msgstr "PREC Wert »%.*s« ist ungültig" -#: mpfr.c:615 +#: mpfr.c:617 #, c-format msgid "RNDMODE value `%.*s' is invalid" msgstr "BINMODE Wert »%.*s« ist ungültig" -#: mpfr.c:711 +#: mpfr.c:714 #, c-format msgid "%s: received non-numeric argument" msgstr "%s: das Argument ist keine Zahl" -#: mpfr.c:820 +#: mpfr.c:824 msgid "compl(%Rg): negative value will give strange results" msgstr "compl(%Rg): ein negativer Wert wird zu merkwürdigen Ergebnissen führen" -#: mpfr.c:824 +#: mpfr.c:828 msgid "comp(%Rg): fractional value will be truncated" msgstr "compl(%Rg): Dezimalteil wird abgeschnitten" -#: mpfr.c:836 +#: mpfr.c:840 #, c-format msgid "cmpl(%Zd): negative values will give strange results" msgstr "cmpl(%Zd): Negative Werte führen zu merkwürdigen Ergebnissen" -#: mpfr.c:855 +#: mpfr.c:859 #, c-format msgid "%s: received non-numeric argument #%d" msgstr "%s: das Argument Nr. %d ist keine Zahl" -#: mpfr.c:865 +#: mpfr.c:869 msgid "%s: argument #%d has invalid value %Rg, using 0" msgstr "" "%s: Argument Nr. %d hat den ungültigen Wert %Rg, es wird stattdessen 0 " "verwendet" -#: mpfr.c:877 +#: mpfr.c:881 msgid "%s: argument #%d negative value %Rg will give strange results" msgstr "" "%s: der negative Wert %2$Rg in Argument Nr. %1$d wird zu merkwürdigen " "Ergebnissen führen" -#: mpfr.c:883 +#: mpfr.c:887 msgid "%s: argument #%d fractional value %Rg will be truncated" msgstr "%s: der Nachkommateil %2$Rg in Argument Nr. %1$d wird abgeschnitten" -#: mpfr.c:898 +#: mpfr.c:902 #, c-format msgid "%s: argument #%d negative value %Zd will give strange results" msgstr "" @@ -3443,24 +3471,24 @@ msgstr "" msgid "cmd. line:" msgstr "Kommandozeile:" -#: node.c:418 +#: node.c:434 msgid "backslash at end of string" msgstr "Backslash am Ende der Zeichenkette" -#: node.c:497 +#: node.c:513 #, c-format msgid "old awk does not support the `\\%c' escape sequence" msgstr "Das alte awk unterstützt die Escapesequenz »\\%c« nicht" -#: node.c:548 +#: node.c:564 msgid "POSIX does not allow `\\x' escapes" msgstr "POSIX erlaubt keine »\\x«-Escapes" -#: node.c:554 +#: node.c:570 msgid "no hex digits in `\\x' escape sequence" msgstr "In der »\\x«-Fluchtsequenz sind keine hexadezimalen Zahlen" -#: node.c:576 +#: node.c:592 #, c-format msgid "" "hex escape \\x%.*s of %d characters probably not interpreted the way you " @@ -3469,12 +3497,12 @@ msgstr "" "Die Hex-Sequenz \\x%.*s aus %d Zeichen wird wahrscheinlich nicht wie " "gewünscht interpretiert" -#: node.c:591 +#: node.c:607 #, c-format msgid "escape sequence `\\%c' treated as plain `%c'" msgstr "Fluchtsequenz »\\%c« wird wie ein normales »%c« behandelt" -#: node.c:735 +#: node.c:744 msgid "" "Invalid multibyte data detected. There may be a mismatch between your data " "and your locale." @@ -3486,25 +3514,25 @@ msgstr "" #, c-format msgid "%s %s `%s': could not get fd flags: (fcntl F_GETFD: %s)" msgstr "" -"%s %s »%s«: Die Kennungen des Dateideskriptors konnten nicht abgefragt " +"%s %s „%s“: Die Kennungen des Dateideskriptors konnten nicht abgefragt " "werden: (fcntl F_GETFD: %s)" #: posix/gawkmisc.c:189 #, c-format msgid "%s %s `%s': could not set close-on-exec: (fcntl F_SETFD: %s)" msgstr "" -"%s %s »%s«: close-on-exec konnte nicht gesetzt werden: (fcntl F_SETFD: %s)" +"%s %s „%s“: close-on-exec konnte nicht gesetzt werden: (fcntl F_SETFD: %s)" -#: profile.c:91 +#: profile.c:94 #, c-format msgid "could not open `%s' for writing: %s" -msgstr "»%s« konnte nicht zum Schreiben geöffnet werden: %s" +msgstr "„%s“ konnte nicht zum Schreiben geöffnet werden: %s" -#: profile.c:93 +#: profile.c:96 msgid "sending profile to standard error" msgstr "Das Profil wird auf der Standardfehlerausgabe ausgegeben" -#: profile.c:213 +#: profile.c:216 #, c-format msgid "" "\t# %s rule(s)\n" @@ -3513,7 +3541,7 @@ msgstr "" "\t# %s Regel(n)\n" "\n" -#: profile.c:218 +#: profile.c:221 #, c-format msgid "" "\t# Rule(s)\n" @@ -3522,16 +3550,16 @@ msgstr "" "\t# Regel(n)\n" "\n" -#: profile.c:292 +#: profile.c:295 #, c-format msgid "internal error: %s with null vname" msgstr "Interner Fehler: %s mit null vname" -#: profile.c:558 +#: profile.c:561 msgid "internal error: builtin with null fname" msgstr "Interner Fehler: eingebaute Fuktion mit leerem fname" -#: profile.c:978 +#: profile.c:1006 #, c-format msgid "" "\t# Loaded extensions (-l and/or @load)\n" @@ -3540,12 +3568,12 @@ msgstr "" "\t# Erweiterungen geladen (-l und/oder @load)\n" "\n" -#: profile.c:1001 +#: profile.c:1029 #, c-format msgid "\t# gawk profile, created %s\n" msgstr "\t# gawk-Profil, erzeugt %s\n" -#: profile.c:1555 +#: profile.c:1600 #, c-format msgid "" "\n" @@ -3554,95 +3582,103 @@ msgstr "" "\n" "\t# Funktionen in alphabetischer Reihenfolge\n" -#: profile.c:1593 +#: profile.c:1638 #, c-format msgid "redir2str: unknown redirection type %d" msgstr "redir2str: unbekannter Umlenkungstyp %d" -#: re.c:607 +#: re.c:610 #, c-format msgid "regexp component `%.*s' should probably be `[%.*s]'" msgstr "" "Regulärer-Ausdruck-Komponente »%.*s« sollte wahrscheinlich »[%.*s]« sein" -#: regcomp.c:139 +#: regcomp.c:143 msgid "Success" msgstr "Erfolg" -#: regcomp.c:142 +#: regcomp.c:146 msgid "No match" msgstr "Kein Treffer" -#: regcomp.c:145 +#: regcomp.c:149 msgid "Invalid regular expression" msgstr "Ungültiger Regulärer Ausdruck" -#: regcomp.c:148 +#: regcomp.c:152 msgid "Invalid collation character" msgstr "Ungültiges Zeichen" -#: regcomp.c:151 +#: regcomp.c:155 msgid "Invalid character class name" msgstr "Ungültiger Name für eine Zeichenklasse" -#: regcomp.c:154 +#: regcomp.c:158 msgid "Trailing backslash" msgstr "Angehängter Backslash" -#: regcomp.c:157 +#: regcomp.c:161 msgid "Invalid back reference" msgstr "Ungültige Rück-Referenz" -#: regcomp.c:160 +#: regcomp.c:164 msgid "Unmatched [, [^, [:, [., or [=" msgstr "[, [^, [:, [., oder [= werden nicht geschlossen" -#: regcomp.c:163 +#: regcomp.c:167 msgid "Unmatched ( or \\(" msgstr "( oder \\( werden nicht geschlossen" -#: regcomp.c:166 +#: regcomp.c:170 msgid "Unmatched \\{" msgstr "\\{ wird nicht geschlossen" -#: regcomp.c:169 +#: regcomp.c:173 msgid "Invalid content of \\{\\}" msgstr "Ungültiger Inhalt von \\{\\}" -#: regcomp.c:172 +#: regcomp.c:176 msgid "Invalid range end" msgstr "Ungültiges Bereichsende" -#: regcomp.c:175 +#: regcomp.c:179 msgid "Memory exhausted" msgstr "Kein freier Speicher mehr vorhanden" -#: regcomp.c:178 +#: regcomp.c:182 msgid "Invalid preceding regular expression" msgstr "Vorangehender regulärer Ausdruck ist ungültig" -#: regcomp.c:181 +#: regcomp.c:185 msgid "Premature end of regular expression" msgstr "Vorzeitiges Ende des regulären Ausdrucks" -#: regcomp.c:184 +#: regcomp.c:188 msgid "Regular expression too big" msgstr "Regulärer Ausdruck ist zu groß" -#: regcomp.c:187 +#: regcomp.c:191 msgid "Unmatched ) or \\)" msgstr ") oder \\) werden nicht geöffnet" -#: regcomp.c:712 +#: regcomp.c:701 msgid "No previous regular expression" msgstr "Kein vorangehender regulärer Ausdruck" -#: symbol.c:678 +#: symbol.c:684 #, c-format msgid "function `%s': can't use function `%s' as a parameter name" msgstr "" "Funktion „%s“: Funktionsname „%s“ kann nicht als Parametername benutzt werden" -#: symbol.c:810 +#: symbol.c:816 msgid "can not pop main context" msgstr "der Hauptkontext kann nicht entfernt werden" + +#~ msgid "function `%s' defined to take no more than %d argument(s)" +#~ msgstr "" +#~ "Funktion „%s“ wird als Funktion definiert, die nie mehr als %d " +#~ "Argument(e) akzeptiert" + +#~ msgid "function `%s': missing argument #%d" +#~ msgstr "Funktion „%s“: fehlendes Argument #%d" diff --git a/po/es.po b/po/es.po index 2896d69..5e378e0 100644 --- a/po/es.po +++ b/po/es.po @@ -7,7 +7,7 @@ msgid "" msgstr "" "Project-Id-Version: gawk 4.0.0h\n" "Report-Msgid-Bugs-To: bug-gawk@gnu.org\n" -"POT-Creation-Date: 2015-05-19 16:06+0300\n" +"POT-Creation-Date: 2016-08-25 06:19+0300\n" "PO-Revision-Date: 2012-01-30 07:42-0600\n" "Last-Translator: Cristian Othón Martínez Vera \n" "Language-Team: Spanish \n" @@ -16,93 +16,93 @@ msgstr "" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -#: array.c:256 +#: array.c:259 #, c-format msgid "from %s" msgstr "desde %s" -#: array.c:357 +#: array.c:360 msgid "attempt to use a scalar value as array" msgstr "se intentó usar un valor escalar como una matriz" -#: array.c:359 +#: array.c:362 #, c-format msgid "attempt to use scalar parameter `%s' as an array" msgstr "se intentó usar el parámetro escalar `%s como una matriz'" -#: array.c:362 +#: array.c:365 #, c-format msgid "attempt to use scalar `%s' as an array" msgstr "se intentó usar el escalar `%s' como una matriz" -#: array.c:409 array.c:576 builtin.c:85 builtin.c:1606 builtin.c:1652 -#: builtin.c:1665 builtin.c:2112 builtin.c:2126 eval.c:1149 eval.c:1153 -#: eval.c:1564 +#: array.c:412 array.c:579 builtin.c:85 builtin.c:1612 builtin.c:1658 +#: builtin.c:1671 builtin.c:2160 builtin.c:2179 eval.c:1141 eval.c:1145 +#: eval.c:1556 #, c-format msgid "attempt to use array `%s' in a scalar context" msgstr "se intentó usar la matriz `%s' en un contexto escalar" -#: array.c:583 +#: array.c:586 #, c-format msgid "delete: index `%s' not in array `%s'" msgstr "delete: el índice `%s' no está en la matriz `%s'" -#: array.c:597 +#: array.c:600 #, c-format msgid "attempt to use scalar `%s[\"%.*s\"]' as an array" msgstr "se intentó usar el dato escalar `%s[\"%.*s\"]' como una matriz" -#: array.c:776 +#: array.c:779 #, fuzzy msgid "adump: first argument not an array" msgstr "adump: el argumento no es una matriz" -#: array.c:815 +#: array.c:818 msgid "asort: second argument not an array" msgstr "asort: el segundo argumento no es una matriz" -#: array.c:816 +#: array.c:819 msgid "asorti: second argument not an array" msgstr "asorti: el segundo argumento no es una matriz" -#: array.c:823 +#: array.c:826 msgid "asort: first argument not an array" msgstr "asort: el primer argumento no es una matriz" -#: array.c:824 +#: array.c:827 msgid "asorti: first argument not an array" msgstr "asorti: el primer argumento no es una matriz" -#: array.c:831 +#: array.c:834 msgid "asort: cannot use a subarray of first arg for second arg" msgstr "" "asort: no se puede usar una submatriz del primer argumento para el segundo " "argumento" -#: array.c:832 +#: array.c:835 msgid "asorti: cannot use a subarray of first arg for second arg" msgstr "" "asorti: no se puede usar una submatriz del primer argumento para el segundo " "argumento" -#: array.c:837 +#: array.c:840 msgid "asort: cannot use a subarray of second arg for first arg" msgstr "" "asort: no se puede usar una submatriz del segundo argumento para el primer " "argumento" -#: array.c:838 +#: array.c:841 msgid "asorti: cannot use a subarray of second arg for first arg" msgstr "" "asorti: no se puede usar una submatriz del segundo argumento para el primer " "argumento" -#: array.c:1313 +#: array.c:1316 #, c-format msgid "`%s' is invalid as a function name" msgstr "`%s' es inválido como un nombre de función" -#: array.c:1317 +#: array.c:1320 #, c-format msgid "sort comparison function `%s' is not defined" msgstr "la función de comparación de ordenamiento `%s' no está definida" @@ -147,11 +147,11 @@ msgstr "valores case duplicados en el cuerpo de un switch: %s" msgid "duplicate `default' detected in switch body" msgstr "se detectó un `default' duplicado en el cuerpo de un switch" -#: awkgram.y:793 awkgram.y:3763 +#: awkgram.y:793 awkgram.y:3774 msgid "`break' is not allowed outside a loop or switch" msgstr "no se permite `break' fuera de un bucle o switch" -#: awkgram.y:802 awkgram.y:3755 +#: awkgram.y:802 awkgram.y:3766 msgid "`continue' is not allowed outside a loop" msgstr "no se permite `continue' fuera de un bucle" @@ -243,7 +243,7 @@ msgstr "se intentó usar la función `%s' como una matriz" msgid "invalid subscript expression" msgstr "expresión de subíndice inválida" -#: awkgram.y:2047 awkgram.y:2067 gawkapi.c:206 gawkapi.c:224 msg.c:126 +#: awkgram.y:2047 awkgram.y:2067 gawkapi.c:206 gawkapi.c:223 msg.c:126 msgid "warning: " msgstr "aviso: " @@ -251,272 +251,277 @@ msgstr "aviso: " msgid "fatal: " msgstr "fatal: " -#: awkgram.y:2115 +#: awkgram.y:2116 msgid "unexpected newline or end of string" msgstr "nueva línea o fin de la cadena inesperados" -#: awkgram.y:2394 awkgram.y:2470 awkgram.y:2693 debug.c:523 debug.c:539 -#: debug.c:2812 debug.c:5055 +#: awkgram.y:2397 awkgram.y:2473 awkgram.y:2696 debug.c:523 debug.c:539 +#: debug.c:2812 debug.c:5101 #, 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:2395 awkgram.y:2520 +#: awkgram.y:2398 awkgram.y:2523 #, fuzzy, c-format msgid "can't open shared library `%s' for reading (%s)" msgstr "no se puede abrir el fichero fuente `%s' para lectura (%s)" -#: awkgram.y:2397 awkgram.y:2471 awkgram.y:2521 builtin.c:135 debug.c:5206 +#: awkgram.y:2400 awkgram.y:2474 awkgram.y:2524 builtin.c:135 debug.c:5252 msgid "reason unknown" msgstr "razón desconocida" -#: awkgram.y:2406 awkgram.y:2430 +#: awkgram.y:2409 awkgram.y:2433 #, c-format msgid "can't include `%s' and use it as a program file" msgstr "" -#: awkgram.y:2419 +#: awkgram.y:2422 #, c-format msgid "already included source file `%s'" msgstr "ya se incluyó el fichero fuente `%s'" -#: awkgram.y:2420 +#: awkgram.y:2423 #, fuzzy, c-format msgid "already loaded shared library `%s'" msgstr "ya se incluyó el fichero fuente `%s'" -#: awkgram.y:2455 +#: awkgram.y:2458 msgid "@include is a gawk extension" msgstr "@include es una extensión de gawk" -#: awkgram.y:2461 +#: awkgram.y:2464 msgid "empty filename after @include" msgstr "nombre de fichero vacío después de @include" -#: awkgram.y:2505 +#: awkgram.y:2508 #, fuzzy msgid "@load is a gawk extension" msgstr "@include es una extensión de gawk" -#: awkgram.y:2511 +#: awkgram.y:2514 #, fuzzy msgid "empty filename after @load" msgstr "nombre de fichero vacío después de @include" -#: awkgram.y:2645 +#: awkgram.y:2648 msgid "empty program text on command line" msgstr "texto de programa vacío en la linea de órdenes" -#: awkgram.y:2760 +#: awkgram.y:2763 #, c-format msgid "can't read sourcefile `%s' (%s)" msgstr "no se puede leer el fichero fuente `%s' (%s)" -#: awkgram.y:2771 +#: awkgram.y:2774 #, c-format msgid "source file `%s' is empty" msgstr "el fichero fuente `%s' está vacío" -#: awkgram.y:2830 +#: awkgram.y:2833 #, c-format msgid "PEBKAC error: invalid character '\\%03o' in source code" msgstr "" -#: awkgram.y:2961 +#: awkgram.y:2964 msgid "source file does not end in newline" msgstr "el fichero fuente no termina con línea nueva" -#: awkgram.y:3074 +#: awkgram.y:3081 msgid "unterminated regexp ends with `\\' at end of file" msgstr "expresión regular sin terminar termina con `\\` al final del fichero" -#: awkgram.y:3101 +#: awkgram.y:3108 #, 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:3105 +#: awkgram.y:3112 #, 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:3112 +#: awkgram.y:3119 msgid "unterminated regexp" msgstr "expresión regular sin terminar" -#: awkgram.y:3116 +#: awkgram.y:3123 msgid "unterminated regexp at end of file" msgstr "expresión regular sin terminar al final del fichero" -#: awkgram.y:3174 +#: awkgram.y:3181 msgid "use of `\\ #...' line continuation is not portable" msgstr "el uso de la continuación de línea `\\ #...' no es transportable" -#: awkgram.y:3190 +#: awkgram.y:3197 msgid "backslash not last character on line" msgstr "la barra invertida no es el último caracter en la línea" -#: awkgram.y:3251 +#: awkgram.y:3235 awkgram.y:3237 +#, fuzzy +msgid "multidimensional arrays are a gawk extension" +msgstr "las llamadas indirectas a función son una extensión de gawk" + +#: awkgram.y:3262 msgid "POSIX does not allow operator `**='" msgstr "POSIX no permite el operador `**='" -#: awkgram.y:3253 +#: awkgram.y:3264 msgid "old awk does not support operator `**='" msgstr "el awk antiguo no admite el operador `**='" -#: awkgram.y:3262 +#: awkgram.y:3273 msgid "POSIX does not allow operator `**'" msgstr "POSIX no permite el operador `**'" -#: awkgram.y:3264 +#: awkgram.y:3275 msgid "old awk does not support operator `**'" msgstr "el awk antiguo no admite el operador `**='" -#: awkgram.y:3299 +#: awkgram.y:3310 msgid "operator `^=' is not supported in old awk" msgstr "el operador `^=' no se admite en el awk antiguo" -#: awkgram.y:3307 +#: awkgram.y:3318 msgid "operator `^' is not supported in old awk" msgstr "el operador `^' no se admite en el awk antiguo" -#: awkgram.y:3404 awkgram.y:3422 command.y:1180 +#: awkgram.y:3415 awkgram.y:3433 command.y:1187 msgid "unterminated string" msgstr "cadena sin terminar" -#: awkgram.y:3643 +#: awkgram.y:3654 #, c-format msgid "invalid char '%c' in expression" msgstr "caracter '%c' inválido en la expresión" -#: awkgram.y:3690 +#: awkgram.y:3701 #, c-format msgid "`%s' is a gawk extension" msgstr "`%s' es una extensión de gawk" -#: awkgram.y:3695 +#: awkgram.y:3706 #, c-format msgid "POSIX does not allow `%s'" msgstr "POSIX no permite `%s'" -#: awkgram.y:3703 +#: awkgram.y:3714 #, c-format msgid "`%s' is not supported in old awk" msgstr "`%s' no se admite en el awk antiguo" -#: awkgram.y:3793 +#: awkgram.y:3804 msgid "`goto' considered harmful!\n" msgstr "¡`goto' se considera dañino!\n" -#: awkgram.y:3827 +#: awkgram.y:3873 #, 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:3862 +#: awkgram.y:3908 #, 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:3867 +#: awkgram.y:3913 #, c-format msgid "%s third parameter is not a changeable object" msgstr "el tercer argumento de %s no es un objecto modificable" -#: awkgram.y:3950 awkgram.y:3953 +#: awkgram.y:3996 awkgram.y:3999 msgid "match: third argument is a gawk extension" msgstr "match: el tercer argumento es una extensión de gawk" -#: awkgram.y:4007 awkgram.y:4010 +#: awkgram.y:4053 awkgram.y:4056 msgid "close: second argument is a gawk extension" msgstr "close: el segundo argumento es una extensión de gawk" -#: awkgram.y:4022 +#: awkgram.y:4068 msgid "use of dcgettext(_\"...\") is incorrect: remove leading underscore" msgstr "" "el uso de dcgettext(_\"...\") es incorrecto: quite el subrayado inicial" -#: awkgram.y:4037 +#: awkgram.y:4083 msgid "use of dcngettext(_\"...\") is incorrect: remove leading underscore" msgstr "" "el uso de dcngettext(_\"...\") es incorrecto: quite el subrayado inicial" -#: awkgram.y:4056 +#: awkgram.y:4102 #, fuzzy msgid "index: regexp constant as second argument is not allowed" msgstr "index: el segundo argumento recibido no es una cadena" -#: awkgram.y:4109 +#: awkgram.y:4155 #, c-format msgid "function `%s': parameter `%s' shadows global variable" msgstr "función `%s': parámetro `%s' oscurece la variable global" -#: awkgram.y:4166 debug.c:4041 debug.c:4084 debug.c:5204 +#: awkgram.y:4214 debug.c:4087 debug.c:4130 debug.c:5250 #, c-format msgid "could not open `%s' for writing (%s)" msgstr "no se puede abrir `%s' para escritura (%s)" -#: awkgram.y:4167 +#: awkgram.y:4215 msgid "sending variable list to standard error" msgstr "se envía la lista de variables a la salida estándar de error" -#: awkgram.y:4175 +#: awkgram.y:4223 #, c-format msgid "%s: close failed (%s)" msgstr "%s: falló close (%s)" -#: awkgram.y:4200 +#: awkgram.y:4248 msgid "shadow_funcs() called twice!" msgstr "¡se llamó shadow_funcs() dos veces!" -#: awkgram.y:4208 +#: awkgram.y:4256 msgid "there were shadowed variables." msgstr "hay variables opacadas." -#: awkgram.y:4279 +#: awkgram.y:4327 #, c-format msgid "function name `%s' previously defined" msgstr "el nombre de función `%s' se definió previamente" -#: awkgram.y:4325 +#: awkgram.y:4373 #, 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:4328 +#: awkgram.y:4376 #, c-format msgid "function `%s': can't use special variable `%s' as a function parameter" msgstr "" "función `%s': no se puede usar la variable especial `%s' como un parámetro " "de función" -#: awkgram.y:4336 +#: awkgram.y:4384 #, 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:4423 awkgram.y:4429 +#: awkgram.y:4471 awkgram.y:4477 #, c-format msgid "function `%s' called but never defined" msgstr "se llamó a la función `%s' pero nunca se definió" -#: awkgram.y:4433 +#: awkgram.y:4481 #, c-format msgid "function `%s' defined but never called directly" msgstr "se definió la función `%s' pero nunca se llamó directamente" -#: awkgram.y:4465 +#: awkgram.y:4513 #, 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:4480 +#: awkgram.y:4528 #, c-format msgid "" "function `%s' called with space between name and `(',\n" @@ -525,21 +530,21 @@ msgstr "" "se llamó la función `%s' con espacio entre el nombre y el `(',\n" "o se usó como una variable o una matriz" -#: awkgram.y:4686 +#: awkgram.y:4734 msgid "division by zero attempted" msgstr "se intentó una división por cero" -#: awkgram.y:4695 +#: awkgram.y:4743 #, c-format msgid "division by zero attempted in `%%'" msgstr "se intentó una división por cero en `%%'" -#: awkgram.y:5015 +#: awkgram.y:5064 msgid "" "cannot assign a value to the result of a field post-increment expression" msgstr "" -#: awkgram.y:5018 +#: awkgram.y:5067 #, fuzzy, c-format msgid "invalid target of assignment (opcode %s)" msgstr "%d es inválido como número de argumentos para %s" @@ -576,212 +581,223 @@ msgstr "" "fflush: no se puede limpiar: se abrió el fichero `%s' para lectura, no para " "escritura" -#: builtin.c:244 +#: builtin.c:241 +#, fuzzy, c-format +msgid "fflush: cannot flush: two-way pipe `%s' has closed write end" +msgstr "" +"fflush: no se puede limpiar: se abrió la tubería `%s' para lectura, no para " +"escritura" + +#: builtin.c:247 #, 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:351 +#: builtin.c:354 msgid "index: received non-string first argument" msgstr "index: el primer argumento recibido no es una cadena" -#: builtin.c:353 +#: builtin.c:356 msgid "index: received non-string second argument" msgstr "index: el segundo argumento recibido no es una cadena" -#: builtin.c:466 mpfr.c:777 +#: builtin.c:469 mpfr.c:781 msgid "int: received non-numeric argument" msgstr "int: se recibió un argumento que no es númerico" -#: builtin.c:503 +#: builtin.c:506 msgid "length: received array argument" msgstr "length: se recibió un argumento de matriz" -#: builtin.c:506 +#: builtin.c:509 msgid "`length(array)' is a gawk extension" msgstr "`length(array)' es una extensión de gawk" -#: builtin.c:525 +#: builtin.c:528 msgid "length: received non-string argument" msgstr "length: se recibió un argumento que no es una cadena" -#: builtin.c:554 +#: builtin.c:557 msgid "log: received non-numeric argument" msgstr "log: se recibió un argumento que no es númerico" -#: builtin.c:557 +#: builtin.c:560 #, c-format msgid "log: received negative argument %g" msgstr "log: se recibió el argumento negativo %g" -#: builtin.c:755 builtin.c:760 builtin.c:911 +#: builtin.c:758 builtin.c:763 builtin.c:914 msgid "fatal: must use `count$' on all formats or none" msgstr "fatal: se debe utilizar `count$' en todos los formatos o en ninguno" -#: builtin.c:830 +#: builtin.c:833 #, c-format msgid "field width is ignored for `%%' specifier" msgstr "se descarta la anchura del campo para el especificador `%%'" -#: builtin.c:832 +#: builtin.c:835 #, c-format msgid "precision is ignored for `%%' specifier" msgstr "se descarta la precisión para el especificador `%%'" -#: builtin.c:834 +#: builtin.c:837 #, c-format msgid "field width and precision are ignored for `%%' specifier" msgstr "" "se descartan la anchura del campo y la precisión para el especificador `%%'" -#: builtin.c:885 +#: builtin.c:888 msgid "fatal: `$' is not permitted in awk formats" msgstr "fatal: no se permite `$' en los formatos de awk" -#: builtin.c:894 +#: builtin.c:897 msgid "fatal: arg count with `$' must be > 0" msgstr "fatal: la cuenta de argumentos con `$' debe ser > 0" -#: builtin.c:898 +#: builtin.c:901 #, c-format msgid "fatal: arg count %ld greater than total number of supplied arguments" msgstr "" "fatal: la cuenta de argumentos %ld es mayor que el número total de " "argumentos proporcionados" -#: builtin.c:902 +#: builtin.c:905 msgid "fatal: `$' not permitted after period in format" msgstr "fatal: no se permite `$' después de un punto en el formato" -#: builtin.c:921 +#: builtin.c:924 msgid "fatal: no `$' supplied for positional field width or precision" msgstr "" "fatal: no se proporciona `$' para la anchura o la precisión del campo " "posicional" -#: builtin.c:991 +#: builtin.c:994 msgid "`l' is meaningless in awk formats; ignored" msgstr "`l' no tiene significado en los formatos de awk; se descarta" -#: builtin.c:995 +#: builtin.c:998 msgid "fatal: `l' is not permitted in POSIX awk formats" msgstr "fatal: no se permite `l' en los formatos POSIX de awk" -#: builtin.c:1008 +#: builtin.c:1011 msgid "`L' is meaningless in awk formats; ignored" msgstr "`L' no tiene significado en los formatos de awk; se descarta" -#: builtin.c:1012 +#: builtin.c:1015 msgid "fatal: `L' is not permitted in POSIX awk formats" msgstr "fatal: no se permite `L' en los formatos POSIX de awk" -#: builtin.c:1025 +#: builtin.c:1028 msgid "`h' is meaningless in awk formats; ignored" msgstr "`h' no tiene significado en los formatos de awk; se descarta" -#: builtin.c:1029 +#: builtin.c:1032 msgid "fatal: `h' is not permitted in POSIX awk formats" msgstr "fatal: no se permite `h' en los formatos POSIX de awk" -#: builtin.c:1055 +#: builtin.c:1058 #, fuzzy, c-format msgid "[s]printf: value %g is too big for %%c format" msgstr "[s]printf: el valor %g está fuera del rango para el formato `%%%c'" -#: builtin.c:1068 +#: builtin.c:1071 #, fuzzy, c-format msgid "[s]printf: value %g is not a valid wide character" msgstr "[s]printf: el valor %g está fuera del rango para el formato `%%%c'" -#: builtin.c:1454 +#: builtin.c:1457 #, c-format msgid "[s]printf: value %g is out of range for `%%%c' format" msgstr "[s]printf: el valor %g está fuera del rango para el formato `%%%c'" -#: builtin.c:1552 +#: builtin.c:1555 #, c-format msgid "ignoring unknown format specifier character `%c': no argument converted" msgstr "" "se descarta el carácter especificador de formato `%c' desconocido: no se " "convirtió ningún argumento" -#: builtin.c:1557 +#: builtin.c:1560 msgid "fatal: not enough arguments to satisfy format string" msgstr "" "fatal: no hay suficientes argumentos para satisfacer a la cadena de formato" -#: builtin.c:1559 +#: builtin.c:1562 msgid "^ ran out for this one" msgstr "se acabó ^ para éste" -#: builtin.c:1566 +#: builtin.c:1569 msgid "[s]printf: format specifier does not have control letter" msgstr "[s]printf: el especificador de formato no tiene letras de control" -#: builtin.c:1569 +#: builtin.c:1572 msgid "too many arguments supplied for format string" msgstr "se proporcionaron demasiados argumentos para la cadena de formato" -#: builtin.c:1625 +#: builtin.c:1631 #, fuzzy msgid "sprintf: no arguments" msgstr "printf: sin argumentos" -#: builtin.c:1648 builtin.c:1659 +#: builtin.c:1654 builtin.c:1665 msgid "printf: no arguments" msgstr "printf: sin argumentos" -#: builtin.c:1702 +#: builtin.c:1676 +msgid "printf: attempt to write to closed write end of two-way pipe" +msgstr "" + +#: builtin.c:1713 msgid "sqrt: received non-numeric argument" msgstr "sqrt: se recibió un argumento que no es un númerico" -#: builtin.c:1706 +#: builtin.c:1717 #, c-format msgid "sqrt: called with negative argument %g" msgstr "sqrt: se llamó con el argumento negativo %g" -#: builtin.c:1737 +#: builtin.c:1748 #, c-format msgid "substr: length %g is not >= 1" msgstr "substr: la longitud %g no es >= 1" -#: builtin.c:1739 +#: builtin.c:1750 #, c-format msgid "substr: length %g is not >= 0" msgstr "substr: la longitud %g no es >= 0" -#: builtin.c:1753 +#: builtin.c:1764 #, c-format msgid "substr: non-integer length %g will be truncated" msgstr "substr: se truncará la longitud no entera %g" -#: builtin.c:1758 +#: builtin.c:1769 #, 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:1770 +#: builtin.c:1781 #, c-format msgid "substr: start index %g is invalid, using 1" msgstr "substr: el índice de inicio %g es inválido, se usa 1" -#: builtin.c:1775 +#: builtin.c:1786 #, c-format msgid "substr: non-integer start index %g will be truncated" msgstr "substr: se truncará el índice de inicio no entero %g" -#: builtin.c:1798 +#: builtin.c:1809 msgid "substr: source string is zero length" msgstr "substr: la cadena de origen es de longitud cero" -#: builtin.c:1812 +#: builtin.c:1823 #, 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:1820 +#: builtin.c:1831 #, c-format msgid "" "substr: length %g at start index %g exceeds length of first argument (%lu)" @@ -789,541 +805,549 @@ msgstr "" "substr: la cadena %g en el índice de inicio %g excede la longitud del primer " "argumento (%lu)" -#: builtin.c:1892 +#: builtin.c:1903 msgid "strftime: format value in PROCINFO[\"strftime\"] has numeric type" msgstr "" "strftime: el valor de formato en PROCINFO[\"strftime\"] tiene tipo numérico" -#: builtin.c:1915 +#: builtin.c:1926 msgid "strftime: received non-numeric second argument" msgstr "strftime: el segundo argumento recibido no es númerico" -#: builtin.c:1925 +#: builtin.c:1936 msgid "strftime: second argument less than 0 or too big for time_t" msgstr "" "strftime: el segundo argumento es menor que 0 o demasiado grande para time_t" -#: builtin.c:1932 +#: builtin.c:1943 #, fuzzy msgid "strftime: second argument out of range for time_t" msgstr "" "strftime: el segundo argumento es menor que 0 o demasiado grande para time_t" -#: builtin.c:1941 +#: builtin.c:1952 msgid "strftime: received non-string first argument" msgstr "strftime: el primer argumento recibido no es una cadena" -#: builtin.c:1948 +#: builtin.c:1959 msgid "strftime: received empty format string" msgstr "strftime: se recibió una cadena de formato vacía" -#: builtin.c:2017 +#: builtin.c:2028 msgid "mktime: received non-string argument" msgstr "mktime: se recibió un argumento que no es una cadena" -#: builtin.c:2034 +#: builtin.c:2045 msgid "mktime: at least one of the values is out of the default range" msgstr "" "mktime: por lo menos uno de los valores está fuera del rango por defecto" -#: builtin.c:2069 +#: builtin.c:2081 msgid "'system' function not allowed in sandbox mode" msgstr "no se permite la función 'system' en modo sandbox" -#: builtin.c:2074 +#: builtin.c:2086 msgid "system: received non-string argument" msgstr "system: se recibió un argumento que no es una cadena" -#: builtin.c:2194 +#: builtin.c:2165 builtin.c:2230 +msgid "print: attempt to write to closed write end of two-way pipe" +msgstr "" + +#: builtin.c:2248 #, c-format msgid "reference to uninitialized field `$%d'" msgstr "referencia al campo sin inicializar `$%d'" -#: builtin.c:2279 +#: builtin.c:2333 msgid "tolower: received non-string argument" msgstr "tolower: se recibió un argumento que no es una cadena" -#: builtin.c:2310 +#: builtin.c:2364 msgid "toupper: received non-string argument" msgstr "toupper: se recibió un argumento que no es una cadena" -#: builtin.c:2343 mpfr.c:679 +#: builtin.c:2397 mpfr.c:681 msgid "atan2: received non-numeric first argument" msgstr "atan2: el primer argumento recibido no es númerico" -#: builtin.c:2345 mpfr.c:681 +#: builtin.c:2399 mpfr.c:683 msgid "atan2: received non-numeric second argument" msgstr "atan2: el segundo argumento recibido no es númerico" -#: builtin.c:2364 +#: builtin.c:2418 msgid "sin: received non-numeric argument" msgstr "sin: se recibió un argumento que no es númerico" -#: builtin.c:2380 +#: builtin.c:2434 msgid "cos: received non-numeric argument" msgstr "cos: se recibió un argumento que no es númerico" -#: builtin.c:2433 mpfr.c:1176 +#: builtin.c:2487 mpfr.c:1180 msgid "srand: received non-numeric argument" msgstr "srand: se recibió un argumento que no es númerico" -#: builtin.c:2464 +#: builtin.c:2518 msgid "match: third argument is not an array" msgstr "match: el tercer argumento no es una matriz" -#: builtin.c:2725 +#: builtin.c:2779 #, fuzzy, c-format msgid "gensub: third argument `%.*s' treated as 1" msgstr "gensub: el tercer argumento de 0 se trata como 1" -#: builtin.c:2740 +#: builtin.c:2794 #, fuzzy, c-format msgid "gensub: third argument %g treated as 1" msgstr "gensub: el tercer argumento de 0 se trata como 1" -#: builtin.c:3038 +#: builtin.c:3096 #, fuzzy, c-format msgid "%s: can be called indirectly only with two arguments" msgstr "sqrt: se llamó con el argumento negativo %g" -#: builtin.c:3128 +#: builtin.c:3186 #, fuzzy, c-format msgid "indirect call to %s requires at least two arguments" msgstr "sqrt: se llamó con el argumento negativo %g" -#: builtin.c:3180 +#: builtin.c:3238 msgid "lshift: received non-numeric first argument" msgstr "lshift: el primer argumento recibido no es númerico" -#: builtin.c:3182 +#: builtin.c:3240 msgid "lshift: received non-numeric second argument" msgstr "lshift: el segundo argumento recibido no es númerico" -#: builtin.c:3188 +#: builtin.c:3246 #, fuzzy, c-format msgid "lshift(%f, %f): negative values will give strange results" msgstr "lshift(%lf, %lf): los valores negativos darán resultados extraños" -#: builtin.c:3190 +#: builtin.c:3248 #, fuzzy, c-format msgid "lshift(%f, %f): fractional values will be truncated" msgstr "lshift(%lf, %lf): los valores fraccionarios se truncarán" -#: builtin.c:3192 +#: builtin.c:3250 #, fuzzy, c-format msgid "lshift(%f, %f): too large shift value will give strange results" msgstr "" "lshift(%lf, %lf): un valor de desplazamiento muy grande dará resultados " "extraños" -#: builtin.c:3217 +#: builtin.c:3275 msgid "rshift: received non-numeric first argument" msgstr "rshift: el primer argumento recibido no es númerico" -#: builtin.c:3219 +#: builtin.c:3277 msgid "rshift: received non-numeric second argument" msgstr "rshift: el segundo argumento recibido no es númerico" -#: builtin.c:3225 +#: builtin.c:3283 #, fuzzy, c-format msgid "rshift(%f, %f): negative values will give strange results" msgstr "rshift(%lf, %lf): los valores negativos darán resultados extraños" -#: builtin.c:3227 +#: builtin.c:3285 #, fuzzy, c-format msgid "rshift(%f, %f): fractional values will be truncated" msgstr "rshift(%lf, %lf): los valores fraccionarios serán truncados" -#: builtin.c:3229 +#: builtin.c:3287 #, fuzzy, c-format msgid "rshift(%f, %f): too large shift value will give strange results" msgstr "" "rshift(%lf, %lf): un valor de desplazamiento muy grande dará resultados " "extraños" -#: builtin.c:3254 mpfr.c:988 +#: builtin.c:3312 mpfr.c:992 #, fuzzy msgid "and: called with less than two arguments" msgstr "sqrt: se llamó con el argumento negativo %g" -#: builtin.c:3259 +#: builtin.c:3317 #, fuzzy, c-format msgid "and: argument %d is non-numeric" msgstr "exp: el argumento %g está fuera de rango" -#: builtin.c:3263 +#: builtin.c:3321 #, fuzzy, c-format msgid "and: argument %d negative value %g will give strange results" msgstr "and(%lf, %lf): los valores negativos darán resultados extraños" -#: builtin.c:3286 mpfr.c:1020 +#: builtin.c:3344 mpfr.c:1024 #, fuzzy msgid "or: called with less than two arguments" msgstr "sqrt: se llamó con el argumento negativo %g" -#: builtin.c:3291 +#: builtin.c:3349 #, fuzzy, c-format msgid "or: argument %d is non-numeric" msgstr "exp: el argumento %g está fuera de rango" -#: builtin.c:3295 +#: builtin.c:3353 #, fuzzy, c-format msgid "or: argument %d negative value %g will give strange results" msgstr "compl(%lf): el valor negativo dará resultados extraños" -#: builtin.c:3317 mpfr.c:1051 +#: builtin.c:3375 mpfr.c:1055 #, fuzzy msgid "xor: called with less than two arguments" msgstr "sqrt: se llamó con el argumento negativo %g" -#: builtin.c:3323 +#: builtin.c:3381 #, fuzzy, c-format msgid "xor: argument %d is non-numeric" msgstr "exp: el argumento %g está fuera de rango" -#: builtin.c:3327 +#: builtin.c:3385 #, fuzzy, c-format msgid "xor: argument %d negative value %g will give strange results" msgstr "xor(%lf, %lf): los valores negativos darán resultados extraños" -#: builtin.c:3352 mpfr.c:807 +#: builtin.c:3410 mpfr.c:811 msgid "compl: received non-numeric argument" msgstr "compl: se recibió un argumento que no es númerico" -#: builtin.c:3358 +#: builtin.c:3416 #, fuzzy, c-format msgid "compl(%f): negative value will give strange results" msgstr "compl(%lf): el valor negativo dará resultados extraños" -#: builtin.c:3360 +#: builtin.c:3418 #, fuzzy, c-format msgid "compl(%f): fractional value will be truncated" msgstr "compl(%lf): el valor fraccionario se truncará" -#: builtin.c:3529 +#: builtin.c:3588 #, c-format msgid "dcgettext: `%s' is not a valid locale category" msgstr "dcgettext: `%s' no es una categoría local válida" -#: command.y:225 +#: command.y:226 #, c-format msgid "Type (g)awk statement(s). End with the command \"end\"\n" msgstr "" -#: command.y:289 +#: command.y:290 #, fuzzy, c-format msgid "invalid frame number: %d" msgstr "Final de rango inválido" -#: command.y:295 +#: command.y:296 #, fuzzy, c-format msgid "info: invalid option - \"%s\"" msgstr "%s: opción inválida -- '%c'\n" -#: command.y:321 +#: command.y:322 #, c-format msgid "source \"%s\": already sourced." msgstr "" -#: command.y:326 +#: command.y:327 #, c-format msgid "save \"%s\": command not permitted." msgstr "" -#: command.y:339 +#: command.y:340 msgid "Can't use command `commands' for breakpoint/watchpoint commands" msgstr "" -#: command.y:341 +#: command.y:342 msgid "no breakpoint/watchpoint has been set yet" msgstr "" -#: command.y:343 +#: command.y:344 msgid "invalid breakpoint/watchpoint number" msgstr "" -#: command.y:348 +#: command.y:349 #, c-format msgid "Type commands for when %s %d is hit, one per line.\n" msgstr "" -#: command.y:350 +#: command.y:351 #, c-format msgid "End with the command \"end\"\n" msgstr "" -#: command.y:357 +#: command.y:358 msgid "`end' valid only in command `commands' or `eval'" msgstr "" -#: command.y:367 +#: command.y:368 msgid "`silent' valid only in command `commands'" msgstr "" -#: command.y:373 +#: command.y:374 #, fuzzy, c-format msgid "trace: invalid option - \"%s\"" msgstr "%s: opción inválida -- '%c'\n" -#: command.y:387 +#: command.y:388 msgid "condition: invalid breakpoint/watchpoint number" msgstr "" -#: command.y:449 +#: command.y:450 #, fuzzy msgid "argument not a string" msgstr "exp: el argumento %g está fuera de rango" -#: command.y:459 command.y:464 +#: command.y:460 command.y:465 #, c-format msgid "option: invalid parameter - \"%s\"" msgstr "" -#: command.y:474 +#: command.y:475 #, c-format msgid "no such function - \"%s\"" msgstr "" -#: command.y:531 +#: command.y:532 #, fuzzy, c-format msgid "enable: invalid option - \"%s\"" msgstr "%s: opción inválida -- '%c'\n" -#: command.y:597 +#: command.y:598 #, fuzzy, c-format msgid "invalid range specification: %d - %d" msgstr "Final de rango inválido" -#: command.y:659 +#: command.y:660 #, fuzzy msgid "non-numeric value for field number" msgstr "valor desconocido para la especificación de campo: %d\n" -#: command.y:680 command.y:687 +#: command.y:681 command.y:688 msgid "non-numeric value found, numeric expected" msgstr "" -#: command.y:712 command.y:718 +#: command.y:713 command.y:719 msgid "non-zero integer value" msgstr "" -#: command.y:817 +#: command.y:818 msgid "" "backtrace [N] - print trace of all or N innermost (outermost if N < 0) " "frames." msgstr "" -#: command.y:819 +#: command.y:820 msgid "" "break [[filename:]N|function] - set breakpoint at the specified location." msgstr "" -#: command.y:821 +#: command.y:822 msgid "clear [[filename:]N|function] - delete breakpoints previously set." msgstr "" -#: command.y:823 +#: command.y:824 msgid "" "commands [num] - starts a list of commands to be executed at a " "breakpoint(watchpoint) hit." msgstr "" -#: command.y:825 +#: command.y:826 msgid "condition num [expr] - set or clear breakpoint or watchpoint condition." msgstr "" -#: command.y:827 +#: command.y:828 msgid "continue [COUNT] - continue program being debugged." msgstr "" -#: command.y:829 +#: command.y:830 msgid "delete [breakpoints] [range] - delete specified breakpoints." msgstr "" -#: command.y:831 +#: command.y:832 msgid "disable [breakpoints] [range] - disable specified breakpoints." msgstr "" -#: command.y:833 +#: command.y:834 msgid "display [var] - print value of variable each time the program stops." msgstr "" -#: command.y:835 +#: command.y:836 msgid "down [N] - move N frames down the stack." msgstr "" -#: command.y:837 +#: command.y:838 msgid "dump [filename] - dump instructions to file or stdout." msgstr "" -#: command.y:839 +#: command.y:840 msgid "enable [once|del] [breakpoints] [range] - enable specified breakpoints." msgstr "" -#: command.y:841 +#: command.y:842 msgid "end - end a list of commands or awk statements." msgstr "" -#: command.y:843 +#: command.y:844 msgid "eval stmt|[p1, p2, ...] - evaluate awk statement(s)." msgstr "" -#: command.y:845 +#: command.y:846 +msgid "exit - (same as quit) exit debugger." +msgstr "" + +#: command.y:848 msgid "finish - execute until selected stack frame returns." msgstr "" -#: command.y:847 +#: command.y:850 msgid "frame [N] - select and print stack frame number N." msgstr "" -#: command.y:849 +#: command.y:852 msgid "help [command] - print list of commands or explanation of command." msgstr "" -#: command.y:851 +#: command.y:854 msgid "ignore N COUNT - set ignore-count of breakpoint number N to COUNT." msgstr "" -#: command.y:853 +#: command.y:856 msgid "" "info topic - source|sources|variables|functions|break|frame|args|locals|" "display|watch." msgstr "" -#: command.y:855 +#: command.y:858 msgid "list [-|+|[filename:]lineno|function|range] - list specified line(s)." msgstr "" -#: command.y:857 +#: command.y:860 msgid "next [COUNT] - step program, proceeding through subroutine calls." msgstr "" -#: command.y:859 +#: command.y:862 msgid "" "nexti [COUNT] - step one instruction, but proceed through subroutine calls." msgstr "" -#: command.y:861 +#: command.y:864 msgid "option [name[=value]] - set or display debugger option(s)." msgstr "" -#: command.y:863 +#: command.y:866 msgid "print var [var] - print value of a variable or array." msgstr "" -#: command.y:865 +#: command.y:868 msgid "printf format, [arg], ... - formatted output." msgstr "" -#: command.y:867 +#: command.y:870 msgid "quit - exit debugger." msgstr "" -#: command.y:869 +#: command.y:872 msgid "return [value] - make selected stack frame return to its caller." msgstr "" -#: command.y:871 +#: command.y:874 msgid "run - start or restart executing program." msgstr "" -#: command.y:874 +#: command.y:877 msgid "save filename - save commands from the session to file." msgstr "" -#: command.y:877 +#: command.y:880 msgid "set var = value - assign value to a scalar variable." msgstr "" -#: command.y:879 +#: command.y:882 msgid "" "silent - suspends usual message when stopped at a breakpoint/watchpoint." msgstr "" -#: command.y:881 +#: command.y:884 msgid "source file - execute commands from file." msgstr "" -#: command.y:883 +#: command.y:886 msgid "step [COUNT] - step program until it reaches a different source line." msgstr "" -#: command.y:885 +#: command.y:888 msgid "stepi [COUNT] - step one instruction exactly." msgstr "" -#: command.y:887 +#: command.y:890 msgid "tbreak [[filename:]N|function] - set a temporary breakpoint." msgstr "" -#: command.y:889 +#: command.y:892 msgid "trace on|off - print instruction before executing." msgstr "" -#: command.y:891 +#: command.y:894 msgid "undisplay [N] - remove variable(s) from automatic display list." msgstr "" -#: command.y:893 +#: command.y:896 msgid "" "until [[filename:]N|function] - execute until program reaches a different " "line or line N within current frame." msgstr "" -#: command.y:895 +#: command.y:898 msgid "unwatch [N] - remove variable(s) from watch list." msgstr "" -#: command.y:897 +#: command.y:900 msgid "up [N] - move N frames up the stack." msgstr "" -#: command.y:899 +#: command.y:902 msgid "watch var - set a watchpoint for a variable." msgstr "" -#: command.y:901 +#: command.y:904 msgid "" "where [N] - (same as backtrace) print trace of all or N innermost (outermost " "if N < 0) frames." msgstr "" -#: command.y:1013 debug.c:401 msg.c:135 +#: command.y:1016 debug.c:401 msg.c:135 #, c-format msgid "error: " msgstr "error: " -#: command.y:1053 +#: command.y:1060 #, fuzzy, c-format msgid "can't read command (%s)\n" msgstr "no se puede redirigir desde `%s' (%s)" -#: command.y:1067 +#: command.y:1074 #, fuzzy, c-format msgid "can't read command (%s)" msgstr "no se puede redirigir desde `%s' (%s)" -#: command.y:1118 +#: command.y:1125 #, fuzzy msgid "invalid character in command" msgstr "Nombre de clase de caracter inválido" -#: command.y:1154 +#: command.y:1161 #, c-format msgid "unknown command - \"%.*s\", try help" msgstr "" -#: command.y:1224 +#: command.y:1231 #, c-format msgid "%s" msgstr "" -#: command.y:1286 +#: command.y:1293 #, fuzzy msgid "invalid character" msgstr "Caracter de ordenación inválido" -#: command.y:1457 +#: command.y:1497 #, c-format msgid "undefined command: %s\n" msgstr "" @@ -1522,17 +1546,17 @@ msgstr "delete: el índice `%s' no está en la matriz `%s'" msgid "`%s[\"%s\"]' is not an array\n" msgstr "" -#: debug.c:1236 debug.c:4964 +#: debug.c:1236 debug.c:5010 #, fuzzy, c-format msgid "`%s' is not a scalar variable" msgstr "`%s' no es un nombre de variable legal" -#: debug.c:1258 debug.c:4994 +#: debug.c:1258 debug.c:5040 #, fuzzy, c-format msgid "attempt to use array `%s[\"%s\"]' in a scalar context" msgstr "se intentó usar la matriz `%s[\"%.*s\"]' en un contexto escalar" -#: debug.c:1280 debug.c:5005 +#: debug.c:1280 debug.c:5051 #, fuzzy, c-format msgid "attempt to use scalar `%s[\"%s\"]' as array" msgstr "se intentó usar el dato escalar `%s[\"%.*s\"]' como una matriz" @@ -1807,108 +1831,108 @@ msgstr "" msgid "'until' not meaningful with non-local jump '%s'\n" msgstr "" -#: debug.c:4185 +#: debug.c:4231 msgid "\t------[Enter] to continue or q [Enter] to quit------" msgstr "" -#: debug.c:4186 +#: debug.c:4232 msgid "q" msgstr "" -#: debug.c:5001 +#: debug.c:5047 #, fuzzy, c-format msgid "[\"%s\"] not in array `%s'" msgstr "delete: el índice `%s' no está en la matriz `%s'" -#: debug.c:5207 +#: debug.c:5253 #, c-format msgid "sending output to stdout\n" msgstr "" -#: debug.c:5247 +#: debug.c:5293 msgid "invalid number" msgstr "" -#: debug.c:5381 +#: debug.c:5427 #, fuzzy, c-format msgid "`%s' not allowed in current context; statement ignored" msgstr "`exit' no se puede llamar en el contexto actual" -#: debug.c:5389 +#: debug.c:5435 #, fuzzy msgid "`return' not allowed in current context; statement ignored" msgstr "`exit' no se puede llamar en el contexto actual" -#: debug.c:5604 +#: debug.c:5650 #, fuzzy, c-format msgid "No symbol `%s' in current context" msgstr "se intentó usar la matriz `%s' en un contexto escalar" -#: dfa.c:1062 dfa.c:1065 dfa.c:1084 dfa.c:1094 dfa.c:1106 dfa.c:1142 -#: dfa.c:1151 dfa.c:1154 dfa.c:1159 dfa.c:1173 dfa.c:1221 +#: dfa.c:1090 dfa.c:1093 dfa.c:1112 dfa.c:1122 dfa.c:1135 dfa.c:1163 dfa.c:1172 +#: dfa.c:1175 dfa.c:1180 dfa.c:1202 dfa.c:1205 #, fuzzy msgid "unbalanced [" msgstr "[ desbalanceado" -#: dfa.c:1118 +#: dfa.c:1148 #, fuzzy msgid "invalid character class" msgstr "Nombre de clase de caracter inválido" -#: dfa.c:1264 +#: dfa.c:1271 msgid "character class syntax is [[:space:]], not [:space:]" msgstr "" -#: dfa.c:1326 +#: dfa.c:1332 #, fuzzy msgid "unfinished \\ escape" msgstr "Escape \\ sin terminar" -#: dfa.c:1473 +#: dfa.c:1499 #, fuzzy msgid "invalid content of \\{\\}" msgstr "Contenido inválido de \\{\\}" -#: dfa.c:1476 +#: dfa.c:1502 #, fuzzy msgid "regular expression too big" msgstr "La expresión regular es demasiado grande" -#: dfa.c:1911 +#: dfa.c:1916 #, fuzzy msgid "unbalanced (" msgstr "( desbalanceado" -#: dfa.c:2037 +#: dfa.c:2044 #, fuzzy msgid "no syntax specified" msgstr "No se especifican los bits de sintaxis de la expresión regular" -#: dfa.c:2045 +#: dfa.c:2052 #, fuzzy msgid "unbalanced )" msgstr ") desbalanceado" -#: eval.c:396 +#: eval.c:398 #, c-format msgid "unknown nodetype %d" msgstr "tipo de nodo %d desconocido" -#: eval.c:407 eval.c:421 +#: eval.c:409 eval.c:423 #, c-format msgid "unknown opcode %d" msgstr "código de operación %d desconocido" -#: eval.c:418 +#: eval.c:420 #, c-format msgid "opcode %s not an operator or keyword" msgstr "el código de operación %s no es un operador o una palabra clave" -#: eval.c:474 +#: eval.c:476 msgid "buffer overflow in genflags2str" msgstr "desbordamiento de almacenamiento temporal en genflags2str" -#: eval.c:676 +#: eval.c:678 #, c-format msgid "" "\n" @@ -1919,94 +1943,94 @@ msgstr "" "\t# Pila de Llamadas de Funciones:\n" "\n" -#: eval.c:705 +#: eval.c:707 msgid "`IGNORECASE' is a gawk extension" msgstr "`IGNORECASE' es una extensión de gawk" -#: eval.c:737 +#: eval.c:739 msgid "`BINMODE' is a gawk extension" msgstr "`BINMODE' es una extensión de gawk" -#: eval.c:795 +#: eval.c:797 #, c-format msgid "BINMODE value `%s' is invalid, treated as 3" msgstr "el valor BINMODE `%s' es inválido; se trata como 3" -#: eval.c:912 +#: eval.c:914 #, c-format msgid "bad `%sFMT' specification `%s'" msgstr "especificación `%sFMT' `%s' errónea" -#: eval.c:996 +#: eval.c:988 msgid "turning off `--lint' due to assignment to `LINT'" msgstr "se desactiva `--lint' debido a una asignación a `LINT'" -#: eval.c:1174 +#: eval.c:1166 #, c-format msgid "reference to uninitialized argument `%s'" msgstr "referencia al argumento sin inicializar `%s'" -#: eval.c:1175 +#: eval.c:1167 #, c-format msgid "reference to uninitialized variable `%s'" msgstr "referencia a la variable sin inicializar `%s'" -#: eval.c:1193 +#: eval.c:1185 msgid "attempt to field reference from non-numeric value" msgstr "se intentó una referencia de campo desde un valor que no es númerico" -#: eval.c:1195 +#: eval.c:1187 msgid "attempt to field reference from null string" msgstr "se intentó una referencia de campo desde una cadena nula" -#: eval.c:1203 +#: eval.c:1195 #, c-format msgid "attempt to access field %ld" msgstr "se intentó acceder al campo %ld" -#: eval.c:1212 +#: eval.c:1204 #, c-format msgid "reference to uninitialized field `$%ld'" msgstr "referencia al campo sin inicializar `$%ld'" -#: eval.c:1299 +#: eval.c:1291 #, 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:1506 +#: eval.c:1498 #, c-format msgid "unwind_stack: unexpected type `%s'" msgstr "unwind_stack: tipo `%s' inesperado" -#: eval.c:1602 +#: eval.c:1594 msgid "division by zero attempted in `/='" msgstr "se intentó una división por cero en `/='" -#: eval.c:1609 +#: eval.c:1601 #, c-format msgid "division by zero attempted in `%%='" msgstr "se intentó una división por cero en `%%='" -#: ext.c:65 ext.c:147 +#: ext.c:66 ext.c:148 msgid "extensions are not allowed in sandbox mode" msgstr "no se permiten las extensiones en modo sandbox" -#: ext.c:68 +#: ext.c:69 #, fuzzy msgid "-l / @load are gawk extensions" msgstr "@include es una extensión de gawk" -#: ext.c:71 +#: ext.c:72 msgid "load_ext: received NULL lib_name" msgstr "" -#: ext.c:74 +#: ext.c:75 #, fuzzy, c-format msgid "load_ext: cannot open library `%s' (%s)\n" msgstr "fatal: extension: no se puede abrir `%s' (%s)\n" -#: ext.c:80 +#: ext.c:81 #, fuzzy, c-format msgid "" "load_ext: library `%s': does not define `plugin_is_GPL_compatible' (%s)\n" @@ -2014,32 +2038,32 @@ msgstr "" "fatal: extension: la biblioteca `%s': no define " "`plugin_is_GPL_compatible' (%s)\n" -#: ext.c:86 +#: ext.c:87 #, fuzzy, c-format msgid "load_ext: library `%s': cannot call function `%s' (%s)\n" msgstr "" "fatal: extension: la biblioteca `%s': no puede llamar a la función `" "%s' (%s)\n" -#: ext.c:90 +#: ext.c:91 #, c-format msgid "load_ext: library `%s' initialization routine `%s' failed\n" msgstr "" -#: ext.c:150 +#: ext.c:151 msgid "`extension' is a gawk extension" msgstr "`extension' es una extensión de gawk" -#: ext.c:153 +#: ext.c:154 msgid "extension: received NULL lib_name" msgstr "" -#: ext.c:156 +#: ext.c:157 #, fuzzy, c-format msgid "extension: cannot open library `%s' (%s)" msgstr "fatal: extension: no se puede abrir `%s' (%s)\n" -#: ext.c:162 +#: ext.c:163 #, fuzzy, c-format msgid "" "extension: library `%s': does not define `plugin_is_GPL_compatible' (%s)" @@ -2047,190 +2071,185 @@ msgstr "" "fatal: extension: la biblioteca `%s': no define " "`plugin_is_GPL_compatible' (%s)\n" -#: ext.c:166 +#: ext.c:167 #, fuzzy, c-format msgid "extension: library `%s': cannot call function `%s' (%s)" msgstr "" "fatal: extension: la biblioteca `%s': no puede llamar a la función `" "%s' (%s)\n" -#: ext.c:197 +#: ext.c:198 #, fuzzy msgid "make_builtin: missing function name" msgstr "extension: falta el nombre de la función" -#: ext.c:212 +#: ext.c:213 #, fuzzy, c-format msgid "make_builtin: can't redefine function `%s'" msgstr "extension: no se puede redefinir la función `%s'" -#: ext.c:216 +#: ext.c:217 #, fuzzy, c-format msgid "make_builtin: function `%s' already defined" msgstr "extension: la función `%s' ya está definida" -#: ext.c:220 +#: ext.c:221 #, fuzzy, c-format msgid "make_builtin: function name `%s' previously defined" msgstr "extension: el nombre de función `%s' se definió previamente" -#: ext.c:222 +#: ext.c:223 #, fuzzy, c-format msgid "make_builtin: 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:225 ext.c:280 +#: ext.c:226 ext.c:281 #, c-format msgid "make_builtin: negative argument count for function `%s'" msgstr "make_builtin: cuenta de argumento negativa para la función `%s'" -#: ext.c:252 +#: ext.c:253 #, fuzzy msgid "extension: missing function name" msgstr "extension: falta el nombre de la función" -#: ext.c:255 ext.c:259 +#: ext.c:256 ext.c:260 #, fuzzy, c-format msgid "extension: illegal character `%c' in function name `%s'" msgstr "extension: carácter ilegal `%c' en el nombre de la función `%s'" -#: ext.c:267 +#: ext.c:268 #, fuzzy, c-format msgid "extension: can't redefine function `%s'" msgstr "extension: no se puede redefinir la función `%s'" -#: ext.c:271 +#: ext.c:272 #, fuzzy, c-format msgid "extension: function `%s' already defined" msgstr "extension: la función `%s' ya está definida" -#: ext.c:275 +#: ext.c:276 #, fuzzy, c-format msgid "extension: function name `%s' previously defined" msgstr "el nombre de función `%s' se definió previamente" -#: ext.c:277 +#: ext.c:278 #, fuzzy, 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:351 -#, c-format -msgid "function `%s' defined to take no more than %d argument(s)" -msgstr "la función `%s' se definió para tomar no más de %d argumento(s)" - -#: ext.c:354 -#, c-format -msgid "function `%s': missing argument #%d" -msgstr "función `%s': falta el argumento #%d" - -#: ext.c:371 +#: ext.c:358 #, c-format msgid "function `%s': argument #%d: attempt to use scalar as an array" msgstr "" "función `%s': argumento #%d: se intentó usar un escalar como una matriz" -#: ext.c:375 +#: ext.c:362 #, 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:389 +#: ext.c:376 msgid "dynamic loading of library not supported" msgstr "" -#: extension/filefuncs.c:159 +#: extension/filefuncs.c:164 #, fuzzy msgid "chdir: called with incorrect number of arguments, expecting 1" msgstr "sqrt: se llamó con el argumento negativo %g" -#: extension/filefuncs.c:439 +#: extension/filefuncs.c:444 #, c-format msgid "stat: unable to read symbolic link `%s'" msgstr "" -#: extension/filefuncs.c:472 +#: extension/filefuncs.c:477 #, fuzzy msgid "stat: called with wrong number of arguments" msgstr "sqrt: se llamó con el argumento negativo %g" -#: extension/filefuncs.c:479 +#: extension/filefuncs.c:484 extension/filefuncs.c:534 #, fuzzy msgid "stat: bad parameters" msgstr "%s: es un parámetro\n" -#: extension/filefuncs.c:533 +#: extension/filefuncs.c:527 +#, fuzzy +msgid "statvfs: called with wrong number of arguments" +msgstr "sqrt: se llamó con el argumento negativo %g" + +#: extension/filefuncs.c:598 #, fuzzy, c-format msgid "fts init: could not create variable %s" msgstr "index: el segundo argumento recibido no es una cadena" -#: extension/filefuncs.c:554 +#: extension/filefuncs.c:619 #, fuzzy msgid "fts is not supported on this system" msgstr "`%s' no se admite en el awk antiguo" -#: extension/filefuncs.c:573 +#: extension/filefuncs.c:638 msgid "fill_stat_element: could not create array" msgstr "" -#: extension/filefuncs.c:582 +#: extension/filefuncs.c:647 msgid "fill_stat_element: could not set element" msgstr "" -#: extension/filefuncs.c:597 +#: extension/filefuncs.c:662 #, fuzzy msgid "fill_path_element: could not set element" msgstr "index: el segundo argumento recibido no es una cadena" -#: extension/filefuncs.c:613 +#: extension/filefuncs.c:678 msgid "fill_error_element: could not set element" msgstr "" -#: extension/filefuncs.c:660 extension/filefuncs.c:707 +#: extension/filefuncs.c:725 extension/filefuncs.c:772 msgid "fts-process: could not create array" msgstr "" -#: extension/filefuncs.c:670 extension/filefuncs.c:717 -#: extension/filefuncs.c:735 +#: extension/filefuncs.c:735 extension/filefuncs.c:782 +#: extension/filefuncs.c:800 #, fuzzy msgid "fts-process: could not set element" msgstr "index: el segundo argumento recibido no es una cadena" -#: extension/filefuncs.c:784 +#: extension/filefuncs.c:849 #, fuzzy msgid "fts: called with incorrect number of arguments, expecting 3" msgstr "sqrt: se llamó con el argumento negativo %g" -#: extension/filefuncs.c:787 +#: extension/filefuncs.c:852 #, fuzzy msgid "fts: bad first parameter" msgstr "%s: es un parámetro\n" -#: extension/filefuncs.c:793 +#: extension/filefuncs.c:858 #, fuzzy msgid "fts: bad second parameter" msgstr "%s: es un parámetro\n" -#: extension/filefuncs.c:799 +#: extension/filefuncs.c:864 #, fuzzy msgid "fts: bad third parameter" msgstr "%s: es un parámetro\n" -#: extension/filefuncs.c:806 +#: extension/filefuncs.c:871 #, fuzzy msgid "fts: could not flatten array\n" msgstr "`%s' no es un nombre de variable legal" -#: extension/filefuncs.c:824 +#: extension/filefuncs.c:889 msgid "fts: ignoring sneaky FTS_NOSTAT flag. nyah, nyah, nyah." msgstr "" -#: extension/filefuncs.c:841 +#: extension/filefuncs.c:906 msgid "fts: clear_array() failed\n" msgstr "" @@ -2299,88 +2318,88 @@ msgstr "sqrt: se llamó con el argumento negativo %g" msgid "wait: called with too many arguments" msgstr "sqrt: se llamó con el argumento negativo %g" -#: extension/inplace.c:130 +#: extension/inplace.c:131 msgid "inplace_begin: in-place editing already active" msgstr "" -#: extension/inplace.c:133 extension/inplace.c:210 +#: extension/inplace.c:134 extension/inplace.c:211 #, c-format msgid "inplace_begin: expects 2 arguments but called with %d" msgstr "" -#: extension/inplace.c:136 +#: extension/inplace.c:137 msgid "inplace_begin: cannot retrieve 1st argument as a string filename" msgstr "" -#: extension/inplace.c:144 +#: extension/inplace.c:145 #, c-format msgid "inplace_begin: disabling in-place editing for invalid FILENAME `%s'" msgstr "" -#: extension/inplace.c:151 +#: extension/inplace.c:152 #, fuzzy, c-format msgid "inplace_begin: Cannot stat `%s' (%s)" msgstr "fatal: extension: no se puede abrir `%s' (%s)\n" -#: extension/inplace.c:158 +#: extension/inplace.c:159 #, fuzzy, c-format msgid "inplace_begin: `%s' is not a regular file" msgstr "`%s' no es un nombre de variable legal" -#: extension/inplace.c:169 +#: extension/inplace.c:170 #, c-format msgid "inplace_begin: mkstemp(`%s') failed (%s)" msgstr "" -#: extension/inplace.c:181 +#: extension/inplace.c:182 #, fuzzy, c-format msgid "inplace_begin: chmod failed (%s)" msgstr "%s: falló close (%s)" -#: extension/inplace.c:188 +#: extension/inplace.c:189 #, c-format msgid "inplace_begin: dup(stdout) failed (%s)" msgstr "" -#: extension/inplace.c:191 +#: extension/inplace.c:192 #, c-format msgid "inplace_begin: dup2(%d, stdout) failed (%s)" msgstr "" -#: extension/inplace.c:194 +#: extension/inplace.c:195 #, fuzzy, c-format msgid "inplace_begin: close(%d) failed (%s)" msgstr "%s: falló close (%s)" -#: extension/inplace.c:213 +#: extension/inplace.c:214 msgid "inplace_end: cannot retrieve 1st argument as a string filename" msgstr "" -#: extension/inplace.c:220 +#: extension/inplace.c:221 msgid "inplace_end: in-place editing not active" msgstr "" -#: extension/inplace.c:226 +#: extension/inplace.c:227 #, c-format msgid "inplace_end: dup2(%d, stdout) failed (%s)" msgstr "" -#: extension/inplace.c:229 +#: extension/inplace.c:230 #, fuzzy, c-format msgid "inplace_end: close(%d) failed (%s)" msgstr "%s: falló close (%s)" -#: extension/inplace.c:233 +#: extension/inplace.c:234 #, c-format msgid "inplace_end: fsetpos(stdout) failed (%s)" msgstr "" -#: extension/inplace.c:246 +#: extension/inplace.c:247 #, fuzzy, c-format msgid "inplace_end: link(`%s', `%s') failed (%s)" msgstr "falló la limpieza de la tubería de `%s' (%s)." -#: extension/inplace.c:256 +#: extension/inplace.c:257 #, fuzzy, c-format msgid "inplace_end: rename(`%s', `%s') failed (%s)" msgstr "falló al cerrar el df %d (`%s') (%s)" @@ -2415,7 +2434,7 @@ msgstr "sqrt: se llamó con el argumento negativo %g" msgid "chr: called with inappropriate argument(s)" msgstr "sqrt: se llamó con el argumento negativo %g" -#: extension/readdir.c:281 +#: extension/readdir.c:271 #, c-format msgid "dir_take_control_of: opendir/fdopendir failed: %s" msgstr "" @@ -2430,56 +2449,56 @@ msgstr "sqrt: se llamó con el argumento negativo %g" msgid "readfile: called with no arguments" msgstr "sqrt: se llamó con el argumento negativo %g" -#: extension/revoutput.c:125 +#: extension/revoutput.c:127 msgid "revoutput: could not initialize REVOUT variable" msgstr "" -#: extension/rwarray.c:124 extension/rwarray0.c:109 +#: extension/rwarray.c:113 extension/rwarray0.c:109 #, fuzzy msgid "writea: called with too many arguments" msgstr "sqrt: se llamó con el argumento negativo %g" -#: extension/rwarray.c:131 extension/rwarray0.c:116 +#: extension/rwarray.c:120 extension/rwarray0.c:116 #, fuzzy, c-format msgid "do_writea: argument 0 is not a string\n" msgstr "exp: el argumento %g está fuera de rango" -#: extension/rwarray.c:137 extension/rwarray0.c:122 +#: extension/rwarray.c:126 extension/rwarray0.c:122 #, fuzzy, c-format msgid "do_writea: argument 1 is not an array\n" msgstr "split: el cuarto argumento no es una matriz" -#: extension/rwarray.c:184 extension/rwarray0.c:169 +#: extension/rwarray.c:173 extension/rwarray0.c:169 #, c-format msgid "write_array: could not flatten array\n" msgstr "" -#: extension/rwarray.c:198 extension/rwarray0.c:183 +#: extension/rwarray.c:187 extension/rwarray0.c:183 #, c-format msgid "write_array: could not release flattened array\n" msgstr "" -#: extension/rwarray.c:280 extension/rwarray0.c:265 +#: extension/rwarray.c:269 extension/rwarray0.c:265 #, fuzzy msgid "reada: called with too many arguments" msgstr "sqrt: se llamó con el argumento negativo %g" -#: extension/rwarray.c:287 extension/rwarray0.c:272 +#: extension/rwarray.c:276 extension/rwarray0.c:272 #, fuzzy, c-format msgid "do_reada: argument 0 is not a string\n" msgstr "exp: el argumento %g está fuera de rango" -#: extension/rwarray.c:293 extension/rwarray0.c:278 +#: extension/rwarray.c:282 extension/rwarray0.c:278 #, fuzzy, c-format msgid "do_reada: argument 1 is not an array\n" msgstr "match: el tercer argumento no es una matriz" -#: extension/rwarray.c:337 extension/rwarray0.c:322 +#: extension/rwarray.c:326 extension/rwarray0.c:322 #, c-format msgid "do_reada: clear_array failed\n" msgstr "" -#: extension/rwarray.c:374 extension/rwarray0.c:358 +#: extension/rwarray.c:363 extension/rwarray0.c:358 #, c-format msgid "read_array: set_array_element failed\n" msgstr "" @@ -2597,7 +2616,7 @@ msgstr "la cadena nula para `FS' es una extensión de gawk" msgid "old awk does not support regexps as value of `FS'" msgstr "el awk antiguo no admite expresiones regulares como valor de `FS'" -#: field.c:1380 +#: field.c:1384 msgid "`FPAT' is a gawk extension" msgstr "`FPAT' es una extensión de gawk" @@ -2605,29 +2624,29 @@ msgstr "`FPAT' es una extensión de gawk" msgid "awk_value_to_node: received null retval" msgstr "" -#: gawkapi.c:384 +#: gawkapi.c:383 msgid "node_to_awk_value: received null node" msgstr "" -#: gawkapi.c:387 +#: gawkapi.c:386 msgid "node_to_awk_value: received null val" msgstr "" -#: gawkapi.c:809 +#: gawkapi.c:808 #, fuzzy msgid "remove_element: received null array" msgstr "length: se recibió un argumento de matriz" -#: gawkapi.c:812 +#: gawkapi.c:811 msgid "remove_element: received null subscript" msgstr "" -#: gawkapi.c:949 +#: gawkapi.c:948 #, c-format msgid "api_flatten_array: could not convert index %d\n" msgstr "" -#: gawkapi.c:954 +#: gawkapi.c:953 #, c-format msgid "api_flatten_array: could not convert value %d\n" msgstr "" @@ -2687,495 +2706,502 @@ msgstr "%s: la opción '-W %s' no admite ningún argumento\n" msgid "%s: option '-W %s' requires an argument\n" msgstr "%s: la opción '-W %s' requiere un argumento\n" -#: io.c:423 +#: io.c:426 #, c-format msgid "command line argument `%s' is a directory: skipped" msgstr "el argumento de la línea de órdenes `%s' es un directorio: se salta" -#: io.c:426 io.c:544 +#: io.c:429 io.c:547 #, c-format msgid "cannot open file `%s' for reading (%s)" msgstr "no se puede abrir el fichero `%s' para lectura (%s)" -#: io.c:671 +#: io.c:674 #, c-format msgid "close of fd %d (`%s') failed (%s)" msgstr "falló al cerrar el df %d (`%s') (%s)" -#: io.c:749 +#: io.c:752 msgid "redirection not allowed in sandbox mode" msgstr "no se permite la redirección en modo sandbox" -#: io.c:783 +#: io.c:786 #, c-format msgid "expression in `%s' redirection only has numeric value" msgstr "la expresión en la redirección `%s' sólo tiene valor numérico" -#: io.c:789 +#: io.c:792 #, 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:794 +#: io.c:797 #, 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:842 +#: io.c:845 #, c-format msgid "unnecessary mixing of `>' and `>>' for file `%.*s'" msgstr "mezcla innecesaria de `>' y `>>' para el fichero `%.*s'" -#: io.c:896 +#: io.c:902 #, 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:906 +#: io.c:915 #, 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:937 +#: io.c:946 #, 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:1019 +#: io.c:1030 #, c-format msgid "can't redirect from `%s' (%s)" msgstr "no se puede redirigir desde `%s' (%s)" -#: io.c:1022 +#: io.c:1033 #, c-format msgid "can't redirect to `%s' (%s)" msgstr "no se puede redirigir a `%s' (%s)" -#: io.c:1073 +#: io.c:1084 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:1089 +#: io.c:1100 #, c-format msgid "close of `%s' failed (%s)." msgstr "falló al cerrar `%s' (%s)." -#: io.c:1097 +#: io.c:1108 msgid "too many pipes or input files open" msgstr "demasiadas tuberías o ficheros de entrada abiertos" -#: io.c:1119 +#: io.c:1130 msgid "close: second argument must be `to' or `from'" msgstr "close: el segundo argumento debe ser `to' o `from'" -#: io.c:1136 +#: io.c:1147 #, 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:1141 +#: io.c:1152 msgid "close of redirection that was never opened" msgstr "se cerró una redirección que nunca se abrió" -#: io.c:1238 +#: io.c:1249 #, c-format msgid "close: redirection `%s' not opened with `|&', second argument ignored" msgstr "" "close: la redirección `%s' no se abrió con `|&', se descarta el segundo " "argumento" -#: io.c:1255 +#: io.c:1266 #, 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:1258 +#: io.c:1269 #, 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:1278 +#: io.c:1289 #, c-format msgid "no explicit close of socket `%s' provided" msgstr "no se provee el cerrado explícito del `socket' `%s'" -#: io.c:1281 +#: io.c:1292 #, 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:1284 +#: io.c:1295 #, 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:1287 +#: io.c:1298 #, c-format msgid "no explicit close of file `%s' provided" msgstr "no se provee el cerrado explícito del fichero `%s'" -#: io.c:1317 io.c:1375 main.c:632 main.c:674 +#: io.c:1328 io.c:1387 main.c:645 main.c:687 #, c-format msgid "error writing standard output (%s)" msgstr "error al escribir en la salida estándar (%s)" -#: io.c:1322 io.c:1381 main.c:634 +#: io.c:1333 io.c:1393 main.c:647 #, c-format msgid "error writing standard error (%s)" msgstr "error al escribir en la salida estándar de error (%s)" -#: io.c:1330 +#: io.c:1341 #, c-format msgid "pipe flush of `%s' failed (%s)." msgstr "falló la limpieza de la tubería de `%s' (%s)." -#: io.c:1333 +#: io.c:1344 #, 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:1336 +#: io.c:1347 #, c-format msgid "file flush of `%s' failed (%s)." msgstr "falló la limpieza del fichero de `%s' (%s)." -#: io.c:1453 +#: io.c:1465 #, c-format msgid "local port %s invalid in `/inet'" msgstr "puerto local %s inválido en `/inet'" -#: io.c:1471 +#: io.c:1483 #, c-format msgid "remote host and port information (%s, %s) invalid" msgstr "anfitrión remoto e información de puerto (%s, %s) inválidos" -#: io.c:1699 +#: io.c:1711 msgid "TCP/IP communications are not supported" msgstr "no se admiten las comunicaciones TCP/IP" -#: io.c:1880 +#: io.c:1905 #, c-format msgid "could not open `%s', mode `%s'" msgstr "no se puede abrir `%s', modo `%s'" -#: io.c:1930 +#: io.c:1961 #, c-format msgid "close of master pty failed (%s)" msgstr "falló al cerrar el pty maestro (%s)" -#: io.c:1932 io.c:2118 io.c:2319 +#: io.c:1963 io.c:2141 io.c:2342 #, c-format msgid "close of stdout in child failed (%s)" msgstr "falló al cerrar la salida estándar en el hijo (%s)" -#: io.c:1935 +#: io.c:1966 #, 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:1937 io.c:2123 +#: io.c:1968 io.c:2146 #, c-format msgid "close of stdin in child failed (%s)" msgstr "falló al cerrar la entrada estándar en el hijo (%s)" -#: io.c:1940 +#: io.c:1971 #, 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:1942 io.c:1964 +#: io.c:1973 #, c-format msgid "close of slave pty failed (%s)" msgstr "falló al cerrar el pty esclavo (%s)" -#: io.c:2053 io.c:2121 io.c:2290 io.c:2322 +#: io.c:2076 io.c:2144 io.c:2313 io.c:2345 #, 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:2060 io.c:2126 +#: io.c:2083 io.c:2149 #, 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:2086 io.c:2312 +#: io.c:2109 io.c:2335 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:2094 +#: io.c:2117 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:2129 io.c:2324 io.c:2339 +#: io.c:2152 io.c:2347 io.c:2362 #, c-format msgid "close of pipe failed (%s)" msgstr "falló al cerrar la tubería (%s)" -#: io.c:2188 +#: io.c:2211 msgid "`|&' not supported" msgstr "no se admite `|&'" -#: io.c:2275 +#: io.c:2298 #, c-format msgid "cannot open pipe `%s' (%s)" msgstr "no se puede abrir la tubería `%s' (%s)" -#: io.c:2333 +#: io.c:2356 #, 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:2760 +#: io.c:2493 +msgid "getline: attempt to read from closed read end of two-way pipe" +msgstr "" + +#: io.c:2795 msgid "register_input_parser: received NULL pointer" msgstr "" -#: io.c:2788 +#: io.c:2823 #, c-format msgid "input parser `%s' conflicts with previously installed input parser `%s'" msgstr "" -#: io.c:2795 +#: io.c:2830 #, c-format msgid "input parser `%s' failed to open `%s'" msgstr "" -#: io.c:2815 +#: io.c:2850 msgid "register_output_wrapper: received NULL pointer" msgstr "" -#: io.c:2843 +#: io.c:2878 #, c-format msgid "" "output wrapper `%s' conflicts with previously installed output wrapper `%s'" msgstr "" -#: io.c:2850 +#: io.c:2885 #, c-format msgid "output wrapper `%s' failed to open `%s'" msgstr "" -#: io.c:2871 +#: io.c:2906 msgid "register_output_processor: received NULL pointer" msgstr "" -#: io.c:2900 +#: io.c:2935 #, c-format msgid "" "two-way processor `%s' conflicts with previously installed two-way processor " "`%s'" msgstr "" -#: io.c:2909 +#: io.c:2944 #, c-format msgid "two way processor `%s' failed to open `%s'" msgstr "" -#: io.c:3034 +#: io.c:3069 #, c-format msgid "data file `%s' is empty" msgstr "el fichero de datos `%s' está vacío" -#: io.c:3076 io.c:3084 +#: io.c:3111 io.c:3119 msgid "could not allocate more input memory" msgstr "no se puede reservar más memoria de entrada" -#: io.c:3662 +#: io.c:3697 msgid "multicharacter value of `RS' is a gawk extension" msgstr "el valor multicaracter de `RS' es una extensión de gawk" -#: io.c:3809 +#: io.c:3844 msgid "IPv6 communication is not supported" msgstr "no se admite la comunicación IPv6" -#: main.c:321 +#: main.c:334 msgid "environment variable `POSIXLY_CORRECT' set: turning on `--posix'" msgstr "" "la variable de ambiente `POSIXLY_CORRECT' está definida: se activa `--posix'" -#: main.c:327 +#: main.c:340 msgid "`--posix' overrides `--traditional'" msgstr "`--posix' se impone a `--traditional'" -#: main.c:338 +#: main.c:351 msgid "`--posix'/`--traditional' overrides `--non-decimal-data'" msgstr "`--posix'/`--traditional' se imponen a `--non-decimal-data'" -#: main.c:342 +#: main.c:355 #, 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:346 +#: main.c:359 #, fuzzy msgid "`--posix' overrides `--characters-as-bytes'" msgstr "`--posix' se impone a `--binary'" -#: main.c:404 +#: main.c:417 #, 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:407 +#: main.c:420 #, 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:409 +#: main.c:422 #, 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:469 +#: main.c:482 msgid "no program text at all!" msgstr "¡No hay ningún programa de texto!" -#: main.c:563 +#: main.c:576 #, 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:565 +#: main.c:578 #, 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:570 +#: main.c:583 msgid "POSIX options:\t\tGNU long options: (standard)\n" msgstr "Opciones POSIX:\t\tOpciones largas GNU: (estándar)\n" -#: main.c:571 +#: main.c:584 msgid "\t-f progfile\t\t--file=progfile\n" msgstr "\t-f fichprog\t\t--file=fichprog\n" -#: main.c:572 +#: main.c:585 msgid "\t-F fs\t\t\t--field-separator=fs\n" msgstr "\t-F sc\t\t\t--field-separator=sc\n" -#: main.c:573 +#: main.c:586 msgid "\t-v var=val\t\t--assign=var=val\n" msgstr "\t-v var=valor\t\t--assign=var=valor\n" -#: main.c:574 +#: main.c:587 msgid "Short options:\t\tGNU long options: (extensions)\n" msgstr "Opciones cortas:\t\tOpciones largas GNU: (extensiones)\n" -#: main.c:575 +#: main.c:588 msgid "\t-b\t\t\t--characters-as-bytes\n" msgstr "\t-b\t\t\t--characters-as-bytes\n" -#: main.c:576 +#: main.c:589 msgid "\t-c\t\t\t--traditional\n" msgstr "\t-c\t\t\t--traditional\n" -#: main.c:577 +#: main.c:590 msgid "\t-C\t\t\t--copyright\n" msgstr "\t-C\t\t\t--copyright\n" -#: main.c:578 +#: main.c:591 msgid "\t-d[file]\t\t--dump-variables[=file]\n" msgstr "\t-d[fichero]\t\t--dump-variables[=fichero]\n" -#: main.c:579 +#: main.c:592 #, fuzzy msgid "\t-D[file]\t\t--debug[=file]\n" msgstr "\t-p[fichero]\t\t--profile[=fichero]\n" # Esta es la línea más larga de la lista de argumentos. # Probar con gawk para revisar tabuladores. cfuga -#: main.c:580 +#: main.c:593 msgid "\t-e 'program-text'\t--source='program-text'\n" msgstr "\t-e 'texto-prog'\t--source='texto-prog'\n" -#: main.c:581 +#: main.c:594 msgid "\t-E file\t\t\t--exec=file\n" msgstr "\t-E fichero\t\t--exec=fichero\n" -#: main.c:582 +#: main.c:595 msgid "\t-g\t\t\t--gen-pot\n" msgstr "\t-g\t\t\t--gen-pot\n" -#: main.c:583 +#: main.c:596 msgid "\t-h\t\t\t--help\n" msgstr "\t-h\t\t\t--help\n" -#: main.c:584 +#: main.c:597 msgid "\t-i includefile\t\t--include=includefile\n" msgstr "" -#: main.c:585 +#: main.c:598 msgid "\t-l library\t\t--load=library\n" msgstr "" -#: main.c:590 +#. TRANSLATORS: the "fatal" and "invalid" here are literal +#. values, they should not be translated. Thanks. +#. +#: main.c:603 #, fuzzy msgid "\t-L[fatal|invalid]\t--lint[=fatal|invalid]\n" msgstr "\t-L [fatal]\t\t--lint[=fatal]\n" -#: main.c:591 +#: main.c:604 #, fuzzy msgid "\t-M\t\t\t--bignum\n" msgstr "\t-g\t\t\t--gen-pot\n" -#: main.c:592 +#: main.c:605 msgid "\t-N\t\t\t--use-lc-numeric\n" msgstr "\t-N\t\t\t--use-lc-numeric\n" -#: main.c:593 +#: main.c:606 msgid "\t-n\t\t\t--non-decimal-data\n" msgstr "\t-n\t\t\t--non-decimal-data\n" -#: main.c:594 +#: main.c:607 #, fuzzy msgid "\t-o[file]\t\t--pretty-print[=file]\n" msgstr "\t-p[fichero]\t\t--profile[=fichero]\n" -#: main.c:595 +#: main.c:608 msgid "\t-O\t\t\t--optimize\n" msgstr "\t-O\t\t\t--optimize\n" -#: main.c:596 +#: main.c:609 msgid "\t-p[file]\t\t--profile[=file]\n" msgstr "\t-p[fichero]\t\t--profile[=fichero]\n" -#: main.c:597 +#: main.c:610 msgid "\t-P\t\t\t--posix\n" msgstr "\t-P\t\t\t--posix\n" -#: main.c:598 +#: main.c:611 msgid "\t-r\t\t\t--re-interval\n" msgstr "\t-r\t\t\t--re-interval\n" -#: main.c:599 +#: main.c:612 msgid "\t-S\t\t\t--sandbox\n" msgstr "\t-S\t\t\t--sandbox\n" -#: main.c:600 +#: main.c:613 msgid "\t-t\t\t\t--lint-old\n" msgstr "\t-t\t\t\t--lint-old\n" -#: main.c:601 +#: main.c:614 msgid "\t-V\t\t\t--version\n" msgstr "\t-V\t\t\t--version\n" -#: main.c:603 +#: main.c:616 msgid "\t-W nostalgia\t\t--nostalgia\n" msgstr "\t-W nostalgia\t\t--nostalgia\n" -#: main.c:606 +#: main.c:619 msgid "\t-Y\t\t--parsedebug\n" msgstr "\t-Y\t\t--parsedebug\n" @@ -3184,7 +3210,7 @@ msgstr "\t-Y\t\t--parsedebug\n" #. for this application. Please add _another line_ with the #. address for translation bugs. #. no-wrap -#: main.c:615 +#: main.c:628 msgid "" "\n" "To report bugs, see node `Bugs' in `gawk.info', which is\n" @@ -3198,7 +3224,7 @@ msgstr "" "Reporte los errores de los mensajes en español a .\n" "\n" -#: main.c:619 +#: main.c:632 msgid "" "gawk is a pattern scanning and processing language.\n" "By default it reads standard input and writes standard output.\n" @@ -3208,7 +3234,7 @@ msgstr "" "Por defecto lee la entrada estándar y escribe en la salida estándar.\n" "\n" -#: main.c:623 +#: main.c:636 msgid "" "Examples:\n" "\tgawk '{ sum += $1 }; END { print sum }' file\n" @@ -3218,7 +3244,7 @@ msgstr "" "\tgawk '{ sum += $1 }; END { print sum }' fichero\n" "\tgawk -F: '{ print $1 }' /etc/passwd\n" -#: main.c:648 +#: main.c:661 #, c-format msgid "" "Copyright (C) 1989, 1991-%d Free Software Foundation.\n" @@ -3238,7 +3264,7 @@ msgstr "" "(a su elección) cualquier versión posterior.\n" "\n" -#: main.c:656 +#: main.c:669 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" @@ -3252,7 +3278,7 @@ msgstr "" "Licencia Pública General de GNU para más detalles.\n" "\n" -#: main.c:662 +#: main.c:675 msgid "" "You should have received a copy of the GNU General Public License\n" "along with this program. If not, see http://www.gnu.org/licenses/.\n" @@ -3261,16 +3287,16 @@ msgstr "" "junto con este programa. Si no es así, consulte\n" "http://www.gnu.org/licenses/.\n" -#: main.c:699 +#: main.c:712 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:986 +#: main.c:999 #, c-format msgid "unknown value for field spec: %d\n" msgstr "valor desconocido para la especificación de campo: %d\n" -#: main.c:1084 +#: main.c:1097 #, c-format msgid "" "%s: `%s' argument to `-v' not in `var=value' form\n" @@ -3279,121 +3305,121 @@ msgstr "" "%s: el argumento `%s' para `-v' no es de la forma `var=valor'\n" "\n" -#: main.c:1110 +#: main.c:1123 #, c-format msgid "`%s' is not a legal variable name" msgstr "`%s' no es un nombre de variable legal" -#: main.c:1113 +#: main.c:1126 #, 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:1117 +#: main.c:1130 #, c-format msgid "cannot use gawk builtin `%s' as variable name" msgstr "" "no se puede utilizar la orden interna de gawk `%s' como nombre de variable" -#: main.c:1122 +#: main.c:1135 #, c-format msgid "cannot use function `%s' as variable name" msgstr "no se puede usar la función `%s' como nombre de variable" -#: main.c:1175 +#: main.c:1190 msgid "floating point exception" msgstr "excepción de coma flotante" -#: main.c:1182 +#: main.c:1197 msgid "fatal error: internal error" msgstr "error fatal: error interno" -#: main.c:1197 +#: main.c:1212 msgid "fatal error: internal error: segfault" msgstr "error fatal: error interno: falla de segmentación" -#: main.c:1209 +#: main.c:1224 msgid "fatal error: internal error: stack overflow" msgstr "error fatal: error interno: desbordamiento de pila" -#: main.c:1268 +#: main.c:1283 #, c-format msgid "no pre-opened fd %d" msgstr "no existe el df %d abierto previamente" -#: main.c:1275 +#: main.c:1290 #, 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:1489 +#: main.c:1504 msgid "empty argument to `-e/--source' ignored" msgstr "se descarta el argumento vacío para `-e/--source'" -#: main.c:1560 +#: main.c:1575 msgid "-M ignored: MPFR/GMP support not compiled in" msgstr "" -#: main.c:1581 +#: main.c:1596 #, c-format msgid "%s: option `-W %s' unrecognized, ignored\n" msgstr "%s: no se reconoce la opción `-W %s', se descarta\n" -#: main.c:1634 +#: main.c:1649 #, c-format msgid "%s: option requires an argument -- %c\n" msgstr "%s: la opción requiere un argumento -- %c\n" -#: mpfr.c:557 +#: mpfr.c:559 #, fuzzy, c-format msgid "PREC value `%.*s' is invalid" msgstr "el valor BINMODE `%s' es inválido; se trata como 3" -#: mpfr.c:615 +#: mpfr.c:617 #, fuzzy, c-format msgid "RNDMODE value `%.*s' is invalid" msgstr "el valor BINMODE `%s' es inválido; se trata como 3" -#: mpfr.c:711 +#: mpfr.c:714 #, fuzzy, c-format msgid "%s: received non-numeric argument" msgstr "cos: se recibió un argumento que no es númerico" -#: mpfr.c:820 +#: mpfr.c:824 #, fuzzy msgid "compl(%Rg): negative value will give strange results" msgstr "compl(%lf): el valor negativo dará resultados extraños" -#: mpfr.c:824 +#: mpfr.c:828 #, fuzzy msgid "comp(%Rg): fractional value will be truncated" msgstr "compl(%lf): el valor fraccionario se truncará" -#: mpfr.c:836 +#: mpfr.c:840 #, fuzzy, c-format msgid "cmpl(%Zd): negative values will give strange results" msgstr "compl(%lf): el valor negativo dará resultados extraños" -#: mpfr.c:855 +#: mpfr.c:859 #, fuzzy, c-format msgid "%s: received non-numeric argument #%d" msgstr "cos: se recibió un argumento que no es númerico" -#: mpfr.c:865 +#: mpfr.c:869 msgid "%s: argument #%d has invalid value %Rg, using 0" msgstr "" -#: mpfr.c:877 +#: mpfr.c:881 #, fuzzy msgid "%s: argument #%d negative value %Rg will give strange results" msgstr "compl(%lf): el valor negativo dará resultados extraños" -#: mpfr.c:883 +#: mpfr.c:887 #, fuzzy msgid "%s: argument #%d fractional value %Rg will be truncated" msgstr "or(%lf, %lf): los valores fraccionarios serán truncados" -#: mpfr.c:898 +#: mpfr.c:902 #, fuzzy, c-format msgid "%s: argument #%d negative value %Zd will give strange results" msgstr "compl(%lf): el valor negativo dará resultados extraños" @@ -3403,24 +3429,24 @@ msgstr "compl(%lf): el valor negativo dará resultados extraños" msgid "cmd. line:" msgstr "línea ord.:" -#: node.c:418 +#: node.c:434 msgid "backslash at end of string" msgstr "barra invertida al final de la cadena" -#: node.c:497 +#: node.c:513 #, c-format msgid "old awk does not support the `\\%c' escape sequence" msgstr "el awk antiguo no admite la secuencia de escape `\\%c'" -#: node.c:548 +#: node.c:564 msgid "POSIX does not allow `\\x' escapes" msgstr "POSIX no permite escapes `\\x'" -#: node.c:554 +#: node.c:570 msgid "no hex digits in `\\x' escape sequence" msgstr "no hay dígitos hexadecimales en la secuencia de escape `\\x'" -#: node.c:576 +#: node.c:592 #, c-format msgid "" "hex escape \\x%.*s of %d characters probably not interpreted the way you " @@ -3429,12 +3455,12 @@ msgstr "" "el escape hexadecimal \\x%.*s de %d caracteres tal vez no se interprete de " "la forma esperada" -#: node.c:591 +#: node.c:607 #, c-format msgid "escape sequence `\\%c' treated as plain `%c'" msgstr "la secuencia de escape `\\%c' se trata como una simple `%c'" -#: node.c:735 +#: node.c:744 msgid "" "Invalid multibyte data detected. There may be a mismatch between your data " "and your locale." @@ -3453,16 +3479,16 @@ msgstr "" msgid "%s %s `%s': could not set close-on-exec: (fcntl F_SETFD: %s)" msgstr "%s %s `%s': no se puede establecer close-on-exec: (fcntl F_SETFD: %s)" -#: profile.c:91 +#: profile.c:94 #, c-format msgid "could not open `%s' for writing: %s" msgstr "no se puede abrir `%s' para escritura: %s" -#: profile.c:93 +#: profile.c:96 msgid "sending profile to standard error" msgstr "se envía el perfil a la salida estándar de error" -#: profile.c:213 +#: profile.c:216 #, fuzzy, c-format msgid "" "\t# %s rule(s)\n" @@ -3471,7 +3497,7 @@ msgstr "" "\t# Regla(s)\n" "\n" -#: profile.c:218 +#: profile.c:221 #, c-format msgid "" "\t# Rule(s)\n" @@ -3480,29 +3506,29 @@ msgstr "" "\t# Regla(s)\n" "\n" -#: profile.c:292 +#: profile.c:295 #, c-format msgid "internal error: %s with null vname" msgstr "error interno: %s con vname nulo" -#: profile.c:558 +#: profile.c:561 #, fuzzy msgid "internal error: builtin with null fname" msgstr "error interno: %s con vname nulo" -#: profile.c:978 +#: profile.c:1006 #, c-format msgid "" "\t# Loaded extensions (-l and/or @load)\n" "\n" msgstr "" -#: profile.c:1001 +#: profile.c:1029 #, c-format msgid "\t# gawk profile, created %s\n" msgstr "\t# perfil de gawk, creado %s\n" -#: profile.c:1555 +#: profile.c:1600 #, c-format msgid "" "\n" @@ -3511,100 +3537,106 @@ msgstr "" "\n" "\t# Funciones, enumeradas alfabéticamente\n" -#: profile.c:1593 +#: profile.c:1638 #, c-format msgid "redir2str: unknown redirection type %d" msgstr "redir2str: tipo de redirección %d desconocida" -#: re.c:607 +#: re.c:610 #, c-format msgid "regexp component `%.*s' should probably be `[%.*s]'" msgstr "" "el componente de expresión regular `%.*s' probablemente debe ser `[%.*s]'" -#: regcomp.c:139 +#: regcomp.c:143 msgid "Success" msgstr "Éxito" -#: regcomp.c:142 +#: regcomp.c:146 msgid "No match" msgstr "No hay coincidencia" -#: regcomp.c:145 +#: regcomp.c:149 msgid "Invalid regular expression" msgstr "Expresión regular inválida" -#: regcomp.c:148 +#: regcomp.c:152 msgid "Invalid collation character" msgstr "Caracter de ordenación inválido" -#: regcomp.c:151 +#: regcomp.c:155 msgid "Invalid character class name" msgstr "Nombre de clase de caracter inválido" -#: regcomp.c:154 +#: regcomp.c:158 msgid "Trailing backslash" msgstr "Barra invertida extra al final" -#: regcomp.c:157 +#: regcomp.c:161 msgid "Invalid back reference" msgstr "Referencia hacia atrás inválida" -#: regcomp.c:160 +#: regcomp.c:164 #, fuzzy msgid "Unmatched [, [^, [:, [., or [=" msgstr "[ o [^ desemparejados" -#: regcomp.c:163 +#: regcomp.c:167 msgid "Unmatched ( or \\(" msgstr "( o \\( desemparejados" -#: regcomp.c:166 +#: regcomp.c:170 msgid "Unmatched \\{" msgstr "\\{ desemparejado" -#: regcomp.c:169 +#: regcomp.c:173 msgid "Invalid content of \\{\\}" msgstr "Contenido inválido de \\{\\}" -#: regcomp.c:172 +#: regcomp.c:176 msgid "Invalid range end" msgstr "Final de rango inválido" -#: regcomp.c:175 +#: regcomp.c:179 msgid "Memory exhausted" msgstr "Memoria agotada" -#: regcomp.c:178 +#: regcomp.c:182 msgid "Invalid preceding regular expression" msgstr "Expresión regular precedente inválida" -#: regcomp.c:181 +#: regcomp.c:185 msgid "Premature end of regular expression" msgstr "Fin prematuro de la expresión regular" -#: regcomp.c:184 +#: regcomp.c:188 msgid "Regular expression too big" msgstr "La expresión regular es demasiado grande" -#: regcomp.c:187 +#: regcomp.c:191 msgid "Unmatched ) or \\)" msgstr ") o \\) desemparejados" -#: regcomp.c:712 +#: regcomp.c:701 msgid "No previous regular expression" msgstr "No hay una expresión regular previa" -#: symbol.c:678 +#: symbol.c:684 #, fuzzy, c-format msgid "function `%s': can't use function `%s' as a parameter name" msgstr "" "función `%s': no se puede usar un nombre de función como nombre de parámetro" -#: symbol.c:810 +#: symbol.c:816 msgid "can not pop main context" msgstr "" +#~ msgid "function `%s' defined to take no more than %d argument(s)" +#~ msgstr "la función `%s' se definió para tomar no más de %d argumento(s)" + +#~ msgid "function `%s': missing argument #%d" +#~ msgstr "función `%s': falta el argumento #%d" + #~ msgid "`getline var' invalid inside `%s' rule" #~ msgstr "`getline var' inválido dentro de la regla `%s'" diff --git a/po/fi.po b/po/fi.po index bca233d..aad380d 100644 --- a/po/fi.po +++ b/po/fi.po @@ -7,7 +7,7 @@ msgid "" msgstr "" "Project-Id-Version: gawk 4.1.1d\n" "Report-Msgid-Bugs-To: bug-gawk@gnu.org\n" -"POT-Creation-Date: 2015-05-19 16:06+0300\n" +"POT-Creation-Date: 2016-08-25 06:19+0300\n" "PO-Revision-Date: 2015-04-17 01:28+0300\n" "Last-Translator: Jorma Karvonen \n" "Language-Team: Finnish \n" @@ -18,92 +18,92 @@ msgstr "" "Plural-Forms: nplurals=2; plural=(n != 1);\n" "X-Generator: Poedit 1.7.5\n" -#: array.c:256 +#: array.c:259 #, c-format msgid "from %s" msgstr "taulukosta %s" -#: array.c:357 +#: array.c:360 msgid "attempt to use a scalar value as array" msgstr "yritettiin käyttää skalaariarvoa taulukkona" -#: array.c:359 +#: array.c:362 #, c-format msgid "attempt to use scalar parameter `%s' as an array" msgstr "yritettiin käyttää skalaariparametria â€%s†taulukkona" -#: array.c:362 +#: array.c:365 #, c-format msgid "attempt to use scalar `%s' as an array" msgstr "yritettiin käyttää skalaaria â€%s†taulukkona" -#: array.c:409 array.c:576 builtin.c:85 builtin.c:1606 builtin.c:1652 -#: builtin.c:1665 builtin.c:2112 builtin.c:2126 eval.c:1149 eval.c:1153 -#: eval.c:1564 +#: array.c:412 array.c:579 builtin.c:85 builtin.c:1612 builtin.c:1658 +#: builtin.c:1671 builtin.c:2160 builtin.c:2179 eval.c:1141 eval.c:1145 +#: eval.c:1556 #, c-format msgid "attempt to use array `%s' in a scalar context" msgstr "yritettiin käyttää taulukkoa â€%s†skalaarikontekstissa" -#: array.c:583 +#: array.c:586 #, c-format msgid "delete: index `%s' not in array `%s'" msgstr "delete: indeksi â€%s†ei ole taulukossa â€%sâ€" -#: array.c:597 +#: array.c:600 #, c-format msgid "attempt to use scalar `%s[\"%.*s\"]' as an array" msgstr "yritettiin käyttää skalaaria â€%s[\"%.*s\"]†taulukkona" -#: array.c:776 +#: array.c:779 msgid "adump: first argument not an array" msgstr "adump: ensimmäinen argumentti ei ole taulukko" -#: array.c:815 +#: array.c:818 msgid "asort: second argument not an array" msgstr "asort: toinen argumentti ei ole taulukko" -#: array.c:816 +#: array.c:819 msgid "asorti: second argument not an array" msgstr "asorti: toinen argumentti ei ole taulukko" -#: array.c:823 +#: array.c:826 msgid "asort: first argument not an array" msgstr "asort: ensimmäinen argumentti ei ole taulukko" -#: array.c:824 +#: array.c:827 msgid "asorti: first argument not an array" msgstr "asorti: ensimmäinen argumentti ei ole taulukko" -#: array.c:831 +#: array.c:834 msgid "asort: cannot use a subarray of first arg for second arg" msgstr "" "asort: ensimmäisen argumentin alitaulukon käyttö toiselle argumentille " "epäonnistui" -#: array.c:832 +#: array.c:835 msgid "asorti: cannot use a subarray of first arg for second arg" msgstr "" "asorti: ensimmäisen argumentin alitaulukon käyttö toiselle argumentille " "epäonnistui" -#: array.c:837 +#: array.c:840 msgid "asort: cannot use a subarray of second arg for first arg" msgstr "" "asort: toisen argumentin alitaulukon käyttö ensimmäiselle argumentille " "epäonnistui" -#: array.c:838 +#: array.c:841 msgid "asorti: cannot use a subarray of second arg for first arg" msgstr "" "asorti: toisen argumentin alitaulukon käyttö ensimmäiselle argumentille " "epäonnistui" -#: array.c:1313 +#: array.c:1316 #, c-format msgid "`%s' is invalid as a function name" msgstr "â€%s†on virheellinen funktionimenä" -#: array.c:1317 +#: array.c:1320 #, c-format msgid "sort comparison function `%s' is not defined" msgstr "lajitteluvertailufunktiota â€%s†ei ole määritelty" @@ -146,11 +146,11 @@ msgstr "kaksi samanlaista case-arvoa switch-rakenteen rungossa: %s" msgid "duplicate `default' detected in switch body" msgstr "kaksoiskappale â€default†havaittu switch-rungossa" -#: awkgram.y:793 awkgram.y:3763 +#: awkgram.y:793 awkgram.y:3774 msgid "`break' is not allowed outside a loop or switch" msgstr "â€break†ei ole sallittu silmukan tai switch-lauseen ulkopuolella" -#: awkgram.y:802 awkgram.y:3755 +#: awkgram.y:802 awkgram.y:3766 msgid "`continue' is not allowed outside a loop" msgstr "â€continue†ei ole sallittu silmukan ulkopuolella" @@ -240,7 +240,7 @@ msgstr "yritys käyttää ei-funktio â€%s†funktiokutsussa" msgid "invalid subscript expression" msgstr "virheellinen indeksointilauseke" -#: awkgram.y:2047 awkgram.y:2067 gawkapi.c:206 gawkapi.c:224 msg.c:126 +#: awkgram.y:2047 awkgram.y:2067 gawkapi.c:206 gawkapi.c:223 msg.c:126 msgid "warning: " msgstr "varoitus: " @@ -248,263 +248,268 @@ msgstr "varoitus: " msgid "fatal: " msgstr "tuhoisa: " -#: awkgram.y:2115 +#: awkgram.y:2116 msgid "unexpected newline or end of string" msgstr "odottamaton rivinvaihto tai merkkijonon loppu" -#: awkgram.y:2394 awkgram.y:2470 awkgram.y:2693 debug.c:523 debug.c:539 -#: debug.c:2812 debug.c:5055 +#: awkgram.y:2397 awkgram.y:2473 awkgram.y:2696 debug.c:523 debug.c:539 +#: debug.c:2812 debug.c:5101 #, c-format msgid "can't open source file `%s' for reading (%s)" msgstr "lähdetiedoston â€%s†avaaminen lukemista varten (%s) epäonnistui" -#: awkgram.y:2395 awkgram.y:2520 +#: awkgram.y:2398 awkgram.y:2523 #, c-format msgid "can't open shared library `%s' for reading (%s)" msgstr "jaetun kirjaston â€%s†avaaminen lukemista varten (%s) epäonnistui" -#: awkgram.y:2397 awkgram.y:2471 awkgram.y:2521 builtin.c:135 debug.c:5206 +#: awkgram.y:2400 awkgram.y:2474 awkgram.y:2524 builtin.c:135 debug.c:5252 msgid "reason unknown" msgstr "syy tuntematon" -#: awkgram.y:2406 awkgram.y:2430 +#: awkgram.y:2409 awkgram.y:2433 #, c-format msgid "can't include `%s' and use it as a program file" msgstr "kohteen â€%s†sisällyttäminen ja käyttö ohjelmatiedostona epäonnistui" -#: awkgram.y:2419 +#: awkgram.y:2422 #, c-format msgid "already included source file `%s'" msgstr "on jo sisällytetty lähdetiedostoon â€%sâ€" -#: awkgram.y:2420 +#: awkgram.y:2423 #, c-format msgid "already loaded shared library `%s'" msgstr "jaettu kirjasto â€%s†on jo ladattu" -#: awkgram.y:2455 +#: awkgram.y:2458 msgid "@include is a gawk extension" msgstr "@include on gawk-laajennus" -#: awkgram.y:2461 +#: awkgram.y:2464 msgid "empty filename after @include" msgstr "tyhjä tiedostonimi @include:n jälkeen" -#: awkgram.y:2505 +#: awkgram.y:2508 msgid "@load is a gawk extension" msgstr "@load on gawk-laajennus" -#: awkgram.y:2511 +#: awkgram.y:2514 msgid "empty filename after @load" msgstr "tyhjä tiedostonimi @load:n jälkeen" -#: awkgram.y:2645 +#: awkgram.y:2648 msgid "empty program text on command line" msgstr "tyhjä ohjelmateksti komentorivillä" -#: awkgram.y:2760 +#: awkgram.y:2763 #, c-format msgid "can't read sourcefile `%s' (%s)" msgstr "lähdetiedoston â€%s†(%s) lukeminen epäonnistui" -#: awkgram.y:2771 +#: awkgram.y:2774 #, c-format msgid "source file `%s' is empty" msgstr "lähdetiedosto â€%s†on tyhjä" -#: awkgram.y:2830 +#: awkgram.y:2833 #, c-format msgid "PEBKAC error: invalid character '\\%03o' in source code" msgstr "PEBKAC-virhe: virheellinen merkki ’\\%03o’ lähdekoodissa" -#: awkgram.y:2961 +#: awkgram.y:2964 msgid "source file does not end in newline" msgstr "lähdetiedoston lopussa ei ole rivinvaihtoa" -#: awkgram.y:3074 +#: awkgram.y:3081 msgid "unterminated regexp ends with `\\' at end of file" msgstr "" "päättämätön säännöllinen lauseke loppuu â€\\â€-merkkeihin tiedoston lopussa" -#: awkgram.y:3101 +#: awkgram.y:3108 #, c-format msgid "%s: %d: tawk regex modifier `/.../%c' doesn't work in gawk" msgstr "%s: %d: tawk:n regex-määre â€/.../%c†ei toimi gawk:ssa" -#: awkgram.y:3105 +#: awkgram.y:3112 #, c-format msgid "tawk regex modifier `/.../%c' doesn't work in gawk" msgstr "tawkin regex-määre â€/.../%c†ei toimi gawkissa" -#: awkgram.y:3112 +#: awkgram.y:3119 msgid "unterminated regexp" msgstr "päättämätön säännöllinen lauseke" -#: awkgram.y:3116 +#: awkgram.y:3123 msgid "unterminated regexp at end of file" msgstr "päättämätön säännöllinen lauseke tiedoston lopussa" -#: awkgram.y:3174 +#: awkgram.y:3181 msgid "use of `\\ #...' line continuation is not portable" msgstr "â€\\ #...â€-rivijatkamisen käyttö ei ole siirrettävä" -#: awkgram.y:3190 +#: awkgram.y:3197 msgid "backslash not last character on line" msgstr "kenoviiva ei ole rivin viimeinen merkki" -#: awkgram.y:3251 +#: awkgram.y:3235 awkgram.y:3237 +#, fuzzy +msgid "multidimensional arrays are a gawk extension" +msgstr "epäsuorat funktiokutsut ovat gawk-laajennus" + +#: awkgram.y:3262 msgid "POSIX does not allow operator `**='" msgstr "POSIX ei salli operaattoria â€**=â€" -#: awkgram.y:3253 +#: awkgram.y:3264 msgid "old awk does not support operator `**='" msgstr "vanha awk ei tue operaattoria â€**=â€" -#: awkgram.y:3262 +#: awkgram.y:3273 msgid "POSIX does not allow operator `**'" msgstr "POSIX ei salli operaattoria â€**â€" -#: awkgram.y:3264 +#: awkgram.y:3275 msgid "old awk does not support operator `**'" msgstr "vanha awk ei tue operaattoria â€**â€" -#: awkgram.y:3299 +#: awkgram.y:3310 msgid "operator `^=' is not supported in old awk" msgstr "operaattoria â€^=†ei tueta vanhassa awk:ssa" -#: awkgram.y:3307 +#: awkgram.y:3318 msgid "operator `^' is not supported in old awk" msgstr "operaattoria â€^†ei tueta vanhassa awk:ssa" -#: awkgram.y:3404 awkgram.y:3422 command.y:1180 +#: awkgram.y:3415 awkgram.y:3433 command.y:1187 msgid "unterminated string" msgstr "päättämätön merkkijono" -#: awkgram.y:3643 +#: awkgram.y:3654 #, c-format msgid "invalid char '%c' in expression" msgstr "virheellinen merkki ’%c’ lausekkeessa" -#: awkgram.y:3690 +#: awkgram.y:3701 #, c-format msgid "`%s' is a gawk extension" msgstr "â€%s†on gawk-laajennus" -#: awkgram.y:3695 +#: awkgram.y:3706 #, c-format msgid "POSIX does not allow `%s'" msgstr "POSIX ei salli operaattoria â€%sâ€" -#: awkgram.y:3703 +#: awkgram.y:3714 #, c-format msgid "`%s' is not supported in old awk" msgstr "â€%s†ei ole tuettu vanhassa awk-ohjelmassa" -#: awkgram.y:3793 +#: awkgram.y:3804 msgid "`goto' considered harmful!\n" msgstr "â€gotoâ€-käskyä pidetään haitallisena!\n" -#: awkgram.y:3827 +#: awkgram.y:3873 #, c-format msgid "%d is invalid as number of arguments for %s" msgstr "%d on virheellinen argumenttilukumäärä operaattorille %s" -#: awkgram.y:3862 +#: awkgram.y:3908 #, c-format msgid "%s: string literal as last arg of substitute has no effect" msgstr "" "%s: merkkijonoliteraalilla ei ole vaikutusta korvauksen viimeisenä " "argumenttina" -#: awkgram.y:3867 +#: awkgram.y:3913 #, c-format msgid "%s third parameter is not a changeable object" msgstr "%s kolmas parametri ei ole vaihdettava objekti" -#: awkgram.y:3950 awkgram.y:3953 +#: awkgram.y:3996 awkgram.y:3999 msgid "match: third argument is a gawk extension" msgstr "match: kolmas argumentti on gawk-laajennus" -#: awkgram.y:4007 awkgram.y:4010 +#: awkgram.y:4053 awkgram.y:4056 msgid "close: second argument is a gawk extension" msgstr "close: toinen argumentti on gawk-laajennus" -#: awkgram.y:4022 +#: awkgram.y:4068 msgid "use of dcgettext(_\"...\") is incorrect: remove leading underscore" msgstr "dcgettext(_\"...\")-käyttö on virheellinen: poista alaviiva alusta" -#: awkgram.y:4037 +#: awkgram.y:4083 msgid "use of dcngettext(_\"...\") is incorrect: remove leading underscore" msgstr "dcngettext(_\"...\")-käyttö on virheellinen: poista alaviiva alusta" -#: awkgram.y:4056 +#: awkgram.y:4102 msgid "index: regexp constant as second argument is not allowed" msgstr "indeksi: regexp-vakio toisena argumenttina ei ole sallitttu" -#: awkgram.y:4109 +#: awkgram.y:4155 #, c-format msgid "function `%s': parameter `%s' shadows global variable" msgstr "funktio â€%sâ€: parametri â€%s†varjostaa yleismuuttujaa" -#: awkgram.y:4166 debug.c:4041 debug.c:4084 debug.c:5204 +#: awkgram.y:4214 debug.c:4087 debug.c:4130 debug.c:5250 #, c-format msgid "could not open `%s' for writing (%s)" msgstr "tiedoston â€%s†avaaminen kirjoittamista varten (%s) epäonnistui" -#: awkgram.y:4167 +#: awkgram.y:4215 msgid "sending variable list to standard error" msgstr "lähetetään muuttujaluettelo vakiovirheeseen" -#: awkgram.y:4175 +#: awkgram.y:4223 #, c-format msgid "%s: close failed (%s)" msgstr "%s: sulkeminen epäonnistui (%s)" -#: awkgram.y:4200 +#: awkgram.y:4248 msgid "shadow_funcs() called twice!" msgstr "shadow_funcs() kutsuttu kahdesti!" -#: awkgram.y:4208 +#: awkgram.y:4256 msgid "there were shadowed variables." msgstr "siellä oli varjostettuja muuttujia." -#: awkgram.y:4279 +#: awkgram.y:4327 #, c-format msgid "function name `%s' previously defined" msgstr "funktionimi â€%s†on jo aikaisemmin määritelty" -#: awkgram.y:4325 +#: awkgram.y:4373 #, c-format msgid "function `%s': can't use function name as parameter name" msgstr "funktio â€%sâ€: funktionimen käyttö parametrinimenä epäonnistui" -#: awkgram.y:4328 +#: awkgram.y:4376 #, c-format msgid "function `%s': can't use special variable `%s' as a function parameter" msgstr "" "funktio â€%sâ€: erikoismuuttujan â€%s†käyttö funktioparametrina epäonnistui" -#: awkgram.y:4336 +#: awkgram.y:4384 #, c-format msgid "function `%s': parameter #%d, `%s', duplicates parameter #%d" msgstr "funktio â€%sâ€: parametri #%d, â€%sâ€, samanlainen parametri #%d" -#: awkgram.y:4423 awkgram.y:4429 +#: awkgram.y:4471 awkgram.y:4477 #, c-format msgid "function `%s' called but never defined" msgstr "funktiota â€%s†kutsuttiin, mutta sitä ei ole koskaan määritelty" -#: awkgram.y:4433 +#: awkgram.y:4481 #, c-format msgid "function `%s' defined but never called directly" msgstr "funktio â€%s†määriteltiin, mutta sitä ei ole koskaan kutsuttu suoraan" -#: awkgram.y:4465 +#: awkgram.y:4513 #, c-format msgid "regexp constant for parameter #%d yields boolean value" msgstr "säännöllisen lausekkeen vakio parametrille #%d antaa boolean-arvon" -#: awkgram.y:4480 +#: awkgram.y:4528 #, c-format msgid "" "function `%s' called with space between name and `(',\n" @@ -513,22 +518,22 @@ msgstr "" "funktio â€%s†kutsuttu välilyönnillä nimen ja â€(â€-merkin\n" "välillä, tai käytetty muuttujana tai taulukkona" -#: awkgram.y:4686 +#: awkgram.y:4734 msgid "division by zero attempted" msgstr "nollalla jakoa yritettiin" -#: awkgram.y:4695 +#: awkgram.y:4743 #, c-format msgid "division by zero attempted in `%%'" msgstr "jakoa nollalla yritettiin operaattorissa â€%%â€" -#: awkgram.y:5015 +#: awkgram.y:5064 msgid "" "cannot assign a value to the result of a field post-increment expression" msgstr "" "arvon sijoittaminen kenttäjälkikasvatuslausekkeen tulokseen epäonnistui" -#: awkgram.y:5018 +#: awkgram.y:5067 #, c-format msgid "invalid target of assignment (opcode %s)" msgstr "virheellinen sijoituskohde (käskykoodi %s)" @@ -566,207 +571,218 @@ msgstr "" "fflush: tyhjentäminen epäonnistui: tiedosto â€%s†avattu lukemista varten, ei " "kirjoittamiseen" -#: builtin.c:244 +#: builtin.c:241 +#, fuzzy, c-format +msgid "fflush: cannot flush: two-way pipe `%s' has closed write end" +msgstr "" +"fflush: tyhjentäminen epäonnistui: putki â€%s†avattu lukemista varten, ei " +"kirjoittamiseen" + +#: builtin.c:247 #, c-format msgid "fflush: `%s' is not an open file, pipe or co-process" msgstr "fflush: â€%s†ei ole avoin tiedosto, putki tai apuprosessi" -#: builtin.c:351 +#: builtin.c:354 msgid "index: received non-string first argument" msgstr "index: ensimmäinen vastaanotettu argumentti ei ole merkkijono" -#: builtin.c:353 +#: builtin.c:356 msgid "index: received non-string second argument" msgstr "index: toinen vastaanotettu argumentti ei ole merkkijono" -#: builtin.c:466 mpfr.c:777 +#: builtin.c:469 mpfr.c:781 msgid "int: received non-numeric argument" msgstr "int: vastaanotettu argumentti ei ole numeerinen" -#: builtin.c:503 +#: builtin.c:506 msgid "length: received array argument" msgstr "length: vastaanotettu taulukkoargumentti" -#: builtin.c:506 +#: builtin.c:509 msgid "`length(array)' is a gawk extension" msgstr "â€length(array)†on gawk-laajennus" -#: builtin.c:525 +#: builtin.c:528 msgid "length: received non-string argument" msgstr "length: vastaanotettu argumentti ei ole merkkijono" -#: builtin.c:554 +#: builtin.c:557 msgid "log: received non-numeric argument" msgstr "log: vastaanotettu argumentti ei ole numeerinen" -#: builtin.c:557 +#: builtin.c:560 #, c-format msgid "log: received negative argument %g" msgstr "log: vastaanotettu negatiivinen argumentti %g" -#: builtin.c:755 builtin.c:760 builtin.c:911 +#: builtin.c:758 builtin.c:763 builtin.c:914 msgid "fatal: must use `count$' on all formats or none" msgstr "kohtalokas: on käytettävä â€count$†kaikilla muodoilla tai ei missään" -#: builtin.c:830 +#: builtin.c:833 #, c-format msgid "field width is ignored for `%%' specifier" msgstr "kenttäleveys ohitetaan â€%%%%â€-määritteelle" -#: builtin.c:832 +#: builtin.c:835 #, c-format msgid "precision is ignored for `%%' specifier" msgstr "tarkkuus ohitetaan â€%%%%â€-määritteelle" -#: builtin.c:834 +#: builtin.c:837 #, c-format msgid "field width and precision are ignored for `%%' specifier" msgstr "kenttäleveys ja tarkkuus ohitetaan â€%%%%â€-määritteelle" -#: builtin.c:885 +#: builtin.c:888 msgid "fatal: `$' is not permitted in awk formats" msgstr "kohtalokas: â€$â€-argumentti ei ole sallittu awk-muodoissa" -#: builtin.c:894 +#: builtin.c:897 msgid "fatal: arg count with `$' must be > 0" msgstr "kohtalokas: argumenttilukumäärän argumentilla â€$†on oltava > 0" -#: builtin.c:898 +#: builtin.c:901 #, c-format msgid "fatal: arg count %ld greater than total number of supplied arguments" msgstr "" "kohtalokas: argumenttilukumäärä %ld on suurempi kuin toimitettujen " "argumenttien lukumäärä" -#: builtin.c:902 +#: builtin.c:905 msgid "fatal: `$' not permitted after period in format" msgstr "kohtalokas: â€$â€-argumentti ei ole sallittu pisteen jälkeen muodossa" -#: builtin.c:921 +#: builtin.c:924 msgid "fatal: no `$' supplied for positional field width or precision" msgstr "" "kohtalokas: ei â€$â€-argumenttia tarjottu sijantikenttäleveydelle tai " "tarkkuudelle" -#: builtin.c:991 +#: builtin.c:994 msgid "`l' is meaningless in awk formats; ignored" msgstr "â€l†on merkityksetön awk-muodoissa; ohitetaan" -#: builtin.c:995 +#: builtin.c:998 msgid "fatal: `l' is not permitted in POSIX awk formats" msgstr "kohtalokas: â€l†ei ole sallittu POSIX awk -muodoissa" -#: builtin.c:1008 +#: builtin.c:1011 msgid "`L' is meaningless in awk formats; ignored" msgstr "â€L†on merkityksetön awk-muodoissa; ohitetaan" -#: builtin.c:1012 +#: builtin.c:1015 msgid "fatal: `L' is not permitted in POSIX awk formats" msgstr "kohtalokas: â€L†ei ole sallittu POSIX awk -muodoissa" -#: builtin.c:1025 +#: builtin.c:1028 msgid "`h' is meaningless in awk formats; ignored" msgstr "â€h†on merkityksetön awk-muodoissa; ohitetaan" -#: builtin.c:1029 +#: builtin.c:1032 msgid "fatal: `h' is not permitted in POSIX awk formats" msgstr "kohtalokas: â€h†ei ole sallittu POSIX awk -muodoissa" -#: builtin.c:1055 +#: builtin.c:1058 #, c-format msgid "[s]printf: value %g is too big for %%c format" msgstr "[s]printf: arvo %g on liian suuri %%c-muodolle" -#: builtin.c:1068 +#: builtin.c:1071 #, c-format msgid "[s]printf: value %g is not a valid wide character" msgstr "[s]printf: arvo %g ei ole kelvollinen leveä merkki" -#: builtin.c:1454 +#: builtin.c:1457 #, c-format msgid "[s]printf: value %g is out of range for `%%%c' format" msgstr "[s]printf: arvo %g on lukualueen ulkopuolella â€%%%câ€-muodolle" -#: builtin.c:1552 +#: builtin.c:1555 #, c-format msgid "ignoring unknown format specifier character `%c': no argument converted" msgstr "" "ohitetaan tuntematon muotoargumenttimerkki â€%câ€: ei muunnettu argumenttia" -#: builtin.c:1557 +#: builtin.c:1560 msgid "fatal: not enough arguments to satisfy format string" msgstr "kohtalokas: ei kylliksi argumentteja muotomerkkijonon tyydyttämiseksi" -#: builtin.c:1559 +#: builtin.c:1562 msgid "^ ran out for this one" msgstr "^ tällainen loppui kesken" -#: builtin.c:1566 +#: builtin.c:1569 msgid "[s]printf: format specifier does not have control letter" msgstr "[s]printf: muotoargumentilla ei ole ohjauskirjainta" -#: builtin.c:1569 +#: builtin.c:1572 msgid "too many arguments supplied for format string" msgstr "muotomerkkijonoon toimitettu liian monta argumenttia" -#: builtin.c:1625 +#: builtin.c:1631 msgid "sprintf: no arguments" msgstr "sprintf: ei argumentteja" -#: builtin.c:1648 builtin.c:1659 +#: builtin.c:1654 builtin.c:1665 msgid "printf: no arguments" msgstr "printf: ei argumentteja" -#: builtin.c:1702 +#: builtin.c:1676 +msgid "printf: attempt to write to closed write end of two-way pipe" +msgstr "" + +#: builtin.c:1713 msgid "sqrt: received non-numeric argument" msgstr "sqrt: vastaanotettu argumentti ei ole numeerinen" -#: builtin.c:1706 +#: builtin.c:1717 #, c-format msgid "sqrt: called with negative argument %g" msgstr "sqrt: kutsuttu negatiivisella argumentilla %g" -#: builtin.c:1737 +#: builtin.c:1748 #, c-format msgid "substr: length %g is not >= 1" msgstr "substr: pituus %g ei ole >= 1" -#: builtin.c:1739 +#: builtin.c:1750 #, c-format msgid "substr: length %g is not >= 0" msgstr "substr: pituus %g ei ole >= 0" -#: builtin.c:1753 +#: builtin.c:1764 #, c-format msgid "substr: non-integer length %g will be truncated" msgstr "substr: typistetään pituus %g, joka ei ole kokonaisluku" -#: builtin.c:1758 +#: builtin.c:1769 #, c-format msgid "substr: length %g too big for string indexing, truncating to %g" msgstr "" "substr: pituus %g liian suuri merkkijononindeksointiin, typistetään arvoon %g" -#: builtin.c:1770 +#: builtin.c:1781 #, c-format msgid "substr: start index %g is invalid, using 1" msgstr "substr: aloitusindeksi %g on virheellinen, käytetään 1:tä" -#: builtin.c:1775 +#: builtin.c:1786 #, c-format msgid "substr: non-integer start index %g will be truncated" msgstr "substr: typistetään aloitusindeksi %g, joka ei ole kokonaisluku" -#: builtin.c:1798 +#: builtin.c:1809 msgid "substr: source string is zero length" msgstr "substr: lähdemerkkijono on nollapituinen" -#: builtin.c:1812 +#: builtin.c:1823 #, c-format msgid "substr: start index %g is past end of string" msgstr "substr: aloitusindeksi %g on merkkijonon lopun jälkeen" -#: builtin.c:1820 +#: builtin.c:1831 #, c-format msgid "" "substr: length %g at start index %g exceeds length of first argument (%lu)" @@ -774,315 +790,319 @@ msgstr "" "substr: pituus %g alkuindeksissä %g ylittää ensimmäisen argumentin pituuden " "(%lu)" -#: builtin.c:1892 +#: builtin.c:1903 msgid "strftime: format value in PROCINFO[\"strftime\"] has numeric type" msgstr "" "strftime: muotoarvolla kohteessa PROCINFO[\"strftime\"] on numerotyyppi" -#: builtin.c:1915 +#: builtin.c:1926 msgid "strftime: received non-numeric second argument" msgstr "strftime: toinen vastaanotettu argumentti ei ole numeerinen" -#: builtin.c:1925 +#: builtin.c:1936 msgid "strftime: second argument less than 0 or too big for time_t" msgstr "" "strftime: toinen argumentti on pienempi kuin 0 tai liian suuri time_t-" "rakenteeseen" -#: builtin.c:1932 +#: builtin.c:1943 msgid "strftime: second argument out of range for time_t" msgstr "strftime: kohteen time_t toinen argumentti lukualueen ulkopuolella" -#: builtin.c:1941 +#: builtin.c:1952 msgid "strftime: received non-string first argument" msgstr "strftime: ensimmäinen vastaanotettu argumentti ei ole merkkijono" -#: builtin.c:1948 +#: builtin.c:1959 msgid "strftime: received empty format string" msgstr "strftime: vastaanotettu tyhjä muotomerkkijono" -#: builtin.c:2017 +#: builtin.c:2028 msgid "mktime: received non-string argument" msgstr "mktime: vastaanotettu argumentti ei ole merkkijono" -#: builtin.c:2034 +#: builtin.c:2045 msgid "mktime: at least one of the values is out of the default range" msgstr "mktime: vähintään yksi arvoista on oletuslukualueen ulkopuolella" -#: builtin.c:2069 +#: builtin.c:2081 msgid "'system' function not allowed in sandbox mode" msgstr "’system’-funktio ei ole sallittu hiekkalaatikkotilassa" -#: builtin.c:2074 +#: builtin.c:2086 msgid "system: received non-string argument" msgstr "system: vastaanotettu argumentti ei ole merkkijono" -#: builtin.c:2194 +#: builtin.c:2165 builtin.c:2230 +msgid "print: attempt to write to closed write end of two-way pipe" +msgstr "" + +#: builtin.c:2248 #, c-format msgid "reference to uninitialized field `$%d'" msgstr "viite alustamattomaan kenttään â€$%dâ€" -#: builtin.c:2279 +#: builtin.c:2333 msgid "tolower: received non-string argument" msgstr "tolower: vastaanotettu argumentti ei ole merkkijono" -#: builtin.c:2310 +#: builtin.c:2364 msgid "toupper: received non-string argument" msgstr "toupper: vastaanotettu argumentti ei ole merkkijono" -#: builtin.c:2343 mpfr.c:679 +#: builtin.c:2397 mpfr.c:681 msgid "atan2: received non-numeric first argument" msgstr "atan2: ensimmäinen vastaanotettu argumentti ei ole numeerinen" -#: builtin.c:2345 mpfr.c:681 +#: builtin.c:2399 mpfr.c:683 msgid "atan2: received non-numeric second argument" msgstr "atan2: toinen vastaanotettu argumentti ei ole numeerinen" -#: builtin.c:2364 +#: builtin.c:2418 msgid "sin: received non-numeric argument" msgstr "sin: vastaanotettu argumentti ei ole numeerinen" -#: builtin.c:2380 +#: builtin.c:2434 msgid "cos: received non-numeric argument" msgstr "cos: vastaanotettu argumentti ei ole numeerinen" -#: builtin.c:2433 mpfr.c:1176 +#: builtin.c:2487 mpfr.c:1180 msgid "srand: received non-numeric argument" msgstr "srand: vastaanotettu argumentti ei ole numeerinen" -#: builtin.c:2464 +#: builtin.c:2518 msgid "match: third argument is not an array" msgstr "match: kolmas argumentti ei ole taulukko" -#: builtin.c:2725 +#: builtin.c:2779 #, c-format msgid "gensub: third argument `%.*s' treated as 1" msgstr "gensub: kolmatta argumenttia â€%.*s†käsiteltiin kuin 1:stä" -#: builtin.c:2740 +#: builtin.c:2794 #, c-format msgid "gensub: third argument %g treated as 1" msgstr "gensub: kolmas argumentti %g käsiteltiin kuin 1." -#: builtin.c:3038 +#: builtin.c:3096 #, c-format msgid "%s: can be called indirectly only with two arguments" msgstr "%s: voidaan kutsua epäsuorasti vain kahdella argumentilla" -#: builtin.c:3128 +#: builtin.c:3186 #, c-format msgid "indirect call to %s requires at least two arguments" msgstr "epäsuora kutsu kohteeseen %s vaatii vähintään kaksi argumenttia" -#: builtin.c:3180 +#: builtin.c:3238 msgid "lshift: received non-numeric first argument" msgstr "lshift: ensimmäinen vastaanotettu argumentti ei ole numeerinen" -#: builtin.c:3182 +#: builtin.c:3240 msgid "lshift: received non-numeric second argument" msgstr "lshift: toinen vastaanotettu argumentti ei ole numeerinen" -#: builtin.c:3188 +#: builtin.c:3246 #, c-format msgid "lshift(%f, %f): negative values will give strange results" msgstr "lshift(%f, %f): negatiiviset arvot antavat outoja tuloksia" -#: builtin.c:3190 +#: builtin.c:3248 #, c-format msgid "lshift(%f, %f): fractional values will be truncated" msgstr "lshift(%f, %f): jaosarvot typistetään" -#: builtin.c:3192 +#: builtin.c:3250 #, c-format msgid "lshift(%f, %f): too large shift value will give strange results" msgstr "lshift(%f, %f): liian suuri siirrosarvo antaa outoja tuloksia" -#: builtin.c:3217 +#: builtin.c:3275 msgid "rshift: received non-numeric first argument" msgstr "rshift: ensimmäinen vastaanotettu argumentti ei ole numeerinen" -#: builtin.c:3219 +#: builtin.c:3277 msgid "rshift: received non-numeric second argument" msgstr "rshift: toinen vastaanotettu argumentti ei ole numeerinen" -#: builtin.c:3225 +#: builtin.c:3283 #, c-format msgid "rshift(%f, %f): negative values will give strange results" msgstr "rshift(%f, %f): negatiiviset arvot antavat outoja tuloksia" -#: builtin.c:3227 +#: builtin.c:3285 #, c-format msgid "rshift(%f, %f): fractional values will be truncated" msgstr "rshift(%f, %f): jaosarvot typistetään" -#: builtin.c:3229 +#: builtin.c:3287 #, c-format msgid "rshift(%f, %f): too large shift value will give strange results" msgstr "rshift(%f, %f): liian suuri siirrosarvo antaa outoja tuloksia" -#: builtin.c:3254 mpfr.c:988 +#: builtin.c:3312 mpfr.c:992 msgid "and: called with less than two arguments" msgstr "and: kutsuttu vähemmällä kuin kahdella argumentilla" -#: builtin.c:3259 +#: builtin.c:3317 #, c-format msgid "and: argument %d is non-numeric" msgstr "and: argumentti %d ei ole numeeraaliargumentti" -#: builtin.c:3263 +#: builtin.c:3321 #, c-format msgid "and: argument %d negative value %g will give strange results" msgstr "and: argumentin %d negatiivinen arvo %g antaa outoja tuloksia" -#: builtin.c:3286 mpfr.c:1020 +#: builtin.c:3344 mpfr.c:1024 msgid "or: called with less than two arguments" msgstr "or: kutsuttu vähemmällä kuin kahdella argumentilla" -#: builtin.c:3291 +#: builtin.c:3349 #, c-format msgid "or: argument %d is non-numeric" msgstr "or: argumentti %d ei ole numeraaliargumentti" -#: builtin.c:3295 +#: builtin.c:3353 #, c-format msgid "or: argument %d negative value %g will give strange results" msgstr "or: argumentin %d negatiivinen arvo %g antaa outoja tuloksia" -#: builtin.c:3317 mpfr.c:1051 +#: builtin.c:3375 mpfr.c:1055 msgid "xor: called with less than two arguments" msgstr "xor: kutsuttu vähemmällä kuin kahdella argumentilla" -#: builtin.c:3323 +#: builtin.c:3381 #, c-format msgid "xor: argument %d is non-numeric" msgstr "xor: argumentti %d ei ole numeraaliargumentti" -#: builtin.c:3327 +#: builtin.c:3385 #, c-format msgid "xor: argument %d negative value %g will give strange results" msgstr "xor: argumentin %d negatiivinen arvo %g antaa outoja tuloksia" -#: builtin.c:3352 mpfr.c:807 +#: builtin.c:3410 mpfr.c:811 msgid "compl: received non-numeric argument" msgstr "compl: vastaanotettu argumentti ei ole numeerinen" -#: builtin.c:3358 +#: builtin.c:3416 #, c-format msgid "compl(%f): negative value will give strange results" msgstr "compl(%f): negatiivinen arvo antaa outoja tuloksia" -#: builtin.c:3360 +#: builtin.c:3418 #, c-format msgid "compl(%f): fractional value will be truncated" msgstr "compl(%f): jaosarvo typistetään" -#: builtin.c:3529 +#: builtin.c:3588 #, c-format msgid "dcgettext: `%s' is not a valid locale category" msgstr "dcgettext: â€%s†ei ole kelvollinen paikallinen kategoria" -#: command.y:225 +#: command.y:226 #, c-format msgid "Type (g)awk statement(s). End with the command \"end\"\n" msgstr "Kirjoita (g)awk-lause(et). Lopeta komennolla \"end\"\n" -#: command.y:289 +#: command.y:290 #, c-format msgid "invalid frame number: %d" msgstr "virheellinen kehysnumero: %d" -#: command.y:295 +#: command.y:296 #, c-format msgid "info: invalid option - \"%s\"" msgstr "info: virheellinen valitsin -- â€%sâ€" -#: command.y:321 +#: command.y:322 #, c-format msgid "source \"%s\": already sourced." msgstr "source â€%sâ€: on jo merkitty lähteeksi." -#: command.y:326 +#: command.y:327 #, c-format msgid "save \"%s\": command not permitted." msgstr "save â€%sâ€: komento ei ole sallittu." -#: command.y:339 +#: command.y:340 msgid "Can't use command `commands' for breakpoint/watchpoint commands" msgstr "" "Komennon â€commands†käyttö breakpoint/watchpoint-komentoja varten epäonnistui" -#: command.y:341 +#: command.y:342 msgid "no breakpoint/watchpoint has been set yet" msgstr "yhtään breakpoint/watchpoint -kohdetta ei ole vielä asetettu" -#: command.y:343 +#: command.y:344 msgid "invalid breakpoint/watchpoint number" msgstr "virheellinen breakpoint/watchpoint-numero" -#: command.y:348 +#: command.y:349 #, c-format msgid "Type commands for when %s %d is hit, one per line.\n" msgstr "Kirjoita komennot, kun %s %d osui, yksi per rivi.\n" -#: command.y:350 +#: command.y:351 #, c-format msgid "End with the command \"end\"\n" msgstr "Lopeta komennolla â€endâ€\n" -#: command.y:357 +#: command.y:358 msgid "`end' valid only in command `commands' or `eval'" msgstr "â€end†on kelvollinen vain komennoissa â€commands†tai â€evalâ€" -#: command.y:367 +#: command.y:368 msgid "`silent' valid only in command `commands'" msgstr "â€silent†on kelvollinen vain komennossa â€commandsâ€" -#: command.y:373 +#: command.y:374 #, c-format msgid "trace: invalid option - \"%s\"" msgstr "trace: virheellinen valitsin -- â€%sâ€" -#: command.y:387 +#: command.y:388 msgid "condition: invalid breakpoint/watchpoint number" msgstr "condition: virheellinen breakpoint/watchpoint-numero" -#: command.y:449 +#: command.y:450 msgid "argument not a string" msgstr "argumentti ei ole merkkijono" -#: command.y:459 command.y:464 +#: command.y:460 command.y:465 #, c-format msgid "option: invalid parameter - \"%s\"" msgstr "option: virheellinen parametri - â€%sâ€" -#: command.y:474 +#: command.y:475 #, c-format msgid "no such function - \"%s\"" msgstr "tuntematon funktio - â€%sâ€" -#: command.y:531 +#: command.y:532 #, c-format msgid "enable: invalid option - \"%s\"" msgstr "enable: virheellinen valitsin -- â€%sâ€" -#: command.y:597 +#: command.y:598 #, c-format msgid "invalid range specification: %d - %d" msgstr "virheellinen lukualuemäärittely: %d - %d" -#: command.y:659 +#: command.y:660 msgid "non-numeric value for field number" msgstr "ei-numeerinen arvo kenttänumerolle" -#: command.y:680 command.y:687 +#: command.y:681 command.y:688 msgid "non-numeric value found, numeric expected" msgstr "löytyi ei-numeerinen arvo, odotettiin numeraalia" -#: command.y:712 command.y:718 +#: command.y:713 command.y:719 msgid "non-zero integer value" msgstr "nollasta poikkeava kokonaislukuarvo" -#: command.y:817 +#: command.y:818 msgid "" "backtrace [N] - print trace of all or N innermost (outermost if N < 0) " "frames." @@ -1090,18 +1110,18 @@ msgstr "" "backtrace [N] - tulosta kaikkien tai N:n sisimmäisen (ulommaisin, jos N < 0) " "kehyksen jäljet." -#: command.y:819 +#: command.y:820 msgid "" "break [[filename:]N|function] - set breakpoint at the specified location." msgstr "" "break [[filename:]N|function] - aseta breakpoint määriteltyyn sijaintiin." -#: command.y:821 +#: command.y:822 msgid "clear [[filename:]N|function] - delete breakpoints previously set." msgstr "" "clear [[filename:]N|function] - poista aiemmin asetetut breakpoint-kohdat." -#: command.y:823 +#: command.y:824 msgid "" "commands [num] - starts a list of commands to be executed at a " "breakpoint(watchpoint) hit." @@ -1109,71 +1129,76 @@ msgstr "" "commands [num] - aloittaa komentojen luettelon, joka suoritetaan " "keskeytyskohta(watchpoint)osumassa." -#: command.y:825 +#: command.y:826 msgid "condition num [expr] - set or clear breakpoint or watchpoint condition." msgstr "" "condition num [expr] - aseta tai nollaa keskeytyskohta- tai vahtikohtaehdot." -#: command.y:827 +#: command.y:828 msgid "continue [COUNT] - continue program being debugged." msgstr "continue [COUNT] - continue program being debugged." -#: command.y:829 +#: command.y:830 msgid "delete [breakpoints] [range] - delete specified breakpoints." msgstr "" "delete [keskeytyskohdat] [lukualue] - poista määritellyt keskeytyskohdat." -#: command.y:831 +#: command.y:832 msgid "disable [breakpoints] [range] - disable specified breakpoints." msgstr "" "disable [keskeytyskohdat] [lukualue] - ota pois käytöstä määritellyt " "keskeytyskohdat." -#: command.y:833 +#: command.y:834 msgid "display [var] - print value of variable each time the program stops." msgstr "" "display [muuttuja] - tulosta muuttujan arvo joka kerta kun ohjelma pysähtyy." -#: command.y:835 +#: command.y:836 msgid "down [N] - move N frames down the stack." msgstr "down [N] - siirrä N kehystä alaspäin pinossa." -#: command.y:837 +#: command.y:838 msgid "dump [filename] - dump instructions to file or stdout." msgstr "dump [tiedostonimi] - vedosta käskyt tiedostoon tai vakiotulosteeseen." -#: command.y:839 +#: command.y:840 msgid "enable [once|del] [breakpoints] [range] - enable specified breakpoints." msgstr "" "enable [once|del] [keskeytyskohdat] [lukualue] - ota käyttöön määritellyt " "keskeytyskohdat." -#: command.y:841 +#: command.y:842 msgid "end - end a list of commands or awk statements." msgstr "end - lopeta komentojen tai awk-lauseiden luottelo." -#: command.y:843 +#: command.y:844 msgid "eval stmt|[p1, p2, ...] - evaluate awk statement(s)." msgstr "eval stmt|[p1, p2, ...] - evaloi awk-lauseet." -#: command.y:845 +#: command.y:846 +#, fuzzy +msgid "exit - (same as quit) exit debugger." +msgstr "quit - poistu vianjäljittäjästä." + +#: command.y:848 msgid "finish - execute until selected stack frame returns." msgstr "finish - suorita kunnes palautetaan valittu pinokehys." -#: command.y:847 +#: command.y:850 msgid "frame [N] - select and print stack frame number N." msgstr "frame [N] - valitse ja tulosta pinokehys numero N." -#: command.y:849 +#: command.y:852 msgid "help [command] - print list of commands or explanation of command." msgstr "help [komento] - tulosta komentoluettelo tai komennon selitys." -#: command.y:851 +#: command.y:854 msgid "ignore N COUNT - set ignore-count of breakpoint number N to COUNT." msgstr "" "ignore N COUNT - aseta keskeytyskohdan ignore-count numero N arvoon COUNT." -#: command.y:853 +#: command.y:856 msgid "" "info topic - source|sources|variables|functions|break|frame|args|locals|" "display|watch." @@ -1181,87 +1206,87 @@ msgstr "" "info aihe - source|sources|variables|functions|break|frame|args|locals|" "display|watch." -#: command.y:855 +#: command.y:858 msgid "list [-|+|[filename:]lineno|function|range] - list specified line(s)." msgstr "" "list [-|+|[tiedostonimi:]rivinumero|funktio|lukualue] - luettele määritellyt " "rivit." -#: command.y:857 +#: command.y:860 msgid "next [COUNT] - step program, proceeding through subroutine calls." msgstr "next [COUNT] - askella ohjelmaa, etene alirutiinikutsujen kautta." -#: command.y:859 +#: command.y:862 msgid "" "nexti [COUNT] - step one instruction, but proceed through subroutine calls." msgstr "" "nexti [COUNT] - askella yksi käsky, mutta etene alirutiinikutsujen kautta." -#: command.y:861 +#: command.y:864 msgid "option [name[=value]] - set or display debugger option(s)." msgstr "option [nimi[=arvo]] - aseta tai näytä vianjäljittäjävalitsimet." -#: command.y:863 +#: command.y:866 msgid "print var [var] - print value of a variable or array." msgstr "print var [muuttuja] - tulosta muutujan tai taulukon arvo." -#: command.y:865 +#: command.y:868 msgid "printf format, [arg], ... - formatted output." msgstr "printf muoto, [argumentti], ... - muotoiltu tuloste." -#: command.y:867 +#: command.y:870 msgid "quit - exit debugger." msgstr "quit - poistu vianjäljittäjästä." -#: command.y:869 +#: command.y:872 msgid "return [value] - make selected stack frame return to its caller." msgstr "return [arvo] - tekee valitun pinokehyksen paluun sen kutsujalle." -#: command.y:871 +#: command.y:874 msgid "run - start or restart executing program." msgstr "run - käynnistä tai uudelleenkäynnistä ohjelman suoritus." -#: command.y:874 +#: command.y:877 msgid "save filename - save commands from the session to file." msgstr "save tiedostonimi - tallenna komennot istunnosta tiedostoon." -#: command.y:877 +#: command.y:880 msgid "set var = value - assign value to a scalar variable." msgstr "set var = arvo - liitä arvo skalaarimuuttujaan." -#: command.y:879 +#: command.y:882 msgid "" "silent - suspends usual message when stopped at a breakpoint/watchpoint." msgstr "" "silent - pysäyttää tavallisen viestin kun pysähdytään katkaisukohdassa/" "vahtipisteessä." -#: command.y:881 +#: command.y:884 msgid "source file - execute commands from file." msgstr "source file - suorita komennot tiedostosta." -#: command.y:883 +#: command.y:886 msgid "step [COUNT] - step program until it reaches a different source line." msgstr "" "step [COUNT] - askella ohjelmaa, kunnes se saavuttaa eri lähdekoodirivin." -#: command.y:885 +#: command.y:888 msgid "stepi [COUNT] - step one instruction exactly." msgstr "stepi [COUNT] - askella tarkalleen yksi käsky." -#: command.y:887 +#: command.y:890 msgid "tbreak [[filename:]N|function] - set a temporary breakpoint." msgstr "tbreak [[tiedostonimi:]N|funktio] - aseta tilapäinen keskeytyskohta." -#: command.y:889 +#: command.y:892 msgid "trace on|off - print instruction before executing." msgstr "trace on|off - tulosta käsky ennen suoritusta." -#: command.y:891 +#: command.y:894 msgid "undisplay [N] - remove variable(s) from automatic display list." msgstr "undisplay [N] - poista muuttuja(t) automaattisesta näyttöluettelosta." -#: command.y:893 +#: command.y:896 msgid "" "until [[filename:]N|function] - execute until program reaches a different " "line or line N within current frame." @@ -1269,19 +1294,19 @@ msgstr "" "until [[tiedostonimi:]N|funktio] - suorita kunnes ohjelma tavoittaa eri " "rivin tai rivin N nykyisen kehyksen sisällä." -#: command.y:895 +#: command.y:898 msgid "unwatch [N] - remove variable(s) from watch list." msgstr "unwatch [N] - poista muuttuja(t) vahtiluettelosta." -#: command.y:897 +#: command.y:900 msgid "up [N] - move N frames up the stack." msgstr "up [N] - siirrä N kehystä ylöspäin pinossa." -#: command.y:899 +#: command.y:902 msgid "watch var - set a watchpoint for a variable." msgstr "watch muuttuja - aseta vahtikohta muuttujalle." -#: command.y:901 +#: command.y:904 msgid "" "where [N] - (same as backtrace) print trace of all or N innermost (outermost " "if N < 0) frames." @@ -1289,40 +1314,40 @@ msgstr "" "missä [N] - (sama kuin paluujälki) tulostaa kaikkien tai N-sisimmäisen " "(ulommaisen jos N < 0) kehyksen jäljen." -#: command.y:1013 debug.c:401 msg.c:135 +#: command.y:1016 debug.c:401 msg.c:135 #, c-format msgid "error: " msgstr "virhe: " -#: command.y:1053 +#: command.y:1060 #, c-format msgid "can't read command (%s)\n" msgstr "komennon (%s) lukeminen epäonnistui\n" -#: command.y:1067 +#: command.y:1074 #, c-format msgid "can't read command (%s)" msgstr "komennon (%s) lukeminen epäonnistui" -#: command.y:1118 +#: command.y:1125 msgid "invalid character in command" msgstr "virheellinen merkki komennossa" -#: command.y:1154 +#: command.y:1161 #, c-format msgid "unknown command - \"%.*s\", try help" msgstr "tuntematon komento - \"%.*s\", kokeile käskyä help" -#: command.y:1224 +#: command.y:1231 #, c-format msgid "%s" msgstr "%s" -#: command.y:1286 +#: command.y:1293 msgid "invalid character" msgstr "virheellinen merkki" -#: command.y:1457 +#: command.y:1497 #, c-format msgid "undefined command: %s\n" msgstr "määrittelemätön komento: %s\n" @@ -1535,17 +1560,17 @@ msgstr "[â€%sâ€] ei ole taulukossa â€%sâ€\n" msgid "`%s[\"%s\"]' is not an array\n" msgstr "â€%s[\"%s\"]†ei ole taulukko\n" -#: debug.c:1236 debug.c:4964 +#: debug.c:1236 debug.c:5010 #, c-format msgid "`%s' is not a scalar variable" msgstr "â€%s†ei ole skalaarimuuttuja" -#: debug.c:1258 debug.c:4994 +#: debug.c:1258 debug.c:5040 #, c-format msgid "attempt to use array `%s[\"%s\"]' in a scalar context" msgstr "yritettiin käyttää taulukkoa â€%s[\"%s\"]†skalaarikontekstissa" -#: debug.c:1280 debug.c:5005 +#: debug.c:1280 debug.c:5051 #, c-format msgid "attempt to use scalar `%s[\"%s\"]' as array" msgstr "yritettiin käyttää skalaaria â€%s[\"%s\"]†taulukkona" @@ -1830,99 +1855,99 @@ msgstr "’finish’ ei ole merkityksellinen ei-paikallisessa hypyssä ’%s’\ msgid "'until' not meaningful with non-local jump '%s'\n" msgstr "’until’ ei ole merkityksellinen ei-paikallisessa hypyssä ’%s’\n" -#: debug.c:4185 +#: debug.c:4231 msgid "\t------[Enter] to continue or q [Enter] to quit------" msgstr "\t------Jatka painamalla [Enter] tai poistu painamalla q [Enter]------" -#: debug.c:4186 +#: debug.c:4232 msgid "q" msgstr "q" -#: debug.c:5001 +#: debug.c:5047 #, c-format msgid "[\"%s\"] not in array `%s'" msgstr "[â€%sâ€] ei ole taulukossa â€%sâ€" -#: debug.c:5207 +#: debug.c:5253 #, c-format msgid "sending output to stdout\n" msgstr "lähetetään tuloste vakiotulosteeseen\n" -#: debug.c:5247 +#: debug.c:5293 msgid "invalid number" msgstr "virheellinen numero" -#: debug.c:5381 +#: debug.c:5427 #, c-format msgid "`%s' not allowed in current context; statement ignored" msgstr "â€%s†ei ole sallittu nykyisessä asiayhteydessä; lause ohitetaan" -#: debug.c:5389 +#: debug.c:5435 msgid "`return' not allowed in current context; statement ignored" msgstr "â€return†ei ole sallittu nykyisessä asiayhteydessä; lause ohitetaan" -#: debug.c:5604 +#: debug.c:5650 #, c-format msgid "No symbol `%s' in current context" msgstr "Symbolia â€%s†ei ole nykyisesssä asiayhteydessä" -#: dfa.c:1062 dfa.c:1065 dfa.c:1084 dfa.c:1094 dfa.c:1106 dfa.c:1142 -#: dfa.c:1151 dfa.c:1154 dfa.c:1159 dfa.c:1173 dfa.c:1221 +#: dfa.c:1090 dfa.c:1093 dfa.c:1112 dfa.c:1122 dfa.c:1135 dfa.c:1163 dfa.c:1172 +#: dfa.c:1175 dfa.c:1180 dfa.c:1202 dfa.c:1205 msgid "unbalanced [" msgstr "pariton [" -#: dfa.c:1118 +#: dfa.c:1148 msgid "invalid character class" msgstr "virheellinen merkkiluokka" -#: dfa.c:1264 +#: dfa.c:1271 msgid "character class syntax is [[:space:]], not [:space:]" msgstr "merkkiluokkasyntaksi on [[:space:]], ei [:space:]" -#: dfa.c:1326 +#: dfa.c:1332 msgid "unfinished \\ escape" msgstr "päättymätön \\-koodinvaihtomerkki" -#: dfa.c:1473 +#: dfa.c:1499 msgid "invalid content of \\{\\}" msgstr "virheellinen \\{\\}-sisältö" -#: dfa.c:1476 +#: dfa.c:1502 msgid "regular expression too big" msgstr "säännöllinen lauseke on liian suuri" -#: dfa.c:1911 +#: dfa.c:1916 msgid "unbalanced (" msgstr "pariton (" -#: dfa.c:2037 +#: dfa.c:2044 msgid "no syntax specified" msgstr "syntaksi ei ole määritelty" -#: dfa.c:2045 +#: dfa.c:2052 msgid "unbalanced )" msgstr "pariton )" -#: eval.c:396 +#: eval.c:398 #, c-format msgid "unknown nodetype %d" msgstr "tuntematon solmutyyppi %d" -#: eval.c:407 eval.c:421 +#: eval.c:409 eval.c:423 #, c-format msgid "unknown opcode %d" msgstr "tuntematon käskykoodi %d" -#: eval.c:418 +#: eval.c:420 #, c-format msgid "opcode %s not an operator or keyword" msgstr "käskykoodi %s ei ole operaattori tai avainsana" -#: eval.c:474 +#: eval.c:476 msgid "buffer overflow in genflags2str" msgstr "puskurin ylivuoto funktiossa genflags2str" -#: eval.c:676 +#: eval.c:678 #, c-format msgid "" "\n" @@ -1933,296 +1958,291 @@ msgstr "" "\t# Funktiokutsupino:\n" "\n" -#: eval.c:705 +#: eval.c:707 msgid "`IGNORECASE' is a gawk extension" msgstr "â€IGNORECASE†on gawk-laajennus" -#: eval.c:737 +#: eval.c:739 msgid "`BINMODE' is a gawk extension" msgstr "â€BINMODE†on gawk-laajennus" -#: eval.c:795 +#: eval.c:797 #, c-format msgid "BINMODE value `%s' is invalid, treated as 3" msgstr "BINMODE-arvo â€%s†on virheellinen, käsiteltiin arvona 3" -#: eval.c:912 +#: eval.c:914 #, c-format msgid "bad `%sFMT' specification `%s'" msgstr "väärä â€%sFMTâ€-määritys â€%sâ€" -#: eval.c:996 +#: eval.c:988 msgid "turning off `--lint' due to assignment to `LINT'" msgstr "käännetään pois â€--lintâ€-valitsin â€LINTâ€-sijoituksen vuoksi" -#: eval.c:1174 +#: eval.c:1166 #, c-format msgid "reference to uninitialized argument `%s'" msgstr "viite alustamattomaan argumenttiin â€%sâ€" -#: eval.c:1175 +#: eval.c:1167 #, c-format msgid "reference to uninitialized variable `%s'" msgstr "viite alustamattomaan muuttujaan â€%sâ€" -#: eval.c:1193 +#: eval.c:1185 msgid "attempt to field reference from non-numeric value" msgstr "yritettiin kenttäviitettä arvosta, joka ei ole numeerinen" -#: eval.c:1195 +#: eval.c:1187 msgid "attempt to field reference from null string" msgstr "yritettiin kenttäviitettä null-merkkijonosta" -#: eval.c:1203 +#: eval.c:1195 #, c-format msgid "attempt to access field %ld" msgstr "yritettiin saantia kenttään %ld" -#: eval.c:1212 +#: eval.c:1204 #, c-format msgid "reference to uninitialized field `$%ld'" msgstr "viite alustamattomaan kenttään â€$%ldâ€" -#: eval.c:1299 +#: eval.c:1291 #, c-format msgid "function `%s' called with more arguments than declared" msgstr "funktio â€%s†kutsuttiin useammalla argumentilla kuin esiteltiin" -#: eval.c:1506 +#: eval.c:1498 #, c-format msgid "unwind_stack: unexpected type `%s'" msgstr "unwind_stack: odottamaton tyyppi â€%sâ€" -#: eval.c:1602 +#: eval.c:1594 msgid "division by zero attempted in `/='" msgstr "jakoa nollalla yritettiin operaatiossa â€/=â€" -#: eval.c:1609 +#: eval.c:1601 #, c-format msgid "division by zero attempted in `%%='" msgstr "jakoa nollalla yritettiin operaatiossa â€%%=â€" -#: ext.c:65 ext.c:147 +#: ext.c:66 ext.c:148 msgid "extensions are not allowed in sandbox mode" msgstr "laajennuksia ei sallita hiekkalaatikkotilassa" -#: ext.c:68 +#: ext.c:69 msgid "-l / @load are gawk extensions" msgstr "-l / @load ovat gawk-laajennuksia" -#: ext.c:71 +#: ext.c:72 msgid "load_ext: received NULL lib_name" msgstr "load_ext: vastaanotettiin NULL lib_name" -#: ext.c:74 +#: ext.c:75 #, c-format msgid "load_ext: cannot open library `%s' (%s)\n" msgstr "load_ext: kirjaston â€%s†(%s) avaus epäonnistui\n" -#: ext.c:80 +#: ext.c:81 #, c-format msgid "" "load_ext: library `%s': does not define `plugin_is_GPL_compatible' (%s)\n" msgstr "" "load_ext: kirjasto â€%sâ€: ei määrittele â€plugin_is_GPL_compatible†(%s)\n" -#: ext.c:86 +#: ext.c:87 #, c-format msgid "load_ext: library `%s': cannot call function `%s' (%s)\n" msgstr "load_ext: kirjasto â€%sâ€: funktion â€%s†(%s) kutsu epäonnistui\n" -#: ext.c:90 +#: ext.c:91 #, c-format msgid "load_ext: library `%s' initialization routine `%s' failed\n" msgstr "load_ext: kirjaston â€%s†alustusrutiini â€%s†epäonnistui\n" -#: ext.c:150 +#: ext.c:151 msgid "`extension' is a gawk extension" msgstr "â€extension†on gawk-laajennus" -#: ext.c:153 +#: ext.c:154 msgid "extension: received NULL lib_name" msgstr "laajennos: vastaantotettu NULL lib_name" -#: ext.c:156 +#: ext.c:157 #, c-format msgid "extension: cannot open library `%s' (%s)" msgstr "extension: kirjaston â€%s†(%s) avaus epäonnistui" -#: ext.c:162 +#: ext.c:163 #, c-format msgid "" "extension: library `%s': does not define `plugin_is_GPL_compatible' (%s)" msgstr "" "extension: kirjasto â€%sâ€: ei määrittele â€plugin_is_GPL_compatible†(%s)" -#: ext.c:166 +#: ext.c:167 #, c-format msgid "extension: library `%s': cannot call function `%s' (%s)" msgstr "extension: kirjasto â€%sâ€: funktion â€%s†(%s) kutsu epäonnistui" -#: ext.c:197 +#: ext.c:198 msgid "make_builtin: missing function name" msgstr "make_builtin: puuttuva funktionimi" -#: ext.c:212 +#: ext.c:213 #, c-format msgid "make_builtin: can't redefine function `%s'" msgstr "make_builtin: funktion â€%s†uudelleenmäärittely epäonnistui" -#: ext.c:216 +#: ext.c:217 #, c-format msgid "make_builtin: function `%s' already defined" msgstr "make_builtin: funktio â€%s†on jo määritelty" -#: ext.c:220 +#: ext.c:221 #, c-format msgid "make_builtin: function name `%s' previously defined" msgstr "make_builtin: funktionimi â€%s†on määritelty jo aiemmin" -#: ext.c:222 +#: ext.c:223 #, c-format msgid "make_builtin: can't use gawk built-in `%s' as function name" msgstr "" "make_builtin: gawk-ohjelman sisäisen muuttujanimen â€%s†käyttö funktionimenä " "epäonnistui" -#: ext.c:225 ext.c:280 +#: ext.c:226 ext.c:281 #, c-format msgid "make_builtin: negative argument count for function `%s'" msgstr "make_builtin: negatiivinen argumenttilukumäärä funktiolle â€%sâ€" -#: ext.c:252 +#: ext.c:253 msgid "extension: missing function name" msgstr "extension: puuttuva funktionimi" -#: ext.c:255 ext.c:259 +#: ext.c:256 ext.c:260 #, c-format msgid "extension: illegal character `%c' in function name `%s'" msgstr "extension: virheellinen merkki â€%c†funktionimessä â€%sâ€" -#: ext.c:267 +#: ext.c:268 #, c-format msgid "extension: can't redefine function `%s'" msgstr "extension: funktion â€%s†uudelleenmäärittely epäonnistui" -#: ext.c:271 +#: ext.c:272 #, c-format msgid "extension: function `%s' already defined" msgstr "extension: funktio â€%s†on jo määritelty" -#: ext.c:275 +#: ext.c:276 #, c-format msgid "extension: function name `%s' previously defined" msgstr "extension: funktionimi â€%s†on määritelty jo aiemmin" -#: ext.c:277 +#: ext.c:278 #, c-format msgid "extension: can't use gawk built-in `%s' as function name" msgstr "" "extension: gawk-ohjelman sisäisen muuttujanimen käyttö â€%s†funktionimenä " "epäonnistui" -#: ext.c:351 -#, c-format -msgid "function `%s' defined to take no more than %d argument(s)" -msgstr "funktio â€%s†on määritelty ottamaan enemmän kuin %d argumenttia" - -#: ext.c:354 -#, c-format -msgid "function `%s': missing argument #%d" -msgstr "function â€%sâ€: puuttuva argumentti #%d" - -#: ext.c:371 +#: ext.c:358 #, c-format msgid "function `%s': argument #%d: attempt to use scalar as an array" msgstr "funktio â€%sâ€: argumentti #%d: yritettiin käyttää skalaaria taulukkona" -#: ext.c:375 +#: ext.c:362 #, c-format msgid "function `%s': argument #%d: attempt to use array as a scalar" msgstr "funktio â€%sâ€: argumentti #%d: yritettiin käyttää taulukkoa skalaarina" -#: ext.c:389 +#: ext.c:376 msgid "dynamic loading of library not supported" msgstr "kirjaston dynaamista latausta ei tueta" -#: extension/filefuncs.c:159 +#: extension/filefuncs.c:164 msgid "chdir: called with incorrect number of arguments, expecting 1" msgstr "chdir: kutsuttu argumenttien väärällä lukumäärällä, odotettiin 1" -#: extension/filefuncs.c:439 +#: extension/filefuncs.c:444 #, c-format msgid "stat: unable to read symbolic link `%s'" msgstr "stat: symbolisen linkin â€%s†lukeminen epäonnistui" -#: extension/filefuncs.c:472 +#: extension/filefuncs.c:477 msgid "stat: called with wrong number of arguments" msgstr "stat: kutsuttu argumenttien väärällä lukumäärällä" -#: extension/filefuncs.c:479 +#: extension/filefuncs.c:484 extension/filefuncs.c:534 msgid "stat: bad parameters" msgstr "stat: väärät parametrit" -#: extension/filefuncs.c:533 +#: extension/filefuncs.c:527 +#, fuzzy +msgid "statvfs: called with wrong number of arguments" +msgstr "stat: kutsuttu argumenttien väärällä lukumäärällä" + +#: extension/filefuncs.c:598 #, c-format msgid "fts init: could not create variable %s" msgstr "fts init: muuttujan %s luominen epäonnistui" -#: extension/filefuncs.c:554 +#: extension/filefuncs.c:619 msgid "fts is not supported on this system" msgstr "fts ei ole tuettu tässä järjestelmässä" -#: extension/filefuncs.c:573 +#: extension/filefuncs.c:638 msgid "fill_stat_element: could not create array" msgstr "fill_stat_element: taulukon luominen epäonnistui" -#: extension/filefuncs.c:582 +#: extension/filefuncs.c:647 msgid "fill_stat_element: could not set element" msgstr "fill_stat_element: elementin asettaminen epäonnistui" -#: extension/filefuncs.c:597 +#: extension/filefuncs.c:662 msgid "fill_path_element: could not set element" msgstr "fill_path_element: elementin asettaminen epäonnistui" -#: extension/filefuncs.c:613 +#: extension/filefuncs.c:678 msgid "fill_error_element: could not set element" msgstr "fill_error_element: elementin asettaminen epäonnistui" -#: extension/filefuncs.c:660 extension/filefuncs.c:707 +#: extension/filefuncs.c:725 extension/filefuncs.c:772 msgid "fts-process: could not create array" msgstr "fts-process: taulukon luominen epäonnistui" -#: extension/filefuncs.c:670 extension/filefuncs.c:717 -#: extension/filefuncs.c:735 +#: extension/filefuncs.c:735 extension/filefuncs.c:782 +#: extension/filefuncs.c:800 msgid "fts-process: could not set element" msgstr "fts-process: elementin asettaminen epäonnistui" -#: extension/filefuncs.c:784 +#: extension/filefuncs.c:849 msgid "fts: called with incorrect number of arguments, expecting 3" msgstr "fts: kutsuttu argumenttien väärällä lukumäärällä, odotettiin 3" -#: extension/filefuncs.c:787 +#: extension/filefuncs.c:852 msgid "fts: bad first parameter" msgstr "fts: väärä ensimmäinen parametri" -#: extension/filefuncs.c:793 +#: extension/filefuncs.c:858 msgid "fts: bad second parameter" msgstr "fts: väärä toinen parametri" -#: extension/filefuncs.c:799 +#: extension/filefuncs.c:864 msgid "fts: bad third parameter" msgstr "fts: väärä kolmas parametri" -#: extension/filefuncs.c:806 +#: extension/filefuncs.c:871 msgid "fts: could not flatten array\n" msgstr "fts: taulukon litistäminen epäonnistui\n" -#: extension/filefuncs.c:824 +#: extension/filefuncs.c:889 msgid "fts: ignoring sneaky FTS_NOSTAT flag. nyah, nyah, nyah." msgstr "fts: ohitetaan petollinen FTS_NOSTAT-lippu. nyyh, nyyh, nyyh." -#: extension/filefuncs.c:841 +#: extension/filefuncs.c:906 msgid "fts: clear_array() failed\n" msgstr "fts: clear_array() epäonnistui\n" @@ -2283,95 +2303,95 @@ msgstr "wait: kutsuttu ilman argumentteja" msgid "wait: called with too many arguments" msgstr "wait: kutsuttu liian monella argumentilla" -#: extension/inplace.c:130 +#: extension/inplace.c:131 msgid "inplace_begin: in-place editing already active" msgstr "inplace_begin: kohdallaanmuokkaus on jo aktivoitu" -#: extension/inplace.c:133 extension/inplace.c:210 +#: extension/inplace.c:134 extension/inplace.c:211 #, c-format msgid "inplace_begin: expects 2 arguments but called with %d" msgstr "" "inplace_begin: odotetaan 2 argumenttia, mutta kutsussa oli %d argumenttia" -#: extension/inplace.c:136 +#: extension/inplace.c:137 msgid "inplace_begin: cannot retrieve 1st argument as a string filename" msgstr "" "inplace_begin: ensimmäisen argumentin noutaminen merkkijonotiedostonimenä " "epäonnistui" -#: extension/inplace.c:144 +#: extension/inplace.c:145 #, c-format msgid "inplace_begin: disabling in-place editing for invalid FILENAME `%s'" msgstr "" "inplace_begin: ottaen pois käytöstä virheellisen TIEDOSTONIMI â€%s†" "muokkauksen" -#: extension/inplace.c:151 +#: extension/inplace.c:152 #, c-format msgid "inplace_begin: Cannot stat `%s' (%s)" msgstr "inplace_begin: stat â€%s†(%s) epäonnistui" -#: extension/inplace.c:158 +#: extension/inplace.c:159 #, c-format msgid "inplace_begin: `%s' is not a regular file" msgstr "inplace_begin: â€%s†ei ole tavallinen tiedosto" -#: extension/inplace.c:169 +#: extension/inplace.c:170 #, c-format msgid "inplace_begin: mkstemp(`%s') failed (%s)" msgstr "inplace_begin: mkstemp(â€%sâ€) epäonnistui (%s)" -#: extension/inplace.c:181 +#: extension/inplace.c:182 #, c-format msgid "inplace_begin: chmod failed (%s)" msgstr "inplace_begin: chmod epäonnistui (%s)" -#: extension/inplace.c:188 +#: extension/inplace.c:189 #, c-format msgid "inplace_begin: dup(stdout) failed (%s)" msgstr "inplace_begin: dup(stdout) epäonnistui (%s)" -#: extension/inplace.c:191 +#: extension/inplace.c:192 #, c-format msgid "inplace_begin: dup2(%d, stdout) failed (%s)" msgstr "inplace_begin: dup2(%d, stdout) epäonnistui (%s)" -#: extension/inplace.c:194 +#: extension/inplace.c:195 #, c-format msgid "inplace_begin: close(%d) failed (%s)" msgstr "inplace_begin: close(%d) epäonnistui (%s)" -#: extension/inplace.c:213 +#: extension/inplace.c:214 msgid "inplace_end: cannot retrieve 1st argument as a string filename" msgstr "" "inplace_end: ensimmäisen argumentin noutaminen merkkijonotiedostonimenä " "epäonnistui" -#: extension/inplace.c:220 +#: extension/inplace.c:221 msgid "inplace_end: in-place editing not active" msgstr "inplace_end: kohdallaanmuokkaus ei ole aktiivinen" -#: extension/inplace.c:226 +#: extension/inplace.c:227 #, c-format msgid "inplace_end: dup2(%d, stdout) failed (%s)" msgstr "inplace_end: dup2(%d, stdout) epäonnistui (%s)" -#: extension/inplace.c:229 +#: extension/inplace.c:230 #, c-format msgid "inplace_end: close(%d) failed (%s)" msgstr "inplace_end: close(%d) epäonnistui (%s)" -#: extension/inplace.c:233 +#: extension/inplace.c:234 #, c-format msgid "inplace_end: fsetpos(stdout) failed (%s)" msgstr "inplace_end: fsetpos(stdout) epäonnistui (%s)" -#: extension/inplace.c:246 +#: extension/inplace.c:247 #, c-format msgid "inplace_end: link(`%s', `%s') failed (%s)" msgstr "inplace_end: link(â€%sâ€, â€%sâ€) epäonnistui (%s)." -#: extension/inplace.c:256 +#: extension/inplace.c:257 #, c-format msgid "inplace_end: rename(`%s', `%s') failed (%s)" msgstr "inplace_end: rename(â€%sâ€, â€%sâ€) epäonnistui (%s)" @@ -2400,7 +2420,7 @@ msgstr "chr: kutsuttu ilman argumentteja" msgid "chr: called with inappropriate argument(s)" msgstr "chr: kutsuttu sopimattomalla argumentilla" -#: extension/readdir.c:281 +#: extension/readdir.c:271 #, c-format msgid "dir_take_control_of: opendir/fdopendir failed: %s" msgstr "dir_take_control_of: opendir/fdopendir epäonnistui: %s" @@ -2413,54 +2433,54 @@ msgstr "readfile: kutsuttu liian monella argumentilla" msgid "readfile: called with no arguments" msgstr "readfile: kutsuttu ilman argumentteja" -#: extension/revoutput.c:125 +#: extension/revoutput.c:127 msgid "revoutput: could not initialize REVOUT variable" msgstr "revoutput: REVOUT-muuttujan alustaminen epäonnistui" -#: extension/rwarray.c:124 extension/rwarray0.c:109 +#: extension/rwarray.c:113 extension/rwarray0.c:109 msgid "writea: called with too many arguments" msgstr "writea: kutsuttu liian monella argumentilla" -#: extension/rwarray.c:131 extension/rwarray0.c:116 +#: extension/rwarray.c:120 extension/rwarray0.c:116 #, c-format msgid "do_writea: argument 0 is not a string\n" msgstr "do_writea: argumentti 0 ei ole merkkijono\n" -#: extension/rwarray.c:137 extension/rwarray0.c:122 +#: extension/rwarray.c:126 extension/rwarray0.c:122 #, c-format msgid "do_writea: argument 1 is not an array\n" msgstr "do_writea: argumentti 1 ei ole taulukko\n" -#: extension/rwarray.c:184 extension/rwarray0.c:169 +#: extension/rwarray.c:173 extension/rwarray0.c:169 #, c-format msgid "write_array: could not flatten array\n" msgstr "write_array: taulukon litistäminen epäonnistui\n" -#: extension/rwarray.c:198 extension/rwarray0.c:183 +#: extension/rwarray.c:187 extension/rwarray0.c:183 #, c-format msgid "write_array: could not release flattened array\n" msgstr "write_array: litistettyä taulukon vapauttaminen epäonnistui\n" -#: extension/rwarray.c:280 extension/rwarray0.c:265 +#: extension/rwarray.c:269 extension/rwarray0.c:265 msgid "reada: called with too many arguments" msgstr "reada: kutsuttu liian monilla argumenteilla" -#: extension/rwarray.c:287 extension/rwarray0.c:272 +#: extension/rwarray.c:276 extension/rwarray0.c:272 #, c-format msgid "do_reada: argument 0 is not a string\n" msgstr "do_reada: argumentti 0 ei ole merkkijono\n" -#: extension/rwarray.c:293 extension/rwarray0.c:278 +#: extension/rwarray.c:282 extension/rwarray0.c:278 #, c-format msgid "do_reada: argument 1 is not an array\n" msgstr "do_reada: argumentti 1 ei ole taulukko\n" -#: extension/rwarray.c:337 extension/rwarray0.c:322 +#: extension/rwarray.c:326 extension/rwarray0.c:322 #, c-format msgid "do_reada: clear_array failed\n" msgstr "do_reada: clear_array epäonnistui\n" -#: extension/rwarray.c:374 extension/rwarray0.c:358 +#: extension/rwarray.c:363 extension/rwarray0.c:358 #, c-format msgid "read_array: set_array_element failed\n" msgstr "read_array: set_array_element epäonnistui\n" @@ -2573,7 +2593,7 @@ msgstr "null-merkkijono â€FSâ€-kenttäerotinmuuttujalle on gawk-laajennus" msgid "old awk does not support regexps as value of `FS'" msgstr "vanha awk ei tue regexp-arvoja â€FSâ€-kenttäerotinmuuttujana" -#: field.c:1380 +#: field.c:1384 msgid "`FPAT' is a gawk extension" msgstr "â€FPAT†on gawk-laajennus" @@ -2581,28 +2601,28 @@ msgstr "â€FPAT†on gawk-laajennus" msgid "awk_value_to_node: received null retval" msgstr "awk_value_to_node: vastaanotti null retval-paluuarvon" -#: gawkapi.c:384 +#: gawkapi.c:383 msgid "node_to_awk_value: received null node" msgstr "node_to_awk_value: vastaaotti null-solmun" -#: gawkapi.c:387 +#: gawkapi.c:386 msgid "node_to_awk_value: received null val" msgstr "node_to_awk_value: vastaanotti null-arvon" -#: gawkapi.c:809 +#: gawkapi.c:808 msgid "remove_element: received null array" msgstr "remove_element: vastaanotettu null-taulukko" -#: gawkapi.c:812 +#: gawkapi.c:811 msgid "remove_element: received null subscript" msgstr "remove_element: vastaanotti null-alaindeksin" -#: gawkapi.c:949 +#: gawkapi.c:948 #, c-format msgid "api_flatten_array: could not convert index %d\n" msgstr "api_flatten_array: indeksin %d muuntaminen epäonnistui\n" -#: gawkapi.c:954 +#: gawkapi.c:953 #, c-format msgid "api_flatten_array: could not convert value %d\n" msgstr "api_flatten_array: arvon %d muuntaminen epäonnistui\n" @@ -2662,277 +2682,281 @@ msgstr "%s: valitsin ’-W %s’ ei salli argumenttia\n" msgid "%s: option '-W %s' requires an argument\n" msgstr "%s: valitsin ’-W %s’ vaatii argumentin\n" -#: io.c:423 +#: io.c:426 #, c-format msgid "command line argument `%s' is a directory: skipped" msgstr "komentoriviargumentti â€%s†on hakemisto: ohitettiin" -#: io.c:426 io.c:544 +#: io.c:429 io.c:547 #, c-format msgid "cannot open file `%s' for reading (%s)" msgstr "tiedoston â€%s†avaaminen lukemista varten (%s) epäonnistui" -#: io.c:671 +#: io.c:674 #, c-format msgid "close of fd %d (`%s') failed (%s)" msgstr "tiedostomäärittelijän %d (â€%sâ€) sulkeminen epäonnistui (%s)" -#: io.c:749 +#: io.c:752 msgid "redirection not allowed in sandbox mode" msgstr "edelleenohjaus ei ole sallittua hiekkalaatikkotilassa" -#: io.c:783 +#: io.c:786 #, c-format msgid "expression in `%s' redirection only has numeric value" msgstr "lausekkeella â€%sâ€-uudellenohjauksessa on vain numeerinen arvo" -#: io.c:789 +#: io.c:792 #, c-format msgid "expression for `%s' redirection has null string value" msgstr "lausekkeella â€%sâ€-uudelleenohjauksessa on null-merkkijonoarvo" -#: io.c:794 +#: io.c:797 #, c-format msgid "filename `%s' for `%s' redirection may be result of logical expression" msgstr "" "tiedostonimi â€%s†â€%sâ€-uudelleenohjaukselle saattaa olla loogisen lausekkeen " "tulos" -#: io.c:842 +#: io.c:845 #, c-format msgid "unnecessary mixing of `>' and `>>' for file `%.*s'" msgstr "turha merkkien â€>†ja â€>>†sekoittaminen tiedostolle â€%.*sâ€" -#: io.c:896 +#: io.c:902 #, c-format msgid "can't open pipe `%s' for output (%s)" msgstr "putken â€%s†avaaminen tulosteelle (%s) epäonnistui" -#: io.c:906 +#: io.c:915 #, c-format msgid "can't open pipe `%s' for input (%s)" msgstr "putken â€%s†avaaminen syötteelle (%s) epäonnistui" -#: io.c:937 +#: io.c:946 #, c-format msgid "can't open two way pipe `%s' for input/output (%s)" msgstr "" "kaksisuuntaisen putken â€%s†avaaminen syötteelle/tulosteelle (%s) epäonnistui" -#: io.c:1019 +#: io.c:1030 #, c-format msgid "can't redirect from `%s' (%s)" msgstr "uudelleenohjaus putkesta â€%s†(%s) epäonnistui" -#: io.c:1022 +#: io.c:1033 #, c-format msgid "can't redirect to `%s' (%s)" msgstr "uudelleenohjaus putkeen â€%s†(%s) epäonnistui" -#: io.c:1073 +#: io.c:1084 msgid "" "reached system limit for open files: starting to multiplex file descriptors" msgstr "" "saavutettiin avoimien tiedostojen järjestelmäraja: aloitetaan " "tiedostomäärittelijöiden lomittaminen" -#: io.c:1089 +#: io.c:1100 #, c-format msgid "close of `%s' failed (%s)." msgstr "uudelleenohjauksen â€%s†sulkeminen epäonnistui (%s)." -#: io.c:1097 +#: io.c:1108 msgid "too many pipes or input files open" msgstr "avoinna liian monta putkea tai syötetiedostoa" -#: io.c:1119 +#: io.c:1130 msgid "close: second argument must be `to' or `from'" msgstr "close: toisen argumentin on oltava â€to†tai â€fromâ€" -#: io.c:1136 +#: io.c:1147 #, c-format msgid "close: `%.*s' is not an open file, pipe or co-process" msgstr "close: â€%.*s†ei ole avoin tiedosto, putki tai apuprosessi" -#: io.c:1141 +#: io.c:1152 msgid "close of redirection that was never opened" msgstr "suljettiin uudelleenohjaus, jota ei avattu koskaan" -#: io.c:1238 +#: io.c:1249 #, c-format msgid "close: redirection `%s' not opened with `|&', second argument ignored" msgstr "" "close: uudelleenohjaus â€%s†ei ole avattu operaattoreilla â€|&â€, toinen " "argumentti ohitettu" -#: io.c:1255 +#: io.c:1266 #, c-format msgid "failure status (%d) on pipe close of `%s' (%s)" msgstr "virhetila (%d) putken â€%s†sulkemisessa (%s)" -#: io.c:1258 +#: io.c:1269 #, c-format msgid "failure status (%d) on file close of `%s' (%s)" msgstr "virhetila (%d) tiedoston â€%s†sulkemisessa (%s)" -#: io.c:1278 +#: io.c:1289 #, c-format msgid "no explicit close of socket `%s' provided" msgstr "pistokkeen â€%s†eksplisiittistä sulkemista ei tarjota" -#: io.c:1281 +#: io.c:1292 #, c-format msgid "no explicit close of co-process `%s' provided" msgstr "apuprosessin â€%s†eksplisiittistä sulkemista ei tarjota" -#: io.c:1284 +#: io.c:1295 #, c-format msgid "no explicit close of pipe `%s' provided" msgstr "putken â€%s†eksplisiittistä sulkemista ei tarjota" -#: io.c:1287 +#: io.c:1298 #, c-format msgid "no explicit close of file `%s' provided" msgstr "tiedoston â€%s†eksplisiittistä sulkemista ei tarjota" -#: io.c:1317 io.c:1375 main.c:632 main.c:674 +#: io.c:1328 io.c:1387 main.c:645 main.c:687 #, c-format msgid "error writing standard output (%s)" msgstr "virhe kirjoitettaessa vakiotulosteeseen (%s)" -#: io.c:1322 io.c:1381 main.c:634 +#: io.c:1333 io.c:1393 main.c:647 #, c-format msgid "error writing standard error (%s)" msgstr "virhe kirjoitettaessa vakiovirheeseen (%s)" -#: io.c:1330 +#: io.c:1341 #, c-format msgid "pipe flush of `%s' failed (%s)." msgstr "uudelleenohjauksen â€%s†putken tyhjennys epäonnistui (%s)." -#: io.c:1333 +#: io.c:1344 #, c-format msgid "co-process flush of pipe to `%s' failed (%s)." msgstr "putken apuprosessityhjennys uudelleenohjaukseen â€%s†epäonnistui (%s)." -#: io.c:1336 +#: io.c:1347 #, c-format msgid "file flush of `%s' failed (%s)." msgstr "uudelleenohjauksen â€%s†tiedostontyhjennys epäonnistui (%s)." -#: io.c:1453 +#: io.c:1465 #, c-format msgid "local port %s invalid in `/inet'" msgstr "paikallinen portti %s virheellinen pistokkeessa â€/inetâ€" -#: io.c:1471 +#: io.c:1483 #, c-format msgid "remote host and port information (%s, %s) invalid" msgstr "etäkone- ja porttitiedot (%s, %s) ovat virheellisiä" -#: io.c:1699 +#: io.c:1711 msgid "TCP/IP communications are not supported" msgstr "TCP/IP-viestintää ei tueta" -#: io.c:1880 +#: io.c:1905 #, c-format msgid "could not open `%s', mode `%s'" msgstr "laitteen â€%s†avaus epäonnistui, tila â€%sâ€" -#: io.c:1930 +#: io.c:1961 #, c-format msgid "close of master pty failed (%s)" msgstr "â€master ptyâ€-sulkeminen epäonnistui (%s)" -#: io.c:1932 io.c:2118 io.c:2319 +#: io.c:1963 io.c:2141 io.c:2342 #, c-format msgid "close of stdout in child failed (%s)" msgstr "vakiotulosteen sulkeminen lapsiprosessissa epäonnistui (%s)" -#: io.c:1935 +#: io.c:1966 #, c-format msgid "moving slave pty to stdout in child failed (dup: %s)" msgstr "" "â€slave ptyâ€:n siirtäminen vakiotulosteeseen lapsiprosessissa epäonnistui " "(dup: %s)" -#: io.c:1937 io.c:2123 +#: io.c:1968 io.c:2146 #, c-format msgid "close of stdin in child failed (%s)" msgstr "vakiosyötteen sulkeminen lapsiprosessissa epäonnistui (%s)" -#: io.c:1940 +#: io.c:1971 #, c-format msgid "moving slave pty to stdin in child failed (dup: %s)" msgstr "" "â€slave ptyâ€:n siirtäminen vakiosyötteeseen lapsiprosessissa epäonnistui " "(dup: %s)" -#: io.c:1942 io.c:1964 +#: io.c:1973 #, c-format msgid "close of slave pty failed (%s)" msgstr "â€slave ptyâ€:n sulkeminen epäonnistui (%s)" -#: io.c:2053 io.c:2121 io.c:2290 io.c:2322 +#: io.c:2076 io.c:2144 io.c:2313 io.c:2345 #, c-format msgid "moving pipe to stdout in child failed (dup: %s)" msgstr "" "putken siirtäminen vakiotulosteeseen lapsiprosessissa epäonnistui (dup: %s)" -#: io.c:2060 io.c:2126 +#: io.c:2083 io.c:2149 #, c-format msgid "moving pipe to stdin in child failed (dup: %s)" msgstr "" "putken siirtäminen vakiosyötteeseen lapsiprosessissa epäonnistui (dup: %s)" -#: io.c:2086 io.c:2312 +#: io.c:2109 io.c:2335 msgid "restoring stdout in parent process failed\n" msgstr "vakiotulosteen palauttaminen äitiprosessissa epäonnistui\n" -#: io.c:2094 +#: io.c:2117 msgid "restoring stdin in parent process failed\n" msgstr "vakiosyötön palauttaminen äitiprosessissa epäonnistui\n" -#: io.c:2129 io.c:2324 io.c:2339 +#: io.c:2152 io.c:2347 io.c:2362 #, c-format msgid "close of pipe failed (%s)" msgstr "putken sulkeminen epäonnistui (%s)" -#: io.c:2188 +#: io.c:2211 msgid "`|&' not supported" msgstr "â€|&†ei tueta" -#: io.c:2275 +#: io.c:2298 #, c-format msgid "cannot open pipe `%s' (%s)" msgstr "putken â€%s†(%s) avaaminen epäonnistui" -#: io.c:2333 +#: io.c:2356 #, c-format msgid "cannot create child process for `%s' (fork: %s)" msgstr "lapsiprosessin luominen komennolle â€%s†(fork: %s) epäonnistui" -#: io.c:2760 +#: io.c:2493 +msgid "getline: attempt to read from closed read end of two-way pipe" +msgstr "" + +#: io.c:2795 msgid "register_input_parser: received NULL pointer" msgstr "register_input_parser: vastaanotettiin NULL-osoitin" -#: io.c:2788 +#: io.c:2823 #, c-format msgid "input parser `%s' conflicts with previously installed input parser `%s'" msgstr "" "syötejäsennin â€%s†on ristiriidassa aiemmin asennetun syötejäsentimen â€%s†" "kanssa" -#: io.c:2795 +#: io.c:2830 #, c-format msgid "input parser `%s' failed to open `%s'" msgstr "syötejäsentäjä â€%s†epäonnistui kohteen â€%s†avaamisessa" -#: io.c:2815 +#: io.c:2850 msgid "register_output_wrapper: received NULL pointer" msgstr "register_output_wrapper: vastaanotti NULL-osoittimen" -#: io.c:2843 +#: io.c:2878 #, c-format msgid "" "output wrapper `%s' conflicts with previously installed output wrapper `%s'" @@ -2940,16 +2964,16 @@ msgstr "" "tulostekäärin â€%s†on ristiriidassa aiemmin asennetun tulostekäärimen â€%s†" "kanssa" -#: io.c:2850 +#: io.c:2885 #, c-format msgid "output wrapper `%s' failed to open `%s'" msgstr "tulostekäärin â€%s†epäonnistui avaamaan â€%sâ€" -#: io.c:2871 +#: io.c:2906 msgid "register_output_processor: received NULL pointer" msgstr "register_output_processor: vastaanotti NULL-osoittimen" -#: io.c:2900 +#: io.c:2935 #, c-format msgid "" "two-way processor `%s' conflicts with previously installed two-way processor " @@ -2958,202 +2982,205 @@ msgstr "" "kaksisuuntainen prosessori â€%s†on ristiriidassa aiemmin asennetun " "kaksisuuntaisen prosessorin â€%s†kanssa" -#: io.c:2909 +#: io.c:2944 #, c-format msgid "two way processor `%s' failed to open `%s'" msgstr "kaksisuuntainen prosessori â€%s†epäonnistui avaamaan â€%sâ€" -#: io.c:3034 +#: io.c:3069 #, c-format msgid "data file `%s' is empty" msgstr "data-tiedosto â€%s†on tyhjä" -#: io.c:3076 io.c:3084 +#: io.c:3111 io.c:3119 msgid "could not allocate more input memory" msgstr "lisäsyötemuistin varaus epäonnistui" -#: io.c:3662 +#: io.c:3697 msgid "multicharacter value of `RS' is a gawk extension" msgstr "â€RSâ€-monimerkkiarvo on gawk-laajennus" -#: io.c:3809 +#: io.c:3844 msgid "IPv6 communication is not supported" msgstr "IPv6-viestintää ei tueta" -#: main.c:321 +#: main.c:334 msgid "environment variable `POSIXLY_CORRECT' set: turning on `--posix'" msgstr "" "ympäristömuuttuja â€POSIXLY_CORRECT†asetettu: käännetään päälle valitsin â€--" "posixâ€" -#: main.c:327 +#: main.c:340 msgid "`--posix' overrides `--traditional'" msgstr "valitsin â€--posix†korvaa valitsimen â€--traditionalâ€" -#: main.c:338 +#: main.c:351 msgid "`--posix'/`--traditional' overrides `--non-decimal-data'" msgstr "" "valitsin â€--posix†tai â€--traditional†korvaa valitsimen â€--non-decimal-dataâ€" -#: main.c:342 +#: main.c:355 #, c-format msgid "running %s setuid root may be a security problem" msgstr "suorittaminen â€%s setuid rootâ€-käyttäjänä saattaa olla turvapulma" -#: main.c:346 +#: main.c:359 msgid "`--posix' overrides `--characters-as-bytes'" msgstr "valitsin â€--posix†korvaa valitsimen â€--characters-as-bytesâ€" -#: main.c:404 +#: main.c:417 #, c-format msgid "can't set binary mode on stdin (%s)" msgstr "binaaritilan asettaminen vakiosyötteessä (%s) epäonnistui" -#: main.c:407 +#: main.c:420 #, c-format msgid "can't set binary mode on stdout (%s)" msgstr "binaaritilan asettaminen vakiotulosteessa (%s) epäonnistui" -#: main.c:409 +#: main.c:422 #, c-format msgid "can't set binary mode on stderr (%s)" msgstr "binaaritilaa asettaminen vakiovirheessä (%s) epäonnistui" -#: main.c:469 +#: main.c:482 msgid "no program text at all!" msgstr "ei ohjelmatekstiä ollenkaan!" -#: main.c:563 +#: main.c:576 #, c-format msgid "Usage: %s [POSIX or GNU style options] -f progfile [--] file ...\n" msgstr "" "Käyttö: %s [POSIX- tai GNU-tyyliset valitsimet] -f ohjelmatiedosto [--] " "tiedosto ...\n" -#: main.c:565 +#: main.c:578 #, c-format msgid "Usage: %s [POSIX or GNU style options] [--] %cprogram%c file ...\n" msgstr "" "Käyttö: %s [POSIX- tai GNU-tyyliset valitsimet] [--] %cohjelma%c " "tiedosto ...\n" -#: main.c:570 +#: main.c:583 msgid "POSIX options:\t\tGNU long options: (standard)\n" msgstr "POSIX-valitsimet:\t\tGNU-pitkät valitsimet: (vakio)\n" -#: main.c:571 +#: main.c:584 msgid "\t-f progfile\t\t--file=progfile\n" msgstr "\t-f ohjelmatiedosto\t\t--file=ohjelmatiedosto\n" -#: main.c:572 +#: main.c:585 msgid "\t-F fs\t\t\t--field-separator=fs\n" msgstr "\t-F fs\t\t\t--field-separator=fs\n" -#: main.c:573 +#: main.c:586 msgid "\t-v var=val\t\t--assign=var=val\n" msgstr "\t-v var=arvo\t\t--assign=muuttuja=arvo\n" -#: main.c:574 +#: main.c:587 msgid "Short options:\t\tGNU long options: (extensions)\n" msgstr "Lyhyet valitsimet:\t\tGNU-pitkät valitsimet: (laajennukset)\n" -#: main.c:575 +#: main.c:588 msgid "\t-b\t\t\t--characters-as-bytes\n" msgstr "\t-b\t\t\t--characters-as-bytes\n" -#: main.c:576 +#: main.c:589 msgid "\t-c\t\t\t--traditional\n" msgstr "\t-c\t\t\t--traditional\n" -#: main.c:577 +#: main.c:590 msgid "\t-C\t\t\t--copyright\n" msgstr "\t-C\t\t\t--copyright\n" -#: main.c:578 +#: main.c:591 msgid "\t-d[file]\t\t--dump-variables[=file]\n" msgstr "\t-d[tiedosto]\t\t--dump-variables[=tiedosto]\n" -#: main.c:579 +#: main.c:592 msgid "\t-D[file]\t\t--debug[=file]\n" msgstr "\t-D[tiedosto]\t\t--debug[=tiedosto]\n" -#: main.c:580 +#: main.c:593 msgid "\t-e 'program-text'\t--source='program-text'\n" msgstr "\t-e 'program-text'\t--source='program-text'\n" -#: main.c:581 +#: main.c:594 msgid "\t-E file\t\t\t--exec=file\n" msgstr "\t-E file\t\t\t--exec=tiedosto\n" -#: main.c:582 +#: main.c:595 msgid "\t-g\t\t\t--gen-pot\n" msgstr "\t-g\t\t\t--gen-po\n" -#: main.c:583 +#: main.c:596 msgid "\t-h\t\t\t--help\n" msgstr "\t-h\t\t\t--help\n" -#: main.c:584 +#: main.c:597 msgid "\t-i includefile\t\t--include=includefile\n" msgstr "\t-i include-tiedosto\t\t--include=include-tiedosto\n" -#: main.c:585 +#: main.c:598 msgid "\t-l library\t\t--load=library\n" msgstr "\t-l kirjasto\t\t--load=kirjasto\n" -#: main.c:590 +#. TRANSLATORS: the "fatal" and "invalid" here are literal +#. values, they should not be translated. Thanks. +#. +#: main.c:603 msgid "\t-L[fatal|invalid]\t--lint[=fatal|invalid]\n" msgstr "\t-L[fatal|invalid]\t--lint[=fatal|invalid]\n" -#: main.c:591 +#: main.c:604 msgid "\t-M\t\t\t--bignum\n" msgstr "\t-M\t\t\t--bignum\n" -#: main.c:592 +#: main.c:605 msgid "\t-N\t\t\t--use-lc-numeric\n" msgstr "\t-N\t\t\t--use-lc-numeric\n" -#: main.c:593 +#: main.c:606 msgid "\t-n\t\t\t--non-decimal-data\n" msgstr "\t-n\t\t\t--non-decimal-data\n" -#: main.c:594 +#: main.c:607 msgid "\t-o[file]\t\t--pretty-print[=file]\n" msgstr "\t-o[tiedosto]\t\t--pretty-print[=tiedosto]\n" -#: main.c:595 +#: main.c:608 msgid "\t-O\t\t\t--optimize\n" msgstr "\t-O\t\t\t--optimize\n" -#: main.c:596 +#: main.c:609 msgid "\t-p[file]\t\t--profile[=file]\n" msgstr "\t-p[tiedosto]\t\t--profile[=tiedosto]\n" -#: main.c:597 +#: main.c:610 msgid "\t-P\t\t\t--posix\n" msgstr "\t-P\t\t\t--posix\n" -#: main.c:598 +#: main.c:611 msgid "\t-r\t\t\t--re-interval\n" msgstr "\t-r\t\t\t--re-interval\n" -#: main.c:599 +#: main.c:612 msgid "\t-S\t\t\t--sandbox\n" msgstr "\t-S\t\t\t--sandbox\n" -#: main.c:600 +#: main.c:613 msgid "\t-t\t\t\t--lint-old\n" msgstr "\t-t\t\t\t--lint-old\n" -#: main.c:601 +#: main.c:614 msgid "\t-V\t\t\t--version\n" msgstr "\t-V\t\t\t--version\n" -#: main.c:603 +#: main.c:616 msgid "\t-W nostalgia\t\t--nostalgia\n" msgstr "\t-W nostalgia\t\t--nostalgia\n" -#: main.c:606 +#: main.c:619 msgid "\t-Y\t\t--parsedebug\n" msgstr "\t-Y\t\t--parsedebug\n" @@ -3162,7 +3189,7 @@ msgstr "\t-Y\t\t--parsedebug\n" #. for this application. Please add _another line_ with the #. address for translation bugs. #. no-wrap -#: main.c:615 +#: main.c:628 msgid "" "\n" "To report bugs, see node `Bugs' in `gawk.info', which is\n" @@ -3175,7 +3202,7 @@ msgstr "" "joka on kappale â€Reporting Problems and Bugs†painetussa versiossa.\n" "\n" -#: main.c:619 +#: main.c:632 msgid "" "gawk is a pattern scanning and processing language.\n" "By default it reads standard input and writes standard output.\n" @@ -3185,7 +3212,7 @@ msgstr "" "Oletuksena se lukee vakiosyötettä ja kirjoittaa vakiotulosteeseen.\n" "\n" -#: main.c:623 +#: main.c:636 msgid "" "Examples:\n" "\tgawk '{ sum += $1 }; END { print sum }' file\n" @@ -3195,7 +3222,7 @@ msgstr "" "\tgawk '{ sum += $1 }; END { print sum }' tiedosto\n" "\tgawk -F: '{ print $1 }' /etc/passwd\n" -#: main.c:648 +#: main.c:661 #, c-format msgid "" "Copyright (C) 1989, 1991-%d Free Software Foundation.\n" @@ -3214,7 +3241,7 @@ msgstr "" "ehtojen mukaisesti.\n" "\n" -#: main.c:656 +#: main.c:669 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" @@ -3228,7 +3255,7 @@ msgstr "" "GNU General Public License-ehdoista.\n" "\n" -#: main.c:662 +#: main.c:675 msgid "" "You should have received a copy of the GNU General Public License\n" "along with this program. If not, see http://www.gnu.org/licenses/.\n" @@ -3236,16 +3263,16 @@ msgstr "" "Sinun pitäisi vastaanottaa kopion GNU General Public Licence-lisenssistä\n" "tämän ohjelman mukana. Jos näin ei ole, katso http://www.gnu.org/licenses/.\n" -#: main.c:699 +#: main.c:712 msgid "-Ft does not set FS to tab in POSIX awk" msgstr "-Ft ei aseta FS välilehteen POSIX awk:ssa" -#: main.c:986 +#: main.c:999 #, c-format msgid "unknown value for field spec: %d\n" msgstr "tuntematon arvo kenttämääritteelle: %d\n" -#: main.c:1084 +#: main.c:1097 #, c-format msgid "" "%s: `%s' argument to `-v' not in `var=value' form\n" @@ -3254,118 +3281,118 @@ msgstr "" "%s: â€%s†argumentti valitsimelle â€-v†ei ole â€var=arvoâ€-muodossa\n" "\n" -#: main.c:1110 +#: main.c:1123 #, c-format msgid "`%s' is not a legal variable name" msgstr "â€%s†ei ole laillinen muuttujanimi" -#: main.c:1113 +#: main.c:1126 #, c-format msgid "`%s' is not a variable name, looking for file `%s=%s'" msgstr "â€%s†ei ole muuttujanimi, etsitään tiedostoa â€%s=%sâ€" -#: main.c:1117 +#: main.c:1130 #, c-format msgid "cannot use gawk builtin `%s' as variable name" msgstr "" "gawk-ohjelman sisäisen â€%sâ€-määrittelyn käyttö muuttujanimenä epäonnistui" -#: main.c:1122 +#: main.c:1135 #, c-format msgid "cannot use function `%s' as variable name" msgstr "funktionimen â€%s†käyttö muuttujanimenä epäonnistui" -#: main.c:1175 +#: main.c:1190 msgid "floating point exception" msgstr "liukulukupoikkeus" -#: main.c:1182 +#: main.c:1197 msgid "fatal error: internal error" msgstr "tuhoisa virhe: sisäinen virhe" -#: main.c:1197 +#: main.c:1212 msgid "fatal error: internal error: segfault" msgstr "tuhoisa virhe: sisäinen virhe: segmenttivirhe" -#: main.c:1209 +#: main.c:1224 msgid "fatal error: internal error: stack overflow" msgstr "tuhoisa virhe: sisäinen virhe: pinoylivuoto" -#: main.c:1268 +#: main.c:1283 #, c-format msgid "no pre-opened fd %d" msgstr "ei avattu uudelleen tiedostomäärittelijää %d" -#: main.c:1275 +#: main.c:1290 #, c-format msgid "could not pre-open /dev/null for fd %d" msgstr "" "laitteen /dev/null avaaminen uudelleen tiedostomäärittelijälle %d epäonnistui" -#: main.c:1489 +#: main.c:1504 msgid "empty argument to `-e/--source' ignored" msgstr "tyhjä argumentti valitsimelle â€-e/--source†ohitetaan" -#: main.c:1560 +#: main.c:1575 msgid "-M ignored: MPFR/GMP support not compiled in" msgstr "-M ohitettu: MPFR/GMP-tuki ei ole käännetty kohteessa" -#: main.c:1581 +#: main.c:1596 #, c-format msgid "%s: option `-W %s' unrecognized, ignored\n" msgstr "%s: valitsin â€-W %s†on tunnistamaton, ohitetaan\n" -#: main.c:1634 +#: main.c:1649 #, c-format msgid "%s: option requires an argument -- %c\n" msgstr "%s: valitsin vaatii argumentin -- %c\n" -#: mpfr.c:557 +#: mpfr.c:559 #, c-format msgid "PREC value `%.*s' is invalid" msgstr "PREC-arvo â€%.*s†on virheellinen" -#: mpfr.c:615 +#: mpfr.c:617 #, c-format msgid "RNDMODE value `%.*s' is invalid" msgstr "RNDMODE-arvo â€%.*s†on virheellinen" -#: mpfr.c:711 +#: mpfr.c:714 #, c-format msgid "%s: received non-numeric argument" msgstr "%s: vastaanotettu argumentti ei ole numeerinen" -#: mpfr.c:820 +#: mpfr.c:824 msgid "compl(%Rg): negative value will give strange results" msgstr "compl(%Rg): negatiivinen arvo antaa outoja tuloksia" -#: mpfr.c:824 +#: mpfr.c:828 msgid "comp(%Rg): fractional value will be truncated" msgstr "compl(%Rg): jaosarvo typistetään" -#: mpfr.c:836 +#: mpfr.c:840 #, c-format msgid "cmpl(%Zd): negative values will give strange results" msgstr "compl(%Zd): negatiiviset arvot antavat outoja tuloksia" -#: mpfr.c:855 +#: mpfr.c:859 #, c-format msgid "%s: received non-numeric argument #%d" msgstr "%s: vastaanotettu argumentti #%d ei ole numeerinen" -#: mpfr.c:865 +#: mpfr.c:869 msgid "%s: argument #%d has invalid value %Rg, using 0" msgstr "%s: argumentilla #%d on virheellinen arvo %Rg, käytetään 0" -#: mpfr.c:877 +#: mpfr.c:881 msgid "%s: argument #%d negative value %Rg will give strange results" msgstr "%s: argumentin #%d negatiivinen arvo %Rg antaa outoja tuloksia" -#: mpfr.c:883 +#: mpfr.c:887 msgid "%s: argument #%d fractional value %Rg will be truncated" msgstr "%s: argumentin #%d jaosarvo %Rg typistetään" -#: mpfr.c:898 +#: mpfr.c:902 #, c-format msgid "%s: argument #%d negative value %Zd will give strange results" msgstr "%s: argumentin #%d negatiivinen arvo %Zd antaa outoja tuloksia" @@ -3375,24 +3402,24 @@ msgstr "%s: argumentin #%d negatiivinen arvo %Zd antaa outoja tuloksia" msgid "cmd. line:" msgstr "komentorivi:" -#: node.c:418 +#: node.c:434 msgid "backslash at end of string" msgstr "kenoviiva merkkijonon lopussa" -#: node.c:497 +#: node.c:513 #, c-format msgid "old awk does not support the `\\%c' escape sequence" msgstr "vanha awk ei tue â€\\%câ€-koodinvaihtosekvenssiä" -#: node.c:548 +#: node.c:564 msgid "POSIX does not allow `\\x' escapes" msgstr "POSIX ei salli â€\\xâ€-koodinvaihtoja" -#: node.c:554 +#: node.c:570 msgid "no hex digits in `\\x' escape sequence" msgstr "ei heksadesimaalilukuja â€\\xâ€-koodinvaihtosekvenssissä" -#: node.c:576 +#: node.c:592 #, c-format msgid "" "hex escape \\x%.*s of %d characters probably not interpreted the way you " @@ -3401,12 +3428,12 @@ msgstr "" "heksadesimaalikoodinvaihtomerkkejä \\x%.*s / %d ei ole luultavasti tulkittu " "sillä tavalla kuin odotat" -#: node.c:591 +#: node.c:607 #, c-format msgid "escape sequence `\\%c' treated as plain `%c'" msgstr "koodinvaihtosekvenssi â€\\%c†käsitelty kuin pelkkä â€%câ€" -#: node.c:735 +#: node.c:744 msgid "" "Invalid multibyte data detected. There may be a mismatch between your data " "and your locale." @@ -3425,16 +3452,16 @@ msgid "%s %s `%s': could not set close-on-exec: (fcntl F_SETFD: %s)" msgstr "" "%s %s â€%sâ€: close-on-exec -asettaminen epäonnistui: (fcntl F_SETFD: %s)" -#: profile.c:91 +#: profile.c:94 #, c-format msgid "could not open `%s' for writing: %s" msgstr "tiedoston â€%s†avaaminen kirjoittamista varten epäonnistui: %s" -#: profile.c:93 +#: profile.c:96 msgid "sending profile to standard error" msgstr "lähetetään profiili vakiovirheeseen" -#: profile.c:213 +#: profile.c:216 #, c-format msgid "" "\t# %s rule(s)\n" @@ -3443,7 +3470,7 @@ msgstr "" "\t# %s säännöt\n" "\n" -#: profile.c:218 +#: profile.c:221 #, c-format msgid "" "\t# Rule(s)\n" @@ -3452,16 +3479,16 @@ msgstr "" "\t# Säännöt\n" "\n" -#: profile.c:292 +#: profile.c:295 #, c-format msgid "internal error: %s with null vname" msgstr "sisäinen virhe: %s null vname-arvolla" -#: profile.c:558 +#: profile.c:561 msgid "internal error: builtin with null fname" msgstr "sisäinen virhe: builtin null-funktionimellä" -#: profile.c:978 +#: profile.c:1006 #, c-format msgid "" "\t# Loaded extensions (-l and/or @load)\n" @@ -3470,12 +3497,12 @@ msgstr "" "\t# Ladatut laajennukset (-l ja/tai @load)\n" "\n" -#: profile.c:1001 +#: profile.c:1029 #, c-format msgid "\t# gawk profile, created %s\n" msgstr "\t# gawk-profiili, luotu %s\n" -#: profile.c:1555 +#: profile.c:1600 #, c-format msgid "" "\n" @@ -3484,98 +3511,104 @@ msgstr "" "\n" "\t# Funktiot, luetteloitu aakkosjärjestyksessä\n" -#: profile.c:1593 +#: profile.c:1638 #, c-format msgid "redir2str: unknown redirection type %d" msgstr "redir2str: tuntematon edelleenohjaustyyppi %d" -#: re.c:607 +#: re.c:610 #, c-format msgid "regexp component `%.*s' should probably be `[%.*s]'" msgstr "" "säännöllisen lausekkeen komponentin â€%.*s†pitäisi luultavasti olla â€[%.*s]â€" -#: regcomp.c:139 +#: regcomp.c:143 msgid "Success" msgstr "Onnistui" -#: regcomp.c:142 +#: regcomp.c:146 msgid "No match" msgstr "Ei täsmäystä" -#: regcomp.c:145 +#: regcomp.c:149 msgid "Invalid regular expression" msgstr "Virheellinen säännöllinen lauseke" -#: regcomp.c:148 +#: regcomp.c:152 msgid "Invalid collation character" msgstr "Virheellinen vertailumerkki" -#: regcomp.c:151 +#: regcomp.c:155 msgid "Invalid character class name" msgstr "Virheellinen merkkiluokkanimi" -#: regcomp.c:154 +#: regcomp.c:158 msgid "Trailing backslash" msgstr "Jäljessä oleva kenoviiva" -#: regcomp.c:157 +#: regcomp.c:161 msgid "Invalid back reference" msgstr "Virheellinen paluuviite" -#: regcomp.c:160 +#: regcomp.c:164 msgid "Unmatched [, [^, [:, [., or [=" msgstr "Pariton [, [^, [:, [., or [=" -#: regcomp.c:163 +#: regcomp.c:167 msgid "Unmatched ( or \\(" msgstr "Pariton ( tai \\(" -#: regcomp.c:166 +#: regcomp.c:170 msgid "Unmatched \\{" msgstr "Pariton \\{" -#: regcomp.c:169 +#: regcomp.c:173 msgid "Invalid content of \\{\\}" msgstr "Virheellinen \\{\\}-sisältö" -#: regcomp.c:172 +#: regcomp.c:176 msgid "Invalid range end" msgstr "Virheellinen lukualueen loppu" -#: regcomp.c:175 +#: regcomp.c:179 msgid "Memory exhausted" msgstr "Muisti loppui" -#: regcomp.c:178 +#: regcomp.c:182 msgid "Invalid preceding regular expression" msgstr "Virheellinen edeltävä säännöllinen lauseke" -#: regcomp.c:181 +#: regcomp.c:185 msgid "Premature end of regular expression" msgstr "Ennenaikainen säännöllisen lausekkeen loppu" -#: regcomp.c:184 +#: regcomp.c:188 msgid "Regular expression too big" msgstr "Säännöllinen lauseke on liian iso" -#: regcomp.c:187 +#: regcomp.c:191 msgid "Unmatched ) or \\)" msgstr "Pariton ) tai \\)" -#: regcomp.c:712 +#: regcomp.c:701 msgid "No previous regular expression" msgstr "Ei edellistä säännöllistä lauseketta" -#: symbol.c:678 +#: symbol.c:684 #, c-format msgid "function `%s': can't use function `%s' as a parameter name" msgstr "funktio â€%sâ€: funktion â€%s†käyttö parametrinimenä epäonnistui" -#: symbol.c:810 +#: symbol.c:816 msgid "can not pop main context" msgstr "pääsisällön pop-toiminto epäonnistui" +#~ msgid "function `%s' defined to take no more than %d argument(s)" +#~ msgstr "funktio â€%s†on määritelty ottamaan enemmän kuin %d argumenttia" + +#~ msgid "function `%s': missing argument #%d" +#~ msgstr "function â€%sâ€: puuttuva argumentti #%d" + #~ msgid "`getline var' invalid inside `%s' rule" #~ msgstr "â€getline var†virheellinen säännön â€%s†sisällä" diff --git a/po/fr.po b/po/fr.po index 939f2a3..d590be4 100644 --- a/po/fr.po +++ b/po/fr.po @@ -7,10 +7,10 @@ # msgid "" msgstr "" -"Project-Id-Version: gawk 4.1.1d\n" +"Project-Id-Version: gawk 4.1.3h\n" "Report-Msgid-Bugs-To: bug-gawk@gnu.org\n" -"POT-Creation-Date: 2015-05-19 16:06+0300\n" -"PO-Revision-Date: 2015-04-16 22:57+0200\n" +"POT-Creation-Date: 2016-08-25 06:19+0300\n" +"PO-Revision-Date: 2016-07-07 22:08+0200\n" "Last-Translator: Jean-Philippe Guérard \n" "Language-Team: French \n" @@ -20,84 +20,84 @@ msgstr "" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=2; plural=(n > 1);\n" -#: array.c:256 +#: array.c:259 #, c-format msgid "from %s" msgstr "de %s" -#: array.c:357 +#: array.c:360 msgid "attempt to use a scalar value as array" msgstr "tentative d'utiliser un scalaire comme tableau" -#: array.c:359 +#: array.c:362 #, c-format msgid "attempt to use scalar parameter `%s' as an array" msgstr "tentative d'utiliser le paramètre scalaire « %s » comme tableau" -#: array.c:362 +#: array.c:365 #, c-format msgid "attempt to use scalar `%s' as an array" msgstr "tentative d'utiliser le scalaire « %s » comme tableau" -#: array.c:409 array.c:576 builtin.c:85 builtin.c:1606 builtin.c:1652 -#: builtin.c:1665 builtin.c:2112 builtin.c:2126 eval.c:1149 eval.c:1153 -#: eval.c:1564 +#: array.c:412 array.c:579 builtin.c:85 builtin.c:1612 builtin.c:1658 +#: builtin.c:1671 builtin.c:2160 builtin.c:2179 eval.c:1141 eval.c:1145 +#: eval.c:1556 #, c-format msgid "attempt to use array `%s' in a scalar context" msgstr "tentative d'utilisation du tableau « %s » dans un contexte scalaire" -#: array.c:583 +#: array.c:586 #, c-format msgid "delete: index `%s' not in array `%s'" msgstr "delete : l'indice « %s » est absent du tableau « %s »" -#: array.c:597 +#: array.c:600 #, c-format msgid "attempt to use scalar `%s[\"%.*s\"]' as an array" msgstr "tentative d'utiliser le scalaire « %s[\"%.*s\"] » comme tableau" -#: array.c:776 +#: array.c:779 msgid "adump: first argument not an array" msgstr "adump : le 1er argument n'est pas un tableau" -#: array.c:815 +#: array.c:818 msgid "asort: second argument not an array" msgstr "asort : le 2e argument n'est pas un tableau" -#: array.c:816 +#: array.c:819 msgid "asorti: second argument not an array" msgstr "asorti : le 2e argument n'est pas un tableau" -#: array.c:823 +#: array.c:826 msgid "asort: first argument not an array" msgstr "asort : le 1er argument n'est pas un tableau" -#: array.c:824 +#: array.c:827 msgid "asorti: first argument not an array" msgstr "asorti : le 1er argument n'est pas un tableau" -#: array.c:831 +#: array.c:834 msgid "asort: cannot use a subarray of first arg for second arg" msgstr "asort : le 2e argument ne doit pas être un sous-tableau du 1er" -#: array.c:832 +#: array.c:835 msgid "asorti: cannot use a subarray of first arg for second arg" msgstr "asorti : le 2e argument ne doit pas être un sous-tableau du 1er" -#: array.c:837 +#: array.c:840 msgid "asort: cannot use a subarray of second arg for first arg" msgstr "asort : le 1er argument ne doit pas être un sous-tableau du 2e" -#: array.c:838 +#: array.c:841 msgid "asorti: cannot use a subarray of second arg for first arg" msgstr "asorti : le 1er argument ne doit pas être un sous-tableau du 2e" -#: array.c:1313 +#: array.c:1316 #, c-format msgid "`%s' is invalid as a function name" msgstr "« %s » n'est pas un nom de fonction valide" -#: array.c:1317 +#: array.c:1320 #, c-format msgid "sort comparison function `%s' is not defined" msgstr "la fonction de comparaison « %s » du tri n'est pas définie" @@ -138,11 +138,11 @@ msgstr "le corps du switch comporte des cas répétés : %s" msgid "duplicate `default' detected in switch body" msgstr "plusieurs « default » ont été détectés dans le corps du switch" -#: awkgram.y:793 awkgram.y:3763 +#: awkgram.y:793 awkgram.y:3774 msgid "`break' is not allowed outside a loop or switch" msgstr "« break » est interdit en dehors d'une boucle ou d'un switch" -#: awkgram.y:802 awkgram.y:3755 +#: awkgram.y:802 awkgram.y:3766 msgid "`continue' is not allowed outside a loop" msgstr "« continue » est interdit en dehors d'une boucle ou d'un switch" @@ -235,7 +235,7 @@ msgstr "tentative d'appel de « %s » comme fonction" msgid "invalid subscript expression" msgstr "expression indice incorrecte" -#: awkgram.y:2047 awkgram.y:2067 gawkapi.c:206 gawkapi.c:224 msg.c:126 +#: awkgram.y:2047 awkgram.y:2067 gawkapi.c:206 gawkapi.c:223 msg.c:126 msgid "warning: " msgstr "avertissement : " @@ -243,274 +243,278 @@ msgstr "avertissement : " msgid "fatal: " msgstr "fatal : " -#: awkgram.y:2115 +#: awkgram.y:2116 msgid "unexpected newline or end of string" msgstr "fin de chaîne ou passage à la ligne inattendu" -#: awkgram.y:2394 awkgram.y:2470 awkgram.y:2693 debug.c:523 debug.c:539 -#: debug.c:2812 debug.c:5055 +#: awkgram.y:2397 awkgram.y:2473 awkgram.y:2696 debug.c:523 debug.c:539 +#: debug.c:2812 debug.c:5101 #, c-format msgid "can't open source file `%s' for reading (%s)" msgstr "impossible d'ouvrir le fichier source « %s » en lecture (%s)" -#: awkgram.y:2395 awkgram.y:2520 +#: awkgram.y:2398 awkgram.y:2523 #, c-format msgid "can't open shared library `%s' for reading (%s)" msgstr "impossible d'ouvrir la bibliothèque partagée « %s » en lecture (%s)" -#: awkgram.y:2397 awkgram.y:2471 awkgram.y:2521 builtin.c:135 debug.c:5206 +#: awkgram.y:2400 awkgram.y:2474 awkgram.y:2524 builtin.c:135 debug.c:5252 msgid "reason unknown" msgstr "raison inconnue" -#: awkgram.y:2406 awkgram.y:2430 +#: awkgram.y:2409 awkgram.y:2433 #, c-format msgid "can't include `%s' and use it as a program file" msgstr "impossible d'inclure « %s » et de l'utiliser comme extension" -#: awkgram.y:2419 +#: awkgram.y:2422 #, c-format msgid "already included source file `%s'" msgstr "le fichier source « %s » a déjà été intégré" -#: awkgram.y:2420 +#: awkgram.y:2423 #, c-format msgid "already loaded shared library `%s'" msgstr "la bibliothèque partagée « %s » est déjà chargée" -#: awkgram.y:2455 +#: awkgram.y:2458 msgid "@include is a gawk extension" msgstr "@include est une extension gawk" -#: awkgram.y:2461 +#: awkgram.y:2464 msgid "empty filename after @include" msgstr "Le nom de fichier après @include est vide" -#: awkgram.y:2505 +#: awkgram.y:2508 msgid "@load is a gawk extension" msgstr "@load est une extension gawk" -#: awkgram.y:2511 +#: awkgram.y:2514 msgid "empty filename after @load" msgstr "Le nom de fichier après @load est vide" -#: awkgram.y:2645 +#: awkgram.y:2648 msgid "empty program text on command line" msgstr "le programme indiqué en ligne de commande est vide" -#: awkgram.y:2760 +#: awkgram.y:2763 #, c-format msgid "can't read sourcefile `%s' (%s)" msgstr "impossible de lire le fichier source « %s » (%s)" -#: awkgram.y:2771 +#: awkgram.y:2774 #, c-format msgid "source file `%s' is empty" msgstr "le fichier source « %s » est vide" -#: awkgram.y:2830 +#: awkgram.y:2833 #, c-format msgid "PEBKAC error: invalid character '\\%03o' in source code" msgstr "erreur bête : caractère incorrect « \\%03o » dans le code source" -#: awkgram.y:2961 +#: awkgram.y:2964 msgid "source file does not end in newline" msgstr "le fichier source ne se termine pas par un passage à la ligne" -#: awkgram.y:3074 +#: awkgram.y:3081 msgid "unterminated regexp ends with `\\' at end of file" msgstr "" "expression rationnelle non refermée terminée par un « \\ » en fin de fichier" -#: awkgram.y:3101 +#: awkgram.y:3108 #, c-format msgid "%s: %d: tawk regex modifier `/.../%c' doesn't work in gawk" msgstr "" "%s : %d : le modificateur d'expressions rationnelles « /.../%c » de tawk ne " "marche pas dans gawk" -#: awkgram.y:3105 +#: awkgram.y:3112 #, c-format msgid "tawk regex modifier `/.../%c' doesn't work in gawk" msgstr "" "le modificateur d'expressions rationnelles « /.../%c » de tawk ne marche pas " "dans gawk" -#: awkgram.y:3112 +#: awkgram.y:3119 msgid "unterminated regexp" msgstr "expression rationnelle non refermée" -#: awkgram.y:3116 +#: awkgram.y:3123 msgid "unterminated regexp at end of file" msgstr "expression rationnelle non refermée en fin de fichier" -#: awkgram.y:3174 +#: awkgram.y:3181 msgid "use of `\\ #...' line continuation is not portable" msgstr "" "l'utilisation de « \\ #... » pour prolonger une ligne n'est pas portable" -#: awkgram.y:3190 +#: awkgram.y:3197 msgid "backslash not last character on line" msgstr "la barre oblique inverse n'est pas le dernier caractère de la ligne" -#: awkgram.y:3251 +#: awkgram.y:3235 awkgram.y:3237 +msgid "multidimensional arrays are a gawk extension" +msgstr "les tableaux multidimensionnels sont une extension gawk" + +#: awkgram.y:3262 msgid "POSIX does not allow operator `**='" msgstr "POSIX n'autorise pas l'opérateur « **= »" -#: awkgram.y:3253 +#: awkgram.y:3264 msgid "old awk does not support operator `**='" msgstr "l'ancien awk ne dispose pas de l'opérateur « **= »" -#: awkgram.y:3262 +#: awkgram.y:3273 msgid "POSIX does not allow operator `**'" msgstr "POSIX n'autorise pas l'opérateur « ** »" -#: awkgram.y:3264 +#: awkgram.y:3275 msgid "old awk does not support operator `**'" msgstr "l'ancien awk ne dispose pas de l'opérateur « ** »" -#: awkgram.y:3299 +#: awkgram.y:3310 msgid "operator `^=' is not supported in old awk" msgstr "l'ancien awk ne dispose pas de l'opérateur « ^= »" -#: awkgram.y:3307 +#: awkgram.y:3318 msgid "operator `^' is not supported in old awk" msgstr "l'ancien awk ne dispose pas de l'opérateur « ^ »" -#: awkgram.y:3404 awkgram.y:3422 command.y:1180 +#: awkgram.y:3415 awkgram.y:3433 command.y:1187 msgid "unterminated string" msgstr "chaîne non refermée" -#: awkgram.y:3643 +#: awkgram.y:3654 #, c-format msgid "invalid char '%c' in expression" msgstr "caractère incorrect « %c » dans l'expression" -#: awkgram.y:3690 +#: awkgram.y:3701 #, c-format msgid "`%s' is a gawk extension" msgstr "« %s » est une extension gawk" -#: awkgram.y:3695 +#: awkgram.y:3706 #, c-format msgid "POSIX does not allow `%s'" msgstr "POSIX n'autorise pas « %s »" -#: awkgram.y:3703 +#: awkgram.y:3714 #, c-format msgid "`%s' is not supported in old awk" msgstr "l'ancien awk ne dispose pas de « %s »" -#: awkgram.y:3793 +#: awkgram.y:3804 msgid "`goto' considered harmful!\n" msgstr "« goto est jugé dangereux ! » (Edsger W. Dijkstra)\n" -#: awkgram.y:3827 +#: awkgram.y:3873 #, c-format msgid "%d is invalid as number of arguments for %s" msgstr "%d n'est pas un nombre d'arguments valide de %s" -#: awkgram.y:3862 +#: awkgram.y:3908 #, c-format msgid "%s: string literal as last arg of substitute has no effect" msgstr "" "%s : une chaîne littérale en dernier argument d'une substitution est sans " "effet" -#: awkgram.y:3867 +#: awkgram.y:3913 #, c-format msgid "%s third parameter is not a changeable object" msgstr "le 3e paramètre de %s n'est pas un objet modifiable" -#: awkgram.y:3950 awkgram.y:3953 +#: awkgram.y:3996 awkgram.y:3999 msgid "match: third argument is a gawk extension" msgstr "match : le 3e argument est une extension gawk" -#: awkgram.y:4007 awkgram.y:4010 +#: awkgram.y:4053 awkgram.y:4056 msgid "close: second argument is a gawk extension" msgstr "close : le 2e argument est une extension gawk" -#: awkgram.y:4022 +#: awkgram.y:4068 msgid "use of dcgettext(_\"...\") is incorrect: remove leading underscore" msgstr "" "utilisation incorrecte de dcgettext(_\"...\") : enlevez le souligné de tête" -#: awkgram.y:4037 +#: awkgram.y:4083 msgid "use of dcngettext(_\"...\") is incorrect: remove leading underscore" msgstr "" "utilisation incorrecte de dcngettext(_\"...\") : enlevez le souligné de tête" -#: awkgram.y:4056 +#: awkgram.y:4102 msgid "index: regexp constant as second argument is not allowed" msgstr "" "index : le second argument ne peut être une expression rationnelle constante" -#: awkgram.y:4109 +#: awkgram.y:4155 #, c-format msgid "function `%s': parameter `%s' shadows global variable" msgstr "fonction « %s » : le paramètre « %s » masque la variable globale" -#: awkgram.y:4166 debug.c:4041 debug.c:4084 debug.c:5204 +#: awkgram.y:4214 debug.c:4087 debug.c:4130 debug.c:5250 #, c-format msgid "could not open `%s' for writing (%s)" msgstr "impossible d'ouvrir « %s » en écriture (%s)" -#: awkgram.y:4167 +#: awkgram.y:4215 msgid "sending variable list to standard error" msgstr "envoi de la liste des variables vers la sortie d'erreur standard" -#: awkgram.y:4175 +#: awkgram.y:4223 #, c-format msgid "%s: close failed (%s)" msgstr "%s : échec de la fermeture (%s)" -#: awkgram.y:4200 +#: awkgram.y:4248 msgid "shadow_funcs() called twice!" msgstr "shadows_funcs() a été appelé deux fois !" -#: awkgram.y:4208 +#: awkgram.y:4256 msgid "there were shadowed variables." msgstr "il y avait des variables masquées." -#: awkgram.y:4279 +#: awkgram.y:4327 #, c-format msgid "function name `%s' previously defined" msgstr "nom de fonction « %s » déjà défini" -#: awkgram.y:4325 +#: awkgram.y:4373 #, c-format msgid "function `%s': can't use function name as parameter name" msgstr "" "fonction « %s » : impossible d'utiliser un nom de fonction comme paramètre" -#: awkgram.y:4328 +#: awkgram.y:4376 #, c-format msgid "function `%s': can't use special variable `%s' as a function parameter" msgstr "" "fonction « %s » : impossible d'utiliser la variable spéciale « %s » comme " "paramètre d'une fonction" -#: awkgram.y:4336 +#: awkgram.y:4384 #, c-format msgid "function `%s': parameter #%d, `%s', duplicates parameter #%d" msgstr "" "fonction « %s » : paramètre #%d, « %s » est un doublon du paramètre #%d" -#: awkgram.y:4423 awkgram.y:4429 +#: awkgram.y:4471 awkgram.y:4477 #, c-format msgid "function `%s' called but never defined" msgstr "fonction « %s » appelée sans être définie" -#: awkgram.y:4433 +#: awkgram.y:4481 #, c-format msgid "function `%s' defined but never called directly" msgstr "fonction « %s » définie mais jamais appelée directement" -#: awkgram.y:4465 +#: awkgram.y:4513 #, c-format msgid "regexp constant for parameter #%d yields boolean value" msgstr "le paramètre #%d, une expr. rationnelle constante, fournit un booléen" -#: awkgram.y:4480 +#: awkgram.y:4528 #, c-format msgid "" "function `%s' called with space between name and `(',\n" @@ -519,24 +523,24 @@ msgstr "" "fonction « %s » appelée avec un espace entre son nom\n" "et « ( », ou utilisée comme variable ou tableau" -#: awkgram.y:4686 +#: awkgram.y:4734 msgid "division by zero attempted" msgstr "tentative de division par zéro" -#: awkgram.y:4695 +#: awkgram.y:4743 #, c-format msgid "division by zero attempted in `%%'" msgstr "tentative de division par zéro dans « %% »" # gawk 'BEGIN { $1++ = 1 }' -#: awkgram.y:5015 +#: awkgram.y:5064 msgid "" "cannot assign a value to the result of a field post-increment expression" msgstr "" "impossible d'assigner une valeur au résultat de la post-incrémentation d'un " "champ" -#: awkgram.y:5018 +#: awkgram.y:5067 #, c-format msgid "invalid target of assignment (opcode %s)" msgstr "cible de l'assignement incorrecte (opcode %s)" @@ -573,205 +577,217 @@ msgstr "" "fflush : vidage impossible : fichier « %s » ouvert en lecture, pas en " "écriture" -#: builtin.c:244 +#: builtin.c:241 +#, c-format +msgid "fflush: cannot flush: two-way pipe `%s' has closed write end" +msgstr "" +"fflush : vidage impossible : le tube bidirectionnel « %s » a fermé son côté " +"écriture" + +#: builtin.c:247 #, c-format msgid "fflush: `%s' is not an open file, pipe or co-process" msgstr "" "fflush : « %s » n'est ni un fichier ouvert, ni un tube, ni un co-processus" -#: builtin.c:351 +#: builtin.c:354 msgid "index: received non-string first argument" msgstr "index : le premier argument n'est pas une chaîne" -#: builtin.c:353 +#: builtin.c:356 msgid "index: received non-string second argument" msgstr "index : le second argument n'est pas une chaîne" -#: builtin.c:466 mpfr.c:777 +#: builtin.c:469 mpfr.c:781 msgid "int: received non-numeric argument" msgstr "int : l'argument n'est pas numérique" -#: builtin.c:503 +#: builtin.c:506 msgid "length: received array argument" msgstr "length : l'argument reçu est un tableau" -#: builtin.c:506 +#: builtin.c:509 msgid "`length(array)' is a gawk extension" msgstr "« length(tableau) » est une extension gawk" -#: builtin.c:525 +#: builtin.c:528 msgid "length: received non-string argument" msgstr "length : l'argument n'est pas une chaîne" -#: builtin.c:554 +#: builtin.c:557 msgid "log: received non-numeric argument" msgstr "log : l'argument n'est pas numérique" -#: builtin.c:557 +#: builtin.c:560 #, c-format msgid "log: received negative argument %g" msgstr "log : l'argument est négatif %g" -#: builtin.c:755 builtin.c:760 builtin.c:911 +#: builtin.c:758 builtin.c:763 builtin.c:914 msgid "fatal: must use `count$' on all formats or none" msgstr "" "fatal : « numéro$ » doit être utilisé pour toutes les formats ou pour aucun" -#: builtin.c:830 +#: builtin.c:833 #, c-format msgid "field width is ignored for `%%' specifier" msgstr "taille du champ de la spécification « %% » ignorée" -#: builtin.c:832 +#: builtin.c:835 #, c-format msgid "precision is ignored for `%%' specifier" msgstr "précision de la spécification « %% » ignorée" -#: builtin.c:834 +#: builtin.c:837 #, c-format msgid "field width and precision are ignored for `%%' specifier" msgstr "taille du champ et précision de la spécification « %% » ignorées" -#: builtin.c:885 +#: builtin.c:888 msgid "fatal: `$' is not permitted in awk formats" msgstr "fatal : « $ » n'est pas autorisé dans les formats awk" -#: builtin.c:894 +#: builtin.c:897 msgid "fatal: arg count with `$' must be > 0" msgstr "fatal : le numéro d'argument de « $ » doit être > 0" -#: builtin.c:898 +#: builtin.c:901 #, c-format msgid "fatal: arg count %ld greater than total number of supplied arguments" msgstr "" "fatal : le numéro d'argument %ld est > au nombre total d'arguments fournis" -#: builtin.c:902 +#: builtin.c:905 msgid "fatal: `$' not permitted after period in format" msgstr "fatal : dans un format, « $ » ne doit pas suivre un point" -#: builtin.c:921 +#: builtin.c:924 msgid "fatal: no `$' supplied for positional field width or precision" msgstr "" "fatal : aucun « $ » fourni pour la taille ou la précision du champ positionné" -#: builtin.c:991 +#: builtin.c:994 msgid "`l' is meaningless in awk formats; ignored" msgstr "« l » n'a aucun sens dans un format awk ; ignoré" -#: builtin.c:995 +#: builtin.c:998 msgid "fatal: `l' is not permitted in POSIX awk formats" msgstr "fatal : « l » est interdit dans un format awk POSIX" -#: builtin.c:1008 +#: builtin.c:1011 msgid "`L' is meaningless in awk formats; ignored" msgstr "« L » n'a aucun sens dans un format awk ; ignoré" -#: builtin.c:1012 +#: builtin.c:1015 msgid "fatal: `L' is not permitted in POSIX awk formats" msgstr "fatal : « L » est interdit dans un format awk POSIX" -#: builtin.c:1025 +#: builtin.c:1028 msgid "`h' is meaningless in awk formats; ignored" msgstr "« h » n'a aucun sens dans un format awk ; ignoré" -#: builtin.c:1029 +#: builtin.c:1032 msgid "fatal: `h' is not permitted in POSIX awk formats" msgstr "fatal : « h » est interdit dans un format awk POSIX" -#: builtin.c:1055 +#: builtin.c:1058 #, c-format msgid "[s]printf: value %g is too big for %%c format" msgstr "[s]printf : valeur %g trop grande pour le format « %%c »" -#: builtin.c:1068 +#: builtin.c:1071 #, c-format msgid "[s]printf: value %g is not a valid wide character" msgstr "[s]printf : %g n'est pas un caractère large valable" -#: builtin.c:1454 +#: builtin.c:1457 #, c-format msgid "[s]printf: value %g is out of range for `%%%c' format" msgstr "[s]printf : valeur %g hors limite pour le format « %%%c »" -#: builtin.c:1552 +#: builtin.c:1555 #, c-format msgid "ignoring unknown format specifier character `%c': no argument converted" msgstr "caractère de format inconnu « %c » ignoré : aucun argument converti" -#: builtin.c:1557 +#: builtin.c:1560 msgid "fatal: not enough arguments to satisfy format string" msgstr "fatal : pas assez d'arguments pour satisfaire la chaîne de formatage" -#: builtin.c:1559 +#: builtin.c:1562 msgid "^ ran out for this one" msgstr "^ à court pour celui-ci" -#: builtin.c:1566 +#: builtin.c:1569 msgid "[s]printf: format specifier does not have control letter" msgstr "[s]printf : spécification de format sans lettre de contrôle" -#: builtin.c:1569 +#: builtin.c:1572 msgid "too many arguments supplied for format string" msgstr "trop d'arguments pour la chaîne de formatage" -#: builtin.c:1625 +#: builtin.c:1631 msgid "sprintf: no arguments" msgstr "sprintf : aucun argument" -#: builtin.c:1648 builtin.c:1659 +#: builtin.c:1654 builtin.c:1665 msgid "printf: no arguments" msgstr "printf : aucun argument" -#: builtin.c:1702 +#: builtin.c:1676 +msgid "printf: attempt to write to closed write end of two-way pipe" +msgstr "" +"printf : tentative d'écriture vers un tube bidirectionnel fermé côté écriture" + +#: builtin.c:1713 msgid "sqrt: received non-numeric argument" msgstr "sqrt : l'argument n'est pas numérique" -#: builtin.c:1706 +#: builtin.c:1717 #, c-format msgid "sqrt: called with negative argument %g" msgstr "sqrt : appelé avec un argument négatif %g" -#: builtin.c:1737 +#: builtin.c:1748 #, c-format msgid "substr: length %g is not >= 1" msgstr "substr : la longueur %g n'est pas >= 1" -#: builtin.c:1739 +#: builtin.c:1750 #, c-format msgid "substr: length %g is not >= 0" msgstr "substr : la longueur %g n'est pas >= 0" -#: builtin.c:1753 +#: builtin.c:1764 #, c-format msgid "substr: non-integer length %g will be truncated" msgstr "substr : la longueur %g n'est pas entière, elle sera tronquée" -#: builtin.c:1758 +#: builtin.c:1769 #, c-format msgid "substr: length %g too big for string indexing, truncating to %g" msgstr "substr : la longueur %g est trop grande, tronquée à %g" -#: builtin.c:1770 +#: builtin.c:1781 #, c-format msgid "substr: start index %g is invalid, using 1" msgstr "substr : l'index de début %g n'est pas valide, utilisation de 1" -#: builtin.c:1775 +#: builtin.c:1786 #, c-format msgid "substr: non-integer start index %g will be truncated" msgstr "substr : l'index de début %g n'est pas un entier, il sera tronqué" -#: builtin.c:1798 +#: builtin.c:1809 msgid "substr: source string is zero length" msgstr "substr : la chaîne source est de longueur nulle" -#: builtin.c:1812 +#: builtin.c:1823 #, c-format msgid "substr: start index %g is past end of string" msgstr "substr : l'index de début %g est au-delà de la fin de la chaîne" -#: builtin.c:1820 +#: builtin.c:1831 #, c-format msgid "" "substr: length %g at start index %g exceeds length of first argument (%lu)" @@ -779,322 +795,327 @@ msgstr "" "substr : la longueur %g à partir de %g dépasse la fin du 1er argument (%lu)" # Exemple : gawk --lint 'BEGIN { PROCINFO["strftime"]=123 ; print strftime() }' -#: builtin.c:1892 +#: builtin.c:1903 msgid "strftime: format value in PROCINFO[\"strftime\"] has numeric type" msgstr "" "strftime : la valeur de formatage PROCINFO[\"strftime\"] est de type " "numérique" -#: builtin.c:1915 +#: builtin.c:1926 msgid "strftime: received non-numeric second argument" msgstr "strftime : le second argument n'est pas numérique" -#: builtin.c:1925 +#: builtin.c:1936 msgid "strftime: second argument less than 0 or too big for time_t" msgstr "strftime: second argument négatif ou trop grand pour time_t" -#: builtin.c:1932 +#: builtin.c:1943 msgid "strftime: second argument out of range for time_t" msgstr "strftime: second argument hors plage pour time_t" -#: builtin.c:1941 +#: builtin.c:1952 msgid "strftime: received non-string first argument" msgstr "strftim : le premier argument n'est pas une chaîne" -#: builtin.c:1948 +#: builtin.c:1959 msgid "strftime: received empty format string" msgstr "strftime : la chaîne de formatage est vide" -#: builtin.c:2017 +#: builtin.c:2028 msgid "mktime: received non-string argument" msgstr "mktime : l'argument n'est pas une chaîne" -#: builtin.c:2034 +#: builtin.c:2045 msgid "mktime: at least one of the values is out of the default range" msgstr "" "mktime : au moins l'une des valeurs est en dehors de la plage par défaut" -#: builtin.c:2069 +#: builtin.c:2081 msgid "'system' function not allowed in sandbox mode" msgstr "La fonction « system » est interdite en isolement (mode sandbox)" -#: builtin.c:2074 +#: builtin.c:2086 msgid "system: received non-string argument" msgstr "system : l'argument n'est pas une chaîne" -#: builtin.c:2194 +#: builtin.c:2165 builtin.c:2230 +msgid "print: attempt to write to closed write end of two-way pipe" +msgstr "" +"print : tentative d'écriture vers un tube bidirectionnel fermé côté écriture" + +#: builtin.c:2248 #, c-format msgid "reference to uninitialized field `$%d'" msgstr "référence à un champ non initialisé « $%d »" -#: builtin.c:2279 +#: builtin.c:2333 msgid "tolower: received non-string argument" msgstr "tolower : l'argument n'est pas une chaîne" -#: builtin.c:2310 +#: builtin.c:2364 msgid "toupper: received non-string argument" msgstr "toupper : l'argument n'est pas une chaîne" -#: builtin.c:2343 mpfr.c:679 +#: builtin.c:2397 mpfr.c:681 msgid "atan2: received non-numeric first argument" msgstr "atan2 : le premier argument n'est pas numérique" -#: builtin.c:2345 mpfr.c:681 +#: builtin.c:2399 mpfr.c:683 msgid "atan2: received non-numeric second argument" msgstr "atan2 : le second argument n'est pas numérique" -#: builtin.c:2364 +#: builtin.c:2418 msgid "sin: received non-numeric argument" msgstr "sin : l'argument n'est pas numérique" -#: builtin.c:2380 +#: builtin.c:2434 msgid "cos: received non-numeric argument" msgstr "cos : l'argument n'est pas numérique" -#: builtin.c:2433 mpfr.c:1176 +#: builtin.c:2487 mpfr.c:1180 msgid "srand: received non-numeric argument" msgstr "srand : l'argument n'est pas numérique" -#: builtin.c:2464 +#: builtin.c:2518 msgid "match: third argument is not an array" msgstr "match : le 3e argument n'est pas un tableau" -#: builtin.c:2725 +#: builtin.c:2779 #, c-format msgid "gensub: third argument `%.*s' treated as 1" msgstr "gensub : le 3e argument « %.*s » sera traité comme un 1" -#: builtin.c:2740 +#: builtin.c:2794 #, c-format msgid "gensub: third argument %g treated as 1" msgstr "gensub : le 3e argument %g sera traité comme un 1" -#: builtin.c:3038 +#: builtin.c:3096 #, c-format msgid "%s: can be called indirectly only with two arguments" msgstr "%s : un appel indirect nécessite deux arguments" -#: builtin.c:3128 +#: builtin.c:3186 #, c-format msgid "indirect call to %s requires at least two arguments" msgstr "un appel indirect à %s demande au moins 2 arguments" -#: builtin.c:3180 +#: builtin.c:3238 msgid "lshift: received non-numeric first argument" msgstr "lshift : le premier argument n'est pas numérique" -#: builtin.c:3182 +#: builtin.c:3240 msgid "lshift: received non-numeric second argument" msgstr "lshift : le second argument reçu n'est pas numérique" -#: builtin.c:3188 +#: builtin.c:3246 #, c-format msgid "lshift(%f, %f): negative values will give strange results" msgstr "" "lshift(%f, %f) : les valeurs négatives donnent des résultats inattendus" -#: builtin.c:3190 +#: builtin.c:3248 #, c-format msgid "lshift(%f, %f): fractional values will be truncated" msgstr "lshift(%f, %f) : les valeurs non entières seront tronquées" -#: builtin.c:3192 +#: builtin.c:3250 #, c-format msgid "lshift(%f, %f): too large shift value will give strange results" msgstr "lshift(%f, %f) : un décalage trop grand donne des résultats inattendus" -#: builtin.c:3217 +#: builtin.c:3275 msgid "rshift: received non-numeric first argument" msgstr "rshift : le premier argument n'est pas numérique" -#: builtin.c:3219 +#: builtin.c:3277 msgid "rshift: received non-numeric second argument" msgstr "rshift : le second argument reçu n'est pas numérique" -#: builtin.c:3225 +#: builtin.c:3283 #, c-format msgid "rshift(%f, %f): negative values will give strange results" msgstr "" "rshift(%f, %f) : les valeurs négatives donneront des résultats inattendus" -#: builtin.c:3227 +#: builtin.c:3285 #, c-format msgid "rshift(%f, %f): fractional values will be truncated" msgstr "rshift(%f, %f) : les valeurs non entières seront tronquées" -#: builtin.c:3229 +#: builtin.c:3287 #, c-format msgid "rshift(%f, %f): too large shift value will give strange results" msgstr "" "rshift(%f, %f) : un décalage trop grand donnera des résultats inattendus" -#: builtin.c:3254 mpfr.c:988 +#: builtin.c:3312 mpfr.c:992 msgid "and: called with less than two arguments" msgstr "and : appelé avec moins de 2 arguments" -#: builtin.c:3259 +#: builtin.c:3317 #, c-format msgid "and: argument %d is non-numeric" msgstr "and : l'argument %d n'est pas numérique" -#: builtin.c:3263 +#: builtin.c:3321 #, c-format msgid "and: argument %d negative value %g will give strange results" msgstr "" "and : l'argument %d est négatif (%g) ce qui aura des résultats inattendus" -#: builtin.c:3286 mpfr.c:1020 +#: builtin.c:3344 mpfr.c:1024 msgid "or: called with less than two arguments" msgstr "or : appelé avec moins de 2 arguments" -#: builtin.c:3291 +#: builtin.c:3349 #, c-format msgid "or: argument %d is non-numeric" msgstr "or : l'argument %d n'est pas numérique" -#: builtin.c:3295 +#: builtin.c:3353 #, c-format msgid "or: argument %d negative value %g will give strange results" msgstr "" "or : l'argument %d est négatif (%g) ce qui aura des résultats inattendus" -#: builtin.c:3317 mpfr.c:1051 +#: builtin.c:3375 mpfr.c:1055 msgid "xor: called with less than two arguments" msgstr "xor : appelé avec moins de 2 arguments" -#: builtin.c:3323 +#: builtin.c:3381 #, c-format msgid "xor: argument %d is non-numeric" msgstr "xor : l'argument %d n'est pas numérique" -#: builtin.c:3327 +#: builtin.c:3385 #, c-format msgid "xor: argument %d negative value %g will give strange results" msgstr "" "xor : l'argument %d est négatif (%g) ce qui aura des résultats inattendus" -#: builtin.c:3352 mpfr.c:807 +#: builtin.c:3410 mpfr.c:811 msgid "compl: received non-numeric argument" msgstr "compl : l'argument n'est pas numérique" -#: builtin.c:3358 +#: builtin.c:3416 #, c-format msgid "compl(%f): negative value will give strange results" msgstr "compl(%f) : les valeurs négatives donneront des résultats inattendus" -#: builtin.c:3360 +#: builtin.c:3418 #, c-format msgid "compl(%f): fractional value will be truncated" msgstr "compl(%f) : les valeurs non entières seront tronquées" -#: builtin.c:3529 +#: builtin.c:3588 #, c-format msgid "dcgettext: `%s' is not a valid locale category" msgstr "dcgettext : « %s » n'est pas dans un catégorie valide de la locale" -#: command.y:225 +#: command.y:226 #, c-format msgid "Type (g)awk statement(s). End with the command \"end\"\n" msgstr "Entrez des instructions (g)awk. Terminez avec « end »\n" -#: command.y:289 +#: command.y:290 #, c-format msgid "invalid frame number: %d" msgstr "numéro de trame incorrect : %d" -#: command.y:295 +#: command.y:296 #, c-format msgid "info: invalid option - \"%s\"" msgstr "info : option incorrecte - « %s »" -#: command.y:321 +#: command.y:322 #, c-format msgid "source \"%s\": already sourced." msgstr "import source « %s » : déjà intégré." -#: command.y:326 +#: command.y:327 #, c-format msgid "save \"%s\": command not permitted." msgstr "sauve « %s » : commande interdite." -#: command.y:339 +#: command.y:340 msgid "Can't use command `commands' for breakpoint/watchpoint commands" msgstr "" "Impossible d'utiliser « commands » pour des points d'arrêt ou de surveillance" -#: command.y:341 +#: command.y:342 msgid "no breakpoint/watchpoint has been set yet" msgstr "Aucun point d'arrêt ou de surveillance défini" -#: command.y:343 +#: command.y:344 msgid "invalid breakpoint/watchpoint number" msgstr "numéro de point d'arrêt ou de surveillance incorrect" -#: command.y:348 +#: command.y:349 #, c-format msgid "Type commands for when %s %d is hit, one per line.\n" msgstr "" "Entrez les commandes exécutées lors de l'appui de %s %d, une par ligne.\n" -#: command.y:350 +#: command.y:351 #, c-format msgid "End with the command \"end\"\n" msgstr "Terminez par la commande « end »\n" -#: command.y:357 +#: command.y:358 msgid "`end' valid only in command `commands' or `eval'" msgstr "« end » n'est valable que dans « commands » ou « eval »" -#: command.y:367 +#: command.y:368 msgid "`silent' valid only in command `commands'" msgstr "« silent » n'est valable que dans « commands »" -#: command.y:373 +#: command.y:374 #, c-format msgid "trace: invalid option - \"%s\"" msgstr "trace : option incorrecte - « %s »" -#: command.y:387 +#: command.y:388 msgid "condition: invalid breakpoint/watchpoint number" msgstr "condition : numéro de point d'arrêt ou de surveillance incorrect" -#: command.y:449 +#: command.y:450 msgid "argument not a string" msgstr "l'argument n'est pas une chaîne" -#: command.y:459 command.y:464 +#: command.y:460 command.y:465 #, c-format msgid "option: invalid parameter - \"%s\"" msgstr "option : paramètre incorrect - « %s »" -#: command.y:474 +#: command.y:475 #, c-format msgid "no such function - \"%s\"" msgstr "fonction inconnue - « %s »" -#: command.y:531 +#: command.y:532 #, c-format msgid "enable: invalid option - \"%s\"" msgstr "enable : option incorrecte - « %s »" -#: command.y:597 +#: command.y:598 #, c-format msgid "invalid range specification: %d - %d" msgstr "plage non valable : %d - %d" -#: command.y:659 +#: command.y:660 msgid "non-numeric value for field number" msgstr "numéro de champ non numérique" -#: command.y:680 command.y:687 +#: command.y:681 command.y:688 msgid "non-numeric value found, numeric expected" msgstr "valeur non numérique trouvée, nombre attendu" -#: command.y:712 command.y:718 +#: command.y:713 command.y:719 msgid "non-zero integer value" msgstr "valeur entière non nulle" -#: command.y:817 +#: command.y:818 msgid "" "backtrace [N] - print trace of all or N innermost (outermost if N < 0) " "frames." @@ -1102,17 +1123,17 @@ msgstr "" "backtrace [N] - affiche la trace de tout ou des N dernières trames (du début " "si N < 0)." -#: command.y:819 +#: command.y:820 msgid "" "break [[filename:]N|function] - set breakpoint at the specified location." msgstr "" "break [[fichier:]N|fonction] - définit un point d'arrêt à l'endroit indiqué." -#: command.y:821 +#: command.y:822 msgid "clear [[filename:]N|function] - delete breakpoints previously set." msgstr "clear [[fichier:]N|fonction] - détruit un point d'arrêt existant." -#: command.y:823 +#: command.y:824 msgid "" "commands [num] - starts a list of commands to be executed at a " "breakpoint(watchpoint) hit." @@ -1120,69 +1141,73 @@ msgstr "" "commands [no] - débute une liste de commande à lancer aux points d'arrêt ou " "de surveillance." -#: command.y:825 +#: command.y:826 msgid "condition num [expr] - set or clear breakpoint or watchpoint condition." msgstr "" "condition no [expr] - défini ou détruit une condition d'arrêt ou de " "surveillance." -#: command.y:827 +#: command.y:828 msgid "continue [COUNT] - continue program being debugged." msgstr "continue [NB] - continue le programme en cours." -#: command.y:829 +#: command.y:830 msgid "delete [breakpoints] [range] - delete specified breakpoints." msgstr "delete [points d'arrêt] [plage] - détruit les points d'arrêt indiqués." -#: command.y:831 +#: command.y:832 msgid "disable [breakpoints] [range] - disable specified breakpoints." msgstr "" "disable [points d'arrêt] [plage] - désactive les points d'arrêt indiqués." -#: command.y:833 +#: command.y:834 msgid "display [var] - print value of variable each time the program stops." msgstr "display [var] - affiche la valeur de la variable à chaque arrêt." -#: command.y:835 +#: command.y:836 msgid "down [N] - move N frames down the stack." msgstr "down [N] - descend de N trames dans la pile." -#: command.y:837 +#: command.y:838 msgid "dump [filename] - dump instructions to file or stdout." msgstr "" "dump [fichier] - vide les instructions vers la sortie standard ou un fichier." -#: command.y:839 +#: command.y:840 msgid "enable [once|del] [breakpoints] [range] - enable specified breakpoints." msgstr "" "enable [once|del] [points d'arrêt] [plage] - active les points d'arrêt." -#: command.y:841 +#: command.y:842 msgid "end - end a list of commands or awk statements." msgstr "end - termine une liste de commandes ou d'instructions awk." -#: command.y:843 +#: command.y:844 msgid "eval stmt|[p1, p2, ...] - evaluate awk statement(s)." msgstr "eval instructions|[p1, p2, ...] - évalue des instructions awk." -#: command.y:845 +#: command.y:846 +msgid "exit - (same as quit) exit debugger." +msgstr "exit - (identique à quit) sort du débogueur." + +#: command.y:848 msgid "finish - execute until selected stack frame returns." msgstr "finish - exécute jusqu'au retour de la trame sélectionnée de la pile." -#: command.y:847 +#: command.y:850 msgid "frame [N] - select and print stack frame number N." msgstr "frame [N] - sélectionne et affiche la trame N de la pile." -#: command.y:849 +#: command.y:852 msgid "help [command] - print list of commands or explanation of command." msgstr "" "help [commande] - affiche la liste des commandes ou explique la commande." -#: command.y:851 +#: command.y:854 msgid "ignore N COUNT - set ignore-count of breakpoint number N to COUNT." msgstr "ignore N NB - ignore les NB prochaines occurrences du point d'arrêt N." -#: command.y:853 +#: command.y:856 msgid "" "info topic - source|sources|variables|functions|break|frame|args|locals|" "display|watch." @@ -1190,88 +1215,88 @@ msgstr "" "info sujet - source|sources|variables|functions|break|frame|args|locals|" "display|watch." -#: command.y:855 +#: command.y:858 msgid "list [-|+|[filename:]lineno|function|range] - list specified line(s)." msgstr "" "list [-|+|[fichier:]no_ligne|fonction|plage] - affiche les lignes indiquées." -#: command.y:857 +#: command.y:860 msgid "next [COUNT] - step program, proceeding through subroutine calls." msgstr "next [NB] - avance ligne par ligne, sans détailler les sous-routines." -#: command.y:859 +#: command.y:862 msgid "" "nexti [COUNT] - step one instruction, but proceed through subroutine calls." msgstr "" "nexti [NB] - avance d'une instruction, sans détailler les sous-routines." -#: command.y:861 +#: command.y:864 msgid "option [name[=value]] - set or display debugger option(s)." msgstr "option [nom[=valeur]] - affiche ou définit les options du débogueur." -#: command.y:863 +#: command.y:866 msgid "print var [var] - print value of a variable or array." msgstr "print var [var] - affiche la valeur d'une variable ou d'un tableau." -#: command.y:865 +#: command.y:868 msgid "printf format, [arg], ... - formatted output." msgstr "printf format, [arg], ... - sortie formatée." -#: command.y:867 +#: command.y:870 msgid "quit - exit debugger." msgstr "quit - sort du débogueur." -#: command.y:869 +#: command.y:872 msgid "return [value] - make selected stack frame return to its caller." msgstr "return [valeur] - fait revenir à son appelant la trame sélecionnée." -#: command.y:871 +#: command.y:874 msgid "run - start or restart executing program." msgstr "run - démarre et redémarre l'exécution du programme." -#: command.y:874 +#: command.y:877 msgid "save filename - save commands from the session to file." msgstr "" "save fichier - enregistre les commandes de la sessions dans un fichier." -#: command.y:877 +#: command.y:880 msgid "set var = value - assign value to a scalar variable." msgstr "set var = valeur - assigne une valeur à une variable scalaire." -#: command.y:879 +#: command.y:882 msgid "" "silent - suspends usual message when stopped at a breakpoint/watchpoint." msgstr "" "silent - suspend les messages habituels lors des points d'arrêt et de " "surveillance." -#: command.y:881 +#: command.y:884 msgid "source file - execute commands from file." msgstr "source fichier - exécute les commandes du fichier." -#: command.y:883 +#: command.y:886 msgid "step [COUNT] - step program until it reaches a different source line." msgstr "step [NB] - avance jusqu'à une ligne différente du code source." -#: command.y:885 +#: command.y:888 msgid "stepi [COUNT] - step one instruction exactly." msgstr "stepi [NB] - avance d'une instruction exactement." -#: command.y:887 +#: command.y:890 msgid "tbreak [[filename:]N|function] - set a temporary breakpoint." msgstr "tbreak [[fichier:]N|fonction] - définit un point d'arrêt temporaire." -#: command.y:889 +#: command.y:892 msgid "trace on|off - print instruction before executing." msgstr "trace on|off - affiche les instructions avant de les exécuter." -#: command.y:891 +#: command.y:894 msgid "undisplay [N] - remove variable(s) from automatic display list." msgstr "" "undisplay [N] - retire la ou les variables de la liste d'affichage " "automatique." -#: command.y:893 +#: command.y:896 msgid "" "until [[filename:]N|function] - execute until program reaches a different " "line or line N within current frame." @@ -1279,19 +1304,19 @@ msgstr "" "until [[fichier:]N|fonction] - exécution jusqu'à dépasser la ligne courant " "ou la ligne N, dans la trame actuelle." -#: command.y:895 +#: command.y:898 msgid "unwatch [N] - remove variable(s) from watch list." msgstr "unwatch [N] - enlève la ou les variables de la liste de surveillance." -#: command.y:897 +#: command.y:900 msgid "up [N] - move N frames up the stack." msgstr "up [N] - remonte de N trames dans la pile." -#: command.y:899 +#: command.y:902 msgid "watch var - set a watchpoint for a variable." msgstr "watch var - définit un point de surveillance pour une variable." -#: command.y:901 +#: command.y:904 msgid "" "where [N] - (same as backtrace) print trace of all or N innermost (outermost " "if N < 0) frames." @@ -1299,40 +1324,40 @@ msgstr "" "where [N] - (identique à backtrace) affiche la trace de tout ou des N " "dernières trames (du début si N < 0)." -#: command.y:1013 debug.c:401 msg.c:135 +#: command.y:1016 debug.c:401 msg.c:135 #, c-format msgid "error: " msgstr "erreur : " -#: command.y:1053 +#: command.y:1060 #, c-format msgid "can't read command (%s)\n" msgstr "impossible de lire la commande (%s)\n" -#: command.y:1067 +#: command.y:1074 #, c-format msgid "can't read command (%s)" msgstr "impossible de lire la commande (%s)" -#: command.y:1118 +#: command.y:1125 msgid "invalid character in command" msgstr "la commande contient un caractère incorrect" -#: command.y:1154 +#: command.y:1161 #, c-format msgid "unknown command - \"%.*s\", try help" msgstr "commande inconnue - « %.*s », essayez « help »" -#: command.y:1224 +#: command.y:1231 #, c-format msgid "%s" msgstr "%s" -#: command.y:1286 +#: command.y:1293 msgid "invalid character" msgstr "Caractère incorrect" -#: command.y:1457 +#: command.y:1497 #, c-format msgid "undefined command: %s\n" msgstr "commande inconnue : %s\n" @@ -1543,17 +1568,17 @@ msgstr "[\"%s\"] n'est pas dans le tableau « %s »\n" msgid "`%s[\"%s\"]' is not an array\n" msgstr "« %s[\"%s\"] » n'est pas un tableau\n" -#: debug.c:1236 debug.c:4964 +#: debug.c:1236 debug.c:5010 #, c-format msgid "`%s' is not a scalar variable" msgstr "« %s » n'est pas une variable scalaire" -#: debug.c:1258 debug.c:4994 +#: debug.c:1258 debug.c:5040 #, c-format msgid "attempt to use array `%s[\"%s\"]' in a scalar context" msgstr "tentative d'utilisation du tableau « %s[\"%s\"] » en contexte scalaire" -#: debug.c:1280 debug.c:5005 +#: debug.c:1280 debug.c:5051 #, c-format msgid "attempt to use scalar `%s[\"%s\"]' as array" msgstr "tentative d'utiliser le scalaire « %s[\"%s\"] » comme tableau" @@ -1833,99 +1858,99 @@ msgstr "« finish » n'a pas de sens avec un saut non local « %s »\n" msgid "'until' not meaningful with non-local jump '%s'\n" msgstr "« until » n'a pas de sens avec un saut non local « %s »\n" -#: debug.c:4185 +#: debug.c:4231 msgid "\t------[Enter] to continue or q [Enter] to quit------" msgstr "\t---« [Entrée] » continuer ; « q [Entrée] » quitter---" -#: debug.c:4186 +#: debug.c:4232 msgid "q" msgstr "q" -#: debug.c:5001 +#: debug.c:5047 #, c-format msgid "[\"%s\"] not in array `%s'" msgstr "[\"%s\"] est absent du tableau « %s »" -#: debug.c:5207 +#: debug.c:5253 #, c-format msgid "sending output to stdout\n" msgstr "envoi de la sortie vers stdout\n" -#: debug.c:5247 +#: debug.c:5293 msgid "invalid number" msgstr "nombre incorrect" -#: debug.c:5381 +#: debug.c:5427 #, c-format msgid "`%s' not allowed in current context; statement ignored" msgstr "« %s » interdit dans ce contexte ; instruction ignorée" -#: debug.c:5389 +#: debug.c:5435 msgid "`return' not allowed in current context; statement ignored" msgstr "« return » interdit dans ce contexte ; instruction ignorée" -#: debug.c:5604 +#: debug.c:5650 #, c-format msgid "No symbol `%s' in current context" msgstr "Pas de symbole « %s » dans le contexte actuel" -#: dfa.c:1062 dfa.c:1065 dfa.c:1084 dfa.c:1094 dfa.c:1106 dfa.c:1142 -#: dfa.c:1151 dfa.c:1154 dfa.c:1159 dfa.c:1173 dfa.c:1221 +#: dfa.c:1090 dfa.c:1093 dfa.c:1112 dfa.c:1122 dfa.c:1135 dfa.c:1163 dfa.c:1172 +#: dfa.c:1175 dfa.c:1180 dfa.c:1202 dfa.c:1205 msgid "unbalanced [" msgstr "[ non apparié" -#: dfa.c:1118 +#: dfa.c:1148 msgid "invalid character class" msgstr "classe de caractères incorrecte" -#: dfa.c:1264 +#: dfa.c:1271 msgid "character class syntax is [[:space:]], not [:space:]" msgstr "la syntaxe des classes de caractères est [[:space:]], et non [:space:]" -#: dfa.c:1326 +#: dfa.c:1332 msgid "unfinished \\ escape" msgstr "échappement \\ non terminé" -#: dfa.c:1473 +#: dfa.c:1499 msgid "invalid content of \\{\\}" msgstr "contenu de \\{\\} incorrect" -#: dfa.c:1476 +#: dfa.c:1502 msgid "regular expression too big" msgstr "expression rationnelle trop grande" -#: dfa.c:1911 +#: dfa.c:1916 msgid "unbalanced (" msgstr "( non apparié" -#: dfa.c:2037 +#: dfa.c:2044 msgid "no syntax specified" msgstr "aucune syntaxe indiquée" -#: dfa.c:2045 +#: dfa.c:2052 msgid "unbalanced )" msgstr ") non apparié" -#: eval.c:396 +#: eval.c:398 #, c-format msgid "unknown nodetype %d" msgstr "type de nÅ“ud %d inconnu" -#: eval.c:407 eval.c:421 +#: eval.c:409 eval.c:423 #, c-format msgid "unknown opcode %d" msgstr "code opération %d inconnu" -#: eval.c:418 +#: eval.c:420 #, c-format msgid "opcode %s not an operator or keyword" msgstr "le code opération %s n'est pas un opérateur ou un mot-clef" -#: eval.c:474 +#: eval.c:476 msgid "buffer overflow in genflags2str" msgstr "débordement de tampon dans genflag2str" -#: eval.c:676 +#: eval.c:678 #, c-format msgid "" "\n" @@ -1936,93 +1961,93 @@ msgstr "" "\t# Pile des appels de fonctions :\n" "\n" -#: eval.c:705 +#: eval.c:707 msgid "`IGNORECASE' is a gawk extension" msgstr "« IGNORECASE » est une extension gawk" -#: eval.c:737 +#: eval.c:739 msgid "`BINMODE' is a gawk extension" msgstr "« BINMODE » est une extension gawk" -#: eval.c:795 +#: eval.c:797 #, c-format msgid "BINMODE value `%s' is invalid, treated as 3" msgstr "la valeur « %s » de BINMODE n'est pas valide, 3 utilisé à la place" -#: eval.c:912 +#: eval.c:914 #, c-format msgid "bad `%sFMT' specification `%s'" msgstr "spécification de « %sFMT » erronée « %s »" -#: eval.c:996 +#: eval.c:988 msgid "turning off `--lint' due to assignment to `LINT'" msgstr "désactivation de « --lint » en raison d'une affectation à « LINT »" -#: eval.c:1174 +#: eval.c:1166 #, c-format msgid "reference to uninitialized argument `%s'" msgstr "référence à un argument non initialisé « %s »" -#: eval.c:1175 +#: eval.c:1167 #, c-format msgid "reference to uninitialized variable `%s'" msgstr "référence à une variable non initialisée « %s »" -#: eval.c:1193 +#: eval.c:1185 msgid "attempt to field reference from non-numeric value" msgstr "tentative de référence à un champ via une valeur non numérique" -#: eval.c:1195 +#: eval.c:1187 msgid "attempt to field reference from null string" msgstr "tentative de référence à un champ via une chaîne nulle" -#: eval.c:1203 +#: eval.c:1195 #, c-format msgid "attempt to access field %ld" msgstr "tentative d'accès au champ %ld" -#: eval.c:1212 +#: eval.c:1204 #, c-format msgid "reference to uninitialized field `$%ld'" msgstr "référence à un champ non initialisé « $%ld »" -#: eval.c:1299 +#: eval.c:1291 #, c-format msgid "function `%s' called with more arguments than declared" msgstr "la fonction « %s » a été appelée avec trop d'arguments" -#: eval.c:1506 +#: eval.c:1498 #, c-format msgid "unwind_stack: unexpected type `%s'" msgstr "unwind_stack: type « %s » inattendu" -#: eval.c:1602 +#: eval.c:1594 msgid "division by zero attempted in `/='" msgstr "tentative de division par zéro dans « /= »" -#: eval.c:1609 +#: eval.c:1601 #, c-format msgid "division by zero attempted in `%%='" msgstr "tentative de division par zéro dans « %%= »" -#: ext.c:65 ext.c:147 +#: ext.c:66 ext.c:148 msgid "extensions are not allowed in sandbox mode" msgstr "les extensions sont interdites en isolement (mode sandbox)" -#: ext.c:68 +#: ext.c:69 msgid "-l / @load are gawk extensions" msgstr "-l / @load est une extension gawk" -#: ext.c:71 +#: ext.c:72 msgid "load_ext: received NULL lib_name" msgstr "load_ext : lib_name reçu NULL" -#: ext.c:74 +#: ext.c:75 #, c-format msgid "load_ext: cannot open library `%s' (%s)\n" msgstr "load_ext : impossible d'ouvrir la bibliothèque « %s » (%s)\n" -#: ext.c:80 +#: ext.c:81 #, c-format msgid "" "load_ext: library `%s': does not define `plugin_is_GPL_compatible' (%s)\n" @@ -2030,34 +2055,34 @@ msgstr "" "load_ext : bibliothèque « %s » : ne définit pas " "« plugin_is_GPL_compatible » (%s)\n" -#: ext.c:86 +#: ext.c:87 #, c-format msgid "load_ext: library `%s': cannot call function `%s' (%s)\n" msgstr "" "load_ext : bibliothèque « %s » : impossible d'appeler la fonction " "« %s » (%s)\n" -#: ext.c:90 +#: ext.c:91 #, c-format msgid "load_ext: library `%s' initialization routine `%s' failed\n" msgstr "" "load_ext : bibliothèque « %s » : échec de la routine d'initialisation « %s " "»\n" -#: ext.c:150 +#: ext.c:151 msgid "`extension' is a gawk extension" msgstr "« extension » est une extension gawk" -#: ext.c:153 +#: ext.c:154 msgid "extension: received NULL lib_name" msgstr "extension : lib_name reçu NULL" -#: ext.c:156 +#: ext.c:157 #, c-format msgid "extension: cannot open library `%s' (%s)" msgstr "extension : impossible d'ouvrir la bibliothèque « %s » (%s)" -#: ext.c:162 +#: ext.c:163 #, c-format msgid "" "extension: library `%s': does not define `plugin_is_GPL_compatible' (%s)" @@ -2065,179 +2090,173 @@ msgstr "" "extension : bibliothèque « %s » : ne définit pas " "« plugin_is_GPL_compatible » (%s)" -#: ext.c:166 +#: ext.c:167 #, c-format msgid "extension: library `%s': cannot call function `%s' (%s)" msgstr "" "extension : bibliothèque « %s » : impossible d'appeler la fonction " "« %s » (%s)" -#: ext.c:197 +#: ext.c:198 msgid "make_builtin: missing function name" msgstr "make_builtin : nom de fonction manquant" -#: ext.c:212 +#: ext.c:213 #, c-format msgid "make_builtin: can't redefine function `%s'" msgstr "make_builtin : impossible de redéfinir la fonction « %s »" -#: ext.c:216 +#: ext.c:217 #, c-format msgid "make_builtin: function `%s' already defined" msgstr "make_builtin : fonction « %s » déjà définie" -#: ext.c:220 +#: ext.c:221 #, c-format msgid "make_builtin: function name `%s' previously defined" msgstr "make_builtin : nom de la fonction « %s » déjà défini" -#: ext.c:222 +#: ext.c:223 #, c-format msgid "make_builtin: can't use gawk built-in `%s' as function name" msgstr "" "make_builtin : impossible d'utiliser la fonction gawk « %s » comme nom de " "fonction" -#: ext.c:225 ext.c:280 +#: ext.c:226 ext.c:281 #, c-format msgid "make_builtin: negative argument count for function `%s'" msgstr "make_builtin : la fonction « %s » a un nombre négatif d'arguments" -#: ext.c:252 +#: ext.c:253 msgid "extension: missing function name" msgstr "extension : nom de fonction manquant" -#: ext.c:255 ext.c:259 +#: ext.c:256 ext.c:260 #, c-format msgid "extension: illegal character `%c' in function name `%s'" msgstr "extension : caractère illégal « %c » dans le nom de la fonction « %s »" -#: ext.c:267 +#: ext.c:268 #, c-format msgid "extension: can't redefine function `%s'" msgstr "extension : impossible de redéfinir la fonction « %s »" -#: ext.c:271 +#: ext.c:272 #, c-format msgid "extension: function `%s' already defined" msgstr "extension : fonction « %s » est déjà définie" -#: ext.c:275 +#: ext.c:276 #, c-format msgid "extension: function name `%s' previously defined" msgstr "extension : nom de la fonction « %s » déjà défini" -#: ext.c:277 +#: ext.c:278 #, c-format msgid "extension: can't use gawk built-in `%s' as function name" msgstr "" "extension : impossible d'utiliser la fonction interne gawk « %s » comme nom " "de fonction" -#: ext.c:351 -#, c-format -msgid "function `%s' defined to take no more than %d argument(s)" -msgstr "fonction « %s » définie comme ayant au maximum« %d » argument(s)" - -#: ext.c:354 -#, c-format -msgid "function `%s': missing argument #%d" -msgstr "fonction « %s » : argument #%d manquant" - -#: ext.c:371 +#: ext.c:358 #, c-format msgid "function `%s': argument #%d: attempt to use scalar as an array" msgstr "" "fonction « %s » : argument #%d : tentative d'utilisation d'un scalaire comme " "tableau" -#: ext.c:375 +#: ext.c:362 #, 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 " "scalaire" -#: ext.c:389 +#: ext.c:376 msgid "dynamic loading of library not supported" msgstr "chargement dynamique des bibliothèques impossible" -#: extension/filefuncs.c:159 +#: extension/filefuncs.c:164 msgid "chdir: called with incorrect number of arguments, expecting 1" msgstr "chdir : appelé avec un nombre d'arguments incorrects, attendu : 1" -#: extension/filefuncs.c:439 +#: extension/filefuncs.c:444 #, c-format msgid "stat: unable to read symbolic link `%s'" msgstr "stat : impossible de lire le lien symbolique « %s »" -#: extension/filefuncs.c:472 +#: extension/filefuncs.c:477 msgid "stat: called with wrong number of arguments" msgstr "stat : appelé avec un nombre d'arguments incorrect" -#: extension/filefuncs.c:479 +#: extension/filefuncs.c:484 extension/filefuncs.c:534 msgid "stat: bad parameters" msgstr "stat : paramètres incorrects" -#: extension/filefuncs.c:533 +#: extension/filefuncs.c:527 +msgid "statvfs: called with wrong number of arguments" +msgstr "statvfs : appelé avec un nombre d'arguments incorrect" + +#: extension/filefuncs.c:598 #, c-format msgid "fts init: could not create variable %s" msgstr "fts init : impossible de créer la variable %s" -#: extension/filefuncs.c:554 +#: extension/filefuncs.c:619 msgid "fts is not supported on this system" msgstr "fts n'est pas compatible avec ce système" -#: extension/filefuncs.c:573 +#: extension/filefuncs.c:638 msgid "fill_stat_element: could not create array" msgstr "fill_stat_element : impossible de créer le tableau" -#: extension/filefuncs.c:582 +#: extension/filefuncs.c:647 msgid "fill_stat_element: could not set element" msgstr "fill_stat_element : impossible de définir l'élément" -#: extension/filefuncs.c:597 +#: extension/filefuncs.c:662 msgid "fill_path_element: could not set element" msgstr "fill_path_element : impossible de définir l'élément" -#: extension/filefuncs.c:613 +#: extension/filefuncs.c:678 msgid "fill_error_element: could not set element" msgstr "fill_error_element : impossible de définir l'élément" -#: extension/filefuncs.c:660 extension/filefuncs.c:707 +#: extension/filefuncs.c:725 extension/filefuncs.c:772 msgid "fts-process: could not create array" msgstr "fts-process : impossible de créer le tableau" -#: extension/filefuncs.c:670 extension/filefuncs.c:717 -#: extension/filefuncs.c:735 +#: extension/filefuncs.c:735 extension/filefuncs.c:782 +#: extension/filefuncs.c:800 msgid "fts-process: could not set element" msgstr "fts-process : impossible de définir l'élément" -#: extension/filefuncs.c:784 +#: extension/filefuncs.c:849 msgid "fts: called with incorrect number of arguments, expecting 3" msgstr "fts : appelé avec un nombre d'arguments incorrects, attendu : 3" -#: extension/filefuncs.c:787 +#: extension/filefuncs.c:852 msgid "fts: bad first parameter" msgstr "fts : premier paramètre incorrect" -#: extension/filefuncs.c:793 +#: extension/filefuncs.c:858 msgid "fts: bad second parameter" msgstr "fts : deuxième paramètre incorrect" -#: extension/filefuncs.c:799 +#: extension/filefuncs.c:864 msgid "fts: bad third parameter" msgstr "fts : troisième paramètre incorrect" -#: extension/filefuncs.c:806 +#: extension/filefuncs.c:871 msgid "fts: could not flatten array\n" msgstr "fts : impossible d'aplatir le tableau\n" -#: extension/filefuncs.c:824 +#: extension/filefuncs.c:889 msgid "fts: ignoring sneaky FTS_NOSTAT flag. nyah, nyah, nyah." msgstr "fts : on ignore le drapeau sournois FTS_NOSTAT..." -#: extension/filefuncs.c:841 +#: extension/filefuncs.c:906 msgid "fts: clear_array() failed\n" msgstr "fts : échec de clear_array()\n" @@ -2298,92 +2317,92 @@ msgstr "wait : appelé sans argument" msgid "wait: called with too many arguments" msgstr "wait : appelé avec trop d'arguments" -#: extension/inplace.c:130 +#: extension/inplace.c:131 msgid "inplace_begin: in-place editing already active" msgstr "inplace_begin : modification sur place déjà active" -#: extension/inplace.c:133 extension/inplace.c:210 +#: extension/inplace.c:134 extension/inplace.c:211 #, c-format msgid "inplace_begin: expects 2 arguments but called with %d" msgstr "inplace_begin : 2 arguments attendu, appelé avec %d" -#: extension/inplace.c:136 +#: extension/inplace.c:137 msgid "inplace_begin: cannot retrieve 1st argument as a string filename" msgstr "" "inplace_begin : impossible de récupérer le 1er argument comme nom de fichier" -#: extension/inplace.c:144 +#: extension/inplace.c:145 #, c-format msgid "inplace_begin: disabling in-place editing for invalid FILENAME `%s'" msgstr "" "inplace_begin : modification sur place annulée pour le fichier incorrect " "« %s »" -#: extension/inplace.c:151 +#: extension/inplace.c:152 #, c-format msgid "inplace_begin: Cannot stat `%s' (%s)" msgstr "inplace_begin : stat impossible sur « %s » (%s)" -#: extension/inplace.c:158 +#: extension/inplace.c:159 #, c-format msgid "inplace_begin: `%s' is not a regular file" msgstr "inplace_begin : « %s » n'est pas un fichier ordinaire" -#: extension/inplace.c:169 +#: extension/inplace.c:170 #, c-format msgid "inplace_begin: mkstemp(`%s') failed (%s)" msgstr "inplace_begin : échec de mkstemp('%s') (%s)" -#: extension/inplace.c:181 +#: extension/inplace.c:182 #, c-format msgid "inplace_begin: chmod failed (%s)" msgstr "inplace_begin : échec de la chmod (%s)" -#: extension/inplace.c:188 +#: extension/inplace.c:189 #, c-format msgid "inplace_begin: dup(stdout) failed (%s)" msgstr "inplace_begin : échec de dup(stdout) (%s)" -#: extension/inplace.c:191 +#: extension/inplace.c:192 #, c-format msgid "inplace_begin: dup2(%d, stdout) failed (%s)" msgstr "inplace_begin : échec de dup2(%d, stdout) (%s)" -#: extension/inplace.c:194 +#: extension/inplace.c:195 #, c-format msgid "inplace_begin: close(%d) failed (%s)" msgstr "inplace_begin : échec de close(%d) (%s)" -#: extension/inplace.c:213 +#: extension/inplace.c:214 msgid "inplace_end: cannot retrieve 1st argument as a string filename" msgstr "" "inplace_end : impossible de récupérer le 1er argument comme nom de fichier" -#: extension/inplace.c:220 +#: extension/inplace.c:221 msgid "inplace_end: in-place editing not active" msgstr "inplace_end : modification sur place non active" -#: extension/inplace.c:226 +#: extension/inplace.c:227 #, c-format msgid "inplace_end: dup2(%d, stdout) failed (%s)" msgstr "ipnlace_end : échec de dup2(%d, stdout) (%s)" -#: extension/inplace.c:229 +#: extension/inplace.c:230 #, c-format msgid "inplace_end: close(%d) failed (%s)" msgstr "inplace_end : échec de close(%d) (%s)" -#: extension/inplace.c:233 +#: extension/inplace.c:234 #, c-format msgid "inplace_end: fsetpos(stdout) failed (%s)" msgstr "inplace_end : échec de fsetpos(stdout) (%s)" -#: extension/inplace.c:246 +#: extension/inplace.c:247 #, c-format msgid "inplace_end: link(`%s', `%s') failed (%s)" msgstr "inplace_end : échec de link('%s', '%s') (%s)" -#: extension/inplace.c:256 +#: extension/inplace.c:257 #, c-format msgid "inplace_end: rename(`%s', `%s') failed (%s)" msgstr "inplace_end : échec de rename('%s', '%s') (%s)" @@ -2412,7 +2431,7 @@ msgstr "chr : appelé sans argument" msgid "chr: called with inappropriate argument(s)" msgstr "chr : appelé avec des arguments incorrects" -#: extension/readdir.c:281 +#: extension/readdir.c:271 #, c-format msgid "dir_take_control_of: opendir/fdopendir failed: %s" msgstr "dir_take_control_of : échec de opendir/fdopendir : %s" @@ -2425,54 +2444,54 @@ msgstr "readfile : appelé avec trop d'arguments" msgid "readfile: called with no arguments" msgstr "readfile : appelé sans argument" -#: extension/revoutput.c:125 +#: extension/revoutput.c:127 msgid "revoutput: could not initialize REVOUT variable" msgstr "revoutput : impossible d'initialiser la variable REVOUT" -#: extension/rwarray.c:124 extension/rwarray0.c:109 +#: extension/rwarray.c:113 extension/rwarray0.c:109 msgid "writea: called with too many arguments" msgstr "writea : appelé avec trop d'arguments" -#: extension/rwarray.c:131 extension/rwarray0.c:116 +#: extension/rwarray.c:120 extension/rwarray0.c:116 #, c-format msgid "do_writea: argument 0 is not a string\n" msgstr "do_writea : l'argument 0 n'est pas une chaîne\n" -#: extension/rwarray.c:137 extension/rwarray0.c:122 +#: extension/rwarray.c:126 extension/rwarray0.c:122 #, c-format msgid "do_writea: argument 1 is not an array\n" msgstr "do_writea : l'argument 1 n'est pas un tableau\n" -#: extension/rwarray.c:184 extension/rwarray0.c:169 +#: extension/rwarray.c:173 extension/rwarray0.c:169 #, c-format msgid "write_array: could not flatten array\n" msgstr "write_array : impossible d'aplatir le tableau\n" -#: extension/rwarray.c:198 extension/rwarray0.c:183 +#: extension/rwarray.c:187 extension/rwarray0.c:183 #, c-format msgid "write_array: could not release flattened array\n" msgstr "write_array : impossible de libérer le tableau aplati\n" -#: extension/rwarray.c:280 extension/rwarray0.c:265 +#: extension/rwarray.c:269 extension/rwarray0.c:265 msgid "reada: called with too many arguments" msgstr "reada : appelé avec trop d'arguments" -#: extension/rwarray.c:287 extension/rwarray0.c:272 +#: extension/rwarray.c:276 extension/rwarray0.c:272 #, c-format msgid "do_reada: argument 0 is not a string\n" msgstr "do_reada : l'argument 0 n'est pas une chaîne\n" -#: extension/rwarray.c:293 extension/rwarray0.c:278 +#: extension/rwarray.c:282 extension/rwarray0.c:278 #, c-format msgid "do_reada: argument 1 is not an array\n" msgstr "do_reada : l'argument 1 n'est pas un tableau\n" -#: extension/rwarray.c:337 extension/rwarray0.c:322 +#: extension/rwarray.c:326 extension/rwarray0.c:322 #, c-format msgid "do_reada: clear_array failed\n" msgstr "do_reada : échec de clear_array\n" -#: extension/rwarray.c:374 extension/rwarray0.c:358 +#: extension/rwarray.c:363 extension/rwarray0.c:358 #, c-format msgid "read_array: set_array_element failed\n" msgstr "read_array : échec de set_array_element\n" @@ -2582,7 +2601,7 @@ msgid "old awk does not support regexps as value of `FS'" msgstr "" "l'ancien awk n'accepte pas les expr. rationnelles comme valeur de « FS »" -#: field.c:1380 +#: field.c:1384 msgid "`FPAT' is a gawk extension" msgstr "« FPAT » est une extension gawk" @@ -2590,28 +2609,28 @@ msgstr "« FPAT » est une extension gawk" msgid "awk_value_to_node: received null retval" msgstr "awk_value_to_node : retval nul reçu" -#: gawkapi.c:384 +#: gawkapi.c:383 msgid "node_to_awk_value: received null node" msgstr "node_to_awk_value : node nul reçu" -#: gawkapi.c:387 +#: gawkapi.c:386 msgid "node_to_awk_value: received null val" msgstr "node_to_awk_value : val nul reçu" -#: gawkapi.c:809 +#: gawkapi.c:808 msgid "remove_element: received null array" msgstr "remove_element : tableau nul reçu" -#: gawkapi.c:812 +#: gawkapi.c:811 msgid "remove_element: received null subscript" msgstr "remove_element : indice nul reçu" -#: gawkapi.c:949 +#: gawkapi.c:948 #, c-format msgid "api_flatten_array: could not convert index %d\n" msgstr "api_flatten_array : impossible de convertir l'indice %d\n" -#: gawkapi.c:954 +#: gawkapi.c:953 #, c-format msgid "api_flatten_array: could not convert value %d\n" msgstr "api_flatten_array : impossible de convertir la valeur %d\n" @@ -2671,293 +2690,298 @@ msgstr "%s : l'option « -W %s » n'accepte pas d'argument\n" msgid "%s: option '-W %s' requires an argument\n" msgstr "%s : l'option « -W %s » nécessite un argument\n" -#: io.c:423 +#: io.c:426 #, c-format msgid "command line argument `%s' is a directory: skipped" msgstr "L'argument « %s » de la ligne de commande est un répertoire : ignoré" -#: io.c:426 io.c:544 +#: io.c:429 io.c:547 #, c-format msgid "cannot open file `%s' for reading (%s)" msgstr "impossible d'ouvrir le fichier « %s » en lecture (%s)" -#: io.c:671 +#: io.c:674 #, c-format msgid "close of fd %d (`%s') failed (%s)" msgstr "échec de la fermeture du fd %d (« %s ») : %s" -#: io.c:749 +#: io.c:752 msgid "redirection not allowed in sandbox mode" msgstr "les redirections sont interdites en isolement (mode sandbox)" -#: io.c:783 +#: io.c:786 #, c-format msgid "expression in `%s' redirection only has numeric value" msgstr "l'expression dans la redirection « %s » n'a qu'une valeur numérique" -#: io.c:789 +#: io.c:792 #, c-format msgid "expression for `%s' redirection has null string value" msgstr "l'expression dans la redirection « %s » donne une chaîne nulle" -#: io.c:794 +#: io.c:797 #, c-format msgid "filename `%s' for `%s' redirection may be result of logical expression" msgstr "" "le fichier « %s » de la redirection « %s » pourrait être le résultat d'une " "expression booléenne" -#: io.c:842 +#: io.c:845 #, c-format msgid "unnecessary mixing of `>' and `>>' for file `%.*s'" msgstr "mélange non nécessaire de « > » et « >> » pour le fichier « %.*s »" -#: io.c:896 +#: io.c:902 #, c-format msgid "can't open pipe `%s' for output (%s)" msgstr "impossible d'ouvrir le tube « %s » en sortie (%s)" -#: io.c:906 +#: io.c:915 #, c-format msgid "can't open pipe `%s' for input (%s)" msgstr "impossible d'ouvrir le tube « %s » en entrée (%s)" -#: io.c:937 +#: io.c:946 #, c-format msgid "can't open two way pipe `%s' for input/output (%s)" msgstr "" "impossible d'ouvrir un tube bidirectionnel « %s » en entrées-sorties (%s)" -#: io.c:1019 +#: io.c:1030 #, c-format msgid "can't redirect from `%s' (%s)" msgstr "impossible de rediriger depuis « %s » (%s)" -#: io.c:1022 +#: io.c:1033 #, c-format msgid "can't redirect to `%s' (%s)" msgstr "impossible de rediriger vers « %s » (%s)" -#: io.c:1073 +#: io.c:1084 msgid "" "reached system limit for open files: starting to multiplex file descriptors" msgstr "" "limite système du nombre de fichiers ouverts atteinte : début du " "multiplexage des descripteurs de fichiers" -#: io.c:1089 +#: io.c:1100 #, c-format msgid "close of `%s' failed (%s)." msgstr "échec de la fermeture de « %s » (%s)." -#: io.c:1097 +#: io.c:1108 msgid "too many pipes or input files open" msgstr "trop de fichiers d'entrées ou de tubes ouverts" -#: io.c:1119 +#: io.c:1130 msgid "close: second argument must be `to' or `from'" msgstr "close : le second argument doit être « to » ou « from »" -#: io.c:1136 +#: io.c:1147 #, c-format msgid "close: `%.*s' is not an open file, pipe or co-process" msgstr "" "close : « %.*s » n'est ni un fichier ouvert, ni un tube ou un co-processus" -#: io.c:1141 +#: io.c:1152 msgid "close of redirection that was never opened" msgstr "fermeture d'une redirection qui n'a jamais été ouverte" -#: io.c:1238 +#: io.c:1249 #, c-format msgid "close: redirection `%s' not opened with `|&', second argument ignored" msgstr "" "close : la redirection « %s » n'a pas été ouverte avec « |& », second " "argument ignoré" -#: io.c:1255 +#: io.c:1266 #, c-format msgid "failure status (%d) on pipe close of `%s' (%s)" msgstr "résultat d'échec (%d) sur la fermeture du tube « %s » (%s)" -#: io.c:1258 +#: io.c:1269 #, c-format msgid "failure status (%d) on file close of `%s' (%s)" msgstr "résultat d'échec (%d) sur la fermeture du fichier « %s » (%s)" -#: io.c:1278 +#: io.c:1289 #, c-format msgid "no explicit close of socket `%s' provided" msgstr "aucune fermeture explicite du connecteur « %s » fournie" -#: io.c:1281 +#: io.c:1292 #, c-format msgid "no explicit close of co-process `%s' provided" msgstr "aucune fermeture explicite du co-processus « %s » fournie" -#: io.c:1284 +#: io.c:1295 #, c-format msgid "no explicit close of pipe `%s' provided" msgstr "aucune fermeture explicite du tube « %s » fournie" -#: io.c:1287 +#: io.c:1298 #, c-format msgid "no explicit close of file `%s' provided" msgstr "aucune fermeture explicite du fichier « %s » fournie" -#: io.c:1317 io.c:1375 main.c:632 main.c:674 +#: io.c:1328 io.c:1387 main.c:645 main.c:687 #, c-format msgid "error writing standard output (%s)" msgstr "erreur lors de l'écriture vers la sortie standard (%s)" -#: io.c:1322 io.c:1381 main.c:634 +#: io.c:1333 io.c:1393 main.c:647 #, c-format msgid "error writing standard error (%s)" msgstr "erreur lors de l'écriture vers l'erreur standard (%s)" -#: io.c:1330 +#: io.c:1341 #, c-format msgid "pipe flush of `%s' failed (%s)." msgstr "échec du vidage du tube « %s » (%s)." -#: io.c:1333 +#: io.c:1344 #, c-format msgid "co-process flush of pipe to `%s' failed (%s)." msgstr "échec du vidage du tube vers « %s » par le co-processus (%s)." -#: io.c:1336 +#: io.c:1347 #, c-format msgid "file flush of `%s' failed (%s)." msgstr "échec du vidage vers le fichier « %s » (%s)." -#: io.c:1453 +#: io.c:1465 #, c-format msgid "local port %s invalid in `/inet'" msgstr "le port local %s n'est pas valide dans « /inet »" -#: io.c:1471 +#: io.c:1483 #, c-format msgid "remote host and port information (%s, %s) invalid" msgstr "" "les informations sur l'hôte et le port distants (%s, %s) ne sont pas valides" -#: io.c:1699 +#: io.c:1711 msgid "TCP/IP communications are not supported" msgstr "les communications TCP/IP ne sont pas disponibles" -#: io.c:1880 +#: io.c:1905 #, c-format msgid "could not open `%s', mode `%s'" msgstr "impossible d'ouvrir « %s », mode « %s »" -#: io.c:1930 +#: io.c:1961 #, c-format msgid "close of master pty failed (%s)" msgstr "échec de la fermeture du pty maître (%s)" -#: io.c:1932 io.c:2118 io.c:2319 +#: io.c:1963 io.c:2141 io.c:2342 #, c-format msgid "close of stdout in child failed (%s)" msgstr "échec de la fermeture de stdout du processus fils (%s)" -#: io.c:1935 +#: io.c:1966 #, c-format msgid "moving slave pty to stdout in child failed (dup: %s)" msgstr "" "échec du déplacement du pty esclave vers le stdout du processus fils (dup : " "%s)" -#: io.c:1937 io.c:2123 +#: io.c:1968 io.c:2146 #, c-format msgid "close of stdin in child failed (%s)" msgstr "échec de fermeture du stdin du processus fils (%s)" -#: io.c:1940 +#: io.c:1971 #, c-format msgid "moving slave pty to stdin in child failed (dup: %s)" msgstr "" "échec du déplacement du pty esclave vers le stdin du processus fils (dup : " "%s)" -#: io.c:1942 io.c:1964 +#: io.c:1973 #, c-format msgid "close of slave pty failed (%s)" msgstr "échec de la fermeture du pty esclave (%s)" -#: io.c:2053 io.c:2121 io.c:2290 io.c:2322 +#: io.c:2076 io.c:2144 io.c:2313 io.c:2345 #, c-format msgid "moving pipe to stdout in child failed (dup: %s)" msgstr "échec du déplacement du tube vers stdout du processus fils (dup : %s)" -#: io.c:2060 io.c:2126 +#: io.c:2083 io.c:2149 #, c-format msgid "moving pipe to stdin in child failed (dup: %s)" msgstr "échec de déplacement du tube vers stdin du processus fils (dup : %s)" -#: io.c:2086 io.c:2312 +#: io.c:2109 io.c:2335 msgid "restoring stdout in parent process failed\n" msgstr "échec de la restauration du stdout dans le processus parent\n" -#: io.c:2094 +#: io.c:2117 msgid "restoring stdin in parent process failed\n" msgstr "échec de la restauration du stdin dans le processus parent\n" -#: io.c:2129 io.c:2324 io.c:2339 +#: io.c:2152 io.c:2347 io.c:2362 #, c-format msgid "close of pipe failed (%s)" msgstr "échec de la fermeture du tube (%s)" -#: io.c:2188 +#: io.c:2211 msgid "`|&' not supported" msgstr "« |& » non disponible" -#: io.c:2275 +#: io.c:2298 #, c-format msgid "cannot open pipe `%s' (%s)" msgstr "impossible d'ouvrir le tube « %s » (%s)" -#: io.c:2333 +#: io.c:2356 #, c-format msgid "cannot create child process for `%s' (fork: %s)" msgstr "impossible de créer le processus fils pour « %s » (fork : %s)" -#: io.c:2760 +#: io.c:2493 +msgid "getline: attempt to read from closed read end of two-way pipe" +msgstr "" +"getline : tentative de lecture vers un tube bidirectionnel fermé côté lecture" + +#: io.c:2795 msgid "register_input_parser: received NULL pointer" msgstr "register_input_parser : pointeur NULL reçu" -#: io.c:2788 +#: io.c:2823 #, c-format msgid "input parser `%s' conflicts with previously installed input parser `%s'" msgstr "" "l'analyseur d'entrée « %s » est en conflit avec l'analyseur « %s » déjà " "installé" -#: io.c:2795 +#: io.c:2830 #, c-format msgid "input parser `%s' failed to open `%s'" msgstr "l'analyseur d'entrée « %s » n'a pu ouvrir « %s »" -#: io.c:2815 +#: io.c:2850 msgid "register_output_wrapper: received NULL pointer" msgstr "register_output_wrapper : pointeur NULL reçu" -#: io.c:2843 +#: io.c:2878 #, c-format msgid "" "output wrapper `%s' conflicts with previously installed output wrapper `%s'" msgstr "" "le filtre de sortie « %s » est en conflit avec le filtre « %s » déjà installé" -#: io.c:2850 +#: io.c:2885 #, c-format msgid "output wrapper `%s' failed to open `%s'" msgstr "le filtre de sortie « %s » n'a pu ouvrir « %s »" -#: io.c:2871 +#: io.c:2906 msgid "register_output_processor: received NULL pointer" msgstr "register_output_processor : pointeur NULL reçu" -#: io.c:2900 +#: io.c:2935 #, c-format msgid "" "two-way processor `%s' conflicts with previously installed two-way processor " @@ -2966,202 +2990,205 @@ msgstr "" "le gestionnaire bidirectionnel « %s » est en conflit avec le gestionnaire " "« %s » déjà installé" -#: io.c:2909 +#: io.c:2944 #, c-format msgid "two way processor `%s' failed to open `%s'" msgstr "le gestionnaire bidirectionnel « %s » n'a pu ouvrir « %s »" -#: io.c:3034 +#: io.c:3069 #, c-format msgid "data file `%s' is empty" msgstr "le fichier de données « %s » est vide" -#: io.c:3076 io.c:3084 +#: io.c:3111 io.c:3119 msgid "could not allocate more input memory" msgstr "impossible d'allouer plus de mémoire d'entrée" -#: io.c:3662 +#: io.c:3697 msgid "multicharacter value of `RS' is a gawk extension" msgstr "" "l'utilisation d'un « RS » de plusieurs caractères est une extension gawk" -#: io.c:3809 +#: io.c:3844 msgid "IPv6 communication is not supported" msgstr "les communications IPv6 ne sont pas disponibles" -#: main.c:321 +#: main.c:334 msgid "environment variable `POSIXLY_CORRECT' set: turning on `--posix'" msgstr "" "variable d'environnement « POSIXLY__CORRECT » définie : activation de « --" "posix »" -#: main.c:327 +#: main.c:340 msgid "`--posix' overrides `--traditional'" msgstr "« --posix » prend le pas sur « --traditional »" -#: main.c:338 +#: main.c:351 msgid "`--posix'/`--traditional' overrides `--non-decimal-data'" msgstr "" "« --posix » et « --traditional » prennent le pas sur « --non-decimal-data »" -#: main.c:342 +#: main.c:355 #, c-format msgid "running %s setuid root may be a security problem" msgstr "" "l'exécution de %s en mode setuid root peut être un problème de sécurité" -#: main.c:346 +#: main.c:359 msgid "`--posix' overrides `--characters-as-bytes'" msgstr "« --posix » prend le pas sur « --characters-as-bytes »" -#: main.c:404 +#: main.c:417 #, c-format msgid "can't set binary mode on stdin (%s)" msgstr "impossible d'activer le mode binaire sur stdin (%s)" -#: main.c:407 +#: main.c:420 #, c-format msgid "can't set binary mode on stdout (%s)" msgstr "impossible d'activer le mode binaire sur stdout (%s)" -#: main.c:409 +#: main.c:422 #, c-format msgid "can't set binary mode on stderr (%s)" msgstr "impossible d'activer le mode binaire sur stderr (%s)" -#: main.c:469 +#: main.c:482 msgid "no program text at all!" msgstr "aucun programme !" -#: main.c:563 +#: main.c:576 #, c-format msgid "Usage: %s [POSIX or GNU style options] -f progfile [--] file ...\n" msgstr "" "Utilisation : %s [options GNU ou POSIX] -f fichier_prog [--] fichier ...\n" -#: main.c:565 +#: main.c:578 #, c-format msgid "Usage: %s [POSIX or GNU style options] [--] %cprogram%c file ...\n" msgstr "" "Utilisation : %s [options GNU ou POSIX] [--] %cprogramme%c fichier ...\n" -#: main.c:570 +#: main.c:583 msgid "POSIX options:\t\tGNU long options: (standard)\n" msgstr "Options POSIX :\t\tOptions longues GNU : (standard)\n" -#: main.c:571 +#: main.c:584 msgid "\t-f progfile\t\t--file=progfile\n" msgstr "\t-f fichier_prog\t\t--file=fichier_prog\n" -#: main.c:572 +#: main.c:585 msgid "\t-F fs\t\t\t--field-separator=fs\n" msgstr "\t-F fs\t\t\t--field-separator=fs\n" -#: main.c:573 +#: main.c:586 msgid "\t-v var=val\t\t--assign=var=val\n" msgstr "\t-v var=valeur\t\t--assign=var=valeur\n" -#: main.c:574 +#: main.c:587 msgid "Short options:\t\tGNU long options: (extensions)\n" msgstr "Options POSIX :\t\tOptions longues GNU : (extensions)\n" -#: main.c:575 +#: main.c:588 msgid "\t-b\t\t\t--characters-as-bytes\n" msgstr "\t-b\t\t\t--characters-as-bytes\n" -#: main.c:576 +#: main.c:589 msgid "\t-c\t\t\t--traditional\n" msgstr "\t-c\t\t\t--traditional\n" -#: main.c:577 +#: main.c:590 msgid "\t-C\t\t\t--copyright\n" msgstr "\t-C\t\t\t--copyright\n" -#: main.c:578 +#: main.c:591 msgid "\t-d[file]\t\t--dump-variables[=file]\n" msgstr "\t-d[fichier]\t\t--dump-variables[=fichier]\n" -#: main.c:579 +#: main.c:592 msgid "\t-D[file]\t\t--debug[=file]\n" msgstr "\t-D[fichier]\t\t--debug[=fichier]\n" -#: main.c:580 +#: main.c:593 msgid "\t-e 'program-text'\t--source='program-text'\n" msgstr "\t-e 'programme'\t\t--source='programme'\n" -#: main.c:581 +#: main.c:594 msgid "\t-E file\t\t\t--exec=file\n" msgstr "\t-E fichier\t\t--exec=fichier\n" -#: main.c:582 +#: main.c:595 msgid "\t-g\t\t\t--gen-pot\n" msgstr "\t-g\t\t\t--gen-pot\n" -#: main.c:583 +#: main.c:596 msgid "\t-h\t\t\t--help\n" msgstr "\t-h\t\t\t--help\n" -#: main.c:584 +#: main.c:597 msgid "\t-i includefile\t\t--include=includefile\n" msgstr "\t-i fichier\t\t--include=fichier\n" -#: main.c:585 +#: main.c:598 msgid "\t-l library\t\t--load=library\n" msgstr "\t-l bibliothèque\t\t--load=bibliothèque\n" -#: main.c:590 +#. TRANSLATORS: the "fatal" and "invalid" here are literal +#. values, they should not be translated. Thanks. +#. +#: main.c:603 msgid "\t-L[fatal|invalid]\t--lint[=fatal|invalid]\n" msgstr "\t-L[fatal|invalid]\t--lint[=fatal|invalid]\n" -#: main.c:591 +#: main.c:604 msgid "\t-M\t\t\t--bignum\n" msgstr "\t-M\t\t\t--bignum\n" -#: main.c:592 +#: main.c:605 msgid "\t-N\t\t\t--use-lc-numeric\n" msgstr "\t-N\t\t\t--use-lc-numeric\n" -#: main.c:593 +#: main.c:606 msgid "\t-n\t\t\t--non-decimal-data\n" msgstr "\t-n\t\t\t--non-decimal-data\n" -#: main.c:594 +#: main.c:607 msgid "\t-o[file]\t\t--pretty-print[=file]\n" msgstr "\t-o[fichier]\t\t--pretty-print[=fichier]\n" -#: main.c:595 +#: main.c:608 msgid "\t-O\t\t\t--optimize\n" msgstr "\t-O\t\t\t--optimize\n" -#: main.c:596 +#: main.c:609 msgid "\t-p[file]\t\t--profile[=file]\n" msgstr "\t-p[fichier]\t\t--profile[=fichier]\n" -#: main.c:597 +#: main.c:610 msgid "\t-P\t\t\t--posix\n" msgstr "\t-P\t\t\t--posix\n" -#: main.c:598 +#: main.c:611 msgid "\t-r\t\t\t--re-interval\n" msgstr "\t-r\t\t\t--re-interval\n" -#: main.c:599 +#: main.c:612 msgid "\t-S\t\t\t--sandbox\n" msgstr "\t-S\t\t\t--sandbox\n" -#: main.c:600 +#: main.c:613 msgid "\t-t\t\t\t--lint-old\n" msgstr "\t-t\t\t\t--lint-old\n" -#: main.c:601 +#: main.c:614 msgid "\t-V\t\t\t--version\n" msgstr "\t-V\t\t\t--version\n" -#: main.c:603 +#: main.c:616 msgid "\t-W nostalgia\t\t--nostalgia\n" msgstr "\t-W nostalgia\t\t--nostalgia\n" -#: main.c:606 +#: main.c:619 msgid "\t-Y\t\t--parsedebug\n" msgstr "\t-Y\t\t--parsedebug\n" @@ -3170,7 +3197,7 @@ msgstr "\t-Y\t\t--parsedebug\n" #. for this application. Please add _another line_ with the #. address for translation bugs. #. no-wrap -#: main.c:615 +#: main.c:628 msgid "" "\n" "To report bugs, see node `Bugs' in `gawk.info', which is\n" @@ -3185,7 +3212,7 @@ msgstr "" ".\n" "\n" -#: main.c:619 +#: main.c:632 msgid "" "gawk is a pattern scanning and processing language.\n" "By default it reads standard input and writes standard output.\n" @@ -3195,7 +3222,7 @@ msgstr "" "Par défaut, il lit l'entrée standard et écrit sur la sortie standard.\n" "\n" -#: main.c:623 +#: main.c:636 msgid "" "Examples:\n" "\tgawk '{ sum += $1 }; END { print sum }' file\n" @@ -3205,7 +3232,7 @@ msgstr "" "\tgawk '{ somme += $1 }; END { print somme }' fichier\n" "\tgawk -F: '{ print $1 }' /etc/passwd\n" -#: main.c:648 +#: main.c:661 #, c-format msgid "" "Copyright (C) 1989, 1991-%d Free Software Foundation.\n" @@ -3225,7 +3252,7 @@ msgstr "" "version ultérieure de votre choix.\n" "\n" -#: main.c:656 +#: main.c:669 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" @@ -3240,7 +3267,7 @@ msgstr "" "General Public License).\n" "\n" -#: main.c:662 +#: main.c:675 msgid "" "You should have received a copy of the GNU General Public License\n" "along with this program. If not, see http://www.gnu.org/licenses/.\n" @@ -3249,16 +3276,16 @@ msgstr "" "(GNU General Public License) avec ce programme. Sinon, consultez\n" "http://www.gnu.org/licenses/.\n" -#: main.c:699 +#: main.c:712 msgid "-Ft does not set FS to tab in POSIX awk" msgstr "-Ft ne définit pas le FS comme étant une tabulation en awk POSIX" -#: main.c:986 +#: main.c:999 #, c-format msgid "unknown value for field spec: %d\n" msgstr "valeur inconnue pour la définition de champ : %d\n" -#: main.c:1084 +#: main.c:1097 #, c-format msgid "" "%s: `%s' argument to `-v' not in `var=value' form\n" @@ -3267,117 +3294,117 @@ msgstr "" "%s : « %s » l'argument de « -v » ne respecte pas la forme « var=valeur »\n" "\n" -#: main.c:1110 +#: main.c:1123 #, c-format msgid "`%s' is not a legal variable name" msgstr "« %s » n'est pas un nom de variable valide" -#: main.c:1113 +#: main.c:1126 #, c-format msgid "`%s' is not a variable name, looking for file `%s=%s'" msgstr "« %s » n'est pas un nom de variable, recherche du fichier « %s=%s »" -#: main.c:1117 +#: main.c:1130 #, c-format msgid "cannot use gawk builtin `%s' as variable name" msgstr "impossible d'utiliser le mot clef gawk « %s » comme variable" -#: main.c:1122 +#: main.c:1135 #, c-format msgid "cannot use function `%s' as variable name" msgstr "impossible d'utiliser la fonction « %s » comme variable" -#: main.c:1175 +#: main.c:1190 msgid "floating point exception" msgstr "exception du traitement en virgule flottante" -#: main.c:1182 +#: main.c:1197 msgid "fatal error: internal error" msgstr "fatal : erreur interne" -#: main.c:1197 +#: main.c:1212 msgid "fatal error: internal error: segfault" msgstr "fatal : erreur interne : erreur de segmentation" -#: main.c:1209 +#: main.c:1224 msgid "fatal error: internal error: stack overflow" msgstr "fatal : erreur interne : débordement de la pile" -#: main.c:1268 +#: main.c:1283 #, c-format msgid "no pre-opened fd %d" msgstr "aucun descripteur fd %d pré-ouvert" -#: main.c:1275 +#: main.c:1290 #, c-format msgid "could not pre-open /dev/null for fd %d" msgstr "impossible de pré-ouvrir /dev/null pour le descripteur fd %d" -#: main.c:1489 +#: main.c:1504 msgid "empty argument to `-e/--source' ignored" msgstr "argument vide de l'option « -e / --source » ignoré" -#: main.c:1560 +#: main.c:1575 msgid "-M ignored: MPFR/GMP support not compiled in" msgstr "-M sans effet : version compilée sans MPFR/GMP" -#: main.c:1581 +#: main.c:1596 #, c-format msgid "%s: option `-W %s' unrecognized, ignored\n" msgstr "%s : option « -W %s » non reconnue, ignorée\n" -#: main.c:1634 +#: main.c:1649 #, c-format msgid "%s: option requires an argument -- %c\n" msgstr "%s : l'option requiert un argument - %c\n" -#: mpfr.c:557 +#: mpfr.c:559 #, c-format msgid "PREC value `%.*s' is invalid" msgstr "la valeur « %.*s » de PREC est incorrecte" -#: mpfr.c:615 +#: mpfr.c:617 #, c-format msgid "RNDMODE value `%.*s' is invalid" msgstr "la valeur « %.*s » de RNDMODE est incorrecte" -#: mpfr.c:711 +#: mpfr.c:714 #, c-format msgid "%s: received non-numeric argument" msgstr "%s : argument reçu non numérique" -#: mpfr.c:820 +#: mpfr.c:824 msgid "compl(%Rg): negative value will give strange results" msgstr "compl(%Rg) : les valeurs négatives donneront des résultats inattendus" -#: mpfr.c:824 +#: mpfr.c:828 msgid "comp(%Rg): fractional value will be truncated" msgstr "compl(%Rg) : les valeurs non entières seront tronquées" -#: mpfr.c:836 +#: mpfr.c:840 #, c-format msgid "cmpl(%Zd): negative values will give strange results" msgstr "compl(%Zd) : les valeurs négatives donneront des résultats inattendus" -#: mpfr.c:855 +#: mpfr.c:859 #, c-format msgid "%s: received non-numeric argument #%d" msgstr "%s : argument reçu non numérique #%d" -#: mpfr.c:865 +#: mpfr.c:869 msgid "%s: argument #%d has invalid value %Rg, using 0" msgstr "%s : l'argument #%d a une valeur incorrecte %Rg, utilisation de 0" -#: mpfr.c:877 +#: mpfr.c:881 msgid "%s: argument #%d negative value %Rg will give strange results" msgstr "" "%s : argument #%d : la valeur négative %Rg donnera des résultats inattendus" -#: mpfr.c:883 +#: mpfr.c:887 msgid "%s: argument #%d fractional value %Rg will be truncated" msgstr "%s : argument #%d : la valeur non entière %Rg sera tronquée" -#: mpfr.c:898 +#: mpfr.c:902 #, c-format msgid "%s: argument #%d negative value %Zd will give strange results" msgstr "" @@ -3388,24 +3415,24 @@ msgstr "" msgid "cmd. line:" msgstr "ligne de commande:" -#: node.c:418 +#: node.c:434 msgid "backslash at end of string" msgstr "barre oblique inverse à la fin de la chaîne" -#: node.c:497 +#: node.c:513 #, c-format msgid "old awk does not support the `\\%c' escape sequence" msgstr "l'ancien awk ne dispose pas de la séquence d'échappement « \\%c »" -#: node.c:548 +#: node.c:564 msgid "POSIX does not allow `\\x' escapes" msgstr "POSIX n'autorise pas les séquences d'échappement « \\x »" -#: node.c:554 +#: node.c:570 msgid "no hex digits in `\\x' escape sequence" msgstr "aucun chiffre hexadécimal dans la séquence d'échappement « \\x » " -#: node.c:576 +#: node.c:592 #, c-format msgid "" "hex escape \\x%.*s of %d characters probably not interpreted the way you " @@ -3414,12 +3441,12 @@ msgstr "" "la séquence d'échappement hexa. \\x%.*s de %d caractères ne sera " "probablement pas interprétée comme vous l'imaginez" -#: node.c:591 +#: node.c:607 #, c-format msgid "escape sequence `\\%c' treated as plain `%c'" msgstr "séquence d'échappement « \\%c » traitée comme un simple « %c »" -#: node.c:735 +#: node.c:744 msgid "" "Invalid multibyte data detected. There may be a mismatch between your data " "and your locale." @@ -3439,16 +3466,16 @@ msgid "%s %s `%s': could not set close-on-exec: (fcntl F_SETFD: %s)" msgstr "" "%s %s « %s »: impossible de positionner close-on-exec: (fcntl F_SETFD: %s)" -#: profile.c:91 +#: profile.c:94 #, c-format msgid "could not open `%s' for writing: %s" msgstr "impossible d'ouvrir « %s » en écriture : %s" -#: profile.c:93 +#: profile.c:96 msgid "sending profile to standard error" msgstr "envoi du profil vers la sortie d'erreur standard" -#: profile.c:213 +#: profile.c:216 #, c-format msgid "" "\t# %s rule(s)\n" @@ -3457,7 +3484,7 @@ msgstr "" "\t# %s règle(s)\n" "\n" -#: profile.c:218 +#: profile.c:221 #, c-format msgid "" "\t# Rule(s)\n" @@ -3466,16 +3493,16 @@ msgstr "" "\t# Règle(s)\n" "\n" -#: profile.c:292 +#: profile.c:295 #, c-format msgid "internal error: %s with null vname" msgstr "erreur interne : %s avec un vname nul" -#: profile.c:558 +#: profile.c:561 msgid "internal error: builtin with null fname" msgstr "erreur interne : fonction interne avec un fname nul" -#: profile.c:978 +#: profile.c:1006 #, c-format msgid "" "\t# Loaded extensions (-l and/or @load)\n" @@ -3484,12 +3511,12 @@ msgstr "" "\t# Extensions chargées (-l ou @load)\n" "\n" -#: profile.c:1001 +#: profile.c:1029 #, c-format msgid "\t# gawk profile, created %s\n" msgstr "\t# profile gawk, créé %s\n" -#: profile.c:1555 +#: profile.c:1600 #, c-format msgid "" "\n" @@ -3498,96 +3525,102 @@ msgstr "" "\n" "\t# Fonctions, par ordre alphabétique\n" -#: profile.c:1593 +#: profile.c:1638 #, c-format msgid "redir2str: unknown redirection type %d" msgstr "redir2str : type de redirection %d inconnu" -#: re.c:607 +#: re.c:610 #, c-format msgid "regexp component `%.*s' should probably be `[%.*s]'" msgstr "" "le composant d'expression rationnelle « %.*s » devrait probablement être " "« [%.*s] »" -#: regcomp.c:139 +#: regcomp.c:143 msgid "Success" msgstr "Succès" -#: regcomp.c:142 +#: regcomp.c:146 msgid "No match" msgstr "Aucune correspondance" -#: regcomp.c:145 +#: regcomp.c:149 msgid "Invalid regular expression" msgstr "Expression rationnelle incorrecte" -#: regcomp.c:148 +#: regcomp.c:152 msgid "Invalid collation character" msgstr "Caractère d'interclassement incorrect" -#: regcomp.c:151 +#: regcomp.c:155 msgid "Invalid character class name" msgstr "Nom de classe de caractères incorrect" -#: regcomp.c:154 +#: regcomp.c:158 msgid "Trailing backslash" msgstr "Barre oblique inverse finale" -#: regcomp.c:157 +#: regcomp.c:161 msgid "Invalid back reference" msgstr "Référence arrière incorrecte" -#: regcomp.c:160 +#: regcomp.c:164 msgid "Unmatched [, [^, [:, [., or [=" msgstr "[, [^, [:, [. ou [= sans correspondance" -#: regcomp.c:163 +#: regcomp.c:167 msgid "Unmatched ( or \\(" msgstr "( ou \\( sans correspondance" -#: regcomp.c:166 +#: regcomp.c:170 msgid "Unmatched \\{" msgstr "\\{ sans correspondance" -#: regcomp.c:169 +#: regcomp.c:173 msgid "Invalid content of \\{\\}" msgstr "Contenu de \\{\\} incorrect" -#: regcomp.c:172 +#: regcomp.c:176 msgid "Invalid range end" msgstr "Borne finale non valable" -#: regcomp.c:175 +#: regcomp.c:179 msgid "Memory exhausted" msgstr "Mémoire épuisée" -#: regcomp.c:178 +#: regcomp.c:182 msgid "Invalid preceding regular expression" msgstr "Expression rationnelle précédente incorrecte" -#: regcomp.c:181 +#: regcomp.c:185 msgid "Premature end of regular expression" msgstr "Fin prématurée de l'expression rationnelle" -#: regcomp.c:184 +#: regcomp.c:188 msgid "Regular expression too big" msgstr "Expression rationnelle trop grande" -#: regcomp.c:187 +#: regcomp.c:191 msgid "Unmatched ) or \\)" msgstr ") ou \\) sans correspondance" -#: regcomp.c:712 +#: regcomp.c:701 msgid "No previous regular expression" msgstr "Aucune expression rationnelle précédente" -#: symbol.c:678 +#: symbol.c:684 #, c-format msgid "function `%s': can't use function `%s' as a parameter name" msgstr "" "fonction « %s » : impossible d'utiliser la fonction « %s » comme paramètre" -#: symbol.c:810 +#: symbol.c:816 msgid "can not pop main context" msgstr "impossible de rétablir (pop) le contexte principal (main)" + +#~ msgid "function `%s' defined to take no more than %d argument(s)" +#~ msgstr "fonction « %s » définie comme ayant au maximum« %d » argument(s)" + +#~ msgid "function `%s': missing argument #%d" +#~ msgstr "fonction « %s » : argument #%d manquant" diff --git a/po/gawk.pot b/po/gawk.pot index fd129e0..9555fbc 100644 --- a/po/gawk.pot +++ b/po/gawk.pot @@ -1,14 +1,14 @@ # SOME DESCRIPTIVE TITLE. # Copyright (C) YEAR Free Software Foundation, Inc. -# This file is distributed under the same license as the PACKAGE package. +# This file is distributed under the same license as the gawk package. # FIRST AUTHOR , YEAR. # #, fuzzy msgid "" msgstr "" -"Project-Id-Version: gawk 4.1.3\n" +"Project-Id-Version: gawk 4.1.4\n" "Report-Msgid-Bugs-To: bug-gawk@gnu.org\n" -"POT-Creation-Date: 2015-05-19 16:06+0300\n" +"POT-Creation-Date: 2016-08-25 06:19+0300\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" @@ -17,84 +17,84 @@ msgstr "" "Content-Type: text/plain; charset=CHARSET\n" "Content-Transfer-Encoding: 8bit\n" -#: array.c:256 +#: array.c:259 #, c-format msgid "from %s" msgstr "" -#: array.c:357 +#: array.c:360 msgid "attempt to use a scalar value as array" msgstr "" -#: array.c:359 +#: array.c:362 #, c-format msgid "attempt to use scalar parameter `%s' as an array" msgstr "" -#: array.c:362 +#: array.c:365 #, c-format msgid "attempt to use scalar `%s' as an array" msgstr "" -#: array.c:409 array.c:576 builtin.c:85 builtin.c:1606 builtin.c:1652 -#: builtin.c:1665 builtin.c:2112 builtin.c:2126 eval.c:1149 eval.c:1153 -#: eval.c:1564 +#: array.c:412 array.c:579 builtin.c:85 builtin.c:1612 builtin.c:1658 +#: builtin.c:1671 builtin.c:2160 builtin.c:2179 eval.c:1141 eval.c:1145 +#: eval.c:1556 #, c-format msgid "attempt to use array `%s' in a scalar context" msgstr "" -#: array.c:583 +#: array.c:586 #, c-format msgid "delete: index `%s' not in array `%s'" msgstr "" -#: array.c:597 +#: array.c:600 #, c-format msgid "attempt to use scalar `%s[\"%.*s\"]' as an array" msgstr "" -#: array.c:776 +#: array.c:779 msgid "adump: first argument not an array" msgstr "" -#: array.c:815 +#: array.c:818 msgid "asort: second argument not an array" msgstr "" -#: array.c:816 +#: array.c:819 msgid "asorti: second argument not an array" msgstr "" -#: array.c:823 +#: array.c:826 msgid "asort: first argument not an array" msgstr "" -#: array.c:824 +#: array.c:827 msgid "asorti: first argument not an array" msgstr "" -#: array.c:831 +#: array.c:834 msgid "asort: cannot use a subarray of first arg for second arg" msgstr "" -#: array.c:832 +#: array.c:835 msgid "asorti: cannot use a subarray of first arg for second arg" msgstr "" -#: array.c:837 +#: array.c:840 msgid "asort: cannot use a subarray of second arg for first arg" msgstr "" -#: array.c:838 +#: array.c:841 msgid "asorti: cannot use a subarray of second arg for first arg" msgstr "" -#: array.c:1313 +#: array.c:1316 #, c-format msgid "`%s' is invalid as a function name" msgstr "" -#: array.c:1317 +#: array.c:1320 #, c-format msgid "sort comparison function `%s' is not defined" msgstr "" @@ -135,11 +135,11 @@ msgstr "" msgid "duplicate `default' detected in switch body" msgstr "" -#: awkgram.y:793 awkgram.y:3763 +#: awkgram.y:793 awkgram.y:3774 msgid "`break' is not allowed outside a loop or switch" msgstr "" -#: awkgram.y:802 awkgram.y:3755 +#: awkgram.y:802 awkgram.y:3766 msgid "`continue' is not allowed outside a loop" msgstr "" @@ -228,7 +228,7 @@ msgstr "" msgid "invalid subscript expression" msgstr "" -#: awkgram.y:2047 awkgram.y:2067 gawkapi.c:206 gawkapi.c:224 msg.c:126 +#: awkgram.y:2047 awkgram.y:2067 gawkapi.c:206 gawkapi.c:223 msg.c:126 msgid "warning: " msgstr "" @@ -236,280 +236,284 @@ msgstr "" msgid "fatal: " msgstr "" -#: awkgram.y:2115 +#: awkgram.y:2116 msgid "unexpected newline or end of string" msgstr "" -#: awkgram.y:2394 awkgram.y:2470 awkgram.y:2693 debug.c:523 debug.c:539 -#: debug.c:2812 debug.c:5055 +#: awkgram.y:2397 awkgram.y:2473 awkgram.y:2696 debug.c:523 debug.c:539 +#: debug.c:2812 debug.c:5101 #, c-format msgid "can't open source file `%s' for reading (%s)" msgstr "" -#: awkgram.y:2395 awkgram.y:2520 +#: awkgram.y:2398 awkgram.y:2523 #, c-format msgid "can't open shared library `%s' for reading (%s)" msgstr "" -#: awkgram.y:2397 awkgram.y:2471 awkgram.y:2521 builtin.c:135 debug.c:5206 +#: awkgram.y:2400 awkgram.y:2474 awkgram.y:2524 builtin.c:135 debug.c:5252 msgid "reason unknown" msgstr "" -#: awkgram.y:2406 awkgram.y:2430 +#: awkgram.y:2409 awkgram.y:2433 #, c-format msgid "can't include `%s' and use it as a program file" msgstr "" -#: awkgram.y:2419 +#: awkgram.y:2422 #, c-format msgid "already included source file `%s'" msgstr "" -#: awkgram.y:2420 +#: awkgram.y:2423 #, c-format msgid "already loaded shared library `%s'" msgstr "" -#: awkgram.y:2455 +#: awkgram.y:2458 msgid "@include is a gawk extension" msgstr "" -#: awkgram.y:2461 +#: awkgram.y:2464 msgid "empty filename after @include" msgstr "" -#: awkgram.y:2505 +#: awkgram.y:2508 msgid "@load is a gawk extension" msgstr "" -#: awkgram.y:2511 +#: awkgram.y:2514 msgid "empty filename after @load" msgstr "" -#: awkgram.y:2645 +#: awkgram.y:2648 msgid "empty program text on command line" msgstr "" -#: awkgram.y:2760 +#: awkgram.y:2763 #, c-format msgid "can't read sourcefile `%s' (%s)" msgstr "" -#: awkgram.y:2771 +#: awkgram.y:2774 #, c-format msgid "source file `%s' is empty" msgstr "" -#: awkgram.y:2830 +#: awkgram.y:2833 #, c-format msgid "PEBKAC error: invalid character '\\%03o' in source code" msgstr "" -#: awkgram.y:2961 +#: awkgram.y:2964 msgid "source file does not end in newline" msgstr "" -#: awkgram.y:3074 +#: awkgram.y:3081 msgid "unterminated regexp ends with `\\' at end of file" msgstr "" -#: awkgram.y:3101 +#: awkgram.y:3108 #, c-format msgid "%s: %d: tawk regex modifier `/.../%c' doesn't work in gawk" msgstr "" -#: awkgram.y:3105 +#: awkgram.y:3112 #, c-format msgid "tawk regex modifier `/.../%c' doesn't work in gawk" msgstr "" -#: awkgram.y:3112 +#: awkgram.y:3119 msgid "unterminated regexp" msgstr "" -#: awkgram.y:3116 +#: awkgram.y:3123 msgid "unterminated regexp at end of file" msgstr "" -#: awkgram.y:3174 +#: awkgram.y:3181 msgid "use of `\\ #...' line continuation is not portable" msgstr "" -#: awkgram.y:3190 +#: awkgram.y:3197 msgid "backslash not last character on line" msgstr "" -#: awkgram.y:3251 +#: awkgram.y:3235 awkgram.y:3237 +msgid "multidimensional arrays are a gawk extension" +msgstr "" + +#: awkgram.y:3262 msgid "POSIX does not allow operator `**='" msgstr "" -#: awkgram.y:3253 +#: awkgram.y:3264 msgid "old awk does not support operator `**='" msgstr "" -#: awkgram.y:3262 +#: awkgram.y:3273 msgid "POSIX does not allow operator `**'" msgstr "" -#: awkgram.y:3264 +#: awkgram.y:3275 msgid "old awk does not support operator `**'" msgstr "" -#: awkgram.y:3299 +#: awkgram.y:3310 msgid "operator `^=' is not supported in old awk" msgstr "" -#: awkgram.y:3307 +#: awkgram.y:3318 msgid "operator `^' is not supported in old awk" msgstr "" -#: awkgram.y:3404 awkgram.y:3422 command.y:1180 +#: awkgram.y:3415 awkgram.y:3433 command.y:1187 msgid "unterminated string" msgstr "" -#: awkgram.y:3643 +#: awkgram.y:3654 #, c-format msgid "invalid char '%c' in expression" msgstr "" -#: awkgram.y:3690 +#: awkgram.y:3701 #, c-format msgid "`%s' is a gawk extension" msgstr "" -#: awkgram.y:3695 +#: awkgram.y:3706 #, c-format msgid "POSIX does not allow `%s'" msgstr "" -#: awkgram.y:3703 +#: awkgram.y:3714 #, c-format msgid "`%s' is not supported in old awk" msgstr "" -#: awkgram.y:3793 +#: awkgram.y:3804 msgid "`goto' considered harmful!\n" msgstr "" -#: awkgram.y:3827 +#: awkgram.y:3873 #, c-format msgid "%d is invalid as number of arguments for %s" msgstr "" -#: awkgram.y:3862 +#: awkgram.y:3908 #, c-format msgid "%s: string literal as last arg of substitute has no effect" msgstr "" -#: awkgram.y:3867 +#: awkgram.y:3913 #, c-format msgid "%s third parameter is not a changeable object" msgstr "" -#: awkgram.y:3950 awkgram.y:3953 +#: awkgram.y:3996 awkgram.y:3999 msgid "match: third argument is a gawk extension" msgstr "" -#: awkgram.y:4007 awkgram.y:4010 +#: awkgram.y:4053 awkgram.y:4056 msgid "close: second argument is a gawk extension" msgstr "" -#: awkgram.y:4022 +#: awkgram.y:4068 msgid "use of dcgettext(_\"...\") is incorrect: remove leading underscore" msgstr "" -#: awkgram.y:4037 +#: awkgram.y:4083 msgid "use of dcngettext(_\"...\") is incorrect: remove leading underscore" msgstr "" -#: awkgram.y:4056 +#: awkgram.y:4102 msgid "index: regexp constant as second argument is not allowed" msgstr "" -#: awkgram.y:4109 +#: awkgram.y:4155 #, c-format msgid "function `%s': parameter `%s' shadows global variable" msgstr "" -#: awkgram.y:4166 debug.c:4041 debug.c:4084 debug.c:5204 +#: awkgram.y:4214 debug.c:4087 debug.c:4130 debug.c:5250 #, c-format msgid "could not open `%s' for writing (%s)" msgstr "" -#: awkgram.y:4167 +#: awkgram.y:4215 msgid "sending variable list to standard error" msgstr "" -#: awkgram.y:4175 +#: awkgram.y:4223 #, c-format msgid "%s: close failed (%s)" msgstr "" -#: awkgram.y:4200 +#: awkgram.y:4248 msgid "shadow_funcs() called twice!" msgstr "" -#: awkgram.y:4208 +#: awkgram.y:4256 msgid "there were shadowed variables." msgstr "" -#: awkgram.y:4279 +#: awkgram.y:4327 #, c-format msgid "function name `%s' previously defined" msgstr "" -#: awkgram.y:4325 +#: awkgram.y:4373 #, c-format msgid "function `%s': can't use function name as parameter name" msgstr "" -#: awkgram.y:4328 +#: awkgram.y:4376 #, c-format msgid "function `%s': can't use special variable `%s' as a function parameter" msgstr "" -#: awkgram.y:4336 +#: awkgram.y:4384 #, c-format msgid "function `%s': parameter #%d, `%s', duplicates parameter #%d" msgstr "" -#: awkgram.y:4423 awkgram.y:4429 +#: awkgram.y:4471 awkgram.y:4477 #, c-format msgid "function `%s' called but never defined" msgstr "" -#: awkgram.y:4433 +#: awkgram.y:4481 #, c-format msgid "function `%s' defined but never called directly" msgstr "" -#: awkgram.y:4465 +#: awkgram.y:4513 #, c-format msgid "regexp constant for parameter #%d yields boolean value" msgstr "" -#: awkgram.y:4480 +#: awkgram.y:4528 #, c-format msgid "" "function `%s' called with space between name and `(',\n" "or used as a variable or an array" msgstr "" -#: awkgram.y:4686 +#: awkgram.y:4734 msgid "division by zero attempted" msgstr "" -#: awkgram.y:4695 +#: awkgram.y:4743 #, c-format msgid "division by zero attempted in `%%'" msgstr "" -#: awkgram.y:5015 +#: awkgram.y:5064 msgid "" "cannot assign a value to the result of a field post-increment expression" msgstr "" -#: awkgram.y:5018 +#: awkgram.y:5067 #, c-format msgid "invalid target of assignment (opcode %s)" msgstr "" @@ -542,725 +546,742 @@ msgstr "" msgid "fflush: cannot flush: file `%s' opened for reading, not writing" msgstr "" -#: builtin.c:244 +#: builtin.c:241 +#, c-format +msgid "fflush: cannot flush: two-way pipe `%s' has closed write end" +msgstr "" + +#: builtin.c:247 #, c-format msgid "fflush: `%s' is not an open file, pipe or co-process" msgstr "" -#: builtin.c:351 +#: builtin.c:354 msgid "index: received non-string first argument" msgstr "" -#: builtin.c:353 +#: builtin.c:356 msgid "index: received non-string second argument" msgstr "" -#: builtin.c:466 mpfr.c:777 +#: builtin.c:469 mpfr.c:781 msgid "int: received non-numeric argument" msgstr "" -#: builtin.c:503 +#: builtin.c:506 msgid "length: received array argument" msgstr "" -#: builtin.c:506 +#: builtin.c:509 msgid "`length(array)' is a gawk extension" msgstr "" -#: builtin.c:525 +#: builtin.c:528 msgid "length: received non-string argument" msgstr "" -#: builtin.c:554 +#: builtin.c:557 msgid "log: received non-numeric argument" msgstr "" -#: builtin.c:557 +#: builtin.c:560 #, c-format msgid "log: received negative argument %g" msgstr "" -#: builtin.c:755 builtin.c:760 builtin.c:911 +#: builtin.c:758 builtin.c:763 builtin.c:914 msgid "fatal: must use `count$' on all formats or none" msgstr "" -#: builtin.c:830 +#: builtin.c:833 #, c-format msgid "field width is ignored for `%%' specifier" msgstr "" -#: builtin.c:832 +#: builtin.c:835 #, c-format msgid "precision is ignored for `%%' specifier" msgstr "" -#: builtin.c:834 +#: builtin.c:837 #, c-format msgid "field width and precision are ignored for `%%' specifier" msgstr "" -#: builtin.c:885 +#: builtin.c:888 msgid "fatal: `$' is not permitted in awk formats" msgstr "" -#: builtin.c:894 +#: builtin.c:897 msgid "fatal: arg count with `$' must be > 0" msgstr "" -#: builtin.c:898 +#: builtin.c:901 #, c-format msgid "fatal: arg count %ld greater than total number of supplied arguments" msgstr "" -#: builtin.c:902 +#: builtin.c:905 msgid "fatal: `$' not permitted after period in format" msgstr "" -#: builtin.c:921 +#: builtin.c:924 msgid "fatal: no `$' supplied for positional field width or precision" msgstr "" -#: builtin.c:991 +#: builtin.c:994 msgid "`l' is meaningless in awk formats; ignored" msgstr "" -#: builtin.c:995 +#: builtin.c:998 msgid "fatal: `l' is not permitted in POSIX awk formats" msgstr "" -#: builtin.c:1008 +#: builtin.c:1011 msgid "`L' is meaningless in awk formats; ignored" msgstr "" -#: builtin.c:1012 +#: builtin.c:1015 msgid "fatal: `L' is not permitted in POSIX awk formats" msgstr "" -#: builtin.c:1025 +#: builtin.c:1028 msgid "`h' is meaningless in awk formats; ignored" msgstr "" -#: builtin.c:1029 +#: builtin.c:1032 msgid "fatal: `h' is not permitted in POSIX awk formats" msgstr "" -#: builtin.c:1055 +#: builtin.c:1058 #, c-format msgid "[s]printf: value %g is too big for %%c format" msgstr "" -#: builtin.c:1068 +#: builtin.c:1071 #, c-format msgid "[s]printf: value %g is not a valid wide character" msgstr "" -#: builtin.c:1454 +#: builtin.c:1457 #, c-format msgid "[s]printf: value %g is out of range for `%%%c' format" msgstr "" -#: builtin.c:1552 +#: builtin.c:1555 #, c-format msgid "ignoring unknown format specifier character `%c': no argument converted" msgstr "" -#: builtin.c:1557 +#: builtin.c:1560 msgid "fatal: not enough arguments to satisfy format string" msgstr "" -#: builtin.c:1559 +#: builtin.c:1562 msgid "^ ran out for this one" msgstr "" -#: builtin.c:1566 +#: builtin.c:1569 msgid "[s]printf: format specifier does not have control letter" msgstr "" -#: builtin.c:1569 +#: builtin.c:1572 msgid "too many arguments supplied for format string" msgstr "" -#: builtin.c:1625 +#: builtin.c:1631 msgid "sprintf: no arguments" msgstr "" -#: builtin.c:1648 builtin.c:1659 +#: builtin.c:1654 builtin.c:1665 msgid "printf: no arguments" msgstr "" -#: builtin.c:1702 +#: builtin.c:1676 +msgid "printf: attempt to write to closed write end of two-way pipe" +msgstr "" + +#: builtin.c:1713 msgid "sqrt: received non-numeric argument" msgstr "" -#: builtin.c:1706 +#: builtin.c:1717 #, c-format msgid "sqrt: called with negative argument %g" msgstr "" -#: builtin.c:1737 +#: builtin.c:1748 #, c-format msgid "substr: length %g is not >= 1" msgstr "" -#: builtin.c:1739 +#: builtin.c:1750 #, c-format msgid "substr: length %g is not >= 0" msgstr "" -#: builtin.c:1753 +#: builtin.c:1764 #, c-format msgid "substr: non-integer length %g will be truncated" msgstr "" -#: builtin.c:1758 +#: builtin.c:1769 #, c-format msgid "substr: length %g too big for string indexing, truncating to %g" msgstr "" -#: builtin.c:1770 +#: builtin.c:1781 #, c-format msgid "substr: start index %g is invalid, using 1" msgstr "" -#: builtin.c:1775 +#: builtin.c:1786 #, c-format msgid "substr: non-integer start index %g will be truncated" msgstr "" -#: builtin.c:1798 +#: builtin.c:1809 msgid "substr: source string is zero length" msgstr "" -#: builtin.c:1812 +#: builtin.c:1823 #, c-format msgid "substr: start index %g is past end of string" msgstr "" -#: builtin.c:1820 +#: builtin.c:1831 #, c-format msgid "" "substr: length %g at start index %g exceeds length of first argument (%lu)" msgstr "" -#: builtin.c:1892 +#: builtin.c:1903 msgid "strftime: format value in PROCINFO[\"strftime\"] has numeric type" msgstr "" -#: builtin.c:1915 +#: builtin.c:1926 msgid "strftime: received non-numeric second argument" msgstr "" -#: builtin.c:1925 +#: builtin.c:1936 msgid "strftime: second argument less than 0 or too big for time_t" msgstr "" -#: builtin.c:1932 +#: builtin.c:1943 msgid "strftime: second argument out of range for time_t" msgstr "" -#: builtin.c:1941 +#: builtin.c:1952 msgid "strftime: received non-string first argument" msgstr "" -#: builtin.c:1948 +#: builtin.c:1959 msgid "strftime: received empty format string" msgstr "" -#: builtin.c:2017 +#: builtin.c:2028 msgid "mktime: received non-string argument" msgstr "" -#: builtin.c:2034 +#: builtin.c:2045 msgid "mktime: at least one of the values is out of the default range" msgstr "" -#: builtin.c:2069 +#: builtin.c:2081 msgid "'system' function not allowed in sandbox mode" msgstr "" -#: builtin.c:2074 +#: builtin.c:2086 msgid "system: received non-string argument" msgstr "" -#: builtin.c:2194 +#: builtin.c:2165 builtin.c:2230 +msgid "print: attempt to write to closed write end of two-way pipe" +msgstr "" + +#: builtin.c:2248 #, c-format msgid "reference to uninitialized field `$%d'" msgstr "" -#: builtin.c:2279 +#: builtin.c:2333 msgid "tolower: received non-string argument" msgstr "" -#: builtin.c:2310 +#: builtin.c:2364 msgid "toupper: received non-string argument" msgstr "" -#: builtin.c:2343 mpfr.c:679 +#: builtin.c:2397 mpfr.c:681 msgid "atan2: received non-numeric first argument" msgstr "" -#: builtin.c:2345 mpfr.c:681 +#: builtin.c:2399 mpfr.c:683 msgid "atan2: received non-numeric second argument" msgstr "" -#: builtin.c:2364 +#: builtin.c:2418 msgid "sin: received non-numeric argument" msgstr "" -#: builtin.c:2380 +#: builtin.c:2434 msgid "cos: received non-numeric argument" msgstr "" -#: builtin.c:2433 mpfr.c:1176 +#: builtin.c:2487 mpfr.c:1180 msgid "srand: received non-numeric argument" msgstr "" -#: builtin.c:2464 +#: builtin.c:2518 msgid "match: third argument is not an array" msgstr "" -#: builtin.c:2725 +#: builtin.c:2779 #, c-format msgid "gensub: third argument `%.*s' treated as 1" msgstr "" -#: builtin.c:2740 +#: builtin.c:2794 #, c-format msgid "gensub: third argument %g treated as 1" msgstr "" -#: builtin.c:3038 +#: builtin.c:3096 #, c-format msgid "%s: can be called indirectly only with two arguments" msgstr "" -#: builtin.c:3128 +#: builtin.c:3186 #, c-format msgid "indirect call to %s requires at least two arguments" msgstr "" -#: builtin.c:3180 +#: builtin.c:3238 msgid "lshift: received non-numeric first argument" msgstr "" -#: builtin.c:3182 +#: builtin.c:3240 msgid "lshift: received non-numeric second argument" msgstr "" -#: builtin.c:3188 +#: builtin.c:3246 #, c-format msgid "lshift(%f, %f): negative values will give strange results" msgstr "" -#: builtin.c:3190 +#: builtin.c:3248 #, c-format msgid "lshift(%f, %f): fractional values will be truncated" msgstr "" -#: builtin.c:3192 +#: builtin.c:3250 #, c-format msgid "lshift(%f, %f): too large shift value will give strange results" msgstr "" -#: builtin.c:3217 +#: builtin.c:3275 msgid "rshift: received non-numeric first argument" msgstr "" -#: builtin.c:3219 +#: builtin.c:3277 msgid "rshift: received non-numeric second argument" msgstr "" -#: builtin.c:3225 +#: builtin.c:3283 #, c-format msgid "rshift(%f, %f): negative values will give strange results" msgstr "" -#: builtin.c:3227 +#: builtin.c:3285 #, c-format msgid "rshift(%f, %f): fractional values will be truncated" msgstr "" -#: builtin.c:3229 +#: builtin.c:3287 #, c-format msgid "rshift(%f, %f): too large shift value will give strange results" msgstr "" -#: builtin.c:3254 mpfr.c:988 +#: builtin.c:3312 mpfr.c:992 msgid "and: called with less than two arguments" msgstr "" -#: builtin.c:3259 +#: builtin.c:3317 #, c-format msgid "and: argument %d is non-numeric" msgstr "" -#: builtin.c:3263 +#: builtin.c:3321 #, c-format msgid "and: argument %d negative value %g will give strange results" msgstr "" -#: builtin.c:3286 mpfr.c:1020 +#: builtin.c:3344 mpfr.c:1024 msgid "or: called with less than two arguments" msgstr "" -#: builtin.c:3291 +#: builtin.c:3349 #, c-format msgid "or: argument %d is non-numeric" msgstr "" -#: builtin.c:3295 +#: builtin.c:3353 #, c-format msgid "or: argument %d negative value %g will give strange results" msgstr "" -#: builtin.c:3317 mpfr.c:1051 +#: builtin.c:3375 mpfr.c:1055 msgid "xor: called with less than two arguments" msgstr "" -#: builtin.c:3323 +#: builtin.c:3381 #, c-format msgid "xor: argument %d is non-numeric" msgstr "" -#: builtin.c:3327 +#: builtin.c:3385 #, c-format msgid "xor: argument %d negative value %g will give strange results" msgstr "" -#: builtin.c:3352 mpfr.c:807 +#: builtin.c:3410 mpfr.c:811 msgid "compl: received non-numeric argument" msgstr "" -#: builtin.c:3358 +#: builtin.c:3416 #, c-format msgid "compl(%f): negative value will give strange results" msgstr "" -#: builtin.c:3360 +#: builtin.c:3418 #, c-format msgid "compl(%f): fractional value will be truncated" msgstr "" -#: builtin.c:3529 +#: builtin.c:3588 #, c-format msgid "dcgettext: `%s' is not a valid locale category" msgstr "" -#: command.y:225 +#: command.y:226 #, c-format msgid "Type (g)awk statement(s). End with the command \"end\"\n" msgstr "" -#: command.y:289 +#: command.y:290 #, c-format msgid "invalid frame number: %d" msgstr "" -#: command.y:295 +#: command.y:296 #, c-format msgid "info: invalid option - \"%s\"" msgstr "" -#: command.y:321 +#: command.y:322 #, c-format msgid "source \"%s\": already sourced." msgstr "" -#: command.y:326 +#: command.y:327 #, c-format msgid "save \"%s\": command not permitted." msgstr "" -#: command.y:339 +#: command.y:340 msgid "Can't use command `commands' for breakpoint/watchpoint commands" msgstr "" -#: command.y:341 +#: command.y:342 msgid "no breakpoint/watchpoint has been set yet" msgstr "" -#: command.y:343 +#: command.y:344 msgid "invalid breakpoint/watchpoint number" msgstr "" -#: command.y:348 +#: command.y:349 #, c-format msgid "Type commands for when %s %d is hit, one per line.\n" msgstr "" -#: command.y:350 +#: command.y:351 #, c-format msgid "End with the command \"end\"\n" msgstr "" -#: command.y:357 +#: command.y:358 msgid "`end' valid only in command `commands' or `eval'" msgstr "" -#: command.y:367 +#: command.y:368 msgid "`silent' valid only in command `commands'" msgstr "" -#: command.y:373 +#: command.y:374 #, c-format msgid "trace: invalid option - \"%s\"" msgstr "" -#: command.y:387 +#: command.y:388 msgid "condition: invalid breakpoint/watchpoint number" msgstr "" -#: command.y:449 +#: command.y:450 msgid "argument not a string" msgstr "" -#: command.y:459 command.y:464 +#: command.y:460 command.y:465 #, c-format msgid "option: invalid parameter - \"%s\"" msgstr "" -#: command.y:474 +#: command.y:475 #, c-format msgid "no such function - \"%s\"" msgstr "" -#: command.y:531 +#: command.y:532 #, c-format msgid "enable: invalid option - \"%s\"" msgstr "" -#: command.y:597 +#: command.y:598 #, c-format msgid "invalid range specification: %d - %d" msgstr "" -#: command.y:659 +#: command.y:660 msgid "non-numeric value for field number" msgstr "" -#: command.y:680 command.y:687 +#: command.y:681 command.y:688 msgid "non-numeric value found, numeric expected" msgstr "" -#: command.y:712 command.y:718 +#: command.y:713 command.y:719 msgid "non-zero integer value" msgstr "" -#: command.y:817 +#: command.y:818 msgid "" "backtrace [N] - print trace of all or N innermost (outermost if N < 0) " "frames." msgstr "" -#: command.y:819 +#: command.y:820 msgid "" "break [[filename:]N|function] - set breakpoint at the specified location." msgstr "" -#: command.y:821 +#: command.y:822 msgid "clear [[filename:]N|function] - delete breakpoints previously set." msgstr "" -#: command.y:823 +#: command.y:824 msgid "" "commands [num] - starts a list of commands to be executed at a " "breakpoint(watchpoint) hit." msgstr "" -#: command.y:825 +#: command.y:826 msgid "condition num [expr] - set or clear breakpoint or watchpoint condition." msgstr "" -#: command.y:827 +#: command.y:828 msgid "continue [COUNT] - continue program being debugged." msgstr "" -#: command.y:829 +#: command.y:830 msgid "delete [breakpoints] [range] - delete specified breakpoints." msgstr "" -#: command.y:831 +#: command.y:832 msgid "disable [breakpoints] [range] - disable specified breakpoints." msgstr "" -#: command.y:833 +#: command.y:834 msgid "display [var] - print value of variable each time the program stops." msgstr "" -#: command.y:835 +#: command.y:836 msgid "down [N] - move N frames down the stack." msgstr "" -#: command.y:837 +#: command.y:838 msgid "dump [filename] - dump instructions to file or stdout." msgstr "" -#: command.y:839 +#: command.y:840 msgid "enable [once|del] [breakpoints] [range] - enable specified breakpoints." msgstr "" -#: command.y:841 +#: command.y:842 msgid "end - end a list of commands or awk statements." msgstr "" -#: command.y:843 +#: command.y:844 msgid "eval stmt|[p1, p2, ...] - evaluate awk statement(s)." msgstr "" -#: command.y:845 +#: command.y:846 +msgid "exit - (same as quit) exit debugger." +msgstr "" + +#: command.y:848 msgid "finish - execute until selected stack frame returns." msgstr "" -#: command.y:847 +#: command.y:850 msgid "frame [N] - select and print stack frame number N." msgstr "" -#: command.y:849 +#: command.y:852 msgid "help [command] - print list of commands or explanation of command." msgstr "" -#: command.y:851 +#: command.y:854 msgid "ignore N COUNT - set ignore-count of breakpoint number N to COUNT." msgstr "" -#: command.y:853 +#: command.y:856 msgid "" "info topic - source|sources|variables|functions|break|frame|args|locals|" "display|watch." msgstr "" -#: command.y:855 +#: command.y:858 msgid "list [-|+|[filename:]lineno|function|range] - list specified line(s)." msgstr "" -#: command.y:857 +#: command.y:860 msgid "next [COUNT] - step program, proceeding through subroutine calls." msgstr "" -#: command.y:859 +#: command.y:862 msgid "" "nexti [COUNT] - step one instruction, but proceed through subroutine calls." msgstr "" -#: command.y:861 +#: command.y:864 msgid "option [name[=value]] - set or display debugger option(s)." msgstr "" -#: command.y:863 +#: command.y:866 msgid "print var [var] - print value of a variable or array." msgstr "" -#: command.y:865 +#: command.y:868 msgid "printf format, [arg], ... - formatted output." msgstr "" -#: command.y:867 +#: command.y:870 msgid "quit - exit debugger." msgstr "" -#: command.y:869 +#: command.y:872 msgid "return [value] - make selected stack frame return to its caller." msgstr "" -#: command.y:871 +#: command.y:874 msgid "run - start or restart executing program." msgstr "" -#: command.y:874 +#: command.y:877 msgid "save filename - save commands from the session to file." msgstr "" -#: command.y:877 +#: command.y:880 msgid "set var = value - assign value to a scalar variable." msgstr "" -#: command.y:879 +#: command.y:882 msgid "" "silent - suspends usual message when stopped at a breakpoint/watchpoint." msgstr "" -#: command.y:881 +#: command.y:884 msgid "source file - execute commands from file." msgstr "" -#: command.y:883 +#: command.y:886 msgid "step [COUNT] - step program until it reaches a different source line." msgstr "" -#: command.y:885 +#: command.y:888 msgid "stepi [COUNT] - step one instruction exactly." msgstr "" -#: command.y:887 +#: command.y:890 msgid "tbreak [[filename:]N|function] - set a temporary breakpoint." msgstr "" -#: command.y:889 +#: command.y:892 msgid "trace on|off - print instruction before executing." msgstr "" -#: command.y:891 +#: command.y:894 msgid "undisplay [N] - remove variable(s) from automatic display list." msgstr "" -#: command.y:893 +#: command.y:896 msgid "" "until [[filename:]N|function] - execute until program reaches a different " "line or line N within current frame." msgstr "" -#: command.y:895 +#: command.y:898 msgid "unwatch [N] - remove variable(s) from watch list." msgstr "" -#: command.y:897 +#: command.y:900 msgid "up [N] - move N frames up the stack." msgstr "" -#: command.y:899 +#: command.y:902 msgid "watch var - set a watchpoint for a variable." msgstr "" -#: command.y:901 +#: command.y:904 msgid "" "where [N] - (same as backtrace) print trace of all or N innermost (outermost " "if N < 0) frames." msgstr "" -#: command.y:1013 debug.c:401 msg.c:135 +#: command.y:1016 debug.c:401 msg.c:135 #, c-format msgid "error: " msgstr "" -#: command.y:1053 +#: command.y:1060 #, c-format msgid "can't read command (%s)\n" msgstr "" -#: command.y:1067 +#: command.y:1074 #, c-format msgid "can't read command (%s)" msgstr "" -#: command.y:1118 +#: command.y:1125 msgid "invalid character in command" msgstr "" -#: command.y:1154 +#: command.y:1161 #, c-format msgid "unknown command - \"%.*s\", try help" msgstr "" -#: command.y:1224 +#: command.y:1231 #, c-format msgid "%s" msgstr "" -#: command.y:1286 +#: command.y:1293 msgid "invalid character" msgstr "" -#: command.y:1457 +#: command.y:1497 #, c-format msgid "undefined command: %s\n" msgstr "" @@ -1458,17 +1479,17 @@ msgstr "" msgid "`%s[\"%s\"]' is not an array\n" msgstr "" -#: debug.c:1236 debug.c:4964 +#: debug.c:1236 debug.c:5010 #, c-format msgid "`%s' is not a scalar variable" msgstr "" -#: debug.c:1258 debug.c:4994 +#: debug.c:1258 debug.c:5040 #, c-format msgid "attempt to use array `%s[\"%s\"]' in a scalar context" msgstr "" -#: debug.c:1280 debug.c:5005 +#: debug.c:1280 debug.c:5051 #, c-format msgid "attempt to use scalar `%s[\"%s\"]' as array" msgstr "" @@ -1741,99 +1762,99 @@ msgstr "" msgid "'until' not meaningful with non-local jump '%s'\n" msgstr "" -#: debug.c:4185 +#: debug.c:4231 msgid "\t------[Enter] to continue or q [Enter] to quit------" msgstr "" -#: debug.c:4186 +#: debug.c:4232 msgid "q" msgstr "" -#: debug.c:5001 +#: debug.c:5047 #, c-format msgid "[\"%s\"] not in array `%s'" msgstr "" -#: debug.c:5207 +#: debug.c:5253 #, c-format msgid "sending output to stdout\n" msgstr "" -#: debug.c:5247 +#: debug.c:5293 msgid "invalid number" msgstr "" -#: debug.c:5381 +#: debug.c:5427 #, c-format msgid "`%s' not allowed in current context; statement ignored" msgstr "" -#: debug.c:5389 +#: debug.c:5435 msgid "`return' not allowed in current context; statement ignored" msgstr "" -#: debug.c:5604 +#: debug.c:5650 #, c-format msgid "No symbol `%s' in current context" msgstr "" -#: dfa.c:1062 dfa.c:1065 dfa.c:1084 dfa.c:1094 dfa.c:1106 dfa.c:1142 -#: dfa.c:1151 dfa.c:1154 dfa.c:1159 dfa.c:1173 dfa.c:1221 +#: dfa.c:1090 dfa.c:1093 dfa.c:1112 dfa.c:1122 dfa.c:1135 dfa.c:1163 dfa.c:1172 +#: dfa.c:1175 dfa.c:1180 dfa.c:1202 dfa.c:1205 msgid "unbalanced [" msgstr "" -#: dfa.c:1118 +#: dfa.c:1148 msgid "invalid character class" msgstr "" -#: dfa.c:1264 +#: dfa.c:1271 msgid "character class syntax is [[:space:]], not [:space:]" msgstr "" -#: dfa.c:1326 +#: dfa.c:1332 msgid "unfinished \\ escape" msgstr "" -#: dfa.c:1473 +#: dfa.c:1499 msgid "invalid content of \\{\\}" msgstr "" -#: dfa.c:1476 +#: dfa.c:1502 msgid "regular expression too big" msgstr "" -#: dfa.c:1911 +#: dfa.c:1916 msgid "unbalanced (" msgstr "" -#: dfa.c:2037 +#: dfa.c:2044 msgid "no syntax specified" msgstr "" -#: dfa.c:2045 +#: dfa.c:2052 msgid "unbalanced )" msgstr "" -#: eval.c:396 +#: eval.c:398 #, c-format msgid "unknown nodetype %d" msgstr "" -#: eval.c:407 eval.c:421 +#: eval.c:409 eval.c:423 #, c-format msgid "unknown opcode %d" msgstr "" -#: eval.c:418 +#: eval.c:420 #, c-format msgid "opcode %s not an operator or keyword" msgstr "" -#: eval.c:474 +#: eval.c:476 msgid "buffer overflow in genflags2str" msgstr "" -#: eval.c:676 +#: eval.c:678 #, c-format msgid "" "\n" @@ -1841,290 +1862,284 @@ msgid "" "\n" msgstr "" -#: eval.c:705 +#: eval.c:707 msgid "`IGNORECASE' is a gawk extension" msgstr "" -#: eval.c:737 +#: eval.c:739 msgid "`BINMODE' is a gawk extension" msgstr "" -#: eval.c:795 +#: eval.c:797 #, c-format msgid "BINMODE value `%s' is invalid, treated as 3" msgstr "" -#: eval.c:912 +#: eval.c:914 #, c-format msgid "bad `%sFMT' specification `%s'" msgstr "" -#: eval.c:996 +#: eval.c:988 msgid "turning off `--lint' due to assignment to `LINT'" msgstr "" -#: eval.c:1174 +#: eval.c:1166 #, c-format msgid "reference to uninitialized argument `%s'" msgstr "" -#: eval.c:1175 +#: eval.c:1167 #, c-format msgid "reference to uninitialized variable `%s'" msgstr "" -#: eval.c:1193 +#: eval.c:1185 msgid "attempt to field reference from non-numeric value" msgstr "" -#: eval.c:1195 +#: eval.c:1187 msgid "attempt to field reference from null string" msgstr "" -#: eval.c:1203 +#: eval.c:1195 #, c-format msgid "attempt to access field %ld" msgstr "" -#: eval.c:1212 +#: eval.c:1204 #, c-format msgid "reference to uninitialized field `$%ld'" msgstr "" -#: eval.c:1299 +#: eval.c:1291 #, c-format msgid "function `%s' called with more arguments than declared" msgstr "" -#: eval.c:1506 +#: eval.c:1498 #, c-format msgid "unwind_stack: unexpected type `%s'" msgstr "" -#: eval.c:1602 +#: eval.c:1594 msgid "division by zero attempted in `/='" msgstr "" -#: eval.c:1609 +#: eval.c:1601 #, c-format msgid "division by zero attempted in `%%='" msgstr "" -#: ext.c:65 ext.c:147 +#: ext.c:66 ext.c:148 msgid "extensions are not allowed in sandbox mode" msgstr "" -#: ext.c:68 +#: ext.c:69 msgid "-l / @load are gawk extensions" msgstr "" -#: ext.c:71 +#: ext.c:72 msgid "load_ext: received NULL lib_name" msgstr "" -#: ext.c:74 +#: ext.c:75 #, c-format msgid "load_ext: cannot open library `%s' (%s)\n" msgstr "" -#: ext.c:80 +#: ext.c:81 #, c-format msgid "" "load_ext: library `%s': does not define `plugin_is_GPL_compatible' (%s)\n" msgstr "" -#: ext.c:86 +#: ext.c:87 #, c-format msgid "load_ext: library `%s': cannot call function `%s' (%s)\n" msgstr "" -#: ext.c:90 +#: ext.c:91 #, c-format msgid "load_ext: library `%s' initialization routine `%s' failed\n" msgstr "" -#: ext.c:150 +#: ext.c:151 msgid "`extension' is a gawk extension" msgstr "" -#: ext.c:153 +#: ext.c:154 msgid "extension: received NULL lib_name" msgstr "" -#: ext.c:156 +#: ext.c:157 #, c-format msgid "extension: cannot open library `%s' (%s)" msgstr "" -#: ext.c:162 +#: ext.c:163 #, c-format msgid "" "extension: library `%s': does not define `plugin_is_GPL_compatible' (%s)" msgstr "" -#: ext.c:166 +#: ext.c:167 #, c-format msgid "extension: library `%s': cannot call function `%s' (%s)" msgstr "" -#: ext.c:197 +#: ext.c:198 msgid "make_builtin: missing function name" msgstr "" -#: ext.c:212 +#: ext.c:213 #, c-format msgid "make_builtin: can't redefine function `%s'" msgstr "" -#: ext.c:216 +#: ext.c:217 #, c-format msgid "make_builtin: function `%s' already defined" msgstr "" -#: ext.c:220 +#: ext.c:221 #, c-format msgid "make_builtin: function name `%s' previously defined" msgstr "" -#: ext.c:222 +#: ext.c:223 #, c-format msgid "make_builtin: can't use gawk built-in `%s' as function name" msgstr "" -#: ext.c:225 ext.c:280 +#: ext.c:226 ext.c:281 #, c-format msgid "make_builtin: negative argument count for function `%s'" msgstr "" -#: ext.c:252 +#: ext.c:253 msgid "extension: missing function name" msgstr "" -#: ext.c:255 ext.c:259 +#: ext.c:256 ext.c:260 #, c-format msgid "extension: illegal character `%c' in function name `%s'" msgstr "" -#: ext.c:267 +#: ext.c:268 #, c-format msgid "extension: can't redefine function `%s'" msgstr "" -#: ext.c:271 +#: ext.c:272 #, c-format msgid "extension: function `%s' already defined" msgstr "" -#: ext.c:275 +#: ext.c:276 #, c-format msgid "extension: function name `%s' previously defined" msgstr "" -#: ext.c:277 +#: ext.c:278 #, c-format msgid "extension: can't use gawk built-in `%s' as function name" msgstr "" -#: ext.c:351 -#, c-format -msgid "function `%s' defined to take no more than %d argument(s)" -msgstr "" - -#: ext.c:354 -#, c-format -msgid "function `%s': missing argument #%d" -msgstr "" - -#: ext.c:371 +#: ext.c:358 #, c-format msgid "function `%s': argument #%d: attempt to use scalar as an array" msgstr "" -#: ext.c:375 +#: ext.c:362 #, c-format msgid "function `%s': argument #%d: attempt to use array as a scalar" msgstr "" -#: ext.c:389 +#: ext.c:376 msgid "dynamic loading of library not supported" msgstr "" -#: extension/filefuncs.c:159 +#: extension/filefuncs.c:164 msgid "chdir: called with incorrect number of arguments, expecting 1" msgstr "" -#: extension/filefuncs.c:439 +#: extension/filefuncs.c:444 #, c-format msgid "stat: unable to read symbolic link `%s'" msgstr "" -#: extension/filefuncs.c:472 +#: extension/filefuncs.c:477 msgid "stat: called with wrong number of arguments" msgstr "" -#: extension/filefuncs.c:479 +#: extension/filefuncs.c:484 extension/filefuncs.c:534 msgid "stat: bad parameters" msgstr "" -#: extension/filefuncs.c:533 +#: extension/filefuncs.c:527 +msgid "statvfs: called with wrong number of arguments" +msgstr "" + +#: extension/filefuncs.c:598 #, c-format msgid "fts init: could not create variable %s" msgstr "" -#: extension/filefuncs.c:554 +#: extension/filefuncs.c:619 msgid "fts is not supported on this system" msgstr "" -#: extension/filefuncs.c:573 +#: extension/filefuncs.c:638 msgid "fill_stat_element: could not create array" msgstr "" -#: extension/filefuncs.c:582 +#: extension/filefuncs.c:647 msgid "fill_stat_element: could not set element" msgstr "" -#: extension/filefuncs.c:597 +#: extension/filefuncs.c:662 msgid "fill_path_element: could not set element" msgstr "" -#: extension/filefuncs.c:613 +#: extension/filefuncs.c:678 msgid "fill_error_element: could not set element" msgstr "" -#: extension/filefuncs.c:660 extension/filefuncs.c:707 +#: extension/filefuncs.c:725 extension/filefuncs.c:772 msgid "fts-process: could not create array" msgstr "" -#: extension/filefuncs.c:670 extension/filefuncs.c:717 -#: extension/filefuncs.c:735 +#: extension/filefuncs.c:735 extension/filefuncs.c:782 +#: extension/filefuncs.c:800 msgid "fts-process: could not set element" msgstr "" -#: extension/filefuncs.c:784 +#: extension/filefuncs.c:849 msgid "fts: called with incorrect number of arguments, expecting 3" msgstr "" -#: extension/filefuncs.c:787 +#: extension/filefuncs.c:852 msgid "fts: bad first parameter" msgstr "" -#: extension/filefuncs.c:793 +#: extension/filefuncs.c:858 msgid "fts: bad second parameter" msgstr "" -#: extension/filefuncs.c:799 +#: extension/filefuncs.c:864 msgid "fts: bad third parameter" msgstr "" -#: extension/filefuncs.c:806 +#: extension/filefuncs.c:871 msgid "fts: could not flatten array\n" msgstr "" -#: extension/filefuncs.c:824 +#: extension/filefuncs.c:889 msgid "fts: ignoring sneaky FTS_NOSTAT flag. nyah, nyah, nyah." msgstr "" -#: extension/filefuncs.c:841 +#: extension/filefuncs.c:906 msgid "fts: clear_array() failed\n" msgstr "" @@ -2185,88 +2200,88 @@ msgstr "" msgid "wait: called with too many arguments" msgstr "" -#: extension/inplace.c:130 +#: extension/inplace.c:131 msgid "inplace_begin: in-place editing already active" msgstr "" -#: extension/inplace.c:133 extension/inplace.c:210 +#: extension/inplace.c:134 extension/inplace.c:211 #, c-format msgid "inplace_begin: expects 2 arguments but called with %d" msgstr "" -#: extension/inplace.c:136 +#: extension/inplace.c:137 msgid "inplace_begin: cannot retrieve 1st argument as a string filename" msgstr "" -#: extension/inplace.c:144 +#: extension/inplace.c:145 #, c-format msgid "inplace_begin: disabling in-place editing for invalid FILENAME `%s'" msgstr "" -#: extension/inplace.c:151 +#: extension/inplace.c:152 #, c-format msgid "inplace_begin: Cannot stat `%s' (%s)" msgstr "" -#: extension/inplace.c:158 +#: extension/inplace.c:159 #, c-format msgid "inplace_begin: `%s' is not a regular file" msgstr "" -#: extension/inplace.c:169 +#: extension/inplace.c:170 #, c-format msgid "inplace_begin: mkstemp(`%s') failed (%s)" msgstr "" -#: extension/inplace.c:181 +#: extension/inplace.c:182 #, c-format msgid "inplace_begin: chmod failed (%s)" msgstr "" -#: extension/inplace.c:188 +#: extension/inplace.c:189 #, c-format msgid "inplace_begin: dup(stdout) failed (%s)" msgstr "" -#: extension/inplace.c:191 +#: extension/inplace.c:192 #, c-format msgid "inplace_begin: dup2(%d, stdout) failed (%s)" msgstr "" -#: extension/inplace.c:194 +#: extension/inplace.c:195 #, c-format msgid "inplace_begin: close(%d) failed (%s)" msgstr "" -#: extension/inplace.c:213 +#: extension/inplace.c:214 msgid "inplace_end: cannot retrieve 1st argument as a string filename" msgstr "" -#: extension/inplace.c:220 +#: extension/inplace.c:221 msgid "inplace_end: in-place editing not active" msgstr "" -#: extension/inplace.c:226 +#: extension/inplace.c:227 #, c-format msgid "inplace_end: dup2(%d, stdout) failed (%s)" msgstr "" -#: extension/inplace.c:229 +#: extension/inplace.c:230 #, c-format msgid "inplace_end: close(%d) failed (%s)" msgstr "" -#: extension/inplace.c:233 +#: extension/inplace.c:234 #, c-format msgid "inplace_end: fsetpos(stdout) failed (%s)" msgstr "" -#: extension/inplace.c:246 +#: extension/inplace.c:247 #, c-format msgid "inplace_end: link(`%s', `%s') failed (%s)" msgstr "" -#: extension/inplace.c:256 +#: extension/inplace.c:257 #, c-format msgid "inplace_end: rename(`%s', `%s') failed (%s)" msgstr "" @@ -2295,7 +2310,7 @@ msgstr "" msgid "chr: called with inappropriate argument(s)" msgstr "" -#: extension/readdir.c:281 +#: extension/readdir.c:271 #, c-format msgid "dir_take_control_of: opendir/fdopendir failed: %s" msgstr "" @@ -2308,54 +2323,54 @@ msgstr "" msgid "readfile: called with no arguments" msgstr "" -#: extension/revoutput.c:125 +#: extension/revoutput.c:127 msgid "revoutput: could not initialize REVOUT variable" msgstr "" -#: extension/rwarray.c:124 extension/rwarray0.c:109 +#: extension/rwarray.c:113 extension/rwarray0.c:109 msgid "writea: called with too many arguments" msgstr "" -#: extension/rwarray.c:131 extension/rwarray0.c:116 +#: extension/rwarray.c:120 extension/rwarray0.c:116 #, c-format msgid "do_writea: argument 0 is not a string\n" msgstr "" -#: extension/rwarray.c:137 extension/rwarray0.c:122 +#: extension/rwarray.c:126 extension/rwarray0.c:122 #, c-format msgid "do_writea: argument 1 is not an array\n" msgstr "" -#: extension/rwarray.c:184 extension/rwarray0.c:169 +#: extension/rwarray.c:173 extension/rwarray0.c:169 #, c-format msgid "write_array: could not flatten array\n" msgstr "" -#: extension/rwarray.c:198 extension/rwarray0.c:183 +#: extension/rwarray.c:187 extension/rwarray0.c:183 #, c-format msgid "write_array: could not release flattened array\n" msgstr "" -#: extension/rwarray.c:280 extension/rwarray0.c:265 +#: extension/rwarray.c:269 extension/rwarray0.c:265 msgid "reada: called with too many arguments" msgstr "" -#: extension/rwarray.c:287 extension/rwarray0.c:272 +#: extension/rwarray.c:276 extension/rwarray0.c:272 #, c-format msgid "do_reada: argument 0 is not a string\n" msgstr "" -#: extension/rwarray.c:293 extension/rwarray0.c:278 +#: extension/rwarray.c:282 extension/rwarray0.c:278 #, c-format msgid "do_reada: argument 1 is not an array\n" msgstr "" -#: extension/rwarray.c:337 extension/rwarray0.c:322 +#: extension/rwarray.c:326 extension/rwarray0.c:322 #, c-format msgid "do_reada: clear_array failed\n" msgstr "" -#: extension/rwarray.c:374 extension/rwarray0.c:358 +#: extension/rwarray.c:363 extension/rwarray0.c:358 #, c-format msgid "read_array: set_array_element failed\n" msgstr "" @@ -2457,7 +2472,7 @@ msgstr "" msgid "old awk does not support regexps as value of `FS'" msgstr "" -#: field.c:1380 +#: field.c:1384 msgid "`FPAT' is a gawk extension" msgstr "" @@ -2465,28 +2480,28 @@ msgstr "" msgid "awk_value_to_node: received null retval" msgstr "" -#: gawkapi.c:384 +#: gawkapi.c:383 msgid "node_to_awk_value: received null node" msgstr "" -#: gawkapi.c:387 +#: gawkapi.c:386 msgid "node_to_awk_value: received null val" msgstr "" -#: gawkapi.c:809 +#: gawkapi.c:808 msgid "remove_element: received null array" msgstr "" -#: gawkapi.c:812 +#: gawkapi.c:811 msgid "remove_element: received null subscript" msgstr "" -#: gawkapi.c:949 +#: gawkapi.c:948 #, c-format msgid "api_flatten_array: could not convert index %d\n" msgstr "" -#: gawkapi.c:954 +#: gawkapi.c:953 #, c-format msgid "api_flatten_array: could not convert value %d\n" msgstr "" @@ -2546,472 +2561,479 @@ msgstr "" msgid "%s: option '-W %s' requires an argument\n" msgstr "" -#: io.c:423 +#: io.c:426 #, c-format msgid "command line argument `%s' is a directory: skipped" msgstr "" -#: io.c:426 io.c:544 +#: io.c:429 io.c:547 #, c-format msgid "cannot open file `%s' for reading (%s)" msgstr "" -#: io.c:671 +#: io.c:674 #, c-format msgid "close of fd %d (`%s') failed (%s)" msgstr "" -#: io.c:749 +#: io.c:752 msgid "redirection not allowed in sandbox mode" msgstr "" -#: io.c:783 +#: io.c:786 #, c-format msgid "expression in `%s' redirection only has numeric value" msgstr "" -#: io.c:789 +#: io.c:792 #, c-format msgid "expression for `%s' redirection has null string value" msgstr "" -#: io.c:794 +#: io.c:797 #, c-format msgid "filename `%s' for `%s' redirection may be result of logical expression" msgstr "" -#: io.c:842 +#: io.c:845 #, c-format msgid "unnecessary mixing of `>' and `>>' for file `%.*s'" msgstr "" -#: io.c:896 +#: io.c:902 #, c-format msgid "can't open pipe `%s' for output (%s)" msgstr "" -#: io.c:906 +#: io.c:915 #, c-format msgid "can't open pipe `%s' for input (%s)" msgstr "" -#: io.c:937 +#: io.c:946 #, c-format msgid "can't open two way pipe `%s' for input/output (%s)" msgstr "" -#: io.c:1019 +#: io.c:1030 #, c-format msgid "can't redirect from `%s' (%s)" msgstr "" -#: io.c:1022 +#: io.c:1033 #, c-format msgid "can't redirect to `%s' (%s)" msgstr "" -#: io.c:1073 +#: io.c:1084 msgid "" "reached system limit for open files: starting to multiplex file descriptors" msgstr "" -#: io.c:1089 +#: io.c:1100 #, c-format msgid "close of `%s' failed (%s)." msgstr "" -#: io.c:1097 +#: io.c:1108 msgid "too many pipes or input files open" msgstr "" -#: io.c:1119 +#: io.c:1130 msgid "close: second argument must be `to' or `from'" msgstr "" -#: io.c:1136 +#: io.c:1147 #, c-format msgid "close: `%.*s' is not an open file, pipe or co-process" msgstr "" -#: io.c:1141 +#: io.c:1152 msgid "close of redirection that was never opened" msgstr "" -#: io.c:1238 +#: io.c:1249 #, c-format msgid "close: redirection `%s' not opened with `|&', second argument ignored" msgstr "" -#: io.c:1255 +#: io.c:1266 #, c-format msgid "failure status (%d) on pipe close of `%s' (%s)" msgstr "" -#: io.c:1258 +#: io.c:1269 #, c-format msgid "failure status (%d) on file close of `%s' (%s)" msgstr "" -#: io.c:1278 +#: io.c:1289 #, c-format msgid "no explicit close of socket `%s' provided" msgstr "" -#: io.c:1281 +#: io.c:1292 #, c-format msgid "no explicit close of co-process `%s' provided" msgstr "" -#: io.c:1284 +#: io.c:1295 #, c-format msgid "no explicit close of pipe `%s' provided" msgstr "" -#: io.c:1287 +#: io.c:1298 #, c-format msgid "no explicit close of file `%s' provided" msgstr "" -#: io.c:1317 io.c:1375 main.c:632 main.c:674 +#: io.c:1328 io.c:1387 main.c:645 main.c:687 #, c-format msgid "error writing standard output (%s)" msgstr "" -#: io.c:1322 io.c:1381 main.c:634 +#: io.c:1333 io.c:1393 main.c:647 #, c-format msgid "error writing standard error (%s)" msgstr "" -#: io.c:1330 +#: io.c:1341 #, c-format msgid "pipe flush of `%s' failed (%s)." msgstr "" -#: io.c:1333 +#: io.c:1344 #, c-format msgid "co-process flush of pipe to `%s' failed (%s)." msgstr "" -#: io.c:1336 +#: io.c:1347 #, c-format msgid "file flush of `%s' failed (%s)." msgstr "" -#: io.c:1453 +#: io.c:1465 #, c-format msgid "local port %s invalid in `/inet'" msgstr "" -#: io.c:1471 +#: io.c:1483 #, c-format msgid "remote host and port information (%s, %s) invalid" msgstr "" -#: io.c:1699 +#: io.c:1711 msgid "TCP/IP communications are not supported" msgstr "" -#: io.c:1880 +#: io.c:1905 #, c-format msgid "could not open `%s', mode `%s'" msgstr "" -#: io.c:1930 +#: io.c:1961 #, c-format msgid "close of master pty failed (%s)" msgstr "" -#: io.c:1932 io.c:2118 io.c:2319 +#: io.c:1963 io.c:2141 io.c:2342 #, c-format msgid "close of stdout in child failed (%s)" msgstr "" -#: io.c:1935 +#: io.c:1966 #, c-format msgid "moving slave pty to stdout in child failed (dup: %s)" msgstr "" -#: io.c:1937 io.c:2123 +#: io.c:1968 io.c:2146 #, c-format msgid "close of stdin in child failed (%s)" msgstr "" -#: io.c:1940 +#: io.c:1971 #, c-format msgid "moving slave pty to stdin in child failed (dup: %s)" msgstr "" -#: io.c:1942 io.c:1964 +#: io.c:1973 #, c-format msgid "close of slave pty failed (%s)" msgstr "" -#: io.c:2053 io.c:2121 io.c:2290 io.c:2322 +#: io.c:2076 io.c:2144 io.c:2313 io.c:2345 #, c-format msgid "moving pipe to stdout in child failed (dup: %s)" msgstr "" -#: io.c:2060 io.c:2126 +#: io.c:2083 io.c:2149 #, c-format msgid "moving pipe to stdin in child failed (dup: %s)" msgstr "" -#: io.c:2086 io.c:2312 +#: io.c:2109 io.c:2335 msgid "restoring stdout in parent process failed\n" msgstr "" -#: io.c:2094 +#: io.c:2117 msgid "restoring stdin in parent process failed\n" msgstr "" -#: io.c:2129 io.c:2324 io.c:2339 +#: io.c:2152 io.c:2347 io.c:2362 #, c-format msgid "close of pipe failed (%s)" msgstr "" -#: io.c:2188 +#: io.c:2211 msgid "`|&' not supported" msgstr "" -#: io.c:2275 +#: io.c:2298 #, c-format msgid "cannot open pipe `%s' (%s)" msgstr "" -#: io.c:2333 +#: io.c:2356 #, c-format msgid "cannot create child process for `%s' (fork: %s)" msgstr "" -#: io.c:2760 +#: io.c:2493 +msgid "getline: attempt to read from closed read end of two-way pipe" +msgstr "" + +#: io.c:2795 msgid "register_input_parser: received NULL pointer" msgstr "" -#: io.c:2788 +#: io.c:2823 #, c-format msgid "input parser `%s' conflicts with previously installed input parser `%s'" msgstr "" -#: io.c:2795 +#: io.c:2830 #, c-format msgid "input parser `%s' failed to open `%s'" msgstr "" -#: io.c:2815 +#: io.c:2850 msgid "register_output_wrapper: received NULL pointer" msgstr "" -#: io.c:2843 +#: io.c:2878 #, c-format msgid "" "output wrapper `%s' conflicts with previously installed output wrapper `%s'" msgstr "" -#: io.c:2850 +#: io.c:2885 #, c-format msgid "output wrapper `%s' failed to open `%s'" msgstr "" -#: io.c:2871 +#: io.c:2906 msgid "register_output_processor: received NULL pointer" msgstr "" -#: io.c:2900 +#: io.c:2935 #, c-format msgid "" "two-way processor `%s' conflicts with previously installed two-way processor " "`%s'" msgstr "" -#: io.c:2909 +#: io.c:2944 #, c-format msgid "two way processor `%s' failed to open `%s'" msgstr "" -#: io.c:3034 +#: io.c:3069 #, c-format msgid "data file `%s' is empty" msgstr "" -#: io.c:3076 io.c:3084 +#: io.c:3111 io.c:3119 msgid "could not allocate more input memory" msgstr "" -#: io.c:3662 +#: io.c:3697 msgid "multicharacter value of `RS' is a gawk extension" msgstr "" -#: io.c:3809 +#: io.c:3844 msgid "IPv6 communication is not supported" msgstr "" -#: main.c:321 +#: main.c:334 msgid "environment variable `POSIXLY_CORRECT' set: turning on `--posix'" msgstr "" -#: main.c:327 +#: main.c:340 msgid "`--posix' overrides `--traditional'" msgstr "" -#: main.c:338 +#: main.c:351 msgid "`--posix'/`--traditional' overrides `--non-decimal-data'" msgstr "" -#: main.c:342 +#: main.c:355 #, c-format msgid "running %s setuid root may be a security problem" msgstr "" -#: main.c:346 +#: main.c:359 msgid "`--posix' overrides `--characters-as-bytes'" msgstr "" -#: main.c:404 +#: main.c:417 #, c-format msgid "can't set binary mode on stdin (%s)" msgstr "" -#: main.c:407 +#: main.c:420 #, c-format msgid "can't set binary mode on stdout (%s)" msgstr "" -#: main.c:409 +#: main.c:422 #, c-format msgid "can't set binary mode on stderr (%s)" msgstr "" -#: main.c:469 +#: main.c:482 msgid "no program text at all!" msgstr "" -#: main.c:563 +#: main.c:576 #, c-format msgid "Usage: %s [POSIX or GNU style options] -f progfile [--] file ...\n" msgstr "" -#: main.c:565 +#: main.c:578 #, c-format msgid "Usage: %s [POSIX or GNU style options] [--] %cprogram%c file ...\n" msgstr "" -#: main.c:570 +#: main.c:583 msgid "POSIX options:\t\tGNU long options: (standard)\n" msgstr "" -#: main.c:571 +#: main.c:584 msgid "\t-f progfile\t\t--file=progfile\n" msgstr "" -#: main.c:572 +#: main.c:585 msgid "\t-F fs\t\t\t--field-separator=fs\n" msgstr "" -#: main.c:573 +#: main.c:586 msgid "\t-v var=val\t\t--assign=var=val\n" msgstr "" -#: main.c:574 +#: main.c:587 msgid "Short options:\t\tGNU long options: (extensions)\n" msgstr "" -#: main.c:575 +#: main.c:588 msgid "\t-b\t\t\t--characters-as-bytes\n" msgstr "" -#: main.c:576 +#: main.c:589 msgid "\t-c\t\t\t--traditional\n" msgstr "" -#: main.c:577 +#: main.c:590 msgid "\t-C\t\t\t--copyright\n" msgstr "" -#: main.c:578 +#: main.c:591 msgid "\t-d[file]\t\t--dump-variables[=file]\n" msgstr "" -#: main.c:579 +#: main.c:592 msgid "\t-D[file]\t\t--debug[=file]\n" msgstr "" -#: main.c:580 +#: main.c:593 msgid "\t-e 'program-text'\t--source='program-text'\n" msgstr "" -#: main.c:581 +#: main.c:594 msgid "\t-E file\t\t\t--exec=file\n" msgstr "" -#: main.c:582 +#: main.c:595 msgid "\t-g\t\t\t--gen-pot\n" msgstr "" -#: main.c:583 +#: main.c:596 msgid "\t-h\t\t\t--help\n" msgstr "" -#: main.c:584 +#: main.c:597 msgid "\t-i includefile\t\t--include=includefile\n" msgstr "" -#: main.c:585 +#: main.c:598 msgid "\t-l library\t\t--load=library\n" msgstr "" -#: main.c:590 +#. TRANSLATORS: the "fatal" and "invalid" here are literal +#. values, they should not be translated. Thanks. +#. +#: main.c:603 msgid "\t-L[fatal|invalid]\t--lint[=fatal|invalid]\n" msgstr "" -#: main.c:591 +#: main.c:604 msgid "\t-M\t\t\t--bignum\n" msgstr "" -#: main.c:592 +#: main.c:605 msgid "\t-N\t\t\t--use-lc-numeric\n" msgstr "" -#: main.c:593 +#: main.c:606 msgid "\t-n\t\t\t--non-decimal-data\n" msgstr "" -#: main.c:594 +#: main.c:607 msgid "\t-o[file]\t\t--pretty-print[=file]\n" msgstr "" -#: main.c:595 +#: main.c:608 msgid "\t-O\t\t\t--optimize\n" msgstr "" -#: main.c:596 +#: main.c:609 msgid "\t-p[file]\t\t--profile[=file]\n" msgstr "" -#: main.c:597 +#: main.c:610 msgid "\t-P\t\t\t--posix\n" msgstr "" -#: main.c:598 +#: main.c:611 msgid "\t-r\t\t\t--re-interval\n" msgstr "" -#: main.c:599 +#: main.c:612 msgid "\t-S\t\t\t--sandbox\n" msgstr "" -#: main.c:600 +#: main.c:613 msgid "\t-t\t\t\t--lint-old\n" msgstr "" -#: main.c:601 +#: main.c:614 msgid "\t-V\t\t\t--version\n" msgstr "" -#: main.c:603 +#: main.c:616 msgid "\t-W nostalgia\t\t--nostalgia\n" msgstr "" -#: main.c:606 +#: main.c:619 msgid "\t-Y\t\t--parsedebug\n" msgstr "" @@ -3020,7 +3042,7 @@ msgstr "" #. for this application. Please add _another line_ with the #. address for translation bugs. #. no-wrap -#: main.c:615 +#: main.c:628 msgid "" "\n" "To report bugs, see node `Bugs' in `gawk.info', which is\n" @@ -3028,21 +3050,21 @@ msgid "" "\n" msgstr "" -#: main.c:619 +#: main.c:632 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:623 +#: main.c:636 msgid "" "Examples:\n" "\tgawk '{ sum += $1 }; END { print sum }' file\n" "\tgawk -F: '{ print $1 }' /etc/passwd\n" msgstr "" -#: main.c:648 +#: main.c:661 #, c-format msgid "" "Copyright (C) 1989, 1991-%d Free Software Foundation.\n" @@ -3054,7 +3076,7 @@ msgid "" "\n" msgstr "" -#: main.c:656 +#: main.c:669 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" @@ -3063,138 +3085,138 @@ msgid "" "\n" msgstr "" -#: main.c:662 +#: main.c:675 msgid "" "You should have received a copy of the GNU General Public License\n" "along with this program. If not, see http://www.gnu.org/licenses/.\n" msgstr "" -#: main.c:699 +#: main.c:712 msgid "-Ft does not set FS to tab in POSIX awk" msgstr "" -#: main.c:986 +#: main.c:999 #, c-format msgid "unknown value for field spec: %d\n" msgstr "" -#: main.c:1084 +#: main.c:1097 #, c-format msgid "" "%s: `%s' argument to `-v' not in `var=value' form\n" "\n" msgstr "" -#: main.c:1110 +#: main.c:1123 #, c-format msgid "`%s' is not a legal variable name" msgstr "" -#: main.c:1113 +#: main.c:1126 #, c-format msgid "`%s' is not a variable name, looking for file `%s=%s'" msgstr "" -#: main.c:1117 +#: main.c:1130 #, c-format msgid "cannot use gawk builtin `%s' as variable name" msgstr "" -#: main.c:1122 +#: main.c:1135 #, c-format msgid "cannot use function `%s' as variable name" msgstr "" -#: main.c:1175 +#: main.c:1190 msgid "floating point exception" msgstr "" -#: main.c:1182 +#: main.c:1197 msgid "fatal error: internal error" msgstr "" -#: main.c:1197 +#: main.c:1212 msgid "fatal error: internal error: segfault" msgstr "" -#: main.c:1209 +#: main.c:1224 msgid "fatal error: internal error: stack overflow" msgstr "" -#: main.c:1268 +#: main.c:1283 #, c-format msgid "no pre-opened fd %d" msgstr "" -#: main.c:1275 +#: main.c:1290 #, c-format msgid "could not pre-open /dev/null for fd %d" msgstr "" -#: main.c:1489 +#: main.c:1504 msgid "empty argument to `-e/--source' ignored" msgstr "" -#: main.c:1560 +#: main.c:1575 msgid "-M ignored: MPFR/GMP support not compiled in" msgstr "" -#: main.c:1581 +#: main.c:1596 #, c-format msgid "%s: option `-W %s' unrecognized, ignored\n" msgstr "" -#: main.c:1634 +#: main.c:1649 #, c-format msgid "%s: option requires an argument -- %c\n" msgstr "" -#: mpfr.c:557 +#: mpfr.c:559 #, c-format msgid "PREC value `%.*s' is invalid" msgstr "" -#: mpfr.c:615 +#: mpfr.c:617 #, c-format msgid "RNDMODE value `%.*s' is invalid" msgstr "" -#: mpfr.c:711 +#: mpfr.c:714 #, c-format msgid "%s: received non-numeric argument" msgstr "" -#: mpfr.c:820 +#: mpfr.c:824 msgid "compl(%Rg): negative value will give strange results" msgstr "" -#: mpfr.c:824 +#: mpfr.c:828 msgid "comp(%Rg): fractional value will be truncated" msgstr "" -#: mpfr.c:836 +#: mpfr.c:840 #, c-format msgid "cmpl(%Zd): negative values will give strange results" msgstr "" -#: mpfr.c:855 +#: mpfr.c:859 #, c-format msgid "%s: received non-numeric argument #%d" msgstr "" -#: mpfr.c:865 +#: mpfr.c:869 msgid "%s: argument #%d has invalid value %Rg, using 0" msgstr "" -#: mpfr.c:877 +#: mpfr.c:881 msgid "%s: argument #%d negative value %Rg will give strange results" msgstr "" -#: mpfr.c:883 +#: mpfr.c:887 msgid "%s: argument #%d fractional value %Rg will be truncated" msgstr "" -#: mpfr.c:898 +#: mpfr.c:902 #, c-format msgid "%s: argument #%d negative value %Zd will give strange results" msgstr "" @@ -3204,36 +3226,36 @@ msgstr "" msgid "cmd. line:" msgstr "" -#: node.c:418 +#: node.c:434 msgid "backslash at end of string" msgstr "" -#: node.c:497 +#: node.c:513 #, c-format msgid "old awk does not support the `\\%c' escape sequence" msgstr "" -#: node.c:548 +#: node.c:564 msgid "POSIX does not allow `\\x' escapes" msgstr "" -#: node.c:554 +#: node.c:570 msgid "no hex digits in `\\x' escape sequence" msgstr "" -#: node.c:576 +#: node.c:592 #, c-format msgid "" "hex escape \\x%.*s of %d characters probably not interpreted the way you " "expect" msgstr "" -#: node.c:591 +#: node.c:607 #, c-format msgid "escape sequence `\\%c' treated as plain `%c'" msgstr "" -#: node.c:735 +#: node.c:744 msgid "" "Invalid multibyte data detected. There may be a mismatch between your data " "and your locale." @@ -3249,144 +3271,144 @@ msgstr "" msgid "%s %s `%s': could not set close-on-exec: (fcntl F_SETFD: %s)" msgstr "" -#: profile.c:91 +#: profile.c:94 #, c-format msgid "could not open `%s' for writing: %s" msgstr "" -#: profile.c:93 +#: profile.c:96 msgid "sending profile to standard error" msgstr "" -#: profile.c:213 +#: profile.c:216 #, c-format msgid "" "\t# %s rule(s)\n" "\n" msgstr "" -#: profile.c:218 +#: profile.c:221 #, c-format msgid "" "\t# Rule(s)\n" "\n" msgstr "" -#: profile.c:292 +#: profile.c:295 #, c-format msgid "internal error: %s with null vname" msgstr "" -#: profile.c:558 +#: profile.c:561 msgid "internal error: builtin with null fname" msgstr "" -#: profile.c:978 +#: profile.c:1006 #, c-format msgid "" "\t# Loaded extensions (-l and/or @load)\n" "\n" msgstr "" -#: profile.c:1001 +#: profile.c:1029 #, c-format msgid "\t# gawk profile, created %s\n" msgstr "" -#: profile.c:1555 +#: profile.c:1600 #, c-format msgid "" "\n" "\t# Functions, listed alphabetically\n" msgstr "" -#: profile.c:1593 +#: profile.c:1638 #, c-format msgid "redir2str: unknown redirection type %d" msgstr "" -#: re.c:607 +#: re.c:610 #, c-format msgid "regexp component `%.*s' should probably be `[%.*s]'" msgstr "" -#: regcomp.c:139 +#: regcomp.c:143 msgid "Success" msgstr "" -#: regcomp.c:142 +#: regcomp.c:146 msgid "No match" msgstr "" -#: regcomp.c:145 +#: regcomp.c:149 msgid "Invalid regular expression" msgstr "" -#: regcomp.c:148 +#: regcomp.c:152 msgid "Invalid collation character" msgstr "" -#: regcomp.c:151 +#: regcomp.c:155 msgid "Invalid character class name" msgstr "" -#: regcomp.c:154 +#: regcomp.c:158 msgid "Trailing backslash" msgstr "" -#: regcomp.c:157 +#: regcomp.c:161 msgid "Invalid back reference" msgstr "" -#: regcomp.c:160 +#: regcomp.c:164 msgid "Unmatched [, [^, [:, [., or [=" msgstr "" -#: regcomp.c:163 +#: regcomp.c:167 msgid "Unmatched ( or \\(" msgstr "" -#: regcomp.c:166 +#: regcomp.c:170 msgid "Unmatched \\{" msgstr "" -#: regcomp.c:169 +#: regcomp.c:173 msgid "Invalid content of \\{\\}" msgstr "" -#: regcomp.c:172 +#: regcomp.c:176 msgid "Invalid range end" msgstr "" -#: regcomp.c:175 +#: regcomp.c:179 msgid "Memory exhausted" msgstr "" -#: regcomp.c:178 +#: regcomp.c:182 msgid "Invalid preceding regular expression" msgstr "" -#: regcomp.c:181 +#: regcomp.c:185 msgid "Premature end of regular expression" msgstr "" -#: regcomp.c:184 +#: regcomp.c:188 msgid "Regular expression too big" msgstr "" -#: regcomp.c:187 +#: regcomp.c:191 msgid "Unmatched ) or \\)" msgstr "" -#: regcomp.c:712 +#: regcomp.c:701 msgid "No previous regular expression" msgstr "" -#: symbol.c:678 +#: symbol.c:684 #, c-format msgid "function `%s': can't use function `%s' as a parameter name" msgstr "" -#: symbol.c:810 +#: symbol.c:816 msgid "can not pop main context" msgstr "" diff --git a/po/it.po b/po/it.po index 790a2b1..d57bb06 100644 --- a/po/it.po +++ b/po/it.po @@ -6,8 +6,8 @@ msgid "" msgstr "" "Project-Id-Version: GNU Awk 4.0.73, API: 0.0\n" "Report-Msgid-Bugs-To: bug-gawk@gnu.org\n" -"POT-Creation-Date: 2015-05-19 16:06+0300\n" -"PO-Revision-Date: 2015-04-27 10:10+0100\n" +"POT-Creation-Date: 2016-08-25 06:19+0300\n" +"PO-Revision-Date: 2015-05-25 19:36+0100\n" "Last-Translator: Antonio Colombo \n" "Language-Team: Italian \n" "Language: it\n" @@ -15,92 +15,92 @@ msgstr "" "Content-Type: text/plain; charset=ISO-8859-1\n" "Content-Transfer-Encoding: 8-bit\n" -#: array.c:256 +#: array.c:259 #, c-format msgid "from %s" msgstr "da %s" -#: array.c:357 +#: array.c:360 msgid "attempt to use a scalar value as array" msgstr "tentativo di usare valore scalare come vettore" -#: array.c:359 +#: array.c:362 #, c-format msgid "attempt to use scalar parameter `%s' as an array" msgstr "tentativo di usare il parametro scalare `%s' come un vettore" -#: array.c:362 +#: array.c:365 #, c-format msgid "attempt to use scalar `%s' as an array" msgstr "tentativo di usare scalare '%s' come vettore" -#: array.c:409 array.c:576 builtin.c:85 builtin.c:1606 builtin.c:1652 -#: builtin.c:1665 builtin.c:2112 builtin.c:2126 eval.c:1149 eval.c:1153 -#: eval.c:1564 +#: array.c:412 array.c:579 builtin.c:85 builtin.c:1612 builtin.c:1658 +#: builtin.c:1671 builtin.c:2160 builtin.c:2179 eval.c:1141 eval.c:1145 +#: eval.c:1556 #, c-format msgid "attempt to use array `%s' in a scalar context" msgstr "tentativo di usare vettore `%s' in un contesto scalare" -#: array.c:583 +#: array.c:586 #, c-format msgid "delete: index `%s' not in array `%s'" msgstr "delete: indice `%s' non presente nel vettore `%s'" -#: array.c:597 +#: array.c:600 #, c-format msgid "attempt to use scalar `%s[\"%.*s\"]' as an array" msgstr "tentativo di usare scalare`%s[\"%.*s\"]' come vettore" -#: array.c:776 +#: array.c:779 msgid "adump: first argument not an array" msgstr "adump: primo argomento non-vettoriale" -#: array.c:815 +#: array.c:818 msgid "asort: second argument not an array" msgstr "asort: secondo argomento non-vettoriale" -#: array.c:816 +#: array.c:819 msgid "asorti: second argument not an array" msgstr "asorti: secondo argomento non-vettoriale" -#: array.c:823 +#: array.c:826 msgid "asort: first argument not an array" msgstr "asort: primo argomento non-vettoriale" -#: array.c:824 +#: array.c:827 msgid "asorti: first argument not an array" msgstr "asorti: primo argomento non-vettoriale" -#: array.c:831 +#: array.c:834 msgid "asort: cannot use a subarray of first arg for second arg" msgstr "" "asort: non consentito un secondo argomento che sia un sottovettore del primo " "argomento" -#: array.c:832 +#: array.c:835 msgid "asorti: cannot use a subarray of first arg for second arg" msgstr "" "asorti: non consentito un secondo argomento che sia un sottovettore del " "primo argomento" -#: array.c:837 +#: array.c:840 msgid "asort: cannot use a subarray of second arg for first arg" msgstr "" "asort: non consentito un primo argomento che sia un sottovettore del secondo " "argomento" -#: array.c:838 +#: array.c:841 msgid "asorti: cannot use a subarray of second arg for first arg" msgstr "" "asorti: non consentito un primo argomento che sia un sottovettore del " "secondo argomento" -#: array.c:1313 +#: array.c:1316 #, c-format msgid "`%s' is invalid as a function name" msgstr "`%s' non è un nome funzione valido" -#: array.c:1317 +#: array.c:1320 #, c-format msgid "sort comparison function `%s' is not defined" msgstr "funzione di confronto del sort `%s' non definita" @@ -141,11 +141,11 @@ msgstr "valori di `case' doppi all'interno di uno `switch': %s" msgid "duplicate `default' detected in switch body" msgstr "valori di default doppi all'interno di uno `switch'" -#: awkgram.y:793 awkgram.y:3763 +#: awkgram.y:793 awkgram.y:3774 msgid "`break' is not allowed outside a loop or switch" msgstr "`break' non consentito fuori da un ciclo o da uno `switch'" -#: awkgram.y:802 awkgram.y:3755 +#: awkgram.y:802 awkgram.y:3766 msgid "`continue' is not allowed outside a loop" msgstr "`continue' non consentito fuori da un un ciclo" @@ -236,7 +236,7 @@ msgstr "tentativo di usare la non-funzione `%s' in una chiamata di funzione" msgid "invalid subscript expression" msgstr "espressione indice invalida" -#: awkgram.y:2047 awkgram.y:2067 gawkapi.c:206 gawkapi.c:224 msg.c:126 +#: awkgram.y:2047 awkgram.y:2067 gawkapi.c:206 gawkapi.c:223 msg.c:126 msgid "warning: " msgstr "attenzione: " @@ -244,268 +244,272 @@ msgstr "attenzione: " msgid "fatal: " msgstr "fatale: " -#: awkgram.y:2115 +#: awkgram.y:2116 msgid "unexpected newline or end of string" msgstr "carattere 'a capo' o fine stringa non previsti" -#: awkgram.y:2394 awkgram.y:2470 awkgram.y:2693 debug.c:523 debug.c:539 -#: debug.c:2812 debug.c:5055 +#: awkgram.y:2397 awkgram.y:2473 awkgram.y:2696 debug.c:523 debug.c:539 +#: debug.c:2812 debug.c:5101 #, 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:2395 awkgram.y:2520 +#: awkgram.y:2398 awkgram.y:2523 #, c-format msgid "can't open shared library `%s' for reading (%s)" msgstr "non riesco ad aprire shared library `%s' in lettura (%s)" -#: awkgram.y:2397 awkgram.y:2471 awkgram.y:2521 builtin.c:135 debug.c:5206 +#: awkgram.y:2400 awkgram.y:2474 awkgram.y:2524 builtin.c:135 debug.c:5252 msgid "reason unknown" msgstr "ragione indeterminata" -#: awkgram.y:2406 awkgram.y:2430 +#: awkgram.y:2409 awkgram.y:2433 #, c-format msgid "can't include `%s' and use it as a program file" msgstr "non riesco a includere `%s' per usarlo come file di programma" -#: awkgram.y:2419 +#: awkgram.y:2422 #, c-format msgid "already included source file `%s'" msgstr "file sorgente `%s' già incluso" -#: awkgram.y:2420 +#: awkgram.y:2423 #, c-format msgid "already loaded shared library `%s'" msgstr "shared library `%s' già inclusa" -#: awkgram.y:2455 +#: awkgram.y:2458 msgid "@include is a gawk extension" msgstr "@include è un'estensione gawk" -#: awkgram.y:2461 +#: awkgram.y:2464 msgid "empty filename after @include" msgstr "nome-file mancante dopo @include" -#: awkgram.y:2505 +#: awkgram.y:2508 msgid "@load is a gawk extension" msgstr "@load è un'estensione gawk" -#: awkgram.y:2511 +#: awkgram.y:2514 msgid "empty filename after @load" msgstr "nome-file mancante dopo @include" -#: awkgram.y:2645 +#: awkgram.y:2648 msgid "empty program text on command line" msgstr "programma nullo sulla riga comandi" -#: awkgram.y:2760 +#: awkgram.y:2763 #, c-format msgid "can't read sourcefile `%s' (%s)" msgstr "non riesco a leggere file sorgente `%s' (%s)" -#: awkgram.y:2771 +#: awkgram.y:2774 #, c-format msgid "source file `%s' is empty" msgstr "file sorgente `%s' vuoto" -#: awkgram.y:2830 +#: awkgram.y:2833 #, c-format msgid "PEBKAC error: invalid character '\\%03o' in source code" msgstr "errore PEBKAC: carattere invalido '\\%03o' nel codice sorgente" -#: awkgram.y:2961 +#: awkgram.y:2964 msgid "source file does not end in newline" msgstr "file sorgente non termina con carattere 'a capo'" -#: awkgram.y:3074 +#: awkgram.y:3081 msgid "unterminated regexp ends with `\\' at end of file" msgstr "espressione regolare non completata termina con `\\' a fine file" -#: awkgram.y:3101 +#: awkgram.y:3108 #, 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:3105 +#: awkgram.y:3112 #, 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:3112 +#: awkgram.y:3119 msgid "unterminated regexp" msgstr "espressione regolare non completata" -#: awkgram.y:3116 +#: awkgram.y:3123 msgid "unterminated regexp at end of file" msgstr "espressione regolare non completata a fine file" -#: awkgram.y:3174 +#: awkgram.y:3181 msgid "use of `\\ #...' line continuation is not portable" msgstr "uso di `\\ #...' continuazione riga non portabile" -#: awkgram.y:3190 +#: awkgram.y:3197 msgid "backslash not last character on line" msgstr "'\\' non è l'ultimo carattere della riga" -#: awkgram.y:3251 +#: awkgram.y:3235 awkgram.y:3237 +msgid "multidimensional arrays are a gawk extension" +msgstr "i vettori multidimensionali sono un'estensione gawk" + +#: awkgram.y:3262 msgid "POSIX does not allow operator `**='" msgstr "POSIX non permette l'operatore `**='" -#: awkgram.y:3253 +#: awkgram.y:3264 msgid "old awk does not support operator `**='" msgstr "il vecchio awk non supporta l'operatore `**='" -#: awkgram.y:3262 +#: awkgram.y:3273 msgid "POSIX does not allow operator `**'" msgstr "POSIX non permette l'operatore `**'" -#: awkgram.y:3264 +#: awkgram.y:3275 msgid "old awk does not support operator `**'" msgstr "il vecchio awk non supporta l'operatore `**'" -#: awkgram.y:3299 +#: awkgram.y:3310 msgid "operator `^=' is not supported in old awk" msgstr "l'operatore `^=' non è supportato nel vecchio awk" -#: awkgram.y:3307 +#: awkgram.y:3318 msgid "operator `^' is not supported in old awk" msgstr "l'operatore `^' non è supportato nel vecchio awk" -#: awkgram.y:3404 awkgram.y:3422 command.y:1180 +#: awkgram.y:3415 awkgram.y:3433 command.y:1187 msgid "unterminated string" msgstr "stringa non terminata" -#: awkgram.y:3643 +#: awkgram.y:3654 #, c-format msgid "invalid char '%c' in expression" msgstr "carattere '%c' non valido in un'espressione" -#: awkgram.y:3690 +#: awkgram.y:3701 #, c-format msgid "`%s' is a gawk extension" msgstr "`%s' è un'estensione gawk" -#: awkgram.y:3695 +#: awkgram.y:3706 #, c-format msgid "POSIX does not allow `%s'" msgstr "POSIX non permette `%s'" -#: awkgram.y:3703 +#: awkgram.y:3714 #, c-format msgid "`%s' is not supported in old awk" msgstr "`%s' non è supportato nel vecchio awk" -#: awkgram.y:3793 +#: awkgram.y:3804 msgid "`goto' considered harmful!\n" msgstr "`goto' considerato pericoloso!\n" -#: awkgram.y:3827 +#: awkgram.y:3873 #, c-format msgid "%d is invalid as number of arguments for %s" msgstr "%d non valido come numero di argomenti per %s" -#: awkgram.y:3862 +#: awkgram.y:3908 #, 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:3867 +#: awkgram.y:3913 #, c-format msgid "%s third parameter is not a changeable object" msgstr "il terzo parametro di '%s' non è un oggetto modificabile" -#: awkgram.y:3950 awkgram.y:3953 +#: awkgram.y:3996 awkgram.y:3999 msgid "match: third argument is a gawk extension" msgstr "match: il terzo argomento è un'estensione gawk" -#: awkgram.y:4007 awkgram.y:4010 +#: awkgram.y:4053 awkgram.y:4056 msgid "close: second argument is a gawk extension" msgstr "close: il secondo argomento è un'estensione gawk" -#: awkgram.y:4022 +#: awkgram.y:4068 msgid "use of dcgettext(_\"...\") is incorrect: remove leading underscore" msgstr "" "uso scorretto di dcgettext(_\"...\"): togliere il carattere '_' iniziale" -#: awkgram.y:4037 +#: awkgram.y:4083 msgid "use of dcngettext(_\"...\") is incorrect: remove leading underscore" msgstr "" "uso scorretto di dcngettext(_\"...\"): togliere il carattere '_' iniziale" -#: awkgram.y:4056 +#: awkgram.y:4102 msgid "index: regexp constant as second argument is not allowed" msgstr "index: espressione regolare come secondo argomento non consentita" -#: awkgram.y:4109 +#: awkgram.y:4155 #, c-format msgid "function `%s': parameter `%s' shadows global variable" msgstr "funzione `%s': parametro `%s' nasconde variabile globale" -#: awkgram.y:4166 debug.c:4041 debug.c:4084 debug.c:5204 +#: awkgram.y:4214 debug.c:4087 debug.c:4130 debug.c:5250 #, c-format msgid "could not open `%s' for writing (%s)" msgstr "non riesco ad aprire `%s' in scrittura (%s)" -#: awkgram.y:4167 +#: awkgram.y:4215 msgid "sending variable list to standard error" msgstr "mando lista variabili a 'standard error'" -#: awkgram.y:4175 +#: awkgram.y:4223 #, c-format msgid "%s: close failed (%s)" msgstr "%s: `close' non riuscita (%s)" -#: awkgram.y:4200 +#: awkgram.y:4248 msgid "shadow_funcs() called twice!" msgstr "shadow_funcs() chiamata due volte!" -#: awkgram.y:4208 +#: awkgram.y:4256 msgid "there were shadowed variables." msgstr "c'erano variabili nascoste." -#: awkgram.y:4279 +#: awkgram.y:4327 #, c-format msgid "function name `%s' previously defined" msgstr "funzione di nome `%s' definita in precedenza" -#: awkgram.y:4325 +#: awkgram.y:4373 #, c-format msgid "function `%s': can't use function name as parameter name" msgstr "" "funzione `%s': non è possibile usare nome della funzione come nome parametro" -#: awkgram.y:4328 +#: awkgram.y:4376 #, c-format msgid "function `%s': can't use special variable `%s' as a function parameter" msgstr "" "funzione `%s': non è possibile usare la variabile speciale `%s' come " "parametro di funzione" -#: awkgram.y:4336 +#: awkgram.y:4384 #, c-format msgid "function `%s': parameter #%d, `%s', duplicates parameter #%d" msgstr "funzione `%s': parametro #%d, `%s', duplica parametro #%d" -#: awkgram.y:4423 awkgram.y:4429 +#: awkgram.y:4471 awkgram.y:4477 #, c-format msgid "function `%s' called but never defined" msgstr "funzione `%s' chiamata ma mai definita" -#: awkgram.y:4433 +#: awkgram.y:4481 #, c-format msgid "function `%s' defined but never called directly" msgstr "funzione `%s' definita ma mai chiamata direttamente" -#: awkgram.y:4465 +#: awkgram.y:4513 #, 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:4480 +#: awkgram.y:4528 #, c-format msgid "" "function `%s' called with space between name and `(',\n" @@ -514,23 +518,23 @@ msgstr "" "funzione `%s' chiamata con spazio tra il nome e `(',\n" "o usata come variabile o vettore" -#: awkgram.y:4686 +#: awkgram.y:4734 msgid "division by zero attempted" msgstr "tentativo di dividere per zero" -#: awkgram.y:4695 +#: awkgram.y:4743 #, c-format msgid "division by zero attempted in `%%'" msgstr "tentativo di dividere per zero in `%%'" -#: awkgram.y:5015 +#: awkgram.y:5064 msgid "" "cannot assign a value to the result of a field post-increment expression" msgstr "" "impossibile assegnare un valore al risultato di un'espressione di post-" "incremento di un campo" -#: awkgram.y:5018 +#: awkgram.y:5067 #, c-format msgid "invalid target of assignment (opcode %s)" msgstr "destinazione di assegnazione non valida (codice operativo %s)" @@ -566,203 +570,216 @@ msgid "fflush: cannot flush: file `%s' opened for reading, not writing" msgstr "" "fflush: non riesco a scaricare: file `%s' aperto in lettura, non in scrittura" -#: builtin.c:244 +#: builtin.c:241 +#, c-format +msgid "fflush: cannot flush: two-way pipe `%s' has closed write end" +msgstr "" +"fflush: non riesco a scaricare: `pipe' bidirezionale `%s' ha chiuso il lato " +"in scrittura" + +#: builtin.c:247 #, 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:351 +#: builtin.c:354 msgid "index: received non-string first argument" msgstr "index: il primo argomento ricevuto non è una stringa" -#: builtin.c:353 +#: builtin.c:356 msgid "index: received non-string second argument" msgstr "index: il secondo argomento ricevuto non è una stringa" -#: builtin.c:466 mpfr.c:777 +#: builtin.c:469 mpfr.c:781 msgid "int: received non-numeric argument" msgstr "int: l'argomento ricevuto non è numerico" -#: builtin.c:503 +#: builtin.c:506 msgid "length: received array argument" msgstr "length: l'argomento ricevuto è un vettore" -#: builtin.c:506 +#: builtin.c:509 msgid "`length(array)' is a gawk extension" msgstr "`length(array)' è un'estensione gawk" -#: builtin.c:525 +#: builtin.c:528 msgid "length: received non-string argument" msgstr "length: l'argomento ricevuto non è una stringa" -#: builtin.c:554 +#: builtin.c:557 msgid "log: received non-numeric argument" msgstr "log: l'argomento ricevuto non è numerico" -#: builtin.c:557 +#: builtin.c:560 #, c-format msgid "log: received negative argument %g" msgstr "log: argomento ricevuto negativo %g" -#: builtin.c:755 builtin.c:760 builtin.c:911 +#: builtin.c:758 builtin.c:763 builtin.c:914 msgid "fatal: must use `count$' on all formats or none" msgstr "fatale: `count$' va usato per tutti i formati o per nessuno" -#: builtin.c:830 +#: builtin.c:833 #, c-format msgid "field width is ignored for `%%' specifier" msgstr "larghezza campo ignorata per la specifica `%%'" -#: builtin.c:832 +#: builtin.c:835 #, c-format msgid "precision is ignored for `%%' specifier" msgstr "precisione ignorata per la specifica `%%'" -#: builtin.c:834 +#: builtin.c:837 #, c-format msgid "field width and precision are ignored for `%%' specifier" msgstr "larghezza campo e precisone ignorate per la specifica `%%'" -#: builtin.c:885 +#: builtin.c:888 msgid "fatal: `$' is not permitted in awk formats" msgstr "fatale: operatore `$' non consentito nei formati awk" -#: builtin.c:894 +#: builtin.c:897 msgid "fatal: arg count with `$' must be > 0" msgstr "fatale: numero argomenti con `$' dev'essere > 0" -#: builtin.c:898 +#: builtin.c:901 #, c-format msgid "fatal: arg count %ld greater than total number of supplied arguments" msgstr "fatale: numero argomenti %ld > del numero totale argomenti specificati" -#: builtin.c:902 +#: builtin.c:905 msgid "fatal: `$' not permitted after period in format" msgstr "fatale: `$' non consentito dopo il punto in un formato" -#: builtin.c:921 +#: builtin.c:924 msgid "fatal: no `$' supplied for positional field width or precision" msgstr "fatale: manca `$' per i campi posizionali larghezza o precisione" -#: builtin.c:991 +#: builtin.c:994 msgid "`l' is meaningless in awk formats; ignored" msgstr "`l' non ha senso nei formati awk; ignorato" -#: builtin.c:995 +#: builtin.c:998 msgid "fatal: `l' is not permitted in POSIX awk formats" msgstr "fatale: `l' non consentito nei formati POSIX awk" -#: builtin.c:1008 +#: builtin.c:1011 msgid "`L' is meaningless in awk formats; ignored" msgstr "`L' non ha senso nei formati awk; ignorato" -#: builtin.c:1012 +#: builtin.c:1015 msgid "fatal: `L' is not permitted in POSIX awk formats" msgstr "fatale: `L' non consentito nei formati POSIX awk" -#: builtin.c:1025 +#: builtin.c:1028 msgid "`h' is meaningless in awk formats; ignored" msgstr "`h' non ha senso nei formati awk; ignorato" -#: builtin.c:1029 +#: builtin.c:1032 msgid "fatal: `h' is not permitted in POSIX awk formats" msgstr "fatale: `h' non consentito nei formati POSIX awk" -#: builtin.c:1055 +#: builtin.c:1058 #, c-format msgid "[s]printf: value %g is too big for %%c format" msgstr "[s]printf: valore %g troppo elevato per il formato %%c" -#: builtin.c:1068 +#: builtin.c:1071 #, c-format msgid "[s]printf: value %g is not a valid wide character" msgstr "[s]printf: valore %g non è un carattere multibyte valido " -#: builtin.c:1454 +#: builtin.c:1457 #, c-format msgid "[s]printf: value %g is out of range for `%%%c' format" msgstr "[s]printf: valore %g fuori intervallo per il formato `%%%c'" -#: builtin.c:1552 +#: builtin.c:1555 #, c-format msgid "ignoring unknown format specifier character `%c': no argument converted" msgstr "carattere di formato ignoto `%c' ignorato: nessun argomento convertito" -#: builtin.c:1557 +#: builtin.c:1560 msgid "fatal: not enough arguments to satisfy format string" msgstr "" "fatale: argomenti in numero minore di quelli richiesti dalla stringa di " "formato" -#: builtin.c:1559 +#: builtin.c:1562 msgid "^ ran out for this one" msgstr "^ esauriti a questo punto" -#: builtin.c:1566 +#: builtin.c:1569 msgid "[s]printf: format specifier does not have control letter" msgstr "[s]printf: specifica di formato senza un carattere di controllo" -#: builtin.c:1569 +#: builtin.c:1572 msgid "too many arguments supplied for format string" msgstr "troppi argomenti specificati per questa stringa di formato" -#: builtin.c:1625 +#: builtin.c:1631 msgid "sprintf: no arguments" msgstr "sprintf: nessun argomento" -#: builtin.c:1648 builtin.c:1659 +#: builtin.c:1654 builtin.c:1665 msgid "printf: no arguments" msgstr "printf: nessun argomento" -#: builtin.c:1702 +#: builtin.c:1676 +msgid "printf: attempt to write to closed write end of two-way pipe" +msgstr "" +"printf: tentativo di scrivere al lato in scrittura, chiuso, di una `pipe' " +"bidirezionale" + +#: builtin.c:1713 msgid "sqrt: received non-numeric argument" msgstr "sqrt: l'argomento ricevuto non è numerico" -#: builtin.c:1706 +#: builtin.c:1717 #, c-format msgid "sqrt: called with negative argument %g" msgstr "sqrt: chiamata con argomento negativo %g" -#: builtin.c:1737 +#: builtin.c:1748 #, c-format msgid "substr: length %g is not >= 1" msgstr "substr: lunghezza %g non >= 1" -#: builtin.c:1739 +#: builtin.c:1750 #, c-format msgid "substr: length %g is not >= 0" msgstr "substr: lunghezza %g non >= 0" -#: builtin.c:1753 +#: builtin.c:1764 #, c-format msgid "substr: non-integer length %g will be truncated" msgstr "substr: lunghezza non intera %g: sarà troncata" -#: builtin.c:1758 +#: builtin.c:1769 #, 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:1770 +#: builtin.c:1781 #, c-format msgid "substr: start index %g is invalid, using 1" msgstr "substr: indice di partenza %g non valido, uso 1" -#: builtin.c:1775 +#: builtin.c:1786 #, c-format msgid "substr: non-integer start index %g will be truncated" msgstr "substr: indice di partenza non intero %g: sarà troncato" -#: builtin.c:1798 +#: builtin.c:1809 msgid "substr: source string is zero length" msgstr "substr: stringa di partenza lunga zero" -#: builtin.c:1812 +#: builtin.c:1823 #, 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:1820 +#: builtin.c:1831 #, c-format msgid "" "substr: length %g at start index %g exceeds length of first argument (%lu)" @@ -770,315 +787,320 @@ msgstr "" "substr: lunghezza %g all'indice di partenza %g supera la lunghezza del primo " "argomento (%lu)" -#: builtin.c:1892 +#: builtin.c:1903 msgid "strftime: format value in PROCINFO[\"strftime\"] has numeric type" msgstr "" "strftime: il valore del formato in PROCINFO[\"strftime\"] è di tipo numerico" -#: builtin.c:1915 +#: builtin.c:1926 msgid "strftime: received non-numeric second argument" msgstr "strftime: il secondo argomento ricevuto non è numerico" -#: builtin.c:1925 +#: builtin.c:1936 msgid "strftime: second argument less than 0 or too big for time_t" msgstr "strftime: il secondo argomento è < 0 o troppo elevato per time_t" -#: builtin.c:1932 -#, fuzzy +#: builtin.c:1943 msgid "strftime: second argument out of range for time_t" -msgstr "strftime: il secondo argomento è < 0 o troppo elevato per time_t" +msgstr "strftime: il secondo argomento è fuori intervallo per time_t" -#: builtin.c:1941 +#: builtin.c:1952 msgid "strftime: received non-string first argument" msgstr "strftime: il primo argomento ricevuto non è una stringa" -#: builtin.c:1948 +#: builtin.c:1959 msgid "strftime: received empty format string" msgstr "strftime: il formato ricevuto è una stringa nulla" -#: builtin.c:2017 +#: builtin.c:2028 msgid "mktime: received non-string argument" msgstr "mktime: l'argomento ricevuto non è una stringa" -#: builtin.c:2034 +#: builtin.c:2045 msgid "mktime: at least one of the values is out of the default range" msgstr "mktime: almeno un valore è fuori dall'intervallo di default" -#: builtin.c:2069 +#: builtin.c:2081 msgid "'system' function not allowed in sandbox mode" msgstr "funzione 'system' non consentita in modo `sandbox'" -#: builtin.c:2074 +#: builtin.c:2086 msgid "system: received non-string argument" msgstr "system: l'argomento ricevuto non è una stringa" -#: builtin.c:2194 +#: builtin.c:2165 builtin.c:2230 +msgid "print: attempt to write to closed write end of two-way pipe" +msgstr "" +"print: tentativo di scrivere al lato in scrittura, chiuso, di una `pipe' " +"bidirezionale" + +#: builtin.c:2248 #, c-format msgid "reference to uninitialized field `$%d'" msgstr "riferimento a variabile non inizializzata `$%d'" -#: builtin.c:2279 +#: builtin.c:2333 msgid "tolower: received non-string argument" msgstr "tolower: l'argomento ricevuto non è una stringa" -#: builtin.c:2310 +#: builtin.c:2364 msgid "toupper: received non-string argument" msgstr "toupper: l'argomento ricevuto non è una stringa" -#: builtin.c:2343 mpfr.c:679 +#: builtin.c:2397 mpfr.c:681 msgid "atan2: received non-numeric first argument" msgstr "atan2: il primo argomento ricevuto non è numerico" -#: builtin.c:2345 mpfr.c:681 +#: builtin.c:2399 mpfr.c:683 msgid "atan2: received non-numeric second argument" msgstr "atan2: il secondo argomento ricevuto non è numerico" -#: builtin.c:2364 +#: builtin.c:2418 msgid "sin: received non-numeric argument" msgstr "sin: l'argomento ricevuto non è numerico" -#: builtin.c:2380 +#: builtin.c:2434 msgid "cos: received non-numeric argument" msgstr "cos: l'argomento ricevuto non è numerico" -#: builtin.c:2433 mpfr.c:1176 +#: builtin.c:2487 mpfr.c:1180 msgid "srand: received non-numeric argument" msgstr "srand: l'argomento ricevuto non è numerico" -#: builtin.c:2464 +#: builtin.c:2518 msgid "match: third argument is not an array" msgstr "match: terzo argomento non-vettoriale" -#: builtin.c:2725 +#: builtin.c:2779 #, c-format msgid "gensub: third argument `%.*s' treated as 1" msgstr "gensub: il terzo argomento `%.*s' trattato come 1" -#: builtin.c:2740 +#: builtin.c:2794 #, c-format msgid "gensub: third argument %g treated as 1" msgstr "gensub: il terzo argomento %g trattato come 1" -#: builtin.c:3038 -#, fuzzy, c-format +#: builtin.c:3096 +#, c-format msgid "%s: can be called indirectly only with two arguments" -msgstr "and: chiamata con meno di due argomenti" +msgstr "%s: può essere chiamata indirettamente solo con due argomenti" -#: builtin.c:3128 -#, fuzzy, c-format +#: builtin.c:3186 +#, c-format msgid "indirect call to %s requires at least two arguments" -msgstr "and: chiamata con meno di due argomenti" +msgstr "chiamata indiretta a %s richiede almeno due argomenti" -#: builtin.c:3180 +#: builtin.c:3238 msgid "lshift: received non-numeric first argument" msgstr "lshift: il primo argomento ricevuto non è numerico" -#: builtin.c:3182 +#: builtin.c:3240 msgid "lshift: received non-numeric second argument" msgstr "lshift: il secondo argomento ricevuto non è numerico" -#: builtin.c:3188 +#: builtin.c:3246 #, c-format msgid "lshift(%f, %f): negative values will give strange results" msgstr "lshift(%f, %f): valori negativi daranno risultati strani" -#: builtin.c:3190 +#: builtin.c:3248 #, c-format msgid "lshift(%f, %f): fractional values will be truncated" msgstr "lshift(%f, %f): valori decimali saranno troncati" -#: builtin.c:3192 +#: builtin.c:3250 #, c-format msgid "lshift(%f, %f): too large shift value will give strange results" msgstr "lshift(%f, %f): valori troppo alti daranno risultati strani" -#: builtin.c:3217 +#: builtin.c:3275 msgid "rshift: received non-numeric first argument" msgstr "rshift: il primo argomento ricevuto non è numerico" -#: builtin.c:3219 +#: builtin.c:3277 msgid "rshift: received non-numeric second argument" msgstr "rshift: il secondo argomento ricevuto non è numerico" -#: builtin.c:3225 +#: builtin.c:3283 #, c-format msgid "rshift(%f, %f): negative values will give strange results" msgstr "rshift(%f, %f): valori negativi daranno risultati strani" -#: builtin.c:3227 +#: builtin.c:3285 #, c-format msgid "rshift(%f, %f): fractional values will be truncated" msgstr "rshift(%f, %f): valori decimali saranno troncati" -#: builtin.c:3229 +#: builtin.c:3287 #, c-format msgid "rshift(%f, %f): too large shift value will give strange results" msgstr "rshift(%f, %f): valori troppo alti daranno risultati strani" -#: builtin.c:3254 mpfr.c:988 +#: builtin.c:3312 mpfr.c:992 msgid "and: called with less than two arguments" msgstr "and: chiamata con meno di due argomenti" -#: builtin.c:3259 +#: builtin.c:3317 #, c-format msgid "and: argument %d is non-numeric" msgstr "and: l'argomento %d non è numerico" -#: builtin.c:3263 +#: builtin.c:3321 #, c-format msgid "and: argument %d negative value %g will give strange results" msgstr "and: argomento %d, valore negativo %g darà risultati strani" -#: builtin.c:3286 mpfr.c:1020 +#: builtin.c:3344 mpfr.c:1024 msgid "or: called with less than two arguments" msgstr "or: chiamata con meno di due argomenti" -#: builtin.c:3291 +#: builtin.c:3349 #, c-format msgid "or: argument %d is non-numeric" msgstr "or: l'argomento %d non è numerico" -#: builtin.c:3295 +#: builtin.c:3353 #, c-format msgid "or: argument %d negative value %g will give strange results" msgstr "or: argomento %d, valore negativo %g darà risultati strani" -#: builtin.c:3317 mpfr.c:1051 +#: builtin.c:3375 mpfr.c:1055 msgid "xor: called with less than two arguments" msgstr "xor: chiamata con meno di due argomenti" -#: builtin.c:3323 +#: builtin.c:3381 #, c-format msgid "xor: argument %d is non-numeric" msgstr "xor: l'argomento %d non è numerico" -#: builtin.c:3327 +#: builtin.c:3385 #, c-format msgid "xor: argument %d negative value %g will give strange results" msgstr "xor: argomento %d, valore negativo %g darà risultati strani" -#: builtin.c:3352 mpfr.c:807 +#: builtin.c:3410 mpfr.c:811 msgid "compl: received non-numeric argument" msgstr "compl: l'argomento ricevuto non è numerico" -#: builtin.c:3358 +#: builtin.c:3416 #, c-format msgid "compl(%f): negative value will give strange results" msgstr "compl(%f): valore negativo, darà risultati strani" -#: builtin.c:3360 +#: builtin.c:3418 #, c-format msgid "compl(%f): fractional value will be truncated" msgstr "compl(%f): valori decimali saranno troncati" -#: builtin.c:3529 +#: builtin.c:3588 #, c-format msgid "dcgettext: `%s' is not a valid locale category" msgstr "dcgettext: `%s' non è una categoria `locale' valida" -#: command.y:225 +#: command.y:226 #, c-format msgid "Type (g)awk statement(s). End with the command \"end\"\n" msgstr "Immetti istruzioni (g)awk. Termina col comando \"end\"\n" -#: command.y:289 +#: command.y:290 #, c-format msgid "invalid frame number: %d" msgstr "numero elemento non valido: %d" -#: command.y:295 +#: command.y:296 #, c-format msgid "info: invalid option - \"%s\"" msgstr "info: opzione non valida - \"%s\"" -#: command.y:321 +#: command.y:322 #, c-format msgid "source \"%s\": already sourced." msgstr "sorgente \"%s\": già immesso." -#: command.y:326 +#: command.y:327 #, c-format msgid "save \"%s\": command not permitted." msgstr "save \"%s\": comando non consentito." -#: command.y:339 +#: command.y:340 msgid "Can't use command `commands' for breakpoint/watchpoint commands" msgstr "" "Non è possibile usare il comando `commands' con comandi di breakpoint/" "watchpoint" -#: command.y:341 +#: command.y:342 msgid "no breakpoint/watchpoint has been set yet" msgstr "non è stato ancora impostato alcun breakpoint/watchpoint" -#: command.y:343 +#: command.y:344 msgid "invalid breakpoint/watchpoint number" msgstr "numero di breakpoint/watchpoint non valido" -#: command.y:348 +#: command.y:349 #, c-format msgid "Type commands for when %s %d is hit, one per line.\n" msgstr "Immetti comandi per quando si incontra %s %d, uno per riga.\n" -#: command.y:350 +#: command.y:351 #, c-format msgid "End with the command \"end\"\n" msgstr "Termina col comando \"end\"\n" -#: command.y:357 +#: command.y:358 msgid "`end' valid only in command `commands' or `eval'" msgstr "`end' valido solo nei comandi `commands' o `eval'" -#: command.y:367 +#: command.y:368 msgid "`silent' valid only in command `commands'" msgstr "`silent' valido solo nel comando `commands'" -#: command.y:373 +#: command.y:374 #, c-format msgid "trace: invalid option - \"%s\"" msgstr "trace: opzione non valida - \"%s\"" -#: command.y:387 +#: command.y:388 msgid "condition: invalid breakpoint/watchpoint number" msgstr "condition: numero di breakpoint/watchpoint non valido" -#: command.y:449 +#: command.y:450 msgid "argument not a string" msgstr "l'argomento non è una stringa" -#: command.y:459 command.y:464 +#: command.y:460 command.y:465 #, c-format msgid "option: invalid parameter - \"%s\"" msgstr "option: paramtro non valido - \"%s\"" -#: command.y:474 +#: command.y:475 #, c-format msgid "no such function - \"%s\"" msgstr "funzione non esistente - \"%s\"" -#: command.y:531 +#: command.y:532 #, c-format msgid "enable: invalid option - \"%s\"" msgstr "enable: opzione non valida - \"%s\"" -#: command.y:597 +#: command.y:598 #, c-format msgid "invalid range specification: %d - %d" msgstr "intervallo specificato non valido: %d - %d" -#: command.y:659 +#: command.y:660 msgid "non-numeric value for field number" msgstr "valore non-numerico per campo numerico" -#: command.y:680 command.y:687 +#: command.y:681 command.y:688 msgid "non-numeric value found, numeric expected" msgstr "trovato valore non-numerico, invece che numerico" -#: command.y:712 command.y:718 +#: command.y:713 command.y:719 msgid "non-zero integer value" msgstr "valore intero diverso da zero" -#: command.y:817 +#: command.y:818 msgid "" "backtrace [N] - print trace of all or N innermost (outermost if N < 0) " "frames." @@ -1086,17 +1108,17 @@ msgstr "" "backtrace [N] - stampe trace di tutti gli elementi o degli N più interni " "(più esterni se N <0)" -#: command.y:819 +#: command.y:820 msgid "" "break [[filename:]N|function] - set breakpoint at the specified location." msgstr "" "break [[nome-file:]N|funzione] - metti breakpoint nel punto specificato." -#: command.y:821 +#: command.y:822 msgid "clear [[filename:]N|function] - delete breakpoints previously set." msgstr "clear [[nome-file:]N|funzione] - togli breakpoint impostati prima." -#: command.y:823 +#: command.y:824 msgid "" "commands [num] - starts a list of commands to be executed at a " "breakpoint(watchpoint) hit." @@ -1104,68 +1126,72 @@ msgstr "" "commands [num] - inizia una lista di comandi da eseguire se si raggiunge un " "breakpoint (watchpoint)." -#: command.y:825 +#: command.y:826 msgid "condition num [expr] - set or clear breakpoint or watchpoint condition." msgstr "" "condition num [espr.] - imposta o togli condizione di breakpoint o " "watchpoint." -#: command.y:827 +#: command.y:828 msgid "continue [COUNT] - continue program being debugged." msgstr "continue [COUNT] - continua il programma che stai testando." -#: command.y:829 +#: command.y:830 msgid "delete [breakpoints] [range] - delete specified breakpoints." msgstr "delete [breakpoints] [range] - togli breakpoint specificati." -#: command.y:831 +#: command.y:832 msgid "disable [breakpoints] [range] - disable specified breakpoints." msgstr "disbale [breakpoints] [range] - disabilita breakpoint specificati." -#: command.y:833 +#: command.y:834 msgid "display [var] - print value of variable each time the program stops." msgstr "display [var] - stampa valore variabile a ogni arresto di programma." -#: command.y:835 +#: command.y:836 msgid "down [N] - move N frames down the stack." msgstr "down [N] - discendi N elementi nello stack." -#: command.y:837 +#: command.y:838 msgid "dump [filename] - dump instructions to file or stdout." msgstr "dump [nome-file] - elenca istruzioni su file o stdout." -#: command.y:839 +#: command.y:840 msgid "enable [once|del] [breakpoints] [range] - enable specified breakpoints." msgstr "" "enable [once|del] [breakpoints] [range] - abilita breakpoint specificati." -#: command.y:841 +#: command.y:842 msgid "end - end a list of commands or awk statements." msgstr "end - termina una lista di comandi o istruzioni awk." -#: command.y:843 +#: command.y:844 msgid "eval stmt|[p1, p2, ...] - evaluate awk statement(s)." msgstr "eval stmt|[p1, p2, ...] - calcola valore di istruzione/i awk." -#: command.y:845 +#: command.y:846 +msgid "exit - (same as quit) exit debugger." +msgstr "exit - (equivale a quit) esci dal debugger." + +#: command.y:848 msgid "finish - execute until selected stack frame returns." msgstr "finish - esegui fino al ritorno dell'elemento di stack selezionato." -#: command.y:847 +#: command.y:850 msgid "frame [N] - select and print stack frame number N." msgstr "frame [N] - seleziona e stampa elemento di stack numero N." -#: command.y:849 +#: command.y:852 msgid "help [command] - print list of commands or explanation of command." msgstr "help [command] - stampa lista comandi o spiegazione di un comando." -#: command.y:851 +#: command.y:854 msgid "ignore N COUNT - set ignore-count of breakpoint number N to COUNT." msgstr "" "ignore N CONTATORE - imposta a CONTATORE il numero delle volte in cui " "ignorare il breakpoint numero N." -#: command.y:853 +#: command.y:856 msgid "" "info topic - source|sources|variables|functions|break|frame|args|locals|" "display|watch." @@ -1173,92 +1199,92 @@ msgstr "" "info argomento - source|sources|variables|functions|break|frame|args|locals|" "display|watch." -#: command.y:855 +#: command.y:858 msgid "list [-|+|[filename:]lineno|function|range] - list specified line(s)." msgstr "" "list [-|+|[nome-file:]num_riga|funzione|intervallo] - elenca riga/he " "richiesta/e." -#: command.y:857 +#: command.y:860 msgid "next [COUNT] - step program, proceeding through subroutine calls." msgstr "" "next [COUNT] - esegui la/e prossima/e istruzione/i, incluse chiamate a " "subroutine." -#: command.y:859 +#: command.y:862 msgid "" "nexti [COUNT] - step one instruction, but proceed through subroutine calls." msgstr "" "nexti [COUNT] - esegui la prossima istruzione, anche se è una chiamate a " "subroutine." -#: command.y:861 +#: command.y:864 msgid "option [name[=value]] - set or display debugger option(s)." msgstr "option [name[=value]] - imposta o mostra opzione/i debugger." -#: command.y:863 +#: command.y:866 msgid "print var [var] - print value of a variable or array." msgstr "print var [var] - stampa valore di variabile/i o vettore/i." -#: command.y:865 +#: command.y:868 msgid "printf format, [arg], ... - formatted output." msgstr "printf format, [arg], ... - output secondo formato." -#: command.y:867 +#: command.y:870 msgid "quit - exit debugger." msgstr "quit - esci dal debugger." -#: command.y:869 +#: command.y:872 msgid "return [value] - make selected stack frame return to its caller." msgstr "" "return [value] - fa tornare al suo chiamante l'elemento di stack selezionato." -#: command.y:871 +#: command.y:874 msgid "run - start or restart executing program." msgstr "run - inizia o ricomincia esecuzione programma." -#: command.y:874 +#: command.y:877 msgid "save filename - save commands from the session to file." msgstr "save nome-file - salva i comandi dalla sessione al file." -#: command.y:877 +#: command.y:880 msgid "set var = value - assign value to a scalar variable." msgstr "set var = value - assegna valore a una variabile scalare." -#: command.y:879 +#: command.y:882 msgid "" "silent - suspends usual message when stopped at a breakpoint/watchpoint." msgstr "" "silent - sospendi messaggio che segnala stop a un breakpoint/watchpoint." -#: command.y:881 +#: command.y:884 msgid "source file - execute commands from file." msgstr "source file - esegui comandi contenuti nel file." -#: command.y:883 +#: command.y:886 msgid "step [COUNT] - step program until it reaches a different source line." msgstr "" "step [CONTATORE] - esegui il programma finché non arriva a un'istruzione con " "numero di riga differente." -#: command.y:885 +#: command.y:888 msgid "stepi [COUNT] - step one instruction exactly." msgstr "stepi [COUNT] - esegui esattamente un'istruzione." -#: command.y:887 +#: command.y:890 msgid "tbreak [[filename:]N|function] - set a temporary breakpoint." msgstr "tbreak [[nome-file:]N|funzione] - imposta un breakpoint temporaneo." -#: command.y:889 +#: command.y:892 msgid "trace on|off - print instruction before executing." msgstr "trace on|off - stampa istruzione prima di eseguirla." -#: command.y:891 +#: command.y:894 msgid "undisplay [N] - remove variable(s) from automatic display list." msgstr "" "undisplay [N] - togli variabile/i dalla lista visualizzazioni automatiche." -#: command.y:893 +#: command.y:896 msgid "" "until [[filename:]N|function] - execute until program reaches a different " "line or line N within current frame." @@ -1266,19 +1292,19 @@ msgstr "" "until [[nome-file:]N|funzione] - esegui finché il programma arriva una riga " "differente, o alla riga N nell'elemento di stack corrente." -#: command.y:895 +#: command.y:898 msgid "unwatch [N] - remove variable(s) from watch list." msgstr "unwatch [N] - togli variabile/i dalla watchlist." -#: command.y:897 +#: command.y:900 msgid "up [N] - move N frames up the stack." msgstr "up [N] - spostati di N elementi dello stack verso l'alto." -#: command.y:899 +#: command.y:902 msgid "watch var - set a watchpoint for a variable." msgstr "watch var - imposta un watchpoint per una variabile." -#: command.y:901 +#: command.y:904 msgid "" "where [N] - (same as backtrace) print trace of all or N innermost (outermost " "if N < 0) frames." @@ -1286,40 +1312,40 @@ msgstr "" "dove [N] - (equivalente a backtrace) stampa tracia di tutti gli elementi o " "degli N più interni (più esterni se N <0)" -#: command.y:1013 debug.c:401 msg.c:135 +#: command.y:1016 debug.c:401 msg.c:135 #, c-format msgid "error: " msgstr "errore: " -#: command.y:1053 +#: command.y:1060 #, c-format msgid "can't read command (%s)\n" msgstr "non riesco a leggere comando (%s)\n" -#: command.y:1067 +#: command.y:1074 #, c-format msgid "can't read command (%s)" msgstr "non riesco a leggere comando (%s)" -#: command.y:1118 +#: command.y:1125 msgid "invalid character in command" msgstr "carattere non valido nel comando" -#: command.y:1154 +#: command.y:1161 #, c-format msgid "unknown command - \"%.*s\", try help" msgstr "comando sconosciuto - \"%.*s\", vedere help" -#: command.y:1224 +#: command.y:1231 #, c-format msgid "%s" msgstr "%s" -#: command.y:1286 +#: command.y:1293 msgid "invalid character" msgstr "carattere non valido" -#: command.y:1457 +#: command.y:1497 #, c-format msgid "undefined command: %s\n" msgstr "comando non definito: %s\n" @@ -1531,17 +1557,17 @@ msgstr "[\"%s\"] non presente nel vettore `%s\n" msgid "`%s[\"%s\"]' is not an array\n" msgstr "`%s[\"%s\"]' non è un vettore\n" -#: debug.c:1236 debug.c:4964 +#: debug.c:1236 debug.c:5010 #, c-format msgid "`%s' is not a scalar variable" msgstr "`%s' non è una variabile scalare" -#: debug.c:1258 debug.c:4994 +#: debug.c:1258 debug.c:5040 #, c-format msgid "attempt to use array `%s[\"%s\"]' in a scalar context" msgstr "tentativo di usare vettore `%s[\"%s\"]' in un contesto scalare" -#: debug.c:1280 debug.c:5005 +#: debug.c:1280 debug.c:5051 #, c-format msgid "attempt to use scalar `%s[\"%s\"]' as array" msgstr "tentativo di usare scalare `%s[\"%s\"]' come vettore" @@ -1743,7 +1769,7 @@ msgstr "Partenza del programma: \n" #: debug.c:2959 #, c-format msgid "Program exited %s with exit value: %d\n" -msgstr "Programma %s eseguit, valore in uscita: %d\n" +msgstr "Programma completato %s, valore in uscita: %d\n" #: debug.c:2975 msgid "The program is running. Exit anyway (y/n)? " @@ -1819,99 +1845,99 @@ msgstr "'finish' not significativo per salti non-locali '%s'\n" msgid "'until' not meaningful with non-local jump '%s'\n" msgstr "'until' not significativo per salti non-locali '%s'\n" -#: debug.c:4185 +#: debug.c:4231 msgid "\t------[Enter] to continue or q [Enter] to quit------" msgstr "\t------[Invio] per continuare o q [Invio] per uscire------" -#: debug.c:4186 +#: debug.c:4232 msgid "q" msgstr "q" -#: debug.c:5001 +#: debug.c:5047 #, c-format msgid "[\"%s\"] not in array `%s'" msgstr "[\"%s\"] non presente nel vettore `%s'" -#: debug.c:5207 +#: debug.c:5253 #, c-format msgid "sending output to stdout\n" msgstr "output inviato a stdout\n" -#: debug.c:5247 +#: debug.c:5293 msgid "invalid number" msgstr "numero non valido" -#: debug.c:5381 +#: debug.c:5427 #, c-format msgid "`%s' not allowed in current context; statement ignored" msgstr "`%s' non consentito nel contesto corrente; istruzione ignorata" -#: debug.c:5389 +#: debug.c:5435 msgid "`return' not allowed in current context; statement ignored" msgstr "`return' non consentito nel contesto corrente; istruzione ignorata" -#: debug.c:5604 +#: debug.c:5650 #, c-format msgid "No symbol `%s' in current context" msgstr "Simbolo `%s' non esiste nel contesto corrente" -#: dfa.c:1062 dfa.c:1065 dfa.c:1084 dfa.c:1094 dfa.c:1106 dfa.c:1142 -#: dfa.c:1151 dfa.c:1154 dfa.c:1159 dfa.c:1173 dfa.c:1221 +#: dfa.c:1090 dfa.c:1093 dfa.c:1112 dfa.c:1122 dfa.c:1135 dfa.c:1163 dfa.c:1172 +#: dfa.c:1175 dfa.c:1180 dfa.c:1202 dfa.c:1205 msgid "unbalanced [" msgstr "[ non chiusa" -#: dfa.c:1118 +#: dfa.c:1148 msgid "invalid character class" msgstr "character class non valida" -#: dfa.c:1264 +#: dfa.c:1271 msgid "character class syntax is [[:space:]], not [:space:]" msgstr "sintassi character class è [[:spazio:]], non [:spazio:]" -#: dfa.c:1326 +#: dfa.c:1332 msgid "unfinished \\ escape" msgstr "sequenza escape \\ non completa" -#: dfa.c:1473 +#: dfa.c:1499 msgid "invalid content of \\{\\}" msgstr "contenuto di \\{\\} non valido" -#: dfa.c:1476 +#: dfa.c:1502 msgid "regular expression too big" msgstr "espressione regolare troppo complessa" -#: dfa.c:1911 +#: dfa.c:1916 msgid "unbalanced (" msgstr "( non chiusa" -#: dfa.c:2037 +#: dfa.c:2044 msgid "no syntax specified" msgstr "nessuna sintassi specificata" -#: dfa.c:2045 +#: dfa.c:2052 msgid "unbalanced )" msgstr ") non aperta" -#: eval.c:396 +#: eval.c:398 #, c-format msgid "unknown nodetype %d" msgstr "tipo nodo sconosciuto %d" -#: eval.c:407 eval.c:421 +#: eval.c:409 eval.c:423 #, c-format msgid "unknown opcode %d" msgstr "codice operativo sconosciuto %d" -#: eval.c:418 +#: eval.c:420 #, c-format msgid "opcode %s not an operator or keyword" msgstr "codice operativo %s non è un operatore o una parola chiave" -#: eval.c:474 +#: eval.c:476 msgid "buffer overflow in genflags2str" msgstr "superamento limiti buffer in 'genflags2str'" -#: eval.c:676 +#: eval.c:678 #, c-format msgid "" "\n" @@ -1922,295 +1948,292 @@ msgstr "" "\t# `Stack' (Pila) Chiamate Funzione:\n" "\n" -#: eval.c:705 +#: eval.c:707 msgid "`IGNORECASE' is a gawk extension" msgstr "`IGNORECASE' è un'estensione gawk" -#: eval.c:737 +#: eval.c:739 msgid "`BINMODE' is a gawk extension" msgstr "`BINMODE' è un'estensione gawk" -#: eval.c:795 +#: eval.c:797 #, c-format msgid "BINMODE value `%s' is invalid, treated as 3" msgstr "valore di BINMODE `%s' non valido, considerato come 3" -#: eval.c:912 +#: eval.c:914 #, c-format msgid "bad `%sFMT' specification `%s'" msgstr "specificazione invalida `%sFMT' `%s'" -#: eval.c:996 +#: eval.c:988 msgid "turning off `--lint' due to assignment to `LINT'" msgstr "disabilito `--lint' a causa di assegnamento a `LINT'" -#: eval.c:1174 +#: eval.c:1166 #, c-format msgid "reference to uninitialized argument `%s'" msgstr "riferimento ad argomento non inizializzato `%s'" -#: eval.c:1175 +#: eval.c:1167 #, c-format msgid "reference to uninitialized variable `%s'" msgstr "riferimento a variabile non inizializzata `%s'" -#: eval.c:1193 +#: eval.c:1185 msgid "attempt to field reference from non-numeric value" msgstr "tentativo di riferimento a un campo da valore non-numerico" -#: eval.c:1195 +#: eval.c:1187 msgid "attempt to field reference from null string" msgstr "tentativo di riferimento a un campo da una stringa nulla" -#: eval.c:1203 +#: eval.c:1195 #, c-format msgid "attempt to access field %ld" msgstr "tentativo di accedere al campo %ld" -#: eval.c:1212 +#: eval.c:1204 #, c-format msgid "reference to uninitialized field `$%ld'" msgstr "riferimento a campo non inizializzato `$%ld'" -#: eval.c:1299 +#: eval.c:1291 #, c-format msgid "function `%s' called with more arguments than declared" msgstr "funzione `%s' chiamata con più argomenti di quelli previsti" -#: eval.c:1506 +#: eval.c:1498 #, c-format msgid "unwind_stack: unexpected type `%s'" msgstr "unwind_stack: tipo non previsto `%s'" -#: eval.c:1602 +#: eval.c:1594 msgid "division by zero attempted in `/='" msgstr "divisione per zero tentata in `/='" -#: eval.c:1609 +#: eval.c:1601 #, c-format msgid "division by zero attempted in `%%='" msgstr "divisione per zero tentata in `%%='" -#: ext.c:65 ext.c:147 +#: ext.c:66 ext.c:148 msgid "extensions are not allowed in sandbox mode" msgstr "le estensioni non sono consentite in modo `sandbox'" -#: ext.c:68 +#: ext.c:69 msgid "-l / @load are gawk extensions" msgstr "-l / @load sono estensioni gawk" -#: ext.c:71 +#: ext.c:72 msgid "load_ext: received NULL lib_name" msgstr "load_ext: il nome libreria ricevuto è NULL" -#: ext.c:74 +#: ext.c:75 #, c-format msgid "load_ext: cannot open library `%s' (%s)\n" msgstr "load_ext: non riesco ad aprire libreria `%s' (%s)\n" -#: ext.c:80 +#: ext.c:81 #, c-format msgid "" "load_ext: library `%s': does not define `plugin_is_GPL_compatible' (%s)\n" msgstr "" "load_ext: libreria `%s': non definisce `plugin_is_GPL_compatible' (%s)\n" -#: ext.c:86 +#: ext.c:87 #, c-format msgid "load_ext: library `%s': cannot call function `%s' (%s)\n" msgstr "load_ext: libreria `%s': non riesco a chiamare funzione `%s' (%s)\n" -#: ext.c:90 +#: ext.c:91 #, c-format msgid "load_ext: library `%s' initialization routine `%s' failed\n" msgstr "" "load_ext: libreria `%s' routine di inizializzazione `%s' non riuscita\n" -#: ext.c:150 +#: ext.c:151 +#, fuzzy msgid "`extension' is a gawk extension" -msgstr "`extension' è un'estensione gawk" +msgstr "`%s' è un'estensione gawk" -#: ext.c:153 +#: ext.c:154 +#, fuzzy msgid "extension: received NULL lib_name" -msgstr "extension: il nome libreria ricevuto è NULL" +msgstr "load_ext: il nome libreria ricevuto è NULL" -#: ext.c:156 -#, c-format +#: ext.c:157 +#, fuzzy, c-format msgid "extension: cannot open library `%s' (%s)" -msgstr "extension: non riesco ad aprire libreria `%s' (%s)" +msgstr "load_ext: non riesco ad aprire libreria `%s' (%s)\n" -#: ext.c:162 -#, c-format +#: ext.c:163 +#, fuzzy, c-format msgid "" "extension: library `%s': does not define `plugin_is_GPL_compatible' (%s)" msgstr "" -"extension: libreria `%s': non definisce `plugin_is_GPL_compatible' (%s)" +"load_ext: libreria `%s': non definisce `plugin_is_GPL_compatible' (%s)\n" -#: ext.c:166 -#, c-format +#: ext.c:167 +#, fuzzy, c-format msgid "extension: library `%s': cannot call function `%s' (%s)" -msgstr "extension: libreria `%s': non riesco a chiamare funzione `%s' (%s)" +msgstr "load_ext: libreria `%s': non riesco a chiamare funzione `%s' (%s)\n" -#: ext.c:197 +#: ext.c:198 msgid "make_builtin: missing function name" msgstr "make_builtin: manca nome di funzione" -#: ext.c:212 +#: ext.c:213 #, c-format msgid "make_builtin: can't redefine function `%s'" msgstr "make_builtin: non riesco a ridefinire funzione `%s'" -#: ext.c:216 +#: ext.c:217 #, c-format msgid "make_builtin: function `%s' already defined" msgstr "make_builtin: funzione `%s' già definita" -#: ext.c:220 +#: ext.c:221 #, c-format msgid "make_builtin: function name `%s' previously defined" msgstr "make_builtin: funzione di nome `%s' definita in precedenza" -#: ext.c:222 +#: ext.c:223 #, c-format msgid "make_builtin: can't use gawk built-in `%s' as function name" msgstr "" "make_builtin: nome funzione interna gawk `%s' non ammesso come nome funzione" -#: ext.c:225 ext.c:280 +#: ext.c:226 ext.c:281 #, c-format msgid "make_builtin: negative argument count for function `%s'" msgstr "make_builtin: contatore argomenti negativo per la funzione `%s'" -#: ext.c:252 +#: ext.c:253 +#, fuzzy msgid "extension: missing function name" -msgstr "extension: manca nome di funzione" +msgstr "make_builtin: manca nome di funzione" -#: ext.c:255 ext.c:259 +#: ext.c:256 ext.c:260 #, c-format msgid "extension: illegal character `%c' in function name `%s'" -msgstr "extension: carattere non ammesso `%c' nel nome di funzione `%s'" +msgstr "" -#: ext.c:267 -#, c-format +#: ext.c:268 +#, fuzzy, c-format msgid "extension: can't redefine function `%s'" -msgstr "extension: non riesco a ridefinire funzione `%s'" +msgstr "make_builtin: non riesco a ridefinire funzione `%s'" -#: ext.c:271 -#, c-format +#: ext.c:272 +#, fuzzy, c-format msgid "extension: function `%s' already defined" -msgstr "extension: funzione `%s' già definita" +msgstr "make_builtin: funzione `%s' già definita" -#: ext.c:275 -#, c-format +#: ext.c:276 +#, fuzzy, c-format msgid "extension: function name `%s' previously defined" -msgstr "extension: funzione di nome `%s' definita in precedenza" +msgstr "funzione di nome `%s' definita in precedenza" -#: ext.c:277 -#, c-format +#: ext.c:278 +#, fuzzy, c-format msgid "extension: can't use gawk built-in `%s' as function name" msgstr "" -"extension: nome funzione interna gawk `%s' non ammesso come nome funzione" - -#: ext.c:351 -#, c-format -msgid "function `%s' defined to take no more than %d argument(s)" -msgstr "funzione `%s' definita per avere al massimo %d argomenti(o)" - -#: ext.c:354 -#, c-format -msgid "function `%s': missing argument #%d" -msgstr "funzione `%s': manca argomento #%d" +"make_builtin: nome funzione interna gawk `%s' non ammesso come nome funzione" -#: ext.c:371 +#: ext.c:358 #, c-format msgid "function `%s': argument #%d: attempt to use scalar as an array" msgstr "funzione `%s': argomento #%d: tentativo di usare scalare come vettore" -#: ext.c:375 +#: ext.c:362 #, c-format msgid "function `%s': argument #%d: attempt to use array as a scalar" msgstr "funzione `%s': argomento #%d: tentativo di usare vettore come scalare" -#: ext.c:389 +#: ext.c:376 msgid "dynamic loading of library not supported" msgstr "caricamento dinamico di libreria non supportato" -#: extension/filefuncs.c:159 +#: extension/filefuncs.c:164 msgid "chdir: called with incorrect number of arguments, expecting 1" msgstr "chdir: chiamata con numero di argomenti errato, 1 previsto" -#: extension/filefuncs.c:439 +#: extension/filefuncs.c:444 #, c-format msgid "stat: unable to read symbolic link `%s'" msgstr "stat: non riesco a leggere il link simbolico `%s'" -#: extension/filefuncs.c:472 +#: extension/filefuncs.c:477 msgid "stat: called with wrong number of arguments" msgstr "stat: chiamata con numero di argomenti errato" -#: extension/filefuncs.c:479 +#: extension/filefuncs.c:484 extension/filefuncs.c:534 msgid "stat: bad parameters" msgstr "stat: parametri errati" -#: extension/filefuncs.c:533 +#: extension/filefuncs.c:527 +msgid "statvfs: called with wrong number of arguments" +msgstr "statvfs: chiamata con numero di argomenti errato" + +#: extension/filefuncs.c:598 #, c-format msgid "fts init: could not create variable %s" msgstr "ftp init: non riesco a creare variabile %s" -#: extension/filefuncs.c:554 +#: extension/filefuncs.c:619 msgid "fts is not supported on this system" msgstr "fts non disponibile su questo sistema" -#: extension/filefuncs.c:573 +#: extension/filefuncs.c:638 msgid "fill_stat_element: could not create array" msgstr "fill_stat_element: non riesco a creare vettore" -#: extension/filefuncs.c:582 +#: extension/filefuncs.c:647 msgid "fill_stat_element: could not set element" msgstr "fill_stat_element: non riesco a impostare elemento" -#: extension/filefuncs.c:597 +#: extension/filefuncs.c:662 msgid "fill_path_element: could not set element" msgstr "fill_path_element: non riesco a impostare elemento" -#: extension/filefuncs.c:613 +#: extension/filefuncs.c:678 msgid "fill_error_element: could not set element" msgstr "fill_error_element: non riesco a impostare elemento" -#: extension/filefuncs.c:660 extension/filefuncs.c:707 +#: extension/filefuncs.c:725 extension/filefuncs.c:772 msgid "fts-process: could not create array" msgstr "fts-process: non riesco a creare vettore" -#: extension/filefuncs.c:670 extension/filefuncs.c:717 -#: extension/filefuncs.c:735 +#: extension/filefuncs.c:735 extension/filefuncs.c:782 +#: extension/filefuncs.c:800 msgid "fts-process: could not set element" msgstr "fts-process: non riesco a impostare elemento" -#: extension/filefuncs.c:784 +#: extension/filefuncs.c:849 msgid "fts: called with incorrect number of arguments, expecting 3" msgstr "fts: chiamata con numero di argomenti errato, 3 previsti" -#: extension/filefuncs.c:787 +#: extension/filefuncs.c:852 msgid "fts: bad first parameter" msgstr "fts: primo parametro errato" -#: extension/filefuncs.c:793 +#: extension/filefuncs.c:858 msgid "fts: bad second parameter" msgstr "fts: secondo parametro errato" -#: extension/filefuncs.c:799 +#: extension/filefuncs.c:864 msgid "fts: bad third parameter" msgstr "fts: terzo parametro errato" -#: extension/filefuncs.c:806 +#: extension/filefuncs.c:871 msgid "fts: could not flatten array\n" msgstr "fts: non sono riuscito a appiattire un vettore\n" -#: extension/filefuncs.c:824 +#: extension/filefuncs.c:889 msgid "fts: ignoring sneaky FTS_NOSTAT flag. nyah, nyah, nyah." msgstr "fts: ignoro flag infido FTS_NOSTAT. nooo, nooo, nooo." -#: extension/filefuncs.c:841 +#: extension/filefuncs.c:906 msgid "fts: clear_array() failed\n" msgstr "fts: clear_array() non riuscita\n" @@ -2271,91 +2294,91 @@ msgstr "wait: chiamata senza argomenti" msgid "wait: called with too many arguments" msgstr "wait: chiamata con troppi argomenti" -#: extension/inplace.c:130 +#: extension/inplace.c:131 msgid "inplace_begin: in-place editing already active" msgstr "inplace_begin: modifica in-place già attiva" -#: extension/inplace.c:133 extension/inplace.c:210 +#: extension/inplace.c:134 extension/inplace.c:211 #, c-format msgid "inplace_begin: expects 2 arguments but called with %d" msgstr "inplace_begin: 2 argumenti richiesti, ma chiamata con %d" -#: extension/inplace.c:136 +#: extension/inplace.c:137 msgid "inplace_begin: cannot retrieve 1st argument as a string filename" msgstr "" "inplace_begin: non riesco a trovare il 1° argomento come stringa nome-file" -#: extension/inplace.c:144 +#: extension/inplace.c:145 #, c-format msgid "inplace_begin: disabling in-place editing for invalid FILENAME `%s'" msgstr "" "inplace_begin: modifica in-place disabilitato, FILENAME non valido `%s'" -#: extension/inplace.c:151 +#: extension/inplace.c:152 #, c-format msgid "inplace_begin: Cannot stat `%s' (%s)" msgstr "inplace_begin: Non riesco a trovare `%s' (%s)" -#: extension/inplace.c:158 +#: extension/inplace.c:159 #, c-format msgid "inplace_begin: `%s' is not a regular file" msgstr "inplace_begin: `%s' non è un file regolare" -#: extension/inplace.c:169 +#: extension/inplace.c:170 #, c-format msgid "inplace_begin: mkstemp(`%s') failed (%s)" msgstr "inplace_begin: mkstemp(`%s') non riuscita (%s)" -#: extension/inplace.c:181 +#: extension/inplace.c:182 #, c-format msgid "inplace_begin: chmod failed (%s)" msgstr "inplace_begin: chmod non riuscita (%s)" -#: extension/inplace.c:188 +#: extension/inplace.c:189 #, c-format msgid "inplace_begin: dup(stdout) failed (%s)" msgstr "inplace_begin: dup(stdout) non riuscita (%s)" -#: extension/inplace.c:191 +#: extension/inplace.c:192 #, c-format msgid "inplace_begin: dup2(%d, stdout) failed (%s)" msgstr "inplace_begin: dup2(%d, stdout) non riuscita (%s)" -#: extension/inplace.c:194 +#: extension/inplace.c:195 #, c-format msgid "inplace_begin: close(%d) failed (%s)" msgstr "inplace_begin: close(%d) non riuscita (%s)" -#: extension/inplace.c:213 +#: extension/inplace.c:214 msgid "inplace_end: cannot retrieve 1st argument as a string filename" msgstr "" "inplace_end: non riesco a trovare il 1° argomento come stringa nome-file" -#: extension/inplace.c:220 +#: extension/inplace.c:221 msgid "inplace_end: in-place editing not active" msgstr "inplace_end: modifica in-place non attiva" -#: extension/inplace.c:226 +#: extension/inplace.c:227 #, c-format msgid "inplace_end: dup2(%d, stdout) failed (%s)" msgstr "inplace_end: dup2(%d, stdout) non riuscita (%s)" -#: extension/inplace.c:229 +#: extension/inplace.c:230 #, c-format msgid "inplace_end: close(%d) failed (%s)" msgstr "inplace_end: close(%d) non riuscita (%s)" -#: extension/inplace.c:233 +#: extension/inplace.c:234 #, c-format msgid "inplace_end: fsetpos(stdout) failed (%s)" msgstr "inplace_end: fsetpos(stdout) non riuscita (%s)" -#: extension/inplace.c:246 +#: extension/inplace.c:247 #, c-format msgid "inplace_end: link(`%s', `%s') failed (%s)" msgstr "inplace_end: link(`%s', `%s') non riuscita (%s)" -#: extension/inplace.c:256 +#: extension/inplace.c:257 #, c-format msgid "inplace_end: rename(`%s', `%s') failed (%s)" msgstr "inplace_end: rename(`%s', `%s') non riuscito (%s)" @@ -2384,7 +2407,7 @@ msgstr "chr: chiamata senza argomenti" msgid "chr: called with inappropriate argument(s)" msgstr "chr: chiamata con argomento/i non corretto/i" -#: extension/readdir.c:281 +#: extension/readdir.c:271 #, c-format msgid "dir_take_control_of: opendir/fdopendir failed: %s" msgstr "dir_take_control_of: opendir/fdopendir non riuscita: %s" @@ -2397,54 +2420,54 @@ msgstr "readfile: chiamata con troppi argomenti" msgid "readfile: called with no arguments" msgstr "readfile: chiamata senza argomenti" -#: extension/revoutput.c:125 +#: extension/revoutput.c:127 msgid "revoutput: could not initialize REVOUT variable" msgstr "revoutput: non riesco a inizializzare la variabile REVOUT" -#: extension/rwarray.c:124 extension/rwarray0.c:109 +#: extension/rwarray.c:113 extension/rwarray0.c:109 msgid "writea: called with too many arguments" msgstr "writea: chiamata con troppi argomenti" -#: extension/rwarray.c:131 extension/rwarray0.c:116 +#: extension/rwarray.c:120 extension/rwarray0.c:116 #, c-format msgid "do_writea: argument 0 is not a string\n" msgstr "do_writea: argomento 0 non è una stringa\n" -#: extension/rwarray.c:137 extension/rwarray0.c:122 +#: extension/rwarray.c:126 extension/rwarray0.c:122 #, c-format msgid "do_writea: argument 1 is not an array\n" msgstr "do_writea: argomento 1 non-vettoriale\n" -#: extension/rwarray.c:184 extension/rwarray0.c:169 +#: extension/rwarray.c:173 extension/rwarray0.c:169 #, c-format msgid "write_array: could not flatten array\n" msgstr "write_array: non sono riuscito a appiattire un vettore\n" -#: extension/rwarray.c:198 extension/rwarray0.c:183 +#: extension/rwarray.c:187 extension/rwarray0.c:183 #, c-format msgid "write_array: could not release flattened array\n" msgstr "write_array: non sono riuscito a rilasciare un vettore appiattito\n" -#: extension/rwarray.c:280 extension/rwarray0.c:265 +#: extension/rwarray.c:269 extension/rwarray0.c:265 msgid "reada: called with too many arguments" msgstr "reada: chiamata con troppi argomenti" -#: extension/rwarray.c:287 extension/rwarray0.c:272 +#: extension/rwarray.c:276 extension/rwarray0.c:272 #, c-format msgid "do_reada: argument 0 is not a string\n" msgstr "do_reada: argomento 0 non è una stringa\n" -#: extension/rwarray.c:293 extension/rwarray0.c:278 +#: extension/rwarray.c:282 extension/rwarray0.c:278 #, c-format msgid "do_reada: argument 1 is not an array\n" msgstr "do_reada: argomento 1 non-vettoriale\n" -#: extension/rwarray.c:337 extension/rwarray0.c:322 +#: extension/rwarray.c:326 extension/rwarray0.c:322 #, c-format msgid "do_reada: clear_array failed\n" msgstr "do_reada: clear_array non riuscita\n" -#: extension/rwarray.c:374 extension/rwarray0.c:358 +#: extension/rwarray.c:363 extension/rwarray0.c:358 #, c-format msgid "read_array: set_array_element failed\n" msgstr "read_array: set_array_element non riuscita\n" @@ -2556,7 +2579,7 @@ msgstr "la stringa nulla usata come `FS' msgid "old awk does not support regexps as value of `FS'" msgstr "il vecchio awk non supporta espressioni come valori di `FS'" -#: field.c:1380 +#: field.c:1384 msgid "`FPAT' is a gawk extension" msgstr "`FPAT' è un'estensione gawk" @@ -2564,28 +2587,28 @@ msgstr "`FPAT' msgid "awk_value_to_node: received null retval" msgstr "awk_value_to_node: ricevuto retval nullo" -#: gawkapi.c:384 +#: gawkapi.c:383 msgid "node_to_awk_value: received null node" msgstr "node_to_awk_value: ricevuto nodo nullo" -#: gawkapi.c:387 +#: gawkapi.c:386 msgid "node_to_awk_value: received null val" msgstr "node_to_awk_value: ricevuto valore nullo" -#: gawkapi.c:809 +#: gawkapi.c:808 msgid "remove_element: received null array" msgstr "remove_element: ricevuto vettore nullo" -#: gawkapi.c:812 +#: gawkapi.c:811 msgid "remove_element: received null subscript" msgstr "remove_element: ricevuto indice nullo" -#: gawkapi.c:949 +#: gawkapi.c:948 #, c-format msgid "api_flatten_array: could not convert index %d\n" msgstr "api_flatten_array: non sono riuscito a convertire l'indice %d\n" -#: gawkapi.c:954 +#: gawkapi.c:953 #, c-format msgid "api_flatten_array: could not convert value %d\n" msgstr "api_flatten_array: non sono riuscito a convertire il valore %d\n" @@ -2645,275 +2668,281 @@ msgstr "%s: l'opzione '-W %s' non ammette un argomento\n" msgid "%s: option '-W %s' requires an argument\n" msgstr "%s: l'opzione '-W %s' richiede un argomento\n" -#: io.c:423 +#: io.c:426 #, c-format msgid "command line argument `%s' is a directory: skipped" msgstr "l'argomento in riga comando `%s' è una directory: ignorata" -#: io.c:426 io.c:544 +#: io.c:429 io.c:547 #, c-format msgid "cannot open file `%s' for reading (%s)" msgstr "non riesco ad aprire file `%s' in lettura (%s)" -#: io.c:671 +#: io.c:674 #, c-format msgid "close of fd %d (`%s') failed (%s)" msgstr "chiusura di fd %d (`%s') non riuscita (%s)" -#: io.c:749 +#: io.c:752 msgid "redirection not allowed in sandbox mode" msgstr "ri-direzione non consentita in modo `sandbox'" -#: io.c:783 +#: io.c:786 #, c-format msgid "expression in `%s' redirection only has numeric value" msgstr "espressione nella ri-direzione `%s' ha solo un valore numerico" -#: io.c:789 +#: io.c:792 #, c-format msgid "expression for `%s' redirection has null string value" msgstr "espressione nella ri-direzione `%s' ha per valore la stringa nulla" -#: io.c:794 +#: io.c:797 #, c-format msgid "filename `%s' for `%s' redirection may be result of logical expression" msgstr "" "nome-file `%s' per la ri-direzione `%s' può essere il risultato di una " "espressione logica" -#: io.c:842 +#: io.c:845 #, c-format msgid "unnecessary mixing of `>' and `>>' for file `%.*s'" msgstr "mistura non necessaria di `>' e `>>' per il file `%.*s'" -#: io.c:896 +#: io.c:902 #, c-format msgid "can't open pipe `%s' for output (%s)" msgstr "non riesco ad aprire `pipe' `%s' in scrittura (%s)" -#: io.c:906 +#: io.c:915 #, c-format msgid "can't open pipe `%s' for input (%s)" msgstr "non riesco ad aprire `pipe' `%s' in lettura (%s)" -#: io.c:937 +#: io.c:946 #, c-format msgid "can't open two way pipe `%s' for input/output (%s)" msgstr "" "non riesco ad aprire `pipe' bidirezionale `%s' in lettura/scrittura (%s)" -#: io.c:1019 +#: io.c:1030 #, c-format msgid "can't redirect from `%s' (%s)" msgstr "non riesco a ri-dirigere da `%s' (%s)" -#: io.c:1022 +#: io.c:1033 #, c-format msgid "can't redirect to `%s' (%s)" msgstr "non riesco a ri-dirigere a `%s' (%s)" -#: io.c:1073 +#: io.c:1084 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:1089 +#: io.c:1100 #, c-format msgid "close of `%s' failed (%s)." msgstr "chiusura di `%s' non riuscita (%s)." -#: io.c:1097 +#: io.c:1108 msgid "too many pipes or input files open" msgstr "troppe `pipe' o file di input aperti" -#: io.c:1119 +#: io.c:1130 msgid "close: second argument must be `to' or `from'" msgstr "close: il secondo argomento deve essere `a' o `da'" -#: io.c:1136 +#: io.c:1147 #, 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:1141 +#: io.c:1152 msgid "close of redirection that was never opened" msgstr "chiusura di una ri-direzione mai aperta" -#: io.c:1238 +#: io.c:1249 #, c-format msgid "close: redirection `%s' not opened with `|&', second argument ignored" msgstr "close: ri-direzione `%s' non aperta con `|&', ignoro secondo argomento" -#: io.c:1255 +#: io.c:1266 #, c-format msgid "failure status (%d) on pipe close of `%s' (%s)" msgstr "errore ritornato (%d) dalla chiusura della `pipe' `%s' (%s)" -#: io.c:1258 +#: io.c:1269 #, c-format msgid "failure status (%d) on file close of `%s' (%s)" msgstr "errore ritornato (%d) dalla chiusura del file `%s' (%s)" -#: io.c:1278 +#: io.c:1289 #, c-format msgid "no explicit close of socket `%s' provided" msgstr "nessuna chiusura esplicita richiesta per `socket' `%s'" -#: io.c:1281 +#: io.c:1292 #, c-format msgid "no explicit close of co-process `%s' provided" msgstr "nessuna chiusura esplicita richiesta per co-processo `%s'" -#: io.c:1284 +#: io.c:1295 #, c-format msgid "no explicit close of pipe `%s' provided" msgstr "nessuna chiusura esplicita richiesta per `pipe' `%s'" -#: io.c:1287 +#: io.c:1298 #, c-format msgid "no explicit close of file `%s' provided" msgstr "nessuna chiusura esplicita richiesta per file `%s'" -#: io.c:1317 io.c:1375 main.c:632 main.c:674 +#: io.c:1328 io.c:1387 main.c:645 main.c:687 #, c-format msgid "error writing standard output (%s)" msgstr "errore scrivendo 'standard output' (%s)" -#: io.c:1322 io.c:1381 main.c:634 +#: io.c:1333 io.c:1393 main.c:647 #, c-format msgid "error writing standard error (%s)" msgstr "errore scrivendo 'standard error' (%s)" -#: io.c:1330 +#: io.c:1341 #, c-format msgid "pipe flush of `%s' failed (%s)." msgstr "scaricamento di `pipe' `%s' non riuscito (%s)." -#: io.c:1333 +#: io.c:1344 #, c-format msgid "co-process flush of pipe to `%s' failed (%s)." msgstr "scaricamento da co-processo di `pipe' a `%s' non riuscito (%s)." -#: io.c:1336 +#: io.c:1347 #, c-format msgid "file flush of `%s' failed (%s)." msgstr "scaricamento di file `%s' non riuscito (%s)." -#: io.c:1453 +#: io.c:1465 #, c-format msgid "local port %s invalid in `/inet'" msgstr "porta locale %s invalida in `/inet'" -#: io.c:1471 +#: io.c:1483 #, c-format msgid "remote host and port information (%s, %s) invalid" msgstr "host remoto e informazione di porta (%s, %s) invalidi" -#: io.c:1699 +#: io.c:1711 msgid "TCP/IP communications are not supported" msgstr "comunicazioni TCP/IP non supportate" -#: io.c:1880 +#: io.c:1905 #, c-format msgid "could not open `%s', mode `%s'" msgstr "non riesco ad aprire `%s', modo `%s'" -#: io.c:1930 +#: io.c:1961 #, c-format msgid "close of master pty failed (%s)" msgstr "close di `pty' principale non riuscita (%s)" -#: io.c:1932 io.c:2118 io.c:2319 +#: io.c:1963 io.c:2141 io.c:2342 #, c-format msgid "close of stdout in child failed (%s)" msgstr "close di `stdout' nel processo-figlio non riuscita (%s)" -#: io.c:1935 +#: io.c:1966 #, c-format msgid "moving slave pty to stdout in child failed (dup: %s)" msgstr "" "trasferimento di `pty' secondaria a `stdout' nel processo-figlio non " "riuscita (dup: %s)" -#: io.c:1937 io.c:2123 +#: io.c:1968 io.c:2146 #, c-format msgid "close of stdin in child failed (%s)" msgstr "close di `stdin' nel processo-figlio non riuscita (%s)" -#: io.c:1940 +#: io.c:1971 #, c-format msgid "moving slave pty to stdin in child failed (dup: %s)" msgstr "" "trasferimento di 'pty' secondaria a 'stdin' nel processo-figlio non riuscito " "(dup: %s)" -#: io.c:1942 io.c:1964 +#: io.c:1973 #, c-format msgid "close of slave pty failed (%s)" msgstr "close di 'pty' secondaria non riuscita (%s)" -#: io.c:2053 io.c:2121 io.c:2290 io.c:2322 +#: io.c:2076 io.c:2144 io.c:2313 io.c:2345 #, c-format msgid "moving pipe to stdout in child failed (dup: %s)" msgstr "" "passaggio di `pipe' a `stdout' nel processo-figlio non riuscito (dup: %s)" -#: io.c:2060 io.c:2126 +#: io.c:2083 io.c:2149 #, c-format msgid "moving pipe to stdin in child failed (dup: %s)" msgstr "" -"passaggio di pipe a `stdin' nel processo-figlio non riuscito (dup: %s)" +"passaggio di `pipe' a `stdin' nel processo-figlio non riuscito (dup: %s)" -#: io.c:2086 io.c:2312 +#: io.c:2109 io.c:2335 msgid "restoring stdout in parent process failed\n" msgstr "ripristino di `stdout' nel processo-padre non riuscito\n" -#: io.c:2094 +#: io.c:2117 msgid "restoring stdin in parent process failed\n" msgstr "ripristino di `stdin' nel processo-padre non riuscito\n" -#: io.c:2129 io.c:2324 io.c:2339 +#: io.c:2152 io.c:2347 io.c:2362 #, c-format msgid "close of pipe failed (%s)" -msgstr "close di 'pipe' non riuscita (%s)" +msgstr "close di `pipe' non riuscita (%s)" -#: io.c:2188 +#: io.c:2211 msgid "`|&' not supported" msgstr "`|&' non supportato" -#: io.c:2275 +#: io.c:2298 #, c-format msgid "cannot open pipe `%s' (%s)" msgstr "non riesco ad aprire `pipe' `%s' (%s)" -#: io.c:2333 +#: io.c:2356 #, c-format msgid "cannot create child process for `%s' (fork: %s)" msgstr "non riesco a creare processo-figlio per `%s' (fork: %s)" -#: io.c:2760 +#: io.c:2493 +msgid "getline: attempt to read from closed read end of two-way pipe" +msgstr "" +"getline: tentativo di elggere dal lato in scrittura, chiuso, di una `pipe' " +"bidirezionale" + +#: io.c:2795 msgid "register_input_parser: received NULL pointer" msgstr "register_input_parser: ricevuto puntatore NULL" -#: io.c:2788 +#: io.c:2823 #, c-format msgid "input parser `%s' conflicts with previously installed input parser `%s'" msgstr "" "input parser `%s' in conflitto con l'input parser `%s' installato in " "precedenza" -#: io.c:2795 +#: io.c:2830 #, c-format msgid "input parser `%s' failed to open `%s'" msgstr "l'input parser `%s' non è riuscito ad aprire `%s'" -#: io.c:2815 +#: io.c:2850 msgid "register_output_wrapper: received NULL pointer" msgstr "register_output_wrapper: ricevuto puntatore NULL" -#: io.c:2843 +#: io.c:2878 #, c-format msgid "" "output wrapper `%s' conflicts with previously installed output wrapper `%s'" @@ -2921,16 +2950,16 @@ msgstr "" "output wrapper `%s' in conflitto con l'output wrapper `%s' installato in " "precedenza" -#: io.c:2850 +#: io.c:2885 #, c-format msgid "output wrapper `%s' failed to open `%s'" msgstr "l'output wrapper `%s' non è riuscito ad aprire `%s'" -#: io.c:2871 +#: io.c:2906 msgid "register_output_processor: received NULL pointer" msgstr "register_output_processor: ricevuto puntatore NULL" -#: io.c:2900 +#: io.c:2935 #, c-format msgid "" "two-way processor `%s' conflicts with previously installed two-way processor " @@ -2939,195 +2968,198 @@ msgstr "" "processore doppio `%s' in conflitto con il processore doppio installato in " "precedenza `%s'" -#: io.c:2909 +#: io.c:2944 #, c-format msgid "two way processor `%s' failed to open `%s'" msgstr "il processore doppio `%s' non è riuscito ad aprire `%s'" -#: io.c:3034 +#: io.c:3069 #, c-format msgid "data file `%s' is empty" msgstr "file dati `%s' vuoto" -#: io.c:3076 io.c:3084 +#: io.c:3111 io.c:3119 msgid "could not allocate more input memory" msgstr "non riesco ad allocare ulteriore memoria per l'input" -#: io.c:3662 +#: io.c:3697 msgid "multicharacter value of `RS' is a gawk extension" msgstr "valore multicarattere per `RS' è un'estensione gawk" -#: io.c:3809 +#: io.c:3844 msgid "IPv6 communication is not supported" msgstr "comunicazioni IPv6 non supportate" -#: main.c:321 +#: main.c:334 msgid "environment variable `POSIXLY_CORRECT' set: turning on `--posix'" msgstr "variable d'ambiente `POSIXLY_CORRECT' impostata: attivo `--posix'" -#: main.c:327 +#: main.c:340 msgid "`--posix' overrides `--traditional'" msgstr "`--posix' annulla `--traditional'" -#: main.c:338 +#: main.c:351 msgid "`--posix'/`--traditional' overrides `--non-decimal-data'" msgstr "`--posix'/`--traditional' annulla `--non-decimal-data'" -#: main.c:342 +#: main.c:355 #, 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:346 +#: main.c:359 msgid "`--posix' overrides `--characters-as-bytes'" msgstr "`--posix' annulla `--characters-as-bytes'" -#: main.c:404 +#: main.c:417 #, c-format msgid "can't set binary mode on stdin (%s)" msgstr "non è possibile impostare modalità binaria su `stdin'(%s)" -#: main.c:407 +#: main.c:420 #, c-format msgid "can't set binary mode on stdout (%s)" msgstr "non è possibile impostare modalità binaria su `stdout'(%s)" -#: main.c:409 +#: main.c:422 #, c-format msgid "can't set binary mode on stderr (%s)" msgstr "non è possibile impostare modalità binaria su `stderr'(%s)" -#: main.c:469 +#: main.c:482 msgid "no program text at all!" msgstr "manca del tutto il testo del programma!" -#: main.c:563 +#: main.c:576 #, c-format msgid "Usage: %s [POSIX or GNU style options] -f progfile [--] file ...\n" msgstr "Uso: %s [opzioni in stile POSIX o GNU] -f file-prog. [--] file ...\n" -#: main.c:565 +#: main.c:578 #, 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:570 +#: main.c:583 msgid "POSIX options:\t\tGNU long options: (standard)\n" msgstr "Opzioni POSIX:\t\topzioni lunghe GNU: (standard)\n" -#: main.c:571 +#: main.c:584 msgid "\t-f progfile\t\t--file=progfile\n" msgstr "\t-f fileprog\t\t--file=file-prog.\n" -#: main.c:572 +#: main.c:585 msgid "\t-F fs\t\t\t--field-separator=fs\n" msgstr "\t-F fs\t\t\t--field-separator=fs\n" -#: main.c:573 +#: main.c:586 msgid "\t-v var=val\t\t--assign=var=val\n" msgstr "\t-v var=valore\t\t--assign=var=valore\n" -#: main.c:574 +#: main.c:587 msgid "Short options:\t\tGNU long options: (extensions)\n" msgstr "Opzioni brevi:\t\topzioni lunghe GNU: (estensioni)\n" -#: main.c:575 +#: main.c:588 msgid "\t-b\t\t\t--characters-as-bytes\n" msgstr "\t-b\t\t\t--characters-as-bytes\n" -#: main.c:576 +#: main.c:589 msgid "\t-c\t\t\t--traditional\n" msgstr "\t-c\t\t\t--traditional\n" -#: main.c:577 +#: main.c:590 msgid "\t-C\t\t\t--copyright\n" msgstr "\t-C\t\t\t--copyright\n" -#: main.c:578 +#: main.c:591 msgid "\t-d[file]\t\t--dump-variables[=file]\n" msgstr "\t-d[file]\t\t--dump-variables[=file]\n" -#: main.c:579 +#: main.c:592 msgid "\t-D[file]\t\t--debug[=file]\n" msgstr "\t-D[file]\t\t--debug[=file]\n" -#: main.c:580 +#: main.c:593 msgid "\t-e 'program-text'\t--source='program-text'\n" msgstr "\t-e 'testo-del-programma'\t--source='testo-del-programma'\n" -#: main.c:581 +#: main.c:594 msgid "\t-E file\t\t\t--exec=file\n" msgstr "\t-E file\t\t\t--exec=file\n" -#: main.c:582 +#: main.c:595 msgid "\t-g\t\t\t--gen-pot\n" msgstr "\t-g\t\t\t--gen-pot\n" -#: main.c:583 +#: main.c:596 msgid "\t-h\t\t\t--help\n" msgstr "\t-h\t\t\t--help\n" -#: main.c:584 +#: main.c:597 msgid "\t-i includefile\t\t--include=includefile\n" msgstr "\t-i include_file\t\t--include=include_file\n" -#: main.c:585 +#: main.c:598 msgid "\t-l library\t\t--load=library\n" msgstr "\t-l libreria\t\t--load=libreria\n" -#: main.c:590 +#. TRANSLATORS: the "fatal" and "invalid" here are literal +#. values, they should not be translated. Thanks. +#. +#: main.c:603 msgid "\t-L[fatal|invalid]\t--lint[=fatal|invalid]\n" msgstr "\t-L[fatal|invalid]\t--lint[=fatal|invalid]\n" -#: main.c:591 +#: main.c:604 msgid "\t-M\t\t\t--bignum\n" msgstr "\t-M\t\t\t--bignum\n" -#: main.c:592 +#: main.c:605 msgid "\t-N\t\t\t--use-lc-numeric\n" msgstr "\t-N\t\t\t--use-lc-numeric\n" -#: main.c:593 +#: main.c:606 msgid "\t-n\t\t\t--non-decimal-data\n" msgstr "\t-n\t\t\t--non-decimal-data\n" -#: main.c:594 +#: main.c:607 msgid "\t-o[file]\t\t--pretty-print[=file]\n" msgstr "\t-o[file]\t\t--pretty-print[=file]\n" -#: main.c:595 +#: main.c:608 msgid "\t-O\t\t\t--optimize\n" msgstr "\t-O\t\t\t--optimize\n" -#: main.c:596 +#: main.c:609 msgid "\t-p[file]\t\t--profile[=file]\n" msgstr "\t-p[file]\t\t--profile[=file]\n" -#: main.c:597 +#: main.c:610 msgid "\t-P\t\t\t--posix\n" msgstr "\t-P\t\t\t--posix\n" -#: main.c:598 +#: main.c:611 msgid "\t-r\t\t\t--re-interval\n" msgstr "\t-r\t\t\t--re-interval\n" -#: main.c:599 +#: main.c:612 msgid "\t-S\t\t\t--sandbox\n" msgstr "\t-S\t\t\t--sandbox\n" -#: main.c:600 +#: main.c:613 msgid "\t-t\t\t\t--lint-old\n" msgstr "\t-t\t\t\t--lint-old\n" -#: main.c:601 +#: main.c:614 msgid "\t-V\t\t\t--version\n" msgstr "\t-V\t\t\t--version\n" -#: main.c:603 +#: main.c:616 msgid "\t-W nostalgia\t\t--nostalgia\n" msgstr "\t-W nostalgia\t\t--nostalgia\n" -#: main.c:606 +#: main.c:619 msgid "\t-Y\t\t--parsedebug\n" msgstr "\t-Y\t\t--parsedebug\n" @@ -3136,7 +3168,7 @@ msgstr "\t-Y\t\t--parsedebug\n" #. for this application. Please add _another line_ with the #. address for translation bugs. #. no-wrap -#: main.c:615 +#: main.c:628 msgid "" "\n" "To report bugs, see node `Bugs' in `gawk.info', which is\n" @@ -3149,7 +3181,7 @@ msgstr "" "Problemi di traduzione, segnalare ad: azc100@gmail.com.\n" "\n" -#: main.c:619 +#: main.c:632 msgid "" "gawk is a pattern scanning and processing language.\n" "By default it reads standard input and writes standard output.\n" @@ -3159,7 +3191,7 @@ msgstr "" "Senza parametri, legge da 'standard input' e scrive su 'standard output'.\n" "\n" -#: main.c:623 +#: main.c:636 msgid "" "Examples:\n" "\tgawk '{ sum += $1 }; END { print sum }' file\n" @@ -3169,7 +3201,7 @@ msgstr "" "\tgawk '{ sum += $1 }; END { print sum }' file\n" "\tgawk -F: '{ print $1 }' /etc/passwd\n" -#: main.c:648 +#: main.c:661 #, c-format msgid "" "Copyright (C) 1989, 1991-%d Free Software Foundation.\n" @@ -3188,7 +3220,7 @@ msgstr "" "Licenza, o (a tua scelta) a una qualsiasi versione successiva.\n" "\n" -#: main.c:656 +#: main.c:669 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" @@ -3202,7 +3234,7 @@ msgstr "" "Vedi la 'GNU General Public License' per ulteriori dettagli.\n" "\n" -#: main.c:662 +#: main.c:675 msgid "" "You should have received a copy of the GNU General Public License\n" "along with this program. If not, see http://www.gnu.org/licenses/.\n" @@ -3211,16 +3243,16 @@ msgstr "" "assieme a questo programma; se non è così, vedi http://www.gnu.org/" "licenses/.\n" -#: main.c:699 +#: main.c:712 msgid "-Ft does not set FS to tab in POSIX awk" msgstr "-Ft non imposta FS a `tab' nell'awk POSIX" -#: main.c:986 +#: main.c:999 #, c-format msgid "unknown value for field spec: %d\n" msgstr "valore non noto per specifica campo: %d\n" -#: main.c:1084 +#: main.c:1097 #, c-format msgid "" "%s: `%s' argument to `-v' not in `var=value' form\n" @@ -3229,116 +3261,116 @@ msgstr "" "%s: `%s' argomento di `-v' non in forma `var=valore'\n" "\n" -#: main.c:1110 +#: main.c:1123 #, c-format msgid "`%s' is not a legal variable name" msgstr "`%s' non è un nome di variabile ammesso" -#: main.c:1113 +#: main.c:1126 #, 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:1117 +#: main.c:1130 #, c-format msgid "cannot use gawk builtin `%s' as variable name" msgstr "nome funzione interna gawk `%s' non ammesso come nome variabile" -#: main.c:1122 +#: main.c:1135 #, c-format msgid "cannot use function `%s' as variable name" msgstr "non è possibile usare nome di funzione `%s' come nome di variabile" -#: main.c:1175 +#: main.c:1190 msgid "floating point exception" msgstr "eccezione floating point" -#: main.c:1182 +#: main.c:1197 msgid "fatal error: internal error" msgstr "errore fatale: errore interno" -#: main.c:1197 +#: main.c:1212 msgid "fatal error: internal error: segfault" msgstr "errore fatale: errore interno: segfault" -#: main.c:1209 +#: main.c:1224 msgid "fatal error: internal error: stack overflow" msgstr "errore fatale: errore interno: stack overflow" -#: main.c:1268 +#: main.c:1283 #, c-format msgid "no pre-opened fd %d" msgstr "manca `fd' pre-aperta %d" -#: main.c:1275 +#: main.c:1290 #, c-format msgid "could not pre-open /dev/null for fd %d" msgstr "non riesco a pre-aprire /dev/null per `fd' %d" -#: main.c:1489 +#: main.c:1504 msgid "empty argument to `-e/--source' ignored" msgstr "argomento di `-e/--source' nullo, ignorato" -#: main.c:1560 +#: main.c:1575 msgid "-M ignored: MPFR/GMP support not compiled in" msgstr "-M ignorato: supporto per MPFR/GMP non generato" -#: main.c:1581 +#: main.c:1596 #, c-format msgid "%s: option `-W %s' unrecognized, ignored\n" msgstr "%s: opzione `-W %s' non riconosciuta, ignorata\n" -#: main.c:1634 +#: main.c:1649 #, c-format msgid "%s: option requires an argument -- %c\n" msgstr "%s: l'opzione richiede un argomento -- %c\n" -#: mpfr.c:557 +#: mpfr.c:559 #, c-format msgid "PREC value `%.*s' is invalid" msgstr "valore PREC `%.*s' non valido" -#: mpfr.c:615 +#: mpfr.c:617 #, c-format msgid "RNDMODE value `%.*s' is invalid" msgstr "valore di RNDMODE `%.*s' non valido" -#: mpfr.c:711 +#: mpfr.c:714 #, c-format msgid "%s: received non-numeric argument" msgstr "%s: l'argomento ricevuto non è numerico" -#: mpfr.c:820 +#: mpfr.c:824 msgid "compl(%Rg): negative value will give strange results" msgstr "compl(%Rg): valore negativo, darà risultati strani" -#: mpfr.c:824 +#: mpfr.c:828 msgid "comp(%Rg): fractional value will be truncated" msgstr "comp(%Rg): valore decimale sarà troncato" -#: mpfr.c:836 +#: mpfr.c:840 #, c-format msgid "cmpl(%Zd): negative values will give strange results" msgstr "cmpl(%Zd): valori negativi, daranno risultati strani" -#: mpfr.c:855 +#: mpfr.c:859 #, c-format msgid "%s: received non-numeric argument #%d" msgstr "%s: l'argomento ricevuto non è numerico #%d" -#: mpfr.c:865 +#: mpfr.c:869 msgid "%s: argument #%d has invalid value %Rg, using 0" msgstr "%s: argomento #%d con valore non valido %Rg, uso 0" -#: mpfr.c:877 +#: mpfr.c:881 msgid "%s: argument #%d negative value %Rg will give strange results" msgstr "%s: argomento #%d con valore negativo %Rg, darà risultati strani" -#: mpfr.c:883 +#: mpfr.c:887 msgid "%s: argument #%d fractional value %Rg will be truncated" msgstr "%s: argomento #%d, valore decimale sarà troncato" -#: mpfr.c:898 +#: mpfr.c:902 #, c-format msgid "%s: argument #%d negative value %Zd will give strange results" msgstr "%s: argomento #%d con valore negativo %Zd, darà risultati strani" @@ -3348,24 +3380,24 @@ msgstr "%s: argomento #%d con valore negativo %Zd, dar msgid "cmd. line:" msgstr "riga com.:" -#: node.c:418 +#: node.c:434 msgid "backslash at end of string" msgstr "'\\' a fine stringa" -#: node.c:497 +#: node.c:513 #, c-format msgid "old awk does not support the `\\%c' escape sequence" msgstr "il vecchio awk non supporta la sequenza di escape '\\%c'" -#: node.c:548 +#: node.c:564 msgid "POSIX does not allow `\\x' escapes" msgstr "POSIX non permette escape `\\x'" -#: node.c:554 +#: node.c:570 msgid "no hex digits in `\\x' escape sequence" msgstr "niente cifre esadecimali nella sequenza di escape `\\x'" -#: node.c:576 +#: node.c:592 #, c-format msgid "" "hex escape \\x%.*s of %d characters probably not interpreted the way you " @@ -3374,12 +3406,12 @@ msgstr "" "sequenza di escape esadec.\\x%.*s di %d caratteri probabilmente non " "interpretata nel modo previsto" -#: node.c:591 +#: node.c:607 #, c-format msgid "escape sequence `\\%c' treated as plain `%c'" msgstr "sequenza di escape `\\%c' considerata come semplice `%c'" -#: node.c:735 +#: node.c:744 msgid "" "Invalid multibyte data detected. There may be a mismatch between your data " "and your locale." @@ -3398,16 +3430,16 @@ msgid "%s %s `%s': could not set close-on-exec: (fcntl F_SETFD: %s)" msgstr "" "%s %s `%s': non riesco a impostare 'close-on-exec': (fcntl F_SETFD: %s)" -#: profile.c:91 +#: profile.c:94 #, c-format msgid "could not open `%s' for writing: %s" msgstr "non riesco ad aprire `%s' in scrittura: %s" -#: profile.c:93 +#: profile.c:96 msgid "sending profile to standard error" msgstr "mando profilo a 'standard error'" -#: profile.c:213 +#: profile.c:216 #, c-format msgid "" "\t# %s rule(s)\n" @@ -3416,7 +3448,7 @@ msgstr "" "\t# %s regola(e)\n" "\n" -#: profile.c:218 +#: profile.c:221 #, c-format msgid "" "\t# Rule(s)\n" @@ -3425,16 +3457,16 @@ msgstr "" "\t# Regola(e)\n" "\n" -#: profile.c:292 +#: profile.c:295 #, c-format msgid "internal error: %s with null vname" msgstr "errore interno: %s con `vname' nullo" -#: profile.c:558 +#: profile.c:561 msgid "internal error: builtin with null fname" msgstr "errore interno: funzione interna con `fname' nullo" -#: profile.c:978 +#: profile.c:1006 #, c-format msgid "" "\t# Loaded extensions (-l and/or @load)\n" @@ -3443,12 +3475,12 @@ msgstr "" "\t# Estensioni caricate (-l e/o @load)\n" "\n" -#: profile.c:1001 +#: profile.c:1029 #, c-format msgid "\t# gawk profile, created %s\n" msgstr "\t# profilo gawk, creato %s\n" -#: profile.c:1555 +#: profile.c:1600 #, c-format msgid "" "\n" @@ -3457,95 +3489,138 @@ msgstr "" "\n" "\t# Funzioni, in ordine alfabetico\n" -#: profile.c:1593 +#: profile.c:1638 #, c-format msgid "redir2str: unknown redirection type %d" msgstr "redir2str: tipo di ri-direzione non noto %d" -#: re.c:607 +#: re.c:610 #, c-format msgid "regexp component `%.*s' should probably be `[%.*s]'" msgstr "" "componente di espressione `%.*s' dovrebbe probabilmente essere `[%.*s]'" -#: regcomp.c:139 +#: regcomp.c:143 msgid "Success" msgstr "Successo" -#: regcomp.c:142 +#: regcomp.c:146 msgid "No match" msgstr "Nessuna corrispondenza" -#: regcomp.c:145 +#: regcomp.c:149 msgid "Invalid regular expression" msgstr "Espressione regolare invalida" -#: regcomp.c:148 +#: regcomp.c:152 msgid "Invalid collation character" msgstr "Carattere di ordinamento non valido" -#: regcomp.c:151 +#: regcomp.c:155 msgid "Invalid character class name" msgstr "Nome di 'classe di caratteri' non valido" -#: regcomp.c:154 +#: regcomp.c:158 msgid "Trailing backslash" msgstr "'\\' finale" -#: regcomp.c:157 +#: regcomp.c:161 msgid "Invalid back reference" msgstr "Riferimento indietro non valido" -#: regcomp.c:160 +#: regcomp.c:164 msgid "Unmatched [, [^, [:, [., or [=" msgstr "[, [^, [:, [. o [= non chiusa" -#: regcomp.c:163 +#: regcomp.c:167 msgid "Unmatched ( or \\(" msgstr "( o \\( non chiusa" -#: regcomp.c:166 +#: regcomp.c:170 msgid "Unmatched \\{" msgstr "\\{ non chiusa" -#: regcomp.c:169 +#: regcomp.c:173 msgid "Invalid content of \\{\\}" msgstr "Contenuto di \\{\\} non valido" -#: regcomp.c:172 +#: regcomp.c:176 msgid "Invalid range end" msgstr "Fine di intervallo non valido" -#: regcomp.c:175 +#: regcomp.c:179 msgid "Memory exhausted" msgstr "Memoria esaurita" -#: regcomp.c:178 +#: regcomp.c:182 msgid "Invalid preceding regular expression" msgstr "Espressione regolare precedente invalida" -#: regcomp.c:181 +#: regcomp.c:185 msgid "Premature end of regular expression" msgstr "Fine di espressione regolare inaspettata" -#: regcomp.c:184 +#: regcomp.c:188 msgid "Regular expression too big" msgstr "Espressione regolare troppo complessa" -#: regcomp.c:187 +#: regcomp.c:191 msgid "Unmatched ) or \\)" msgstr ") o \\) non aperta" -#: regcomp.c:712 +#: regcomp.c:701 msgid "No previous regular expression" msgstr "Nessuna espressione regolare precedente" -#: symbol.c:678 +#: symbol.c:684 #, c-format msgid "function `%s': can't use function `%s' as a parameter name" msgstr "" "funzione `%s': non è possibile come nome parametro quello della funzione `%s'" -#: symbol.c:810 +#: symbol.c:816 msgid "can not pop main context" msgstr "non posso salire più in alto nello stack" + +#~ msgid "`isarray' is deprecated. Use `typeof' instead" +#~ msgstr "`isarray' è una funzione deprecata. Usare `typeof' al suo posto" + +#~ msgid "intdiv: third argument is not an array" +#~ msgstr "intdiv: il terzo argomento non è un vettore" + +#~ msgid "intdiv: received non-numeric first argument" +#~ msgstr "intdiv: il primo argomento ricevuto non è numerico" + +#~ msgid "intdiv: received non-numeric second argument" +#~ msgstr "intdiv: il secondo argomento ricevuto non è numerico" + +#~ msgid "intdiv: division by zero attempted" +#~ msgstr "intdiv: tentativo di dividere per zero" + +#~ msgid "typeof: unknown argument type `%s'" +#~ msgstr "typeof: tipo di argomento sconosciuto `%s'" + +#~ msgid "function `%s' defined to take no more than %d argument(s)" +#~ msgstr "funzione `%s' definita per avere al massimo %d argomenti(o)" + +#~ msgid "function `%s': missing argument #%d" +#~ msgstr "funzione `%s': manca argomento #%d" + +#~ msgid "cannot find end of BEGINFILE rule" +#~ msgstr "non riesco a trovare la fine di una regola BEGINFILE" + +#~ msgid "cannot open unrecognized file type `%s' for `%s'" +#~ msgstr "non riesco ad aprire file di tipo non riconosciuto `%s' per `%s'" + +#~ msgid "get_file cannot create pipe `%s' with fd %d" +#~ msgstr "get_file non riesce a creare una `pipe' `%s' con fd %d" + +#~ msgid "" +#~ "get_file socket creation not supported on this platform for `%s' with fd " +#~ "%d" +#~ msgstr "" +#~ "creazione di socket get_file non disponibile su questa piattaforma per `" +#~ "%s' con fd %d" + +#~ msgid "\t-s\t\t\t--no-optimize\n" +#~ msgstr "\t-s\t\t\t--no-optimize\n" diff --git a/po/ja.po b/po/ja.po index 08a64e6..f09c5b2 100644 --- a/po/ja.po +++ b/po/ja.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: gawk 4.1.0b\n" "Report-Msgid-Bugs-To: bug-gawk@gnu.org\n" -"POT-Creation-Date: 2015-05-19 16:06+0300\n" +"POT-Creation-Date: 2016-08-25 06:19+0300\n" "PO-Revision-Date: 2014-11-07 12:26+0000\n" "Last-Translator: Yasuaki Taniguchi \n" "Language-Team: Japanese \n" @@ -18,84 +18,84 @@ msgstr "" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=1; plural=0;\n" -#: array.c:256 +#: array.c:259 #, c-format msgid "from %s" msgstr "%s ã‹ã‚‰" -#: array.c:357 +#: array.c:360 msgid "attempt to use a scalar value as array" msgstr "スカラー値をé…列ã¨ã—ã¦ä½¿ç”¨ã™ã‚‹è©¦ã¿ã§ã™" -#: array.c:359 +#: array.c:362 #, c-format msgid "attempt to use scalar parameter `%s' as an array" msgstr "スカラー仮引数 `%s' ã‚’é…列ã¨ã—ã¦ä½¿ç”¨ã™ã‚‹è©¦ã¿ã§ã™" -#: array.c:362 +#: array.c:365 #, c-format msgid "attempt to use scalar `%s' as an array" msgstr "スカラー `%s' ã‚’é…列ã¨ã—ã¦ä½¿ç”¨ã™ã‚‹è©¦ã¿ã§ã™" -#: array.c:409 array.c:576 builtin.c:85 builtin.c:1606 builtin.c:1652 -#: builtin.c:1665 builtin.c:2112 builtin.c:2126 eval.c:1149 eval.c:1153 -#: eval.c:1564 +#: array.c:412 array.c:579 builtin.c:85 builtin.c:1612 builtin.c:1658 +#: builtin.c:1671 builtin.c:2160 builtin.c:2179 eval.c:1141 eval.c:1145 +#: eval.c:1556 #, c-format msgid "attempt to use array `%s' in a scalar context" msgstr "スカラーコンテキストã§é…列 `%s' を使用ã™ã‚‹è©¦ã¿ã§ã™" -#: array.c:583 +#: array.c:586 #, c-format msgid "delete: index `%s' not in array `%s'" msgstr "delete: é…列 `%2$s' 内ã«ã‚¤ãƒ³ãƒ‡ãƒƒã‚¯ã‚¹ `%1$s' ãŒã‚ã‚Šã¾ã›ã‚“" -#: array.c:597 +#: array.c:600 #, c-format msgid "attempt to use scalar `%s[\"%.*s\"]' as an array" msgstr "スカラー `%s[\"%.*s\"]' ã‚’é…列ã¨ã—ã¦ä½¿ç”¨ã™ã‚‹è©¦ã¿ã§ã™" -#: array.c:776 +#: array.c:779 msgid "adump: first argument not an array" msgstr "adump: 第一引数ãŒé…列ã§ã¯ã‚ã‚Šã¾ã›ã‚“" -#: array.c:815 +#: array.c:818 msgid "asort: second argument not an array" msgstr "asort: 第二引数ãŒé…列ã§ã¯ã‚ã‚Šã¾ã›ã‚“" -#: array.c:816 +#: array.c:819 msgid "asorti: second argument not an array" msgstr "asorti: 第二引数ãŒé…列ã§ã¯ã‚ã‚Šã¾ã›ã‚“" -#: array.c:823 +#: array.c:826 msgid "asort: first argument not an array" msgstr "asort: 第一引数ãŒé…列ã§ã¯ã‚ã‚Šã¾ã›ã‚“" -#: array.c:824 +#: array.c:827 msgid "asorti: first argument not an array" msgstr "asorti: 第一引数ãŒé…列ã§ã¯ã‚ã‚Šã¾ã›ã‚“" -#: array.c:831 +#: array.c:834 msgid "asort: cannot use a subarray of first arg for second arg" msgstr "asort: 第一引数ã®éƒ¨åˆ†é…列を第二引数用ã«ä½¿ç”¨ã™ã‚‹ã“ã¨ã¯å‡ºæ¥ã¾ã›ã‚“" -#: array.c:832 +#: array.c:835 msgid "asorti: cannot use a subarray of first arg for second arg" msgstr "asorti: 第一引数ã®éƒ¨åˆ†é…列を第二引数用ã«ä½¿ç”¨ã™ã‚‹ã“ã¨ã¯å‡ºæ¥ã¾ã›ã‚“" -#: array.c:837 +#: array.c:840 msgid "asort: cannot use a subarray of second arg for first arg" msgstr "asort: 第二引数ã®éƒ¨åˆ†é…列を第一引数用ã«ä½¿ç”¨ã™ã‚‹ã“ã¨ã¯å‡ºæ¥ã¾ã›ã‚“" -#: array.c:838 +#: array.c:841 msgid "asorti: cannot use a subarray of second arg for first arg" msgstr "asorti: 第二引数ã®éƒ¨åˆ†é…列を第一引数用ã«ä½¿ç”¨ã™ã‚‹ã“ã¨ã¯å‡ºæ¥ã¾ã›ã‚“" -#: array.c:1313 +#: array.c:1316 #, c-format msgid "`%s' is invalid as a function name" msgstr "`%s' ã¯é–¢æ•°åã¨ã—ã¦ã¯ç„¡åŠ¹ã§ã™" -#: array.c:1317 +#: array.c:1320 #, c-format msgid "sort comparison function `%s' is not defined" msgstr "ソート比較関数 `%s' ãŒå®šç¾©ã•ã‚Œã¦ã„ã¾ã›ã‚“" @@ -136,11 +136,11 @@ msgstr "switch æ–‡ã®ä¸­ã§é‡è¤‡ã—㟠case 値ãŒä½¿ç”¨ã•ã‚Œã¦ã„ã¾ã™: %s" msgid "duplicate `default' detected in switch body" msgstr "switch æ–‡ã®ä¸­ã§é‡è¤‡ã—㟠`default' ãŒæ¤œå‡ºã•ã‚Œã¾ã—ãŸ" -#: awkgram.y:793 awkgram.y:3763 +#: awkgram.y:793 awkgram.y:3774 msgid "`break' is not allowed outside a loop or switch" msgstr "`break' ã¯ãƒ«ãƒ¼ãƒ—ã¾ãŸã¯ switch ã®å¤–ã§ã¯è¨±å¯ã•ã‚Œã¦ã„ã¾ã›ã‚“" -#: awkgram.y:802 awkgram.y:3755 +#: awkgram.y:802 awkgram.y:3766 msgid "`continue' is not allowed outside a loop" msgstr "`continue' ã¯ãƒ«ãƒ¼ãƒ—ã®å¤–ã§ã¯è¨±å¯ã•ã‚Œã¦ã„ã¾ã›ã‚“" @@ -230,7 +230,7 @@ msgstr "関数 `%s' ã‚’é…列ã¨ã—ã¦ä½¿ç”¨ã™ã‚‹è©¦ã¿ã§ã™" msgid "invalid subscript expression" msgstr "添字ã®å¼ãŒç„¡åŠ¹ã§ã™" -#: awkgram.y:2047 awkgram.y:2067 gawkapi.c:206 gawkapi.c:224 msg.c:126 +#: awkgram.y:2047 awkgram.y:2067 gawkapi.c:206 gawkapi.c:223 msg.c:126 msgid "warning: " msgstr "警告: " @@ -238,264 +238,269 @@ msgstr "警告: " msgid "fatal: " msgstr "致命的: " -#: awkgram.y:2115 +#: awkgram.y:2116 msgid "unexpected newline or end of string" msgstr "予期ã—ãªã„改行ã¾ãŸã¯æ–‡å­—列終端ã§ã™" -#: awkgram.y:2394 awkgram.y:2470 awkgram.y:2693 debug.c:523 debug.c:539 -#: debug.c:2812 debug.c:5055 +#: awkgram.y:2397 awkgram.y:2473 awkgram.y:2696 debug.c:523 debug.c:539 +#: debug.c:2812 debug.c:5101 #, c-format msgid "can't open source file `%s' for reading (%s)" msgstr "ソースファイル `%s' を読ã¿è¾¼ã¿ç”¨ã«é–‹ã‘ã¾ã›ã‚“ (%s)" -#: awkgram.y:2395 awkgram.y:2520 +#: awkgram.y:2398 awkgram.y:2523 #, c-format msgid "can't open shared library `%s' for reading (%s)" msgstr "共有ライブラリ `%s' を読ã¿è¾¼ã¿ç”¨ã«é–‹ã‘ã¾ã›ã‚“ (%s)" -#: awkgram.y:2397 awkgram.y:2471 awkgram.y:2521 builtin.c:135 debug.c:5206 +#: awkgram.y:2400 awkgram.y:2474 awkgram.y:2524 builtin.c:135 debug.c:5252 msgid "reason unknown" msgstr "原因ä¸æ˜Ž" -#: awkgram.y:2406 awkgram.y:2430 +#: awkgram.y:2409 awkgram.y:2433 #, c-format msgid "can't include `%s' and use it as a program file" msgstr "" -#: awkgram.y:2419 +#: awkgram.y:2422 #, c-format msgid "already included source file `%s'" msgstr "ソースファイル `%s' ã¯æ—¢ã«èª­ã¿è¾¼ã¾ã‚Œã¦ã„ã¾ã™" -#: awkgram.y:2420 +#: awkgram.y:2423 #, c-format msgid "already loaded shared library `%s'" msgstr "共有ライブラリ `%s' ã¯æ—¢ã«èª­ã¿è¾¼ã¾ã‚Œã¦ã„ã¾ã™" -#: awkgram.y:2455 +#: awkgram.y:2458 msgid "@include is a gawk extension" msgstr "@include 㯠gawk æ‹¡å¼µã§ã™" -#: awkgram.y:2461 +#: awkgram.y:2464 msgid "empty filename after @include" msgstr "@include ã®å¾Œã«ç©ºã®ãƒ•ã‚¡ã‚¤ãƒ«åãŒã‚ã‚Šã¾ã™" -#: awkgram.y:2505 +#: awkgram.y:2508 msgid "@load is a gawk extension" msgstr "@load 㯠gawk æ‹¡å¼µã§ã™" -#: awkgram.y:2511 +#: awkgram.y:2514 msgid "empty filename after @load" msgstr "@load ã®å¾Œã«ç©ºã®ãƒ•ã‚¡ã‚¤ãƒ«åãŒã‚ã‚Šã¾ã™" -#: awkgram.y:2645 +#: awkgram.y:2648 msgid "empty program text on command line" msgstr "コマンド行ã®ãƒ—ログラム表記ãŒç©ºã§ã™" -#: awkgram.y:2760 +#: awkgram.y:2763 #, c-format msgid "can't read sourcefile `%s' (%s)" msgstr "ソースファイル `%s' を読ã¿è¾¼ã‚ã¾ã›ã‚“ (%s)" -#: awkgram.y:2771 +#: awkgram.y:2774 #, c-format msgid "source file `%s' is empty" msgstr "ソースファイル `%s' ã¯ç©ºã§ã™" -#: awkgram.y:2830 +#: awkgram.y:2833 #, c-format msgid "PEBKAC error: invalid character '\\%03o' in source code" msgstr "" -#: awkgram.y:2961 +#: awkgram.y:2964 msgid "source file does not end in newline" msgstr "ソースファイルãŒæ”¹è¡Œã§çµ‚ã£ã¦ã„ã¾ã›ã‚“" -#: awkgram.y:3074 +#: awkgram.y:3081 msgid "unterminated regexp ends with `\\' at end of file" msgstr "終端ã•ã‚Œã¦ã„ãªã„æ­£è¦è¡¨ç¾ãŒãƒ•ã‚¡ã‚¤ãƒ«æœ€å¾Œã® `\\' ã§çµ‚ã£ã¦ã„ã¾ã™ã€‚" -#: awkgram.y:3101 +#: awkgram.y:3108 #, c-format msgid "%s: %d: tawk regex modifier `/.../%c' doesn't work in gawk" msgstr "%s: %d: tawk ã®æ­£è¦è¡¨ç¾ä¿®é£¾å­ `/.../%c' 㯠gawk ã§ä½¿ç”¨ã§ãã¾ã›ã‚“" -#: awkgram.y:3105 +#: awkgram.y:3112 #, c-format msgid "tawk regex modifier `/.../%c' doesn't work in gawk" msgstr "tawk ã®æ­£è¦è¡¨ç¾ä¿®é£¾å­ `/.../%c' 㯠gawk ã§ä½¿ç”¨ã§ãã¾ã›ã‚“" -#: awkgram.y:3112 +#: awkgram.y:3119 msgid "unterminated regexp" msgstr "æ­£è¦è¡¨ç¾ãŒçµ‚端ã•ã‚Œã¦ã„ã¾ã›ã‚“" -#: awkgram.y:3116 +#: awkgram.y:3123 msgid "unterminated regexp at end of file" msgstr "ファイルã®ä¸­ã§æ­£è¦è¡¨ç¾ãŒçµ‚端ã•ã‚Œã¦ã„ã¾ã›ã‚“" -#: awkgram.y:3174 +#: awkgram.y:3181 msgid "use of `\\ #...' line continuation is not portable" msgstr "`\\ #...' å½¢å¼ã®è¡Œç¶™ç¶šã¯ç§»æ¤æ€§ãŒã‚ã‚Šã¾ã›ã‚“" -#: awkgram.y:3190 +#: awkgram.y:3197 msgid "backslash not last character on line" msgstr "ãƒãƒƒã‚¯ã‚¹ãƒ©ãƒƒã‚·ãƒ¥ãŒè¡Œæœ€å¾Œã®æ–‡å­—ã«ãªã£ã¦ã„ã¾ã›ã‚“。" -#: awkgram.y:3251 +#: awkgram.y:3235 awkgram.y:3237 +#, fuzzy +msgid "multidimensional arrays are a gawk extension" +msgstr "間接関数呼ã³å‡ºã—㯠gawk æ‹¡å¼µã§ã™" + +#: awkgram.y:3262 msgid "POSIX does not allow operator `**='" msgstr "POSIX ã§ã¯æ¼”ç®—å­ `**=' ã¯è¨±å¯ã•ã‚Œã¦ã„ã¾ã›ã‚“" -#: awkgram.y:3253 +#: awkgram.y:3264 msgid "old awk does not support operator `**='" msgstr "å¤ã„ awk ã¯æ¼”ç®—å­ `**=' をサãƒãƒ¼ãƒˆã—ã¾ã›ã‚“" -#: awkgram.y:3262 +#: awkgram.y:3273 msgid "POSIX does not allow operator `**'" msgstr "POSIX ã§ã¯æ¼”ç®—å­ `**' ã¯è¨±å¯ã•ã‚Œã¦ã„ã¾ã›ã‚“" -#: awkgram.y:3264 +#: awkgram.y:3275 msgid "old awk does not support operator `**'" msgstr "å¤ã„ awk ã¯æ¼”ç®—å­ `**' をサãƒãƒ¼ãƒˆã—ã¾ã›ã‚“" -#: awkgram.y:3299 +#: awkgram.y:3310 msgid "operator `^=' is not supported in old awk" msgstr "å¤ã„ awk ã¯æ¼”ç®—å­ `^=' をサãƒãƒ¼ãƒˆã—ã¾ã›ã‚“" -#: awkgram.y:3307 +#: awkgram.y:3318 msgid "operator `^' is not supported in old awk" msgstr "å¤ã„ awk ã¯æ¼”ç®—å­ `^' をサãƒãƒ¼ãƒˆã—ã¾ã›ã‚“" -#: awkgram.y:3404 awkgram.y:3422 command.y:1180 +#: awkgram.y:3415 awkgram.y:3433 command.y:1187 msgid "unterminated string" msgstr "文字列ãŒçµ‚端ã•ã‚Œã¦ã„ã¾ã›ã‚“" -#: awkgram.y:3643 +#: awkgram.y:3654 #, c-format msgid "invalid char '%c' in expression" msgstr "å¼å†…ã«ç„¡åŠ¹ãªæ–‡å­— '%c' ãŒã‚ã‚Šã¾ã™" -#: awkgram.y:3690 +#: awkgram.y:3701 #, c-format msgid "`%s' is a gawk extension" msgstr "`%s' 㯠gawk æ‹¡å¼µã§ã™" -#: awkgram.y:3695 +#: awkgram.y:3706 #, c-format msgid "POSIX does not allow `%s'" msgstr "POSIX ã§ã¯ `%s' ã¯è¨±å¯ã•ã‚Œã¦ã„ã¾ã›ã‚“" -#: awkgram.y:3703 +#: awkgram.y:3714 #, c-format msgid "`%s' is not supported in old awk" msgstr "å¤ã„ awk 㯠`%s' をサãƒãƒ¼ãƒˆã—ã¾ã›ã‚“" -#: awkgram.y:3793 +#: awkgram.y:3804 msgid "`goto' considered harmful!\n" msgstr "`goto' ã¯æœ‰å®³ã ã¨è¦‹ãªã•ã‚Œã¦ã„ã¾ã™!\n" -#: awkgram.y:3827 +#: awkgram.y:3873 #, c-format msgid "%d is invalid as number of arguments for %s" msgstr "%d 㯠%s 用ã®å¼•æ•°ã®æ•°ã¨ã—ã¦ã¯ç„¡åŠ¹ã§ã™" -#: awkgram.y:3862 +#: awkgram.y:3908 #, c-format msgid "%s: string literal as last arg of substitute has no effect" msgstr "%s: 文字列リテラルを置ãæ›ãˆæœ€å¾Œã®å¼•æ•°ã«ä½¿ç”¨ã™ã‚‹ã¨åŠ¹æžœãŒã‚ã‚Šã¾ã›ã‚“" -#: awkgram.y:3867 +#: awkgram.y:3913 #, c-format msgid "%s third parameter is not a changeable object" msgstr "%s 第三仮引数ã¯å¯å¤‰ã‚ªãƒ–ジェクトã§ã¯ã‚ã‚Šã¾ã›ã‚“" -#: awkgram.y:3950 awkgram.y:3953 +#: awkgram.y:3996 awkgram.y:3999 msgid "match: third argument is a gawk extension" msgstr "match: 第三引数㯠gawk æ‹¡å¼µã§ã™" -#: awkgram.y:4007 awkgram.y:4010 +#: awkgram.y:4053 awkgram.y:4056 msgid "close: second argument is a gawk extension" msgstr "close: 第二引数㯠gawk æ‹¡å¼µã§ã™" -#: awkgram.y:4022 +#: awkgram.y:4068 msgid "use of dcgettext(_\"...\") is incorrect: remove leading underscore" msgstr "" "dcgettext(_\"...\")ã®ä½¿ç”¨æ³•ãŒé–“é•ã£ã¦ã„ã¾ã™: 先頭ã®ã‚¢ãƒ³ãƒ€ãƒ¼ã‚¹ã‚³ã‚¢(_)を削除ã—" "ã¦ãã ã•ã„" -#: awkgram.y:4037 +#: awkgram.y:4083 msgid "use of dcngettext(_\"...\") is incorrect: remove leading underscore" msgstr "" "dcngettext(_\"...\")ã®ä½¿ç”¨æ³•ãŒé–“é•ã£ã¦ã„ã¾ã™: 先頭ã®ã‚¢ãƒ³ãƒ€ãƒ¼ã‚¹ã‚³ã‚¢(_)を削除ã—" "ã¦ãã ã•ã„" -#: awkgram.y:4056 +#: awkgram.y:4102 #, fuzzy msgid "index: regexp constant as second argument is not allowed" msgstr "index: 文字列ã§ã¯ç„¡ã„第二引数をå—ã‘å–ã‚Šã¾ã—ãŸ" -#: awkgram.y:4109 +#: awkgram.y:4155 #, c-format msgid "function `%s': parameter `%s' shadows global variable" msgstr "関数 `%s': 仮引数 `%s' ãŒå¤§åŸŸå¤‰æ•°ã‚’覆ã„éš ã—ã¦ã„ã¾ã™" -#: awkgram.y:4166 debug.c:4041 debug.c:4084 debug.c:5204 +#: awkgram.y:4214 debug.c:4087 debug.c:4130 debug.c:5250 #, c-format msgid "could not open `%s' for writing (%s)" msgstr "`%s' を書込ã¿ç”¨ã«é–‹ã‘ã¾ã›ã‚“ã§ã—㟠(%s)" -#: awkgram.y:4167 +#: awkgram.y:4215 msgid "sending variable list to standard error" msgstr "変数リストを標準エラーã«é€ã£ã¦ã„ã¾ã™" -#: awkgram.y:4175 +#: awkgram.y:4223 #, c-format msgid "%s: close failed (%s)" msgstr "%s: é–‰ã˜ã‚‹ã®ã«å¤±æ•—ã—ã¾ã—㟠(%s)" -#: awkgram.y:4200 +#: awkgram.y:4248 msgid "shadow_funcs() called twice!" msgstr "shadow_funcs() を二回呼ã³å‡ºã—ã¦ã„ã¾ã™!" -#: awkgram.y:4208 +#: awkgram.y:4256 msgid "there were shadowed variables." msgstr "覆ã„éš ã•ã‚ŒãŸå¤‰æ•°ãŒã‚ã‚Šã¾ã—ãŸ" -#: awkgram.y:4279 +#: awkgram.y:4327 #, c-format msgid "function name `%s' previously defined" msgstr "関数å `%s' ã¯å‰ã«å®šç¾©ã•ã‚Œã¦ã„ã¾ã™" -#: awkgram.y:4325 +#: awkgram.y:4373 #, c-format msgid "function `%s': can't use function name as parameter name" msgstr "関数 `%s': 関数åを仮引数åã¨ã—ã¦ä½¿ç”¨å‡ºæ¥ã¾ã›ã‚“" -#: awkgram.y:4328 +#: awkgram.y:4376 #, c-format msgid "function `%s': can't use special variable `%s' as a function parameter" msgstr "関数 `%s': 特別ãªå¤‰æ•° `%s' ã¯é–¢æ•°ã®ä»®å¼•æ•°ã¨ã—ã¦ä½¿ç”¨å‡ºæ¥ã¾ã›ã‚“" -#: awkgram.y:4336 +#: awkgram.y:4384 #, c-format msgid "function `%s': parameter #%d, `%s', duplicates parameter #%d" msgstr "関数 `%s': 仮引数 #%d, `%s' ãŒä»®å¼•æ•° #%d ã¨é‡è¤‡ã—ã¦ã„ã¾ã™" -#: awkgram.y:4423 awkgram.y:4429 +#: awkgram.y:4471 awkgram.y:4477 #, c-format msgid "function `%s' called but never defined" msgstr "未定義ã®é–¢æ•° `%s' を呼ã³å‡ºã—ã¾ã—ãŸ" -#: awkgram.y:4433 +#: awkgram.y:4481 #, c-format msgid "function `%s' defined but never called directly" msgstr "関数 `%s' ã¯å®šç¾©ã•ã‚Œã¦ã„ã¾ã™ãŒã€ä¸€åº¦ã‚‚直接呼ã³å‡ºã•ã‚Œã¦ã„ã¾ã›ã‚“" -#: awkgram.y:4465 +#: awkgram.y:4513 #, c-format msgid "regexp constant for parameter #%d yields boolean value" msgstr "仮引数 #%d 用ã®æ­£è¦è¡¨ç¾å®šæ•°ã¯çœŸå½å€¤ã‚’出力ã—ã¾ã™" -#: awkgram.y:4480 +#: awkgram.y:4528 #, c-format msgid "" "function `%s' called with space between name and `(',\n" @@ -504,21 +509,21 @@ msgstr "" "関数å㨠`(' ã®é–“ã«ã‚¹ãƒšãƒ¼ã‚¹ã‚’入れã¦é–¢æ•° `%s' を呼ã³å‡ºã—ã¦ã„ã¾ã™ã€‚\n" "ã¾ãŸã¯ã€å¤‰æ•°ã‹é…列ã¨ã—ã¦ä½¿ã‚ã‚Œã¦ã„ã¾ã™ã€‚" -#: awkgram.y:4686 +#: awkgram.y:4734 msgid "division by zero attempted" msgstr "ゼロã«ã‚ˆã‚‹é™¤ç®—ãŒè©¦ã¿ã‚‰ã‚Œã¾ã—ãŸ" -#: awkgram.y:4695 +#: awkgram.y:4743 #, c-format msgid "division by zero attempted in `%%'" msgstr "`%%' 内ã§ã‚¼ãƒ­ã«ã‚ˆã‚‹é™¤ç®—ãŒè©¦ã¿ã‚‰ã‚Œã¾ã—ãŸ" -#: awkgram.y:5015 +#: awkgram.y:5064 msgid "" "cannot assign a value to the result of a field post-increment expression" msgstr "" -#: awkgram.y:5018 +#: awkgram.y:5067 #, fuzzy, c-format msgid "invalid target of assignment (opcode %s)" msgstr "%d 㯠%s 用ã®å¼•æ•°ã®æ•°ã¨ã—ã¦ã¯ç„¡åŠ¹ã§ã™" @@ -555,203 +560,214 @@ msgstr "" "fflush: flush ã§ãã¾ã›ã‚“: ファイル `%s' ã¯èª­ã¿è¾¼ã¿ç”¨ã«é–‹ã‹ã‚Œã¦ã„ã¾ã™ã€‚書ãè¾¼" "ã¿ç”¨ã§ã¯ã‚ã‚Šã¾ã›ã‚“" -#: builtin.c:244 +#: builtin.c:241 +#, fuzzy, c-format +msgid "fflush: cannot flush: two-way pipe `%s' has closed write end" +msgstr "" +"fflush: flush ã§ãã¾ã›ã‚“: パイプ `%s' ã¯èª­ã¿è¾¼ã¿ç”¨ã«é–‹ã‹ã‚Œã¦ã„ã¾ã™ã€‚書ãè¾¼ã¿" +"用ã§ã¯ã‚ã‚Šã¾ã›ã‚“" + +#: builtin.c:247 #, c-format msgid "fflush: `%s' is not an open file, pipe or co-process" msgstr "fflush: `%s' ãŒé–‹ã‹ã‚ŒãŸãƒ•ã‚¡ã‚¤ãƒ«ã€ãƒ‘イプã€ãƒ—ロセス共有ã§ã¯ã‚ã‚Šã¾ã›ã‚“" -#: builtin.c:351 +#: builtin.c:354 msgid "index: received non-string first argument" msgstr "index: 文字列ã§ã¯ç„¡ã„第一引数をå—ã‘å–ã‚Šã¾ã—ãŸ" -#: builtin.c:353 +#: builtin.c:356 msgid "index: received non-string second argument" msgstr "index: 文字列ã§ã¯ç„¡ã„第二引数をå—ã‘å–ã‚Šã¾ã—ãŸ" -#: builtin.c:466 mpfr.c:777 +#: builtin.c:469 mpfr.c:781 msgid "int: received non-numeric argument" msgstr "int: 数値ã§ã¯ç„¡ã„引数をå—ã‘å–ã‚Šã¾ã—ãŸ" -#: builtin.c:503 +#: builtin.c:506 msgid "length: received array argument" msgstr "length: é…列引数をå—ã‘å–ã‚Šã¾ã—ãŸ" -#: builtin.c:506 +#: builtin.c:509 msgid "`length(array)' is a gawk extension" msgstr "`length(array)' 㯠gawk æ‹¡å¼µã§ã™" -#: builtin.c:525 +#: builtin.c:528 msgid "length: received non-string argument" msgstr "length: 文字列ã§ã¯ç„¡ã„引数をå—ã‘å–ã‚Šã¾ã—ãŸ" -#: builtin.c:554 +#: builtin.c:557 msgid "log: received non-numeric argument" msgstr "log: 数値ã§ã¯ç„¡ã„引数をå—ã‘å–ã‚Šã¾ã—ãŸ" -#: builtin.c:557 +#: builtin.c:560 #, c-format msgid "log: received negative argument %g" msgstr "log: è² ã®å¼•æ•° %g ã‚’å—ã‘å–ã‚Šã¾ã—ãŸ" -#: builtin.c:755 builtin.c:760 builtin.c:911 +#: builtin.c:758 builtin.c:763 builtin.c:914 msgid "fatal: must use `count$' on all formats or none" msgstr "" "致命的: `count$’ ã¯å…¨ã¦ã®æ›¸å¼ä½¿ç”¨ã™ã‚‹ã€ã¾ãŸã¯å…¨ã¦ã«ä½¿ç”¨ã—ãªã„ã®ã„ãšã‚Œã‹ã§ãªã‘" "ã‚Œã°ã„ã‘ã¾ã›ã‚“" -#: builtin.c:830 +#: builtin.c:833 #, c-format msgid "field width is ignored for `%%' specifier" msgstr "`%%' 指定用ã®ãƒ•ã‚£ãƒ¼ãƒ«ãƒ‰å¹…ã¯ç„¡è¦–ã•ã‚Œã¾ã™" -#: builtin.c:832 +#: builtin.c:835 #, c-format msgid "precision is ignored for `%%' specifier" msgstr "`%%' 指定用ã®ãƒ•ã‚£ãƒ¼ãƒ«ãƒ‰å¹…ã¯ç„¡è¦–ã•ã‚Œã¾ã™" -#: builtin.c:834 +#: builtin.c:837 #, c-format msgid "field width and precision are ignored for `%%' specifier" msgstr "`%%' 指定用ã®ãƒ•ã‚£ãƒ¼ãƒ«ãƒ‰å¹…ãŠã‚ˆã³ç²¾åº¦ã¯ç„¡è¦–ã•ã‚Œã¾ã™" -#: builtin.c:885 +#: builtin.c:888 msgid "fatal: `$' is not permitted in awk formats" msgstr "致命的: `$' 㯠awk å½¢å¼å†…ã§ã¯è¨±å¯ã•ã‚Œã¦ã„ã¾ã›ã‚“" -#: builtin.c:894 +#: builtin.c:897 msgid "fatal: arg count with `$' must be > 0" msgstr "致命的: `$' ã§æŒ‡å®šã™ã‚‹å¼•æ•°ã®ç•ªå·ã¯æ­£ã§ãªã‘ã‚Œã°ã„ã‘ã¾ã›ã‚“" -#: builtin.c:898 +#: builtin.c:901 #, c-format msgid "fatal: arg count %ld greater than total number of supplied arguments" msgstr "致命的: 引数ã®ç•ªå· %ld ã¯å¼•æ•°ã¨ã—ã¦ä¸Žãˆã‚‰ã‚ŒãŸæ•°ã‚ˆã‚Šå¤§ãã„ã§ã™" -#: builtin.c:902 +#: builtin.c:905 msgid "fatal: `$' not permitted after period in format" msgstr "致命的: `$' ã¯æ›¸å¼æŒ‡å®šå†…ã®ãƒ”リオド `.' ã®å¾Œã«ä½¿ç”¨ã§ãã¾ã›ã‚“" -#: builtin.c:921 +#: builtin.c:924 msgid "fatal: no `$' supplied for positional field width or precision" msgstr "致命的: フィールド幅ã€ã¾ãŸã¯ç²¾åº¦ã®æŒ‡å®šå­ã« `$' ãŒä¸Žãˆã‚‰ã‚Œã¦ã„ã¾ã›ã‚“" -#: builtin.c:991 +#: builtin.c:994 msgid "`l' is meaningless in awk formats; ignored" msgstr "awk ã®æ›¸å¼æŒ‡å®šã§ã¯ `l' ã¯ç„¡æ„味ã§ã™ã€‚無視ã—ã¾ã™" -#: builtin.c:995 +#: builtin.c:998 msgid "fatal: `l' is not permitted in POSIX awk formats" msgstr "致命的: POSIX awk 書å¼å†…ã§ã¯ `l' ã¯è¨±å¯ã•ã‚Œã¦ã„ã¾ã›ã‚“" -#: builtin.c:1008 +#: builtin.c:1011 msgid "`L' is meaningless in awk formats; ignored" msgstr "awk ã®æ›¸å¼æŒ‡å®šã§ã¯ `L' ã¯ç„¡æ„味ã§ã™ã€‚無視ã—ã¾ã™ã€‚" -#: builtin.c:1012 +#: builtin.c:1015 msgid "fatal: `L' is not permitted in POSIX awk formats" msgstr "致命的: POSIX awk 書å¼å†…ã§ã¯ `L' ã¯è¨±å¯ã•ã‚Œã¦ã„ã¾ã›ã‚“" -#: builtin.c:1025 +#: builtin.c:1028 msgid "`h' is meaningless in awk formats; ignored" msgstr "awk ã®æ›¸å¼æŒ‡å®šã§ã¯ `h' ã¯ç„¡æ„味ã§ã™ã€‚無視ã—ã¾ã™ã€‚" -#: builtin.c:1029 +#: builtin.c:1032 msgid "fatal: `h' is not permitted in POSIX awk formats" msgstr "致命的: POSIX awk 書å¼å†…ã§ã¯ `h' ã¯è¨±å¯ã•ã‚Œã¦ã„ã¾ã›ã‚“" -#: builtin.c:1055 +#: builtin.c:1058 #, fuzzy, c-format msgid "[s]printf: value %g is too big for %%c format" msgstr "[s]printf: 値 %g ã¯æ›¸å¼ `%%%c' ã®ç¯„囲外ã§ã™" -#: builtin.c:1068 +#: builtin.c:1071 #, fuzzy, c-format msgid "[s]printf: value %g is not a valid wide character" msgstr "[s]printf: 値 %g ã¯æ›¸å¼ `%%%c' ã®ç¯„囲外ã§ã™" -#: builtin.c:1454 +#: builtin.c:1457 #, c-format msgid "[s]printf: value %g is out of range for `%%%c' format" msgstr "[s]printf: 値 %g ã¯æ›¸å¼ `%%%c' ã®ç¯„囲外ã§ã™" -#: builtin.c:1552 +#: builtin.c:1555 #, c-format msgid "ignoring unknown format specifier character `%c': no argument converted" msgstr "ä¸æ˜Žãªæ›¸å¼æŒ‡å®šæ–‡å­— `%c' を無視ã—ã¦ã„ã¾ã™: 変æ›ã•ã‚Œã‚‹å¼•æ•°ã¯ã‚ã‚Šã¾ã›ã‚“" -#: builtin.c:1557 +#: builtin.c:1560 msgid "fatal: not enough arguments to satisfy format string" msgstr "致命的: 書å¼æ–‡å­—列を満ãŸã™å分ãªæ•°ã®å¼•æ•°ãŒã‚ã‚Šã¾ã›ã‚“" -#: builtin.c:1559 +#: builtin.c:1562 msgid "^ ran out for this one" msgstr "^ ã“ã“ã‹ã‚‰è¶³ã‚Šã¾ã›ã‚“" -#: builtin.c:1566 +#: builtin.c:1569 msgid "[s]printf: format specifier does not have control letter" msgstr "[s]printf: 書å¼æŒ‡å®šå­ã«åˆ¶å¾¡æ–‡å­—ãŒã‚ã‚Šã¾ã›ã‚“" -#: builtin.c:1569 +#: builtin.c:1572 msgid "too many arguments supplied for format string" msgstr "書å¼æ–‡å­—列ã«ä¸Žãˆã‚‰ã‚Œã¦ã„る引数ãŒå¤šã™ãŽã¾ã™" -#: builtin.c:1625 +#: builtin.c:1631 msgid "sprintf: no arguments" msgstr "sprintf: 引数ãŒã‚ã‚Šã¾ã›ã‚“" -#: builtin.c:1648 builtin.c:1659 +#: builtin.c:1654 builtin.c:1665 msgid "printf: no arguments" msgstr "printf: 引数ãŒã‚ã‚Šã¾ã›ã‚“" -#: builtin.c:1702 +#: builtin.c:1676 +msgid "printf: attempt to write to closed write end of two-way pipe" +msgstr "" + +#: builtin.c:1713 msgid "sqrt: received non-numeric argument" msgstr "sqrt: 数値ã§ã¯ç„¡ã„引数をå—ã‘å–ã‚Šã¾ã—ãŸ" -#: builtin.c:1706 +#: builtin.c:1717 #, c-format msgid "sqrt: called with negative argument %g" msgstr "sqrt: è² ã®å€¤ %g を引数ã«ä½¿ç”¨ã—ã¦å‘¼ã³å‡ºã•ã‚Œã¾ã—ãŸ" -#: builtin.c:1737 +#: builtin.c:1748 #, c-format msgid "substr: length %g is not >= 1" msgstr "substr: é•·ã• %g ㌠1 以上ã§ã¯ã‚ã‚Šã¾ã›ã‚“" -#: builtin.c:1739 +#: builtin.c:1750 #, c-format msgid "substr: length %g is not >= 0" msgstr "substr: é•·ã• %g ㌠0 以上ã§ã¯ã‚ã‚Šã¾ã›ã‚“" -#: builtin.c:1753 +#: builtin.c:1764 #, c-format msgid "substr: non-integer length %g will be truncated" msgstr "substr: 文字数 %g ã®å°æ•°ç‚¹ä»¥ä¸‹ã¯åˆ‡ã‚Šæ¨ã¦ã¾ã™ã€‚" -#: builtin.c:1758 +#: builtin.c:1769 #, c-format msgid "substr: length %g too big for string indexing, truncating to %g" msgstr "substr: 文字数 %g ã¯æœ€å¤§å€¤ã‚’超ãˆã¦ã„ã¾ã™ã€‚%g を使ã„ã¾ã™ã€‚" -#: builtin.c:1770 +#: builtin.c:1781 #, c-format msgid "substr: start index %g is invalid, using 1" msgstr "substr: 開始インデックス %g ãŒç„¡åŠ¹ã§ã™ã€‚1を使用ã—ã¾ã™" -#: builtin.c:1775 +#: builtin.c:1786 #, c-format msgid "substr: non-integer start index %g will be truncated" msgstr "substr: 開始インデックス %g ãŒéžæ•´æ•°ã®ãŸã‚ã€å€¤ã¯åˆ‡ã‚Šæ¨ã¦ã‚‰ã‚Œã¾ã™" -#: builtin.c:1798 +#: builtin.c:1809 msgid "substr: source string is zero length" msgstr "substr: 文字列ã®é•·ã•ãŒã‚¼ãƒ­ã§ã™ã€‚" -#: builtin.c:1812 +#: builtin.c:1823 #, c-format msgid "substr: start index %g is past end of string" msgstr "substr: 開始インデックス %g ãŒæ–‡å­—列終端ã®å¾Œã«ã‚ã‚Šã¾ã™" -#: builtin.c:1820 +#: builtin.c:1831 #, c-format msgid "" "substr: length %g at start index %g exceeds length of first argument (%lu)" @@ -759,528 +775,536 @@ msgstr "" "substr: 開始インデックス %2$g ã‹ã‚‰ã®é•·ã• %1$g ã¯ç¬¬ä¸€å¼•æ•°ã®é•·ã•ã‚’超ãˆã¦ã„ã¾ã™ " "(%3$lu)" -#: builtin.c:1892 +#: builtin.c:1903 msgid "strftime: format value in PROCINFO[\"strftime\"] has numeric type" msgstr "strftime: PROCINFO[\"strftime\"] ã®æ›¸å¼ã®å€¤ã¯æ•°å€¤åž‹ã§ã™" -#: builtin.c:1915 +#: builtin.c:1926 msgid "strftime: received non-numeric second argument" msgstr "strftime: éžæ•°å€¤ã®ç¬¬äºŒå¼•æ•°ã‚’å—ã‘å–ã‚Šã¾ã—ãŸ" -#: builtin.c:1925 +#: builtin.c:1936 msgid "strftime: second argument less than 0 or too big for time_t" msgstr "" -#: builtin.c:1932 +#: builtin.c:1943 #, fuzzy msgid "strftime: second argument out of range for time_t" msgstr "asorti: 第二引数ãŒé…列ã§ã¯ã‚ã‚Šã¾ã›ã‚“" -#: builtin.c:1941 +#: builtin.c:1952 msgid "strftime: received non-string first argument" msgstr "strftime: éžæ–‡å­—列ã®ç¬¬ä¸€å¼•æ•°ã‚’å—ã‘å–ã‚Šã¾ã—ãŸ" -#: builtin.c:1948 +#: builtin.c:1959 msgid "strftime: received empty format string" msgstr "strftime: 空ã®æ›¸å¼æ–‡å­—列をå—ã‘å–ã‚Šã¾ã—ãŸ" -#: builtin.c:2017 +#: builtin.c:2028 msgid "mktime: received non-string argument" msgstr "mktime: éžæ–‡å­—列引数をå—ã‘å–ã‚Šã¾ã—ãŸ" -#: builtin.c:2034 +#: builtin.c:2045 msgid "mktime: at least one of the values is out of the default range" msgstr "mktime: 一ã¤ä»¥ä¸Šã®å€¤ãŒãƒ‡ãƒ•ã‚©ãƒ«ãƒˆã®ç¯„囲を超ãˆã¦ã„ã¾ã™" -#: builtin.c:2069 +#: builtin.c:2081 msgid "'system' function not allowed in sandbox mode" msgstr "サンドボックスモードã§ã¯ 'system' 関数ã¯è¨±å¯ã•ã‚Œã¦ã„ã¾ã›ã‚“" -#: builtin.c:2074 +#: builtin.c:2086 msgid "system: received non-string argument" msgstr "system: 文字列ã§ã¯ç„¡ã„引数をå—ã‘å–ã‚Šã¾ã—ãŸ" -#: builtin.c:2194 +#: builtin.c:2165 builtin.c:2230 +msgid "print: attempt to write to closed write end of two-way pipe" +msgstr "" + +#: builtin.c:2248 #, c-format msgid "reference to uninitialized field `$%d'" msgstr "åˆæœŸåŒ–ã•ã‚Œã¦ã„ãªã„フィールド `$%d' ã¸ã®å‚ç…§ã§ã™" -#: builtin.c:2279 +#: builtin.c:2333 msgid "tolower: received non-string argument" msgstr "tolower: éžæ–‡å­—列引数をå—ã‘å–ã‚Šã¾ã—ãŸ" -#: builtin.c:2310 +#: builtin.c:2364 msgid "toupper: received non-string argument" msgstr "toupper: éžæ–‡å­—列引数をå—ã‘å–ã‚Šã¾ã—ãŸ" -#: builtin.c:2343 mpfr.c:679 +#: builtin.c:2397 mpfr.c:681 msgid "atan2: received non-numeric first argument" msgstr "atan2: éžæ•°å€¤ã®ç¬¬ä¸€å¼•æ•°ã‚’å—ã‘å–ã‚Šã¾ã—ãŸ" -#: builtin.c:2345 mpfr.c:681 +#: builtin.c:2399 mpfr.c:683 msgid "atan2: received non-numeric second argument" msgstr "atan2: éžæ•°å€¤ã®ç¬¬äºŒå¼•æ•°ã‚’å—ã‘å–ã‚Šã¾ã—ãŸ" -#: builtin.c:2364 +#: builtin.c:2418 msgid "sin: received non-numeric argument" msgstr "sin: éžæ•°å€¤ã®å¼•æ•°ã‚’å—ã‘å–ã‚Šã¾ã—ãŸ" -#: builtin.c:2380 +#: builtin.c:2434 msgid "cos: received non-numeric argument" msgstr "cos: éžæ•°å€¤ã®å¼•æ•°ã‚’å—ã‘å–ã‚Šã¾ã—ãŸ" -#: builtin.c:2433 mpfr.c:1176 +#: builtin.c:2487 mpfr.c:1180 msgid "srand: received non-numeric argument" msgstr "srand: éžæ•°å€¤ã®å¼•æ•°ã‚’å—ã‘å–ã‚Šã¾ã—ãŸ" -#: builtin.c:2464 +#: builtin.c:2518 msgid "match: third argument is not an array" msgstr "match: 第三引数ãŒé…列ã§ã¯ã‚ã‚Šã¾ã›ã‚“" -#: builtin.c:2725 +#: builtin.c:2779 #, fuzzy, c-format msgid "gensub: third argument `%.*s' treated as 1" msgstr "gensub: 第三引数㌠0 ã§ã™ã€‚1 を代ã‚ã‚Šã«ä½¿ç”¨ã—ã¾ã™" -#: builtin.c:2740 +#: builtin.c:2794 #, fuzzy, c-format msgid "gensub: third argument %g treated as 1" msgstr "gensub: 第三引数㌠0 ã§ã™ã€‚1 を代ã‚ã‚Šã«ä½¿ç”¨ã—ã¾ã™" -#: builtin.c:3038 +#: builtin.c:3096 #, fuzzy, c-format msgid "%s: can be called indirectly only with two arguments" msgstr "and: 2個未満ã®å¼•æ•°ã§å‘¼ã³å‡ºã•ã‚Œã¾ã—ãŸ" -#: builtin.c:3128 +#: builtin.c:3186 #, fuzzy, c-format msgid "indirect call to %s requires at least two arguments" msgstr "and: 2個未満ã®å¼•æ•°ã§å‘¼ã³å‡ºã•ã‚Œã¾ã—ãŸ" -#: builtin.c:3180 +#: builtin.c:3238 msgid "lshift: received non-numeric first argument" msgstr "lshift: éžæ•°å€¤ã®ç¬¬ä¸€å¼•æ•°ã‚’å—ã‘å–ã‚Šã¾ã—ãŸ" -#: builtin.c:3182 +#: builtin.c:3240 msgid "lshift: received non-numeric second argument" msgstr "lshift: éžæ•°å€¤ã®ç¬¬äºŒå¼•æ•°ã‚’å—ã‘å–ã‚Šã¾ã—ãŸ" -#: builtin.c:3188 +#: builtin.c:3246 #, c-format msgid "lshift(%f, %f): negative values will give strange results" msgstr "lshift(%f, %f): è² ã®æ•°å€¤ã‚’使用ã™ã‚‹ã¨ç•°å¸¸ãªçµæžœã«ãªã‚Šã¾ã™" -#: builtin.c:3190 +#: builtin.c:3248 #, c-format msgid "lshift(%f, %f): fractional values will be truncated" msgstr "lshift(%f, %f): å°æ•°ç‚¹ä»¥ä¸‹ã¯åˆ‡ã‚Šæ¨ã¦ã‚‰ã‚Œã¾ã™" -#: builtin.c:3192 +#: builtin.c:3250 #, c-format msgid "lshift(%f, %f): too large shift value will give strange results" msgstr "lshift(%f, %f): シフト値ãŒå¤§ãéŽãŽã‚‹ã¨ç•°å¸¸ãªçµæžœã«ãªã‚Šã¾ã™" -#: builtin.c:3217 +#: builtin.c:3275 msgid "rshift: received non-numeric first argument" msgstr "rshift: éžæ•°å€¤ã®ç¬¬ä¸€å¼•æ•°ã‚’å—ã‘å–ã‚Šã¾ã—ãŸ" -#: builtin.c:3219 +#: builtin.c:3277 msgid "rshift: received non-numeric second argument" msgstr "rshift: éžæ•°å€¤ã®ç¬¬äºŒå¼•æ•°ã‚’å—ã‘å–ã‚Šã¾ã—ãŸ" -#: builtin.c:3225 +#: builtin.c:3283 #, c-format msgid "rshift(%f, %f): negative values will give strange results" msgstr "rshift(%f, %f): è² ã®æ•°å€¤ã‚’使用ã™ã‚‹ã¨ç•°å¸¸ãªçµæžœã«ãªã‚Šã¾ã™" -#: builtin.c:3227 +#: builtin.c:3285 #, c-format msgid "rshift(%f, %f): fractional values will be truncated" msgstr "rshift(%f, %f): å°æ•°ç‚¹ä»¥ä¸‹ã¯åˆ‡ã‚Šæ¨ã¦ã‚‰ã‚Œã¾ã™" -#: builtin.c:3229 +#: builtin.c:3287 #, c-format msgid "rshift(%f, %f): too large shift value will give strange results" msgstr "rshift(%f, %f): シフト値ãŒå¤§ãéŽãŽã‚‹ã¨ç•°å¸¸ãªçµæžœã«ãªã‚Šã¾ã™" -#: builtin.c:3254 mpfr.c:988 +#: builtin.c:3312 mpfr.c:992 msgid "and: called with less than two arguments" msgstr "and: 2個未満ã®å¼•æ•°ã§å‘¼ã³å‡ºã•ã‚Œã¾ã—ãŸ" -#: builtin.c:3259 +#: builtin.c:3317 #, c-format msgid "and: argument %d is non-numeric" msgstr "and: 引数 %d ãŒéžæ•°å€¤ã§ã™" -#: builtin.c:3263 +#: builtin.c:3321 #, fuzzy, c-format msgid "and: argument %d negative value %g will give strange results" msgstr "and(%lf, %lf): è² ã®æ•°å€¤ã‚’使用ã™ã‚‹ã¨ç•°å¸¸ãªçµæžœã«ãªã‚Šã¾ã™" -#: builtin.c:3286 mpfr.c:1020 +#: builtin.c:3344 mpfr.c:1024 msgid "or: called with less than two arguments" msgstr "or: 2個未満ã®å¼•æ•°ã§å‘¼ã³å‡ºã•ã‚Œã¾ã—ãŸ" -#: builtin.c:3291 +#: builtin.c:3349 #, c-format msgid "or: argument %d is non-numeric" msgstr "or: 引数 %d ãŒéžæ•°å€¤ã§ã™" -#: builtin.c:3295 +#: builtin.c:3353 #, fuzzy, c-format msgid "or: argument %d negative value %g will give strange results" msgstr "compl(%lf): è² ã®æ•°å€¤ã‚’使用ã™ã‚‹ã¨ç•°å¸¸ãªçµæžœã«ãªã‚Šã¾ã™" -#: builtin.c:3317 mpfr.c:1051 +#: builtin.c:3375 mpfr.c:1055 #, fuzzy msgid "xor: called with less than two arguments" msgstr "xor: 2個未満ã®å¼•æ•°ã§å‘¼ã³å‡ºã•ã‚Œã¾ã—ãŸ" -#: builtin.c:3323 +#: builtin.c:3381 #, c-format msgid "xor: argument %d is non-numeric" msgstr "xor: 引数 %d ãŒéžæ•°å€¤ã§ã™" -#: builtin.c:3327 +#: builtin.c:3385 #, fuzzy, c-format msgid "xor: argument %d negative value %g will give strange results" msgstr "xor(%lf, %lf): è² ã®æ•°å€¤ã‚’使用ã™ã‚‹ã¨ç•°å¸¸ãªçµæžœã«ãªã‚Šã¾ã™" -#: builtin.c:3352 mpfr.c:807 +#: builtin.c:3410 mpfr.c:811 msgid "compl: received non-numeric argument" msgstr "compl: éžæ•°å€¤ã®å¼•æ•°ã‚’å—ã‘å–ã‚Šã¾ã—ãŸ" -#: builtin.c:3358 +#: builtin.c:3416 #, c-format msgid "compl(%f): negative value will give strange results" msgstr "compl(%f): è² ã®æ•°å€¤ã‚’使用ã™ã‚‹ã¨ç•°å¸¸ãªçµæžœã«ãªã‚Šã¾ã™" -#: builtin.c:3360 +#: builtin.c:3418 #, c-format msgid "compl(%f): fractional value will be truncated" msgstr "compl(%f): å°æ•°ç‚¹ä»¥ä¸‹ã¯åˆ‡ã‚Šæ¨ã¦ã‚‰ã‚Œã¾ã™" -#: builtin.c:3529 +#: builtin.c:3588 #, c-format msgid "dcgettext: `%s' is not a valid locale category" msgstr "dcgettext: `%s' ã¯ç„¡åŠ¹ãªãƒ­ã‚±ãƒ¼ãƒ«åŒºåˆ†ã§ã™" -#: command.y:225 +#: command.y:226 #, c-format msgid "Type (g)awk statement(s). End with the command \"end\"\n" msgstr "" -#: command.y:289 +#: command.y:290 #, c-format msgid "invalid frame number: %d" msgstr "無効ãªãƒ•ãƒ¬ãƒ¼ãƒ ç•ªå·ã§ã™: %d" -#: command.y:295 +#: command.y:296 #, fuzzy, c-format msgid "info: invalid option - \"%s\"" msgstr "info: 無効ãªã‚ªãƒ—ション - \"%s\"" -#: command.y:321 +#: command.y:322 #, c-format msgid "source \"%s\": already sourced." msgstr "source \"%s\": æ—¢ã«èª­ã¿è¾¼ã¾ã‚Œã¦(source)ã„ã¾ã™ã€‚" -#: command.y:326 +#: command.y:327 #, c-format msgid "save \"%s\": command not permitted." msgstr "save \"%s\": コマンドã¯è¨±å¯ã•ã‚Œã¦ã„ã¾ã›ã‚“。" -#: command.y:339 +#: command.y:340 msgid "Can't use command `commands' for breakpoint/watchpoint commands" msgstr "" -#: command.y:341 +#: command.y:342 msgid "no breakpoint/watchpoint has been set yet" msgstr "ã¾ã ä¸€ã¤ã‚‚ブレークãƒã‚¤ãƒ³ãƒˆ/ウオッãƒãƒã‚¤ãƒ³ãƒˆã¯è¨­å®šã•ã‚Œã¦ã„ã¾ã›ã‚“" -#: command.y:343 +#: command.y:344 msgid "invalid breakpoint/watchpoint number" msgstr "無効ãªãƒ–レークãƒã‚¤ãƒ³ãƒˆ/ウオッãƒãƒã‚¤ãƒ³ãƒˆç•ªå·ã§ã™" -#: command.y:348 +#: command.y:349 #, c-format msgid "Type commands for when %s %d is hit, one per line.\n" msgstr "" -#: command.y:350 +#: command.y:351 #, c-format msgid "End with the command \"end\"\n" msgstr "" -#: command.y:357 +#: command.y:358 msgid "`end' valid only in command `commands' or `eval'" msgstr "" -#: command.y:367 +#: command.y:368 msgid "`silent' valid only in command `commands'" msgstr "" -#: command.y:373 +#: command.y:374 #, c-format msgid "trace: invalid option - \"%s\"" msgstr "trace: 無効ãªã‚ªãƒ—ション - \"%s\"" -#: command.y:387 +#: command.y:388 msgid "condition: invalid breakpoint/watchpoint number" msgstr "" -#: command.y:449 +#: command.y:450 msgid "argument not a string" msgstr "引数ãŒæ–‡å­—列ã§ã¯ã‚ã‚Šã¾ã›ã‚“" -#: command.y:459 command.y:464 +#: command.y:460 command.y:465 #, c-format msgid "option: invalid parameter - \"%s\"" msgstr "option: 無効ãªãƒ‘ラメーター - \"%s\"" -#: command.y:474 +#: command.y:475 #, c-format msgid "no such function - \"%s\"" msgstr "ãã®ã‚ˆã†ãªé–¢æ•°ã¯ã‚ã‚Šã¾ã›ã‚“ - \"%s\"" -#: command.y:531 +#: command.y:532 #, c-format msgid "enable: invalid option - \"%s\"" msgstr "enable: 無効ãªã‚ªãƒ—ション - \"%s\"" -#: command.y:597 +#: command.y:598 #, c-format msgid "invalid range specification: %d - %d" msgstr "無効ãªç¯„囲指定: %d - %d" -#: command.y:659 +#: command.y:660 msgid "non-numeric value for field number" msgstr "フィールド番å·ã«å¯¾ã—ã¦éžæ•°å€¤ãŒæŒ‡å®šã•ã‚Œã¦ã„ã¾ã™" -#: command.y:680 command.y:687 +#: command.y:681 command.y:688 msgid "non-numeric value found, numeric expected" msgstr "éžæ•°å€¤ãŒè¦‹ã¤ã‹ã‚Šã¾ã—ãŸã€‚数値ãŒäºˆæœŸã•ã‚Œã¾ã™ã€‚" -#: command.y:712 command.y:718 +#: command.y:713 command.y:719 msgid "non-zero integer value" msgstr "éžã‚¼ãƒ­æ•´æ•°" -#: command.y:817 +#: command.y:818 msgid "" "backtrace [N] - print trace of all or N innermost (outermost if N < 0) " "frames." msgstr "" -#: command.y:819 +#: command.y:820 msgid "" "break [[filename:]N|function] - set breakpoint at the specified location." msgstr "" -#: command.y:821 +#: command.y:822 msgid "clear [[filename:]N|function] - delete breakpoints previously set." msgstr "" -#: command.y:823 +#: command.y:824 msgid "" "commands [num] - starts a list of commands to be executed at a " "breakpoint(watchpoint) hit." msgstr "" -#: command.y:825 +#: command.y:826 msgid "condition num [expr] - set or clear breakpoint or watchpoint condition." msgstr "" -#: command.y:827 +#: command.y:828 msgid "continue [COUNT] - continue program being debugged." msgstr "" -#: command.y:829 +#: command.y:830 msgid "delete [breakpoints] [range] - delete specified breakpoints." msgstr "" -#: command.y:831 +#: command.y:832 msgid "disable [breakpoints] [range] - disable specified breakpoints." msgstr "" -#: command.y:833 +#: command.y:834 msgid "display [var] - print value of variable each time the program stops." msgstr "" -#: command.y:835 +#: command.y:836 msgid "down [N] - move N frames down the stack." msgstr "" -#: command.y:837 +#: command.y:838 msgid "dump [filename] - dump instructions to file or stdout." msgstr "" -#: command.y:839 +#: command.y:840 msgid "enable [once|del] [breakpoints] [range] - enable specified breakpoints." msgstr "" -#: command.y:841 +#: command.y:842 msgid "end - end a list of commands or awk statements." msgstr "" -#: command.y:843 +#: command.y:844 msgid "eval stmt|[p1, p2, ...] - evaluate awk statement(s)." msgstr "" -#: command.y:845 +#: command.y:846 +msgid "exit - (same as quit) exit debugger." +msgstr "" + +#: command.y:848 msgid "finish - execute until selected stack frame returns." msgstr "" -#: command.y:847 +#: command.y:850 msgid "frame [N] - select and print stack frame number N." msgstr "" -#: command.y:849 +#: command.y:852 msgid "help [command] - print list of commands or explanation of command." msgstr "" -#: command.y:851 +#: command.y:854 msgid "ignore N COUNT - set ignore-count of breakpoint number N to COUNT." msgstr "" -#: command.y:853 +#: command.y:856 msgid "" "info topic - source|sources|variables|functions|break|frame|args|locals|" "display|watch." msgstr "" -#: command.y:855 +#: command.y:858 msgid "list [-|+|[filename:]lineno|function|range] - list specified line(s)." msgstr "" -#: command.y:857 +#: command.y:860 msgid "next [COUNT] - step program, proceeding through subroutine calls." msgstr "" -#: command.y:859 +#: command.y:862 msgid "" "nexti [COUNT] - step one instruction, but proceed through subroutine calls." msgstr "" -#: command.y:861 +#: command.y:864 msgid "option [name[=value]] - set or display debugger option(s)." msgstr "" -#: command.y:863 +#: command.y:866 msgid "print var [var] - print value of a variable or array." msgstr "" -#: command.y:865 +#: command.y:868 msgid "printf format, [arg], ... - formatted output." msgstr "" -#: command.y:867 +#: command.y:870 msgid "quit - exit debugger." msgstr "" -#: command.y:869 +#: command.y:872 msgid "return [value] - make selected stack frame return to its caller." msgstr "" -#: command.y:871 +#: command.y:874 msgid "run - start or restart executing program." msgstr "" -#: command.y:874 +#: command.y:877 msgid "save filename - save commands from the session to file." msgstr "" -#: command.y:877 +#: command.y:880 msgid "set var = value - assign value to a scalar variable." msgstr "" -#: command.y:879 +#: command.y:882 msgid "" "silent - suspends usual message when stopped at a breakpoint/watchpoint." msgstr "" -#: command.y:881 +#: command.y:884 msgid "source file - execute commands from file." msgstr "" -#: command.y:883 +#: command.y:886 msgid "step [COUNT] - step program until it reaches a different source line." msgstr "" -#: command.y:885 +#: command.y:888 msgid "stepi [COUNT] - step one instruction exactly." msgstr "" -#: command.y:887 +#: command.y:890 msgid "tbreak [[filename:]N|function] - set a temporary breakpoint." msgstr "" -#: command.y:889 +#: command.y:892 msgid "trace on|off - print instruction before executing." msgstr "" -#: command.y:891 +#: command.y:894 msgid "undisplay [N] - remove variable(s) from automatic display list." msgstr "" -#: command.y:893 +#: command.y:896 msgid "" "until [[filename:]N|function] - execute until program reaches a different " "line or line N within current frame." msgstr "" -#: command.y:895 +#: command.y:898 msgid "unwatch [N] - remove variable(s) from watch list." msgstr "" -#: command.y:897 +#: command.y:900 msgid "up [N] - move N frames up the stack." msgstr "" -#: command.y:899 +#: command.y:902 msgid "watch var - set a watchpoint for a variable." msgstr "" -#: command.y:901 +#: command.y:904 msgid "" "where [N] - (same as backtrace) print trace of all or N innermost (outermost " "if N < 0) frames." msgstr "" -#: command.y:1013 debug.c:401 msg.c:135 +#: command.y:1016 debug.c:401 msg.c:135 #, c-format msgid "error: " msgstr "エラー: " -#: command.y:1053 +#: command.y:1060 #, fuzzy, c-format msgid "can't read command (%s)\n" msgstr "`%s' ã‹ã‚‰ãƒªãƒ€ã‚¤ãƒ¬ã‚¯ãƒˆã§ãã¾ã›ã‚“ (%s)" -#: command.y:1067 +#: command.y:1074 #, fuzzy, c-format msgid "can't read command (%s)" msgstr "`%s' ã‹ã‚‰ãƒªãƒ€ã‚¤ãƒ¬ã‚¯ãƒˆã§ãã¾ã›ã‚“ (%s)" -#: command.y:1118 +#: command.y:1125 #, fuzzy msgid "invalid character in command" msgstr "無効ãªæ–‡å­—クラスåã§ã™" -#: command.y:1154 +#: command.y:1161 #, c-format msgid "unknown command - \"%.*s\", try help" msgstr "" -#: command.y:1224 +#: command.y:1231 #, c-format msgid "%s" msgstr "" -#: command.y:1286 +#: command.y:1293 msgid "invalid character" msgstr "無効ãªæ–‡å­—ã§ã™" -#: command.y:1457 +#: command.y:1497 #, c-format msgid "undefined command: %s\n" msgstr "" @@ -1479,17 +1503,17 @@ msgstr "delete: é…列 `%2$s' 内ã«ã‚¤ãƒ³ãƒ‡ãƒƒã‚¯ã‚¹ `%1$s' ãŒã‚ã‚Šã¾ã›ã‚“ msgid "`%s[\"%s\"]' is not an array\n" msgstr "" -#: debug.c:1236 debug.c:4964 +#: debug.c:1236 debug.c:5010 #, fuzzy, c-format msgid "`%s' is not a scalar variable" msgstr "`%s' ã¯ä¸æ­£ãªå¤‰æ•°åã§ã™" -#: debug.c:1258 debug.c:4994 +#: debug.c:1258 debug.c:5040 #, fuzzy, c-format msgid "attempt to use array `%s[\"%s\"]' in a scalar context" msgstr "スカラーコンテキスト内ã§é…列 `%s[\"%.*s\"]' ã®ä½¿ç”¨ã®è©¦ã¿ã§ã™" -#: debug.c:1280 debug.c:5005 +#: debug.c:1280 debug.c:5051 #, fuzzy, c-format msgid "attempt to use scalar `%s[\"%s\"]' as array" msgstr "スカラー `%s[\"%.*s\"]' ã‚’é…列ã¨ã—ã¦ä½¿ç”¨ã™ã‚‹è©¦ã¿ã§ã™" @@ -1764,102 +1788,102 @@ msgstr "" msgid "'until' not meaningful with non-local jump '%s'\n" msgstr "" -#: debug.c:4185 +#: debug.c:4231 msgid "\t------[Enter] to continue or q [Enter] to quit------" msgstr "" -#: debug.c:4186 +#: debug.c:4232 msgid "q" msgstr "" -#: debug.c:5001 +#: debug.c:5047 #, fuzzy, c-format msgid "[\"%s\"] not in array `%s'" msgstr "delete: é…列 `%2$s' 内ã«ã‚¤ãƒ³ãƒ‡ãƒƒã‚¯ã‚¹ `%1$s' ãŒã‚ã‚Šã¾ã›ã‚“" -#: debug.c:5207 +#: debug.c:5253 #, c-format msgid "sending output to stdout\n" msgstr "" -#: debug.c:5247 +#: debug.c:5293 msgid "invalid number" msgstr "" -#: debug.c:5381 +#: debug.c:5427 #, c-format msgid "`%s' not allowed in current context; statement ignored" msgstr "" -#: debug.c:5389 +#: debug.c:5435 msgid "`return' not allowed in current context; statement ignored" msgstr "" -#: debug.c:5604 +#: debug.c:5650 #, c-format msgid "No symbol `%s' in current context" msgstr "" -#: dfa.c:1062 dfa.c:1065 dfa.c:1084 dfa.c:1094 dfa.c:1106 dfa.c:1142 -#: dfa.c:1151 dfa.c:1154 dfa.c:1159 dfa.c:1173 dfa.c:1221 +#: dfa.c:1090 dfa.c:1093 dfa.c:1112 dfa.c:1122 dfa.c:1135 dfa.c:1163 dfa.c:1172 +#: dfa.c:1175 dfa.c:1180 dfa.c:1202 dfa.c:1205 msgid "unbalanced [" msgstr "" -#: dfa.c:1118 +#: dfa.c:1148 #, fuzzy msgid "invalid character class" msgstr "無効ãªæ–‡å­—クラスåã§ã™" -#: dfa.c:1264 +#: dfa.c:1271 msgid "character class syntax is [[:space:]], not [:space:]" msgstr "" -#: dfa.c:1326 +#: dfa.c:1332 msgid "unfinished \\ escape" msgstr "" -#: dfa.c:1473 +#: dfa.c:1499 #, fuzzy msgid "invalid content of \\{\\}" msgstr "\\{\\} ã®ä¸­èº«ãŒç„¡åŠ¹ã§ã™" -#: dfa.c:1476 +#: dfa.c:1502 #, fuzzy msgid "regular expression too big" msgstr "æ­£è¦è¡¨ç¾ãŒå¤§ãã™ãŽã¾ã™" -#: dfa.c:1911 +#: dfa.c:1916 msgid "unbalanced (" msgstr "" -#: dfa.c:2037 +#: dfa.c:2044 msgid "no syntax specified" msgstr "" -#: dfa.c:2045 +#: dfa.c:2052 msgid "unbalanced )" msgstr "" -#: eval.c:396 +#: eval.c:398 #, c-format msgid "unknown nodetype %d" msgstr "ä¸æ˜ŽãªãƒŽãƒ¼ãƒ‰åž‹ %d ã§ã™" -#: eval.c:407 eval.c:421 +#: eval.c:409 eval.c:423 #, c-format msgid "unknown opcode %d" msgstr "ä¸æ˜Žãªã‚ªãƒšã‚³ãƒ¼ãƒ‰ %d ã§ã™" -#: eval.c:418 +#: eval.c:420 #, c-format msgid "opcode %s not an operator or keyword" msgstr "オペコード %s ã¯æ¼”ç®—å­ã¾ãŸã¯äºˆç´„語ã§ã¯ã‚ã‚Šã¾ã›ã‚“" -#: eval.c:474 +#: eval.c:476 msgid "buffer overflow in genflags2str" msgstr "genflags2str 内ã§ãƒãƒƒãƒ•ã‚¡ã‚ªãƒ¼ãƒãƒ¼ãƒ•ãƒ­ãƒ¼ãŒç™ºç”Ÿã—ã¾ã—ãŸ" -#: eval.c:676 +#: eval.c:678 #, c-format msgid "" "\n" @@ -1870,94 +1894,94 @@ msgstr "" "\t# 呼出関数スタック:\n" "\n" -#: eval.c:705 +#: eval.c:707 msgid "`IGNORECASE' is a gawk extension" msgstr "`IGNORECASE' 㯠gawk æ‹¡å¼µã§ã™" -#: eval.c:737 +#: eval.c:739 msgid "`BINMODE' is a gawk extension" msgstr "`BINMODE' 㯠gawk æ‹¡å¼µã§ã™" -#: eval.c:795 +#: eval.c:797 #, c-format msgid "BINMODE value `%s' is invalid, treated as 3" msgstr "BINMODE 値 `%s' ã¯ç„¡åŠ¹ã§ã™ã€‚代ã‚ã‚Šã« 3 を使用ã—ã¾ã™" -#: eval.c:912 +#: eval.c:914 #, c-format msgid "bad `%sFMT' specification `%s'" msgstr "誤ã£ãŸ `%sFMT' 指定 `%s' ã§ã™" -#: eval.c:996 +#: eval.c:988 msgid "turning off `--lint' due to assignment to `LINT'" msgstr "`LINT' ã¸ã®ä»£å…¥ã«å¾“ã„ `--lint' を無効ã«ã—ã¾ã™" -#: eval.c:1174 +#: eval.c:1166 #, c-format msgid "reference to uninitialized argument `%s'" msgstr "åˆæœŸåŒ–ã•ã‚Œã¦ã„ãªã„引数 `%s' ã¸ã®å‚ç…§ã§ã™" -#: eval.c:1175 +#: eval.c:1167 #, c-format msgid "reference to uninitialized variable `%s'" msgstr "åˆæœŸåŒ–ã•ã‚Œã¦ã„ãªã„変数 `%s' ã¸ã®å‚ç…§ã§ã™" -#: eval.c:1193 +#: eval.c:1185 msgid "attempt to field reference from non-numeric value" msgstr "éžæ•°å€¤ã‚’使用ã—ãŸãƒ•ã‚¤ãƒ¼ãƒ«ãƒ‰å‚ç…§ã®è©¦ã¿ã§ã™" -#: eval.c:1195 +#: eval.c:1187 msgid "attempt to field reference from null string" msgstr "NULL 文字列を使用ã—ã¦ãƒ•ã‚£ãƒ¼ãƒ«ãƒ‰ã®å‚照を試ã¿ã¦ã„ã¾ã™" -#: eval.c:1203 +#: eval.c:1195 #, c-format msgid "attempt to access field %ld" msgstr "フィールド %ld ã¸ã®ã‚¢ã‚¯ã‚»ã‚¹ã®è©¦ã¿ã§ã™" -#: eval.c:1212 +#: eval.c:1204 #, c-format msgid "reference to uninitialized field `$%ld'" msgstr "åˆæœŸåŒ–ã•ã‚Œã¦ã„ãªã„フィールド `$%ld' ã¸ã®å‚ç…§ã§ã™" -#: eval.c:1299 +#: eval.c:1291 #, c-format msgid "function `%s' called with more arguments than declared" msgstr "宣言ã•ã‚Œã¦ã„る数より多ã„引数を使ã£ã¦é–¢æ•° `%s' を呼ã³å‡ºã—ã¾ã—ãŸ" -#: eval.c:1506 +#: eval.c:1498 #, c-format msgid "unwind_stack: unexpected type `%s'" msgstr "unwind_stack: 予期ã—ãªã„åž‹ `%s' ã§ã™" -#: eval.c:1602 +#: eval.c:1594 msgid "division by zero attempted in `/='" msgstr "`/=' 内ã§ã‚¼ãƒ­ã«ã‚ˆã‚‹é™¤ç®—ãŒè¡Œã‚ã‚Œã¾ã—ãŸ" -#: eval.c:1609 +#: eval.c:1601 #, c-format msgid "division by zero attempted in `%%='" msgstr "`%%=' 内ã§ã‚¼ãƒ­ã«ã‚ˆã‚‹é™¤ç®—ãŒè¡Œã‚ã‚Œã¾ã—ãŸ" -#: ext.c:65 ext.c:147 +#: ext.c:66 ext.c:148 msgid "extensions are not allowed in sandbox mode" msgstr "サンドボックスモード内ã§ã¯æ‹¡å¼µã¯è¨±å¯ã•ã‚Œã¦ã„ã¾ã›ã‚“" -#: ext.c:68 +#: ext.c:69 #, fuzzy msgid "-l / @load are gawk extensions" msgstr "@include 㯠gawk æ‹¡å¼µã§ã™" -#: ext.c:71 +#: ext.c:72 msgid "load_ext: received NULL lib_name" msgstr "" -#: ext.c:74 +#: ext.c:75 #, fuzzy, c-format msgid "load_ext: cannot open library `%s' (%s)\n" msgstr "致命的: extension: `%s' ã‚’é–‹ãã“ã¨ãŒå‡ºæ¥ã¾ã›ã‚“ (%s)\n" -#: ext.c:80 +#: ext.c:81 #, fuzzy, c-format msgid "" "load_ext: library `%s': does not define `plugin_is_GPL_compatible' (%s)\n" @@ -1965,32 +1989,32 @@ msgstr "" "致命的: extension: ライブラリ `%s': `plugin_is_GPL_compatible' ãŒå®šç¾©ã•ã‚Œã¦ã„" "ã¾ã›ã‚“ (%s)\n" -#: ext.c:86 +#: ext.c:87 #, fuzzy, c-format msgid "load_ext: library `%s': cannot call function `%s' (%s)\n" msgstr "" "致命的: extension: ライブラリ `%s': 関数 `%s' を呼ã³å‡ºã™ã“ã¨ãŒå‡ºæ¥ã¾ã›ã‚“ " "(%s)\n" -#: ext.c:90 +#: ext.c:91 #, c-format msgid "load_ext: library `%s' initialization routine `%s' failed\n" msgstr "" -#: ext.c:150 +#: ext.c:151 msgid "`extension' is a gawk extension" msgstr "`extension' 㯠gawk æ‹¡å¼µã§ã™" -#: ext.c:153 +#: ext.c:154 msgid "extension: received NULL lib_name" msgstr "" -#: ext.c:156 +#: ext.c:157 #, fuzzy, c-format msgid "extension: cannot open library `%s' (%s)" msgstr "致命的: extension: `%s' ã‚’é–‹ãã“ã¨ãŒå‡ºæ¥ã¾ã›ã‚“ (%s)\n" -#: ext.c:162 +#: ext.c:163 #, fuzzy, c-format msgid "" "extension: library `%s': does not define `plugin_is_GPL_compatible' (%s)" @@ -1998,180 +2022,175 @@ msgstr "" "致命的: extension: ライブラリ `%s': `plugin_is_GPL_compatible' ãŒå®šç¾©ã•ã‚Œã¦ã„" "ã¾ã›ã‚“ (%s)\n" -#: ext.c:166 +#: ext.c:167 #, fuzzy, c-format msgid "extension: library `%s': cannot call function `%s' (%s)" msgstr "" "致命的: extension: ライブラリ `%s': 関数 `%s' を呼ã³å‡ºã™ã“ã¨ãŒå‡ºæ¥ã¾ã›ã‚“ " "(%s)\n" -#: ext.c:197 +#: ext.c:198 #, fuzzy msgid "make_builtin: missing function name" msgstr "extension: 関数åãŒã‚ã‚Šã¾ã›ã‚“" -#: ext.c:212 +#: ext.c:213 #, fuzzy, c-format msgid "make_builtin: can't redefine function `%s'" msgstr "extension: 関数 `%s' ã‚’å†å®šç¾©ã§ãã¾ã›ã‚“" -#: ext.c:216 +#: ext.c:217 #, fuzzy, c-format msgid "make_builtin: function `%s' already defined" msgstr "extension: 関数 `%s' ã¯æ—¢ã«å®šç¾©ã•ã‚Œã¦ã„ã¾ã™" -#: ext.c:220 +#: ext.c:221 #, fuzzy, c-format msgid "make_builtin: function name `%s' previously defined" msgstr "extension: 関数å `%s' ã¯å‰ã«å®šç¾©ã•ã‚Œã¦ã„ã¾ã™" -#: ext.c:222 +#: ext.c:223 #, fuzzy, c-format msgid "make_builtin: can't use gawk built-in `%s' as function name" msgstr "extension: gawk ã«çµ„ã¿è¾¼ã¾ã‚Œã¦ã„ã‚‹ `%s' ã¯é–¢æ•°åã¨ã—ã¦ä½¿ç”¨å‡ºæ¥ã¾ã›ã‚“" -#: ext.c:225 ext.c:280 +#: ext.c:226 ext.c:281 #, c-format msgid "make_builtin: negative argument count for function `%s'" msgstr "make_builtin: 関数 `%s' ã®å¼•æ•°ã®æ•°ãŒè² ã§ã™" -#: ext.c:252 +#: ext.c:253 msgid "extension: missing function name" msgstr "extension: 関数åãŒã‚ã‚Šã¾ã›ã‚“" -#: ext.c:255 ext.c:259 +#: ext.c:256 ext.c:260 #, c-format msgid "extension: illegal character `%c' in function name `%s'" msgstr "extension: 関数å `%2$s' ã®ä¸­ã§ä¸æ­£ãªæ–‡å­— `%1$c' ãŒä½¿ç”¨ã•ã‚Œã¦ã„ã¾ã™" -#: ext.c:267 +#: ext.c:268 #, c-format msgid "extension: can't redefine function `%s'" msgstr "extension: 関数 `%s' ã‚’å†å®šç¾©ã§ãã¾ã›ã‚“" -#: ext.c:271 +#: ext.c:272 #, c-format msgid "extension: function `%s' already defined" msgstr "extension: 関数 `%s' ã¯æ—¢ã«å®šç¾©ã•ã‚Œã¦ã„ã¾ã™" -#: ext.c:275 +#: ext.c:276 #, c-format msgid "extension: function name `%s' previously defined" msgstr "extension: 関数å `%s' ã¯å‰ã«å®šç¾©ã•ã‚Œã¦ã„ã¾ã™" -#: ext.c:277 +#: ext.c:278 #, c-format msgid "extension: can't use gawk built-in `%s' as function name" msgstr "extension: gawk ã«çµ„ã¿è¾¼ã¾ã‚Œã¦ã„ã‚‹ `%s' ã¯é–¢æ•°åã¨ã—ã¦ä½¿ç”¨å‡ºæ¥ã¾ã›ã‚“" -#: ext.c:351 -#, c-format -msgid "function `%s' defined to take no more than %d argument(s)" -msgstr "関数 `%s' ã«ä½¿ãˆã‚‹å¼•æ•°ã®æ•°ã¯ `%d' 以下ã¨å®šç¾©ã•ã‚Œã¦ã„ã¾ã™" - -#: ext.c:354 -#, c-format -msgid "function `%s': missing argument #%d" -msgstr "関数 `%s': 引数 #%d ãŒã‚ã‚Šã¾ã›ã‚“" - -#: ext.c:371 +#: ext.c:358 #, c-format msgid "function `%s': argument #%d: attempt to use scalar as an array" msgstr "関数 `%s': 引数 #%d: スカラーをé…列ã¨ã—ã¦ä½¿ç”¨ã™ã‚‹è©¦ã¿ã§ã™" -#: ext.c:375 +#: ext.c:362 #, c-format msgid "function `%s': argument #%d: attempt to use array as a scalar" msgstr "関数 `%s': 引数 #%d: é…列をスカラーã¨ã—ã¦ä½¿ç”¨ã™ã‚‹è©¦ã¿ã§ã™" -#: ext.c:389 +#: ext.c:376 msgid "dynamic loading of library not supported" msgstr "" -#: extension/filefuncs.c:159 +#: extension/filefuncs.c:164 #, fuzzy msgid "chdir: called with incorrect number of arguments, expecting 1" msgstr "sqrt: è² ã®å€¤ %g を引数ã«ä½¿ç”¨ã—ã¦å‘¼ã³å‡ºã•ã‚Œã¾ã—ãŸ" -#: extension/filefuncs.c:439 +#: extension/filefuncs.c:444 #, c-format msgid "stat: unable to read symbolic link `%s'" msgstr "" -#: extension/filefuncs.c:472 +#: extension/filefuncs.c:477 #, fuzzy msgid "stat: called with wrong number of arguments" msgstr "sqrt: è² ã®å€¤ %g を引数ã«ä½¿ç”¨ã—ã¦å‘¼ã³å‡ºã•ã‚Œã¾ã—ãŸ" -#: extension/filefuncs.c:479 +#: extension/filefuncs.c:484 extension/filefuncs.c:534 #, fuzzy msgid "stat: bad parameters" msgstr "%s: 仮引数ã§ã™\n" -#: extension/filefuncs.c:533 +#: extension/filefuncs.c:527 +#, fuzzy +msgid "statvfs: called with wrong number of arguments" +msgstr "sqrt: è² ã®å€¤ %g を引数ã«ä½¿ç”¨ã—ã¦å‘¼ã³å‡ºã•ã‚Œã¾ã—ãŸ" + +#: extension/filefuncs.c:598 #, c-format msgid "fts init: could not create variable %s" msgstr "" -#: extension/filefuncs.c:554 +#: extension/filefuncs.c:619 #, fuzzy msgid "fts is not supported on this system" msgstr "å¤ã„ awk 㯠`%s' をサãƒãƒ¼ãƒˆã—ã¾ã›ã‚“" -#: extension/filefuncs.c:573 +#: extension/filefuncs.c:638 msgid "fill_stat_element: could not create array" msgstr "" -#: extension/filefuncs.c:582 +#: extension/filefuncs.c:647 msgid "fill_stat_element: could not set element" msgstr "" -#: extension/filefuncs.c:597 +#: extension/filefuncs.c:662 msgid "fill_path_element: could not set element" msgstr "" -#: extension/filefuncs.c:613 +#: extension/filefuncs.c:678 msgid "fill_error_element: could not set element" msgstr "" -#: extension/filefuncs.c:660 extension/filefuncs.c:707 +#: extension/filefuncs.c:725 extension/filefuncs.c:772 msgid "fts-process: could not create array" msgstr "" -#: extension/filefuncs.c:670 extension/filefuncs.c:717 -#: extension/filefuncs.c:735 +#: extension/filefuncs.c:735 extension/filefuncs.c:782 +#: extension/filefuncs.c:800 msgid "fts-process: could not set element" msgstr "" -#: extension/filefuncs.c:784 +#: extension/filefuncs.c:849 #, fuzzy msgid "fts: called with incorrect number of arguments, expecting 3" msgstr "sqrt: è² ã®å€¤ %g を引数ã«ä½¿ç”¨ã—ã¦å‘¼ã³å‡ºã•ã‚Œã¾ã—ãŸ" -#: extension/filefuncs.c:787 +#: extension/filefuncs.c:852 #, fuzzy msgid "fts: bad first parameter" msgstr "%s: 仮引数ã§ã™\n" -#: extension/filefuncs.c:793 +#: extension/filefuncs.c:858 #, fuzzy msgid "fts: bad second parameter" msgstr "%s: 仮引数ã§ã™\n" -#: extension/filefuncs.c:799 +#: extension/filefuncs.c:864 #, fuzzy msgid "fts: bad third parameter" msgstr "%s: 仮引数ã§ã™\n" -#: extension/filefuncs.c:806 +#: extension/filefuncs.c:871 msgid "fts: could not flatten array\n" msgstr "" -#: extension/filefuncs.c:824 +#: extension/filefuncs.c:889 msgid "fts: ignoring sneaky FTS_NOSTAT flag. nyah, nyah, nyah." msgstr "" -#: extension/filefuncs.c:841 +#: extension/filefuncs.c:906 msgid "fts: clear_array() failed\n" msgstr "" @@ -2240,88 +2259,88 @@ msgstr "sqrt: è² ã®å€¤ %g を引数ã«ä½¿ç”¨ã—ã¦å‘¼ã³å‡ºã•ã‚Œã¾ã—ãŸ" msgid "wait: called with too many arguments" msgstr "sqrt: è² ã®å€¤ %g を引数ã«ä½¿ç”¨ã—ã¦å‘¼ã³å‡ºã•ã‚Œã¾ã—ãŸ" -#: extension/inplace.c:130 +#: extension/inplace.c:131 msgid "inplace_begin: in-place editing already active" msgstr "" -#: extension/inplace.c:133 extension/inplace.c:210 +#: extension/inplace.c:134 extension/inplace.c:211 #, c-format msgid "inplace_begin: expects 2 arguments but called with %d" msgstr "" -#: extension/inplace.c:136 +#: extension/inplace.c:137 msgid "inplace_begin: cannot retrieve 1st argument as a string filename" msgstr "" -#: extension/inplace.c:144 +#: extension/inplace.c:145 #, c-format msgid "inplace_begin: disabling in-place editing for invalid FILENAME `%s'" msgstr "" -#: extension/inplace.c:151 +#: extension/inplace.c:152 #, fuzzy, c-format msgid "inplace_begin: Cannot stat `%s' (%s)" msgstr "致命的: extension: `%s' ã‚’é–‹ãã“ã¨ãŒå‡ºæ¥ã¾ã›ã‚“ (%s)\n" -#: extension/inplace.c:158 +#: extension/inplace.c:159 #, c-format msgid "inplace_begin: `%s' is not a regular file" msgstr "" -#: extension/inplace.c:169 +#: extension/inplace.c:170 #, c-format msgid "inplace_begin: mkstemp(`%s') failed (%s)" msgstr "" -#: extension/inplace.c:181 +#: extension/inplace.c:182 #, fuzzy, c-format msgid "inplace_begin: chmod failed (%s)" msgstr "%s: é–‰ã˜ã‚‹ã®ã«å¤±æ•—ã—ã¾ã—㟠(%s)" -#: extension/inplace.c:188 +#: extension/inplace.c:189 #, c-format msgid "inplace_begin: dup(stdout) failed (%s)" msgstr "" -#: extension/inplace.c:191 +#: extension/inplace.c:192 #, c-format msgid "inplace_begin: dup2(%d, stdout) failed (%s)" msgstr "" -#: extension/inplace.c:194 +#: extension/inplace.c:195 #, fuzzy, c-format msgid "inplace_begin: close(%d) failed (%s)" msgstr "%s: é–‰ã˜ã‚‹ã®ã«å¤±æ•—ã—ã¾ã—㟠(%s)" -#: extension/inplace.c:213 +#: extension/inplace.c:214 msgid "inplace_end: cannot retrieve 1st argument as a string filename" msgstr "" -#: extension/inplace.c:220 +#: extension/inplace.c:221 msgid "inplace_end: in-place editing not active" msgstr "" -#: extension/inplace.c:226 +#: extension/inplace.c:227 #, c-format msgid "inplace_end: dup2(%d, stdout) failed (%s)" msgstr "" -#: extension/inplace.c:229 +#: extension/inplace.c:230 #, fuzzy, c-format msgid "inplace_end: close(%d) failed (%s)" msgstr "%s: é–‰ã˜ã‚‹ã®ã«å¤±æ•—ã—ã¾ã—㟠(%s)" -#: extension/inplace.c:233 +#: extension/inplace.c:234 #, c-format msgid "inplace_end: fsetpos(stdout) failed (%s)" msgstr "" -#: extension/inplace.c:246 +#: extension/inplace.c:247 #, fuzzy, c-format msgid "inplace_end: link(`%s', `%s') failed (%s)" msgstr "パイプ `%s' をフラッシュã§ãã¾ã›ã‚“ (%s)。" -#: extension/inplace.c:256 +#: extension/inplace.c:257 #, fuzzy, c-format msgid "inplace_end: rename(`%s', `%s') failed (%s)" msgstr "fd %d (`%s') ã‚’é–‰ã˜ã‚‹ã“ã¨ãŒã§ãã¾ã›ã‚“ (%s)" @@ -2356,7 +2375,7 @@ msgstr "sqrt: è² ã®å€¤ %g を引数ã«ä½¿ç”¨ã—ã¦å‘¼ã³å‡ºã•ã‚Œã¾ã—ãŸ" msgid "chr: called with inappropriate argument(s)" msgstr "sqrt: è² ã®å€¤ %g を引数ã«ä½¿ç”¨ã—ã¦å‘¼ã³å‡ºã•ã‚Œã¾ã—ãŸ" -#: extension/readdir.c:281 +#: extension/readdir.c:271 #, c-format msgid "dir_take_control_of: opendir/fdopendir failed: %s" msgstr "" @@ -2371,56 +2390,56 @@ msgstr "sqrt: è² ã®å€¤ %g を引数ã«ä½¿ç”¨ã—ã¦å‘¼ã³å‡ºã•ã‚Œã¾ã—ãŸ" msgid "readfile: called with no arguments" msgstr "sqrt: è² ã®å€¤ %g を引数ã«ä½¿ç”¨ã—ã¦å‘¼ã³å‡ºã•ã‚Œã¾ã—ãŸ" -#: extension/revoutput.c:125 +#: extension/revoutput.c:127 msgid "revoutput: could not initialize REVOUT variable" msgstr "" -#: extension/rwarray.c:124 extension/rwarray0.c:109 +#: extension/rwarray.c:113 extension/rwarray0.c:109 #, fuzzy msgid "writea: called with too many arguments" msgstr "sqrt: è² ã®å€¤ %g を引数ã«ä½¿ç”¨ã—ã¦å‘¼ã³å‡ºã•ã‚Œã¾ã—ãŸ" -#: extension/rwarray.c:131 extension/rwarray0.c:116 +#: extension/rwarray.c:120 extension/rwarray0.c:116 #, fuzzy, c-format msgid "do_writea: argument 0 is not a string\n" msgstr "exp: 引数 %g ãŒç¯„囲外ã§ã™" -#: extension/rwarray.c:137 extension/rwarray0.c:122 +#: extension/rwarray.c:126 extension/rwarray0.c:122 #, fuzzy, c-format msgid "do_writea: argument 1 is not an array\n" msgstr "split: 第四引数ãŒé…列ã§ã¯ã‚ã‚Šã¾ã›ã‚“" -#: extension/rwarray.c:184 extension/rwarray0.c:169 +#: extension/rwarray.c:173 extension/rwarray0.c:169 #, c-format msgid "write_array: could not flatten array\n" msgstr "" -#: extension/rwarray.c:198 extension/rwarray0.c:183 +#: extension/rwarray.c:187 extension/rwarray0.c:183 #, c-format msgid "write_array: could not release flattened array\n" msgstr "" -#: extension/rwarray.c:280 extension/rwarray0.c:265 +#: extension/rwarray.c:269 extension/rwarray0.c:265 #, fuzzy msgid "reada: called with too many arguments" msgstr "sqrt: è² ã®å€¤ %g を引数ã«ä½¿ç”¨ã—ã¦å‘¼ã³å‡ºã•ã‚Œã¾ã—ãŸ" -#: extension/rwarray.c:287 extension/rwarray0.c:272 +#: extension/rwarray.c:276 extension/rwarray0.c:272 #, fuzzy, c-format msgid "do_reada: argument 0 is not a string\n" msgstr "exp: 引数 %g ãŒç¯„囲外ã§ã™" -#: extension/rwarray.c:293 extension/rwarray0.c:278 +#: extension/rwarray.c:282 extension/rwarray0.c:278 #, fuzzy, c-format msgid "do_reada: argument 1 is not an array\n" msgstr "adump: 引数ãŒé…列ã§ã¯ã‚ã‚Šã¾ã›ã‚“" -#: extension/rwarray.c:337 extension/rwarray0.c:322 +#: extension/rwarray.c:326 extension/rwarray0.c:322 #, c-format msgid "do_reada: clear_array failed\n" msgstr "" -#: extension/rwarray.c:374 extension/rwarray0.c:358 +#: extension/rwarray.c:363 extension/rwarray0.c:358 #, c-format msgid "read_array: set_array_element failed\n" msgstr "" @@ -2526,7 +2545,7 @@ msgstr "`FS' ã« NULL 文字列を使用ã™ã‚‹ã®ã¯ gawk æ‹¡å¼µã§ã™" msgid "old awk does not support regexps as value of `FS'" msgstr "å¤ã„ awk 㯠`FS' ã®å€¤ã¨ã—ã¦æ­£è¦è¡¨ç¾ã‚’サãƒãƒ¼ãƒˆã—ã¾ã›ã‚“" -#: field.c:1380 +#: field.c:1384 msgid "`FPAT' is a gawk extension" msgstr "`FPAT' 㯠gawk æ‹¡å¼µã§ã™" @@ -2534,29 +2553,29 @@ msgstr "`FPAT' 㯠gawk æ‹¡å¼µã§ã™" msgid "awk_value_to_node: received null retval" msgstr "" -#: gawkapi.c:384 +#: gawkapi.c:383 msgid "node_to_awk_value: received null node" msgstr "" -#: gawkapi.c:387 +#: gawkapi.c:386 msgid "node_to_awk_value: received null val" msgstr "" -#: gawkapi.c:809 +#: gawkapi.c:808 #, fuzzy msgid "remove_element: received null array" msgstr "length: é…列引数をå—ã‘å–ã‚Šã¾ã—ãŸ" -#: gawkapi.c:812 +#: gawkapi.c:811 msgid "remove_element: received null subscript" msgstr "" -#: gawkapi.c:949 +#: gawkapi.c:948 #, c-format msgid "api_flatten_array: could not convert index %d\n" msgstr "" -#: gawkapi.c:954 +#: gawkapi.c:953 #, c-format msgid "api_flatten_array: could not convert value %d\n" msgstr "" @@ -2616,490 +2635,497 @@ msgstr "%s: オプション '-W %s' ã¯å¼•æ•°ã‚’å–ã‚‹ã“ã¨ãŒã§ãã¾ã›ã‚“\n msgid "%s: option '-W %s' requires an argument\n" msgstr "%s: オプション '-W %s' ã«ã¯å¼•æ•°ãŒå¿…è¦ã§ã™\n" -#: io.c:423 +#: io.c:426 #, c-format msgid "command line argument `%s' is a directory: skipped" msgstr "コマンドライン引数 `%s' ã¯ãƒ‡ã‚£ãƒ¬ã‚¯ãƒˆãƒªã§ã™: スキップã•ã‚Œã¾ã—ãŸ" -#: io.c:426 io.c:544 +#: io.c:429 io.c:547 #, c-format msgid "cannot open file `%s' for reading (%s)" msgstr "ファイル `%s' を読ã¿è¾¼ã¿ç”¨ã«é–‹ã‘ã¾ã›ã‚“ (%s)" -#: io.c:671 +#: io.c:674 #, c-format msgid "close of fd %d (`%s') failed (%s)" msgstr "fd %d (`%s') ã‚’é–‰ã˜ã‚‹ã“ã¨ãŒã§ãã¾ã›ã‚“ (%s)" -#: io.c:749 +#: io.c:752 msgid "redirection not allowed in sandbox mode" msgstr "サンドボックスモード内ã§ã¯ãƒªãƒ€ã‚¤ãƒ¬ã‚¯ãƒˆã¯è¨±å¯ã•ã‚Œã¦ã„ã¾ã›ã‚“" -#: io.c:783 +#: io.c:786 #, c-format msgid "expression in `%s' redirection only has numeric value" msgstr "`%s' リダイレクトã®å‘½ä»¤å¼ã«æ•°å€¤ã—ã‹è¨˜è¿°ã•ã‚Œã¦ã„ã¾ã›ã‚“。" -#: io.c:789 +#: io.c:792 #, c-format msgid "expression for `%s' redirection has null string value" msgstr "`%s' リダイレクトã®å‘½ä»¤å¼ãŒç©ºåˆ—ã§ã™ã€‚" -#: io.c:794 +#: io.c:797 #, c-format msgid "filename `%s' for `%s' redirection may be result of logical expression" msgstr "" "`%2$s' リダイレクトã«è«–ç†æ¼”ç®—ã®çµæžœã¨æ€ã‚れるファイルå `%1$s' ãŒä½¿ã‚ã‚Œã¦ã„ã¾" "ã™ã€‚" -#: io.c:842 +#: io.c:845 #, c-format msgid "unnecessary mixing of `>' and `>>' for file `%.*s'" msgstr "ファイル `%.*s' ã§å¿…è¦ä»¥ä¸Šã« `>' 㨠`>>' を組åˆã›ã¦ã„ã¾ã™ã€‚" -#: io.c:896 +#: io.c:902 #, c-format msgid "can't open pipe `%s' for output (%s)" msgstr "出力用ã«ãƒ‘イプ `%s' ã‚’é–‹ã‘ã¾ã›ã‚“ (%s)" -#: io.c:906 +#: io.c:915 #, c-format msgid "can't open pipe `%s' for input (%s)" msgstr "入力用ã«ãƒ‘イプ `%s' ã‚’é–‹ã‘ã¾ã›ã‚“ (%s)" -#: io.c:937 +#: io.c:946 #, c-format msgid "can't open two way pipe `%s' for input/output (%s)" msgstr "入出力用ã®åŒæ–¹å‘パイプ `%s' ãŒé–‹ã‘ã¾ã›ã‚“ (%s)" -#: io.c:1019 +#: io.c:1030 #, c-format msgid "can't redirect from `%s' (%s)" msgstr "`%s' ã‹ã‚‰ãƒªãƒ€ã‚¤ãƒ¬ã‚¯ãƒˆã§ãã¾ã›ã‚“ (%s)" -#: io.c:1022 +#: io.c:1033 #, c-format msgid "can't redirect to `%s' (%s)" msgstr "`%s' ã«ãƒªãƒ€ã‚¤ãƒ¬ã‚¯ãƒˆã§ãã¾ã›ã‚“ (%s)" -#: io.c:1073 +#: io.c:1084 msgid "" "reached system limit for open files: starting to multiplex file descriptors" msgstr "" "é–‹ã„ã¦ã„るファイルã®æ•°ãŒã‚·ã‚¹ãƒ†ãƒ åˆ¶é™ã«é”ã—ã¾ã—ãŸã€‚ファイル記述å­ã‚’多é‡åŒ–ã—ã¾" "ã™ã€‚" -#: io.c:1089 +#: io.c:1100 #, c-format msgid "close of `%s' failed (%s)." msgstr "`%s' ã‚’é–‰ã˜ã‚‹ã®ã«å¤±æ•—ã—ã¾ã—㟠(%s)" -#: io.c:1097 +#: io.c:1108 msgid "too many pipes or input files open" msgstr "é–‹ã„ã¦ã„るパイプã¾ãŸã¯å…¥åŠ›ãƒ•ã‚¡ã‚¤ãƒ«ã®æ•°ãŒå¤šéŽãŽã¾ã™ã€‚" -#: io.c:1119 +#: io.c:1130 msgid "close: second argument must be `to' or `from'" msgstr "close: 第二引数㯠`to' ã¾ãŸã¯ `from' ã§ãªã‘ã‚Œã°ã„ã‘ã¾ã›ã‚“" -#: io.c:1136 +#: io.c:1147 #, c-format msgid "close: `%.*s' is not an open file, pipe or co-process" msgstr "close: `%.*s' ã¯é–‹ã„ã¦ã„るファイルã€ãƒ‘イプã€ãƒ—ロセス共有ã§ã¯ã‚ã‚Šã¾ã›ã‚“" -#: io.c:1141 +#: io.c:1152 msgid "close of redirection that was never opened" msgstr "é–‹ã„ã¦ãªã„リダイレクトを閉ã˜ã‚ˆã†ã¨ã—ã¦ã„ã¾ã™" -#: io.c:1238 +#: io.c:1249 #, c-format msgid "close: redirection `%s' not opened with `|&', second argument ignored" msgstr "" "close: リダイレクト `%s' 㯠`|&' を使用ã—ã¦é–‹ã‹ã‚Œã¦ã„ã¾ã›ã‚“。第二引数ã¯ç„¡è¦–ã•" "ã‚Œã¾ã—ãŸ" -#: io.c:1255 +#: io.c:1266 #, c-format msgid "failure status (%d) on pipe close of `%s' (%s)" msgstr "パイプ `%2$s' ã‚’é–‰ã˜ãŸã¨ãã®çŠ¶æ…‹ã‚³ãƒ¼ãƒ‰ãŒå¤±æ•— (%1$d) ã§ã—㟠(%3$s)。" -#: io.c:1258 +#: io.c:1269 #, c-format msgid "failure status (%d) on file close of `%s' (%s)" msgstr "ファイル `%2$s' ã‚’é–‰ã˜ãŸã¨ãã®çŠ¶æ…‹ã‚³ãƒ¼ãƒ‰ãŒå¤±æ•— (%1$d) ã§ã—㟠(%3$s)。" -#: io.c:1278 +#: io.c:1289 #, c-format msgid "no explicit close of socket `%s' provided" msgstr "ソケット `%s' を明示ã—ã¦é–‰ã˜ã¦ã„ã¾ã›ã‚“。" -#: io.c:1281 +#: io.c:1292 #, c-format msgid "no explicit close of co-process `%s' provided" msgstr "並行プロセス `%s' を明示ã—ã¦é–‰ã˜ã¦ã„ã¾ã›ã‚“。" -#: io.c:1284 +#: io.c:1295 #, c-format msgid "no explicit close of pipe `%s' provided" msgstr "パイプ `%s' を明示ã—ã¦é–‰ã˜ã¦ã„ã¾ã›ã‚“。" -#: io.c:1287 +#: io.c:1298 #, c-format msgid "no explicit close of file `%s' provided" msgstr "ファイル `%s' を明示ã—ã¦é–‰ã˜ã¦ã„ã¾ã›ã‚“。" -#: io.c:1317 io.c:1375 main.c:632 main.c:674 +#: io.c:1328 io.c:1387 main.c:645 main.c:687 #, c-format msgid "error writing standard output (%s)" msgstr "標準出力ã¸ã®æ›¸è¾¼ã¿ã‚¨ãƒ©ãƒ¼ (%s)" -#: io.c:1322 io.c:1381 main.c:634 +#: io.c:1333 io.c:1393 main.c:647 #, c-format msgid "error writing standard error (%s)" msgstr "標準エラーã¸ã®æ›¸è¾¼ã¿ã‚¨ãƒ©ãƒ¼ (%s)" -#: io.c:1330 +#: io.c:1341 #, c-format msgid "pipe flush of `%s' failed (%s)." msgstr "パイプ `%s' をフラッシュã§ãã¾ã›ã‚“ (%s)。" -#: io.c:1333 +#: io.c:1344 #, c-format msgid "co-process flush of pipe to `%s' failed (%s)." msgstr "`%s' ã¸æŽ¥ç¶šã™ã‚‹ãƒ‘イプを並行プロセスã‹ã‚‰ãƒ•ãƒ©ãƒƒã‚·ãƒ¥ã§ãã¾ã›ã‚“ (%s)。" -#: io.c:1336 +#: io.c:1347 #, c-format msgid "file flush of `%s' failed (%s)." msgstr "ファイル `%s' をフラッシュã§ãã¾ã›ã‚“ (%s)。" -#: io.c:1453 +#: io.c:1465 #, c-format msgid "local port %s invalid in `/inet'" msgstr "`/inet' 内ã®ãƒ­ãƒ¼ã‚«ãƒ«ãƒãƒ¼ãƒˆ %s ãŒç„¡åŠ¹ã§ã™" -#: io.c:1471 +#: io.c:1483 #, c-format msgid "remote host and port information (%s, %s) invalid" msgstr "リモートã®ãƒ›ã‚¹ãƒˆãŠã‚ˆã³ãƒãƒ¼ãƒˆæƒ…å ± (%s, %s) ãŒç„¡åŠ¹ã§ã™" -#: io.c:1699 +#: io.c:1711 msgid "TCP/IP communications are not supported" msgstr "TCP/IP 通信ã¯ã‚µãƒãƒ¼ãƒˆã•ã‚Œã¦ã„ã¾ã›ã‚“" -#: io.c:1880 +#: io.c:1905 #, c-format msgid "could not open `%s', mode `%s'" msgstr "`%s' をモード `%s' ã§é–‹ã‘ã¾ã›ã‚“" -#: io.c:1930 +#: io.c:1961 #, c-format msgid "close of master pty failed (%s)" msgstr "マスター pty ã‚’é–‰ã˜ã‚‹ã®ã«å¤±æ•—ã—ã¾ã—㟠(%s)" -#: io.c:1932 io.c:2118 io.c:2319 +#: io.c:1963 io.c:2141 io.c:2342 #, c-format msgid "close of stdout in child failed (%s)" msgstr "å­ãƒ—ロセスãŒæ¨™æº–出力を閉ã˜ã‚‹ã®ã«å¤±æ•—ã—ã¾ã—㟠(%s)" -#: io.c:1935 +#: io.c:1966 #, c-format msgid "moving slave pty to stdout in child failed (dup: %s)" msgstr "å­ãƒ—ロセスãŒã‚¹ãƒ¬ãƒ¼ãƒ– pty を標準出力ã«ç§»å‹•ã§ãã¾ã›ã‚“ (dup: %s)。" -#: io.c:1937 io.c:2123 +#: io.c:1968 io.c:2146 #, c-format msgid "close of stdin in child failed (%s)" msgstr "å­ãƒ—ロセスãŒæ¨™æº–入力を閉ã˜ã‚‰ã‚Œã¾ã›ã‚“ (%s)。" -#: io.c:1940 +#: io.c:1971 #, c-format msgid "moving slave pty to stdin in child failed (dup: %s)" msgstr "å­ãƒ—ロセスãŒã‚¹ãƒ¬ãƒ¼ãƒ– pty を標準入力ã«ç§»å‹•ã§ãã¾ã›ã‚“ (dup: %s)。" -#: io.c:1942 io.c:1964 +#: io.c:1973 #, c-format msgid "close of slave pty failed (%s)" msgstr "スレーブ pty ã‚’é–‰ã˜ã‚‹ã®ã«å¤±æ•—ã—ã¾ã—㟠(%s)" -#: io.c:2053 io.c:2121 io.c:2290 io.c:2322 +#: io.c:2076 io.c:2144 io.c:2313 io.c:2345 #, c-format msgid "moving pipe to stdout in child failed (dup: %s)" msgstr "å­ãƒ—ロセスãŒãƒ‘イプを標準出力ã«ç§»å‹•ã§ãã¾ã›ã‚“ (dup: %s)。" -#: io.c:2060 io.c:2126 +#: io.c:2083 io.c:2149 #, c-format msgid "moving pipe to stdin in child failed (dup: %s)" msgstr "å­ãƒ—ロセスãŒãƒ‘イプを標準入力ã«ç§»å‹•ã§ãã¾ã›ã‚“ (dup: %s)。" -#: io.c:2086 io.c:2312 +#: io.c:2109 io.c:2335 msgid "restoring stdout in parent process failed\n" msgstr "親プロセスãŒæ¨™æº–出力を復旧ã§ãã¾ã›ã‚“。\n" -#: io.c:2094 +#: io.c:2117 msgid "restoring stdin in parent process failed\n" msgstr "親プロセスãŒæ¨™æº–入力を復旧ã§ãã¾ã›ã‚“。\n" -#: io.c:2129 io.c:2324 io.c:2339 +#: io.c:2152 io.c:2347 io.c:2362 #, c-format msgid "close of pipe failed (%s)" msgstr "パイプを閉ã˜ã‚‰ã‚Œã¾ã›ã‚“ (%s)。" -#: io.c:2188 +#: io.c:2211 msgid "`|&' not supported" msgstr "`|&' ã¯ä½¿ç”¨ã§ãã¾ã›ã‚“。" -#: io.c:2275 +#: io.c:2298 #, c-format msgid "cannot open pipe `%s' (%s)" msgstr "パイプ `%s' ãŒé–‹ã‘ã¾ã›ã‚“ (%s)。" -#: io.c:2333 +#: io.c:2356 #, c-format msgid "cannot create child process for `%s' (fork: %s)" msgstr "`%s' 用ã®å­ãƒ—ロセスを実行ã§ãã¾ã›ã‚“ (fork: %s)。" -#: io.c:2760 +#: io.c:2493 +msgid "getline: attempt to read from closed read end of two-way pipe" +msgstr "" + +#: io.c:2795 msgid "register_input_parser: received NULL pointer" msgstr "" -#: io.c:2788 +#: io.c:2823 #, c-format msgid "input parser `%s' conflicts with previously installed input parser `%s'" msgstr "" -#: io.c:2795 +#: io.c:2830 #, c-format msgid "input parser `%s' failed to open `%s'" msgstr "" -#: io.c:2815 +#: io.c:2850 msgid "register_output_wrapper: received NULL pointer" msgstr "" -#: io.c:2843 +#: io.c:2878 #, c-format msgid "" "output wrapper `%s' conflicts with previously installed output wrapper `%s'" msgstr "" -#: io.c:2850 +#: io.c:2885 #, c-format msgid "output wrapper `%s' failed to open `%s'" msgstr "" -#: io.c:2871 +#: io.c:2906 msgid "register_output_processor: received NULL pointer" msgstr "" -#: io.c:2900 +#: io.c:2935 #, c-format msgid "" "two-way processor `%s' conflicts with previously installed two-way processor " "`%s'" msgstr "" -#: io.c:2909 +#: io.c:2944 #, c-format msgid "two way processor `%s' failed to open `%s'" msgstr "" -#: io.c:3034 +#: io.c:3069 #, c-format msgid "data file `%s' is empty" msgstr "データファイル `%s' ã¯ç©ºã§ã™ã€‚" -#: io.c:3076 io.c:3084 +#: io.c:3111 io.c:3119 msgid "could not allocate more input memory" msgstr "入力用メモリーをã“れ以上確ä¿ã§ãã¾ã›ã‚“。" -#: io.c:3662 +#: io.c:3697 msgid "multicharacter value of `RS' is a gawk extension" msgstr "複数ã®æ–‡å­—ã‚’ `RS' ã«ä½¿ç”¨ã™ã‚‹ã®ã¯ gawk 特有ã®æ‹¡å¼µã§ã™ã€‚" -#: io.c:3809 +#: io.c:3844 msgid "IPv6 communication is not supported" msgstr "IPv6 通信ã¯ã‚µãƒãƒ¼ãƒˆã•ã‚Œã¦ã„ã¾ã›ã‚“" -#: main.c:321 +#: main.c:334 msgid "environment variable `POSIXLY_CORRECT' set: turning on `--posix'" msgstr "" "環境変数 `POSIXLY_CORRECT' ãŒæŒ‡å®šã•ã‚Œã¦ã„ã¾ã™ã€‚オプション `--posix' を有効ã«" "ã—ã¾ã™" -#: main.c:327 +#: main.c:340 msgid "`--posix' overrides `--traditional'" msgstr "オプション `--posix' 㯠`--traditional' を無効ã«ã—ã¾ã™ã€‚" -#: main.c:338 +#: main.c:351 msgid "`--posix'/`--traditional' overrides `--non-decimal-data'" msgstr "" "オプション `--posix'/`--traditional' 㯠`--non-decimal-data' を無効ã«ã—ã¾ã™ã€‚" -#: main.c:342 +#: main.c:355 #, c-format msgid "running %s setuid root may be a security problem" msgstr "" "setuid root 㧠%s を実行ã™ã‚‹ã¨ã€ã‚»ã‚­ãƒ¥ãƒªãƒ†ã‚£ä¸Šã®å•é¡ŒãŒç™ºç”Ÿã™ã‚‹å ´åˆãŒã‚ã‚Šã¾" "ã™ã€‚" -#: main.c:346 +#: main.c:359 #, fuzzy msgid "`--posix' overrides `--characters-as-bytes'" msgstr "`--posix' 㯠`--binary' を上書ãã—ã¾ã™" -#: main.c:404 +#: main.c:417 #, c-format msgid "can't set binary mode on stdin (%s)" msgstr "標準入力をãƒã‚¤ãƒŠãƒªãƒ¢ãƒ¼ãƒ‰ã«è¨­å®šã§ãã¾ã›ã‚“ (%s)" -#: main.c:407 +#: main.c:420 #, c-format msgid "can't set binary mode on stdout (%s)" msgstr "標準出力をãƒã‚¤ãƒŠãƒªãƒ¢ãƒ¼ãƒ‰ã«è¨­å®šã§ãã¾ã›ã‚“ (%s)" -#: main.c:409 +#: main.c:422 #, c-format msgid "can't set binary mode on stderr (%s)" msgstr "標準エラーをãƒã‚¤ãƒŠãƒªãƒ¢ãƒ¼ãƒ‰ã«è¨­å®šã§ãã¾ã›ã‚“ (%s)" -#: main.c:469 +#: main.c:482 msgid "no program text at all!" msgstr "プログラム文ãŒå…¨ãã‚ã‚Šã¾ã›ã‚“!" -#: main.c:563 +#: main.c:576 #, c-format msgid "Usage: %s [POSIX or GNU style options] -f progfile [--] file ...\n" msgstr "" "使用法: %s [POSIX ã¾ãŸã¯ GNU å½¢å¼ã®ã‚ªãƒ—ション] -f progfile [--] file ...\n" -#: main.c:565 +#: main.c:578 #, c-format msgid "Usage: %s [POSIX or GNU style options] [--] %cprogram%c file ...\n" msgstr "" "使用法: %s [POSIX ã¾ãŸã¯ GNU å½¢å¼ã®ã‚ªãƒ—ション] [--] %cprogram%c file ...\n" -#: main.c:570 +#: main.c:583 msgid "POSIX options:\t\tGNU long options: (standard)\n" msgstr "POSIX オプション:\t\tGNU é•·ã„å½¢å¼ã®ã‚ªãƒ—ション: (標準)\n" -#: main.c:571 +#: main.c:584 msgid "\t-f progfile\t\t--file=progfile\n" msgstr "\t-f progfile\t\t--file=progfile\n" -#: main.c:572 +#: main.c:585 msgid "\t-F fs\t\t\t--field-separator=fs\n" msgstr "\t-F fs\t\t\t--field-separator=fs\n" -#: main.c:573 +#: main.c:586 msgid "\t-v var=val\t\t--assign=var=val\n" msgstr "\t-v var=val\t\t--assign=var=val\n" -#: main.c:574 +#: main.c:587 msgid "Short options:\t\tGNU long options: (extensions)\n" msgstr "短ã„オプション:\t\tGNU é•·ã„å½¢å¼ã®ã‚ªãƒ—ション: (æ‹¡å¼µ)\n" -#: main.c:575 +#: main.c:588 msgid "\t-b\t\t\t--characters-as-bytes\n" msgstr "\t-b\t\t\t--characters-as-bytes\n" -#: main.c:576 +#: main.c:589 msgid "\t-c\t\t\t--traditional\n" msgstr "\t-c\t\t\t--traditional\n" -#: main.c:577 +#: main.c:590 msgid "\t-C\t\t\t--copyright\n" msgstr "\t-C\t\t\t--copyright\n" -#: main.c:578 +#: main.c:591 msgid "\t-d[file]\t\t--dump-variables[=file]\n" msgstr "\t-d[file]\t\t--dump-variables[=file]\n" -#: main.c:579 +#: main.c:592 #, fuzzy msgid "\t-D[file]\t\t--debug[=file]\n" msgstr "\t-p[file]\t\t--profile[=file]\n" -#: main.c:580 +#: main.c:593 msgid "\t-e 'program-text'\t--source='program-text'\n" msgstr "\t-e 'program-text'\t--source='program-text'\n" -#: main.c:581 +#: main.c:594 msgid "\t-E file\t\t\t--exec=file\n" msgstr "\t-E file\t\t\t--exec=file\n" -#: main.c:582 +#: main.c:595 msgid "\t-g\t\t\t--gen-pot\n" msgstr "\t-g\t\t\t--gen-pot\n" -#: main.c:583 +#: main.c:596 msgid "\t-h\t\t\t--help\n" msgstr "\t-h\t\t\t--help\n" -#: main.c:584 +#: main.c:597 msgid "\t-i includefile\t\t--include=includefile\n" msgstr "" -#: main.c:585 +#: main.c:598 msgid "\t-l library\t\t--load=library\n" msgstr "" -#: main.c:590 +#. TRANSLATORS: the "fatal" and "invalid" here are literal +#. values, they should not be translated. Thanks. +#. +#: main.c:603 #, fuzzy msgid "\t-L[fatal|invalid]\t--lint[=fatal|invalid]\n" msgstr "\t-L [fatal]\t\t--lint[=fatal]\n" -#: main.c:591 +#: main.c:604 #, fuzzy msgid "\t-M\t\t\t--bignum\n" msgstr "\t-g\t\t\t--gen-pot\n" -#: main.c:592 +#: main.c:605 msgid "\t-N\t\t\t--use-lc-numeric\n" msgstr "\t-N\t\t\t--use-lc-numeric\n" -#: main.c:593 +#: main.c:606 msgid "\t-n\t\t\t--non-decimal-data\n" msgstr "\t-n\t\t\t--non-decimal-data\n" -#: main.c:594 +#: main.c:607 #, fuzzy msgid "\t-o[file]\t\t--pretty-print[=file]\n" msgstr "\t-p[file]\t\t--profile[=file]\n" -#: main.c:595 +#: main.c:608 msgid "\t-O\t\t\t--optimize\n" msgstr "\t-O\t\t\t--optimize\n" -#: main.c:596 +#: main.c:609 msgid "\t-p[file]\t\t--profile[=file]\n" msgstr "\t-p[file]\t\t--profile[=file]\n" -#: main.c:597 +#: main.c:610 msgid "\t-P\t\t\t--posix\n" msgstr "\t-P\t\t\t--posix\n" -#: main.c:598 +#: main.c:611 msgid "\t-r\t\t\t--re-interval\n" msgstr "\t-r\t\t\t--re-interval\n" -#: main.c:599 +#: main.c:612 msgid "\t-S\t\t\t--sandbox\n" msgstr "\t-S\t\t\t--sandbox\n" -#: main.c:600 +#: main.c:613 msgid "\t-t\t\t\t--lint-old\n" msgstr "\t-t\t\t\t--lint-old\n" -#: main.c:601 +#: main.c:614 msgid "\t-V\t\t\t--version\n" msgstr "\t-V\t\t\t--version\n" -#: main.c:603 +#: main.c:616 msgid "\t-W nostalgia\t\t--nostalgia\n" msgstr "\t-W nostalgia\t\t--nostalgia\n" -#: main.c:606 +#: main.c:619 msgid "\t-Y\t\t--parsedebug\n" msgstr "\t-Y\t\t--parsedebug\n" @@ -3108,7 +3134,7 @@ msgstr "\t-Y\t\t--parsedebug\n" #. for this application. Please add _another line_ with the #. address for translation bugs. #. no-wrap -#: main.c:615 +#: main.c:628 msgid "" "\n" "To report bugs, see node `Bugs' in `gawk.info', which is\n" @@ -3123,7 +3149,7 @@ msgstr "" "翻訳ã«é–¢ã™ã‚‹ãƒã‚°ã¯ã«å ±å‘Šã—ã¦ãã ã•" "ã„。\n" -#: main.c:619 +#: main.c:632 msgid "" "gawk is a pattern scanning and processing language.\n" "By default it reads standard input and writes standard output.\n" @@ -3133,7 +3159,7 @@ msgstr "" "デフォルト設定ã§ã¯ã€æ¨™æº–入力を読ã¿è¾¼ã¿ã€æ¨™æº–出力ã«æ›¸ã出ã—ã¾ã™ã€‚\n" "\n" -#: main.c:623 +#: main.c:636 msgid "" "Examples:\n" "\tgawk '{ sum += $1 }; END { print sum }' file\n" @@ -3143,7 +3169,7 @@ msgstr "" "\tgawk '{ sum += $1 }; END { print sum }' file\n" "\tgawk -F: '{ print $1 }' /etc/passwd\n" -#: main.c:648 +#: main.c:661 #, c-format msgid "" "Copyright (C) 1989, 1991-%d Free Software Foundation.\n" @@ -3162,7 +3188,7 @@ msgstr "" "(at your option) any later version.\n" "\n" -#: main.c:656 +#: main.c:669 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" @@ -3176,7 +3202,7 @@ msgstr "" "GNU General Public License for more details.\n" "\n" -#: main.c:662 +#: main.c:675 msgid "" "You should have received a copy of the GNU General Public License\n" "along with this program. If not, see http://www.gnu.org/licenses/.\n" @@ -3184,16 +3210,16 @@ msgstr "" "You should have received a copy of the GNU General Public License\n" "along with this program. If not, see http://www.gnu.org/licenses/.\n" -#: main.c:699 +#: main.c:712 msgid "-Ft does not set FS to tab in POSIX awk" msgstr "POSIX awk ã§ã¯ -Ft 㯠FS をタブã«è¨­å®šã—ã¾ã›ã‚“" -#: main.c:986 +#: main.c:999 #, c-format msgid "unknown value for field spec: %d\n" msgstr "フィールド指定ã«ä¸æ˜Žãªå€¤ãŒã‚ã‚Šã¾ã™: %d\n" -#: main.c:1084 +#: main.c:1097 #, c-format msgid "" "%s: `%s' argument to `-v' not in `var=value' form\n" @@ -3202,120 +3228,120 @@ msgstr "" "%s: オプション `-v' ã®å¼•æ•° `%s' ㌠`変数=代入値' ã®å½¢å¼ã«ãªã£ã¦ã„ã¾ã›ã‚“。\n" "\n" -#: main.c:1110 +#: main.c:1123 #, c-format msgid "`%s' is not a legal variable name" msgstr "`%s' ã¯ä¸æ­£ãªå¤‰æ•°åã§ã™" -#: main.c:1113 +#: main.c:1126 #, c-format msgid "`%s' is not a variable name, looking for file `%s=%s'" msgstr "`%s' ã¯å¤‰æ•°åã§ã¯ã‚ã‚Šã¾ã›ã‚“。`%s=%s' ã®ãƒ•ã‚¡ã‚¤ãƒ«ã‚’探ã—ã¾ã™ã€‚" -#: main.c:1117 +#: main.c:1130 #, c-format msgid "cannot use gawk builtin `%s' as variable name" msgstr "gawk ã«çµ„ã¿è¾¼ã¿ã® `%s' ã¯å¤‰æ•°åã¨ã—ã¦ä½¿ç”¨å‡ºæ¥ã¾ã›ã‚“" -#: main.c:1122 +#: main.c:1135 #, c-format msgid "cannot use function `%s' as variable name" msgstr "関数 `%s' ã¯å¤‰æ•°åã¨ã—ã¦ä½¿ç”¨å‡ºæ¥ã¾ã›ã‚“" -#: main.c:1175 +#: main.c:1190 msgid "floating point exception" msgstr "浮動å°æ•°ç‚¹ä¾‹å¤–" -#: main.c:1182 +#: main.c:1197 msgid "fatal error: internal error" msgstr "致命的エラー: 内部エラー" -#: main.c:1197 +#: main.c:1212 msgid "fatal error: internal error: segfault" msgstr "致命的エラー: 内部エラー: セグメンテーションé•å" -#: main.c:1209 +#: main.c:1224 msgid "fatal error: internal error: stack overflow" msgstr "致命的エラー: 内部エラー: スタックオーãƒãƒ¼ãƒ•ãƒ­ãƒ¼" -#: main.c:1268 +#: main.c:1283 #, c-format msgid "no pre-opened fd %d" msgstr "fd %d ãŒäº‹å‰ã«é–‹ã„ã¦ã„ã¾ã›ã‚“。" -#: main.c:1275 +#: main.c:1290 #, c-format msgid "could not pre-open /dev/null for fd %d" msgstr "事å‰ã« fd %d 用㫠/dev/null ã‚’é–‹ã‘ã¾ã›ã‚“。" -#: main.c:1489 +#: main.c:1504 msgid "empty argument to `-e/--source' ignored" msgstr "`-e/--source' ã¸ã®ç©ºã®å¼•æ•°ã¯ç„¡è¦–ã•ã‚Œã¾ã—ãŸ" -#: main.c:1560 +#: main.c:1575 msgid "-M ignored: MPFR/GMP support not compiled in" msgstr "" -#: main.c:1581 +#: main.c:1596 #, c-format msgid "%s: option `-W %s' unrecognized, ignored\n" msgstr "%s: オプション `-W %s' ã¯èªè­˜ã§ãã¾ã›ã‚“。無視ã•ã‚Œã¾ã—ãŸ\n" -#: main.c:1634 +#: main.c:1649 #, c-format msgid "%s: option requires an argument -- %c\n" msgstr "%s: 引数ãŒå¿…è¦ãªã‚ªãƒ—ション -- %c\n" -#: mpfr.c:557 +#: mpfr.c:559 #, fuzzy, c-format msgid "PREC value `%.*s' is invalid" msgstr "BINMODE 値 `%s' ã¯ç„¡åŠ¹ã§ã™ã€‚代ã‚ã‚Šã« 3 を使用ã—ã¾ã™" -#: mpfr.c:615 +#: mpfr.c:617 #, fuzzy, c-format msgid "RNDMODE value `%.*s' is invalid" msgstr "BINMODE 値 `%s' ã¯ç„¡åŠ¹ã§ã™ã€‚代ã‚ã‚Šã« 3 を使用ã—ã¾ã™" -#: mpfr.c:711 +#: mpfr.c:714 #, fuzzy, c-format msgid "%s: received non-numeric argument" msgstr "cos: éžæ•°å€¤ã®å¼•æ•°ã‚’å—ã‘å–ã‚Šã¾ã—ãŸ" -#: mpfr.c:820 +#: mpfr.c:824 #, fuzzy msgid "compl(%Rg): negative value will give strange results" msgstr "compl(%lf): è² ã®æ•°å€¤ã‚’使用ã™ã‚‹ã¨ç•°å¸¸ãªçµæžœã«ãªã‚Šã¾ã™" -#: mpfr.c:824 +#: mpfr.c:828 #, fuzzy msgid "comp(%Rg): fractional value will be truncated" msgstr "compl(%lf): å°æ•°ç‚¹ä»¥ä¸‹ã¯åˆ‡ã‚Šæ¨ã¦ã‚‰ã‚Œã¾ã™" -#: mpfr.c:836 +#: mpfr.c:840 #, fuzzy, c-format msgid "cmpl(%Zd): negative values will give strange results" msgstr "compl(%lf): è² ã®æ•°å€¤ã‚’使用ã™ã‚‹ã¨ç•°å¸¸ãªçµæžœã«ãªã‚Šã¾ã™" -#: mpfr.c:855 +#: mpfr.c:859 #, fuzzy, c-format msgid "%s: received non-numeric argument #%d" msgstr "cos: éžæ•°å€¤ã®å¼•æ•°ã‚’å—ã‘å–ã‚Šã¾ã—ãŸ" -#: mpfr.c:865 +#: mpfr.c:869 msgid "%s: argument #%d has invalid value %Rg, using 0" msgstr "" -#: mpfr.c:877 +#: mpfr.c:881 #, fuzzy msgid "%s: argument #%d negative value %Rg will give strange results" msgstr "and(%lf, %lf): è² ã®æ•°å€¤ã‚’使用ã™ã‚‹ã¨ç•°å¸¸ãªçµæžœã«ãªã‚Šã¾ã™" -#: mpfr.c:883 +#: mpfr.c:887 #, fuzzy msgid "%s: argument #%d fractional value %Rg will be truncated" msgstr "and(%lf, %lf): å°æ•°ç‚¹ä»¥ä¸‹ã¯åˆ‡ã‚Šæ¨ã¦ã‚‰ã‚Œã¾ã™" -#: mpfr.c:898 +#: mpfr.c:902 #, fuzzy, c-format msgid "%s: argument #%d negative value %Zd will give strange results" msgstr "and(%lf, %lf): è² ã®æ•°å€¤ã‚’使用ã™ã‚‹ã¨ç•°å¸¸ãªçµæžœã«ãªã‚Šã¾ã™" @@ -3325,24 +3351,24 @@ msgstr "and(%lf, %lf): è² ã®æ•°å€¤ã‚’使用ã™ã‚‹ã¨ç•°å¸¸ãªçµæžœã«ãªã‚Šã¾ msgid "cmd. line:" msgstr "コマンドライン:" -#: node.c:418 +#: node.c:434 msgid "backslash at end of string" msgstr "文字列ã®çµ‚ã‚Šã«ãƒãƒƒã‚¯ã‚¹ãƒ©ãƒƒã‚·ãƒ¥ãŒä½¿ã‚ã‚Œã¦ã„ã¾ã™ã€‚" -#: node.c:497 +#: node.c:513 #, c-format msgid "old awk does not support the `\\%c' escape sequence" msgstr "å¤ã„ awk 㯠`\\%c' エスケープシーケンスをサãƒãƒ¼ãƒˆã—ã¾ã›ã‚“" -#: node.c:548 +#: node.c:564 msgid "POSIX does not allow `\\x' escapes" msgstr "POSIX ã§ã¯ `\\x' エスケープã¯è¨±å¯ã•ã‚Œã¦ã„ã¾ã›ã‚“" -#: node.c:554 +#: node.c:570 msgid "no hex digits in `\\x' escape sequence" msgstr "`\\x' エスケープシーケンスã«å六進数ãŒã‚ã‚Šã¾ã›ã‚“" -#: node.c:576 +#: node.c:592 #, c-format msgid "" "hex escape \\x%.*s of %d characters probably not interpreted the way you " @@ -3351,12 +3377,12 @@ msgstr "" "å六進エスケープ \\x%.*s (%d 文字) ã¯ãŠãらã予期ã—ãŸã‚ˆã†ã«ã¯è§£é‡ˆã•ã‚Œãªã„ã§" "ã—ょã†" -#: node.c:591 +#: node.c:607 #, c-format msgid "escape sequence `\\%c' treated as plain `%c'" msgstr "エスケープシーケンス `\\%c' 㯠`%c' ã¨åŒç­‰ã«æ‰±ã‚ã‚Œã¾ã™" -#: node.c:735 +#: node.c:744 msgid "" "Invalid multibyte data detected. There may be a mismatch between your data " "and your locale." @@ -3374,16 +3400,16 @@ msgstr "%s %s `%s': fd フラグをå–å¾—ã§ãã¾ã›ã‚“: (fcntl F_GETFD: %s)" msgid "%s %s `%s': could not set close-on-exec: (fcntl F_SETFD: %s)" msgstr "%s %s `%s': close-on-exec を設定ã§ãã¾ã›ã‚“: (fcntl F_SETFD: %s)" -#: profile.c:91 +#: profile.c:94 #, c-format msgid "could not open `%s' for writing: %s" msgstr "`%s' を書込ã¿ç”¨ã«é–‹ã‘ã¾ã›ã‚“ã§ã—ãŸ: %s" -#: profile.c:93 +#: profile.c:96 msgid "sending profile to standard error" msgstr "プロファイルを標準エラーã«é€ã£ã¦ã„ã¾ã™" -#: profile.c:213 +#: profile.c:216 #, fuzzy, c-format msgid "" "\t# %s rule(s)\n" @@ -3392,7 +3418,7 @@ msgstr "" "\t# ルール\n" "\n" -#: profile.c:218 +#: profile.c:221 #, c-format msgid "" "\t# Rule(s)\n" @@ -3401,29 +3427,29 @@ msgstr "" "\t# ルール\n" "\n" -#: profile.c:292 +#: profile.c:295 #, c-format msgid "internal error: %s with null vname" msgstr "内部エラー: %s ã® vname ãŒç„¡åŠ¹ã§ã™ã€‚" -#: profile.c:558 +#: profile.c:561 #, fuzzy msgid "internal error: builtin with null fname" msgstr "内部エラー: %s ã® vname ãŒç„¡åŠ¹ã§ã™ã€‚" -#: profile.c:978 +#: profile.c:1006 #, c-format msgid "" "\t# Loaded extensions (-l and/or @load)\n" "\n" msgstr "" -#: profile.c:1001 +#: profile.c:1029 #, c-format msgid "\t# gawk profile, created %s\n" msgstr "\t# gawk プロファイルã€ä½œæˆæ—¥æ™‚ %s\n" -#: profile.c:1555 +#: profile.c:1600 #, c-format msgid "" "\n" @@ -3432,98 +3458,104 @@ msgstr "" "\n" "\t# 関数一覧(アルファベット順)\n" -#: profile.c:1593 +#: profile.c:1638 #, c-format msgid "redir2str: unknown redirection type %d" msgstr "redir2str: ä¸æ˜Žãªãƒªãƒ€ã‚¤ãƒ¬ã‚¯ãƒˆåž‹ %d ã§ã™" -#: re.c:607 +#: re.c:610 #, c-format msgid "regexp component `%.*s' should probably be `[%.*s]'" msgstr "æ­£è¦è¡¨ç¾ã®è¦ç´  `%.*s' ã¯ãŠãらã `[%.*s]' ã§ã‚ã‚‹ã¹ãã§ã™" -#: regcomp.c:139 +#: regcomp.c:143 msgid "Success" msgstr "æˆåŠŸã§ã™" -#: regcomp.c:142 +#: regcomp.c:146 msgid "No match" msgstr "一致ã—ã¾ã›ã‚“" -#: regcomp.c:145 +#: regcomp.c:149 msgid "Invalid regular expression" msgstr "無効ãªæ­£è¦è¡¨ç¾ã§ã™" -#: regcomp.c:148 +#: regcomp.c:152 msgid "Invalid collation character" msgstr "無効ãªç…§åˆæ–‡å­—ã§ã™" -#: regcomp.c:151 +#: regcomp.c:155 msgid "Invalid character class name" msgstr "無効ãªæ–‡å­—クラスåã§ã™" -#: regcomp.c:154 +#: regcomp.c:158 msgid "Trailing backslash" msgstr "終端ã®ãƒãƒƒã‚¯ã‚¹ãƒ©ãƒƒã‚·ãƒ¥" -#: regcomp.c:157 +#: regcomp.c:161 msgid "Invalid back reference" msgstr "無効ãªå‰æ–¹å‚ç…§ã§ã™" -#: regcomp.c:160 +#: regcomp.c:164 #, fuzzy msgid "Unmatched [, [^, [:, [., or [=" msgstr "[ ã¾ãŸã¯ [^ ãŒä¸ä¸€è‡´ã§ã™" -#: regcomp.c:163 +#: regcomp.c:167 msgid "Unmatched ( or \\(" msgstr "( ã¾ãŸã¯ \\( ãŒä¸ä¸€è‡´ã§ã™" -#: regcomp.c:166 +#: regcomp.c:170 msgid "Unmatched \\{" msgstr "\\{ ãŒä¸ä¸€è‡´ã§ã™" -#: regcomp.c:169 +#: regcomp.c:173 msgid "Invalid content of \\{\\}" msgstr "\\{\\} ã®ä¸­èº«ãŒç„¡åŠ¹ã§ã™" -#: regcomp.c:172 +#: regcomp.c:176 msgid "Invalid range end" msgstr "無効ãªç¯„囲終了ã§ã™" -#: regcomp.c:175 +#: regcomp.c:179 msgid "Memory exhausted" msgstr "メモリを使ã„æžœãŸã—ã¾ã—ãŸ" -#: regcomp.c:178 +#: regcomp.c:182 msgid "Invalid preceding regular expression" msgstr "無効ãªå‰æ–¹æ­£è¦è¡¨ç¾ã§ã™" -#: regcomp.c:181 +#: regcomp.c:185 msgid "Premature end of regular expression" msgstr "æ­£è¦è¡¨ç¾ãŒé€”中ã§çµ‚了ã—ã¾ã—ãŸ" -#: regcomp.c:184 +#: regcomp.c:188 msgid "Regular expression too big" msgstr "æ­£è¦è¡¨ç¾ãŒå¤§ãã™ãŽã¾ã™" -#: regcomp.c:187 +#: regcomp.c:191 msgid "Unmatched ) or \\)" msgstr ") ã¾ãŸã¯ \\) ãŒä¸ä¸€è‡´ã§ã™" -#: regcomp.c:712 +#: regcomp.c:701 msgid "No previous regular expression" msgstr "以å‰ã«æ­£è¦è¡¨ç¾ãŒã‚ã‚Šã¾ã›ã‚“" -#: symbol.c:678 +#: symbol.c:684 #, fuzzy, c-format msgid "function `%s': can't use function `%s' as a parameter name" msgstr "関数 `%s': 関数åを仮引数åã¨ã—ã¦ä½¿ç”¨å‡ºæ¥ã¾ã›ã‚“" -#: symbol.c:810 +#: symbol.c:816 msgid "can not pop main context" msgstr "" +#~ msgid "function `%s' defined to take no more than %d argument(s)" +#~ msgstr "関数 `%s' ã«ä½¿ãˆã‚‹å¼•æ•°ã®æ•°ã¯ `%d' 以下ã¨å®šç¾©ã•ã‚Œã¦ã„ã¾ã™" + +#~ msgid "function `%s': missing argument #%d" +#~ msgstr "関数 `%s': 引数 #%d ãŒã‚ã‚Šã¾ã›ã‚“" + #~ msgid "`getline var' invalid inside `%s' rule" #~ msgstr "`%s' ルールã®å†…部ã§ã¯ `getline var' ã¯ç„¡åŠ¹ã§ã™" diff --git a/po/ms.po b/po/ms.po index 53d9e7c..b489226 100644 --- a/po/ms.po +++ b/po/ms.po @@ -7,7 +7,7 @@ msgid "" msgstr "" "Project-Id-Version: gawk 4.0.75\n" "Report-Msgid-Bugs-To: bug-gawk@gnu.org\n" -"POT-Creation-Date: 2015-05-19 16:06+0300\n" +"POT-Creation-Date: 2016-08-25 06:19+0300\n" "PO-Revision-Date: 2013-04-19 10:45+0800\n" "Last-Translator: Sharuzzaman Ahmat Raslan \n" "Language-Team: Malay \n" @@ -19,84 +19,84 @@ msgstr "" "Plural-Forms: nplurals=1; plural=0;\n" "X-Poedit-SourceCharset: UTF-8\n" -#: array.c:256 +#: array.c:259 #, c-format msgid "from %s" msgstr "dari %s" -#: array.c:357 +#: array.c:360 msgid "attempt to use a scalar value as array" msgstr "cubaan untuk menggunakan nilai skalar sebagai tatasusunan" -#: array.c:359 +#: array.c:362 #, c-format msgid "attempt to use scalar parameter `%s' as an array" msgstr "cubaan untuk menggunakan parameter skalar `%s' sebagai tatasusunan" -#: array.c:362 +#: array.c:365 #, c-format msgid "attempt to use scalar `%s' as an array" msgstr "cubaan untuk menggunakan skalar `%s' sebagai tatasusunan" -#: array.c:409 array.c:576 builtin.c:85 builtin.c:1606 builtin.c:1652 -#: builtin.c:1665 builtin.c:2112 builtin.c:2126 eval.c:1149 eval.c:1153 -#: eval.c:1564 +#: array.c:412 array.c:579 builtin.c:85 builtin.c:1612 builtin.c:1658 +#: builtin.c:1671 builtin.c:2160 builtin.c:2179 eval.c:1141 eval.c:1145 +#: eval.c:1556 #, c-format msgid "attempt to use array `%s' in a scalar context" msgstr "cubaan untuk menggunakan tatasusunan `%s' dalam konteks skalar" -#: array.c:583 +#: array.c:586 #, c-format msgid "delete: index `%s' not in array `%s'" msgstr "padam: indeks `%s' tiada dalam tatasusunan `%s'" -#: array.c:597 +#: array.c:600 #, c-format msgid "attempt to use scalar `%s[\"%.*s\"]' as an array" msgstr "" -#: array.c:776 +#: array.c:779 msgid "adump: first argument not an array" msgstr "" -#: array.c:815 +#: array.c:818 msgid "asort: second argument not an array" msgstr "" -#: array.c:816 +#: array.c:819 msgid "asorti: second argument not an array" msgstr "" -#: array.c:823 +#: array.c:826 msgid "asort: first argument not an array" msgstr "" -#: array.c:824 +#: array.c:827 msgid "asorti: first argument not an array" msgstr "" -#: array.c:831 +#: array.c:834 msgid "asort: cannot use a subarray of first arg for second arg" msgstr "" -#: array.c:832 +#: array.c:835 msgid "asorti: cannot use a subarray of first arg for second arg" msgstr "" -#: array.c:837 +#: array.c:840 msgid "asort: cannot use a subarray of second arg for first arg" msgstr "" -#: array.c:838 +#: array.c:841 msgid "asorti: cannot use a subarray of second arg for first arg" msgstr "" -#: array.c:1313 +#: array.c:1316 #, c-format msgid "`%s' is invalid as a function name" msgstr "" -#: array.c:1317 +#: array.c:1320 #, c-format msgid "sort comparison function `%s' is not defined" msgstr "" @@ -137,11 +137,11 @@ msgstr "" msgid "duplicate `default' detected in switch body" msgstr "" -#: awkgram.y:793 awkgram.y:3763 +#: awkgram.y:793 awkgram.y:3774 msgid "`break' is not allowed outside a loop or switch" msgstr "" -#: awkgram.y:802 awkgram.y:3755 +#: awkgram.y:802 awkgram.y:3766 msgid "`continue' is not allowed outside a loop" msgstr "" @@ -230,7 +230,7 @@ msgstr "" msgid "invalid subscript expression" msgstr "" -#: awkgram.y:2047 awkgram.y:2067 gawkapi.c:206 gawkapi.c:224 msg.c:126 +#: awkgram.y:2047 awkgram.y:2067 gawkapi.c:206 gawkapi.c:223 msg.c:126 msgid "warning: " msgstr "" @@ -238,280 +238,284 @@ msgstr "" msgid "fatal: " msgstr "" -#: awkgram.y:2115 +#: awkgram.y:2116 msgid "unexpected newline or end of string" msgstr "" -#: awkgram.y:2394 awkgram.y:2470 awkgram.y:2693 debug.c:523 debug.c:539 -#: debug.c:2812 debug.c:5055 +#: awkgram.y:2397 awkgram.y:2473 awkgram.y:2696 debug.c:523 debug.c:539 +#: debug.c:2812 debug.c:5101 #, c-format msgid "can't open source file `%s' for reading (%s)" msgstr "" -#: awkgram.y:2395 awkgram.y:2520 +#: awkgram.y:2398 awkgram.y:2523 #, c-format msgid "can't open shared library `%s' for reading (%s)" msgstr "" -#: awkgram.y:2397 awkgram.y:2471 awkgram.y:2521 builtin.c:135 debug.c:5206 +#: awkgram.y:2400 awkgram.y:2474 awkgram.y:2524 builtin.c:135 debug.c:5252 msgid "reason unknown" msgstr "" -#: awkgram.y:2406 awkgram.y:2430 +#: awkgram.y:2409 awkgram.y:2433 #, c-format msgid "can't include `%s' and use it as a program file" msgstr "" -#: awkgram.y:2419 +#: awkgram.y:2422 #, c-format msgid "already included source file `%s'" msgstr "" -#: awkgram.y:2420 +#: awkgram.y:2423 #, c-format msgid "already loaded shared library `%s'" msgstr "" -#: awkgram.y:2455 +#: awkgram.y:2458 msgid "@include is a gawk extension" msgstr "" -#: awkgram.y:2461 +#: awkgram.y:2464 msgid "empty filename after @include" msgstr "" -#: awkgram.y:2505 +#: awkgram.y:2508 msgid "@load is a gawk extension" msgstr "" -#: awkgram.y:2511 +#: awkgram.y:2514 msgid "empty filename after @load" msgstr "" -#: awkgram.y:2645 +#: awkgram.y:2648 msgid "empty program text on command line" msgstr "" -#: awkgram.y:2760 +#: awkgram.y:2763 #, c-format msgid "can't read sourcefile `%s' (%s)" msgstr "" -#: awkgram.y:2771 +#: awkgram.y:2774 #, c-format msgid "source file `%s' is empty" msgstr "" -#: awkgram.y:2830 +#: awkgram.y:2833 #, c-format msgid "PEBKAC error: invalid character '\\%03o' in source code" msgstr "" -#: awkgram.y:2961 +#: awkgram.y:2964 msgid "source file does not end in newline" msgstr "" -#: awkgram.y:3074 +#: awkgram.y:3081 msgid "unterminated regexp ends with `\\' at end of file" msgstr "" -#: awkgram.y:3101 +#: awkgram.y:3108 #, c-format msgid "%s: %d: tawk regex modifier `/.../%c' doesn't work in gawk" msgstr "" -#: awkgram.y:3105 +#: awkgram.y:3112 #, c-format msgid "tawk regex modifier `/.../%c' doesn't work in gawk" msgstr "" -#: awkgram.y:3112 +#: awkgram.y:3119 msgid "unterminated regexp" msgstr "" -#: awkgram.y:3116 +#: awkgram.y:3123 msgid "unterminated regexp at end of file" msgstr "" -#: awkgram.y:3174 +#: awkgram.y:3181 msgid "use of `\\ #...' line continuation is not portable" msgstr "" -#: awkgram.y:3190 +#: awkgram.y:3197 msgid "backslash not last character on line" msgstr "" -#: awkgram.y:3251 +#: awkgram.y:3235 awkgram.y:3237 +msgid "multidimensional arrays are a gawk extension" +msgstr "" + +#: awkgram.y:3262 msgid "POSIX does not allow operator `**='" msgstr "" -#: awkgram.y:3253 +#: awkgram.y:3264 msgid "old awk does not support operator `**='" msgstr "" -#: awkgram.y:3262 +#: awkgram.y:3273 msgid "POSIX does not allow operator `**'" msgstr "" -#: awkgram.y:3264 +#: awkgram.y:3275 msgid "old awk does not support operator `**'" msgstr "" -#: awkgram.y:3299 +#: awkgram.y:3310 msgid "operator `^=' is not supported in old awk" msgstr "" -#: awkgram.y:3307 +#: awkgram.y:3318 msgid "operator `^' is not supported in old awk" msgstr "" -#: awkgram.y:3404 awkgram.y:3422 command.y:1180 +#: awkgram.y:3415 awkgram.y:3433 command.y:1187 msgid "unterminated string" msgstr "" -#: awkgram.y:3643 +#: awkgram.y:3654 #, c-format msgid "invalid char '%c' in expression" msgstr "" -#: awkgram.y:3690 +#: awkgram.y:3701 #, c-format msgid "`%s' is a gawk extension" msgstr "" -#: awkgram.y:3695 +#: awkgram.y:3706 #, c-format msgid "POSIX does not allow `%s'" msgstr "" -#: awkgram.y:3703 +#: awkgram.y:3714 #, c-format msgid "`%s' is not supported in old awk" msgstr "" -#: awkgram.y:3793 +#: awkgram.y:3804 msgid "`goto' considered harmful!\n" msgstr "" -#: awkgram.y:3827 +#: awkgram.y:3873 #, c-format msgid "%d is invalid as number of arguments for %s" msgstr "" -#: awkgram.y:3862 +#: awkgram.y:3908 #, c-format msgid "%s: string literal as last arg of substitute has no effect" msgstr "" -#: awkgram.y:3867 +#: awkgram.y:3913 #, c-format msgid "%s third parameter is not a changeable object" msgstr "" -#: awkgram.y:3950 awkgram.y:3953 +#: awkgram.y:3996 awkgram.y:3999 msgid "match: third argument is a gawk extension" msgstr "" -#: awkgram.y:4007 awkgram.y:4010 +#: awkgram.y:4053 awkgram.y:4056 msgid "close: second argument is a gawk extension" msgstr "" -#: awkgram.y:4022 +#: awkgram.y:4068 msgid "use of dcgettext(_\"...\") is incorrect: remove leading underscore" msgstr "" -#: awkgram.y:4037 +#: awkgram.y:4083 msgid "use of dcngettext(_\"...\") is incorrect: remove leading underscore" msgstr "" -#: awkgram.y:4056 +#: awkgram.y:4102 msgid "index: regexp constant as second argument is not allowed" msgstr "" -#: awkgram.y:4109 +#: awkgram.y:4155 #, c-format msgid "function `%s': parameter `%s' shadows global variable" msgstr "" -#: awkgram.y:4166 debug.c:4041 debug.c:4084 debug.c:5204 +#: awkgram.y:4214 debug.c:4087 debug.c:4130 debug.c:5250 #, c-format msgid "could not open `%s' for writing (%s)" msgstr "" -#: awkgram.y:4167 +#: awkgram.y:4215 msgid "sending variable list to standard error" msgstr "" -#: awkgram.y:4175 +#: awkgram.y:4223 #, c-format msgid "%s: close failed (%s)" msgstr "" -#: awkgram.y:4200 +#: awkgram.y:4248 msgid "shadow_funcs() called twice!" msgstr "" -#: awkgram.y:4208 +#: awkgram.y:4256 msgid "there were shadowed variables." msgstr "" -#: awkgram.y:4279 +#: awkgram.y:4327 #, c-format msgid "function name `%s' previously defined" msgstr "" -#: awkgram.y:4325 +#: awkgram.y:4373 #, c-format msgid "function `%s': can't use function name as parameter name" msgstr "" -#: awkgram.y:4328 +#: awkgram.y:4376 #, c-format msgid "function `%s': can't use special variable `%s' as a function parameter" msgstr "" -#: awkgram.y:4336 +#: awkgram.y:4384 #, c-format msgid "function `%s': parameter #%d, `%s', duplicates parameter #%d" msgstr "" -#: awkgram.y:4423 awkgram.y:4429 +#: awkgram.y:4471 awkgram.y:4477 #, c-format msgid "function `%s' called but never defined" msgstr "" -#: awkgram.y:4433 +#: awkgram.y:4481 #, c-format msgid "function `%s' defined but never called directly" msgstr "" -#: awkgram.y:4465 +#: awkgram.y:4513 #, c-format msgid "regexp constant for parameter #%d yields boolean value" msgstr "" -#: awkgram.y:4480 +#: awkgram.y:4528 #, c-format msgid "" "function `%s' called with space between name and `(',\n" "or used as a variable or an array" msgstr "" -#: awkgram.y:4686 +#: awkgram.y:4734 msgid "division by zero attempted" msgstr "" -#: awkgram.y:4695 +#: awkgram.y:4743 #, c-format msgid "division by zero attempted in `%%'" msgstr "" -#: awkgram.y:5015 +#: awkgram.y:5064 msgid "" "cannot assign a value to the result of a field post-increment expression" msgstr "" -#: awkgram.y:5018 +#: awkgram.y:5067 #, c-format msgid "invalid target of assignment (opcode %s)" msgstr "" @@ -544,725 +548,742 @@ msgstr "" msgid "fflush: cannot flush: file `%s' opened for reading, not writing" msgstr "" -#: builtin.c:244 +#: builtin.c:241 +#, c-format +msgid "fflush: cannot flush: two-way pipe `%s' has closed write end" +msgstr "" + +#: builtin.c:247 #, c-format msgid "fflush: `%s' is not an open file, pipe or co-process" msgstr "" -#: builtin.c:351 +#: builtin.c:354 msgid "index: received non-string first argument" msgstr "" -#: builtin.c:353 +#: builtin.c:356 msgid "index: received non-string second argument" msgstr "" -#: builtin.c:466 mpfr.c:777 +#: builtin.c:469 mpfr.c:781 msgid "int: received non-numeric argument" msgstr "" -#: builtin.c:503 +#: builtin.c:506 msgid "length: received array argument" msgstr "" -#: builtin.c:506 +#: builtin.c:509 msgid "`length(array)' is a gawk extension" msgstr "" -#: builtin.c:525 +#: builtin.c:528 msgid "length: received non-string argument" msgstr "" -#: builtin.c:554 +#: builtin.c:557 msgid "log: received non-numeric argument" msgstr "" -#: builtin.c:557 +#: builtin.c:560 #, c-format msgid "log: received negative argument %g" msgstr "" -#: builtin.c:755 builtin.c:760 builtin.c:911 +#: builtin.c:758 builtin.c:763 builtin.c:914 msgid "fatal: must use `count$' on all formats or none" msgstr "" -#: builtin.c:830 +#: builtin.c:833 #, c-format msgid "field width is ignored for `%%' specifier" msgstr "" -#: builtin.c:832 +#: builtin.c:835 #, c-format msgid "precision is ignored for `%%' specifier" msgstr "" -#: builtin.c:834 +#: builtin.c:837 #, c-format msgid "field width and precision are ignored for `%%' specifier" msgstr "" -#: builtin.c:885 +#: builtin.c:888 msgid "fatal: `$' is not permitted in awk formats" msgstr "" -#: builtin.c:894 +#: builtin.c:897 msgid "fatal: arg count with `$' must be > 0" msgstr "" -#: builtin.c:898 +#: builtin.c:901 #, c-format msgid "fatal: arg count %ld greater than total number of supplied arguments" msgstr "" -#: builtin.c:902 +#: builtin.c:905 msgid "fatal: `$' not permitted after period in format" msgstr "" -#: builtin.c:921 +#: builtin.c:924 msgid "fatal: no `$' supplied for positional field width or precision" msgstr "" -#: builtin.c:991 +#: builtin.c:994 msgid "`l' is meaningless in awk formats; ignored" msgstr "" -#: builtin.c:995 +#: builtin.c:998 msgid "fatal: `l' is not permitted in POSIX awk formats" msgstr "" -#: builtin.c:1008 +#: builtin.c:1011 msgid "`L' is meaningless in awk formats; ignored" msgstr "" -#: builtin.c:1012 +#: builtin.c:1015 msgid "fatal: `L' is not permitted in POSIX awk formats" msgstr "" -#: builtin.c:1025 +#: builtin.c:1028 msgid "`h' is meaningless in awk formats; ignored" msgstr "" -#: builtin.c:1029 +#: builtin.c:1032 msgid "fatal: `h' is not permitted in POSIX awk formats" msgstr "" -#: builtin.c:1055 +#: builtin.c:1058 #, c-format msgid "[s]printf: value %g is too big for %%c format" msgstr "" -#: builtin.c:1068 +#: builtin.c:1071 #, c-format msgid "[s]printf: value %g is not a valid wide character" msgstr "" -#: builtin.c:1454 +#: builtin.c:1457 #, c-format msgid "[s]printf: value %g is out of range for `%%%c' format" msgstr "" -#: builtin.c:1552 +#: builtin.c:1555 #, c-format msgid "ignoring unknown format specifier character `%c': no argument converted" msgstr "" -#: builtin.c:1557 +#: builtin.c:1560 msgid "fatal: not enough arguments to satisfy format string" msgstr "" -#: builtin.c:1559 +#: builtin.c:1562 msgid "^ ran out for this one" msgstr "" -#: builtin.c:1566 +#: builtin.c:1569 msgid "[s]printf: format specifier does not have control letter" msgstr "" -#: builtin.c:1569 +#: builtin.c:1572 msgid "too many arguments supplied for format string" msgstr "" -#: builtin.c:1625 +#: builtin.c:1631 msgid "sprintf: no arguments" msgstr "" -#: builtin.c:1648 builtin.c:1659 +#: builtin.c:1654 builtin.c:1665 msgid "printf: no arguments" msgstr "" -#: builtin.c:1702 +#: builtin.c:1676 +msgid "printf: attempt to write to closed write end of two-way pipe" +msgstr "" + +#: builtin.c:1713 msgid "sqrt: received non-numeric argument" msgstr "" -#: builtin.c:1706 +#: builtin.c:1717 #, c-format msgid "sqrt: called with negative argument %g" msgstr "" -#: builtin.c:1737 +#: builtin.c:1748 #, c-format msgid "substr: length %g is not >= 1" msgstr "" -#: builtin.c:1739 +#: builtin.c:1750 #, c-format msgid "substr: length %g is not >= 0" msgstr "" -#: builtin.c:1753 +#: builtin.c:1764 #, c-format msgid "substr: non-integer length %g will be truncated" msgstr "" -#: builtin.c:1758 +#: builtin.c:1769 #, c-format msgid "substr: length %g too big for string indexing, truncating to %g" msgstr "" -#: builtin.c:1770 +#: builtin.c:1781 #, c-format msgid "substr: start index %g is invalid, using 1" msgstr "" -#: builtin.c:1775 +#: builtin.c:1786 #, c-format msgid "substr: non-integer start index %g will be truncated" msgstr "" -#: builtin.c:1798 +#: builtin.c:1809 msgid "substr: source string is zero length" msgstr "" -#: builtin.c:1812 +#: builtin.c:1823 #, c-format msgid "substr: start index %g is past end of string" msgstr "" -#: builtin.c:1820 +#: builtin.c:1831 #, c-format msgid "" "substr: length %g at start index %g exceeds length of first argument (%lu)" msgstr "" -#: builtin.c:1892 +#: builtin.c:1903 msgid "strftime: format value in PROCINFO[\"strftime\"] has numeric type" msgstr "" -#: builtin.c:1915 +#: builtin.c:1926 msgid "strftime: received non-numeric second argument" msgstr "" -#: builtin.c:1925 +#: builtin.c:1936 msgid "strftime: second argument less than 0 or too big for time_t" msgstr "" -#: builtin.c:1932 +#: builtin.c:1943 msgid "strftime: second argument out of range for time_t" msgstr "" -#: builtin.c:1941 +#: builtin.c:1952 msgid "strftime: received non-string first argument" msgstr "" -#: builtin.c:1948 +#: builtin.c:1959 msgid "strftime: received empty format string" msgstr "" -#: builtin.c:2017 +#: builtin.c:2028 msgid "mktime: received non-string argument" msgstr "" -#: builtin.c:2034 +#: builtin.c:2045 msgid "mktime: at least one of the values is out of the default range" msgstr "" -#: builtin.c:2069 +#: builtin.c:2081 msgid "'system' function not allowed in sandbox mode" msgstr "" -#: builtin.c:2074 +#: builtin.c:2086 msgid "system: received non-string argument" msgstr "" -#: builtin.c:2194 +#: builtin.c:2165 builtin.c:2230 +msgid "print: attempt to write to closed write end of two-way pipe" +msgstr "" + +#: builtin.c:2248 #, c-format msgid "reference to uninitialized field `$%d'" msgstr "" -#: builtin.c:2279 +#: builtin.c:2333 msgid "tolower: received non-string argument" msgstr "" -#: builtin.c:2310 +#: builtin.c:2364 msgid "toupper: received non-string argument" msgstr "" -#: builtin.c:2343 mpfr.c:679 +#: builtin.c:2397 mpfr.c:681 msgid "atan2: received non-numeric first argument" msgstr "" -#: builtin.c:2345 mpfr.c:681 +#: builtin.c:2399 mpfr.c:683 msgid "atan2: received non-numeric second argument" msgstr "" -#: builtin.c:2364 +#: builtin.c:2418 msgid "sin: received non-numeric argument" msgstr "" -#: builtin.c:2380 +#: builtin.c:2434 msgid "cos: received non-numeric argument" msgstr "" -#: builtin.c:2433 mpfr.c:1176 +#: builtin.c:2487 mpfr.c:1180 msgid "srand: received non-numeric argument" msgstr "" -#: builtin.c:2464 +#: builtin.c:2518 msgid "match: third argument is not an array" msgstr "" -#: builtin.c:2725 +#: builtin.c:2779 #, c-format msgid "gensub: third argument `%.*s' treated as 1" msgstr "" -#: builtin.c:2740 +#: builtin.c:2794 #, c-format msgid "gensub: third argument %g treated as 1" msgstr "" -#: builtin.c:3038 +#: builtin.c:3096 #, c-format msgid "%s: can be called indirectly only with two arguments" msgstr "" -#: builtin.c:3128 +#: builtin.c:3186 #, c-format msgid "indirect call to %s requires at least two arguments" msgstr "" -#: builtin.c:3180 +#: builtin.c:3238 msgid "lshift: received non-numeric first argument" msgstr "" -#: builtin.c:3182 +#: builtin.c:3240 msgid "lshift: received non-numeric second argument" msgstr "" -#: builtin.c:3188 +#: builtin.c:3246 #, c-format msgid "lshift(%f, %f): negative values will give strange results" msgstr "" -#: builtin.c:3190 +#: builtin.c:3248 #, c-format msgid "lshift(%f, %f): fractional values will be truncated" msgstr "" -#: builtin.c:3192 +#: builtin.c:3250 #, c-format msgid "lshift(%f, %f): too large shift value will give strange results" msgstr "" -#: builtin.c:3217 +#: builtin.c:3275 msgid "rshift: received non-numeric first argument" msgstr "" -#: builtin.c:3219 +#: builtin.c:3277 msgid "rshift: received non-numeric second argument" msgstr "" -#: builtin.c:3225 +#: builtin.c:3283 #, c-format msgid "rshift(%f, %f): negative values will give strange results" msgstr "" -#: builtin.c:3227 +#: builtin.c:3285 #, c-format msgid "rshift(%f, %f): fractional values will be truncated" msgstr "" -#: builtin.c:3229 +#: builtin.c:3287 #, c-format msgid "rshift(%f, %f): too large shift value will give strange results" msgstr "" -#: builtin.c:3254 mpfr.c:988 +#: builtin.c:3312 mpfr.c:992 msgid "and: called with less than two arguments" msgstr "" -#: builtin.c:3259 +#: builtin.c:3317 #, c-format msgid "and: argument %d is non-numeric" msgstr "" -#: builtin.c:3263 +#: builtin.c:3321 #, c-format msgid "and: argument %d negative value %g will give strange results" msgstr "" -#: builtin.c:3286 mpfr.c:1020 +#: builtin.c:3344 mpfr.c:1024 msgid "or: called with less than two arguments" msgstr "" -#: builtin.c:3291 +#: builtin.c:3349 #, c-format msgid "or: argument %d is non-numeric" msgstr "" -#: builtin.c:3295 +#: builtin.c:3353 #, c-format msgid "or: argument %d negative value %g will give strange results" msgstr "" -#: builtin.c:3317 mpfr.c:1051 +#: builtin.c:3375 mpfr.c:1055 msgid "xor: called with less than two arguments" msgstr "" -#: builtin.c:3323 +#: builtin.c:3381 #, c-format msgid "xor: argument %d is non-numeric" msgstr "" -#: builtin.c:3327 +#: builtin.c:3385 #, c-format msgid "xor: argument %d negative value %g will give strange results" msgstr "" -#: builtin.c:3352 mpfr.c:807 +#: builtin.c:3410 mpfr.c:811 msgid "compl: received non-numeric argument" msgstr "" -#: builtin.c:3358 +#: builtin.c:3416 #, c-format msgid "compl(%f): negative value will give strange results" msgstr "" -#: builtin.c:3360 +#: builtin.c:3418 #, c-format msgid "compl(%f): fractional value will be truncated" msgstr "" -#: builtin.c:3529 +#: builtin.c:3588 #, c-format msgid "dcgettext: `%s' is not a valid locale category" msgstr "" -#: command.y:225 +#: command.y:226 #, c-format msgid "Type (g)awk statement(s). End with the command \"end\"\n" msgstr "" -#: command.y:289 +#: command.y:290 #, c-format msgid "invalid frame number: %d" msgstr "" -#: command.y:295 +#: command.y:296 #, c-format msgid "info: invalid option - \"%s\"" msgstr "" -#: command.y:321 +#: command.y:322 #, c-format msgid "source \"%s\": already sourced." msgstr "" -#: command.y:326 +#: command.y:327 #, c-format msgid "save \"%s\": command not permitted." msgstr "" -#: command.y:339 +#: command.y:340 msgid "Can't use command `commands' for breakpoint/watchpoint commands" msgstr "" -#: command.y:341 +#: command.y:342 msgid "no breakpoint/watchpoint has been set yet" msgstr "" -#: command.y:343 +#: command.y:344 msgid "invalid breakpoint/watchpoint number" msgstr "" -#: command.y:348 +#: command.y:349 #, c-format msgid "Type commands for when %s %d is hit, one per line.\n" msgstr "" -#: command.y:350 +#: command.y:351 #, c-format msgid "End with the command \"end\"\n" msgstr "" -#: command.y:357 +#: command.y:358 msgid "`end' valid only in command `commands' or `eval'" msgstr "" -#: command.y:367 +#: command.y:368 msgid "`silent' valid only in command `commands'" msgstr "" -#: command.y:373 +#: command.y:374 #, c-format msgid "trace: invalid option - \"%s\"" msgstr "" -#: command.y:387 +#: command.y:388 msgid "condition: invalid breakpoint/watchpoint number" msgstr "" -#: command.y:449 +#: command.y:450 msgid "argument not a string" msgstr "" -#: command.y:459 command.y:464 +#: command.y:460 command.y:465 #, c-format msgid "option: invalid parameter - \"%s\"" msgstr "" -#: command.y:474 +#: command.y:475 #, c-format msgid "no such function - \"%s\"" msgstr "" -#: command.y:531 +#: command.y:532 #, c-format msgid "enable: invalid option - \"%s\"" msgstr "" -#: command.y:597 +#: command.y:598 #, c-format msgid "invalid range specification: %d - %d" msgstr "" -#: command.y:659 +#: command.y:660 msgid "non-numeric value for field number" msgstr "" -#: command.y:680 command.y:687 +#: command.y:681 command.y:688 msgid "non-numeric value found, numeric expected" msgstr "" -#: command.y:712 command.y:718 +#: command.y:713 command.y:719 msgid "non-zero integer value" msgstr "" -#: command.y:817 +#: command.y:818 msgid "" "backtrace [N] - print trace of all or N innermost (outermost if N < 0) " "frames." msgstr "" -#: command.y:819 +#: command.y:820 msgid "" "break [[filename:]N|function] - set breakpoint at the specified location." msgstr "" -#: command.y:821 +#: command.y:822 msgid "clear [[filename:]N|function] - delete breakpoints previously set." msgstr "" -#: command.y:823 +#: command.y:824 msgid "" "commands [num] - starts a list of commands to be executed at a " "breakpoint(watchpoint) hit." msgstr "" -#: command.y:825 +#: command.y:826 msgid "condition num [expr] - set or clear breakpoint or watchpoint condition." msgstr "" -#: command.y:827 +#: command.y:828 msgid "continue [COUNT] - continue program being debugged." msgstr "" -#: command.y:829 +#: command.y:830 msgid "delete [breakpoints] [range] - delete specified breakpoints." msgstr "" -#: command.y:831 +#: command.y:832 msgid "disable [breakpoints] [range] - disable specified breakpoints." msgstr "" -#: command.y:833 +#: command.y:834 msgid "display [var] - print value of variable each time the program stops." msgstr "" -#: command.y:835 +#: command.y:836 msgid "down [N] - move N frames down the stack." msgstr "" -#: command.y:837 +#: command.y:838 msgid "dump [filename] - dump instructions to file or stdout." msgstr "" -#: command.y:839 +#: command.y:840 msgid "enable [once|del] [breakpoints] [range] - enable specified breakpoints." msgstr "" -#: command.y:841 +#: command.y:842 msgid "end - end a list of commands or awk statements." msgstr "" -#: command.y:843 +#: command.y:844 msgid "eval stmt|[p1, p2, ...] - evaluate awk statement(s)." msgstr "" -#: command.y:845 +#: command.y:846 +msgid "exit - (same as quit) exit debugger." +msgstr "" + +#: command.y:848 msgid "finish - execute until selected stack frame returns." msgstr "" -#: command.y:847 +#: command.y:850 msgid "frame [N] - select and print stack frame number N." msgstr "" -#: command.y:849 +#: command.y:852 msgid "help [command] - print list of commands or explanation of command." msgstr "" -#: command.y:851 +#: command.y:854 msgid "ignore N COUNT - set ignore-count of breakpoint number N to COUNT." msgstr "" -#: command.y:853 +#: command.y:856 msgid "" "info topic - source|sources|variables|functions|break|frame|args|locals|" "display|watch." msgstr "" -#: command.y:855 +#: command.y:858 msgid "list [-|+|[filename:]lineno|function|range] - list specified line(s)." msgstr "" -#: command.y:857 +#: command.y:860 msgid "next [COUNT] - step program, proceeding through subroutine calls." msgstr "" -#: command.y:859 +#: command.y:862 msgid "" "nexti [COUNT] - step one instruction, but proceed through subroutine calls." msgstr "" -#: command.y:861 +#: command.y:864 msgid "option [name[=value]] - set or display debugger option(s)." msgstr "" -#: command.y:863 +#: command.y:866 msgid "print var [var] - print value of a variable or array." msgstr "" -#: command.y:865 +#: command.y:868 msgid "printf format, [arg], ... - formatted output." msgstr "" -#: command.y:867 +#: command.y:870 msgid "quit - exit debugger." msgstr "" -#: command.y:869 +#: command.y:872 msgid "return [value] - make selected stack frame return to its caller." msgstr "" -#: command.y:871 +#: command.y:874 msgid "run - start or restart executing program." msgstr "" -#: command.y:874 +#: command.y:877 msgid "save filename - save commands from the session to file." msgstr "" -#: command.y:877 +#: command.y:880 msgid "set var = value - assign value to a scalar variable." msgstr "" -#: command.y:879 +#: command.y:882 msgid "" "silent - suspends usual message when stopped at a breakpoint/watchpoint." msgstr "" -#: command.y:881 +#: command.y:884 msgid "source file - execute commands from file." msgstr "" -#: command.y:883 +#: command.y:886 msgid "step [COUNT] - step program until it reaches a different source line." msgstr "" -#: command.y:885 +#: command.y:888 msgid "stepi [COUNT] - step one instruction exactly." msgstr "" -#: command.y:887 +#: command.y:890 msgid "tbreak [[filename:]N|function] - set a temporary breakpoint." msgstr "" -#: command.y:889 +#: command.y:892 msgid "trace on|off - print instruction before executing." msgstr "" -#: command.y:891 +#: command.y:894 msgid "undisplay [N] - remove variable(s) from automatic display list." msgstr "" -#: command.y:893 +#: command.y:896 msgid "" "until [[filename:]N|function] - execute until program reaches a different " "line or line N within current frame." msgstr "" -#: command.y:895 +#: command.y:898 msgid "unwatch [N] - remove variable(s) from watch list." msgstr "" -#: command.y:897 +#: command.y:900 msgid "up [N] - move N frames up the stack." msgstr "" -#: command.y:899 +#: command.y:902 msgid "watch var - set a watchpoint for a variable." msgstr "" -#: command.y:901 +#: command.y:904 msgid "" "where [N] - (same as backtrace) print trace of all or N innermost (outermost " "if N < 0) frames." msgstr "" -#: command.y:1013 debug.c:401 msg.c:135 +#: command.y:1016 debug.c:401 msg.c:135 #, c-format msgid "error: " msgstr "" -#: command.y:1053 +#: command.y:1060 #, c-format msgid "can't read command (%s)\n" msgstr "" -#: command.y:1067 +#: command.y:1074 #, c-format msgid "can't read command (%s)" msgstr "" -#: command.y:1118 +#: command.y:1125 msgid "invalid character in command" msgstr "" -#: command.y:1154 +#: command.y:1161 #, c-format msgid "unknown command - \"%.*s\", try help" msgstr "" -#: command.y:1224 +#: command.y:1231 #, c-format msgid "%s" msgstr "" -#: command.y:1286 +#: command.y:1293 msgid "invalid character" msgstr "" -#: command.y:1457 +#: command.y:1497 #, c-format msgid "undefined command: %s\n" msgstr "" @@ -1460,17 +1481,17 @@ msgstr "" msgid "`%s[\"%s\"]' is not an array\n" msgstr "" -#: debug.c:1236 debug.c:4964 +#: debug.c:1236 debug.c:5010 #, c-format msgid "`%s' is not a scalar variable" msgstr "" -#: debug.c:1258 debug.c:4994 +#: debug.c:1258 debug.c:5040 #, c-format msgid "attempt to use array `%s[\"%s\"]' in a scalar context" msgstr "" -#: debug.c:1280 debug.c:5005 +#: debug.c:1280 debug.c:5051 #, c-format msgid "attempt to use scalar `%s[\"%s\"]' as array" msgstr "" @@ -1743,99 +1764,99 @@ msgstr "" msgid "'until' not meaningful with non-local jump '%s'\n" msgstr "" -#: debug.c:4185 +#: debug.c:4231 msgid "\t------[Enter] to continue or q [Enter] to quit------" msgstr "" -#: debug.c:4186 +#: debug.c:4232 msgid "q" msgstr "" -#: debug.c:5001 +#: debug.c:5047 #, c-format msgid "[\"%s\"] not in array `%s'" msgstr "" -#: debug.c:5207 +#: debug.c:5253 #, c-format msgid "sending output to stdout\n" msgstr "" -#: debug.c:5247 +#: debug.c:5293 msgid "invalid number" msgstr "" -#: debug.c:5381 +#: debug.c:5427 #, c-format msgid "`%s' not allowed in current context; statement ignored" msgstr "" -#: debug.c:5389 +#: debug.c:5435 msgid "`return' not allowed in current context; statement ignored" msgstr "" -#: debug.c:5604 +#: debug.c:5650 #, c-format msgid "No symbol `%s' in current context" msgstr "" -#: dfa.c:1062 dfa.c:1065 dfa.c:1084 dfa.c:1094 dfa.c:1106 dfa.c:1142 -#: dfa.c:1151 dfa.c:1154 dfa.c:1159 dfa.c:1173 dfa.c:1221 +#: dfa.c:1090 dfa.c:1093 dfa.c:1112 dfa.c:1122 dfa.c:1135 dfa.c:1163 dfa.c:1172 +#: dfa.c:1175 dfa.c:1180 dfa.c:1202 dfa.c:1205 msgid "unbalanced [" msgstr "" -#: dfa.c:1118 +#: dfa.c:1148 msgid "invalid character class" msgstr "" -#: dfa.c:1264 +#: dfa.c:1271 msgid "character class syntax is [[:space:]], not [:space:]" msgstr "" -#: dfa.c:1326 +#: dfa.c:1332 msgid "unfinished \\ escape" msgstr "" -#: dfa.c:1473 +#: dfa.c:1499 msgid "invalid content of \\{\\}" msgstr "" -#: dfa.c:1476 +#: dfa.c:1502 msgid "regular expression too big" msgstr "" -#: dfa.c:1911 +#: dfa.c:1916 msgid "unbalanced (" msgstr "" -#: dfa.c:2037 +#: dfa.c:2044 msgid "no syntax specified" msgstr "" -#: dfa.c:2045 +#: dfa.c:2052 msgid "unbalanced )" msgstr "" -#: eval.c:396 +#: eval.c:398 #, c-format msgid "unknown nodetype %d" msgstr "" -#: eval.c:407 eval.c:421 +#: eval.c:409 eval.c:423 #, c-format msgid "unknown opcode %d" msgstr "" -#: eval.c:418 +#: eval.c:420 #, c-format msgid "opcode %s not an operator or keyword" msgstr "" -#: eval.c:474 +#: eval.c:476 msgid "buffer overflow in genflags2str" msgstr "" -#: eval.c:676 +#: eval.c:678 #, c-format msgid "" "\n" @@ -1843,290 +1864,284 @@ msgid "" "\n" msgstr "" -#: eval.c:705 +#: eval.c:707 msgid "`IGNORECASE' is a gawk extension" msgstr "" -#: eval.c:737 +#: eval.c:739 msgid "`BINMODE' is a gawk extension" msgstr "" -#: eval.c:795 +#: eval.c:797 #, c-format msgid "BINMODE value `%s' is invalid, treated as 3" msgstr "" -#: eval.c:912 +#: eval.c:914 #, c-format msgid "bad `%sFMT' specification `%s'" msgstr "" -#: eval.c:996 +#: eval.c:988 msgid "turning off `--lint' due to assignment to `LINT'" msgstr "" -#: eval.c:1174 +#: eval.c:1166 #, c-format msgid "reference to uninitialized argument `%s'" msgstr "" -#: eval.c:1175 +#: eval.c:1167 #, c-format msgid "reference to uninitialized variable `%s'" msgstr "" -#: eval.c:1193 +#: eval.c:1185 msgid "attempt to field reference from non-numeric value" msgstr "" -#: eval.c:1195 +#: eval.c:1187 msgid "attempt to field reference from null string" msgstr "" -#: eval.c:1203 +#: eval.c:1195 #, c-format msgid "attempt to access field %ld" msgstr "" -#: eval.c:1212 +#: eval.c:1204 #, c-format msgid "reference to uninitialized field `$%ld'" msgstr "" -#: eval.c:1299 +#: eval.c:1291 #, c-format msgid "function `%s' called with more arguments than declared" msgstr "" -#: eval.c:1506 +#: eval.c:1498 #, c-format msgid "unwind_stack: unexpected type `%s'" msgstr "" -#: eval.c:1602 +#: eval.c:1594 msgid "division by zero attempted in `/='" msgstr "" -#: eval.c:1609 +#: eval.c:1601 #, c-format msgid "division by zero attempted in `%%='" msgstr "" -#: ext.c:65 ext.c:147 +#: ext.c:66 ext.c:148 msgid "extensions are not allowed in sandbox mode" msgstr "" -#: ext.c:68 +#: ext.c:69 msgid "-l / @load are gawk extensions" msgstr "" -#: ext.c:71 +#: ext.c:72 msgid "load_ext: received NULL lib_name" msgstr "" -#: ext.c:74 +#: ext.c:75 #, c-format msgid "load_ext: cannot open library `%s' (%s)\n" msgstr "" -#: ext.c:80 +#: ext.c:81 #, c-format msgid "" "load_ext: library `%s': does not define `plugin_is_GPL_compatible' (%s)\n" msgstr "" -#: ext.c:86 +#: ext.c:87 #, c-format msgid "load_ext: library `%s': cannot call function `%s' (%s)\n" msgstr "" -#: ext.c:90 +#: ext.c:91 #, c-format msgid "load_ext: library `%s' initialization routine `%s' failed\n" msgstr "" -#: ext.c:150 +#: ext.c:151 msgid "`extension' is a gawk extension" msgstr "" -#: ext.c:153 +#: ext.c:154 msgid "extension: received NULL lib_name" msgstr "" -#: ext.c:156 +#: ext.c:157 #, c-format msgid "extension: cannot open library `%s' (%s)" msgstr "" -#: ext.c:162 +#: ext.c:163 #, c-format msgid "" "extension: library `%s': does not define `plugin_is_GPL_compatible' (%s)" msgstr "" -#: ext.c:166 +#: ext.c:167 #, c-format msgid "extension: library `%s': cannot call function `%s' (%s)" msgstr "" -#: ext.c:197 +#: ext.c:198 msgid "make_builtin: missing function name" msgstr "" -#: ext.c:212 +#: ext.c:213 #, c-format msgid "make_builtin: can't redefine function `%s'" msgstr "" -#: ext.c:216 +#: ext.c:217 #, c-format msgid "make_builtin: function `%s' already defined" msgstr "" -#: ext.c:220 +#: ext.c:221 #, c-format msgid "make_builtin: function name `%s' previously defined" msgstr "" -#: ext.c:222 +#: ext.c:223 #, c-format msgid "make_builtin: can't use gawk built-in `%s' as function name" msgstr "" -#: ext.c:225 ext.c:280 +#: ext.c:226 ext.c:281 #, c-format msgid "make_builtin: negative argument count for function `%s'" msgstr "" -#: ext.c:252 +#: ext.c:253 msgid "extension: missing function name" msgstr "" -#: ext.c:255 ext.c:259 +#: ext.c:256 ext.c:260 #, c-format msgid "extension: illegal character `%c' in function name `%s'" msgstr "" -#: ext.c:267 +#: ext.c:268 #, c-format msgid "extension: can't redefine function `%s'" msgstr "" -#: ext.c:271 +#: ext.c:272 #, c-format msgid "extension: function `%s' already defined" msgstr "" -#: ext.c:275 +#: ext.c:276 #, c-format msgid "extension: function name `%s' previously defined" msgstr "" -#: ext.c:277 +#: ext.c:278 #, c-format msgid "extension: can't use gawk built-in `%s' as function name" msgstr "" -#: ext.c:351 -#, c-format -msgid "function `%s' defined to take no more than %d argument(s)" -msgstr "" - -#: ext.c:354 -#, c-format -msgid "function `%s': missing argument #%d" -msgstr "" - -#: ext.c:371 +#: ext.c:358 #, c-format msgid "function `%s': argument #%d: attempt to use scalar as an array" msgstr "" -#: ext.c:375 +#: ext.c:362 #, c-format msgid "function `%s': argument #%d: attempt to use array as a scalar" msgstr "" -#: ext.c:389 +#: ext.c:376 msgid "dynamic loading of library not supported" msgstr "" -#: extension/filefuncs.c:159 +#: extension/filefuncs.c:164 msgid "chdir: called with incorrect number of arguments, expecting 1" msgstr "" -#: extension/filefuncs.c:439 +#: extension/filefuncs.c:444 #, c-format msgid "stat: unable to read symbolic link `%s'" msgstr "" -#: extension/filefuncs.c:472 +#: extension/filefuncs.c:477 msgid "stat: called with wrong number of arguments" msgstr "" -#: extension/filefuncs.c:479 +#: extension/filefuncs.c:484 extension/filefuncs.c:534 msgid "stat: bad parameters" msgstr "" -#: extension/filefuncs.c:533 +#: extension/filefuncs.c:527 +msgid "statvfs: called with wrong number of arguments" +msgstr "" + +#: extension/filefuncs.c:598 #, c-format msgid "fts init: could not create variable %s" msgstr "" -#: extension/filefuncs.c:554 +#: extension/filefuncs.c:619 msgid "fts is not supported on this system" msgstr "" -#: extension/filefuncs.c:573 +#: extension/filefuncs.c:638 msgid "fill_stat_element: could not create array" msgstr "" -#: extension/filefuncs.c:582 +#: extension/filefuncs.c:647 msgid "fill_stat_element: could not set element" msgstr "" -#: extension/filefuncs.c:597 +#: extension/filefuncs.c:662 msgid "fill_path_element: could not set element" msgstr "" -#: extension/filefuncs.c:613 +#: extension/filefuncs.c:678 msgid "fill_error_element: could not set element" msgstr "" -#: extension/filefuncs.c:660 extension/filefuncs.c:707 +#: extension/filefuncs.c:725 extension/filefuncs.c:772 msgid "fts-process: could not create array" msgstr "" -#: extension/filefuncs.c:670 extension/filefuncs.c:717 -#: extension/filefuncs.c:735 +#: extension/filefuncs.c:735 extension/filefuncs.c:782 +#: extension/filefuncs.c:800 msgid "fts-process: could not set element" msgstr "" -#: extension/filefuncs.c:784 +#: extension/filefuncs.c:849 msgid "fts: called with incorrect number of arguments, expecting 3" msgstr "" -#: extension/filefuncs.c:787 +#: extension/filefuncs.c:852 msgid "fts: bad first parameter" msgstr "" -#: extension/filefuncs.c:793 +#: extension/filefuncs.c:858 msgid "fts: bad second parameter" msgstr "" -#: extension/filefuncs.c:799 +#: extension/filefuncs.c:864 msgid "fts: bad third parameter" msgstr "" -#: extension/filefuncs.c:806 +#: extension/filefuncs.c:871 msgid "fts: could not flatten array\n" msgstr "" -#: extension/filefuncs.c:824 +#: extension/filefuncs.c:889 msgid "fts: ignoring sneaky FTS_NOSTAT flag. nyah, nyah, nyah." msgstr "" -#: extension/filefuncs.c:841 +#: extension/filefuncs.c:906 msgid "fts: clear_array() failed\n" msgstr "" @@ -2187,88 +2202,88 @@ msgstr "" msgid "wait: called with too many arguments" msgstr "" -#: extension/inplace.c:130 +#: extension/inplace.c:131 msgid "inplace_begin: in-place editing already active" msgstr "" -#: extension/inplace.c:133 extension/inplace.c:210 +#: extension/inplace.c:134 extension/inplace.c:211 #, c-format msgid "inplace_begin: expects 2 arguments but called with %d" msgstr "" -#: extension/inplace.c:136 +#: extension/inplace.c:137 msgid "inplace_begin: cannot retrieve 1st argument as a string filename" msgstr "" -#: extension/inplace.c:144 +#: extension/inplace.c:145 #, c-format msgid "inplace_begin: disabling in-place editing for invalid FILENAME `%s'" msgstr "" -#: extension/inplace.c:151 +#: extension/inplace.c:152 #, c-format msgid "inplace_begin: Cannot stat `%s' (%s)" msgstr "" -#: extension/inplace.c:158 +#: extension/inplace.c:159 #, c-format msgid "inplace_begin: `%s' is not a regular file" msgstr "" -#: extension/inplace.c:169 +#: extension/inplace.c:170 #, c-format msgid "inplace_begin: mkstemp(`%s') failed (%s)" msgstr "" -#: extension/inplace.c:181 +#: extension/inplace.c:182 #, c-format msgid "inplace_begin: chmod failed (%s)" msgstr "" -#: extension/inplace.c:188 +#: extension/inplace.c:189 #, c-format msgid "inplace_begin: dup(stdout) failed (%s)" msgstr "" -#: extension/inplace.c:191 +#: extension/inplace.c:192 #, c-format msgid "inplace_begin: dup2(%d, stdout) failed (%s)" msgstr "" -#: extension/inplace.c:194 +#: extension/inplace.c:195 #, c-format msgid "inplace_begin: close(%d) failed (%s)" msgstr "" -#: extension/inplace.c:213 +#: extension/inplace.c:214 msgid "inplace_end: cannot retrieve 1st argument as a string filename" msgstr "" -#: extension/inplace.c:220 +#: extension/inplace.c:221 msgid "inplace_end: in-place editing not active" msgstr "" -#: extension/inplace.c:226 +#: extension/inplace.c:227 #, c-format msgid "inplace_end: dup2(%d, stdout) failed (%s)" msgstr "" -#: extension/inplace.c:229 +#: extension/inplace.c:230 #, c-format msgid "inplace_end: close(%d) failed (%s)" msgstr "" -#: extension/inplace.c:233 +#: extension/inplace.c:234 #, c-format msgid "inplace_end: fsetpos(stdout) failed (%s)" msgstr "" -#: extension/inplace.c:246 +#: extension/inplace.c:247 #, c-format msgid "inplace_end: link(`%s', `%s') failed (%s)" msgstr "" -#: extension/inplace.c:256 +#: extension/inplace.c:257 #, c-format msgid "inplace_end: rename(`%s', `%s') failed (%s)" msgstr "" @@ -2297,7 +2312,7 @@ msgstr "" msgid "chr: called with inappropriate argument(s)" msgstr "" -#: extension/readdir.c:281 +#: extension/readdir.c:271 #, c-format msgid "dir_take_control_of: opendir/fdopendir failed: %s" msgstr "" @@ -2310,54 +2325,54 @@ msgstr "" msgid "readfile: called with no arguments" msgstr "" -#: extension/revoutput.c:125 +#: extension/revoutput.c:127 msgid "revoutput: could not initialize REVOUT variable" msgstr "" -#: extension/rwarray.c:124 extension/rwarray0.c:109 +#: extension/rwarray.c:113 extension/rwarray0.c:109 msgid "writea: called with too many arguments" msgstr "" -#: extension/rwarray.c:131 extension/rwarray0.c:116 +#: extension/rwarray.c:120 extension/rwarray0.c:116 #, c-format msgid "do_writea: argument 0 is not a string\n" msgstr "" -#: extension/rwarray.c:137 extension/rwarray0.c:122 +#: extension/rwarray.c:126 extension/rwarray0.c:122 #, c-format msgid "do_writea: argument 1 is not an array\n" msgstr "" -#: extension/rwarray.c:184 extension/rwarray0.c:169 +#: extension/rwarray.c:173 extension/rwarray0.c:169 #, c-format msgid "write_array: could not flatten array\n" msgstr "" -#: extension/rwarray.c:198 extension/rwarray0.c:183 +#: extension/rwarray.c:187 extension/rwarray0.c:183 #, c-format msgid "write_array: could not release flattened array\n" msgstr "" -#: extension/rwarray.c:280 extension/rwarray0.c:265 +#: extension/rwarray.c:269 extension/rwarray0.c:265 msgid "reada: called with too many arguments" msgstr "" -#: extension/rwarray.c:287 extension/rwarray0.c:272 +#: extension/rwarray.c:276 extension/rwarray0.c:272 #, c-format msgid "do_reada: argument 0 is not a string\n" msgstr "" -#: extension/rwarray.c:293 extension/rwarray0.c:278 +#: extension/rwarray.c:282 extension/rwarray0.c:278 #, c-format msgid "do_reada: argument 1 is not an array\n" msgstr "" -#: extension/rwarray.c:337 extension/rwarray0.c:322 +#: extension/rwarray.c:326 extension/rwarray0.c:322 #, c-format msgid "do_reada: clear_array failed\n" msgstr "" -#: extension/rwarray.c:374 extension/rwarray0.c:358 +#: extension/rwarray.c:363 extension/rwarray0.c:358 #, c-format msgid "read_array: set_array_element failed\n" msgstr "" @@ -2459,7 +2474,7 @@ msgstr "" msgid "old awk does not support regexps as value of `FS'" msgstr "" -#: field.c:1380 +#: field.c:1384 msgid "`FPAT' is a gawk extension" msgstr "" @@ -2467,28 +2482,28 @@ msgstr "" msgid "awk_value_to_node: received null retval" msgstr "" -#: gawkapi.c:384 +#: gawkapi.c:383 msgid "node_to_awk_value: received null node" msgstr "" -#: gawkapi.c:387 +#: gawkapi.c:386 msgid "node_to_awk_value: received null val" msgstr "" -#: gawkapi.c:809 +#: gawkapi.c:808 msgid "remove_element: received null array" msgstr "" -#: gawkapi.c:812 +#: gawkapi.c:811 msgid "remove_element: received null subscript" msgstr "" -#: gawkapi.c:949 +#: gawkapi.c:948 #, c-format msgid "api_flatten_array: could not convert index %d\n" msgstr "" -#: gawkapi.c:954 +#: gawkapi.c:953 #, c-format msgid "api_flatten_array: could not convert value %d\n" msgstr "" @@ -2548,472 +2563,479 @@ msgstr "" msgid "%s: option '-W %s' requires an argument\n" msgstr "" -#: io.c:423 +#: io.c:426 #, c-format msgid "command line argument `%s' is a directory: skipped" msgstr "" -#: io.c:426 io.c:544 +#: io.c:429 io.c:547 #, c-format msgid "cannot open file `%s' for reading (%s)" msgstr "" -#: io.c:671 +#: io.c:674 #, c-format msgid "close of fd %d (`%s') failed (%s)" msgstr "" -#: io.c:749 +#: io.c:752 msgid "redirection not allowed in sandbox mode" msgstr "" -#: io.c:783 +#: io.c:786 #, c-format msgid "expression in `%s' redirection only has numeric value" msgstr "" -#: io.c:789 +#: io.c:792 #, c-format msgid "expression for `%s' redirection has null string value" msgstr "" -#: io.c:794 +#: io.c:797 #, c-format msgid "filename `%s' for `%s' redirection may be result of logical expression" msgstr "" -#: io.c:842 +#: io.c:845 #, c-format msgid "unnecessary mixing of `>' and `>>' for file `%.*s'" msgstr "" -#: io.c:896 +#: io.c:902 #, c-format msgid "can't open pipe `%s' for output (%s)" msgstr "" -#: io.c:906 +#: io.c:915 #, c-format msgid "can't open pipe `%s' for input (%s)" msgstr "" -#: io.c:937 +#: io.c:946 #, c-format msgid "can't open two way pipe `%s' for input/output (%s)" msgstr "" -#: io.c:1019 +#: io.c:1030 #, c-format msgid "can't redirect from `%s' (%s)" msgstr "" -#: io.c:1022 +#: io.c:1033 #, c-format msgid "can't redirect to `%s' (%s)" msgstr "" -#: io.c:1073 +#: io.c:1084 msgid "" "reached system limit for open files: starting to multiplex file descriptors" msgstr "" -#: io.c:1089 +#: io.c:1100 #, c-format msgid "close of `%s' failed (%s)." msgstr "" -#: io.c:1097 +#: io.c:1108 msgid "too many pipes or input files open" msgstr "" -#: io.c:1119 +#: io.c:1130 msgid "close: second argument must be `to' or `from'" msgstr "" -#: io.c:1136 +#: io.c:1147 #, c-format msgid "close: `%.*s' is not an open file, pipe or co-process" msgstr "" -#: io.c:1141 +#: io.c:1152 msgid "close of redirection that was never opened" msgstr "" -#: io.c:1238 +#: io.c:1249 #, c-format msgid "close: redirection `%s' not opened with `|&', second argument ignored" msgstr "" -#: io.c:1255 +#: io.c:1266 #, c-format msgid "failure status (%d) on pipe close of `%s' (%s)" msgstr "" -#: io.c:1258 +#: io.c:1269 #, c-format msgid "failure status (%d) on file close of `%s' (%s)" msgstr "" -#: io.c:1278 +#: io.c:1289 #, c-format msgid "no explicit close of socket `%s' provided" msgstr "" -#: io.c:1281 +#: io.c:1292 #, c-format msgid "no explicit close of co-process `%s' provided" msgstr "" -#: io.c:1284 +#: io.c:1295 #, c-format msgid "no explicit close of pipe `%s' provided" msgstr "" -#: io.c:1287 +#: io.c:1298 #, c-format msgid "no explicit close of file `%s' provided" msgstr "" -#: io.c:1317 io.c:1375 main.c:632 main.c:674 +#: io.c:1328 io.c:1387 main.c:645 main.c:687 #, c-format msgid "error writing standard output (%s)" msgstr "" -#: io.c:1322 io.c:1381 main.c:634 +#: io.c:1333 io.c:1393 main.c:647 #, c-format msgid "error writing standard error (%s)" msgstr "" -#: io.c:1330 +#: io.c:1341 #, c-format msgid "pipe flush of `%s' failed (%s)." msgstr "" -#: io.c:1333 +#: io.c:1344 #, c-format msgid "co-process flush of pipe to `%s' failed (%s)." msgstr "" -#: io.c:1336 +#: io.c:1347 #, c-format msgid "file flush of `%s' failed (%s)." msgstr "" -#: io.c:1453 +#: io.c:1465 #, c-format msgid "local port %s invalid in `/inet'" msgstr "" -#: io.c:1471 +#: io.c:1483 #, c-format msgid "remote host and port information (%s, %s) invalid" msgstr "" -#: io.c:1699 +#: io.c:1711 msgid "TCP/IP communications are not supported" msgstr "" -#: io.c:1880 +#: io.c:1905 #, c-format msgid "could not open `%s', mode `%s'" msgstr "" -#: io.c:1930 +#: io.c:1961 #, c-format msgid "close of master pty failed (%s)" msgstr "" -#: io.c:1932 io.c:2118 io.c:2319 +#: io.c:1963 io.c:2141 io.c:2342 #, c-format msgid "close of stdout in child failed (%s)" msgstr "" -#: io.c:1935 +#: io.c:1966 #, c-format msgid "moving slave pty to stdout in child failed (dup: %s)" msgstr "" -#: io.c:1937 io.c:2123 +#: io.c:1968 io.c:2146 #, c-format msgid "close of stdin in child failed (%s)" msgstr "" -#: io.c:1940 +#: io.c:1971 #, c-format msgid "moving slave pty to stdin in child failed (dup: %s)" msgstr "" -#: io.c:1942 io.c:1964 +#: io.c:1973 #, c-format msgid "close of slave pty failed (%s)" msgstr "" -#: io.c:2053 io.c:2121 io.c:2290 io.c:2322 +#: io.c:2076 io.c:2144 io.c:2313 io.c:2345 #, c-format msgid "moving pipe to stdout in child failed (dup: %s)" msgstr "" -#: io.c:2060 io.c:2126 +#: io.c:2083 io.c:2149 #, c-format msgid "moving pipe to stdin in child failed (dup: %s)" msgstr "" -#: io.c:2086 io.c:2312 +#: io.c:2109 io.c:2335 msgid "restoring stdout in parent process failed\n" msgstr "" -#: io.c:2094 +#: io.c:2117 msgid "restoring stdin in parent process failed\n" msgstr "" -#: io.c:2129 io.c:2324 io.c:2339 +#: io.c:2152 io.c:2347 io.c:2362 #, c-format msgid "close of pipe failed (%s)" msgstr "" -#: io.c:2188 +#: io.c:2211 msgid "`|&' not supported" msgstr "" -#: io.c:2275 +#: io.c:2298 #, c-format msgid "cannot open pipe `%s' (%s)" msgstr "" -#: io.c:2333 +#: io.c:2356 #, c-format msgid "cannot create child process for `%s' (fork: %s)" msgstr "" -#: io.c:2760 +#: io.c:2493 +msgid "getline: attempt to read from closed read end of two-way pipe" +msgstr "" + +#: io.c:2795 msgid "register_input_parser: received NULL pointer" msgstr "" -#: io.c:2788 +#: io.c:2823 #, c-format msgid "input parser `%s' conflicts with previously installed input parser `%s'" msgstr "" -#: io.c:2795 +#: io.c:2830 #, c-format msgid "input parser `%s' failed to open `%s'" msgstr "" -#: io.c:2815 +#: io.c:2850 msgid "register_output_wrapper: received NULL pointer" msgstr "" -#: io.c:2843 +#: io.c:2878 #, c-format msgid "" "output wrapper `%s' conflicts with previously installed output wrapper `%s'" msgstr "" -#: io.c:2850 +#: io.c:2885 #, c-format msgid "output wrapper `%s' failed to open `%s'" msgstr "" -#: io.c:2871 +#: io.c:2906 msgid "register_output_processor: received NULL pointer" msgstr "" -#: io.c:2900 +#: io.c:2935 #, c-format msgid "" "two-way processor `%s' conflicts with previously installed two-way processor " "`%s'" msgstr "" -#: io.c:2909 +#: io.c:2944 #, c-format msgid "two way processor `%s' failed to open `%s'" msgstr "" -#: io.c:3034 +#: io.c:3069 #, c-format msgid "data file `%s' is empty" msgstr "" -#: io.c:3076 io.c:3084 +#: io.c:3111 io.c:3119 msgid "could not allocate more input memory" msgstr "" -#: io.c:3662 +#: io.c:3697 msgid "multicharacter value of `RS' is a gawk extension" msgstr "" -#: io.c:3809 +#: io.c:3844 msgid "IPv6 communication is not supported" msgstr "" -#: main.c:321 +#: main.c:334 msgid "environment variable `POSIXLY_CORRECT' set: turning on `--posix'" msgstr "" -#: main.c:327 +#: main.c:340 msgid "`--posix' overrides `--traditional'" msgstr "" -#: main.c:338 +#: main.c:351 msgid "`--posix'/`--traditional' overrides `--non-decimal-data'" msgstr "" -#: main.c:342 +#: main.c:355 #, c-format msgid "running %s setuid root may be a security problem" msgstr "" -#: main.c:346 +#: main.c:359 msgid "`--posix' overrides `--characters-as-bytes'" msgstr "" -#: main.c:404 +#: main.c:417 #, c-format msgid "can't set binary mode on stdin (%s)" msgstr "" -#: main.c:407 +#: main.c:420 #, c-format msgid "can't set binary mode on stdout (%s)" msgstr "" -#: main.c:409 +#: main.c:422 #, c-format msgid "can't set binary mode on stderr (%s)" msgstr "" -#: main.c:469 +#: main.c:482 msgid "no program text at all!" msgstr "" -#: main.c:563 +#: main.c:576 #, c-format msgid "Usage: %s [POSIX or GNU style options] -f progfile [--] file ...\n" msgstr "" -#: main.c:565 +#: main.c:578 #, c-format msgid "Usage: %s [POSIX or GNU style options] [--] %cprogram%c file ...\n" msgstr "" -#: main.c:570 +#: main.c:583 msgid "POSIX options:\t\tGNU long options: (standard)\n" msgstr "" -#: main.c:571 +#: main.c:584 msgid "\t-f progfile\t\t--file=progfile\n" msgstr "" -#: main.c:572 +#: main.c:585 msgid "\t-F fs\t\t\t--field-separator=fs\n" msgstr "" -#: main.c:573 +#: main.c:586 msgid "\t-v var=val\t\t--assign=var=val\n" msgstr "" -#: main.c:574 +#: main.c:587 msgid "Short options:\t\tGNU long options: (extensions)\n" msgstr "" -#: main.c:575 +#: main.c:588 msgid "\t-b\t\t\t--characters-as-bytes\n" msgstr "" -#: main.c:576 +#: main.c:589 msgid "\t-c\t\t\t--traditional\n" msgstr "" -#: main.c:577 +#: main.c:590 msgid "\t-C\t\t\t--copyright\n" msgstr "" -#: main.c:578 +#: main.c:591 msgid "\t-d[file]\t\t--dump-variables[=file]\n" msgstr "" -#: main.c:579 +#: main.c:592 msgid "\t-D[file]\t\t--debug[=file]\n" msgstr "" -#: main.c:580 +#: main.c:593 msgid "\t-e 'program-text'\t--source='program-text'\n" msgstr "" -#: main.c:581 +#: main.c:594 msgid "\t-E file\t\t\t--exec=file\n" msgstr "" -#: main.c:582 +#: main.c:595 msgid "\t-g\t\t\t--gen-pot\n" msgstr "" -#: main.c:583 +#: main.c:596 msgid "\t-h\t\t\t--help\n" msgstr "" -#: main.c:584 +#: main.c:597 msgid "\t-i includefile\t\t--include=includefile\n" msgstr "" -#: main.c:585 +#: main.c:598 msgid "\t-l library\t\t--load=library\n" msgstr "" -#: main.c:590 +#. TRANSLATORS: the "fatal" and "invalid" here are literal +#. values, they should not be translated. Thanks. +#. +#: main.c:603 msgid "\t-L[fatal|invalid]\t--lint[=fatal|invalid]\n" msgstr "" -#: main.c:591 +#: main.c:604 msgid "\t-M\t\t\t--bignum\n" msgstr "" -#: main.c:592 +#: main.c:605 msgid "\t-N\t\t\t--use-lc-numeric\n" msgstr "" -#: main.c:593 +#: main.c:606 msgid "\t-n\t\t\t--non-decimal-data\n" msgstr "" -#: main.c:594 +#: main.c:607 msgid "\t-o[file]\t\t--pretty-print[=file]\n" msgstr "" -#: main.c:595 +#: main.c:608 msgid "\t-O\t\t\t--optimize\n" msgstr "" -#: main.c:596 +#: main.c:609 msgid "\t-p[file]\t\t--profile[=file]\n" msgstr "" -#: main.c:597 +#: main.c:610 msgid "\t-P\t\t\t--posix\n" msgstr "" -#: main.c:598 +#: main.c:611 msgid "\t-r\t\t\t--re-interval\n" msgstr "" -#: main.c:599 +#: main.c:612 msgid "\t-S\t\t\t--sandbox\n" msgstr "" -#: main.c:600 +#: main.c:613 msgid "\t-t\t\t\t--lint-old\n" msgstr "" -#: main.c:601 +#: main.c:614 msgid "\t-V\t\t\t--version\n" msgstr "" -#: main.c:603 +#: main.c:616 msgid "\t-W nostalgia\t\t--nostalgia\n" msgstr "" -#: main.c:606 +#: main.c:619 msgid "\t-Y\t\t--parsedebug\n" msgstr "" @@ -3022,7 +3044,7 @@ msgstr "" #. for this application. Please add _another line_ with the #. address for translation bugs. #. no-wrap -#: main.c:615 +#: main.c:628 msgid "" "\n" "To report bugs, see node `Bugs' in `gawk.info', which is\n" @@ -3030,21 +3052,21 @@ msgid "" "\n" msgstr "" -#: main.c:619 +#: main.c:632 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:623 +#: main.c:636 msgid "" "Examples:\n" "\tgawk '{ sum += $1 }; END { print sum }' file\n" "\tgawk -F: '{ print $1 }' /etc/passwd\n" msgstr "" -#: main.c:648 +#: main.c:661 #, c-format msgid "" "Copyright (C) 1989, 1991-%d Free Software Foundation.\n" @@ -3056,7 +3078,7 @@ msgid "" "\n" msgstr "" -#: main.c:656 +#: main.c:669 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" @@ -3065,138 +3087,138 @@ msgid "" "\n" msgstr "" -#: main.c:662 +#: main.c:675 msgid "" "You should have received a copy of the GNU General Public License\n" "along with this program. If not, see http://www.gnu.org/licenses/.\n" msgstr "" -#: main.c:699 +#: main.c:712 msgid "-Ft does not set FS to tab in POSIX awk" msgstr "" -#: main.c:986 +#: main.c:999 #, c-format msgid "unknown value for field spec: %d\n" msgstr "" -#: main.c:1084 +#: main.c:1097 #, c-format msgid "" "%s: `%s' argument to `-v' not in `var=value' form\n" "\n" msgstr "" -#: main.c:1110 +#: main.c:1123 #, c-format msgid "`%s' is not a legal variable name" msgstr "" -#: main.c:1113 +#: main.c:1126 #, c-format msgid "`%s' is not a variable name, looking for file `%s=%s'" msgstr "" -#: main.c:1117 +#: main.c:1130 #, c-format msgid "cannot use gawk builtin `%s' as variable name" msgstr "" -#: main.c:1122 +#: main.c:1135 #, c-format msgid "cannot use function `%s' as variable name" msgstr "" -#: main.c:1175 +#: main.c:1190 msgid "floating point exception" msgstr "" -#: main.c:1182 +#: main.c:1197 msgid "fatal error: internal error" msgstr "" -#: main.c:1197 +#: main.c:1212 msgid "fatal error: internal error: segfault" msgstr "" -#: main.c:1209 +#: main.c:1224 msgid "fatal error: internal error: stack overflow" msgstr "" -#: main.c:1268 +#: main.c:1283 #, c-format msgid "no pre-opened fd %d" msgstr "" -#: main.c:1275 +#: main.c:1290 #, c-format msgid "could not pre-open /dev/null for fd %d" msgstr "" -#: main.c:1489 +#: main.c:1504 msgid "empty argument to `-e/--source' ignored" msgstr "" -#: main.c:1560 +#: main.c:1575 msgid "-M ignored: MPFR/GMP support not compiled in" msgstr "" -#: main.c:1581 +#: main.c:1596 #, c-format msgid "%s: option `-W %s' unrecognized, ignored\n" msgstr "" -#: main.c:1634 +#: main.c:1649 #, c-format msgid "%s: option requires an argument -- %c\n" msgstr "" -#: mpfr.c:557 +#: mpfr.c:559 #, c-format msgid "PREC value `%.*s' is invalid" msgstr "" -#: mpfr.c:615 +#: mpfr.c:617 #, c-format msgid "RNDMODE value `%.*s' is invalid" msgstr "" -#: mpfr.c:711 +#: mpfr.c:714 #, c-format msgid "%s: received non-numeric argument" msgstr "" -#: mpfr.c:820 +#: mpfr.c:824 msgid "compl(%Rg): negative value will give strange results" msgstr "" -#: mpfr.c:824 +#: mpfr.c:828 msgid "comp(%Rg): fractional value will be truncated" msgstr "" -#: mpfr.c:836 +#: mpfr.c:840 #, c-format msgid "cmpl(%Zd): negative values will give strange results" msgstr "" -#: mpfr.c:855 +#: mpfr.c:859 #, c-format msgid "%s: received non-numeric argument #%d" msgstr "" -#: mpfr.c:865 +#: mpfr.c:869 msgid "%s: argument #%d has invalid value %Rg, using 0" msgstr "" -#: mpfr.c:877 +#: mpfr.c:881 msgid "%s: argument #%d negative value %Rg will give strange results" msgstr "" -#: mpfr.c:883 +#: mpfr.c:887 msgid "%s: argument #%d fractional value %Rg will be truncated" msgstr "" -#: mpfr.c:898 +#: mpfr.c:902 #, c-format msgid "%s: argument #%d negative value %Zd will give strange results" msgstr "" @@ -3206,36 +3228,36 @@ msgstr "" msgid "cmd. line:" msgstr "" -#: node.c:418 +#: node.c:434 msgid "backslash at end of string" msgstr "" -#: node.c:497 +#: node.c:513 #, c-format msgid "old awk does not support the `\\%c' escape sequence" msgstr "" -#: node.c:548 +#: node.c:564 msgid "POSIX does not allow `\\x' escapes" msgstr "" -#: node.c:554 +#: node.c:570 msgid "no hex digits in `\\x' escape sequence" msgstr "" -#: node.c:576 +#: node.c:592 #, c-format msgid "" "hex escape \\x%.*s of %d characters probably not interpreted the way you " "expect" msgstr "" -#: node.c:591 +#: node.c:607 #, c-format msgid "escape sequence `\\%c' treated as plain `%c'" msgstr "" -#: node.c:735 +#: node.c:744 msgid "" "Invalid multibyte data detected. There may be a mismatch between your data " "and your locale." @@ -3251,144 +3273,144 @@ msgstr "" msgid "%s %s `%s': could not set close-on-exec: (fcntl F_SETFD: %s)" msgstr "" -#: profile.c:91 +#: profile.c:94 #, c-format msgid "could not open `%s' for writing: %s" msgstr "" -#: profile.c:93 +#: profile.c:96 msgid "sending profile to standard error" msgstr "" -#: profile.c:213 +#: profile.c:216 #, c-format msgid "" "\t# %s rule(s)\n" "\n" msgstr "" -#: profile.c:218 +#: profile.c:221 #, c-format msgid "" "\t# Rule(s)\n" "\n" msgstr "" -#: profile.c:292 +#: profile.c:295 #, c-format msgid "internal error: %s with null vname" msgstr "" -#: profile.c:558 +#: profile.c:561 msgid "internal error: builtin with null fname" msgstr "" -#: profile.c:978 +#: profile.c:1006 #, c-format msgid "" "\t# Loaded extensions (-l and/or @load)\n" "\n" msgstr "" -#: profile.c:1001 +#: profile.c:1029 #, c-format msgid "\t# gawk profile, created %s\n" msgstr "" -#: profile.c:1555 +#: profile.c:1600 #, c-format msgid "" "\n" "\t# Functions, listed alphabetically\n" msgstr "" -#: profile.c:1593 +#: profile.c:1638 #, c-format msgid "redir2str: unknown redirection type %d" msgstr "" -#: re.c:607 +#: re.c:610 #, c-format msgid "regexp component `%.*s' should probably be `[%.*s]'" msgstr "" -#: regcomp.c:139 +#: regcomp.c:143 msgid "Success" msgstr "" -#: regcomp.c:142 +#: regcomp.c:146 msgid "No match" msgstr "" -#: regcomp.c:145 +#: regcomp.c:149 msgid "Invalid regular expression" msgstr "" -#: regcomp.c:148 +#: regcomp.c:152 msgid "Invalid collation character" msgstr "" -#: regcomp.c:151 +#: regcomp.c:155 msgid "Invalid character class name" msgstr "" -#: regcomp.c:154 +#: regcomp.c:158 msgid "Trailing backslash" msgstr "" -#: regcomp.c:157 +#: regcomp.c:161 msgid "Invalid back reference" msgstr "" -#: regcomp.c:160 +#: regcomp.c:164 msgid "Unmatched [, [^, [:, [., or [=" msgstr "" -#: regcomp.c:163 +#: regcomp.c:167 msgid "Unmatched ( or \\(" msgstr "" -#: regcomp.c:166 +#: regcomp.c:170 msgid "Unmatched \\{" msgstr "" -#: regcomp.c:169 +#: regcomp.c:173 msgid "Invalid content of \\{\\}" msgstr "" -#: regcomp.c:172 +#: regcomp.c:176 msgid "Invalid range end" msgstr "" -#: regcomp.c:175 +#: regcomp.c:179 msgid "Memory exhausted" msgstr "" -#: regcomp.c:178 +#: regcomp.c:182 msgid "Invalid preceding regular expression" msgstr "" -#: regcomp.c:181 +#: regcomp.c:185 msgid "Premature end of regular expression" msgstr "" -#: regcomp.c:184 +#: regcomp.c:188 msgid "Regular expression too big" msgstr "" -#: regcomp.c:187 +#: regcomp.c:191 msgid "Unmatched ) or \\)" msgstr "" -#: regcomp.c:712 +#: regcomp.c:701 msgid "No previous regular expression" msgstr "" -#: symbol.c:678 +#: symbol.c:684 #, c-format msgid "function `%s': can't use function `%s' as a parameter name" msgstr "" -#: symbol.c:810 +#: symbol.c:816 msgid "can not pop main context" msgstr "" diff --git a/po/nl.po b/po/nl.po index 3034aa3..4c2ea42 100644 --- a/po/nl.po +++ b/po/nl.po @@ -1,17 +1,17 @@ # Dutch translations for GNU gawk. -# Copyright (C) 2015 Free Software Foundation, Inc. +# Copyright (C) 2016 Free Software Foundation, Inc. # This file is distributed under the same license as the gawk package. # # “Flierefluiten!!†# # Erwin Poeze , 2009. -# Benno Schulenberg , 2005, 2007, 2010, 2011, 2012, 2013, 2014, 2015. +# Benno Schulenberg , 2005, 2007, 2010, 2011, 2012, 2013, 2014, 2015, 2016. msgid "" msgstr "" -"Project-Id-Version: gawk 4.1.1d\n" +"Project-Id-Version: gawk 4.1.3h\n" "Report-Msgid-Bugs-To: bug-gawk@gnu.org\n" -"POT-Creation-Date: 2015-05-19 16:06+0300\n" -"PO-Revision-Date: 2015-04-17 11:01+0200\n" +"POT-Creation-Date: 2016-08-25 06:19+0300\n" +"PO-Revision-Date: 2016-08-08 09:21+0200\n" "Last-Translator: Benno Schulenberg \n" "Language-Team: Dutch \n" "Language: nl\n" @@ -21,92 +21,92 @@ msgstr "" "X-Generator: Lokalize 1.0\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n" -#: array.c:256 +#: array.c:259 #, c-format msgid "from %s" msgstr "van %s" -#: array.c:357 +#: array.c:360 msgid "attempt to use a scalar value as array" msgstr "scalaire waarde wordt gebruikt als array" -#: array.c:359 +#: array.c:362 #, c-format msgid "attempt to use scalar parameter `%s' as an array" msgstr "scalaire parameter '%s' wordt gebruikt als array" -#: array.c:362 +#: array.c:365 #, c-format msgid "attempt to use scalar `%s' as an array" msgstr "scalair '%s' wordt gebruikt als array" -#: array.c:409 array.c:576 builtin.c:85 builtin.c:1606 builtin.c:1652 -#: builtin.c:1665 builtin.c:2112 builtin.c:2126 eval.c:1149 eval.c:1153 -#: eval.c:1564 +#: array.c:412 array.c:579 builtin.c:85 builtin.c:1612 builtin.c:1658 +#: builtin.c:1671 builtin.c:2160 builtin.c:2179 eval.c:1141 eval.c:1145 +#: eval.c:1556 #, c-format msgid "attempt to use array `%s' in a scalar context" msgstr "array '%s' wordt gebruikt in een scalaire context" -#: array.c:583 +#: array.c:586 #, c-format msgid "delete: index `%s' not in array `%s'" msgstr "delete: index '%s' niet in array '%s'" -#: array.c:597 +#: array.c:600 #, c-format msgid "attempt to use scalar `%s[\"%.*s\"]' as an array" msgstr "scalair '%s[\"%.*s\"]' wordt gebruikt als array" -#: array.c:776 +#: array.c:779 msgid "adump: first argument not an array" msgstr "adump: eerste argument is geen array" -#: array.c:815 +#: array.c:818 msgid "asort: second argument not an array" msgstr "asort: tweede argument is geen array" -#: array.c:816 +#: array.c:819 msgid "asorti: second argument not an array" msgstr "asorti: tweede argument is geen array" -#: array.c:823 +#: array.c:826 msgid "asort: first argument not an array" msgstr "asort: eerste argument is geen array" -#: array.c:824 +#: array.c:827 msgid "asorti: first argument not an array" msgstr "asorti: eerste argument is geen array" -#: array.c:831 +#: array.c:834 msgid "asort: cannot use a subarray of first arg for second arg" msgstr "" "asort: een subarray van het eerste argument kan niet als tweede argument " "gebruikt worden" -#: array.c:832 +#: array.c:835 msgid "asorti: cannot use a subarray of first arg for second arg" msgstr "" "asorti: een subarray van het eerste argument kan niet als tweede argument " "gebruikt worden" -#: array.c:837 +#: array.c:840 msgid "asort: cannot use a subarray of second arg for first arg" msgstr "" "asort: een subarray van het tweede argument kan niet als eerste argument " "gebruikt worden" -#: array.c:838 +#: array.c:841 msgid "asorti: cannot use a subarray of second arg for first arg" msgstr "" "asorti: een subarray van het tweede argument kan niet als eerste argument " "gebruikt worden" -#: array.c:1313 +#: array.c:1316 #, c-format msgid "`%s' is invalid as a function name" msgstr "'%s' is ongeldig als functienaam" -#: array.c:1317 +#: array.c:1320 #, c-format msgid "sort comparison function `%s' is not defined" msgstr "sorteervergelijkingsfunctie '%s' is niet gedefinieerd" @@ -147,11 +147,11 @@ msgstr "dubbele 'case'-waarde in 'switch'-opdracht: %s" msgid "duplicate `default' detected in switch body" msgstr "dubbele 'default' in 'switch'-opdracht" -#: awkgram.y:793 awkgram.y:3763 +#: awkgram.y:793 awkgram.y:3774 msgid "`break' is not allowed outside a loop or switch" msgstr "'break' buiten een lus of 'switch'-opdracht is niet toegestaan" -#: awkgram.y:802 awkgram.y:3755 +#: awkgram.y:802 awkgram.y:3766 msgid "`continue' is not allowed outside a loop" msgstr "'continue' buiten een lus is niet toegestaan" @@ -242,7 +242,7 @@ msgstr "niet-functie '%s' wordt gebruikt in functie-aanroep" msgid "invalid subscript expression" msgstr "ongeldige index-expressie" -#: awkgram.y:2047 awkgram.y:2067 gawkapi.c:206 gawkapi.c:224 msg.c:126 +#: awkgram.y:2047 awkgram.y:2067 gawkapi.c:206 gawkapi.c:223 msg.c:126 msgid "warning: " msgstr "waarschuwing: " @@ -250,262 +250,266 @@ msgstr "waarschuwing: " msgid "fatal: " msgstr "fataal: " -#: awkgram.y:2115 +#: awkgram.y:2116 msgid "unexpected newline or end of string" msgstr "onverwacht regeleinde of einde van string" -#: awkgram.y:2394 awkgram.y:2470 awkgram.y:2693 debug.c:523 debug.c:539 -#: debug.c:2812 debug.c:5055 +#: awkgram.y:2397 awkgram.y:2473 awkgram.y:2696 debug.c:523 debug.c:539 +#: debug.c:2812 debug.c:5101 #, c-format msgid "can't open source file `%s' for reading (%s)" msgstr "kan bronbestand '%s' niet openen om te lezen (%s)" -#: awkgram.y:2395 awkgram.y:2520 +#: awkgram.y:2398 awkgram.y:2523 #, c-format msgid "can't open shared library `%s' for reading (%s)" msgstr "kan gedeelde bibliotheek '%s' niet openen om te lezen (%s)" -#: awkgram.y:2397 awkgram.y:2471 awkgram.y:2521 builtin.c:135 debug.c:5206 +#: awkgram.y:2400 awkgram.y:2474 awkgram.y:2524 builtin.c:135 debug.c:5252 msgid "reason unknown" msgstr "reden onbekend" -#: awkgram.y:2406 awkgram.y:2430 +#: awkgram.y:2409 awkgram.y:2433 #, c-format msgid "can't include `%s' and use it as a program file" msgstr "kan '%s' niet invoegen en als programmabestand gebruiken" -#: awkgram.y:2419 +#: awkgram.y:2422 #, c-format msgid "already included source file `%s'" msgstr "bronbestand '%s' is reeds ingesloten" -#: awkgram.y:2420 +#: awkgram.y:2423 #, c-format msgid "already loaded shared library `%s'" msgstr "gedeelde bibliotheek '%s' is reeds geladen" -#: awkgram.y:2455 +#: awkgram.y:2458 msgid "@include is a gawk extension" msgstr "'@include' is een gawk-uitbreiding" -#: awkgram.y:2461 +#: awkgram.y:2464 msgid "empty filename after @include" msgstr "lege bestandsnaam na '@include'" -#: awkgram.y:2505 +#: awkgram.y:2508 msgid "@load is a gawk extension" msgstr "'@load' is een gawk-uitbreiding" -#: awkgram.y:2511 +#: awkgram.y:2514 msgid "empty filename after @load" msgstr "lege bestandsnaam na '@load'" -#: awkgram.y:2645 +#: awkgram.y:2648 msgid "empty program text on command line" msgstr "lege programmatekst op opdrachtregel" -#: awkgram.y:2760 +#: awkgram.y:2763 #, c-format msgid "can't read sourcefile `%s' (%s)" msgstr "kan bronbestand '%s' niet lezen (%s)" -#: awkgram.y:2771 +#: awkgram.y:2774 #, c-format msgid "source file `%s' is empty" msgstr "bronbestand '%s' is leeg" -#: awkgram.y:2830 +#: awkgram.y:2833 #, c-format msgid "PEBKAC error: invalid character '\\%03o' in source code" msgstr "PEBKAC-fout: ongeldig teken '\\%03o' in brontekst" -#: awkgram.y:2961 +#: awkgram.y:2964 msgid "source file does not end in newline" msgstr "bronbestand eindigt niet met een regeleindeteken (LF)" -#: awkgram.y:3074 +#: awkgram.y:3081 msgid "unterminated regexp ends with `\\' at end of file" msgstr "onafgesloten reguliere expressie eindigt met '\\' aan bestandseinde" -#: awkgram.y:3101 +#: awkgram.y:3108 #, c-format msgid "%s: %d: tawk regex modifier `/.../%c' doesn't work in gawk" msgstr "%s: %d: regexp-optie '/.../%c' van 'tawk' werkt niet in gawk" -#: awkgram.y:3105 +#: awkgram.y:3112 #, c-format msgid "tawk regex modifier `/.../%c' doesn't work in gawk" msgstr "regexp-optie '/.../%c' van 'tawk' werkt niet in gawk" -#: awkgram.y:3112 +#: awkgram.y:3119 msgid "unterminated regexp" msgstr "onafgesloten reguliere expressie" -#: awkgram.y:3116 +#: awkgram.y:3123 msgid "unterminated regexp at end of file" msgstr "onafgesloten reguliere expressie aan bestandseinde" -#: awkgram.y:3174 +#: awkgram.y:3181 msgid "use of `\\ #...' line continuation is not portable" msgstr "gebruik van regelvoortzetting '\\ #...' is niet overdraagbaar" -#: awkgram.y:3190 +#: awkgram.y:3197 msgid "backslash not last character on line" msgstr "backslash is niet het laatste teken op de regel" -#: awkgram.y:3251 +#: awkgram.y:3235 awkgram.y:3237 +msgid "multidimensional arrays are a gawk extension" +msgstr "meerdimensionale arrays zijn een gawk-uitbreiding" + +#: awkgram.y:3262 msgid "POSIX does not allow operator `**='" msgstr "POSIX staat operator '**=' niet toe" -#: awkgram.y:3253 +#: awkgram.y:3264 msgid "old awk does not support operator `**='" msgstr "oude 'awk' kent de operator '**=' niet" -#: awkgram.y:3262 +#: awkgram.y:3273 msgid "POSIX does not allow operator `**'" msgstr "POSIX staat operator '**' niet toe" -#: awkgram.y:3264 +#: awkgram.y:3275 msgid "old awk does not support operator `**'" msgstr "oude 'awk' kent de operator '**' niet" -#: awkgram.y:3299 +#: awkgram.y:3310 msgid "operator `^=' is not supported in old awk" msgstr "oude 'awk' kent de operator '^=' niet" -#: awkgram.y:3307 +#: awkgram.y:3318 msgid "operator `^' is not supported in old awk" msgstr "oude 'awk' kent de operator '^' niet" -#: awkgram.y:3404 awkgram.y:3422 command.y:1180 +#: awkgram.y:3415 awkgram.y:3433 command.y:1187 msgid "unterminated string" msgstr "onafgesloten string" -#: awkgram.y:3643 +#: awkgram.y:3654 #, c-format msgid "invalid char '%c' in expression" msgstr "ongeldig teken '%c' in expressie" -#: awkgram.y:3690 +#: awkgram.y:3701 #, c-format msgid "`%s' is a gawk extension" msgstr "'%s' is een gawk-uitbreiding" -#: awkgram.y:3695 +#: awkgram.y:3706 #, c-format msgid "POSIX does not allow `%s'" msgstr "POSIX staat '%s' niet toe" -#: awkgram.y:3703 +#: awkgram.y:3714 #, c-format msgid "`%s' is not supported in old awk" msgstr "oude 'awk' kent '%s' niet" -#: awkgram.y:3793 +#: awkgram.y:3804 msgid "`goto' considered harmful!\n" msgstr "'goto' wordt als schadelijk beschouwd!\n" -#: awkgram.y:3827 +#: awkgram.y:3873 #, c-format msgid "%d is invalid as number of arguments for %s" msgstr "%d is een ongeldig aantal argumenten voor %s" -#: awkgram.y:3862 +#: awkgram.y:3908 #, 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:3867 +#: awkgram.y:3913 #, c-format msgid "%s third parameter is not a changeable object" msgstr "%s: derde parameter is geen veranderbaar object" -#: awkgram.y:3950 awkgram.y:3953 +#: awkgram.y:3996 awkgram.y:3999 msgid "match: third argument is a gawk extension" msgstr "match: derde argument is een gawk-uitbreiding" -#: awkgram.y:4007 awkgram.y:4010 +#: awkgram.y:4053 awkgram.y:4056 msgid "close: second argument is a gawk extension" msgstr "close: tweede argument is een gawk-uitbreiding" -#: awkgram.y:4022 +#: awkgram.y:4068 msgid "use of dcgettext(_\"...\") is incorrect: remove leading underscore" msgstr "dcgettext(_\"...\") is onjuist: verwijder het liggende streepje" -#: awkgram.y:4037 +#: awkgram.y:4083 msgid "use of dcngettext(_\"...\") is incorrect: remove leading underscore" msgstr "dcngettext(_\"...\") is onjuist: verwijder het liggende streepje" -#: awkgram.y:4056 +#: awkgram.y:4102 msgid "index: regexp constant as second argument is not allowed" msgstr "" "index: een reguliere-expressie-constante als tweede argument is niet " "toegestaan" -#: awkgram.y:4109 +#: awkgram.y:4155 #, c-format msgid "function `%s': parameter `%s' shadows global variable" msgstr "functie '%s': parameter '%s' schaduwt een globale variabele" -#: awkgram.y:4166 debug.c:4041 debug.c:4084 debug.c:5204 +#: awkgram.y:4214 debug.c:4087 debug.c:4130 debug.c:5250 #, c-format msgid "could not open `%s' for writing (%s)" msgstr "kan '%s' niet openen om te schrijven (%s)" -#: awkgram.y:4167 +#: awkgram.y:4215 msgid "sending variable list to standard error" msgstr "variabelenlijst gaat naar standaardfoutuitvoer" -#: awkgram.y:4175 +#: awkgram.y:4223 #, c-format msgid "%s: close failed (%s)" msgstr "%s: sluiten is mislukt (%s)" -#: awkgram.y:4200 +#: awkgram.y:4248 msgid "shadow_funcs() called twice!" msgstr "shadow_funcs() twee keer aangeroepen!" -#: awkgram.y:4208 +#: awkgram.y:4256 msgid "there were shadowed variables." msgstr "er waren geschaduwde variabelen." -#: awkgram.y:4279 +#: awkgram.y:4327 #, c-format msgid "function name `%s' previously defined" msgstr "functienaam '%s' is al eerder gedefinieerd" -#: awkgram.y:4325 +#: awkgram.y:4373 #, c-format msgid "function `%s': can't use function name as parameter name" msgstr "functie '%s': kan functienaam niet als parameternaam gebruiken" -#: awkgram.y:4328 +#: awkgram.y:4376 #, c-format msgid "function `%s': can't use special variable `%s' as a function parameter" msgstr "" "functie '%s': kan speciale variabele '%s' niet als functieparameter gebruiken" -#: awkgram.y:4336 +#: awkgram.y:4384 #, c-format msgid "function `%s': parameter #%d, `%s', duplicates parameter #%d" msgstr "functie '%s': parameter #%d, '%s', dupliceert parameter #%d" -#: awkgram.y:4423 awkgram.y:4429 +#: awkgram.y:4471 awkgram.y:4477 #, c-format msgid "function `%s' called but never defined" msgstr "functie '%s' wordt aangeroepen maar is nergens gedefinieerd" -#: awkgram.y:4433 +#: awkgram.y:4481 #, c-format msgid "function `%s' defined but never called directly" msgstr "functie '%s' is gedefinieerd maar wordt nergens direct aangeroepen" -#: awkgram.y:4465 +#: awkgram.y:4513 #, c-format msgid "regexp constant for parameter #%d yields boolean value" msgstr "regexp-constante als parameter #%d levert booleanwaarde op" -#: awkgram.y:4480 +#: awkgram.y:4528 #, c-format msgid "" "function `%s' called with space between name and `(',\n" @@ -514,23 +518,23 @@ msgstr "" "functie '%s' wordt aangeroepen met een spatie tussen naam en '(',\n" "of wordt gebruikt als variabele of array" -#: awkgram.y:4686 +#: awkgram.y:4734 msgid "division by zero attempted" msgstr "deling door nul" -#: awkgram.y:4695 +#: awkgram.y:4743 #, c-format msgid "division by zero attempted in `%%'" msgstr "deling door nul in '%%'" -#: awkgram.y:5015 +#: awkgram.y:5064 msgid "" "cannot assign a value to the result of a field post-increment expression" msgstr "" "kan geen waarde toewijzen aan het resultaat van een post-increment-expressie " "van een veld" -#: awkgram.y:5018 +#: awkgram.y:5067 #, c-format msgid "invalid target of assignment (opcode %s)" msgstr "ongeldig doel van toewijzing (opcode %s)" @@ -567,203 +571,214 @@ msgstr "" "fflush: kan bestand niet leegmaken: '%s' is geopend om te lezen, niet om te " "schrijven" -#: builtin.c:244 +#: builtin.c:241 +#, c-format +msgid "fflush: cannot flush: two-way pipe `%s' has closed write end" +msgstr "" +"fflush: kan pijp niet leegmaken: tweewegpijp '%s' heeft de schrijfkant " +"gesloten" + +#: builtin.c:247 #, c-format msgid "fflush: `%s' is not an open file, pipe or co-process" msgstr "fflush: '%s' is geen open bestand, pijp, of co-proces" -#: builtin.c:351 +#: builtin.c:354 msgid "index: received non-string first argument" msgstr "index: eerste argument is geen string" -#: builtin.c:353 +#: builtin.c:356 msgid "index: received non-string second argument" msgstr "index: tweede argument is geen string" -#: builtin.c:466 mpfr.c:777 +#: builtin.c:469 mpfr.c:781 msgid "int: received non-numeric argument" msgstr "int: argument is geen getal" -#: builtin.c:503 +#: builtin.c:506 msgid "length: received array argument" msgstr "length: argument is een array" -#: builtin.c:506 +#: builtin.c:509 msgid "`length(array)' is a gawk extension" msgstr "'length(array)' is een gawk-uitbreiding" -#: builtin.c:525 +#: builtin.c:528 msgid "length: received non-string argument" msgstr "length: argument is geen string" -#: builtin.c:554 +#: builtin.c:557 msgid "log: received non-numeric argument" msgstr "log: argument is geen getal" -#: builtin.c:557 +#: builtin.c:560 #, c-format msgid "log: received negative argument %g" msgstr "log: argument %g is negatief" -#: builtin.c:755 builtin.c:760 builtin.c:911 +#: builtin.c:758 builtin.c:763 builtin.c:914 msgid "fatal: must use `count$' on all formats or none" msgstr "fataal: 'count$' hoort in alle opmaken gebruikt te worden, of in geen" -#: builtin.c:830 +#: builtin.c:833 #, c-format msgid "field width is ignored for `%%' specifier" msgstr "veldbreedte wordt genegeerd voor opmaakaanduiding '%%'" -#: builtin.c:832 +#: builtin.c:835 #, c-format msgid "precision is ignored for `%%' specifier" msgstr "veldprecisie wordt genegeerd voor opmaakaanduiding '%%'" -#: builtin.c:834 +#: builtin.c:837 #, c-format msgid "field width and precision are ignored for `%%' specifier" msgstr "veldbreedte en -precisie worden genegeerd voor opmaakaanduiding '%%'" -#: builtin.c:885 +#: builtin.c:888 msgid "fatal: `$' is not permitted in awk formats" msgstr "fataal: '$' is niet toegestaan in awk-opmaak" -#: builtin.c:894 +#: builtin.c:897 msgid "fatal: arg count with `$' must be > 0" msgstr "fataal: het aantal argumenten met '$' moet > 0 zijn" -#: builtin.c:898 +#: builtin.c:901 #, c-format msgid "fatal: arg count %ld greater than total number of supplied arguments" msgstr "fataal: argumentental %ld is groter dan het gegeven aantal argumenten" -#: builtin.c:902 +#: builtin.c:905 msgid "fatal: `$' not permitted after period in format" msgstr "fataal: '$' is niet toegestaan na een punt in de opmaak" -#: builtin.c:921 +#: builtin.c:924 msgid "fatal: no `$' supplied for positional field width or precision" msgstr "fataal: geen '$' opgegeven bij positionele veldbreedte of -precisie" -#: builtin.c:991 +#: builtin.c:994 msgid "`l' is meaningless in awk formats; ignored" msgstr "'l' is betekenisloos in awk-opmaak; genegeerd" -#: builtin.c:995 +#: builtin.c:998 msgid "fatal: `l' is not permitted in POSIX awk formats" msgstr "fataal: 'l' is niet toegestaan in POSIX awk-opmaak" -#: builtin.c:1008 +#: builtin.c:1011 msgid "`L' is meaningless in awk formats; ignored" msgstr "'L' is betekenisloos in awk-opmaak; genegeerd" -#: builtin.c:1012 +#: builtin.c:1015 msgid "fatal: `L' is not permitted in POSIX awk formats" msgstr "fataal: 'L' is niet toegestaan in POSIX awk-opmaak" -#: builtin.c:1025 +#: builtin.c:1028 msgid "`h' is meaningless in awk formats; ignored" msgstr "'h' is betekenisloos in awk-opmaak; genegeerd" -#: builtin.c:1029 +#: builtin.c:1032 msgid "fatal: `h' is not permitted in POSIX awk formats" msgstr "fataal: 'h' is niet toegestaan in POSIX awk-opmaak" -#: builtin.c:1055 +#: builtin.c:1058 #, c-format msgid "[s]printf: value %g is too big for %%c format" msgstr "[s]printf: waarde %g is te groot voor opmaak %%c" -#: builtin.c:1068 +#: builtin.c:1071 #, c-format msgid "[s]printf: value %g is not a valid wide character" msgstr "[s]printf: waarde %g is geen geldig breed teken" -#: builtin.c:1454 +#: builtin.c:1457 #, 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:1552 +#: builtin.c:1555 #, c-format msgid "ignoring unknown format specifier character `%c': no argument converted" msgstr "" "onbekend opmaakteken '%c' wordt genegeerd: geen argument is geconverteerd" -#: builtin.c:1557 +#: builtin.c:1560 msgid "fatal: not enough arguments to satisfy format string" msgstr "fataal: niet genoeg argumenten voor opmaakstring" -#: builtin.c:1559 +#: builtin.c:1562 msgid "^ ran out for this one" msgstr "niet genoeg ^ voor deze" -#: builtin.c:1566 +#: builtin.c:1569 msgid "[s]printf: format specifier does not have control letter" msgstr "[s]printf: opmaakaanduiding mist een stuurletter" -#: builtin.c:1569 +#: builtin.c:1572 msgid "too many arguments supplied for format string" msgstr "te veel argumenten voor opmaakstring" -#: builtin.c:1625 +#: builtin.c:1631 msgid "sprintf: no arguments" msgstr "sprintf: geen argumenten" -#: builtin.c:1648 builtin.c:1659 +#: builtin.c:1654 builtin.c:1665 msgid "printf: no arguments" msgstr "printf: geen argumenten" -#: builtin.c:1702 +#: builtin.c:1676 +msgid "printf: attempt to write to closed write end of two-way pipe" +msgstr "printf: poging tot schrijven naar gesloten schrijfkant van tweewegpijp" + +#: builtin.c:1713 msgid "sqrt: received non-numeric argument" msgstr "sqrt: argument is geen getal" -#: builtin.c:1706 +#: builtin.c:1717 #, c-format msgid "sqrt: called with negative argument %g" msgstr "sqrt: argument %g is negatief" -#: builtin.c:1737 +#: builtin.c:1748 #, c-format msgid "substr: length %g is not >= 1" msgstr "substr: lengte %g is niet >= 1" -#: builtin.c:1739 +#: builtin.c:1750 #, c-format msgid "substr: length %g is not >= 0" msgstr "substr: lengte %g is niet >= 0" -#: builtin.c:1753 +#: builtin.c:1764 #, c-format msgid "substr: non-integer length %g will be truncated" msgstr "substr: lengte %g is geen integer; wordt afgekapt" -#: builtin.c:1758 +#: builtin.c:1769 #, 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:1770 +#: builtin.c:1781 #, c-format msgid "substr: start index %g is invalid, using 1" msgstr "substr: startindex %g is ongeldig; 1 wordt gebruikt" -#: builtin.c:1775 +#: builtin.c:1786 #, c-format msgid "substr: non-integer start index %g will be truncated" msgstr "substr: startindex %g is geen integer; wordt afgekapt" -#: builtin.c:1798 +#: builtin.c:1809 msgid "substr: source string is zero length" msgstr "substr: bronstring heeft lengte nul" -#: builtin.c:1812 +#: builtin.c:1823 #, 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:1820 +#: builtin.c:1831 #, c-format msgid "" "substr: length %g at start index %g exceeds length of first argument (%lu)" @@ -771,313 +786,317 @@ msgstr "" "substr: lengte %g bij startindex %g is groter dan de lengte van het eerste " "argument (%lu)" -#: builtin.c:1892 +#: builtin.c:1903 msgid "strftime: format value in PROCINFO[\"strftime\"] has numeric type" msgstr "strftime: opmaakwaarde in PROCINFO[\"strftime\"] is numeriek" -#: builtin.c:1915 +#: builtin.c:1926 msgid "strftime: received non-numeric second argument" msgstr "strftime: tweede argument is geen getal" -#: builtin.c:1925 +#: builtin.c:1936 msgid "strftime: second argument less than 0 or too big for time_t" msgstr "strftime: tweede argument is kleiner dan nul of te groot voor 'time_t'" -#: builtin.c:1932 +#: builtin.c:1943 msgid "strftime: second argument out of range for time_t" msgstr "strftime: tweede argument ligt buiten toegestaan bereik voor 'time_t'" -#: builtin.c:1941 +#: builtin.c:1952 msgid "strftime: received non-string first argument" msgstr "strftime: eerste argument is geen string" -#: builtin.c:1948 +#: builtin.c:1959 msgid "strftime: received empty format string" msgstr "strftime: opmaakstring is leeg" -#: builtin.c:2017 +#: builtin.c:2028 msgid "mktime: received non-string argument" msgstr "mktime: argument is geen string" -#: builtin.c:2034 +#: builtin.c:2045 msgid "mktime: at least one of the values is out of the default range" msgstr "mktime: minstens één van waarden valt buiten het standaardbereik" -#: builtin.c:2069 +#: builtin.c:2081 msgid "'system' function not allowed in sandbox mode" msgstr "'system'-functie is niet toegestaan in sandbox-modus" -#: builtin.c:2074 +#: builtin.c:2086 msgid "system: received non-string argument" msgstr "system: argument is geen string" -#: builtin.c:2194 +#: builtin.c:2165 builtin.c:2230 +msgid "print: attempt to write to closed write end of two-way pipe" +msgstr "print: poging tot schrijven naar gesloten schrijfkant van tweewegpijp" + +#: builtin.c:2248 #, c-format msgid "reference to uninitialized field `$%d'" msgstr "verwijzing naar ongeïnitialiseerd veld '$%d'" -#: builtin.c:2279 +#: builtin.c:2333 msgid "tolower: received non-string argument" msgstr "tolower: argument is geen string" -#: builtin.c:2310 +#: builtin.c:2364 msgid "toupper: received non-string argument" msgstr "toupper: argument is geen string" -#: builtin.c:2343 mpfr.c:679 +#: builtin.c:2397 mpfr.c:681 msgid "atan2: received non-numeric first argument" msgstr "atan2: eerste argument is geen getal" -#: builtin.c:2345 mpfr.c:681 +#: builtin.c:2399 mpfr.c:683 msgid "atan2: received non-numeric second argument" msgstr "atan2: tweede argument is geen getal" -#: builtin.c:2364 +#: builtin.c:2418 msgid "sin: received non-numeric argument" msgstr "sin: argument is geen getal" -#: builtin.c:2380 +#: builtin.c:2434 msgid "cos: received non-numeric argument" msgstr "cos: argument is geen getal" -#: builtin.c:2433 mpfr.c:1176 +#: builtin.c:2487 mpfr.c:1180 msgid "srand: received non-numeric argument" msgstr "srand: argument is geen getal" -#: builtin.c:2464 +#: builtin.c:2518 msgid "match: third argument is not an array" msgstr "match: derde argument is geen array" -#: builtin.c:2725 +#: builtin.c:2779 #, c-format msgid "gensub: third argument `%.*s' treated as 1" msgstr "gensub: derde argument is '%.*s'; wordt beschouwd als 1" -#: builtin.c:2740 +#: builtin.c:2794 #, c-format msgid "gensub: third argument %g treated as 1" msgstr "gensub: derde argument is %g; wordt beschouwd als 1" # FIXME: ambiguous -#: builtin.c:3038 +#: builtin.c:3096 #, c-format msgid "%s: can be called indirectly only with two arguments" msgstr "%s: kan alleen indirect aangeroepen worden met twee argumenten" -#: builtin.c:3128 +#: builtin.c:3186 #, c-format msgid "indirect call to %s requires at least two arguments" msgstr "indirecte aanroep van %s vereist minstens twee argumenten" -#: builtin.c:3180 +#: builtin.c:3238 msgid "lshift: received non-numeric first argument" msgstr "lshift: eerste argument is geen getal" -#: builtin.c:3182 +#: builtin.c:3240 msgid "lshift: received non-numeric second argument" msgstr "lshift: tweede argument is geen getal" -#: builtin.c:3188 +#: builtin.c:3246 #, c-format msgid "lshift(%f, %f): negative values will give strange results" msgstr "lshift(%f, %f): negatieve waarden geven rare resultaten" -#: builtin.c:3190 +#: builtin.c:3248 #, c-format msgid "lshift(%f, %f): fractional values will be truncated" msgstr "lshift(%f, %f): cijfers na de komma worden afgekapt" -#: builtin.c:3192 +#: builtin.c:3250 #, c-format msgid "lshift(%f, %f): too large shift value will give strange results" msgstr "lshift(%f, %f): te grote opschuifwaarden geven rare resultaten" -#: builtin.c:3217 +#: builtin.c:3275 msgid "rshift: received non-numeric first argument" msgstr "rshift: eerste argument is geen getal" -#: builtin.c:3219 +#: builtin.c:3277 msgid "rshift: received non-numeric second argument" msgstr "rshift: tweede argument is geen getal" -#: builtin.c:3225 +#: builtin.c:3283 #, c-format msgid "rshift(%f, %f): negative values will give strange results" msgstr "rshift(%f, %f): negatieve waarden geven rare resultaten" -#: builtin.c:3227 +#: builtin.c:3285 #, c-format msgid "rshift(%f, %f): fractional values will be truncated" msgstr "rshift(%f, %f): cijfers na de komma worden afgekapt" -#: builtin.c:3229 +#: builtin.c:3287 #, c-format msgid "rshift(%f, %f): too large shift value will give strange results" msgstr "rshift(%f, %f): te grote opschuifwaarden geven rare resultaten" -#: builtin.c:3254 mpfr.c:988 +#: builtin.c:3312 mpfr.c:992 msgid "and: called with less than two arguments" msgstr "and: aangeroepen met minder dan twee argumenten" -#: builtin.c:3259 +#: builtin.c:3317 #, c-format msgid "and: argument %d is non-numeric" msgstr "and: argument %d is niet-numeriek" -#: builtin.c:3263 +#: builtin.c:3321 #, c-format msgid "and: argument %d negative value %g will give strange results" msgstr "and: negatieve waarde %2$g van argument %1$d geeft rare resultaten" -#: builtin.c:3286 mpfr.c:1020 +#: builtin.c:3344 mpfr.c:1024 msgid "or: called with less than two arguments" msgstr "or: aangeroepen met minder dan twee argumenten" -#: builtin.c:3291 +#: builtin.c:3349 #, c-format msgid "or: argument %d is non-numeric" msgstr "or: argument %d is niet-numeriek" -#: builtin.c:3295 +#: builtin.c:3353 #, c-format msgid "or: argument %d negative value %g will give strange results" msgstr "or: negatieve waarde %2$g van argument %1$d geeft rare resultaten" -#: builtin.c:3317 mpfr.c:1051 +#: builtin.c:3375 mpfr.c:1055 msgid "xor: called with less than two arguments" msgstr "xor: aangeroepen met minder dan twee argumenten" -#: builtin.c:3323 +#: builtin.c:3381 #, c-format msgid "xor: argument %d is non-numeric" msgstr "xor: argument %d is niet-numeriek" -#: builtin.c:3327 +#: builtin.c:3385 #, c-format msgid "xor: argument %d negative value %g will give strange results" msgstr "xor: negatieve waarde %2$g van argument %1$d geeft rare resultaten" -#: builtin.c:3352 mpfr.c:807 +#: builtin.c:3410 mpfr.c:811 msgid "compl: received non-numeric argument" msgstr "compl: argument is geen getal" -#: builtin.c:3358 +#: builtin.c:3416 #, c-format msgid "compl(%f): negative value will give strange results" msgstr "compl(%f): negatieve waarden geven rare resultaten" -#: builtin.c:3360 +#: builtin.c:3418 #, c-format msgid "compl(%f): fractional value will be truncated" msgstr "compl(%f): cijfers na de komma worden afgekapt" -#: builtin.c:3529 +#: builtin.c:3588 #, c-format msgid "dcgettext: `%s' is not a valid locale category" msgstr "dcgettext: '%s' is geen geldige taalregio-deelcategorie" -#: command.y:225 +#: command.y:226 #, c-format msgid "Type (g)awk statement(s). End with the command \"end\"\n" msgstr "Typ (g)awk statement(s). Eindig met het commando \"end\".\n" -#: command.y:289 +#: command.y:290 #, c-format msgid "invalid frame number: %d" msgstr "ongeldig framenummer: %d" -#: command.y:295 +#: command.y:296 #, c-format msgid "info: invalid option - \"%s\"" msgstr "info: ongeldige optie -- \"%s\"" -#: command.y:321 +#: command.y:322 #, c-format msgid "source \"%s\": already sourced." msgstr "source \"%s\": is reeds ingelezen." -#: command.y:326 +#: command.y:327 #, c-format msgid "save \"%s\": command not permitted." msgstr "save \"%s\": commando niet toegestaan." -#: command.y:339 +#: command.y:340 msgid "Can't use command `commands' for breakpoint/watchpoint commands" msgstr "" "Kan commando 'commands' niet voor breekpunt-/kijkpunt-commando's gebruiken" -#: command.y:341 +#: command.y:342 msgid "no breakpoint/watchpoint has been set yet" msgstr "er is nog geen breekpunt/kijkpunt gezet" -#: command.y:343 +#: command.y:344 msgid "invalid breakpoint/watchpoint number" msgstr "ongeldig nummer van breekpunt/kijkpunt" -#: command.y:348 +#: command.y:349 #, c-format msgid "Type commands for when %s %d is hit, one per line.\n" msgstr "Typ de commando's voor wanneer %s %d getroffen wordt, één per regel.\n" -#: command.y:350 +#: command.y:351 #, c-format msgid "End with the command \"end\"\n" msgstr "Eindig met het commando 'end'.\n" -#: command.y:357 +#: command.y:358 msgid "`end' valid only in command `commands' or `eval'" msgstr "'end' is alleen geldig bij de commando's 'commands' en 'eval'" -#: command.y:367 +#: command.y:368 msgid "`silent' valid only in command `commands'" msgstr "'silent' is alleen geldig bij het commando 'commands'" -#: command.y:373 +#: command.y:374 #, c-format msgid "trace: invalid option - \"%s\"" msgstr "trace: ongeldige optie -- \"%s\"" -#: command.y:387 +#: command.y:388 msgid "condition: invalid breakpoint/watchpoint number" msgstr "condition: ongeldig nummer van breekpunt/kijkpunt" -#: command.y:449 +#: command.y:450 msgid "argument not a string" msgstr "argument is geen string" -#: command.y:459 command.y:464 +#: command.y:460 command.y:465 #, c-format msgid "option: invalid parameter - \"%s\"" msgstr "option: ongeldige parameter -- \"%s\"" -#: command.y:474 +#: command.y:475 #, c-format msgid "no such function - \"%s\"" msgstr "functie \"%s\" bestaat niet" -#: command.y:531 +#: command.y:532 #, c-format msgid "enable: invalid option - \"%s\"" msgstr "enable: ongeldige optie -- \"%s\"" -#: command.y:597 +#: command.y:598 #, c-format msgid "invalid range specification: %d - %d" msgstr "ongeldig bereik: %d - %d" -#: command.y:659 +#: command.y:660 msgid "non-numeric value for field number" msgstr "niet-numerieke waarde voor veldnummer" -#: command.y:680 command.y:687 +#: command.y:681 command.y:688 msgid "non-numeric value found, numeric expected" msgstr "niet-numerieke waarde gevonden, numerieke wordt verwacht" -#: command.y:712 command.y:718 +#: command.y:713 command.y:719 msgid "non-zero integer value" msgstr "niet-nul geheel getal" -#: command.y:817 +#: command.y:818 msgid "" "backtrace [N] - print trace of all or N innermost (outermost if N < 0) " "frames." @@ -1085,20 +1104,20 @@ msgstr "" "backtrace [N] - een trace weergeven van alle of N binnenste frames (of " "buitenste als N < 0)" -#: command.y:819 +#: command.y:820 msgid "" "break [[filename:]N|function] - set breakpoint at the specified location." msgstr "" "break [[BESTANDSNAAM:]REGELNUMMER|FUNCTIE] - breekpunt zetten op gegeven " "positie" -#: command.y:821 +#: command.y:822 msgid "clear [[filename:]N|function] - delete breakpoints previously set." msgstr "" "clear [[BESTANDSNAAM:]REGELNUMMER|FUNCTIE] - eerder gezet breekpunt " "verwijderen" -#: command.y:823 +#: command.y:824 msgid "" "commands [num] - starts a list of commands to be executed at a " "breakpoint(watchpoint) hit." @@ -1106,74 +1125,78 @@ msgstr "" "commands [NUMMER] - een lijst van commando's beginnen die uitgevoerd moeten " "worden wanneer een breekpunt/kijkpunt getroffen wordt" -#: command.y:825 +#: command.y:826 msgid "condition num [expr] - set or clear breakpoint or watchpoint condition." msgstr "" "condition NUMMER [EXPRESSIE] - de conditie van een breekpunt/kijkpunt zetten " "of wissen" -#: command.y:827 +#: command.y:828 msgid "continue [COUNT] - continue program being debugged." msgstr "continue [AANTAL] - doorgaan met het programma in de debugger" -#: command.y:829 +#: command.y:830 msgid "delete [breakpoints] [range] - delete specified breakpoints." msgstr "delete [BREEKPUNTEN] [BEREIK] - de gegeven breekpunten verwijderen" -#: command.y:831 +#: command.y:832 msgid "disable [breakpoints] [range] - disable specified breakpoints." msgstr "disable [BREEKPUNTEN] [BEREIK] - de gegeven breekpunten uitschakelen" -#: command.y:833 +#: command.y:834 msgid "display [var] - print value of variable each time the program stops." msgstr "" "display [VAR] - waarde van variabele weergeven elke keer dat het programma " "stopt" -#: command.y:835 +#: command.y:836 msgid "down [N] - move N frames down the stack." msgstr "down [AANTAL] - dit aantal frames naar beneden in de stack gaan" -#: command.y:837 +#: command.y:838 msgid "dump [filename] - dump instructions to file or stdout." msgstr "" "dump [BESTANDSNAAM] - instructies dumpen op standaarduitvoer (of naar " "bestand)" -#: command.y:839 +#: command.y:840 msgid "enable [once|del] [breakpoints] [range] - enable specified breakpoints." msgstr "" "enable [once|del] [BREEKPUNTEN] [BEREIK] - de gegeven breekpunten inschakelen" -#: command.y:841 +#: command.y:842 msgid "end - end a list of commands or awk statements." msgstr "end - een lijst van commando's of awk-statements beëindigen" -#: command.y:843 +#: command.y:844 msgid "eval stmt|[p1, p2, ...] - evaluate awk statement(s)." msgstr "eval STATEMENT|[p1, p2, ...] - awk-statement(s) evalueren" -#: command.y:845 +#: command.y:846 +msgid "exit - (same as quit) exit debugger." +msgstr "exit - (hetzelfde als 'quit') de debugger verlaten" + +#: command.y:848 msgid "finish - execute until selected stack frame returns." msgstr "finish - uitvoeren totdat het geselecteerde stack-frame terugkeert" -#: command.y:847 +#: command.y:850 msgid "frame [N] - select and print stack frame number N." msgstr "frame [NUMMER] - stack-frame met dit nummer selecteren en weergeven" -#: command.y:849 +#: command.y:852 msgid "help [command] - print list of commands or explanation of command." msgstr "" "help [COMMANDO] - lijst van beschikbare commando's (of uitleg van commando) " "tonen" -#: command.y:851 +#: command.y:854 msgid "ignore N COUNT - set ignore-count of breakpoint number N to COUNT." msgstr "" "ignore NUMMER AANTAL - het aantal keren dat dit breekpuntnummer genegeerd " "moet worden" -#: command.y:853 +#: command.y:856 msgid "" "info topic - source|sources|variables|functions|break|frame|args|locals|" "display|watch." @@ -1181,91 +1204,91 @@ msgstr "" "info THEMA - source|sources|variables|functions|break|frame|args|locals|" "display|watch" -#: command.y:855 +#: command.y:858 msgid "list [-|+|[filename:]lineno|function|range] - list specified line(s)." msgstr "" "list [-|+|[BESTANDSNAAM:]REGELNUMMER|FUNCTIE|BEREIK] - aangegeven regels " "tonen" -#: command.y:857 +#: command.y:860 msgid "next [COUNT] - step program, proceeding through subroutine calls." msgstr "" "next [AANTAL] - programma uitvoeren tot de volgende bronregel bereikt is" -#: command.y:859 +#: command.y:862 msgid "" "nexti [COUNT] - step one instruction, but proceed through subroutine calls." msgstr "" "nexti [AANTAL] - één instructie (of dit aantal) uitvoeren, waarbij een " "functie-aanroep als één telt" -#: command.y:861 +#: command.y:864 msgid "option [name[=value]] - set or display debugger option(s)." msgstr "option [NAAM[=WAARDE]] - opties van debugger tonen of instellen" -#: command.y:863 +#: command.y:866 msgid "print var [var] - print value of a variable or array." msgstr "print VAR [VAR] - waarde van variabele of array weergeven" -#: command.y:865 +#: command.y:868 msgid "printf format, [arg], ... - formatted output." msgstr "printf OPMAAK [, ARGUMENT...] - opgemaakte uitvoer" -#: command.y:867 +#: command.y:870 msgid "quit - exit debugger." msgstr "quit - de debugger verlaten" -#: command.y:869 +#: command.y:872 msgid "return [value] - make selected stack frame return to its caller." msgstr "return [WAARDE] - gekozen stack-frame terug laten keren naar aanroeper" -#: command.y:871 +#: command.y:874 msgid "run - start or restart executing program." msgstr "run - programma starten of herstarten" -#: command.y:874 +#: command.y:877 msgid "save filename - save commands from the session to file." msgstr "save BESTANDSNAAM - commando's van de sessie opslaan in bestand" -#: command.y:877 +#: command.y:880 msgid "set var = value - assign value to a scalar variable." msgstr "set VAR = WAARDE - een waarde aan een scalaire variabele toekennen" -#: command.y:879 +#: command.y:882 msgid "" "silent - suspends usual message when stopped at a breakpoint/watchpoint." msgstr "" "silent - de gewone meldingen bij het stoppen bij een breekpunt/kijkpunt " "onderdrukken" -#: command.y:881 +#: command.y:884 msgid "source file - execute commands from file." msgstr "source BESTANDSNAAM - commando's uit dit bestand uitvoeren" -#: command.y:883 +#: command.y:886 msgid "step [COUNT] - step program until it reaches a different source line." msgstr "" "step [AANTAL] - programma uitvoeren tot een andere bronregel bereikt is" -#: command.y:885 +#: command.y:888 msgid "stepi [COUNT] - step one instruction exactly." msgstr "stepi [AANTAL] - precies één (of dit aantal) instructies uitvoeren" -#: command.y:887 +#: command.y:890 msgid "tbreak [[filename:]N|function] - set a temporary breakpoint." msgstr "" "tbreak [[BESTANDSNAAM:]REGELNUMMER|FUNCTIE] - een tijdelijk breekpunt zetten" -#: command.y:889 +#: command.y:892 msgid "trace on|off - print instruction before executing." msgstr "trace on|off - instructie weergeven alvorens deze uit te voeren" -#: command.y:891 +#: command.y:894 msgid "undisplay [N] - remove variable(s) from automatic display list." msgstr "" "undisplay [AANTAL] - variabele(n) van automatische weergavelijst verwijderen" -#: command.y:893 +#: command.y:896 msgid "" "until [[filename:]N|function] - execute until program reaches a different " "line or line N within current frame." @@ -1273,19 +1296,19 @@ msgstr "" "until [[BESTANDSNAAM:]N|FUNCTIE] - programma uitvoeren totdat deze een " "andere regel bereikt of regel N binnen het huidige frame" -#: command.y:895 +#: command.y:898 msgid "unwatch [N] - remove variable(s) from watch list." msgstr "unwatch [AANTAL] - variabele(n) van de kijklijst verwijderen" -#: command.y:897 +#: command.y:900 msgid "up [N] - move N frames up the stack." msgstr "up [AANTAL] - dit aantal frames naar boven in de stack gaan" -#: command.y:899 +#: command.y:902 msgid "watch var - set a watchpoint for a variable." msgstr "watch VAR - een kijkpunt voor een variabele zetten" -#: command.y:901 +#: command.y:904 msgid "" "where [N] - (same as backtrace) print trace of all or N innermost (outermost " "if N < 0) frames." @@ -1293,40 +1316,40 @@ msgstr "" "where[N] - (zelfde als backtrace) een trace weergeven van alle of N " "binnenste frames (of buitenste als N < 0)" -#: command.y:1013 debug.c:401 msg.c:135 +#: command.y:1016 debug.c:401 msg.c:135 #, c-format msgid "error: " msgstr "fout: " -#: command.y:1053 +#: command.y:1060 #, c-format msgid "can't read command (%s)\n" msgstr "kan commando niet lezen (%s)\n" -#: command.y:1067 +#: command.y:1074 #, c-format msgid "can't read command (%s)" msgstr "kan commando niet lezen (%s)" -#: command.y:1118 +#: command.y:1125 msgid "invalid character in command" msgstr "ongeldig teken in commando" -#: command.y:1154 +#: command.y:1161 #, c-format msgid "unknown command - \"%.*s\", try help" msgstr "onbekend commando - \"%.*s\", probeer help" -#: command.y:1224 +#: command.y:1231 #, c-format msgid "%s" msgstr "%s" -#: command.y:1286 +#: command.y:1293 msgid "invalid character" msgstr "ongeldig teken" -#: command.y:1457 +#: command.y:1497 #, c-format msgid "undefined command: %s\n" msgstr "ongedefinieerd commando: %s\n" @@ -1535,17 +1558,17 @@ msgstr "[\"%s\"] niet in array '%s'\n" msgid "`%s[\"%s\"]' is not an array\n" msgstr "'%s[\"%s\"]' is geen array\n" -#: debug.c:1236 debug.c:4964 +#: debug.c:1236 debug.c:5010 #, c-format msgid "`%s' is not a scalar variable" msgstr "'%s' is geen scalaire variabele" -#: debug.c:1258 debug.c:4994 +#: debug.c:1258 debug.c:5040 #, c-format msgid "attempt to use array `%s[\"%s\"]' in a scalar context" msgstr "array '%s[\"%s\"]' wordt gebruikt in een scalaire context" -#: debug.c:1280 debug.c:5005 +#: debug.c:1280 debug.c:5051 #, c-format msgid "attempt to use scalar `%s[\"%s\"]' as array" msgstr "scalair '%s[\"%s\"]' wordt gebruikt als array" @@ -1823,100 +1846,100 @@ msgstr "'finish' is niet zinvol met een niet-lokale sprong '%s'\n" msgid "'until' not meaningful with non-local jump '%s'\n" msgstr "'until' is niet zinvol met een niet-lokale sprong '%s'\n" -#: debug.c:4185 +#: debug.c:4231 msgid "\t------[Enter] to continue or q [Enter] to quit------" msgstr "" "\t------[Enter] om verder te gaan, of [q] [Enter] om af te sluiten------" -#: debug.c:4186 +#: debug.c:4232 msgid "q" msgstr "q" -#: debug.c:5001 +#: debug.c:5047 #, c-format msgid "[\"%s\"] not in array `%s'" msgstr "[\"%s\"] niet in array '%s'" -#: debug.c:5207 +#: debug.c:5253 #, c-format msgid "sending output to stdout\n" msgstr "uitvoer wordt naar standaarduitvoer gestuurd\n" -#: debug.c:5247 +#: debug.c:5293 msgid "invalid number" msgstr "ongeldig nummer" -#: debug.c:5381 +#: debug.c:5427 #, c-format msgid "`%s' not allowed in current context; statement ignored" msgstr "'%s' is niet toegestaan in huidige context; statement is genegeerd" -#: debug.c:5389 +#: debug.c:5435 msgid "`return' not allowed in current context; statement ignored" msgstr "'return' is niet toegestaan in huidige context; statement is genegeerd" -#: debug.c:5604 +#: debug.c:5650 #, c-format msgid "No symbol `%s' in current context" msgstr "Geen symbool '%s' in huidige context" -#: dfa.c:1062 dfa.c:1065 dfa.c:1084 dfa.c:1094 dfa.c:1106 dfa.c:1142 -#: dfa.c:1151 dfa.c:1154 dfa.c:1159 dfa.c:1173 dfa.c:1221 +#: dfa.c:1090 dfa.c:1093 dfa.c:1112 dfa.c:1122 dfa.c:1135 dfa.c:1163 dfa.c:1172 +#: dfa.c:1175 dfa.c:1180 dfa.c:1202 dfa.c:1205 msgid "unbalanced [" msgstr "ongepaarde [" -#: dfa.c:1118 +#: dfa.c:1148 msgid "invalid character class" msgstr "ongeldige tekenklasse" -#: dfa.c:1264 +#: dfa.c:1271 msgid "character class syntax is [[:space:]], not [:space:]" msgstr "syntax van tekenklasse is [[:space:]], niet [:space:]" -#: dfa.c:1326 +#: dfa.c:1332 msgid "unfinished \\ escape" msgstr "onafgemaakte \\-stuurcode" -#: dfa.c:1473 +#: dfa.c:1499 msgid "invalid content of \\{\\}" msgstr "ongeldige inhoud van \\{\\}" -#: dfa.c:1476 +#: dfa.c:1502 msgid "regular expression too big" msgstr "reguliere expressie is te groot" -#: dfa.c:1911 +#: dfa.c:1916 msgid "unbalanced (" msgstr "ongepaarde (" -#: dfa.c:2037 +#: dfa.c:2044 msgid "no syntax specified" msgstr "geen syntax opgegeven" -#: dfa.c:2045 +#: dfa.c:2052 msgid "unbalanced )" msgstr "ongepaarde )" -#: eval.c:396 +#: eval.c:398 #, c-format msgid "unknown nodetype %d" msgstr "onbekend knooptype %d" -#: eval.c:407 eval.c:421 +#: eval.c:409 eval.c:423 #, c-format msgid "unknown opcode %d" msgstr "onbekende opcode %d" -#: eval.c:418 +#: eval.c:420 #, c-format msgid "opcode %s not an operator or keyword" msgstr "opcode %s is geen operator noch sleutelwoord" -#: eval.c:474 +#: eval.c:476 msgid "buffer overflow in genflags2str" msgstr "bufferoverloop in genflags2str()" -#: eval.c:676 +#: eval.c:678 #, c-format msgid "" "\n" @@ -1927,296 +1950,289 @@ msgstr "" "\t# Functieaanroepen-stack:\n" "\n" -#: eval.c:705 +#: eval.c:707 msgid "`IGNORECASE' is a gawk extension" msgstr "'IGNORECASE' is een gawk-uitbreiding" -#: eval.c:737 +#: eval.c:739 msgid "`BINMODE' is a gawk extension" msgstr "'BINMODE' is een gawk-uitbreiding" -#: eval.c:795 +#: eval.c:797 #, c-format msgid "BINMODE value `%s' is invalid, treated as 3" msgstr "BINMODE-waarde '%s' is ongeldig, wordt behandeld als 3" -#: eval.c:912 +#: eval.c:914 #, c-format msgid "bad `%sFMT' specification `%s'" msgstr "onjuiste opgave van '%sFMT': '%s'" -#: eval.c:996 +#: eval.c:988 msgid "turning off `--lint' due to assignment to `LINT'" msgstr "'--lint' wordt uitgeschakeld wegens toewijzing aan 'LINT'" -#: eval.c:1174 +#: eval.c:1166 #, c-format msgid "reference to uninitialized argument `%s'" msgstr "verwijzing naar ongeïnitialiseerd argument '%s'" -#: eval.c:1175 +#: eval.c:1167 #, c-format msgid "reference to uninitialized variable `%s'" msgstr "verwijzing naar ongeïnitialiseerde variabele '%s'" -#: eval.c:1193 +#: eval.c:1185 msgid "attempt to field reference from non-numeric value" msgstr "veldverwijzingspoging via een waarde die geen getal is" -#: eval.c:1195 +#: eval.c:1187 msgid "attempt to field reference from null string" msgstr "veldverwijzingspoging via een lege string" -#: eval.c:1203 +#: eval.c:1195 #, c-format msgid "attempt to access field %ld" msgstr "toegangspoging tot veld %ld" -#: eval.c:1212 +#: eval.c:1204 #, c-format msgid "reference to uninitialized field `$%ld'" msgstr "verwijzing naar ongeïnitialiseerd veld '$%ld'" -#: eval.c:1299 +#: eval.c:1291 #, c-format msgid "function `%s' called with more arguments than declared" msgstr "functie '%s' aangeroepen met meer argumenten dan gedeclareerd" -#: eval.c:1506 +#: eval.c:1498 #, c-format msgid "unwind_stack: unexpected type `%s'" msgstr "unwind_stack(): onverwacht type '%s'" -#: eval.c:1602 +#: eval.c:1594 msgid "division by zero attempted in `/='" msgstr "deling door nul in '/='" -#: eval.c:1609 +#: eval.c:1601 #, c-format msgid "division by zero attempted in `%%='" msgstr "deling door nul in '%%='" -#: ext.c:65 ext.c:147 +#: ext.c:66 ext.c:148 msgid "extensions are not allowed in sandbox mode" msgstr "uitbreidingen zijn niet toegestaan in sandbox-modus" -#: ext.c:68 +#: ext.c:69 msgid "-l / @load are gawk extensions" msgstr "-l / '@load' zijn gawk-uitbreidingen" -#: ext.c:71 +#: ext.c:72 msgid "load_ext: received NULL lib_name" msgstr "load_ext: lege bibliotheeknaam ontvangen" -#: ext.c:74 +#: ext.c:75 #, c-format msgid "load_ext: cannot open library `%s' (%s)\n" msgstr "load_ext: kan bibliotheek '%s' niet openen (%s)\n" -#: ext.c:80 +#: ext.c:81 #, c-format msgid "" "load_ext: library `%s': does not define `plugin_is_GPL_compatible' (%s)\n" msgstr "" "load_ext: bibliotheek '%s' definieert 'plugin_is_GPL_compatible' niet (%s)\n" -#: ext.c:86 +#: ext.c:87 #, c-format msgid "load_ext: library `%s': cannot call function `%s' (%s)\n" msgstr "load_ext: bibliotheek '%s' kan functie '%s' niet aanroepen (%s)\n" -#: ext.c:90 +#: ext.c:91 #, c-format msgid "load_ext: library `%s' initialization routine `%s' failed\n" msgstr "load_ext: bibliotheek '%s': initialisatiefunctie '%s' is mislukt\n" -#: ext.c:150 +#: ext.c:151 msgid "`extension' is a gawk extension" msgstr "'extension' is een gawk-uitbreiding" -#: ext.c:153 +#: ext.c:154 msgid "extension: received NULL lib_name" msgstr "uitbreiding: lege bibliotheeknaam ontvangen" -#: ext.c:156 +#: ext.c:157 #, c-format msgid "extension: cannot open library `%s' (%s)" msgstr "extension: kan bibliotheek '%s' niet openen (%s)" -#: ext.c:162 +#: ext.c:163 #, c-format msgid "" "extension: library `%s': does not define `plugin_is_GPL_compatible' (%s)" msgstr "" "extension: bibliotheek '%s' definieert 'plugin_is_GPL_compatible' niet (%s)" -#: ext.c:166 +#: ext.c:167 #, c-format msgid "extension: library `%s': cannot call function `%s' (%s)" msgstr "extension: bibliotheek '%s' kan functie '%s' niet aanroepen (%s)" -#: ext.c:197 +#: ext.c:198 msgid "make_builtin: missing function name" msgstr "make_builtin: ontbrekende functienaam" -#: ext.c:212 +#: ext.c:213 #, c-format msgid "make_builtin: can't redefine function `%s'" msgstr "make_builtin: kan functie '%s' niet herdefiniëren" -#: ext.c:216 +#: ext.c:217 #, c-format msgid "make_builtin: function `%s' already defined" msgstr "make_builtin: functie '%s' is al gedefinieerd" -#: ext.c:220 +#: ext.c:221 #, c-format msgid "make_builtin: function name `%s' previously defined" msgstr "make_builtin: functienaam '%s' is al eerder gedefinieerd" -#: ext.c:222 +#: ext.c:223 #, c-format msgid "make_builtin: can't use gawk built-in `%s' as function name" msgstr "" "make_builtin: kan in gawk ingebouwde '%s' niet als functienaam gebruiken" -#: ext.c:225 ext.c:280 +#: ext.c:226 ext.c:281 #, c-format msgid "make_builtin: negative argument count for function `%s'" msgstr "make_builtin: negatief aantal argumenten voor functie '%s'" -#: ext.c:252 +#: ext.c:253 msgid "extension: missing function name" msgstr "extension: ontbrekende functienaam" -#: ext.c:255 ext.c:259 +#: ext.c:256 ext.c:260 #, c-format msgid "extension: illegal character `%c' in function name `%s'" msgstr "extension: ongeldig teken '%c' in functienaam '%s'" -#: ext.c:267 +#: ext.c:268 #, c-format msgid "extension: can't redefine function `%s'" msgstr "extension: kan functie '%s' niet herdefiniëren" -#: ext.c:271 +#: ext.c:272 #, c-format msgid "extension: function `%s' already defined" msgstr "extension: functie '%s' is al gedefinieerd" -#: ext.c:275 +#: ext.c:276 #, c-format msgid "extension: function name `%s' previously defined" msgstr "extension: functienaam '%s' is al eerder gedefinieerd" -#: ext.c:277 +#: ext.c:278 #, 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:351 -#, 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:354 -#, c-format -msgid "function `%s': missing argument #%d" -msgstr "functie '%s': ontbrekend argument #%d" - -#: ext.c:371 +#: ext.c:358 #, 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:375 +#: ext.c:362 #, 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:389 +#: ext.c:376 msgid "dynamic loading of library not supported" msgstr "het dynamisch laden van de bibliotheek wordt niet ondersteund" -#: extension/filefuncs.c:159 +#: extension/filefuncs.c:164 msgid "chdir: called with incorrect number of arguments, expecting 1" msgstr "" "chdir: aangeroepen met onjuist aantal argumenten; één wordt er verwacht" -#: extension/filefuncs.c:439 +#: extension/filefuncs.c:444 #, c-format msgid "stat: unable to read symbolic link `%s'" msgstr "stat: kan symbolische koppeling '%s' niet lezen" -#: extension/filefuncs.c:472 +#: extension/filefuncs.c:477 msgid "stat: called with wrong number of arguments" msgstr "stat: aangeroepen met onjuist aantal argumenten" -#: extension/filefuncs.c:479 +#: extension/filefuncs.c:484 extension/filefuncs.c:534 msgid "stat: bad parameters" msgstr "stat: onjuiste parameters" -#: extension/filefuncs.c:533 +#: extension/filefuncs.c:527 +msgid "statvfs: called with wrong number of arguments" +msgstr "statvfs: aangeroepen met onjuist aantal argumenten" + +#: extension/filefuncs.c:598 #, c-format msgid "fts init: could not create variable %s" msgstr "fts-initialisatie: kan variabele %s niet aanmaken" -#: extension/filefuncs.c:554 +#: extension/filefuncs.c:619 msgid "fts is not supported on this system" msgstr "'fts' wordt op dit systeem niet ondersteund" -#: extension/filefuncs.c:573 +#: extension/filefuncs.c:638 msgid "fill_stat_element: could not create array" msgstr "fill_stat_element: kan array niet aanmaken" -#: extension/filefuncs.c:582 +#: extension/filefuncs.c:647 msgid "fill_stat_element: could not set element" msgstr "fill_stat_element: kan element niet instellen" -#: extension/filefuncs.c:597 +#: extension/filefuncs.c:662 msgid "fill_path_element: could not set element" msgstr "fill_path_element: kan element niet instellen" -#: extension/filefuncs.c:613 +#: extension/filefuncs.c:678 msgid "fill_error_element: could not set element" msgstr "fill_error_element: kan element niet instellen" -#: extension/filefuncs.c:660 extension/filefuncs.c:707 +#: extension/filefuncs.c:725 extension/filefuncs.c:772 msgid "fts-process: could not create array" msgstr "fts-verwerking: kan array niet aanmaken" -#: extension/filefuncs.c:670 extension/filefuncs.c:717 -#: extension/filefuncs.c:735 +#: extension/filefuncs.c:735 extension/filefuncs.c:782 +#: extension/filefuncs.c:800 msgid "fts-process: could not set element" msgstr "fts-verwerking: kan element niet instellen" -#: extension/filefuncs.c:784 +#: extension/filefuncs.c:849 msgid "fts: called with incorrect number of arguments, expecting 3" msgstr "" "fts: aangeroepen met onjuist aantal argumenten; drie worden er verwacht" -#: extension/filefuncs.c:787 +#: extension/filefuncs.c:852 msgid "fts: bad first parameter" msgstr "fts: onjuiste eerste parameter" -#: extension/filefuncs.c:793 +#: extension/filefuncs.c:858 msgid "fts: bad second parameter" msgstr "fts: onjuiste tweede parameter" -#: extension/filefuncs.c:799 +#: extension/filefuncs.c:864 msgid "fts: bad third parameter" msgstr "fts: onjuiste derde parameter" -#: extension/filefuncs.c:806 +#: extension/filefuncs.c:871 msgid "fts: could not flatten array\n" msgstr "fts: kan array niet pletten\n" -#: extension/filefuncs.c:824 +#: extension/filefuncs.c:889 msgid "fts: ignoring sneaky FTS_NOSTAT flag. nyah, nyah, nyah." msgstr "fts: listige FTS_NOSTAT-vlag wordt genegeerd -- lekker puh :)" -#: extension/filefuncs.c:841 +#: extension/filefuncs.c:906 msgid "fts: clear_array() failed\n" msgstr "fts: clear_array() is mislukt\n" @@ -2277,92 +2293,92 @@ msgstr "wait: aangeroepen zonder argumenten" msgid "wait: called with too many arguments" msgstr "wait: aangeroepen met te veel argumenten" -#: extension/inplace.c:130 +#: extension/inplace.c:131 msgid "inplace_begin: in-place editing already active" msgstr "inplace_begin(): in-situ-bewerken is al actief" -#: extension/inplace.c:133 extension/inplace.c:210 +#: extension/inplace.c:134 extension/inplace.c:211 #, c-format msgid "inplace_begin: expects 2 arguments but called with %d" msgstr "inplace_begin(): verwachtte twee argumenten maar is aangeroepen met %d" -#: extension/inplace.c:136 +#: extension/inplace.c:137 msgid "inplace_begin: cannot retrieve 1st argument as a string filename" msgstr "" "inplace_begin(): kan eerste argument niet als bestandsnaamstring oppakken" -#: extension/inplace.c:144 +#: extension/inplace.c:145 #, c-format msgid "inplace_begin: disabling in-place editing for invalid FILENAME `%s'" msgstr "" "inplace_begin(): in-situ-bewerken wordt uitgeschakeld voor ongeldige " "bestandsnaam '%s'" -#: extension/inplace.c:151 +#: extension/inplace.c:152 #, c-format msgid "inplace_begin: Cannot stat `%s' (%s)" msgstr "inplace_begin(): Kan status van '%s' niet bepalen (%s)" -#: extension/inplace.c:158 +#: extension/inplace.c:159 #, c-format msgid "inplace_begin: `%s' is not a regular file" msgstr "inplace_begin(): '%s' is geen normaal bestand" -#: extension/inplace.c:169 +#: extension/inplace.c:170 #, c-format msgid "inplace_begin: mkstemp(`%s') failed (%s)" msgstr "inplace_begin(): mkstemp('%s') is mislukt (%s)" -#: extension/inplace.c:181 +#: extension/inplace.c:182 #, c-format msgid "inplace_begin: chmod failed (%s)" msgstr "inplace_begin(): chmod is mislukt (%s)" -#: extension/inplace.c:188 +#: extension/inplace.c:189 #, c-format msgid "inplace_begin: dup(stdout) failed (%s)" msgstr "inplace_begin(): dup(stdout) is mislukt (%s)" -#: extension/inplace.c:191 +#: extension/inplace.c:192 #, c-format msgid "inplace_begin: dup2(%d, stdout) failed (%s)" msgstr "inplace_begin(): dup2(%d, stdout) is mislukt (%s)" -#: extension/inplace.c:194 +#: extension/inplace.c:195 #, c-format msgid "inplace_begin: close(%d) failed (%s)" msgstr "inplace_begin(): close(%d) is mislukt (%s)" -#: extension/inplace.c:213 +#: extension/inplace.c:214 msgid "inplace_end: cannot retrieve 1st argument as a string filename" msgstr "" "inplace_end(): kan eerste argument niet als bestandsnaamstring oppakken" -#: extension/inplace.c:220 +#: extension/inplace.c:221 msgid "inplace_end: in-place editing not active" msgstr "inplace_end(): in-situ-bewerken is niet actief" -#: extension/inplace.c:226 +#: extension/inplace.c:227 #, c-format msgid "inplace_end: dup2(%d, stdout) failed (%s)" msgstr "inplace_end(): dup2(%d, stdout) is mislukt (%s)" -#: extension/inplace.c:229 +#: extension/inplace.c:230 #, c-format msgid "inplace_end: close(%d) failed (%s)" msgstr "inplace_end(): close(%d) is mislukt (%s)" -#: extension/inplace.c:233 +#: extension/inplace.c:234 #, c-format msgid "inplace_end: fsetpos(stdout) failed (%s)" msgstr "inplace_end(): fsetpos(stdout) is mislukt (%s)" -#: extension/inplace.c:246 +#: extension/inplace.c:247 #, c-format msgid "inplace_end: link(`%s', `%s') failed (%s)" msgstr "inplace_end(): link('%s', '%s') is mislukt (%s)" -#: extension/inplace.c:256 +#: extension/inplace.c:257 #, c-format msgid "inplace_end: rename(`%s', `%s') failed (%s)" msgstr "inplace_end(): rename('%s', '%s') is mislukt (%s)" @@ -2391,7 +2407,7 @@ msgstr "chr: aangeroepen zonder argumenten" msgid "chr: called with inappropriate argument(s)" msgstr "chr: aangeroepen met onjuiste argumenten" -#: extension/readdir.c:281 +#: extension/readdir.c:271 #, c-format msgid "dir_take_control_of: opendir/fdopendir failed: %s" msgstr "dir_take_control_of(): opendir()/fdopendir() is mislukt: %s" @@ -2404,54 +2420,54 @@ msgstr "readfile: aangeroepen met te veel argumenten" msgid "readfile: called with no arguments" msgstr "readfile: aangeroepen zonder argumenten" -#: extension/revoutput.c:125 +#: extension/revoutput.c:127 msgid "revoutput: could not initialize REVOUT variable" msgstr "revoutput: kan variabele REVOUT niet initialiseren" -#: extension/rwarray.c:124 extension/rwarray0.c:109 +#: extension/rwarray.c:113 extension/rwarray0.c:109 msgid "writea: called with too many arguments" msgstr "writea: aangeroepen met te veel argumenten" -#: extension/rwarray.c:131 extension/rwarray0.c:116 +#: extension/rwarray.c:120 extension/rwarray0.c:116 #, c-format msgid "do_writea: argument 0 is not a string\n" msgstr "do_writea: argument 0 is geen string\n" -#: extension/rwarray.c:137 extension/rwarray0.c:122 +#: extension/rwarray.c:126 extension/rwarray0.c:122 #, c-format msgid "do_writea: argument 1 is not an array\n" msgstr "do_writea: argument 1 is geen array\n" -#: extension/rwarray.c:184 extension/rwarray0.c:169 +#: extension/rwarray.c:173 extension/rwarray0.c:169 #, c-format msgid "write_array: could not flatten array\n" msgstr "write_array: kan array niet pletten\n" -#: extension/rwarray.c:198 extension/rwarray0.c:183 +#: extension/rwarray.c:187 extension/rwarray0.c:183 #, c-format msgid "write_array: could not release flattened array\n" msgstr "write_array: kan geplet array niet vrijgeven\n" -#: extension/rwarray.c:280 extension/rwarray0.c:265 +#: extension/rwarray.c:269 extension/rwarray0.c:265 msgid "reada: called with too many arguments" msgstr "reada: aangeroepen met te veel argumenten" -#: extension/rwarray.c:287 extension/rwarray0.c:272 +#: extension/rwarray.c:276 extension/rwarray0.c:272 #, c-format msgid "do_reada: argument 0 is not a string\n" msgstr "do_reada: argument 0 is geen string\n" -#: extension/rwarray.c:293 extension/rwarray0.c:278 +#: extension/rwarray.c:282 extension/rwarray0.c:278 #, c-format msgid "do_reada: argument 1 is not an array\n" msgstr "do_reada: argument 1 is geen array\n" -#: extension/rwarray.c:337 extension/rwarray0.c:322 +#: extension/rwarray.c:326 extension/rwarray0.c:322 #, c-format msgid "do_reada: clear_array failed\n" msgstr "do_reada: clear_array() is mislukt\n" -#: extension/rwarray.c:374 extension/rwarray0.c:358 +#: extension/rwarray.c:363 extension/rwarray0.c:358 #, c-format msgid "read_array: set_array_element failed\n" msgstr "read_array: set_array_element() is mislukt\n" @@ -2565,7 +2581,7 @@ msgstr "een lege string als 'FS' is een gawk-uitbreiding" msgid "old awk does not support regexps as value of `FS'" msgstr "oude 'awk' staat geen reguliere expressies toe als waarde van 'FS'" -#: field.c:1380 +#: field.c:1384 msgid "`FPAT' is a gawk extension" msgstr "'FPAT' is een gawk-uitbreiding" @@ -2573,28 +2589,28 @@ msgstr "'FPAT' is een gawk-uitbreiding" msgid "awk_value_to_node: received null retval" msgstr "awk_value_to_node(): lege returnwaarde ontvangen" -#: gawkapi.c:384 +#: gawkapi.c:383 msgid "node_to_awk_value: received null node" msgstr "node_to_awk_value(): lege knoop ontvangen" -#: gawkapi.c:387 +#: gawkapi.c:386 msgid "node_to_awk_value: received null val" msgstr "node_to_awk_value(): lege waarde ontvangen" -#: gawkapi.c:809 +#: gawkapi.c:808 msgid "remove_element: received null array" msgstr "remove_element(): leeg array ontvangen" -#: gawkapi.c:812 +#: gawkapi.c:811 msgid "remove_element: received null subscript" msgstr "remove_element(): lege index ontvangen" -#: gawkapi.c:949 +#: gawkapi.c:948 #, c-format msgid "api_flatten_array: could not convert index %d\n" msgstr "api_flatten_array(): kan index %d niet converteren\n" -#: gawkapi.c:954 +#: gawkapi.c:953 #, c-format msgid "api_flatten_array: could not convert value %d\n" msgstr "api_flatten_array(): kan waarde %d niet converteren\n" @@ -2654,289 +2670,293 @@ msgstr "%s: optie '-W %s' staat geen argument toe\n" msgid "%s: option '-W %s' requires an argument\n" msgstr "%s: optie '-W %s' vereist een argument\n" -#: io.c:423 +#: io.c:426 #, c-format msgid "command line argument `%s' is a directory: skipped" msgstr "opdrachtregelargument '%s' is een map -- overgeslagen" -#: io.c:426 io.c:544 +#: io.c:429 io.c:547 #, c-format msgid "cannot open file `%s' for reading (%s)" msgstr "kan bestand '%s' niet openen om te lezen (%s)" -#: io.c:671 +#: io.c:674 #, c-format msgid "close of fd %d (`%s') failed (%s)" msgstr "sluiten van bestandsdescriptor %d ('%s') is mislukt (%s)" -#: io.c:749 +#: io.c:752 msgid "redirection not allowed in sandbox mode" msgstr "omleiding is niet toegestaan in sandbox-modus" -#: io.c:783 +#: io.c:786 #, c-format msgid "expression in `%s' redirection only has numeric value" msgstr "expressie in omleiding '%s' heeft alleen een getal als waarde" -#: io.c:789 +#: io.c:792 #, c-format msgid "expression for `%s' redirection has null string value" msgstr "expressie voor omleiding '%s' heeft een lege string als waarde" -#: io.c:794 +#: io.c:797 #, 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:842 +#: io.c:845 #, c-format msgid "unnecessary mixing of `>' and `>>' for file `%.*s'" msgstr "onnodige mix van '>' en '>>' voor bestand '%.*s'" -#: io.c:896 +#: io.c:902 #, c-format msgid "can't open pipe `%s' for output (%s)" msgstr "kan pijp '%s' niet openen voor uitvoer (%s)" -#: io.c:906 +#: io.c:915 #, c-format msgid "can't open pipe `%s' for input (%s)" msgstr "kan pijp '%s' niet openen voor invoer (%s)" -#: io.c:937 +#: io.c:946 #, c-format msgid "can't open two way pipe `%s' for input/output (%s)" msgstr "kan tweerichtings-pijp '%s' niet openen voor in- en uitvoer (%s)" -#: io.c:1019 +#: io.c:1030 #, c-format msgid "can't redirect from `%s' (%s)" msgstr "kan niet omleiden van '%s' (%s)" -#: io.c:1022 +#: io.c:1033 #, c-format msgid "can't redirect to `%s' (%s)" msgstr "kan niet omleiden naar '%s' (%s)" -#: io.c:1073 +#: io.c:1084 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:1089 +#: io.c:1100 #, c-format msgid "close of `%s' failed (%s)." msgstr "sluiten van '%s' is mislukt (%s)" -#: io.c:1097 +#: io.c:1108 msgid "too many pipes or input files open" msgstr "te veel pijpen of invoerbestanden geopend" -#: io.c:1119 +#: io.c:1130 msgid "close: second argument must be `to' or `from'" msgstr "close: tweede argument moet 'to' of 'from' zijn" -#: io.c:1136 +#: io.c:1147 #, c-format msgid "close: `%.*s' is not an open file, pipe or co-process" msgstr "close: '%.*s' is geen open bestand, pijp, of co-proces" -#: io.c:1141 +#: io.c:1152 msgid "close of redirection that was never opened" msgstr "sluiten van een nooit-geopende omleiding" -#: io.c:1238 +#: io.c:1249 #, c-format msgid "close: redirection `%s' not opened with `|&', second argument ignored" msgstr "" "close: omleiding '%s' is niet geopend met '|&'; tweede argument wordt " "genegeerd" -#: io.c:1255 +#: io.c:1266 #, c-format msgid "failure status (%d) on pipe close of `%s' (%s)" msgstr "afsluitwaarde %d bij mislukte sluiting van pijp '%s' (%s)" -#: io.c:1258 +#: io.c:1269 #, c-format msgid "failure status (%d) on file close of `%s' (%s)" msgstr "afsluitwaarde %d bij mislukte sluiting van bestand '%s' (%s)" -#: io.c:1278 +#: io.c:1289 #, c-format msgid "no explicit close of socket `%s' provided" msgstr "geen expliciete sluiting van socket '%s' aangegeven" -#: io.c:1281 +#: io.c:1292 #, c-format msgid "no explicit close of co-process `%s' provided" msgstr "geen expliciete sluiting van co-proces '%s' aangegeven" -#: io.c:1284 +#: io.c:1295 #, c-format msgid "no explicit close of pipe `%s' provided" msgstr "geen expliciete sluiting van pijp '%s' aangegeven" -#: io.c:1287 +#: io.c:1298 #, c-format msgid "no explicit close of file `%s' provided" msgstr "geen expliciete sluiting van bestand '%s' aangegeven" -#: io.c:1317 io.c:1375 main.c:632 main.c:674 +#: io.c:1328 io.c:1387 main.c:645 main.c:687 #, c-format msgid "error writing standard output (%s)" msgstr "fout tijdens schrijven van standaarduitvoer (%s)" -#: io.c:1322 io.c:1381 main.c:634 +#: io.c:1333 io.c:1393 main.c:647 #, c-format msgid "error writing standard error (%s)" msgstr "fout tijdens schrijven van standaardfoutuitvoer (%s)" -#: io.c:1330 +#: io.c:1341 #, c-format msgid "pipe flush of `%s' failed (%s)." msgstr "leegmaken van pijp '%s' is mislukt (%s)" -#: io.c:1333 +#: io.c:1344 #, c-format msgid "co-process flush of pipe to `%s' failed (%s)." msgstr "leegmaken door co-proces van pijp naar '%s' is mislukt (%s)" -#: io.c:1336 +#: io.c:1347 #, c-format msgid "file flush of `%s' failed (%s)." msgstr "leegmaken van bestand '%s' is mislukt (%s)" -#: io.c:1453 +#: io.c:1465 #, c-format msgid "local port %s invalid in `/inet'" msgstr "lokale poort %s is ongeldig in '/inet'" -#: io.c:1471 +#: io.c:1483 #, c-format msgid "remote host and port information (%s, %s) invalid" msgstr "host- en poortinformatie (%s, %s) zijn ongeldig" -#: io.c:1699 +#: io.c:1711 msgid "TCP/IP communications are not supported" msgstr "TCP/IP-communicatie wordt niet ondersteund" -#: io.c:1880 +#: io.c:1905 #, c-format msgid "could not open `%s', mode `%s'" msgstr "kan '%s' niet openen -- modus '%s'" -#: io.c:1930 +#: io.c:1961 #, c-format msgid "close of master pty failed (%s)" msgstr "kan meester-pty van dochterproces niet sluiten (%s)" -#: io.c:1932 io.c:2118 io.c:2319 +#: io.c:1963 io.c:2141 io.c:2342 #, c-format msgid "close of stdout in child failed (%s)" msgstr "kan standaarduitvoer van dochterproces niet sluiten (%s)" -#: io.c:1935 +#: io.c:1966 #, c-format msgid "moving slave pty to stdout in child failed (dup: %s)" msgstr "" "kan slaaf-pty niet overzetten naar standaarduitvoer van dochterproces (dup: " "%s)" -#: io.c:1937 io.c:2123 +#: io.c:1968 io.c:2146 #, c-format msgid "close of stdin in child failed (%s)" msgstr "kan standaardinvoer van dochterproces niet sluiten (%s)" -#: io.c:1940 +#: io.c:1971 #, c-format msgid "moving slave pty to stdin in child failed (dup: %s)" msgstr "" "kan slaaf-pty niet overzetten naar standaardinvoer van dochterproces (dup: " "%s)" -#: io.c:1942 io.c:1964 +#: io.c:1973 #, c-format msgid "close of slave pty failed (%s)" msgstr "kan slaaf-pty niet sluiten (%s)" -#: io.c:2053 io.c:2121 io.c:2290 io.c:2322 +#: io.c:2076 io.c:2144 io.c:2313 io.c:2345 #, c-format msgid "moving pipe to stdout in child failed (dup: %s)" msgstr "" "kan pijp niet overzetten naar standaarduitvoer van dochterproces (dup: %s)" -#: io.c:2060 io.c:2126 +#: io.c:2083 io.c:2149 #, c-format msgid "moving pipe to stdin in child failed (dup: %s)" msgstr "" "kan pijp niet overzetten naar standaardinvoer van dochterproces (dup: %s)" -#: io.c:2086 io.c:2312 +#: io.c:2109 io.c:2335 msgid "restoring stdout in parent process failed\n" msgstr "kan standaarduitvoer van ouderproces niet herstellen\n" -#: io.c:2094 +#: io.c:2117 msgid "restoring stdin in parent process failed\n" msgstr "kan standaardinvoer van ouderproces niet herstellen\n" -#: io.c:2129 io.c:2324 io.c:2339 +#: io.c:2152 io.c:2347 io.c:2362 #, c-format msgid "close of pipe failed (%s)" msgstr "kan pijp niet sluiten (%s)" -#: io.c:2188 +#: io.c:2211 msgid "`|&' not supported" msgstr "'|&' wordt niet ondersteund" -#: io.c:2275 +#: io.c:2298 #, c-format msgid "cannot open pipe `%s' (%s)" msgstr "kan pijp '%s' niet openen (%s)" -#: io.c:2333 +#: io.c:2356 #, c-format msgid "cannot create child process for `%s' (fork: %s)" msgstr "kan voor '%s' geen dochterproces starten (fork: %s)" -#: io.c:2760 +#: io.c:2493 +msgid "getline: attempt to read from closed read end of two-way pipe" +msgstr "getline: poging tot lezen uit gesloten leeskant van tweewegpijp" + +#: io.c:2795 msgid "register_input_parser: received NULL pointer" msgstr "register_input_parser(): NULL-pointer gekregen" -#: io.c:2788 +#: io.c:2823 #, c-format msgid "input parser `%s' conflicts with previously installed input parser `%s'" msgstr "invoer-parser '%s' botst met eerder geïnstalleerde invoer-parser '%s'" -#: io.c:2795 +#: io.c:2830 #, c-format msgid "input parser `%s' failed to open `%s'" msgstr "invoer-parser '%s' kan '%s' niet openen" -#: io.c:2815 +#: io.c:2850 msgid "register_output_wrapper: received NULL pointer" msgstr "register_output_wrapper(): NULL-pointer gekregen" -#: io.c:2843 +#: io.c:2878 #, c-format msgid "" "output wrapper `%s' conflicts with previously installed output wrapper `%s'" msgstr "" "uitvoer-wrapper '%s' botst met eerder geïnstalleerde uitvoer-wrapper '%s'" -#: io.c:2850 +#: io.c:2885 #, c-format msgid "output wrapper `%s' failed to open `%s'" msgstr "uitvoer-wrapper '%s' kan '%s' niet openen" -#: io.c:2871 +#: io.c:2906 msgid "register_output_processor: received NULL pointer" msgstr "register_output_processor(): NULL-pointer gekregen" -#: io.c:2900 +#: io.c:2935 #, c-format msgid "" "two-way processor `%s' conflicts with previously installed two-way processor " @@ -2944,200 +2964,203 @@ msgid "" msgstr "" "tweeweg-processor '%s' botst met eerder geïnstalleerde tweeweg-processor '%s'" -#: io.c:2909 +#: io.c:2944 #, c-format msgid "two way processor `%s' failed to open `%s'" msgstr "tweeweg-processor '%s' kan '%s' niet openen" -#: io.c:3034 +#: io.c:3069 #, c-format msgid "data file `%s' is empty" msgstr "databestand '%s' is leeg" -#: io.c:3076 io.c:3084 +#: io.c:3111 io.c:3119 msgid "could not allocate more input memory" msgstr "kan geen extra invoergeheugen meer toewijzen" -#: io.c:3662 +#: io.c:3697 msgid "multicharacter value of `RS' is a gawk extension" msgstr "een 'RS' van meerdere tekens is een gawk-uitbreiding" -#: io.c:3809 +#: io.c:3844 msgid "IPv6 communication is not supported" msgstr "IPv6-communicatie wordt niet ondersteund" -#: main.c:321 +#: main.c:334 msgid "environment variable `POSIXLY_CORRECT' set: turning on `--posix'" msgstr "omgevingsvariabele 'POSIXLY_CORRECT' is gezet: '--posix' ingeschakeld" -#: main.c:327 +#: main.c:340 msgid "`--posix' overrides `--traditional'" msgstr "'--posix' overstijgt '--traditional'" -#: main.c:338 +#: main.c:351 msgid "`--posix'/`--traditional' overrides `--non-decimal-data'" msgstr "'--posix'/'--traditional' overstijgen '--non-decimal-data'" -#: main.c:342 +#: main.c:355 #, 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:346 +#: main.c:359 msgid "`--posix' overrides `--characters-as-bytes'" msgstr "'--posix' overstijgt '--characters-as-bytes'" -#: main.c:404 +#: main.c:417 #, c-format msgid "can't set binary mode on stdin (%s)" msgstr "kan standaardinvoer niet in binaire modus zetten (%s)" -#: main.c:407 +#: main.c:420 #, c-format msgid "can't set binary mode on stdout (%s)" msgstr "kan standaarduitvoer niet in binaire modus zetten (%s)" -#: main.c:409 +#: main.c:422 #, c-format msgid "can't set binary mode on stderr (%s)" msgstr "kan standaardfoutuitvoer niet in binaire modus zetten (%s)" -#: main.c:469 +#: main.c:482 msgid "no program text at all!" msgstr "helemaal geen programmatekst!" -#: main.c:563 +#: main.c:576 #, c-format msgid "Usage: %s [POSIX or GNU style options] -f progfile [--] file ...\n" msgstr "Gebruik: %s [opties] -f programmabestand [--] bestand...\n" -#: main.c:565 +#: main.c:578 #, c-format msgid "Usage: %s [POSIX or GNU style options] [--] %cprogram%c file ...\n" msgstr "" " of: %s [opties] [--] %cprogrammatekst%c bestand...\n" "\n" -#: main.c:570 +#: main.c:583 msgid "POSIX options:\t\tGNU long options: (standard)\n" msgstr "\tPOSIX-opties:\t\tEquivalente GNU-opties: (standaard)\n" -#: main.c:571 +#: main.c:584 msgid "\t-f progfile\t\t--file=progfile\n" msgstr "\t-f programmabestand\t--file=programmabestand\n" -#: main.c:572 +#: main.c:585 msgid "\t-F fs\t\t\t--field-separator=fs\n" msgstr "\t-F veldscheidingsteken\t--field-separator=veldscheidingsteken\n" -#: main.c:573 +#: main.c:586 msgid "\t-v var=val\t\t--assign=var=val\n" msgstr "" "\t-v var=waarde\t\t--assign=var=waarde\n" "\n" -#: main.c:574 +#: main.c:587 msgid "Short options:\t\tGNU long options: (extensions)\n" msgstr "\tKorte opties:\t\tEquivalente GNU-opties: (uitbreidingen)\n" -#: main.c:575 +#: main.c:588 msgid "\t-b\t\t\t--characters-as-bytes\n" msgstr "\t-b\t\t\t--characters-as-bytes\n" -#: main.c:576 +#: main.c:589 msgid "\t-c\t\t\t--traditional\n" msgstr "\t-c\t\t\t--traditional\n" -#: main.c:577 +#: main.c:590 msgid "\t-C\t\t\t--copyright\n" msgstr "\t-C\t\t\t--copyright\n" -#: main.c:578 +#: main.c:591 msgid "\t-d[file]\t\t--dump-variables[=file]\n" msgstr "\t-d[bestand]\t\t--dump-variables[=bestand]\n" -#: main.c:579 +#: main.c:592 msgid "\t-D[file]\t\t--debug[=file]\n" msgstr "\t-D[bestand]\t\t--debug[=bestand]\n" -#: main.c:580 +#: main.c:593 msgid "\t-e 'program-text'\t--source='program-text'\n" msgstr "\t-e 'programmatekst'\t--source='programmatekst'\n" -#: main.c:581 +#: main.c:594 msgid "\t-E file\t\t\t--exec=file\n" msgstr "\t-E bestand\t\t--exec=bestand\n" -#: main.c:582 +#: main.c:595 msgid "\t-g\t\t\t--gen-pot\n" msgstr "\t-g\t\t\t--gen-pot\n" -#: main.c:583 +#: main.c:596 msgid "\t-h\t\t\t--help\n" msgstr "\t-h\t\t\t--help\n" -#: main.c:584 +#: main.c:597 msgid "\t-i includefile\t\t--include=includefile\n" msgstr "\t-i include-bestand\t\t--include=include-bestand\n" -#: main.c:585 +#: main.c:598 msgid "\t-l library\t\t--load=library\n" msgstr "\t-l bibliotheek\t\t--load=bibliotheek\n" # FIXME: are arguments literal or translatable? -#: main.c:590 +#. TRANSLATORS: the "fatal" and "invalid" here are literal +#. values, they should not be translated. Thanks. +#. +#: main.c:603 msgid "\t-L[fatal|invalid]\t--lint[=fatal|invalid]\n" msgstr "\t-L[fatal|invalid]\t\t--lint[=fatal|invalid]\n" -#: main.c:591 +#: main.c:604 msgid "\t-M\t\t\t--bignum\n" msgstr "\t-M\t\t\t--bignum\n" -#: main.c:592 +#: main.c:605 msgid "\t-N\t\t\t--use-lc-numeric\n" msgstr "\t-N\t\t\t--use-lc-numeric\n" -#: main.c:593 +#: main.c:606 msgid "\t-n\t\t\t--non-decimal-data\n" msgstr "\t-n\t\t\t--non-decimal-data\n" -#: main.c:594 +#: main.c:607 msgid "\t-o[file]\t\t--pretty-print[=file]\n" msgstr "\t-o[bestand]\t\t--pretty-print[=bestand]\n" -#: main.c:595 +#: main.c:608 msgid "\t-O\t\t\t--optimize\n" msgstr "\t-O\t\t\t--optimize\n" -#: main.c:596 +#: main.c:609 msgid "\t-p[file]\t\t--profile[=file]\n" msgstr "\t-p[bestand]\t\t--profile[=bestand]\n" -#: main.c:597 +#: main.c:610 msgid "\t-P\t\t\t--posix\n" msgstr "\t-P\t\t\t--posix\n" -#: main.c:598 +#: main.c:611 msgid "\t-r\t\t\t--re-interval\n" msgstr "\t-r\t\t\t--re-interval\n" -#: main.c:599 +#: main.c:612 msgid "\t-S\t\t\t--sandbox\n" msgstr "\t-S\t\t\t--sandbox\n" -#: main.c:600 +#: main.c:613 msgid "\t-t\t\t\t--lint-old\n" msgstr "\t-t\t\t\t--lint-old\n" -#: main.c:601 +#: main.c:614 msgid "\t-V\t\t\t--version\n" msgstr "\t-V\t\t\t--version\n" -#: main.c:603 +#: main.c:616 msgid "\t-W nostalgia\t\t--nostalgia\n" msgstr "\t-W nostalgia\t\t\t--nostalgia\n" -#: main.c:606 +#: main.c:619 msgid "\t-Y\t\t--parsedebug\n" msgstr "\t-Y\t\t\t--parsedebug\n" @@ -3146,7 +3169,7 @@ msgstr "\t-Y\t\t\t--parsedebug\n" #. for this application. Please add _another line_ with the #. address for translation bugs. #. no-wrap -#: main.c:615 +#: main.c:628 msgid "" "\n" "To report bugs, see node `Bugs' in `gawk.info', which is\n" @@ -3159,7 +3182,7 @@ msgstr "" "Meld fouten in de vertaling aan .\n" "\n" -#: main.c:619 +#: main.c:632 msgid "" "gawk is a pattern scanning and processing language.\n" "By default it reads standard input and writes standard output.\n" @@ -3169,7 +3192,7 @@ msgstr "" "Standaard leest het van standaardinvoer en schrijft naar standaarduitvoer.\n" "\n" -#: main.c:623 +#: main.c:636 msgid "" "Examples:\n" "\tgawk '{ sum += $1 }; END { print sum }' file\n" @@ -3179,7 +3202,7 @@ msgstr "" "\tgawk '{ som += $1 }; END { print som }' bestand\n" "\tgawk -F: '{ print $1 }' /etc/passwd\n" -#: main.c:648 +#: main.c:661 #, c-format msgid "" "Copyright (C) 1989, 1991-%d Free Software Foundation.\n" @@ -3197,7 +3220,7 @@ msgstr "" "uitgegeven door de Free Software Foundation, naar keuze ofwel onder\n" "versie 3 of onder een nieuwere versie van die licentie.\n" -#: main.c:656 +#: main.c:669 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" @@ -3211,7 +3234,7 @@ msgstr "" "Zie de GNU General Public License voor meer details.\n" "\n" -#: main.c:662 +#: main.c:675 msgid "" "You should have received a copy of the GNU General Public License\n" "along with this program. If not, see http://www.gnu.org/licenses/.\n" @@ -3220,16 +3243,16 @@ msgstr "" "ontvangen te hebben; is dit niet het geval, dan kunt u deze licentie\n" "ook vinden op http://www.gnu.org/licenses/.\n" -#: main.c:699 +#: main.c:712 msgid "-Ft does not set FS to tab in POSIX awk" msgstr "-Ft maakt van FS geen tab in POSIX-awk" -#: main.c:986 +#: main.c:999 #, c-format msgid "unknown value for field spec: %d\n" msgstr "onbekende waarde voor veldspecificatie: %d\n" -#: main.c:1084 +#: main.c:1097 #, c-format msgid "" "%s: `%s' argument to `-v' not in `var=value' form\n" @@ -3238,118 +3261,118 @@ msgstr "" "%s: argument '%s' van '-v' is niet van de vorm 'var=waarde'\n" "\n" -#: main.c:1110 +#: main.c:1123 #, c-format msgid "`%s' is not a legal variable name" msgstr "'%s' is geen geldige variabelenaam" -#: main.c:1113 +#: main.c:1126 #, 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:1117 +#: main.c:1130 #, c-format msgid "cannot use gawk builtin `%s' as variable name" msgstr "kan in gawk ingebouwde '%s' niet als variabelenaam gebruiken" -#: main.c:1122 +#: main.c:1135 #, c-format msgid "cannot use function `%s' as variable name" msgstr "kan functie '%s' niet als variabelenaam gebruiken" -#: main.c:1175 +#: main.c:1190 msgid "floating point exception" msgstr "drijvendekomma-berekeningsfout" -#: main.c:1182 +#: main.c:1197 msgid "fatal error: internal error" msgstr "fatale fout: **interne fout**" -#: main.c:1197 +#: main.c:1212 msgid "fatal error: internal error: segfault" msgstr "fatale fout: **interne fout**: segmentatiefout" -#: main.c:1209 +#: main.c:1224 msgid "fatal error: internal error: stack overflow" msgstr "fatale fout: **interne fout**: stack is vol" -#: main.c:1268 +#: main.c:1283 #, c-format msgid "no pre-opened fd %d" msgstr "geen reeds-geopende bestandsdescriptor %d" -#: main.c:1275 +#: main.c:1290 #, c-format msgid "could not pre-open /dev/null for fd %d" msgstr "kan /dev/null niet openen voor bestandsdescriptor %d" -#: main.c:1489 +#: main.c:1504 msgid "empty argument to `-e/--source' ignored" msgstr "argument van '-e/--source' is leeg; genegeerd" -#: main.c:1560 +#: main.c:1575 msgid "-M ignored: MPFR/GMP support not compiled in" msgstr "" "optie '-M' is genegeerd; ondersteuning voor MPFR/GMP is niet meegecompileerd" -#: main.c:1581 +#: main.c:1596 #, c-format msgid "%s: option `-W %s' unrecognized, ignored\n" msgstr "%s: optie '-W %s' is onbekend; genegeerd\n" -#: main.c:1634 +#: main.c:1649 #, c-format msgid "%s: option requires an argument -- %c\n" msgstr "%s: optie vereist een argument -- %c\n" -#: mpfr.c:557 +#: mpfr.c:559 #, c-format msgid "PREC value `%.*s' is invalid" msgstr "PREC-waarde '%.*s' is ongeldig" -#: mpfr.c:615 +#: mpfr.c:617 #, c-format msgid "RNDMODE value `%.*s' is invalid" msgstr "RNDMODE-waarde '%.*s' is ongeldig" -#: mpfr.c:711 +#: mpfr.c:714 #, c-format msgid "%s: received non-numeric argument" msgstr "%s: niet-numeriek argument ontvangen" -#: mpfr.c:820 +#: mpfr.c:824 msgid "compl(%Rg): negative value will give strange results" msgstr "compl(%Rg): negatieve waarden geven rare resultaten" -#: mpfr.c:824 +#: mpfr.c:828 msgid "comp(%Rg): fractional value will be truncated" msgstr "compl(%Rg): cijfers na de komma worden afgekapt" -#: mpfr.c:836 +#: mpfr.c:840 #, c-format msgid "cmpl(%Zd): negative values will give strange results" msgstr "compl(%Zd): negatieve waarden geven rare resultaten" -#: mpfr.c:855 +#: mpfr.c:859 #, c-format msgid "%s: received non-numeric argument #%d" msgstr "%s: niet-numeriek argument #%d ontvangen" -#: mpfr.c:865 +#: mpfr.c:869 msgid "%s: argument #%d has invalid value %Rg, using 0" msgstr "%s: argument #%d heeft ongeldige waarde %Rg; 0 wordt gebruikt" -#: mpfr.c:877 +#: mpfr.c:881 msgid "%s: argument #%d negative value %Rg will give strange results" msgstr "%s: negatieve waarde %2$Rg van argument #%1$d geeft rare resultaten" -#: mpfr.c:883 +#: mpfr.c:887 msgid "%s: argument #%d fractional value %Rg will be truncated" msgstr "" "%s: cijfers na de komma van waarde %2$Rg van argument #%1$d worden afgekapt" -#: mpfr.c:898 +#: mpfr.c:902 #, c-format msgid "%s: argument #%d negative value %Zd will give strange results" msgstr "%1$s: negatieve waarde %3$Zd van argument #%2$d geeft rare resultaten" @@ -3359,24 +3382,24 @@ msgstr "%1$s: negatieve waarde %3$Zd van argument #%2$d geeft rare resultaten" msgid "cmd. line:" msgstr "commandoregel:" -#: node.c:418 +#: node.c:434 msgid "backslash at end of string" msgstr "backslash aan het einde van de string" -#: node.c:497 +#: node.c:513 #, c-format msgid "old awk does not support the `\\%c' escape sequence" msgstr "oude 'awk' kent de stuurcodereeks '\\%c' niet" -#: node.c:548 +#: node.c:564 msgid "POSIX does not allow `\\x' escapes" msgstr "POSIX staat stuurcode '\\x' niet toe" -#: node.c:554 +#: node.c:570 msgid "no hex digits in `\\x' escape sequence" msgstr "geen hex cijfers in stuurcodereeks '\\x'" -#: node.c:576 +#: node.c:592 #, c-format msgid "" "hex escape \\x%.*s of %d characters probably not interpreted the way you " @@ -3385,12 +3408,12 @@ msgstr "" "hexadecimale stuurcode \\x%.*s van %d tekens wordt waarschijnlijk niet " "afgehandeld zoals u verwacht" -#: node.c:591 +#: node.c:607 #, c-format msgid "escape sequence `\\%c' treated as plain `%c'" msgstr "stuurcodereeks '\\%c' behandeld als normale '%c'" -#: node.c:735 +#: node.c:744 msgid "" "Invalid multibyte data detected. There may be a mismatch between your data " "and your locale." @@ -3410,16 +3433,16 @@ msgstr "" msgid "%s %s `%s': could not set close-on-exec: (fcntl F_SETFD: %s)" msgstr "%s %s '%s': kan 'close-on-exec' niet activeren: (fcntl F_SETFD: %s)" -#: profile.c:91 +#: profile.c:94 #, c-format msgid "could not open `%s' for writing: %s" msgstr "kan '%s' niet openen om te schrijven: %s" -#: profile.c:93 +#: profile.c:96 msgid "sending profile to standard error" msgstr "profiel gaat naar standaardfoutuitvoer" -#: profile.c:213 +#: profile.c:216 #, c-format msgid "" "\t# %s rule(s)\n" @@ -3428,7 +3451,7 @@ msgstr "" "\t# %s regel(s)\n" "\n" -#: profile.c:218 +#: profile.c:221 #, c-format msgid "" "\t# Rule(s)\n" @@ -3437,16 +3460,16 @@ msgstr "" "\t# Regel(s)\n" "\n" -#: profile.c:292 +#: profile.c:295 #, c-format msgid "internal error: %s with null vname" msgstr "**interne fout**: %s met lege 'vname'" -#: profile.c:558 +#: profile.c:561 msgid "internal error: builtin with null fname" msgstr "**interne fout**: ingebouwde functie met lege 'fname'" -#: profile.c:978 +#: profile.c:1006 #, c-format msgid "" "\t# Loaded extensions (-l and/or @load)\n" @@ -3455,12 +3478,12 @@ msgstr "" "\t# Geladen uitbreidingen ('-l' en/of '@load')\n" "\n" -#: profile.c:1001 +#: profile.c:1029 #, c-format msgid "\t# gawk profile, created %s\n" msgstr "\t# gawk-profiel, gemaakt op %s\n" -#: profile.c:1555 +#: profile.c:1600 #, c-format msgid "" "\n" @@ -3469,98 +3492,106 @@ msgstr "" "\n" "\t# Functies, alfabetisch geordend\n" -#: profile.c:1593 +#: profile.c:1638 #, c-format msgid "redir2str: unknown redirection type %d" msgstr "redir2str(): onbekend omleidingstype %d" -#: re.c:607 +#: re.c:610 #, c-format msgid "regexp component `%.*s' should probably be `[%.*s]'" msgstr "" "component '%.*s' van reguliere expressie moet vermoedelijk '[%.*s]' zijn" -#: regcomp.c:139 +#: regcomp.c:143 msgid "Success" msgstr "Gelukt" -#: regcomp.c:142 +#: regcomp.c:146 msgid "No match" msgstr "Geen overeenkomsten" -#: regcomp.c:145 +#: regcomp.c:149 msgid "Invalid regular expression" msgstr "Ongeldige reguliere expressie" -#: regcomp.c:148 +#: regcomp.c:152 msgid "Invalid collation character" msgstr "Ongeldig samengesteld teken" -#: regcomp.c:151 +#: regcomp.c:155 msgid "Invalid character class name" msgstr "Ongeldige tekenklassenaam" -#: regcomp.c:154 +#: regcomp.c:158 msgid "Trailing backslash" msgstr "Backslash aan het eind" -#: regcomp.c:157 +#: regcomp.c:161 msgid "Invalid back reference" msgstr "Ongeldige terugverwijzing" -#: regcomp.c:160 +#: regcomp.c:164 msgid "Unmatched [, [^, [:, [., or [=" msgstr "Ongepaarde [, [^, [:, [., of [=" -#: regcomp.c:163 +#: regcomp.c:167 msgid "Unmatched ( or \\(" msgstr "Ongepaarde ( of \\(" -#: regcomp.c:166 +#: regcomp.c:170 msgid "Unmatched \\{" msgstr "Ongepaarde \\{" -#: regcomp.c:169 +#: regcomp.c:173 msgid "Invalid content of \\{\\}" msgstr "Ongeldige inhoud van \\{\\}" -#: regcomp.c:172 +#: regcomp.c:176 msgid "Invalid range end" msgstr "Ongeldig bereikeinde" -#: regcomp.c:175 +#: regcomp.c:179 msgid "Memory exhausted" msgstr "Onvoldoende geheugen beschikbaar" -#: regcomp.c:178 +#: regcomp.c:182 msgid "Invalid preceding regular expression" msgstr "Ongeldige voorafgaande reguliere expressie" -#: regcomp.c:181 +#: regcomp.c:185 msgid "Premature end of regular expression" msgstr "Voortijdig einde van reguliere expressie" -#: regcomp.c:184 +#: regcomp.c:188 msgid "Regular expression too big" msgstr "Reguliere expressie is te groot" -#: regcomp.c:187 +#: regcomp.c:191 msgid "Unmatched ) or \\)" msgstr "Ongepaarde ) of \\)" -#: regcomp.c:712 +#: regcomp.c:701 msgid "No previous regular expression" msgstr "Geen eerdere reguliere expressie" -#: symbol.c:678 +#: symbol.c:684 #, c-format msgid "function `%s': can't use function `%s' as a parameter name" msgstr "functie '%s': kan functie '%s' niet als parameternaam gebruiken" -#: symbol.c:810 +#: symbol.c:816 msgid "can not pop main context" msgstr "kan hoofdcontext niet poppen" +#~ 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" + +#~ msgid "function `%s': missing argument #%d" +#~ msgstr "functie '%s': ontbrekend argument #%d" + #~ msgid "`getline var' invalid inside `%s' rule" #~ msgstr "'getline var' is ongeldig binnen een '%s'-regel" diff --git a/po/pl.po b/po/pl.po index 89c6c92..1454cc6 100644 --- a/po/pl.po +++ b/po/pl.po @@ -9,7 +9,7 @@ msgid "" msgstr "" "Project-Id-Version: gawk 4.1.0b\n" "Report-Msgid-Bugs-To: bug-gawk@gnu.org\n" -"POT-Creation-Date: 2015-05-19 16:06+0300\n" +"POT-Creation-Date: 2016-08-25 06:19+0300\n" "PO-Revision-Date: 2014-03-22 17:49+0100\n" "Last-Translator: Wojciech Polak \n" "Language-Team: Polish \n" @@ -20,88 +20,88 @@ msgstr "" "Plural-Forms: nplurals=3; plural=(n==1 ? 0 : n%10>=2 && n%10<=4 && (n%100<10 " "|| n%100>=20) ? 1 : 2);\n" -#: array.c:256 +#: array.c:259 #, c-format msgid "from %s" msgstr "od %s" -#: array.c:357 +#: array.c:360 msgid "attempt to use a scalar value as array" msgstr "próba użycia wartoÅ›ci skalarnej jako tablicy" -#: array.c:359 +#: array.c:362 #, c-format msgid "attempt to use scalar parameter `%s' as an array" msgstr "próba użycia parametru `%s' skalaru jako tablicy" -#: array.c:362 +#: array.c:365 #, c-format msgid "attempt to use scalar `%s' as an array" msgstr "próba użycia skalaru `%s' jako tablicy" -#: array.c:409 array.c:576 builtin.c:85 builtin.c:1606 builtin.c:1652 -#: builtin.c:1665 builtin.c:2112 builtin.c:2126 eval.c:1149 eval.c:1153 -#: eval.c:1564 +#: array.c:412 array.c:579 builtin.c:85 builtin.c:1612 builtin.c:1658 +#: builtin.c:1671 builtin.c:2160 builtin.c:2179 eval.c:1141 eval.c:1145 +#: eval.c:1556 #, c-format msgid "attempt to use array `%s' in a scalar context" msgstr "próba użycia tablicy `%s' w kontekÅ›cie skalaru" -#: array.c:583 +#: array.c:586 #, c-format msgid "delete: index `%s' not in array `%s'" msgstr "delete: indeks `%s' nie jest w tablicy `%s'" -#: array.c:597 +#: array.c:600 #, c-format msgid "attempt to use scalar `%s[\"%.*s\"]' as an array" msgstr "próba użycia skalaru `%s[\"%.*s\"]' jako tablicy" -#: array.c:776 +#: array.c:779 msgid "adump: first argument not an array" msgstr "adump: pierwszy argument nie jest tablicÄ…" -#: array.c:815 +#: array.c:818 msgid "asort: second argument not an array" msgstr "asort: drugi argument nie jest tablicÄ…" -#: array.c:816 +#: array.c:819 msgid "asorti: second argument not an array" msgstr "asorti: drugi argument nie jest tablicÄ…" -#: array.c:823 +#: array.c:826 msgid "asort: first argument not an array" msgstr "asort: pierwszy argument nie jest tablicÄ…" -#: array.c:824 +#: array.c:827 msgid "asorti: first argument not an array" msgstr "asorti: pierwszy argument nie jest tablicÄ…" -#: array.c:831 +#: array.c:834 msgid "asort: cannot use a subarray of first arg for second arg" msgstr "" "asort: nie można użyć podtablicy pierwszego argumentu dla drugiego argumentu" -#: array.c:832 +#: array.c:835 msgid "asorti: cannot use a subarray of first arg for second arg" msgstr "" "asorti: nie można użyć podtablicy pierwszego argumentu dla drugiego argumentu" -#: array.c:837 +#: array.c:840 msgid "asort: cannot use a subarray of second arg for first arg" msgstr "" "asort: nie można użyć podtablicy drugiego argumentu dla pierwszego argumentu" -#: array.c:838 +#: array.c:841 msgid "asorti: cannot use a subarray of second arg for first arg" msgstr "" "asorti: nie można użyć podtablicy drugiego argumentu dla pierwszego argumentu" -#: array.c:1313 +#: array.c:1316 #, c-format msgid "`%s' is invalid as a function name" msgstr "nieprawidÅ‚owa nazwa funkcji `%s'" -#: array.c:1317 +#: array.c:1320 #, c-format msgid "sort comparison function `%s' is not defined" msgstr "funkcja porównujÄ…ca w sortowaniu `%s' nie zostaÅ‚a zdefiniowna" @@ -145,11 +145,11 @@ msgstr "powielone wartoÅ›ci case w ciele switch: %s" msgid "duplicate `default' detected in switch body" msgstr "wykryto powielony `default' w ciele switch" -#: awkgram.y:793 awkgram.y:3763 +#: awkgram.y:793 awkgram.y:3774 msgid "`break' is not allowed outside a loop or switch" msgstr "instrukcja `break' poza pÄ™tlÄ… lub switch'em jest niedozwolona" -#: awkgram.y:802 awkgram.y:3755 +#: awkgram.y:802 awkgram.y:3766 msgid "`continue' is not allowed outside a loop" msgstr "instrukcja `continue' poza pÄ™tlÄ… jest niedozwolona" @@ -244,7 +244,7 @@ msgstr "próba użycia funkcji `%s' jako tablicy" msgid "invalid subscript expression" msgstr "nieprawidÅ‚owe wyrażenie indeksowe" -#: awkgram.y:2047 awkgram.y:2067 gawkapi.c:206 gawkapi.c:224 msg.c:126 +#: awkgram.y:2047 awkgram.y:2067 gawkapi.c:206 gawkapi.c:223 msg.c:126 msgid "warning: " msgstr "ostrzeżenie: " @@ -252,267 +252,272 @@ msgstr "ostrzeżenie: " msgid "fatal: " msgstr "fatalny bÅ‚Ä…d: " -#: awkgram.y:2115 +#: awkgram.y:2116 msgid "unexpected newline or end of string" msgstr "niespodziewany znak nowego wiersza lub koÅ„ca Å‚aÅ„cucha" -#: awkgram.y:2394 awkgram.y:2470 awkgram.y:2693 debug.c:523 debug.c:539 -#: debug.c:2812 debug.c:5055 +#: awkgram.y:2397 awkgram.y:2473 awkgram.y:2696 debug.c:523 debug.c:539 +#: debug.c:2812 debug.c:5101 #, 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:2395 awkgram.y:2520 +#: awkgram.y:2398 awkgram.y:2523 #, c-format msgid "can't open shared library `%s' for reading (%s)" msgstr "nie można otworzyć współdzielonej biblioteki `%s' do czytania (%s)" -#: awkgram.y:2397 awkgram.y:2471 awkgram.y:2521 builtin.c:135 debug.c:5206 +#: awkgram.y:2400 awkgram.y:2474 awkgram.y:2524 builtin.c:135 debug.c:5252 msgid "reason unknown" msgstr "nieznany powód" -#: awkgram.y:2406 awkgram.y:2430 +#: awkgram.y:2409 awkgram.y:2433 #, c-format msgid "can't include `%s' and use it as a program file" msgstr "nie można doÅ‚Ä…czyć `%s' i używać go jako pliku programu" -#: awkgram.y:2419 +#: awkgram.y:2422 #, c-format msgid "already included source file `%s'" msgstr "plik źródÅ‚owy `%s' jest już zaÅ‚Ä…czony" -#: awkgram.y:2420 +#: awkgram.y:2423 #, c-format msgid "already loaded shared library `%s'" msgstr "biblioteka współdzielona jest już zaÅ‚adowana `%s'" -#: awkgram.y:2455 +#: awkgram.y:2458 msgid "@include is a gawk extension" msgstr "@include jest rozszerzeniem gawk" -#: awkgram.y:2461 +#: awkgram.y:2464 msgid "empty filename after @include" msgstr "pusta nazwa pliku po @include" -#: awkgram.y:2505 +#: awkgram.y:2508 msgid "@load is a gawk extension" msgstr "@load jest rozszerzeniem gawk" -#: awkgram.y:2511 +#: awkgram.y:2514 msgid "empty filename after @load" msgstr "pusta nazwa pliku po @load" -#: awkgram.y:2645 +#: awkgram.y:2648 msgid "empty program text on command line" msgstr "pusty tekst programu w linii poleceÅ„" -#: awkgram.y:2760 +#: awkgram.y:2763 #, c-format msgid "can't read sourcefile `%s' (%s)" msgstr "nie można otworzyć pliku źródÅ‚owego `%s' (%s)" -#: awkgram.y:2771 +#: awkgram.y:2774 #, c-format msgid "source file `%s' is empty" msgstr "plik źródÅ‚owy `%s' jest pusty" -#: awkgram.y:2830 +#: awkgram.y:2833 #, c-format msgid "PEBKAC error: invalid character '\\%03o' in source code" msgstr "" -#: awkgram.y:2961 +#: awkgram.y:2964 msgid "source file does not end in newline" msgstr "plik źródÅ‚owy nie posiada na koÅ„cu znaku nowego wiersza" -#: awkgram.y:3074 +#: awkgram.y:3081 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:3101 +#: awkgram.y:3108 #, 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:3105 +#: awkgram.y:3112 #, 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:3112 +#: awkgram.y:3119 msgid "unterminated regexp" msgstr "niezakoÅ„czone wyrażenie regularne" -#: awkgram.y:3116 +#: awkgram.y:3123 msgid "unterminated regexp at end of file" msgstr "niezakoÅ„czone wyrażenie regularne na koÅ„cu pliku" -#: awkgram.y:3174 +#: awkgram.y:3181 msgid "use of `\\ #...' line continuation is not portable" msgstr "użycie `\\ #...' kontynuacji linii nie jest przenoÅ›ne" -#: awkgram.y:3190 +#: awkgram.y:3197 msgid "backslash not last character on line" msgstr "backslash nie jest ostatnim znakiem w wierszu" -#: awkgram.y:3251 +#: awkgram.y:3235 awkgram.y:3237 +#, fuzzy +msgid "multidimensional arrays are a gawk extension" +msgstr "poÅ›rednie wywoÅ‚ania funkcji sÄ… rozszerzeniem gawk" + +#: awkgram.y:3262 msgid "POSIX does not allow operator `**='" msgstr "POSIX nie zezwala na operator `**='" -#: awkgram.y:3253 +#: awkgram.y:3264 msgid "old awk does not support operator `**='" msgstr "stary awk nie wspiera operatora `**='" -#: awkgram.y:3262 +#: awkgram.y:3273 msgid "POSIX does not allow operator `**'" msgstr "POSIX nie zezwala na operator `**'" -#: awkgram.y:3264 +#: awkgram.y:3275 msgid "old awk does not support operator `**'" msgstr "stary awk nie wspiera operatora `**'" -#: awkgram.y:3299 +#: awkgram.y:3310 msgid "operator `^=' is not supported in old awk" msgstr "operator `^=' nie jest wspierany w starym awk" -#: awkgram.y:3307 +#: awkgram.y:3318 msgid "operator `^' is not supported in old awk" msgstr "operator `^' nie jest wspierany w starym awk" -#: awkgram.y:3404 awkgram.y:3422 command.y:1180 +#: awkgram.y:3415 awkgram.y:3433 command.y:1187 msgid "unterminated string" msgstr "niezakoÅ„czony Å‚aÅ„cuch" -#: awkgram.y:3643 +#: awkgram.y:3654 #, c-format msgid "invalid char '%c' in expression" msgstr "nieprawidÅ‚owy znak '%c' w wyrażeniu" -#: awkgram.y:3690 +#: awkgram.y:3701 #, c-format msgid "`%s' is a gawk extension" msgstr "`%s' jest rozszerzeniem gawk" -#: awkgram.y:3695 +#: awkgram.y:3706 #, c-format msgid "POSIX does not allow `%s'" msgstr "POSIX nie zezwala na `%s'" -#: awkgram.y:3703 +#: awkgram.y:3714 #, c-format msgid "`%s' is not supported in old awk" msgstr "`%s' nie jest wspierany w starym awk" -#: awkgram.y:3793 +#: awkgram.y:3804 msgid "`goto' considered harmful!\n" msgstr "`goto' uważane za szkodliwe!\n" -#: awkgram.y:3827 +#: awkgram.y:3873 #, 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:3862 +#: awkgram.y:3908 #, 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:3867 +#: awkgram.y:3913 #, c-format msgid "%s third parameter is not a changeable object" msgstr "%s trzeci parametr nie jest zmiennym obiektem" -#: awkgram.y:3950 awkgram.y:3953 +#: awkgram.y:3996 awkgram.y:3999 msgid "match: third argument is a gawk extension" msgstr "match: trzeci argument jest rozszerzeniem gawk" -#: awkgram.y:4007 awkgram.y:4010 +#: awkgram.y:4053 awkgram.y:4056 msgid "close: second argument is a gawk extension" msgstr "close: drugi argument jest rozszerzeniem gawk" -#: awkgram.y:4022 +#: awkgram.y:4068 msgid "use of dcgettext(_\"...\") is incorrect: remove leading underscore" msgstr "nieprawidÅ‚owe użycie dcgettext(_\"...\"): usuÅ„ znak podkreÅ›lenia" -#: awkgram.y:4037 +#: awkgram.y:4083 msgid "use of dcngettext(_\"...\") is incorrect: remove leading underscore" msgstr "nieprawidÅ‚owe użycie dcngettext(_\"...\"): usuÅ„ znak podkreÅ›lenia" -#: awkgram.y:4056 +#: awkgram.y:4102 msgid "index: regexp constant as second argument is not allowed" msgstr "index: staÅ‚y regexp jako drugi argument nie jest dozwolony" -#: awkgram.y:4109 +#: awkgram.y:4155 #, c-format msgid "function `%s': parameter `%s' shadows global variable" msgstr "funkcja `%s': parametr `%s' zasÅ‚ania globalnÄ… zmiennÄ…" -#: awkgram.y:4166 debug.c:4041 debug.c:4084 debug.c:5204 +#: awkgram.y:4214 debug.c:4087 debug.c:4130 debug.c:5250 #, c-format msgid "could not open `%s' for writing (%s)" msgstr "nie można otworzyć `%s' do zapisu (%s)" -#: awkgram.y:4167 +#: awkgram.y:4215 msgid "sending variable list to standard error" msgstr "wysyÅ‚anie listy zmiennych na standardowe wyjÅ›cie diagnostyczne" -#: awkgram.y:4175 +#: awkgram.y:4223 #, c-format msgid "%s: close failed (%s)" msgstr "%s: zamkniÄ™cie nie powiodÅ‚o siÄ™ (%s)" -#: awkgram.y:4200 +#: awkgram.y:4248 msgid "shadow_funcs() called twice!" msgstr "shadow_funcs() wywoÅ‚ana podwójnie!" -#: awkgram.y:4208 +#: awkgram.y:4256 msgid "there were shadowed variables." msgstr "wystÄ…piÅ‚y przykryte zmienne." -#: awkgram.y:4279 +#: awkgram.y:4327 #, c-format msgid "function name `%s' previously defined" msgstr "nazwa funkcji `%s' zostaÅ‚a zdefiniowana poprzednio" -#: awkgram.y:4325 +#: awkgram.y:4373 #, 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:4328 +#: awkgram.y:4376 #, c-format msgid "function `%s': can't use special variable `%s' as a function parameter" msgstr "" "funkcja `%s': nie można użyć specjalnej zmiennej `%s' jako parametru funkcji" -#: awkgram.y:4336 +#: awkgram.y:4384 #, c-format msgid "function `%s': parameter #%d, `%s', duplicates parameter #%d" msgstr "funkcja `%s': parametr #%d, `%s', powiela parametr #%d" -#: awkgram.y:4423 awkgram.y:4429 +#: awkgram.y:4471 awkgram.y:4477 #, c-format msgid "function `%s' called but never defined" msgstr "funkcja `%s' zostaÅ‚a wywoÅ‚ana, ale nigdy nie zostaÅ‚a zdefiniowana" -#: awkgram.y:4433 +#: awkgram.y:4481 #, c-format msgid "function `%s' defined but never called directly" msgstr "" "funkcja `%s' zostaÅ‚a zdefiniowana, ale nigdy nie zostaÅ‚a wywoÅ‚ana " "bezpoÅ›rednio" -#: awkgram.y:4465 +#: awkgram.y:4513 #, 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:4480 +#: awkgram.y:4528 #, c-format msgid "" "function `%s' called with space between name and `(',\n" @@ -522,21 +527,21 @@ msgstr "" "`(',\n" "lub użyta jako zmienna lub jako tablica" -#: awkgram.y:4686 +#: awkgram.y:4734 msgid "division by zero attempted" msgstr "próba dzielenia przez zero" -#: awkgram.y:4695 +#: awkgram.y:4743 #, c-format msgid "division by zero attempted in `%%'" msgstr "próba dzielenia przez zero w `%%'" -#: awkgram.y:5015 +#: awkgram.y:5064 msgid "" "cannot assign a value to the result of a field post-increment expression" msgstr "nie można przypisać wartoÅ›ci do wyniku tego wyrażenia" -#: awkgram.y:5018 +#: awkgram.y:5067 #, c-format msgid "invalid target of assignment (opcode %s)" msgstr "nieprawidÅ‚owy cel przypisania (opcode %s)" @@ -571,208 +576,218 @@ 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:244 +#: builtin.c:241 +#, fuzzy, c-format +msgid "fflush: cannot flush: two-way pipe `%s' has closed write end" +msgstr "" +"fflush: nie można opróżnić: potok `%s' otwarty do czytania, a nie do zapisu" + +#: builtin.c:247 #, 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:351 +#: builtin.c:354 msgid "index: received non-string first argument" msgstr "index: otrzymano pierwszy argument, który nie jest Å‚aÅ„cuchem" -#: builtin.c:353 +#: builtin.c:356 msgid "index: received non-string second argument" msgstr "index: otrzymano drugi argument, który nie jest Å‚aÅ„cuchem" -#: builtin.c:466 mpfr.c:777 +#: builtin.c:469 mpfr.c:781 msgid "int: received non-numeric argument" msgstr "int: otrzymano argument, który nie jest liczbÄ…" -#: builtin.c:503 +#: builtin.c:506 msgid "length: received array argument" msgstr "length: otrzymano argument, który jest tablicÄ…" -#: builtin.c:506 +#: builtin.c:509 msgid "`length(array)' is a gawk extension" msgstr "`length(tablica)' jest rozszerzeniem gawk" -#: builtin.c:525 +#: builtin.c:528 msgid "length: received non-string argument" msgstr "length: otrzymano argument, który nie jest Å‚aÅ„cuchem" -#: builtin.c:554 +#: builtin.c:557 msgid "log: received non-numeric argument" msgstr "log: otrzymano argument, który nie jest liczbÄ…" -#: builtin.c:557 +#: builtin.c:560 #, c-format msgid "log: received negative argument %g" msgstr "log: otrzymano ujemny argument %g" -#: builtin.c:755 builtin.c:760 builtin.c:911 +#: builtin.c:758 builtin.c:763 builtin.c:914 msgid "fatal: must use `count$' on all formats or none" msgstr "fatal: należy użyć `count$' we wszystkich formatach lub nic" -#: builtin.c:830 +#: builtin.c:833 #, c-format msgid "field width is ignored for `%%' specifier" msgstr "szerokość pola jest ignorowana dla specyfikatora `%%'" -#: builtin.c:832 +#: builtin.c:835 #, c-format msgid "precision is ignored for `%%' specifier" msgstr "precyzja jest ignorowana dla specyfikatora `%%'" -#: builtin.c:834 +#: builtin.c:837 #, c-format msgid "field width and precision are ignored for `%%' specifier" msgstr "szerokość pola i precyzja sÄ… ignorowane dla specyfikatora `%%'" -#: builtin.c:885 +#: builtin.c:888 msgid "fatal: `$' is not permitted in awk formats" msgstr "fatal: `$' jest niedozwolony w formatach awk" -#: builtin.c:894 +#: builtin.c:897 msgid "fatal: arg count with `$' must be > 0" msgstr "fatal: argument count z `$' musi być > 0" -#: builtin.c:898 +#: builtin.c:901 #, c-format msgid "fatal: arg count %ld greater than total number of supplied arguments" msgstr "" "fatal: argument count %ld wiÄ™kszy niż caÅ‚kowita suma argumentów dostarczonych" -#: builtin.c:902 +#: builtin.c:905 msgid "fatal: `$' not permitted after period in format" msgstr "fatal: `$' jest niedozwolony po kropce w formacie" -#: builtin.c:921 +#: builtin.c:924 msgid "fatal: no `$' supplied for positional field width or precision" msgstr "fatal: brak `$' dla pozycyjnej szerokoÅ›ci pola lub precyzji" -#: builtin.c:991 +#: builtin.c:994 msgid "`l' is meaningless in awk formats; ignored" msgstr "`l' jest bezsensowny w formatach awk; zignorowany" -#: builtin.c:995 +#: builtin.c:998 msgid "fatal: `l' is not permitted in POSIX awk formats" msgstr "fatal: `l' jest niedozwolony w formatach POSIX awk" -#: builtin.c:1008 +#: builtin.c:1011 msgid "`L' is meaningless in awk formats; ignored" msgstr "`L' jest bezsensowny w formatach awk; zignorowany" -#: builtin.c:1012 +#: builtin.c:1015 msgid "fatal: `L' is not permitted in POSIX awk formats" msgstr "fatal: `L' jest niedozwolony w formatach POSIX awk" -#: builtin.c:1025 +#: builtin.c:1028 msgid "`h' is meaningless in awk formats; ignored" msgstr "`h' jest bezsensowny w formatach awk; zignorowany" -#: builtin.c:1029 +#: builtin.c:1032 msgid "fatal: `h' is not permitted in POSIX awk formats" msgstr "fatal: `h' jest niedozwolony w formatach POSIX awk" -#: builtin.c:1055 +#: builtin.c:1058 #, fuzzy, c-format msgid "[s]printf: value %g is too big for %%c format" msgstr "[s]printf: wartość %g jest poza zasiÄ™giem dla formatu `%%%c'" -#: builtin.c:1068 +#: builtin.c:1071 #, fuzzy, c-format msgid "[s]printf: value %g is not a valid wide character" msgstr "[s]printf: wartość %g jest poza zasiÄ™giem dla formatu `%%%c'" -#: builtin.c:1454 +#: builtin.c:1457 #, 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:1552 +#: builtin.c:1555 #, c-format msgid "ignoring unknown format specifier character `%c': no argument converted" msgstr "" "pominiÄ™cie nieznanego formatu specyfikatora znaku `%c': nie skonwertowano " "argumentu" -#: builtin.c:1557 +#: builtin.c:1560 msgid "fatal: not enough arguments to satisfy format string" msgstr "" "fatal: brak wystarczajÄ…cej liczby argumentów, aby zaspokoić Å‚aÅ„cuch " "formatujÄ…cy" -#: builtin.c:1559 +#: builtin.c:1562 msgid "^ ran out for this one" msgstr "zabrakÅ‚o ^" -#: builtin.c:1566 +#: builtin.c:1569 msgid "[s]printf: format specifier does not have control letter" msgstr "[s]printf: specyfikator formatu nie posiada kontrolnej litery" -#: builtin.c:1569 +#: builtin.c:1572 msgid "too many arguments supplied for format string" msgstr "zbyt dużo podanych argumentów w Å‚aÅ„cuchu formatujÄ…cym" -#: builtin.c:1625 +#: builtin.c:1631 msgid "sprintf: no arguments" msgstr "sprintf: brak argumentów" -#: builtin.c:1648 builtin.c:1659 +#: builtin.c:1654 builtin.c:1665 msgid "printf: no arguments" msgstr "printf: brak argumentów" -#: builtin.c:1702 +#: builtin.c:1676 +msgid "printf: attempt to write to closed write end of two-way pipe" +msgstr "" + +#: builtin.c:1713 msgid "sqrt: received non-numeric argument" msgstr "sqrt: otrzymano argument, który nie jest liczbÄ…" -#: builtin.c:1706 +#: builtin.c:1717 #, c-format msgid "sqrt: called with negative argument %g" msgstr "sqrt: wywoÅ‚ana z ujemnym argumentem %g" -#: builtin.c:1737 +#: builtin.c:1748 #, c-format msgid "substr: length %g is not >= 1" msgstr "substr: dÅ‚ugość %g nie jest >= 1" -#: builtin.c:1739 +#: builtin.c:1750 #, c-format msgid "substr: length %g is not >= 0" msgstr "substr: dÅ‚ugość %g nie jest >= 0" -#: builtin.c:1753 +#: builtin.c:1764 #, 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:1758 +#: builtin.c:1769 #, 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:1770 +#: builtin.c:1781 #, 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:1775 +#: builtin.c:1786 #, 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:1798 +#: builtin.c:1809 msgid "substr: source string is zero length" msgstr "substr: Å‚aÅ„cuch źródÅ‚owy ma zerowÄ… dÅ‚ugość" -#: builtin.c:1812 +#: builtin.c:1823 #, 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:1820 +#: builtin.c:1831 #, c-format msgid "" "substr: length %g at start index %g exceeds length of first argument (%lu)" @@ -780,527 +795,535 @@ msgstr "" "substr: dÅ‚ugość %g zaczynajÄ…c od %g przekracza dÅ‚ugość pierwszego argumentu " "(%lu)" -#: builtin.c:1892 +#: builtin.c:1903 msgid "strftime: format value in PROCINFO[\"strftime\"] has numeric type" msgstr "" "strftime: wartość formatu w PROCINFO[\"strftime\"] posiada typ numeryczny" -#: builtin.c:1915 +#: builtin.c:1926 msgid "strftime: received non-numeric second argument" msgstr "strftime: otrzymano drugi argument, który nie jest liczbÄ…" -#: builtin.c:1925 +#: builtin.c:1936 msgid "strftime: second argument less than 0 or too big for time_t" msgstr "strftime: drugi argument mniejszy od 0 lub zbyt duży dla time_t" -#: builtin.c:1932 +#: builtin.c:1943 #, fuzzy msgid "strftime: second argument out of range for time_t" msgstr "strftime: drugi argument mniejszy od 0 lub zbyt duży dla time_t" -#: builtin.c:1941 +#: builtin.c:1952 msgid "strftime: received non-string first argument" msgstr "strftime: otrzymano pierwszy argument, który nie jest Å‚aÅ„cuchem" -#: builtin.c:1948 +#: builtin.c:1959 msgid "strftime: received empty format string" msgstr "strftime: otrzymano pusty Å‚aÅ„cuch formatujÄ…cy" -#: builtin.c:2017 +#: builtin.c:2028 msgid "mktime: received non-string argument" msgstr "mktime: otrzymano argument, który nie jest Å‚aÅ„cuchem" -#: builtin.c:2034 +#: builtin.c:2045 msgid "mktime: at least one of the values is out of the default range" msgstr "mktime: przynajmniej jedna z wartoÅ›ci jest poza domyÅ›lnym zakresem" -#: builtin.c:2069 +#: builtin.c:2081 msgid "'system' function not allowed in sandbox mode" msgstr "funkcja 'system' nie jest dozwolona w trybie piaskownicy" -#: builtin.c:2074 +#: builtin.c:2086 msgid "system: received non-string argument" msgstr "system: otrzymano argument, który nie jest Å‚aÅ„cuchem" -#: builtin.c:2194 +#: builtin.c:2165 builtin.c:2230 +msgid "print: attempt to write to closed write end of two-way pipe" +msgstr "" + +#: builtin.c:2248 #, c-format msgid "reference to uninitialized field `$%d'" msgstr "odwoÅ‚anie do niezainicjowanego pola `$%d'" -#: builtin.c:2279 +#: builtin.c:2333 msgid "tolower: received non-string argument" msgstr "tolower: otrzymano argument, który nie jest Å‚aÅ„cuchem" -#: builtin.c:2310 +#: builtin.c:2364 msgid "toupper: received non-string argument" msgstr "toupper: otrzymano argument, który nie jest Å‚aÅ„cuchem" -#: builtin.c:2343 mpfr.c:679 +#: builtin.c:2397 mpfr.c:681 msgid "atan2: received non-numeric first argument" msgstr "atan2: otrzymano pierwszy argument, który nie jest liczbÄ…" -#: builtin.c:2345 mpfr.c:681 +#: builtin.c:2399 mpfr.c:683 msgid "atan2: received non-numeric second argument" msgstr "atan2: otrzymano drugi argument, który nie jest liczbÄ…" -#: builtin.c:2364 +#: builtin.c:2418 msgid "sin: received non-numeric argument" msgstr "sin: otrzymano argument, który nie jest liczbÄ…" -#: builtin.c:2380 +#: builtin.c:2434 msgid "cos: received non-numeric argument" msgstr "cos: otrzymano argument, który nie jest liczbÄ…" -#: builtin.c:2433 mpfr.c:1176 +#: builtin.c:2487 mpfr.c:1180 msgid "srand: received non-numeric argument" msgstr "srand: otrzymano argument, który nie jest liczbÄ…" -#: builtin.c:2464 +#: builtin.c:2518 msgid "match: third argument is not an array" msgstr "match: otrzymano trzeci argument, który nie jest tablicÄ…" -#: builtin.c:2725 +#: builtin.c:2779 #, fuzzy, c-format msgid "gensub: third argument `%.*s' treated as 1" msgstr "gensub: trzeci argument 0 potraktowany jako 1" -#: builtin.c:2740 +#: builtin.c:2794 #, fuzzy, c-format msgid "gensub: third argument %g treated as 1" msgstr "gensub: trzeci argument 0 potraktowany jako 1" -#: builtin.c:3038 +#: builtin.c:3096 #, fuzzy, c-format msgid "%s: can be called indirectly only with two arguments" msgstr "and: wywoÅ‚ano z mniej niż dwoma argumentami" -#: builtin.c:3128 +#: builtin.c:3186 #, fuzzy, c-format msgid "indirect call to %s requires at least two arguments" msgstr "and: wywoÅ‚ano z mniej niż dwoma argumentami" -#: builtin.c:3180 +#: builtin.c:3238 msgid "lshift: received non-numeric first argument" msgstr "lshift: otrzymano pierwszy argument, który nie jest liczbÄ…" -#: builtin.c:3182 +#: builtin.c:3240 msgid "lshift: received non-numeric second argument" msgstr "lshift: otrzymano drugi argument, który nie jest liczbÄ…" -#: builtin.c:3188 +#: builtin.c:3246 #, c-format msgid "lshift(%f, %f): negative values will give strange results" msgstr "lshift(%f, %f): ujemne wartoÅ›ci spowodujÄ… dziwne wyniki" -#: builtin.c:3190 +#: builtin.c:3248 #, c-format msgid "lshift(%f, %f): fractional values will be truncated" msgstr "lshift(%f, %f): uÅ‚amkowe wartoÅ›ci zostanÄ… obciÄ™te" -#: builtin.c:3192 +#: builtin.c:3250 #, c-format msgid "lshift(%f, %f): too large shift value will give strange results" msgstr "lshift(%f, %f): zbyt duża wartość przesuniÄ™cia spowoduje dziwne wyniki" -#: builtin.c:3217 +#: builtin.c:3275 msgid "rshift: received non-numeric first argument" msgstr "rshift: otrzymano pierwszy argument, który nie jest liczbÄ…" -#: builtin.c:3219 +#: builtin.c:3277 msgid "rshift: received non-numeric second argument" msgstr "rshift: otrzymano drugi argument, który nie jest liczbÄ…" -#: builtin.c:3225 +#: builtin.c:3283 #, c-format msgid "rshift(%f, %f): negative values will give strange results" msgstr "rshift(%f, %f): ujemne wartoÅ›ci spowodujÄ… dziwne wyniki" -#: builtin.c:3227 +#: builtin.c:3285 #, c-format msgid "rshift(%f, %f): fractional values will be truncated" msgstr "rshift(%f, %f): uÅ‚amkowe wartoÅ›ci zostanÄ… obciÄ™te" -#: builtin.c:3229 +#: builtin.c:3287 #, c-format msgid "rshift(%f, %f): too large shift value will give strange results" msgstr "rshift(%f, %f): zbyt duża wartość przesuniÄ™cia spowoduje dziwne wyniki" -#: builtin.c:3254 mpfr.c:988 +#: builtin.c:3312 mpfr.c:992 msgid "and: called with less than two arguments" msgstr "and: wywoÅ‚ano z mniej niż dwoma argumentami" -#: builtin.c:3259 +#: builtin.c:3317 #, c-format msgid "and: argument %d is non-numeric" msgstr "and: argument %d nie jest liczbÄ…" -#: builtin.c:3263 +#: builtin.c:3321 #, c-format msgid "and: argument %d negative value %g will give strange results" msgstr "and: argument %d ujemna wartość %g spowoduje dziwne wyniki" -#: builtin.c:3286 mpfr.c:1020 +#: builtin.c:3344 mpfr.c:1024 msgid "or: called with less than two arguments" msgstr "or: wywoÅ‚ano z mniej niż dwoma argumentami" -#: builtin.c:3291 +#: builtin.c:3349 #, c-format msgid "or: argument %d is non-numeric" msgstr "or: argument %d nie jest liczbÄ…" -#: builtin.c:3295 +#: builtin.c:3353 #, c-format msgid "or: argument %d negative value %g will give strange results" msgstr "or: argument %d ujemna wartość %g spowoduje dziwne wyniki" -#: builtin.c:3317 mpfr.c:1051 +#: builtin.c:3375 mpfr.c:1055 msgid "xor: called with less than two arguments" msgstr "xor: wywoÅ‚ano z mniej niż dwoma argumentami" -#: builtin.c:3323 +#: builtin.c:3381 #, c-format msgid "xor: argument %d is non-numeric" msgstr "xor: argument %d nie jest liczbÄ…" -#: builtin.c:3327 +#: builtin.c:3385 #, c-format msgid "xor: argument %d negative value %g will give strange results" msgstr "xor: argument %d ujemna wartość %g spowoduje dziwne wyniki" -#: builtin.c:3352 mpfr.c:807 +#: builtin.c:3410 mpfr.c:811 msgid "compl: received non-numeric argument" msgstr "compl: otrzymano argument, który nie jest liczbÄ…" -#: builtin.c:3358 +#: builtin.c:3416 #, c-format msgid "compl(%f): negative value will give strange results" msgstr "compl(%f): ujemne wartoÅ›ci spowodujÄ… dziwne wyniki" -#: builtin.c:3360 +#: builtin.c:3418 #, c-format msgid "compl(%f): fractional value will be truncated" msgstr "compl(%f): uÅ‚amkowe wartoÅ›ci zostanÄ… obciÄ™te" -#: builtin.c:3529 +#: builtin.c:3588 #, c-format msgid "dcgettext: `%s' is not a valid locale category" msgstr "dcgettext: `%s' nie jest prawidÅ‚owÄ… kategoriÄ… lokalizacji" -#: command.y:225 +#: command.y:226 #, c-format msgid "Type (g)awk statement(s). End with the command \"end\"\n" msgstr "Podaj komendy (g)awk. ZakoÅ„cz poleceniem \"end\"\n" -#: command.y:289 +#: command.y:290 #, c-format msgid "invalid frame number: %d" msgstr "nieprawidÅ‚owy numer ramki: %d" -#: command.y:295 +#: command.y:296 #, c-format msgid "info: invalid option - \"%s\"" msgstr "info: nieprawidÅ‚owa opcja - \"%s\"" -#: command.y:321 +#: command.y:322 #, c-format msgid "source \"%s\": already sourced." msgstr "source \"%s\": stanowi już źródÅ‚o." -#: command.y:326 +#: command.y:327 #, c-format msgid "save \"%s\": command not permitted." msgstr "save \"%s\": niedozwolona komenda." -#: command.y:339 +#: command.y:340 msgid "Can't use command `commands' for breakpoint/watchpoint commands" msgstr "Nie można użyć polecenia `commands' dla komend breakpoint/watchpoint." -#: command.y:341 +#: command.y:342 msgid "no breakpoint/watchpoint has been set yet" msgstr "nie ustawiono jeszcze breakpoint/watchpoint" -#: command.y:343 +#: command.y:344 msgid "invalid breakpoint/watchpoint number" msgstr "nieprawidÅ‚owy numer breakpoint/watchpoint" -#: command.y:348 +#: command.y:349 #, c-format msgid "Type commands for when %s %d is hit, one per line.\n" msgstr "" -#: command.y:350 +#: command.y:351 #, c-format msgid "End with the command \"end\"\n" msgstr "ZakoÅ„cz komendÄ… \"end\"\n" -#: command.y:357 +#: command.y:358 msgid "`end' valid only in command `commands' or `eval'" msgstr "`end' dozwolony jedynie dla komendy `commands' lub `eval'" -#: command.y:367 +#: command.y:368 msgid "`silent' valid only in command `commands'" msgstr "polecenie `silent' dozwolone jedynie w komendzie `commands'" -#: command.y:373 +#: command.y:374 #, c-format msgid "trace: invalid option - \"%s\"" msgstr "trace: nieprawidÅ‚owa opcja - \"%s\"" -#: command.y:387 +#: command.y:388 msgid "condition: invalid breakpoint/watchpoint number" msgstr "condition: nieprawidÅ‚owy numer breakpoint/watchpoint" -#: command.y:449 +#: command.y:450 msgid "argument not a string" msgstr "argument nie jest Å‚aÅ„cuchem tekstowym" -#: command.y:459 command.y:464 +#: command.y:460 command.y:465 #, c-format msgid "option: invalid parameter - \"%s\"" msgstr "option: nieprawidÅ‚owy parametr - \"%s\"" -#: command.y:474 +#: command.y:475 #, c-format msgid "no such function - \"%s\"" msgstr "brak takiej funkcji - \"%s\"" -#: command.y:531 +#: command.y:532 #, c-format msgid "enable: invalid option - \"%s\"" msgstr "enable: nieprawidÅ‚owa opcja - \"%s\"" -#: command.y:597 +#: command.y:598 #, c-format msgid "invalid range specification: %d - %d" msgstr "nieprawidÅ‚owy zakres specyfikacji: %d - %d" -#: command.y:659 +#: command.y:660 msgid "non-numeric value for field number" msgstr "nienumeryczna wartość dla numeru pola" -#: command.y:680 command.y:687 +#: command.y:681 command.y:688 msgid "non-numeric value found, numeric expected" msgstr "znaleziono nienumerycznÄ… wartość, spodziewano siÄ™ numerycznej" -#: command.y:712 command.y:718 +#: command.y:713 command.y:719 msgid "non-zero integer value" msgstr "niezerowa wartość" -#: command.y:817 +#: command.y:818 msgid "" "backtrace [N] - print trace of all or N innermost (outermost if N < 0) " "frames." msgstr "" -#: command.y:819 +#: command.y:820 msgid "" "break [[filename:]N|function] - set breakpoint at the specified location." msgstr "" -#: command.y:821 +#: command.y:822 msgid "clear [[filename:]N|function] - delete breakpoints previously set." msgstr "" -#: command.y:823 +#: command.y:824 msgid "" "commands [num] - starts a list of commands to be executed at a " "breakpoint(watchpoint) hit." msgstr "" -#: command.y:825 +#: command.y:826 msgid "condition num [expr] - set or clear breakpoint or watchpoint condition." msgstr "" -#: command.y:827 +#: command.y:828 msgid "continue [COUNT] - continue program being debugged." msgstr "" -#: command.y:829 +#: command.y:830 msgid "delete [breakpoints] [range] - delete specified breakpoints." msgstr "" -#: command.y:831 +#: command.y:832 msgid "disable [breakpoints] [range] - disable specified breakpoints." msgstr "" -#: command.y:833 +#: command.y:834 msgid "display [var] - print value of variable each time the program stops." msgstr "" -#: command.y:835 +#: command.y:836 msgid "down [N] - move N frames down the stack." msgstr "" -#: command.y:837 +#: command.y:838 msgid "dump [filename] - dump instructions to file or stdout." msgstr "" -#: command.y:839 +#: command.y:840 msgid "enable [once|del] [breakpoints] [range] - enable specified breakpoints." msgstr "" -#: command.y:841 +#: command.y:842 msgid "end - end a list of commands or awk statements." msgstr "" -#: command.y:843 +#: command.y:844 msgid "eval stmt|[p1, p2, ...] - evaluate awk statement(s)." msgstr "" -#: command.y:845 +#: command.y:846 +msgid "exit - (same as quit) exit debugger." +msgstr "" + +#: command.y:848 msgid "finish - execute until selected stack frame returns." msgstr "" -#: command.y:847 +#: command.y:850 msgid "frame [N] - select and print stack frame number N." msgstr "" -#: command.y:849 +#: command.y:852 msgid "help [command] - print list of commands or explanation of command." msgstr "" -#: command.y:851 +#: command.y:854 msgid "ignore N COUNT - set ignore-count of breakpoint number N to COUNT." msgstr "" -#: command.y:853 +#: command.y:856 msgid "" "info topic - source|sources|variables|functions|break|frame|args|locals|" "display|watch." msgstr "" -#: command.y:855 +#: command.y:858 msgid "list [-|+|[filename:]lineno|function|range] - list specified line(s)." msgstr "" -#: command.y:857 +#: command.y:860 msgid "next [COUNT] - step program, proceeding through subroutine calls." msgstr "" -#: command.y:859 +#: command.y:862 msgid "" "nexti [COUNT] - step one instruction, but proceed through subroutine calls." msgstr "" -#: command.y:861 +#: command.y:864 msgid "option [name[=value]] - set or display debugger option(s)." msgstr "" -#: command.y:863 +#: command.y:866 msgid "print var [var] - print value of a variable or array." msgstr "" -#: command.y:865 +#: command.y:868 msgid "printf format, [arg], ... - formatted output." msgstr "" -#: command.y:867 +#: command.y:870 msgid "quit - exit debugger." msgstr "" -#: command.y:869 +#: command.y:872 msgid "return [value] - make selected stack frame return to its caller." msgstr "" -#: command.y:871 +#: command.y:874 msgid "run - start or restart executing program." msgstr "" -#: command.y:874 +#: command.y:877 msgid "save filename - save commands from the session to file." msgstr "" -#: command.y:877 +#: command.y:880 msgid "set var = value - assign value to a scalar variable." msgstr "" -#: command.y:879 +#: command.y:882 msgid "" "silent - suspends usual message when stopped at a breakpoint/watchpoint." msgstr "" -#: command.y:881 +#: command.y:884 msgid "source file - execute commands from file." msgstr "" -#: command.y:883 +#: command.y:886 msgid "step [COUNT] - step program until it reaches a different source line." msgstr "" -#: command.y:885 +#: command.y:888 msgid "stepi [COUNT] - step one instruction exactly." msgstr "" -#: command.y:887 +#: command.y:890 msgid "tbreak [[filename:]N|function] - set a temporary breakpoint." msgstr "" -#: command.y:889 +#: command.y:892 msgid "trace on|off - print instruction before executing." msgstr "" -#: command.y:891 +#: command.y:894 msgid "undisplay [N] - remove variable(s) from automatic display list." msgstr "" -#: command.y:893 +#: command.y:896 msgid "" "until [[filename:]N|function] - execute until program reaches a different " "line or line N within current frame." msgstr "" -#: command.y:895 +#: command.y:898 msgid "unwatch [N] - remove variable(s) from watch list." msgstr "" -#: command.y:897 +#: command.y:900 msgid "up [N] - move N frames up the stack." msgstr "" -#: command.y:899 +#: command.y:902 msgid "watch var - set a watchpoint for a variable." msgstr "" -#: command.y:901 +#: command.y:904 msgid "" "where [N] - (same as backtrace) print trace of all or N innermost (outermost " "if N < 0) frames." msgstr "" -#: command.y:1013 debug.c:401 msg.c:135 +#: command.y:1016 debug.c:401 msg.c:135 #, c-format msgid "error: " msgstr "bÅ‚Ä…d: " -#: command.y:1053 +#: command.y:1060 #, c-format msgid "can't read command (%s)\n" msgstr "nie można odczytać komendy (%s)\n" -#: command.y:1067 +#: command.y:1074 #, c-format msgid "can't read command (%s)" msgstr "nie można odczytać komendy (%s)" -#: command.y:1118 +#: command.y:1125 msgid "invalid character in command" msgstr "nieprawidÅ‚owy znak w komendzie" -#: command.y:1154 +#: command.y:1161 #, c-format msgid "unknown command - \"%.*s\", try help" msgstr "nieznana komenda - \"%.*s\", spróbuj pomoc" -#: command.y:1224 +#: command.y:1231 #, c-format msgid "%s" msgstr "%s" -#: command.y:1286 +#: command.y:1293 msgid "invalid character" msgstr "nieprawidÅ‚owy znak" -#: command.y:1457 +#: command.y:1497 #, c-format msgid "undefined command: %s\n" msgstr "niezdefiniowana komenda: %s\n" @@ -1506,17 +1529,17 @@ msgstr "[\"%s\"] nie ma w tablicy `%s'\n" msgid "`%s[\"%s\"]' is not an array\n" msgstr "`%s[\"%s\"]' nie jest tablicÄ…\n" -#: debug.c:1236 debug.c:4964 +#: debug.c:1236 debug.c:5010 #, c-format msgid "`%s' is not a scalar variable" msgstr "`%s' nie jest zmiennÄ… skalarnÄ…" -#: debug.c:1258 debug.c:4994 +#: debug.c:1258 debug.c:5040 #, c-format msgid "attempt to use array `%s[\"%s\"]' in a scalar context" msgstr "próba użycia tablicy `%s[\"%s\"]' w kontekÅ›cie skalaru" -#: debug.c:1280 debug.c:5005 +#: debug.c:1280 debug.c:5051 #, c-format msgid "attempt to use scalar `%s[\"%s\"]' as array" msgstr "próba użycia skalaru `%s[\"%s\"]' jako tablicy" @@ -1789,102 +1812,102 @@ msgstr "" msgid "'until' not meaningful with non-local jump '%s'\n" msgstr "" -#: debug.c:4185 +#: debug.c:4231 msgid "\t------[Enter] to continue or q [Enter] to quit------" msgstr "" -#: debug.c:4186 +#: debug.c:4232 msgid "q" msgstr "q" -#: debug.c:5001 +#: debug.c:5047 #, c-format msgid "[\"%s\"] not in array `%s'" msgstr "[\"%s\"] nie ma w tablicy `%s'" -#: debug.c:5207 +#: debug.c:5253 #, c-format msgid "sending output to stdout\n" msgstr "wysyÅ‚anie wyjÅ›cia na stdout\n" -#: debug.c:5247 +#: debug.c:5293 msgid "invalid number" msgstr "nieprawidÅ‚owa liczba" -#: debug.c:5381 +#: debug.c:5427 #, c-format msgid "`%s' not allowed in current context; statement ignored" msgstr "polecenie `%s' nie może być wywoÅ‚ane w tym kontekÅ›cie; zignorowano" -#: debug.c:5389 +#: debug.c:5435 msgid "`return' not allowed in current context; statement ignored" msgstr "" "instrukcja `return' nie może być wywoÅ‚ana w tym kontekÅ›cie; zignorowano" -#: debug.c:5604 +#: debug.c:5650 #, c-format msgid "No symbol `%s' in current context" msgstr "Brak symbolu `%s' w bieżącym kontekÅ›cie" -#: dfa.c:1062 dfa.c:1065 dfa.c:1084 dfa.c:1094 dfa.c:1106 dfa.c:1142 -#: dfa.c:1151 dfa.c:1154 dfa.c:1159 dfa.c:1173 dfa.c:1221 +#: dfa.c:1090 dfa.c:1093 dfa.c:1112 dfa.c:1122 dfa.c:1135 dfa.c:1163 dfa.c:1172 +#: dfa.c:1175 dfa.c:1180 dfa.c:1202 dfa.c:1205 msgid "unbalanced [" msgstr "[ nie do pary" -#: dfa.c:1118 +#: dfa.c:1148 msgid "invalid character class" msgstr "nieprawidÅ‚owa klasa znaku" -#: dfa.c:1264 +#: dfa.c:1271 msgid "character class syntax is [[:space:]], not [:space:]" msgstr "skÅ‚adnia klasy znaku to [[:space:]], a nie [:space:]" -#: dfa.c:1326 +#: dfa.c:1332 msgid "unfinished \\ escape" msgstr "niedokoÅ„czona sekwencja ucieczki \\" -#: dfa.c:1473 +#: dfa.c:1499 #, fuzzy msgid "invalid content of \\{\\}" msgstr "NieprawidÅ‚owa zawartość \\{\\}" -#: dfa.c:1476 +#: dfa.c:1502 #, fuzzy msgid "regular expression too big" msgstr "Wyrażenie regularne jest zbyt duże" -#: dfa.c:1911 +#: dfa.c:1916 msgid "unbalanced (" msgstr "( nie do pary" -#: dfa.c:2037 +#: dfa.c:2044 msgid "no syntax specified" msgstr "nie podano skÅ‚adni" -#: dfa.c:2045 +#: dfa.c:2052 msgid "unbalanced )" msgstr ") nie do pary" -#: eval.c:396 +#: eval.c:398 #, c-format msgid "unknown nodetype %d" msgstr "nieznany typ wÄ™zÅ‚a %d" -#: eval.c:407 eval.c:421 +#: eval.c:409 eval.c:423 #, c-format msgid "unknown opcode %d" msgstr "nieznany opcode %d" -#: eval.c:418 +#: eval.c:420 #, c-format msgid "opcode %s not an operator or keyword" msgstr "opcode %s nie jest operatorem ani sÅ‚owem kluczowym" -#: eval.c:474 +#: eval.c:476 msgid "buffer overflow in genflags2str" msgstr "przepeÅ‚nienie bufora w genflags2str" -#: eval.c:676 +#: eval.c:678 #, c-format msgid "" "\n" @@ -1895,295 +1918,290 @@ msgstr "" "\t# Stos WywoÅ‚awczy Funkcji:\n" "\n" -#: eval.c:705 +#: eval.c:707 msgid "`IGNORECASE' is a gawk extension" msgstr "`IGNORECASE' jest rozszerzeniem gawk" -#: eval.c:737 +#: eval.c:739 msgid "`BINMODE' is a gawk extension" msgstr "`BINMODE' jest rozszerzeniem gawk" -#: eval.c:795 +#: eval.c:797 #, c-format msgid "BINMODE value `%s' is invalid, treated as 3" msgstr "wartość BINMODE `%s' jest nieprawidÅ‚owa, przyjÄ™to jÄ… jako 3" -#: eval.c:912 +#: eval.c:914 #, c-format msgid "bad `%sFMT' specification `%s'" msgstr "zÅ‚a specyfikacja `%sFMT' `%s'" -#: eval.c:996 +#: eval.c:988 msgid "turning off `--lint' due to assignment to `LINT'" msgstr "wyÅ‚Ä…czenie `--lint' z powodu przypisania do `LINT'" -#: eval.c:1174 +#: eval.c:1166 #, c-format msgid "reference to uninitialized argument `%s'" msgstr "odwoÅ‚anie do niezainicjowanego argumentu `%s'" -#: eval.c:1175 +#: eval.c:1167 #, c-format msgid "reference to uninitialized variable `%s'" msgstr "odwoÅ‚anie do niezainicjowanej zmiennej `%s'" -#: eval.c:1193 +#: eval.c:1185 msgid "attempt to field reference from non-numeric value" msgstr "próba odwoÅ‚ania do pola poprzez nienumerycznÄ… wartość" -#: eval.c:1195 +#: eval.c:1187 msgid "attempt to field reference from null string" msgstr "próba odwoÅ‚ania z zerowego Å‚aÅ„cucha" -#: eval.c:1203 +#: eval.c:1195 #, c-format msgid "attempt to access field %ld" msgstr "próba dostÄ™pu do pola %ld" -#: eval.c:1212 +#: eval.c:1204 #, c-format msgid "reference to uninitialized field `$%ld'" msgstr "odwoÅ‚anie do niezainicjowanego pola `$%ld'" -#: eval.c:1299 +#: eval.c:1291 #, 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:1506 +#: eval.c:1498 #, c-format msgid "unwind_stack: unexpected type `%s'" msgstr "unwind_stack: niespodziewany typ `%s'" -#: eval.c:1602 +#: eval.c:1594 msgid "division by zero attempted in `/='" msgstr "próba dzielenia przez zero w `/='" -#: eval.c:1609 +#: eval.c:1601 #, c-format msgid "division by zero attempted in `%%='" msgstr "próba dzielenia przez zero w `%%='" -#: ext.c:65 ext.c:147 +#: ext.c:66 ext.c:148 msgid "extensions are not allowed in sandbox mode" msgstr "rozszerzenia nie sÄ… dozwolone w trybie piaskownicy" -#: ext.c:68 +#: ext.c:69 msgid "-l / @load are gawk extensions" msgstr "-l / @load sÄ… rozszerzeniami gawk" -#: ext.c:71 +#: ext.c:72 msgid "load_ext: received NULL lib_name" msgstr "load_ext: otrzymano NULL lib_name" -#: ext.c:74 +#: ext.c:75 #, c-format msgid "load_ext: cannot open library `%s' (%s)\n" msgstr "load_ext: nie można otworzyć biblioteki `%s' (%s)\n" -#: ext.c:80 +#: ext.c:81 #, c-format msgid "" "load_ext: library `%s': does not define `plugin_is_GPL_compatible' (%s)\n" msgstr "" "load_ext: biblioteka `%s': nie definiuje `plugin_is_GPL_compatible' (%s)\n" -#: ext.c:86 +#: ext.c:87 #, c-format msgid "load_ext: library `%s': cannot call function `%s' (%s)\n" msgstr "load_ext: biblioteka `%s': nie można wywoÅ‚ać funkcji `%s' (%s)\n" -#: ext.c:90 +#: ext.c:91 #, c-format msgid "load_ext: library `%s' initialization routine `%s' failed\n" msgstr "" "load_ext: funkcja inicjalizujÄ…ca `%s' biblioteki `%s' nie powiodÅ‚a siÄ™\n" -#: ext.c:150 +#: ext.c:151 msgid "`extension' is a gawk extension" msgstr "`extension' jest rozszerzeniem gawk" -#: ext.c:153 +#: ext.c:154 msgid "extension: received NULL lib_name" msgstr "extension: otrzymano NULL lib_name" -#: ext.c:156 +#: ext.c:157 #, c-format msgid "extension: cannot open library `%s' (%s)" msgstr "extension: nie można otworzyć biblioteki `%s' (%s)" -#: ext.c:162 +#: ext.c:163 #, c-format msgid "" "extension: library `%s': does not define `plugin_is_GPL_compatible' (%s)" msgstr "" "extension: biblioteka `%s': nie definiuje `plugin_is_GPL_compatible' (%s)" -#: ext.c:166 +#: ext.c:167 #, c-format msgid "extension: library `%s': cannot call function `%s' (%s)" msgstr "extension: biblioteka `%s': nie można wywoÅ‚ać funkcji `%s' (%s)" -#: ext.c:197 +#: ext.c:198 msgid "make_builtin: missing function name" msgstr "make_builtin: brakujÄ…ca nazwa funkcji" -#: ext.c:212 +#: ext.c:213 #, c-format msgid "make_builtin: can't redefine function `%s'" msgstr "make_builtin: nie można zredefiniować funkcji `%s'" -#: ext.c:216 +#: ext.c:217 #, c-format msgid "make_builtin: function `%s' already defined" msgstr "make_builtin: funkcja `%s' zostaÅ‚a już zdefiniowana" -#: ext.c:220 +#: ext.c:221 #, c-format msgid "make_builtin: function name `%s' previously defined" msgstr "make_builtin: nazwa funkcji `%s' zostaÅ‚a zdefiniowana wczeÅ›niej" -#: ext.c:222 +#: ext.c:223 #, c-format msgid "make_builtin: can't use gawk built-in `%s' as function name" msgstr "make_builtin: nie można użyć wbudowanej w gawk `%s' jako nazwy funkcji" -#: ext.c:225 ext.c:280 +#: ext.c:226 ext.c:281 #, c-format msgid "make_builtin: negative argument count for function `%s'" msgstr "make_builtin: ujemny licznik argumentów dla funkcji `%s'" -#: ext.c:252 +#: ext.c:253 msgid "extension: missing function name" msgstr "extension: brakujÄ…ca nazwa funkcji" -#: ext.c:255 ext.c:259 +#: ext.c:256 ext.c:260 #, c-format msgid "extension: illegal character `%c' in function name `%s'" msgstr "extension: nieprawidÅ‚owy znak `%c' w nazwie funkcji `%s'" -#: ext.c:267 +#: ext.c:268 #, c-format msgid "extension: can't redefine function `%s'" msgstr "extension: nie można zredefiniować funkcji `%s'" -#: ext.c:271 +#: ext.c:272 #, c-format msgid "extension: function `%s' already defined" msgstr "extension: funkcja `%s' zostaÅ‚a już zdefiniowana" -#: ext.c:275 +#: ext.c:276 #, c-format msgid "extension: function name `%s' previously defined" msgstr "extension: nazwa funkcji `%s' zostaÅ‚a zdefiniowana wczeÅ›niej" -#: ext.c:277 +#: ext.c:278 #, c-format msgid "extension: can't use gawk built-in `%s' as function name" msgstr "extension: nie można użyć wbudowanej w gawk `%s' jako nazwy funkcji" -#: ext.c:351 -#, 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)" - -#: ext.c:354 -#, c-format -msgid "function `%s': missing argument #%d" -msgstr "funkcja `%s': brakuje #%d argumentu" - -#: ext.c:371 +#: ext.c:358 #, c-format msgid "function `%s': argument #%d: attempt to use scalar as an array" msgstr "funkcja `%s': argument #%d: próba użycia skalaru jako tablicy" -#: ext.c:375 +#: ext.c:362 #, c-format msgid "function `%s': argument #%d: attempt to use array as a scalar" msgstr "funkcja `%s': argument #%d: próba użycia tablicy jako skalaru" -#: ext.c:389 +#: ext.c:376 msgid "dynamic loading of library not supported" msgstr "dynamiczne Å‚adowanie biblioteki nie jest wspierane" -#: extension/filefuncs.c:159 +#: extension/filefuncs.c:164 msgid "chdir: called with incorrect number of arguments, expecting 1" msgstr "chdir: wywoÅ‚ano z nieprawidÅ‚owÄ… iloÅ›ciÄ… argumentów, spodziewano siÄ™ 1" -#: extension/filefuncs.c:439 +#: extension/filefuncs.c:444 #, c-format msgid "stat: unable to read symbolic link `%s'" msgstr "stat: nie można odczytać dowiÄ…zania symbolicznego `%s'" -#: extension/filefuncs.c:472 +#: extension/filefuncs.c:477 msgid "stat: called with wrong number of arguments" msgstr "stat: wywoÅ‚ano z nieprawidÅ‚owÄ… iloÅ›ciÄ… argumentów" -#: extension/filefuncs.c:479 +#: extension/filefuncs.c:484 extension/filefuncs.c:534 msgid "stat: bad parameters" msgstr "stat: zÅ‚e parametry" -#: extension/filefuncs.c:533 +#: extension/filefuncs.c:527 +#, fuzzy +msgid "statvfs: called with wrong number of arguments" +msgstr "stat: wywoÅ‚ano z nieprawidÅ‚owÄ… iloÅ›ciÄ… argumentów" + +#: extension/filefuncs.c:598 #, c-format msgid "fts init: could not create variable %s" msgstr "fts init: nie można utworzyć zmiennej %s" -#: extension/filefuncs.c:554 +#: extension/filefuncs.c:619 msgid "fts is not supported on this system" msgstr "funkcja fts nie jest wspierana w tym systemie" -#: extension/filefuncs.c:573 +#: extension/filefuncs.c:638 msgid "fill_stat_element: could not create array" msgstr "fill_stat_element: nie można utworzyć tablicy" -#: extension/filefuncs.c:582 +#: extension/filefuncs.c:647 msgid "fill_stat_element: could not set element" msgstr "fill_stat_element: nie można ustawić elementu" -#: extension/filefuncs.c:597 +#: extension/filefuncs.c:662 msgid "fill_path_element: could not set element" msgstr "fill_path_element: nie można ustawić elementu" -#: extension/filefuncs.c:613 +#: extension/filefuncs.c:678 msgid "fill_error_element: could not set element" msgstr "fill_error_element: nie można ustawić elementu" -#: extension/filefuncs.c:660 extension/filefuncs.c:707 +#: extension/filefuncs.c:725 extension/filefuncs.c:772 msgid "fts-process: could not create array" msgstr "fts-process: nie można utworzyć tablicy" -#: extension/filefuncs.c:670 extension/filefuncs.c:717 -#: extension/filefuncs.c:735 +#: extension/filefuncs.c:735 extension/filefuncs.c:782 +#: extension/filefuncs.c:800 msgid "fts-process: could not set element" msgstr "fts-process: nie można ustawić elementu" -#: extension/filefuncs.c:784 +#: extension/filefuncs.c:849 msgid "fts: called with incorrect number of arguments, expecting 3" msgstr "fts: wywoÅ‚ano z nieprawidÅ‚owÄ… iloÅ›ciÄ… argumentów, powinny być 3" -#: extension/filefuncs.c:787 +#: extension/filefuncs.c:852 msgid "fts: bad first parameter" msgstr "fts: nieprawidÅ‚owy pierwszy parametr" -#: extension/filefuncs.c:793 +#: extension/filefuncs.c:858 msgid "fts: bad second parameter" msgstr "fts: nieprawidÅ‚owy drugi parametr" -#: extension/filefuncs.c:799 +#: extension/filefuncs.c:864 msgid "fts: bad third parameter" msgstr "fts: nieprawidÅ‚owy trzeci parametr" -#: extension/filefuncs.c:806 +#: extension/filefuncs.c:871 msgid "fts: could not flatten array\n" msgstr "fts: nie można spÅ‚aszczyć tablicy\n" -#: extension/filefuncs.c:824 +#: extension/filefuncs.c:889 msgid "fts: ignoring sneaky FTS_NOSTAT flag. nyah, nyah, nyah." msgstr "fts: zignorowano flagÄ™ FTS_NOSTAT. nyah, nyah, nyah." -#: extension/filefuncs.c:841 +#: extension/filefuncs.c:906 msgid "fts: clear_array() failed\n" msgstr "fts: clear_array() nie powiodÅ‚a siÄ™\n" @@ -2244,90 +2262,90 @@ msgstr "wait: wywoÅ‚ano bez argumentów" msgid "wait: called with too many arguments" msgstr "wait: wywoÅ‚ana ze zbyt dużą iloÅ›ciÄ… argumentów" -#: extension/inplace.c:130 +#: extension/inplace.c:131 msgid "inplace_begin: in-place editing already active" msgstr "inplace_begin: edycja w miejscu jest już aktywna" -#: extension/inplace.c:133 extension/inplace.c:210 +#: extension/inplace.c:134 extension/inplace.c:211 #, c-format msgid "inplace_begin: expects 2 arguments but called with %d" msgstr "inplace_begin: spodziewano siÄ™ 2 argumentów, a otrzymano %d" -#: extension/inplace.c:136 +#: extension/inplace.c:137 msgid "inplace_begin: cannot retrieve 1st argument as a string filename" msgstr "inplace_begin: nie można pobrać pierwszego argumentu jako nazwy pliku" -#: extension/inplace.c:144 +#: extension/inplace.c:145 #, c-format msgid "inplace_begin: disabling in-place editing for invalid FILENAME `%s'" msgstr "" "inplace_begin: wyÅ‚Ä…czenie edycji w miejscu dla nieprawidÅ‚owej nazwy pliku `" "%s'" -#: extension/inplace.c:151 +#: extension/inplace.c:152 #, c-format msgid "inplace_begin: Cannot stat `%s' (%s)" msgstr "inplace_begin: nie można sprawdzić `%s' (%s)" -#: extension/inplace.c:158 +#: extension/inplace.c:159 #, c-format msgid "inplace_begin: `%s' is not a regular file" msgstr "inplace_begin: `%s' nie jest zwykÅ‚ym plikiem" -#: extension/inplace.c:169 +#: extension/inplace.c:170 #, c-format msgid "inplace_begin: mkstemp(`%s') failed (%s)" msgstr "inplace_begin: wywoÅ‚anie mkstemp(`%s') nie powiodÅ‚o siÄ™ (%s)" -#: extension/inplace.c:181 +#: extension/inplace.c:182 #, c-format msgid "inplace_begin: chmod failed (%s)" msgstr "inplace_begin: funkcja chmod nie powiodÅ‚a siÄ™ (%s)" -#: extension/inplace.c:188 +#: extension/inplace.c:189 #, c-format msgid "inplace_begin: dup(stdout) failed (%s)" msgstr "inplace_begin: wywoÅ‚anie dup(stdout) nie powiodÅ‚o siÄ™ (%s)" -#: extension/inplace.c:191 +#: extension/inplace.c:192 #, c-format msgid "inplace_begin: dup2(%d, stdout) failed (%s)" msgstr "inplace_begin: wywoÅ‚anie dup2(%d, stdout) nie powiodÅ‚o siÄ™ (%s)" -#: extension/inplace.c:194 +#: extension/inplace.c:195 #, c-format msgid "inplace_begin: close(%d) failed (%s)" msgstr "inplace_begin: wywoÅ‚anie close(%d) nie powiodÅ‚o siÄ™ (%s)" -#: extension/inplace.c:213 +#: extension/inplace.c:214 msgid "inplace_end: cannot retrieve 1st argument as a string filename" msgstr "inplace_end: nie można pobrać pierwszego argumentu jako nazwy pliku" -#: extension/inplace.c:220 +#: extension/inplace.c:221 msgid "inplace_end: in-place editing not active" msgstr "inplace_end: edycja w miejscu nie jest aktywna" -#: extension/inplace.c:226 +#: extension/inplace.c:227 #, c-format msgid "inplace_end: dup2(%d, stdout) failed (%s)" msgstr "inplace_end: wywoÅ‚anie dup2(%d, stdout) nie powiodÅ‚o siÄ™ (%s)" -#: extension/inplace.c:229 +#: extension/inplace.c:230 #, c-format msgid "inplace_end: close(%d) failed (%s)" msgstr "inplace_end: wywoÅ‚anie close(%d) nie powiodÅ‚o siÄ™ (%s)" -#: extension/inplace.c:233 +#: extension/inplace.c:234 #, c-format msgid "inplace_end: fsetpos(stdout) failed (%s)" msgstr "inplace_end: wywoÅ‚anie fsetpos(stdout) nie powiodÅ‚o siÄ™ (%s)" -#: extension/inplace.c:246 +#: extension/inplace.c:247 #, c-format msgid "inplace_end: link(`%s', `%s') failed (%s)" msgstr "inplace_end: wywoÅ‚anie link(`%s', `%s') nie powiodÅ‚o siÄ™ (%s)" -#: extension/inplace.c:256 +#: extension/inplace.c:257 #, c-format msgid "inplace_end: rename(`%s', `%s') failed (%s)" msgstr "inplace_end: wywoÅ‚anie rename(`%s', `%s') nie powiodÅ‚o siÄ™ (%s)" @@ -2356,7 +2374,7 @@ msgstr "chr: wywoÅ‚ano bez argumentów" msgid "chr: called with inappropriate argument(s)" msgstr "chr: wywoÅ‚ano z nieprawidÅ‚owymi argumentami" -#: extension/readdir.c:281 +#: extension/readdir.c:271 #, c-format msgid "dir_take_control_of: opendir/fdopendir failed: %s" msgstr "dir_take_control_of: wywoÅ‚anie opendir/fdopendir nie powiodÅ‚o siÄ™: %s" @@ -2369,54 +2387,54 @@ msgstr "readfile: wywoÅ‚ana ze zbyt dużą iloÅ›ciÄ… argumentów" msgid "readfile: called with no arguments" msgstr "readfile: wywoÅ‚ano bez argumentów" -#: extension/revoutput.c:125 +#: extension/revoutput.c:127 msgid "revoutput: could not initialize REVOUT variable" msgstr "" -#: extension/rwarray.c:124 extension/rwarray0.c:109 +#: extension/rwarray.c:113 extension/rwarray0.c:109 msgid "writea: called with too many arguments" msgstr "writea: wywoÅ‚ana ze zbyt dużą iloÅ›ciÄ… argumentów" -#: extension/rwarray.c:131 extension/rwarray0.c:116 +#: extension/rwarray.c:120 extension/rwarray0.c:116 #, c-format msgid "do_writea: argument 0 is not a string\n" msgstr "do_writea: argument 0 nie jest tekstem\n" -#: extension/rwarray.c:137 extension/rwarray0.c:122 +#: extension/rwarray.c:126 extension/rwarray0.c:122 #, c-format msgid "do_writea: argument 1 is not an array\n" msgstr "do_writea: argument 1 nie jest tablicÄ…\n" -#: extension/rwarray.c:184 extension/rwarray0.c:169 +#: extension/rwarray.c:173 extension/rwarray0.c:169 #, c-format msgid "write_array: could not flatten array\n" msgstr "write_array: nie można spÅ‚aszczyć tablicy\n" -#: extension/rwarray.c:198 extension/rwarray0.c:183 +#: extension/rwarray.c:187 extension/rwarray0.c:183 #, c-format msgid "write_array: could not release flattened array\n" msgstr "write_array: nie można byÅ‚o zwolnić spÅ‚aszczonej tablicy\n" -#: extension/rwarray.c:280 extension/rwarray0.c:265 +#: extension/rwarray.c:269 extension/rwarray0.c:265 msgid "reada: called with too many arguments" msgstr "reada: wywoÅ‚ana ze zbyt dużą iloÅ›ciÄ… argumentów" -#: extension/rwarray.c:287 extension/rwarray0.c:272 +#: extension/rwarray.c:276 extension/rwarray0.c:272 #, c-format msgid "do_reada: argument 0 is not a string\n" msgstr "do_reada: argument 0 nie jest tekstem\n" -#: extension/rwarray.c:293 extension/rwarray0.c:278 +#: extension/rwarray.c:282 extension/rwarray0.c:278 #, c-format msgid "do_reada: argument 1 is not an array\n" msgstr "do_reada: argument 1 nie jest tablicÄ…\n" -#: extension/rwarray.c:337 extension/rwarray0.c:322 +#: extension/rwarray.c:326 extension/rwarray0.c:322 #, c-format msgid "do_reada: clear_array failed\n" msgstr "do_reada: clear_array nie powiodÅ‚a siÄ™\n" -#: extension/rwarray.c:374 extension/rwarray0.c:358 +#: extension/rwarray.c:363 extension/rwarray0.c:358 #, c-format msgid "read_array: set_array_element failed\n" msgstr "read_array: set_array_element nie powiodÅ‚a siÄ™\n" @@ -2526,7 +2544,7 @@ msgstr "zerowy Å‚aÅ„cuch dla `FS' jest rozszerzeniem gawk" msgid "old awk does not support regexps as value of `FS'" msgstr "stary awk nie wspiera wyrażeÅ„ regularnych jako wartoÅ›ci `FS'" -#: field.c:1380 +#: field.c:1384 msgid "`FPAT' is a gawk extension" msgstr "`FPAT' jest rozszerzeniem gawk" @@ -2534,28 +2552,28 @@ msgstr "`FPAT' jest rozszerzeniem gawk" msgid "awk_value_to_node: received null retval" msgstr "awk_value_to_node: otrzymano null retval" -#: gawkapi.c:384 +#: gawkapi.c:383 msgid "node_to_awk_value: received null node" msgstr "node_to_awk_value: otrzymano null node" -#: gawkapi.c:387 +#: gawkapi.c:386 msgid "node_to_awk_value: received null val" msgstr "node_to_awk_value: otrzymano null val" -#: gawkapi.c:809 +#: gawkapi.c:808 msgid "remove_element: received null array" msgstr "remove_element: otrzymano tablicÄ™ null" -#: gawkapi.c:812 +#: gawkapi.c:811 msgid "remove_element: received null subscript" msgstr "remove_element: otrzymano null subscript" -#: gawkapi.c:949 +#: gawkapi.c:948 #, c-format msgid "api_flatten_array: could not convert index %d\n" msgstr "api_flatten_array: nie można byÅ‚o skonwertować indeksu %d\n" -#: gawkapi.c:954 +#: gawkapi.c:953 #, c-format msgid "api_flatten_array: could not convert value %d\n" msgstr "api_flatten_array: nie można byÅ‚o skonwertować wartoÅ›ci %d\n" @@ -2615,300 +2633,304 @@ msgstr "%s: opcja '-W %s' nie może mieć argumentów\n" msgid "%s: option '-W %s' requires an argument\n" msgstr "%s: opcja '-W %s' wymaga argumentu\n" -#: io.c:423 +#: io.c:426 #, c-format msgid "command line argument `%s' is a directory: skipped" msgstr "argument linii poleceÅ„ `%s' jest katalogiem: pominiÄ™to" -#: io.c:426 io.c:544 +#: io.c:429 io.c:547 #, c-format msgid "cannot open file `%s' for reading (%s)" msgstr "nie można otworzyć pliku `%s' do czytania (%s)" -#: io.c:671 +#: io.c:674 #, c-format msgid "close of fd %d (`%s') failed (%s)" msgstr "zamkniÄ™cie fd %d (`%s') nie powiodÅ‚o siÄ™ (%s)" -#: io.c:749 +#: io.c:752 msgid "redirection not allowed in sandbox mode" msgstr "przekierowanie nie jest dozwolone w trybie piaskownicy" -#: io.c:783 +#: io.c:786 #, c-format msgid "expression in `%s' redirection only has numeric value" msgstr "wyrażenie w przekierowaniu `%s' ma tylko wartość numerycznÄ…" -#: io.c:789 +#: io.c:792 #, c-format msgid "expression for `%s' redirection has null string value" msgstr "wyrażenie dla przekierowania `%s' ma zerowÄ… wartość Å‚aÅ„cucha" -#: io.c:794 +#: io.c:797 #, 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:842 +#: io.c:845 #, c-format msgid "unnecessary mixing of `>' and `>>' for file `%.*s'" msgstr "niepotrzebne mieszanie `>' i `>>' dla pliku `%.*s'" -#: io.c:896 +#: io.c:902 #, c-format msgid "can't open pipe `%s' for output (%s)" msgstr "nie można otworzyć potoku `%s' jako wyjÅ›cia (%s)" -#: io.c:906 +#: io.c:915 #, c-format msgid "can't open pipe `%s' for input (%s)" msgstr "nie można otworzyć potoku `%s' jako wejÅ›cia (%s)" -#: io.c:937 +#: io.c:946 #, 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:1019 +#: io.c:1030 #, c-format msgid "can't redirect from `%s' (%s)" msgstr "nie można przekierować z `%s' (%s)" -#: io.c:1022 +#: io.c:1033 #, c-format msgid "can't redirect to `%s' (%s)" msgstr "nie można przekierować do `%s' (%s)" -#: io.c:1073 +#: io.c:1084 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:1089 +#: io.c:1100 #, c-format msgid "close of `%s' failed (%s)." msgstr "zamkniÄ™cie `%s' nie powiodÅ‚o siÄ™ (%s)." -#: io.c:1097 +#: io.c:1108 msgid "too many pipes or input files open" msgstr "zbyt dużo otwartych potoków lub plików wejÅ›ciowych" -#: io.c:1119 +#: io.c:1130 msgid "close: second argument must be `to' or `from'" msgstr "close: drugim argumentem musi być `to' lub `from'" -#: io.c:1136 +#: io.c:1147 #, 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:1141 +#: io.c:1152 msgid "close of redirection that was never opened" msgstr "zamkniÄ™cie przekierowania, które nigdy nie zostaÅ‚o otwarte" -#: io.c:1238 +#: io.c:1249 #, 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:1255 +#: io.c:1266 #, c-format msgid "failure status (%d) on pipe close of `%s' (%s)" msgstr "status awarii (%d) podczas zamykania potoku `%s' (%s)" -#: io.c:1258 +#: io.c:1269 #, c-format msgid "failure status (%d) on file close of `%s' (%s)" msgstr "status awarii (%d) podczas zamykania pliku `%s' (%s)" -#: io.c:1278 +#: io.c:1289 #, c-format msgid "no explicit close of socket `%s' provided" msgstr "brak jawnego zamkniÄ™cia gniazdka `%s'" -#: io.c:1281 +#: io.c:1292 #, c-format msgid "no explicit close of co-process `%s' provided" msgstr "brak jawnego zamkniÄ™cia procesu pomocniczego `%s'" -#: io.c:1284 +#: io.c:1295 #, c-format msgid "no explicit close of pipe `%s' provided" msgstr "brak jawnego zamkniÄ™cia potoku `%s'" -#: io.c:1287 +#: io.c:1298 #, c-format msgid "no explicit close of file `%s' provided" msgstr "brak jawnego zamkniÄ™cia pliku `%s'" -#: io.c:1317 io.c:1375 main.c:632 main.c:674 +#: io.c:1328 io.c:1387 main.c:645 main.c:687 #, c-format msgid "error writing standard output (%s)" msgstr "bÅ‚Ä…d podczas zapisu na standardowe wyjÅ›cie (%s)" -#: io.c:1322 io.c:1381 main.c:634 +#: io.c:1333 io.c:1393 main.c:647 #, c-format msgid "error writing standard error (%s)" msgstr "bÅ‚Ä…d podczas zapisu na standardowe wyjÅ›cie diagnostyczne (%s)" -#: io.c:1330 +#: io.c:1341 #, c-format msgid "pipe flush of `%s' failed (%s)." msgstr "opróżnienie potoku `%s' nie powiodÅ‚o siÄ™ (%s)." -#: io.c:1333 +#: io.c:1344 #, 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:1336 +#: io.c:1347 #, c-format msgid "file flush of `%s' failed (%s)." msgstr "opróżnienie pliku `%s' nie powiodÅ‚o siÄ™ (%s)." -#: io.c:1453 +#: io.c:1465 #, c-format msgid "local port %s invalid in `/inet'" msgstr "nieprawidÅ‚owy lokalny port %s w `/inet'" -#: io.c:1471 +#: io.c:1483 #, c-format msgid "remote host and port information (%s, %s) invalid" msgstr "informacje o zdalnym hoÅ›cie i porcie sÄ… nieprawidÅ‚owe (%s, %s)" -#: io.c:1699 +#: io.c:1711 msgid "TCP/IP communications are not supported" msgstr "Komunikacja TCP/IP nie jest wspierana" -#: io.c:1880 +#: io.c:1905 #, c-format msgid "could not open `%s', mode `%s'" msgstr "nie można otworzyć `%s', tryb `%s'" -#: io.c:1930 +#: io.c:1961 #, c-format msgid "close of master pty failed (%s)" msgstr "zamkniÄ™cie nadrzÄ™dnego pty nie powiodÅ‚o siÄ™ (%s)" -#: io.c:1932 io.c:2118 io.c:2319 +#: io.c:1963 io.c:2141 io.c:2342 #, 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:1935 +#: io.c:1966 #, 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:1937 io.c:2123 +#: io.c:1968 io.c:2146 #, 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:1940 +#: io.c:1971 #, 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:1942 io.c:1964 +#: io.c:1973 #, c-format msgid "close of slave pty failed (%s)" msgstr "zamkniÄ™cie podlegÅ‚ego pty nie powiodÅ‚o siÄ™ (%s)" -#: io.c:2053 io.c:2121 io.c:2290 io.c:2322 +#: io.c:2076 io.c:2144 io.c:2313 io.c:2345 #, 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:2060 io.c:2126 +#: io.c:2083 io.c:2149 #, 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:2086 io.c:2312 +#: io.c:2109 io.c:2335 msgid "restoring stdout in parent process failed\n" msgstr "" "odzyskanie standardowego wyjÅ›cia w procesie potomnym nie powiodÅ‚o siÄ™\n" -#: io.c:2094 +#: io.c:2117 msgid "restoring stdin in parent process failed\n" msgstr "" "odzyskanie standardowego wejÅ›cia w procesie potomnym nie powiodÅ‚o siÄ™\n" -#: io.c:2129 io.c:2324 io.c:2339 +#: io.c:2152 io.c:2347 io.c:2362 #, c-format msgid "close of pipe failed (%s)" msgstr "zamkniÄ™cie potoku nie powiodÅ‚o siÄ™ (%s)" -#: io.c:2188 +#: io.c:2211 msgid "`|&' not supported" msgstr "`|&' nie jest wspierany" -#: io.c:2275 +#: io.c:2298 #, c-format msgid "cannot open pipe `%s' (%s)" msgstr "nie można otworzyć potoku `%s' (%s)" -#: io.c:2333 +#: io.c:2356 #, c-format msgid "cannot create child process for `%s' (fork: %s)" msgstr "nie można utworzyć procesu potomnego dla `%s' (fork: %s)" -#: io.c:2760 +#: io.c:2493 +msgid "getline: attempt to read from closed read end of two-way pipe" +msgstr "" + +#: io.c:2795 msgid "register_input_parser: received NULL pointer" msgstr "register_input_parser: otrzymano wskaźnik NULL" -#: io.c:2788 +#: io.c:2823 #, c-format msgid "input parser `%s' conflicts with previously installed input parser `%s'" msgstr "" "parser wejÅ›cia `%s' konfliktuje z poprzednio zainstalowanym parserem `%s'" -#: io.c:2795 +#: io.c:2830 #, c-format msgid "input parser `%s' failed to open `%s'" msgstr "parser wejÅ›cia `%s': nie powiodÅ‚o siÄ™ otwarcie `%s'" -#: io.c:2815 +#: io.c:2850 msgid "register_output_wrapper: received NULL pointer" msgstr "register_output_wrapper: otrzymano wskaźnik NULL" -#: io.c:2843 +#: io.c:2878 #, c-format msgid "" "output wrapper `%s' conflicts with previously installed output wrapper `%s'" msgstr "" "otoczka wyjÅ›cia `%s' konfliktuje z poprzednio zainstalowanÄ… otoczkÄ… `%s'" -#: io.c:2850 +#: io.c:2885 #, c-format msgid "output wrapper `%s' failed to open `%s'" msgstr "otoczka wyjÅ›cia `%s': nie powiodÅ‚o siÄ™ otwarcie `%s'" -#: io.c:2871 +#: io.c:2906 msgid "register_output_processor: received NULL pointer" msgstr "register_output_processor: otrzymano wskaźnik NULL" -#: io.c:2900 +#: io.c:2935 #, c-format msgid "" "two-way processor `%s' conflicts with previously installed two-way processor " @@ -2917,199 +2939,202 @@ msgstr "" "dwukierunkowy procesor `%s' konfliktuje z poprzednio zainstalowanym " "procesorem `%s'" -#: io.c:2909 +#: io.c:2944 #, c-format msgid "two way processor `%s' failed to open `%s'" msgstr "dwukierunkowy procesor `%s' zawiódÅ‚ w otwarciu `%s'" -#: io.c:3034 +#: io.c:3069 #, c-format msgid "data file `%s' is empty" msgstr "plik danych `%s' jest pusty" -#: io.c:3076 io.c:3084 +#: io.c:3111 io.c:3119 msgid "could not allocate more input memory" msgstr "nie można zarezerwować wiÄ™cej pamiÄ™ci wejÅ›ciowej" -#: io.c:3662 +#: io.c:3697 msgid "multicharacter value of `RS' is a gawk extension" msgstr "wieloznakowa wartość `RS' jest rozszerzeniem gawk" -#: io.c:3809 +#: io.c:3844 msgid "IPv6 communication is not supported" msgstr "Komunikacja IPv6 nie jest wspierana" -#: main.c:321 +#: main.c:334 msgid "environment variable `POSIXLY_CORRECT' set: turning on `--posix'" msgstr "" "zmienna Å›rodowiskowa `POSIXLY_CORRECT' ustawiona: `--posix' zostaÅ‚ wÅ‚Ä…czony" -#: main.c:327 +#: main.c:340 msgid "`--posix' overrides `--traditional'" msgstr "opcja `--posix' zostanie użyta nad `--traditional'" -#: main.c:338 +#: main.c:351 msgid "`--posix'/`--traditional' overrides `--non-decimal-data'" msgstr "`--posix'/`--traditional' użyte nad opcjÄ… `--non-decimal-data'" -#: main.c:342 +#: main.c:355 #, 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:346 +#: main.c:359 msgid "`--posix' overrides `--characters-as-bytes'" msgstr "opcja `--posix' zostanie użyta nad `--characters-as-bytes'" -#: main.c:404 +#: main.c:417 #, 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:407 +#: main.c:420 #, 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:409 +#: main.c:422 #, 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:469 +#: main.c:482 msgid "no program text at all!" msgstr "brak tekstu programu!" -#: main.c:563 +#: main.c:576 #, 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:565 +#: main.c:578 #, 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:570 +#: main.c:583 msgid "POSIX options:\t\tGNU long options: (standard)\n" msgstr "Opcje POSIX:\t\tDÅ‚ugie opcje GNU (standard):\n" -#: main.c:571 +#: main.c:584 msgid "\t-f progfile\t\t--file=progfile\n" msgstr "\t-f program\t\t--file=program\n" -#: main.c:572 +#: main.c:585 msgid "\t-F fs\t\t\t--field-separator=fs\n" msgstr "\t-F fs\t\t\t--field-separator=fs\n" -#: main.c:573 +#: main.c:586 msgid "\t-v var=val\t\t--assign=var=val\n" msgstr "\t-v zmienna=wartość\t--assign=zmienna=wartość\n" -#: main.c:574 +#: main.c:587 msgid "Short options:\t\tGNU long options: (extensions)\n" msgstr "Krótkie opcje:\t\tDÅ‚ugie opcje GNU: (rozszerzenia)\n" -#: main.c:575 +#: main.c:588 msgid "\t-b\t\t\t--characters-as-bytes\n" msgstr "\t-b\t\t\t--characters-as-bytes\n" -#: main.c:576 +#: main.c:589 msgid "\t-c\t\t\t--traditional\n" msgstr "\t-c\t\t\t--traditional\n" -#: main.c:577 +#: main.c:590 msgid "\t-C\t\t\t--copyright\n" msgstr "\t-C\t\t\t--copyright\n" -#: main.c:578 +#: main.c:591 msgid "\t-d[file]\t\t--dump-variables[=file]\n" msgstr "\t-d[plik]\t\t--dump-variables[=plik]\n" -#: main.c:579 +#: main.c:592 msgid "\t-D[file]\t\t--debug[=file]\n" msgstr "\t-D[plik]\t\t--debug[=plik]\n" -#: main.c:580 +#: main.c:593 msgid "\t-e 'program-text'\t--source='program-text'\n" msgstr "\t-e 'tekst-programu'\t--source='tekst-programu'\n" -#: main.c:581 +#: main.c:594 msgid "\t-E file\t\t\t--exec=file\n" msgstr "\t-E plik\t\t\t--exec=plik\n" -#: main.c:582 +#: main.c:595 msgid "\t-g\t\t\t--gen-pot\n" msgstr "\t-g\t\t\t--gen-pot\n" -#: main.c:583 +#: main.c:596 msgid "\t-h\t\t\t--help\n" msgstr "\t-h\t\t\t--help\n" -#: main.c:584 +#: main.c:597 msgid "\t-i includefile\t\t--include=includefile\n" msgstr "\t-i plikinclude\t\t--include=plikinclude\n" -#: main.c:585 +#: main.c:598 msgid "\t-l library\t\t--load=library\n" msgstr "\t-l biblioteka\t\t--load=biblioteka\n" -#: main.c:590 +#. TRANSLATORS: the "fatal" and "invalid" here are literal +#. values, they should not be translated. Thanks. +#. +#: main.c:603 #, fuzzy msgid "\t-L[fatal|invalid]\t--lint[=fatal|invalid]\n" msgstr "\t-L [fatal]\t\t--lint[=fatal]\n" -#: main.c:591 +#: main.c:604 msgid "\t-M\t\t\t--bignum\n" msgstr "\t-M\t\t\t--bignum\n" -#: main.c:592 +#: main.c:605 msgid "\t-N\t\t\t--use-lc-numeric\n" msgstr "\t-N\t\t\t--use-lc-numeric\n" -#: main.c:593 +#: main.c:606 msgid "\t-n\t\t\t--non-decimal-data\n" msgstr "\t-n\t\t\t--non-decimal-data\n" -#: main.c:594 +#: main.c:607 msgid "\t-o[file]\t\t--pretty-print[=file]\n" msgstr "\t-o[plik]\t\t--pretty-print[=plik]\n" -#: main.c:595 +#: main.c:608 msgid "\t-O\t\t\t--optimize\n" msgstr "\t-O\t\t\t--optimize\n" -#: main.c:596 +#: main.c:609 msgid "\t-p[file]\t\t--profile[=file]\n" msgstr "\t-p[plik]\t\t--profile[=plik]\n" -#: main.c:597 +#: main.c:610 msgid "\t-P\t\t\t--posix\n" msgstr "\t-P\t\t\t--posix\n" -#: main.c:598 +#: main.c:611 msgid "\t-r\t\t\t--re-interval\n" msgstr "\t-r\t\t\t--re-interval\n" -#: main.c:599 +#: main.c:612 msgid "\t-S\t\t\t--sandbox\n" msgstr "\t-S\t\t\t--sandbox\n" -#: main.c:600 +#: main.c:613 msgid "\t-t\t\t\t--lint-old\n" msgstr "\t-t\t\t\t--lint-old\n" -#: main.c:601 +#: main.c:614 msgid "\t-V\t\t\t--version\n" msgstr "\t-V\t\t\t--version\n" -#: main.c:603 +#: main.c:616 msgid "\t-W nostalgia\t\t--nostalgia\n" msgstr "\t-W nostalgia\t\t--nostalgia\n" -#: main.c:606 +#: main.c:619 msgid "\t-Y\t\t--parsedebug\n" msgstr "\t-Y\t\t--parsedebug\n" @@ -3118,7 +3143,7 @@ msgstr "\t-Y\t\t--parsedebug\n" #. for this application. Please add _another line_ with the #. address for translation bugs. #. no-wrap -#: main.c:615 +#: main.c:628 msgid "" "\n" "To report bugs, see node `Bugs' in `gawk.info', which is\n" @@ -3131,7 +3156,7 @@ msgstr "" "dokumentacji.\n" "\n" -#: main.c:619 +#: main.c:632 msgid "" "gawk is a pattern scanning and processing language.\n" "By default it reads standard input and writes standard output.\n" @@ -3141,7 +3166,7 @@ msgstr "" "Program domyÅ›lnie czyta standardowe wejÅ›cie i zapisuje standardowe wyjÅ›cie.\n" "\n" -#: main.c:623 +#: main.c:636 msgid "" "Examples:\n" "\tgawk '{ sum += $1 }; END { print sum }' file\n" @@ -3151,7 +3176,7 @@ msgstr "" "\tgawk '{ suma += $1 }; END { print suma }' plik\n" "\tgawk -F: '{ print $1 }' /etc/passwd\n" -#: main.c:648 +#: main.c:661 #, c-format msgid "" "Copyright (C) 1989, 1991-%d Free Software Foundation.\n" @@ -3170,7 +3195,7 @@ msgstr "" "tej Licencji lub którejÅ› z późniejszych wersji.\n" "\n" -#: main.c:656 +#: main.c:669 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" @@ -3185,7 +3210,7 @@ msgstr "" "PowszechnÄ… LicencjÄ™ PublicznÄ… GNU.\n" "\n" -#: main.c:662 +#: main.c:675 msgid "" "You should have received a copy of the GNU General Public License\n" "along with this program. If not, see http://www.gnu.org/licenses/.\n" @@ -3194,16 +3219,16 @@ msgstr "" "Powszechnej Licencji Publicznej GNU (GNU General Public License);\n" "jeÅ›li zaÅ› nie - odwiedź stronÄ™ http://www.gnu.org/licenses/.\n" -#: main.c:699 +#: main.c:712 msgid "-Ft does not set FS to tab in POSIX awk" msgstr "-Ft nie ustawia FS na znak tabulatora w POSIX awk" -#: main.c:986 +#: main.c:999 #, c-format msgid "unknown value for field spec: %d\n" msgstr "nieznana wartość dla specyfikacji pola: %d\n" -#: main.c:1084 +#: main.c:1097 #, c-format msgid "" "%s: `%s' argument to `-v' not in `var=value' form\n" @@ -3212,116 +3237,116 @@ msgstr "" "%s: argument `%s' dla `-v' nie jest zgodny ze skÅ‚adniÄ… `zmienna=wartość'\n" "\n" -#: main.c:1110 +#: main.c:1123 #, c-format msgid "`%s' is not a legal variable name" msgstr "`%s' nie jest dozwolonÄ… nazwÄ… zmiennej" -#: main.c:1113 +#: main.c:1126 #, 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:1117 +#: main.c:1130 #, c-format msgid "cannot use gawk builtin `%s' as variable name" msgstr "nie można użyć wbudowanej w gawk `%s' jako nazwy zmiennej" -#: main.c:1122 +#: main.c:1135 #, c-format msgid "cannot use function `%s' as variable name" msgstr "nie można użyć funkcji `%s' jako nazwy zmiennej" -#: main.c:1175 +#: main.c:1190 msgid "floating point exception" msgstr "wyjÄ…tek zmiennopozycyjny" -#: main.c:1182 +#: main.c:1197 msgid "fatal error: internal error" msgstr "fatalny bÅ‚Ä…d: wewnÄ™trzny bÅ‚Ä…d" -#: main.c:1197 +#: main.c:1212 msgid "fatal error: internal error: segfault" msgstr "fatalny bÅ‚Ä…d: wewnÄ™trzny bÅ‚Ä…d: bÅ‚Ä…d segmentacji" -#: main.c:1209 +#: main.c:1224 msgid "fatal error: internal error: stack overflow" msgstr "fatalny bÅ‚Ä…d: wewnÄ™trzny bÅ‚Ä…d: przepeÅ‚nienie stosu" -#: main.c:1268 +#: main.c:1283 #, c-format msgid "no pre-opened fd %d" msgstr "brak już otwartego fd %d" -#: main.c:1275 +#: main.c:1290 #, 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:1489 +#: main.c:1504 msgid "empty argument to `-e/--source' ignored" msgstr "pusty argument dla opcji `-e/--source' zostaÅ‚ zignorowany" -#: main.c:1560 +#: main.c:1575 msgid "-M ignored: MPFR/GMP support not compiled in" msgstr "" -#: main.c:1581 +#: main.c:1596 #, c-format msgid "%s: option `-W %s' unrecognized, ignored\n" msgstr "%s: opcja `-W %s' nierozpoznana i zignorowana\n" -#: main.c:1634 +#: main.c:1649 #, c-format msgid "%s: option requires an argument -- %c\n" msgstr "%s: opcja musi mieć argument -- %c\n" -#: mpfr.c:557 +#: mpfr.c:559 #, c-format msgid "PREC value `%.*s' is invalid" msgstr "wartość PREC `%.*s' jest nieprawidÅ‚owa" -#: mpfr.c:615 +#: mpfr.c:617 #, c-format msgid "RNDMODE value `%.*s' is invalid" msgstr "wartość RNDMODE `%.*s' jest nieprawidÅ‚owa" -#: mpfr.c:711 +#: mpfr.c:714 #, c-format msgid "%s: received non-numeric argument" msgstr "%s: otrzymano argument, który nie jest liczbÄ…" -#: mpfr.c:820 +#: mpfr.c:824 msgid "compl(%Rg): negative value will give strange results" msgstr "compl(%Rg): ujemne wartoÅ›ci spowodujÄ… dziwne wyniki" -#: mpfr.c:824 +#: mpfr.c:828 msgid "comp(%Rg): fractional value will be truncated" msgstr "compl(%Rg): uÅ‚amkowe wartoÅ›ci zostanÄ… obciÄ™te" -#: mpfr.c:836 +#: mpfr.c:840 #, c-format msgid "cmpl(%Zd): negative values will give strange results" msgstr "cmpl(%Zd): ujemne wartoÅ›ci spowodujÄ… dziwne wyniki" -#: mpfr.c:855 +#: mpfr.c:859 #, c-format msgid "%s: received non-numeric argument #%d" msgstr "%s: otrzymano argument #%d, który nie jest liczbÄ…" -#: mpfr.c:865 +#: mpfr.c:869 msgid "%s: argument #%d has invalid value %Rg, using 0" msgstr "%s: argument #%d ma nieprawidÅ‚owÄ… wartość %Rg, użyto 0" -#: mpfr.c:877 +#: mpfr.c:881 msgid "%s: argument #%d negative value %Rg will give strange results" msgstr "%s: argument #%d ujemna wartość %Rg spowoduje dziwne wyniki" -#: mpfr.c:883 +#: mpfr.c:887 msgid "%s: argument #%d fractional value %Rg will be truncated" msgstr "%s: argument #%d uÅ‚amkowa wartość %Rg zostanie obciÄ™ta" -#: mpfr.c:898 +#: mpfr.c:902 #, c-format msgid "%s: argument #%d negative value %Zd will give strange results" msgstr "%s: argument #%d ujemna wartość %Zd spowoduje dziwne wyniki" @@ -3331,24 +3356,24 @@ msgstr "%s: argument #%d ujemna wartość %Zd spowoduje dziwne wyniki" msgid "cmd. line:" msgstr "linia poleceÅ„:" -#: node.c:418 +#: node.c:434 msgid "backslash at end of string" msgstr "backslash na koÅ„cu Å‚aÅ„cucha" -#: node.c:497 +#: node.c:513 #, c-format msgid "old awk does not support the `\\%c' escape sequence" msgstr "stary awk nie wspiera sekwencji ucieczki `\\%c'" -#: node.c:548 +#: node.c:564 msgid "POSIX does not allow `\\x' escapes" msgstr "POSIX nie zezwala na sekwencjÄ™ ucieczki `\\x'" -#: node.c:554 +#: node.c:570 msgid "no hex digits in `\\x' escape sequence" msgstr "brak liczb szesnastkowych w sekwencji ucieczki `\\x'" -#: node.c:576 +#: node.c:592 #, c-format msgid "" "hex escape \\x%.*s of %d characters probably not interpreted the way you " @@ -3357,12 +3382,12 @@ msgstr "" "szesnastkowa sekwencja ucieczki \\x%.*s %d znaków prawdopodobnie nie zostaÅ‚a " "zinterpretowana jak tego oczekujesz" -#: node.c:591 +#: node.c:607 #, c-format msgid "escape sequence `\\%c' treated as plain `%c'" msgstr "sekwencja ucieczki `\\%c' potraktowana jako zwykÅ‚e `%c'" -#: node.c:735 +#: node.c:744 msgid "" "Invalid multibyte data detected. There may be a mismatch between your data " "and your locale." @@ -3380,16 +3405,16 @@ msgstr "%s %s `%s': nie można uzyskać flag fd: (fcntl F_GETFD: %s)" msgid "%s %s `%s': could not set close-on-exec: (fcntl F_SETFD: %s)" msgstr "%s %s `%s': nie można ustawić close-on-exec: (fcntl F_SETFD: %s)" -#: profile.c:91 +#: profile.c:94 #, c-format msgid "could not open `%s' for writing: %s" msgstr "nie można otworzyć `%s' do zapisu: %s" -#: profile.c:93 +#: profile.c:96 msgid "sending profile to standard error" msgstr "wysyÅ‚anie profilu na standardowe wyjÅ›cie diagnostyczne" -#: profile.c:213 +#: profile.c:216 #, fuzzy, c-format msgid "" "\t# %s rule(s)\n" @@ -3398,7 +3423,7 @@ msgstr "" "\t# ReguÅ‚a(i)\n" "\n" -#: profile.c:218 +#: profile.c:221 #, c-format msgid "" "\t# Rule(s)\n" @@ -3407,16 +3432,16 @@ msgstr "" "\t# ReguÅ‚a(i)\n" "\n" -#: profile.c:292 +#: profile.c:295 #, c-format msgid "internal error: %s with null vname" msgstr "wewnÄ™trzny bÅ‚Ä…d: %s z zerowym vname" -#: profile.c:558 +#: profile.c:561 msgid "internal error: builtin with null fname" msgstr "wewnÄ™trzny bÅ‚Ä…d: builtin z fname null" -#: profile.c:978 +#: profile.c:1006 #, c-format msgid "" "\t# Loaded extensions (-l and/or @load)\n" @@ -3425,12 +3450,12 @@ msgstr "" "\t# ZaÅ‚adowane rozszerzenia (-l i/lub @load)\n" "\n" -#: profile.c:1001 +#: profile.c:1029 #, c-format msgid "\t# gawk profile, created %s\n" msgstr "\t# profil programu gawk, utworzony %s\n" -#: profile.c:1555 +#: profile.c:1600 #, c-format msgid "" "\n" @@ -3439,98 +3464,104 @@ msgstr "" "\n" "\t# Funkcje, spis alfabetyczny\n" -#: profile.c:1593 +#: profile.c:1638 #, c-format msgid "redir2str: unknown redirection type %d" msgstr "redir2str: nieznany typ przekierowania %d" -#: re.c:607 +#: re.c:610 #, c-format msgid "regexp component `%.*s' should probably be `[%.*s]'" msgstr "komponent regexp `%.*s' powinien być prawdopodobnie `[%.*s]'" -#: regcomp.c:139 +#: regcomp.c:143 msgid "Success" msgstr "Sukces" -#: regcomp.c:142 +#: regcomp.c:146 msgid "No match" msgstr "Brak dopasowania" -#: regcomp.c:145 +#: regcomp.c:149 msgid "Invalid regular expression" msgstr "NieprawidÅ‚owe wyrażenie regularne" -#: regcomp.c:148 +#: regcomp.c:152 msgid "Invalid collation character" msgstr "NieprawidÅ‚owy znak porównania" -#: regcomp.c:151 +#: regcomp.c:155 msgid "Invalid character class name" msgstr "NieprawidÅ‚owa nazwa klasy znaku" -#: regcomp.c:154 +#: regcomp.c:158 msgid "Trailing backslash" msgstr "KoÅ„cowy znak backslash" -#: regcomp.c:157 +#: regcomp.c:161 msgid "Invalid back reference" msgstr "NieprawidÅ‚owe odwoÅ‚anie wsteczne" -#: regcomp.c:160 +#: regcomp.c:164 #, fuzzy msgid "Unmatched [, [^, [:, [., or [=" msgstr "Niedopasowany znak [ lub [^" -#: regcomp.c:163 +#: regcomp.c:167 msgid "Unmatched ( or \\(" msgstr "Niedopasowany znak ( lub \\(" -#: regcomp.c:166 +#: regcomp.c:170 msgid "Unmatched \\{" msgstr "Niedopasowany znak \\{" -#: regcomp.c:169 +#: regcomp.c:173 msgid "Invalid content of \\{\\}" msgstr "NieprawidÅ‚owa zawartość \\{\\}" -#: regcomp.c:172 +#: regcomp.c:176 msgid "Invalid range end" msgstr "NieprawidÅ‚owy koniec zakresu" -#: regcomp.c:175 +#: regcomp.c:179 msgid "Memory exhausted" msgstr "Pamięć wyczerpana" -#: regcomp.c:178 +#: regcomp.c:182 msgid "Invalid preceding regular expression" msgstr "NieprawidÅ‚owe poprzedzajÄ…ce wyrażenie regularne" -#: regcomp.c:181 +#: regcomp.c:185 msgid "Premature end of regular expression" msgstr "Przedwczesny koniec wyrażenia regularnego" -#: regcomp.c:184 +#: regcomp.c:188 msgid "Regular expression too big" msgstr "Wyrażenie regularne jest zbyt duże" -#: regcomp.c:187 +#: regcomp.c:191 msgid "Unmatched ) or \\)" msgstr "Niedopasowany znak ) lub \\)" -#: regcomp.c:712 +#: regcomp.c:701 msgid "No previous regular expression" msgstr "Brak poprzedniego wyrażenia regularnego" -#: symbol.c:678 +#: symbol.c:684 #, fuzzy, c-format msgid "function `%s': can't use function `%s' as a parameter name" msgstr "funkcja `%s': nie można użyć nazwy funkcji jako nazwy parametru" -#: symbol.c:810 +#: symbol.c:816 msgid "can not pop main context" msgstr "nie można zdjąć głównego kontekstu" +#~ 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': missing argument #%d" +#~ msgstr "funkcja `%s': brakuje #%d argumentu" + #~ msgid "`getline var' invalid inside `%s' rule" #~ msgstr "nieprawidÅ‚owy `getline var' wewnÄ…trz reguÅ‚y `%s'" diff --git a/po/sv.po b/po/sv.po index a2e797e..751bc16 100644 --- a/po/sv.po +++ b/po/sv.po @@ -1,18 +1,18 @@ # Swedish translation of gawk -# Copyright © 2003, 2011, 2012, 2013, 2014, 2015 Free Software Foundation, Inc. +# Copyright © 2003, 2011, 2012, 2013, 2014, 2015, 2016 Free Software Foundation, Inc. # This file is distributed under the same license as the gawk package. # # Martin Sjögren , 2001-2002. # Christer Andersson , 2007. -# Göran Uddeborg , 2011, 2012, 2013, 2014, 2015. +# Göran Uddeborg , 2011, 2012, 2013, 2014, 2015, 2016. # -# $Revision: 1.20 $ +# $Revision: 1.23 $ msgid "" msgstr "" -"Project-Id-Version: gawk 4.1.1d\n" +"Project-Id-Version: gawk 4.1.3h\n" "Report-Msgid-Bugs-To: bug-gawk@gnu.org\n" -"POT-Creation-Date: 2015-05-19 16:06+0300\n" -"PO-Revision-Date: 2015-04-22 22:34+0200\n" +"POT-Creation-Date: 2016-08-25 06:19+0300\n" +"PO-Revision-Date: 2016-08-02 15:12+0200\n" "Last-Translator: Göran Uddeborg \n" "Language-Team: Swedish \n" "Language: sv\n" @@ -20,92 +20,92 @@ msgstr "" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -#: array.c:256 +#: array.c:259 #, c-format msgid "from %s" msgstr "frÃ¥n %s" -#: array.c:357 +#: array.c:360 msgid "attempt to use a scalar value as array" msgstr "försök att använda ett skalärt värde som vektor" -#: array.c:359 +#: array.c:362 #, c-format msgid "attempt to use scalar parameter `%s' as an array" msgstr "försök att använda skalärparametern â€%s†som en vektor" -#: array.c:362 +#: array.c:365 #, c-format msgid "attempt to use scalar `%s' as an array" msgstr "försök att använda skalären â€%s†som en vektor" -#: array.c:409 array.c:576 builtin.c:85 builtin.c:1606 builtin.c:1652 -#: builtin.c:1665 builtin.c:2112 builtin.c:2126 eval.c:1149 eval.c:1153 -#: eval.c:1564 +#: array.c:412 array.c:579 builtin.c:85 builtin.c:1612 builtin.c:1658 +#: builtin.c:1671 builtin.c:2160 builtin.c:2179 eval.c:1141 eval.c:1145 +#: eval.c:1556 #, c-format msgid "attempt to use array `%s' in a scalar context" msgstr "försök att använda vektorn â€%s†i skalärsammanhang" -#: array.c:583 +#: array.c:586 #, c-format msgid "delete: index `%s' not in array `%s'" msgstr "delete: index â€%s†finns inte i vektorn â€%sâ€" -#: array.c:597 +#: array.c:600 #, c-format msgid "attempt to use scalar `%s[\"%.*s\"]' as an array" msgstr "försök att använda skalären â€%s[\"%.*s\"]†som en vektor" -#: array.c:776 +#: array.c:779 msgid "adump: first argument not an array" msgstr "adump: första argumentet är inte en vektor" -#: array.c:815 +#: array.c:818 msgid "asort: second argument not an array" msgstr "asort: andra argumentet är inte en vektor" -#: array.c:816 +#: array.c:819 msgid "asorti: second argument not an array" msgstr "asorti: andra argumentet är inte en vektor" -#: array.c:823 +#: array.c:826 msgid "asort: first argument not an array" msgstr "asort: första argumentet är inte en vektor" -#: array.c:824 +#: array.c:827 msgid "asorti: first argument not an array" msgstr "asorti: första argumentet är inte en vektor" -#: array.c:831 +#: array.c:834 msgid "asort: cannot use a subarray of first arg for second arg" msgstr "" "asort: det gÃ¥r inte att använda en delvektor av första argumentet som andra " "argument" -#: array.c:832 +#: array.c:835 msgid "asorti: cannot use a subarray of first arg for second arg" msgstr "" "asorti: det gÃ¥r inte att använda en delvektor av första argumentet som andra " "argument" -#: array.c:837 +#: array.c:840 msgid "asort: cannot use a subarray of second arg for first arg" msgstr "" "asort: det gÃ¥r inte att använda en delvektor av andra argumentet som första " "argument" -#: array.c:838 +#: array.c:841 msgid "asorti: cannot use a subarray of second arg for first arg" msgstr "" "asorti: det gÃ¥r inte att använda en delvektor av andra argumentet som första " "argument" -#: array.c:1313 +#: array.c:1316 #, c-format msgid "`%s' is invalid as a function name" msgstr "â€%s†är ogiltigt som ett funktionsnamn" -#: array.c:1317 +#: array.c:1320 #, c-format msgid "sort comparison function `%s' is not defined" msgstr "jämförelsefunktionen â€%s†för sortering är inte definierad" @@ -146,11 +146,11 @@ msgstr "upprepade case-värden i switch-sats: %s" msgid "duplicate `default' detected in switch body" msgstr "flera \"default\" upptäcktes i switch-sats" -#: awkgram.y:793 awkgram.y:3763 +#: awkgram.y:793 awkgram.y:3774 msgid "`break' is not allowed outside a loop or switch" msgstr "\"break\" är inte tillÃ¥tet utanför en slinga eller switch" -#: awkgram.y:802 awkgram.y:3755 +#: awkgram.y:802 awkgram.y:3766 msgid "`continue' is not allowed outside a loop" msgstr "\"continue\" är inte tillÃ¥tet utanför en slinga" @@ -241,7 +241,7 @@ msgstr "försök att använda en icke-funktion â€%s†i ett funktionsanrop" msgid "invalid subscript expression" msgstr "ogiltig indexuttryck" -#: awkgram.y:2047 awkgram.y:2067 gawkapi.c:206 gawkapi.c:224 msg.c:126 +#: awkgram.y:2047 awkgram.y:2067 gawkapi.c:206 gawkapi.c:223 msg.c:126 msgid "warning: " msgstr "varning: " @@ -249,269 +249,273 @@ msgstr "varning: " msgid "fatal: " msgstr "ödesdigert: " -#: awkgram.y:2115 +#: awkgram.y:2116 msgid "unexpected newline or end of string" msgstr "oväntat nyradstecken eller slut pÃ¥ strängen" -#: awkgram.y:2394 awkgram.y:2470 awkgram.y:2693 debug.c:523 debug.c:539 -#: debug.c:2812 debug.c:5055 +#: awkgram.y:2397 awkgram.y:2473 awkgram.y:2696 debug.c:523 debug.c:539 +#: debug.c:2812 debug.c:5101 #, 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:2395 awkgram.y:2520 +#: awkgram.y:2398 awkgram.y:2523 #, c-format msgid "can't open shared library `%s' for reading (%s)" msgstr "kan inte öppna det delade biblioteket â€%s†för läsning (%s)" -#: awkgram.y:2397 awkgram.y:2471 awkgram.y:2521 builtin.c:135 debug.c:5206 +#: awkgram.y:2400 awkgram.y:2474 awkgram.y:2524 builtin.c:135 debug.c:5252 msgid "reason unknown" msgstr "okänd anledning" -#: awkgram.y:2406 awkgram.y:2430 +#: awkgram.y:2409 awkgram.y:2433 #, c-format msgid "can't include `%s' and use it as a program file" msgstr "kan inte inkludera â€%s†och använda den som en programfil" -#: awkgram.y:2419 +#: awkgram.y:2422 #, c-format msgid "already included source file `%s'" msgstr "inkluderade redan källfilen \"%s\"" -#: awkgram.y:2420 +#: awkgram.y:2423 #, c-format msgid "already loaded shared library `%s'" msgstr "inkluderade redan det delade biblioteket â€%sâ€" -#: awkgram.y:2455 +#: awkgram.y:2458 msgid "@include is a gawk extension" msgstr "@include är en gawk-utökning" -#: awkgram.y:2461 +#: awkgram.y:2464 msgid "empty filename after @include" msgstr "tomt filnamn efter @include" -#: awkgram.y:2505 +#: awkgram.y:2508 msgid "@load is a gawk extension" msgstr "@load är en gawk-utökning" -#: awkgram.y:2511 +#: awkgram.y:2514 msgid "empty filename after @load" msgstr "tomt filnamn efter @load" -#: awkgram.y:2645 +#: awkgram.y:2648 msgid "empty program text on command line" msgstr "tom programtext pÃ¥ kommandoraden" -#: awkgram.y:2760 +#: awkgram.y:2763 #, c-format msgid "can't read sourcefile `%s' (%s)" msgstr "kan inte läsa källfilen \"%s\" (%s)" -#: awkgram.y:2771 +#: awkgram.y:2774 #, c-format msgid "source file `%s' is empty" msgstr "källfilen \"%s\" är tom" -#: awkgram.y:2830 +#: awkgram.y:2833 #, c-format msgid "PEBKAC error: invalid character '\\%03o' in source code" msgstr "PEBKAC-fel: ogiltigt tecken â€\\%03o†i källkoden" -#: awkgram.y:2961 +#: awkgram.y:2964 msgid "source file does not end in newline" msgstr "källfilen slutar inte med en ny rad" -#: awkgram.y:3074 +#: awkgram.y:3081 msgid "unterminated regexp ends with `\\' at end of file" msgstr "oavslutat reguljärt uttryck slutar med \"\\\" i slutet av filen" -#: awkgram.y:3101 +#: awkgram.y:3108 #, c-format msgid "%s: %d: tawk regex modifier `/.../%c' doesn't work in gawk" msgstr "" "%s: %d: tawk-modifierare för reguljära uttryck \"/.../%c\" fungerar inte i " "gawk" -#: awkgram.y:3105 +#: awkgram.y:3112 #, c-format msgid "tawk regex modifier `/.../%c' doesn't work in gawk" msgstr "" "tawk-modifierare för reguljära uttryck \"/.../%c\" fungerar inte i gawk" -#: awkgram.y:3112 +#: awkgram.y:3119 msgid "unterminated regexp" msgstr "oavslutat reguljärt uttryck" -#: awkgram.y:3116 +#: awkgram.y:3123 msgid "unterminated regexp at end of file" msgstr "oavslutat reguljärt uttryck i slutet av filen" -#: awkgram.y:3174 +#: awkgram.y:3181 msgid "use of `\\ #...' line continuation is not portable" msgstr "Användning av \"\\ #...\" för radfortsättning är inte portabelt" -#: awkgram.y:3190 +#: awkgram.y:3197 msgid "backslash not last character on line" msgstr "sista tecknet pÃ¥ raden är inte ett omvänt snedstreck" -#: awkgram.y:3251 +#: awkgram.y:3235 awkgram.y:3237 +msgid "multidimensional arrays are a gawk extension" +msgstr "flerdimensionella matriser är en gawk-utökning" + +#: awkgram.y:3262 msgid "POSIX does not allow operator `**='" msgstr "POSIX tillÃ¥ter inte operatorn \"**=\"" -#: awkgram.y:3253 +#: awkgram.y:3264 msgid "old awk does not support operator `**='" msgstr "gamla awk stöder inte operatorn \"**=\"" -#: awkgram.y:3262 +#: awkgram.y:3273 msgid "POSIX does not allow operator `**'" msgstr "POSIX tillÃ¥ter inte operatorn \"**\"" -#: awkgram.y:3264 +#: awkgram.y:3275 msgid "old awk does not support operator `**'" msgstr "gamla awk stöder inte operatorn \"**\"" -#: awkgram.y:3299 +#: awkgram.y:3310 msgid "operator `^=' is not supported in old awk" msgstr "operatorn \"^=\" stöds inte i gamla awk" -#: awkgram.y:3307 +#: awkgram.y:3318 msgid "operator `^' is not supported in old awk" msgstr "operatorn \"^\" stöds inte i gamla awk" -#: awkgram.y:3404 awkgram.y:3422 command.y:1180 +#: awkgram.y:3415 awkgram.y:3433 command.y:1187 msgid "unterminated string" msgstr "oavslutad sträng" -#: awkgram.y:3643 +#: awkgram.y:3654 #, c-format msgid "invalid char '%c' in expression" msgstr "ogiltigt tecken \"%c\" i uttryck" -#: awkgram.y:3690 +#: awkgram.y:3701 #, c-format msgid "`%s' is a gawk extension" msgstr "\"%s\" är en gawk-utökning" -#: awkgram.y:3695 +#: awkgram.y:3706 #, c-format msgid "POSIX does not allow `%s'" msgstr "POSIX tillÃ¥ter inte \"%s\"" -#: awkgram.y:3703 +#: awkgram.y:3714 #, c-format msgid "`%s' is not supported in old awk" msgstr "\"%s\" stöds inte i gamla awk" -#: awkgram.y:3793 +#: awkgram.y:3804 msgid "`goto' considered harmful!\n" msgstr "\"goto\" anses skadlig!\n" -#: awkgram.y:3827 +#: awkgram.y:3873 #, c-format msgid "%d is invalid as number of arguments for %s" msgstr "%d är ett ogiltigt antal argument för %s" -#: awkgram.y:3862 +#: awkgram.y:3908 #, 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:3867 +#: awkgram.y:3913 #, c-format msgid "%s third parameter is not a changeable object" msgstr "%s: tredje argumentet är inte ett ändringsbart objekt" -#: awkgram.y:3950 awkgram.y:3953 +#: awkgram.y:3996 awkgram.y:3999 msgid "match: third argument is a gawk extension" msgstr "match: tredje argumentet är en gawk-utökning" -#: awkgram.y:4007 awkgram.y:4010 +#: awkgram.y:4053 awkgram.y:4056 msgid "close: second argument is a gawk extension" msgstr "close: andra argumentet är en gawk-utökning" -#: awkgram.y:4022 +#: awkgram.y:4068 msgid "use of dcgettext(_\"...\") is incorrect: remove leading underscore" msgstr "" "användandet av dcgettext(_\"...\") är felaktigt: ta bort det inledande " "understrykningstecknet" -#: awkgram.y:4037 +#: awkgram.y:4083 msgid "use of dcngettext(_\"...\") is incorrect: remove leading underscore" msgstr "" "användandet av dcngettext(_\"...\") är felaktigt: ta bort det inledande " "understrykningstecknet" -#: awkgram.y:4056 +#: awkgram.y:4102 msgid "index: regexp constant as second argument is not allowed" msgstr "index: reguljäruttryck som andra argumentet är inte tillÃ¥tet" -#: awkgram.y:4109 +#: awkgram.y:4155 #, c-format msgid "function `%s': parameter `%s' shadows global variable" msgstr "funktionen \"%s\": parametern \"%s\" överskuggar en global variabel" -#: awkgram.y:4166 debug.c:4041 debug.c:4084 debug.c:5204 +#: awkgram.y:4214 debug.c:4087 debug.c:4130 debug.c:5250 #, c-format msgid "could not open `%s' for writing (%s)" msgstr "kunde inte öppna \"%s\" för skrivning (%s)" -#: awkgram.y:4167 +#: awkgram.y:4215 msgid "sending variable list to standard error" msgstr "skickar variabellista till standard fel" -#: awkgram.y:4175 +#: awkgram.y:4223 #, c-format msgid "%s: close failed (%s)" msgstr "%s: misslyckades att stänga (%s)" -#: awkgram.y:4200 +#: awkgram.y:4248 msgid "shadow_funcs() called twice!" msgstr "shadow_funcs() anropad tvÃ¥ gÃ¥nger!" -#: awkgram.y:4208 +#: awkgram.y:4256 msgid "there were shadowed variables." msgstr "det fanns överskuggade variabler." -#: awkgram.y:4279 +#: awkgram.y:4327 #, c-format msgid "function name `%s' previously defined" msgstr "funktionsnamnet \"%s\" är definierat sedan tidigare" -#: awkgram.y:4325 +#: awkgram.y:4373 #, 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:4328 +#: awkgram.y:4376 #, c-format msgid "function `%s': can't use special variable `%s' as a function parameter" msgstr "" "funktionen \"%s\": det gÃ¥r inte att använda specialvariabeln \"%s\" som en " "funktionsparameter" -#: awkgram.y:4336 +#: awkgram.y:4384 #, c-format msgid "function `%s': parameter #%d, `%s', duplicates parameter #%d" msgstr "funktionen \"%s\": parameter %d, \"%s\", är samma som parameter %d" -#: awkgram.y:4423 awkgram.y:4429 +#: awkgram.y:4471 awkgram.y:4477 #, c-format msgid "function `%s' called but never defined" msgstr "funktionen \"%s\" anropad men aldrig definierad" -#: awkgram.y:4433 +#: awkgram.y:4481 #, c-format msgid "function `%s' defined but never called directly" msgstr "funktionen \"%s\" definierad men aldrig anropad direkt" -#: awkgram.y:4465 +#: awkgram.y:4513 #, 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:4480 +#: awkgram.y:4528 #, c-format msgid "" "function `%s' called with space between name and `(',\n" @@ -520,23 +524,23 @@ msgstr "" "funktionen \"%s\" anropad med blanktecken mellan namnet och \"(\",\n" "eller använd som variabel eller vektor" -#: awkgram.y:4686 +#: awkgram.y:4734 msgid "division by zero attempted" msgstr "försökte dividera med noll" -#: awkgram.y:4695 +#: awkgram.y:4743 #, c-format msgid "division by zero attempted in `%%'" msgstr "försökte dividera med noll i \"%%\"" -#: awkgram.y:5015 +#: awkgram.y:5064 msgid "" "cannot assign a value to the result of a field post-increment expression" msgstr "" "kan inte tilldela ett värde till uttryck som är en efterinkrementering av " "ett fält" -#: awkgram.y:5018 +#: awkgram.y:5067 #, c-format msgid "invalid target of assignment (opcode %s)" msgstr "ogiltigt mÃ¥l för tilldelning (op-kod %s)" @@ -571,204 +575,213 @@ 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:244 +#: builtin.c:241 +#, c-format +msgid "fflush: cannot flush: two-way pipe `%s' has closed write end" +msgstr "fflush: kan inte spola: tvÃ¥vägsröret â€%s†har en stängd skrivände" + +#: builtin.c:247 #, 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:351 +#: builtin.c:354 msgid "index: received non-string first argument" msgstr "index: första argumentet är inte en sträng" -#: builtin.c:353 +#: builtin.c:356 msgid "index: received non-string second argument" msgstr "index: andra argumentet är inte en sträng" -#: builtin.c:466 mpfr.c:777 +#: builtin.c:469 mpfr.c:781 msgid "int: received non-numeric argument" msgstr "int: fick ett ickenumeriskt argument" -#: builtin.c:503 +#: builtin.c:506 msgid "length: received array argument" msgstr "length: fick ett vektorargument" -#: builtin.c:506 +#: builtin.c:509 msgid "`length(array)' is a gawk extension" msgstr "\"length(array)\" är en gawk-utökning" -#: builtin.c:525 +#: builtin.c:528 msgid "length: received non-string argument" msgstr "length: fick ett argument som inte är en sträng" -#: builtin.c:554 +#: builtin.c:557 msgid "log: received non-numeric argument" msgstr "log: fick ett ickenumeriskt argument" -#: builtin.c:557 +#: builtin.c:560 #, c-format msgid "log: received negative argument %g" msgstr "log: fick ett negativt argumentet %g" -#: builtin.c:755 builtin.c:760 builtin.c:911 +#: builtin.c:758 builtin.c:763 builtin.c:914 msgid "fatal: must use `count$' on all formats or none" msgstr "ödesdigert: mÃ¥ste använda \"count$\" pÃ¥ alla eller inga format" -#: builtin.c:830 +#: builtin.c:833 #, c-format msgid "field width is ignored for `%%' specifier" msgstr "fältbredd ignoreras för \"%%\"-specificerare" -#: builtin.c:832 +#: builtin.c:835 #, c-format msgid "precision is ignored for `%%' specifier" msgstr "precision ignoreras för \"%%\"-specificerare" -#: builtin.c:834 +#: builtin.c:837 #, c-format msgid "field width and precision are ignored for `%%' specifier" msgstr "fältbredd och precision ignoreras för \"%%\"-specificerare" -#: builtin.c:885 +#: builtin.c:888 msgid "fatal: `$' is not permitted in awk formats" msgstr "ödesdigert: \"$\" tillÃ¥ts inte i awk-format" -#: builtin.c:894 +#: builtin.c:897 msgid "fatal: arg count with `$' must be > 0" msgstr "ödesdigert: argumentantalet med \"$\" mÃ¥ste vara > 0" -#: builtin.c:898 +#: builtin.c:901 #, c-format msgid "fatal: arg count %ld greater than total number of supplied arguments" msgstr "ödesdigert: argumentantalet %ld är större än antalet givna argument" -#: builtin.c:902 +#: builtin.c:905 msgid "fatal: `$' not permitted after period in format" msgstr "ödesdigert: \"$\" tillÃ¥ts inte efter en punkt i formatet" -#: builtin.c:921 +#: builtin.c:924 msgid "fatal: no `$' supplied for positional field width or precision" msgstr "" "ödesdigert: inget \"$\" bifogat för positionsangiven fältbredd eller " "precision" -#: builtin.c:991 +#: builtin.c:994 msgid "`l' is meaningless in awk formats; ignored" msgstr "\"l\" är meningslös i awk-format, ignorerad" -#: builtin.c:995 +#: builtin.c:998 msgid "fatal: `l' is not permitted in POSIX awk formats" msgstr "ödesdigert: \"l\" tillÃ¥ts inte i POSIX awk-format" -#: builtin.c:1008 +#: builtin.c:1011 msgid "`L' is meaningless in awk formats; ignored" msgstr "\"L\" är meningslös i awk-format, ignorerad" -#: builtin.c:1012 +#: builtin.c:1015 msgid "fatal: `L' is not permitted in POSIX awk formats" msgstr "ödesdigert: \"L\" tillÃ¥ts inte i POSIX awk-format" -#: builtin.c:1025 +#: builtin.c:1028 msgid "`h' is meaningless in awk formats; ignored" msgstr "\"h\" är meningslös i awk-format, ignorerad" -#: builtin.c:1029 +#: builtin.c:1032 msgid "fatal: `h' is not permitted in POSIX awk formats" msgstr "ödesdigert: \"h\" tillÃ¥ts inte i POSIX awk-format" -#: builtin.c:1055 +#: builtin.c:1058 #, c-format msgid "[s]printf: value %g is too big for %%c format" msgstr "[s]printf: värdet %g är utanför formatet %%c giltiga intervall" -#: builtin.c:1068 +#: builtin.c:1071 #, c-format msgid "[s]printf: value %g is not a valid wide character" msgstr "[s]printf: värdet %g är inte ett giltigt brett tecken " -#: builtin.c:1454 +#: builtin.c:1457 #, c-format msgid "[s]printf: value %g is out of range for `%%%c' format" msgstr "[s]printf: värdet %g är utanför \"%%%c\"-formatets giltiga intervall" -#: builtin.c:1552 +#: builtin.c:1555 #, c-format msgid "ignoring unknown format specifier character `%c': no argument converted" msgstr "" "ignorerar okänt formatspecifikationstecken \"%c\": inget argument konverterat" -#: builtin.c:1557 +#: builtin.c:1560 msgid "fatal: not enough arguments to satisfy format string" msgstr "ödesdigert: för fÃ¥ argument för formatsträngen" -#: builtin.c:1559 +#: builtin.c:1562 msgid "^ ran out for this one" msgstr "^ tog slut här" -#: builtin.c:1566 +#: builtin.c:1569 msgid "[s]printf: format specifier does not have control letter" msgstr "[s]printf: formatspecificeraren har ingen kommandobokstav" -#: builtin.c:1569 +#: builtin.c:1572 msgid "too many arguments supplied for format string" msgstr "för mÃ¥nga argument för formatsträngen" -#: builtin.c:1625 +#: builtin.c:1631 msgid "sprintf: no arguments" msgstr "sprintf: inga argument" -#: builtin.c:1648 builtin.c:1659 +#: builtin.c:1654 builtin.c:1665 msgid "printf: no arguments" msgstr "printf: inga argument" -#: builtin.c:1702 +#: builtin.c:1676 +msgid "printf: attempt to write to closed write end of two-way pipe" +msgstr "printf: försök att skriva till stängd skrivände av ett tvÃ¥vägsrör" + +#: builtin.c:1713 msgid "sqrt: received non-numeric argument" msgstr "sqrt: fick ickenumeriskt argument" -#: builtin.c:1706 +#: builtin.c:1717 #, c-format msgid "sqrt: called with negative argument %g" msgstr "sqrt: anropad med negativt argument %g" -#: builtin.c:1737 +#: builtin.c:1748 #, c-format msgid "substr: length %g is not >= 1" msgstr "substr: längden %g är inte >= 1" -#: builtin.c:1739 +#: builtin.c:1750 #, c-format msgid "substr: length %g is not >= 0" msgstr "substr: längden %g är inte >= 0" -#: builtin.c:1753 +#: builtin.c:1764 #, c-format msgid "substr: non-integer length %g will be truncated" msgstr "substr: längden %g som inte är ett heltal kommer huggas av" -#: builtin.c:1758 +#: builtin.c:1769 #, 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, huggas av till %g" -#: builtin.c:1770 +#: builtin.c:1781 #, c-format msgid "substr: start index %g is invalid, using 1" msgstr "substr: startindex %g är ogiltigt, använder 1" -#: builtin.c:1775 +#: builtin.c:1786 #, c-format msgid "substr: non-integer start index %g will be truncated" msgstr "substr: startindex %g som inte är ett heltal kommer huggas av" -#: builtin.c:1798 +#: builtin.c:1809 msgid "substr: source string is zero length" msgstr "substr: källsträngen är tom" -#: builtin.c:1812 +#: builtin.c:1823 #, c-format msgid "substr: start index %g is past end of string" msgstr "substr: startindex %g är bortom strängens slut" -#: builtin.c:1820 +#: builtin.c:1831 #, c-format msgid "" "substr: length %g at start index %g exceeds length of first argument (%lu)" @@ -776,545 +789,553 @@ msgstr "" "substr: längden %g vid startindex %g överskrider det första argumentets " "längd (%lu)" -#: builtin.c:1892 +#: builtin.c:1903 msgid "strftime: format value in PROCINFO[\"strftime\"] has numeric type" msgstr "strftime: formatvärde i PROCINFO[\"strftime\"] har numerisk typ" -#: builtin.c:1915 +#: builtin.c:1926 msgid "strftime: received non-numeric second argument" msgstr "strftime: fick ett ickenumeriskt andra argument" -#: builtin.c:1925 +#: builtin.c:1936 msgid "strftime: second argument less than 0 or too big for time_t" msgstr "strftime: andra argumentet mindre än 0 eller för stort för time_t" -#: builtin.c:1932 +#: builtin.c:1943 msgid "strftime: second argument out of range for time_t" msgstr "strftime: andra argumentet utanför intervallet för för time_t" -#: builtin.c:1941 +#: builtin.c:1952 msgid "strftime: received non-string first argument" msgstr "strftime: fick ett första argument som inte är en sträng" -#: builtin.c:1948 +#: builtin.c:1959 msgid "strftime: received empty format string" msgstr "strftime: fick en tom formatsträng" -#: builtin.c:2017 +#: builtin.c:2028 msgid "mktime: received non-string argument" msgstr "mktime: fick ett argument som inte är en sträng" -#: builtin.c:2034 +#: builtin.c:2045 msgid "mktime: at least one of the values is out of the default range" msgstr "mktime: Ã¥tminstone ett av värdena är utanför standardintervallet" -#: builtin.c:2069 +#: builtin.c:2081 msgid "'system' function not allowed in sandbox mode" msgstr "funktionen \"system\" är inte tillÃ¥ten i sandlÃ¥deläge" -#: builtin.c:2074 +#: builtin.c:2086 msgid "system: received non-string argument" msgstr "system: fick ett argument som inte är en sträng" -#: builtin.c:2194 +#: builtin.c:2165 builtin.c:2230 +msgid "print: attempt to write to closed write end of two-way pipe" +msgstr "print: försök att skriva till stängd skrivände av ett tvÃ¥vägsrör" + +#: builtin.c:2248 #, c-format msgid "reference to uninitialized field `$%d'" msgstr "referens till icke initierat fält \"$%d\"" -#: builtin.c:2279 +#: builtin.c:2333 msgid "tolower: received non-string argument" msgstr "tolower: fick ett argument som inte är en sträng" -#: builtin.c:2310 +#: builtin.c:2364 msgid "toupper: received non-string argument" msgstr "toupper: fick ett argument som inte är en sträng" -#: builtin.c:2343 mpfr.c:679 +#: builtin.c:2397 mpfr.c:681 msgid "atan2: received non-numeric first argument" msgstr "atan2: fick ett ickenumeriskt första argument" -#: builtin.c:2345 mpfr.c:681 +#: builtin.c:2399 mpfr.c:683 msgid "atan2: received non-numeric second argument" msgstr "atan2: fick ett ickenumeriskt andra argument" -#: builtin.c:2364 +#: builtin.c:2418 msgid "sin: received non-numeric argument" msgstr "sin: fick ett ickenumeriskt argument" -#: builtin.c:2380 +#: builtin.c:2434 msgid "cos: received non-numeric argument" msgstr "cos: fick ett ickenumeriskt argument" -#: builtin.c:2433 mpfr.c:1176 +#: builtin.c:2487 mpfr.c:1180 msgid "srand: received non-numeric argument" msgstr "srand: fick ett ickenumeriskt argument" -#: builtin.c:2464 +#: builtin.c:2518 msgid "match: third argument is not an array" msgstr "match: tredje argumentet är inte en vektor" -#: builtin.c:2725 +#: builtin.c:2779 #, c-format msgid "gensub: third argument `%.*s' treated as 1" msgstr "gensub: tredje argumentet â€%.*s†behandlat som 1" -#: builtin.c:2740 +#: builtin.c:2794 #, c-format msgid "gensub: third argument %g treated as 1" msgstr "gensub: tredje argumentet %g behandlat som 1" -#: builtin.c:3038 +#: builtin.c:3096 #, c-format msgid "%s: can be called indirectly only with two arguments" msgstr "%s: kan anropas indirekt endast med tvÃ¥ argument" -#: builtin.c:3128 +#: builtin.c:3186 #, c-format msgid "indirect call to %s requires at least two arguments" msgstr "indirekt anrop till %s kräver Ã¥tminstone tvÃ¥ argument" -#: builtin.c:3180 +#: builtin.c:3238 msgid "lshift: received non-numeric first argument" msgstr "lshift: fick ett ickenumeriskt första argument" -#: builtin.c:3182 +#: builtin.c:3240 msgid "lshift: received non-numeric second argument" msgstr "lshift: fick ett ickenumeriskt andra argument" -#: builtin.c:3188 +#: builtin.c:3246 #, c-format msgid "lshift(%f, %f): negative values will give strange results" msgstr "lshift(%f, %f): negativa värden kommer ge konstiga resultat" -#: builtin.c:3190 +#: builtin.c:3248 #, c-format msgid "lshift(%f, %f): fractional values will be truncated" msgstr "lshift(%f, %f): flyttalsvärden kommer huggas av" -#: builtin.c:3192 +#: builtin.c:3250 #, c-format msgid "lshift(%f, %f): too large shift value will give strange results" msgstr "lshift(%f, %f): för stort skiftvärde kommer ge konstiga resultat" -#: builtin.c:3217 +#: builtin.c:3275 msgid "rshift: received non-numeric first argument" msgstr "rshift: fick ett ickenumeriskt första argument" -#: builtin.c:3219 +#: builtin.c:3277 msgid "rshift: received non-numeric second argument" msgstr "rshift: fick ett ickenumeriskt andra argument" -#: builtin.c:3225 +#: builtin.c:3283 #, c-format msgid "rshift(%f, %f): negative values will give strange results" msgstr "rshift(%f, %f): negativa värden kommer ge konstiga resultat" -#: builtin.c:3227 +#: builtin.c:3285 #, c-format msgid "rshift(%f, %f): fractional values will be truncated" msgstr "rshift(%f, %f): flyttalsvärden kommer huggas av" -#: builtin.c:3229 +#: builtin.c:3287 #, c-format msgid "rshift(%f, %f): too large shift value will give strange results" msgstr "rshift(%f, %f): för stor skiftvärde kommer ge konstiga resultat" -#: builtin.c:3254 mpfr.c:988 +#: builtin.c:3312 mpfr.c:992 msgid "and: called with less than two arguments" msgstr "and: anropad med mindre än tvÃ¥ argument" -#: builtin.c:3259 +#: builtin.c:3317 #, c-format msgid "and: argument %d is non-numeric" msgstr "and: argument %d är inte numeriskt" -#: builtin.c:3263 +#: builtin.c:3321 #, c-format msgid "and: argument %d negative value %g will give strange results" msgstr "and: argument %d med negativt värde %g kommer ge konstiga resultat" -#: builtin.c:3286 mpfr.c:1020 +#: builtin.c:3344 mpfr.c:1024 msgid "or: called with less than two arguments" msgstr "or: anropad med färre än tvÃ¥ argument" -#: builtin.c:3291 +#: builtin.c:3349 #, c-format msgid "or: argument %d is non-numeric" msgstr "or: argument %d är inte numeriskt" -#: builtin.c:3295 +#: builtin.c:3353 #, c-format msgid "or: argument %d negative value %g will give strange results" msgstr "or: argument %d med negativt värde %g kommer ge konstiga resultat" -#: builtin.c:3317 mpfr.c:1051 +#: builtin.c:3375 mpfr.c:1055 msgid "xor: called with less than two arguments" msgstr "xor: anropad med färre än tvÃ¥ argument" -#: builtin.c:3323 +#: builtin.c:3381 #, c-format msgid "xor: argument %d is non-numeric" msgstr "xor: argument %d är inte numeriskt" -#: builtin.c:3327 +#: builtin.c:3385 #, c-format msgid "xor: argument %d negative value %g will give strange results" msgstr "xor: argument %d med negativt värde %g kommer ge konstiga resultat" -#: builtin.c:3352 mpfr.c:807 +#: builtin.c:3410 mpfr.c:811 msgid "compl: received non-numeric argument" msgstr "compl: fick ett ickenumeriskt argument" -#: builtin.c:3358 +#: builtin.c:3416 #, c-format msgid "compl(%f): negative value will give strange results" msgstr "compl(%f): negativt värde kommer ge konstiga resultat" -#: builtin.c:3360 +#: builtin.c:3418 #, c-format msgid "compl(%f): fractional value will be truncated" msgstr "compl(%f): flyttalsvärde kommer huggas av" -#: builtin.c:3529 +#: builtin.c:3588 #, c-format msgid "dcgettext: `%s' is not a valid locale category" msgstr "dcgettext: \"%s\" är inte en giltig lokalkategori" -#: command.y:225 +#: command.y:226 #, c-format msgid "Type (g)awk statement(s). End with the command \"end\"\n" msgstr "Skriv (g)awk-satser. Avsluta med kommandot â€endâ€\n" -#: command.y:289 +#: command.y:290 #, c-format msgid "invalid frame number: %d" msgstr "ogiltigt ramnummer: %d" -#: command.y:295 +#: command.y:296 #, c-format msgid "info: invalid option - \"%s\"" -msgstr "info: ogiltig flagga - â€%sâ€" +msgstr "info: ogiltig flagga — â€%sâ€" -#: command.y:321 +#: command.y:322 #, c-format msgid "source \"%s\": already sourced." msgstr "source \"%s\": redan inläst." -#: command.y:326 +#: command.y:327 #, c-format msgid "save \"%s\": command not permitted." msgstr "save \"%s\": kommandot inte tillÃ¥tet." -#: command.y:339 +#: command.y:340 msgid "Can't use command `commands' for breakpoint/watchpoint commands" msgstr "" "Det gÃ¥r inte att använda kommandot â€commands†i brytpunkts-/" "observationspunktskommandon" -#: command.y:341 +#: command.y:342 msgid "no breakpoint/watchpoint has been set yet" msgstr "ingen brytpunkt/observationspunkt har satts ännu" -#: command.y:343 +#: command.y:344 msgid "invalid breakpoint/watchpoint number" msgstr "ogiltigt brytpunkts-/observationspunktsnummer" -#: command.y:348 +#: command.y:349 #, c-format msgid "Type commands for when %s %d is hit, one per line.\n" msgstr "Skriv kommandon att användas när %s %d träffas, ett per rad.\n" -#: command.y:350 +#: command.y:351 #, c-format msgid "End with the command \"end\"\n" msgstr "Avsluta med kommandot â€endâ€\n" -#: command.y:357 +#: command.y:358 msgid "`end' valid only in command `commands' or `eval'" msgstr "â€end†är giltigt endast i kommandona â€commands†och â€evalâ€" -#: command.y:367 +#: command.y:368 msgid "`silent' valid only in command `commands'" msgstr "â€silent†är giltigt endast i kommandot â€commandsâ€" -#: command.y:373 +#: command.y:374 #, c-format msgid "trace: invalid option - \"%s\"" -msgstr "trace: ogiltig flagga - â€%sâ€" +msgstr "trace: ogiltig flagga — â€%sâ€" -#: command.y:387 +#: command.y:388 msgid "condition: invalid breakpoint/watchpoint number" msgstr "condition: ogiltigt brytpunkts-/observationspunktsnummer" -#: command.y:449 +#: command.y:450 msgid "argument not a string" msgstr "argumentet är inte en sträng" -#: command.y:459 command.y:464 +#: command.y:460 command.y:465 #, c-format msgid "option: invalid parameter - \"%s\"" -msgstr "option: ogiltig parameter - \"%s\"" +msgstr "option: ogiltig parameter — \"%s\"" -#: command.y:474 +#: command.y:475 #, c-format msgid "no such function - \"%s\"" -msgstr "ingen sÃ¥dan funktion - \"%s\"" +msgstr "ingen sÃ¥dan funktion — \"%s\"" -#: command.y:531 +#: command.y:532 #, c-format msgid "enable: invalid option - \"%s\"" -msgstr "enable: ogiltig flagga - â€%sâ€" +msgstr "enable: ogiltig flagga — â€%sâ€" -#: command.y:597 +#: command.y:598 #, c-format msgid "invalid range specification: %d - %d" msgstr "ogiltigt intervallspecifikation: %d - %d" -#: command.y:659 +#: command.y:660 msgid "non-numeric value for field number" msgstr "icke numeriskt värde som fältnummer" -#: command.y:680 command.y:687 +#: command.y:681 command.y:688 msgid "non-numeric value found, numeric expected" msgstr "ickenumeriskt värde fanns, numeriskt förväntades" -#: command.y:712 command.y:718 +#: command.y:713 command.y:719 msgid "non-zero integer value" msgstr "heltalsvärde som inte är noll" -#: command.y:817 +#: command.y:818 msgid "" "backtrace [N] - print trace of all or N innermost (outermost if N < 0) " "frames." msgstr "" -"backtrace [N] - skriv ett spÃ¥r över alla eller N innersta (yttersta om N < " +"backtrace [N] — skriv ett spÃ¥r över alla eller N innersta (yttersta om N < " "0) ramar." -#: command.y:819 +#: command.y:820 msgid "" "break [[filename:]N|function] - set breakpoint at the specified location." -msgstr "break [[filename:]N|function] - sätt brytpunkt pÃ¥ den angivna platsen." +msgstr "break [[filename:]N|function] — sätt brytpunkt pÃ¥ den angivna platsen." -#: command.y:821 +#: command.y:822 msgid "clear [[filename:]N|function] - delete breakpoints previously set." -msgstr "clear [[filnamn:]N|funktion] - radera tidigare satta brytpunkter." +msgstr "clear [[filnamn:]N|funktion] — radera tidigare satta brytpunkter." -#: command.y:823 +#: command.y:824 msgid "" "commands [num] - starts a list of commands to be executed at a " "breakpoint(watchpoint) hit." msgstr "" -"commands [num] - startar en lista av kommandon att köra när en " +"commands [num] — startar en lista av kommandon att köra när en " "brytpunkt(observationspunkt) träffas." -#: command.y:825 +#: command.y:826 msgid "condition num [expr] - set or clear breakpoint or watchpoint condition." msgstr "" -"condition num [uttr] - sätt eller töm en brytpunkts eller observationspunkts " +"condition num [uttr] — sätt eller töm en brytpunkts eller observationspunkts " "villkor." -#: command.y:827 +#: command.y:828 msgid "continue [COUNT] - continue program being debugged." -msgstr "continue [ANTAL] - fortsätt programmet som felsöks." +msgstr "continue [ANTAL] — fortsätt programmet som felsöks." -#: command.y:829 +#: command.y:830 msgid "delete [breakpoints] [range] - delete specified breakpoints." -msgstr "delete [brytpunkter] [intervall] - radera angivna brytpunkter." +msgstr "delete [brytpunkter] [intervall] — radera angivna brytpunkter." -#: command.y:831 +#: command.y:832 msgid "disable [breakpoints] [range] - disable specified breakpoints." -msgstr "disable [brytpunkter] [intervall] - avaktivera angivna brytpunkter." +msgstr "disable [brytpunkter] [intervall] — avaktivera angivna brytpunkter." -#: command.y:833 +#: command.y:834 msgid "display [var] - print value of variable each time the program stops." msgstr "" -"display [var] - skriv ut värdet pÃ¥ variabeln varje gÃ¥ng programmet stoppar." +"display [var] — skriv ut värdet pÃ¥ variabeln varje gÃ¥ng programmet stoppar." -#: command.y:835 +#: command.y:836 msgid "down [N] - move N frames down the stack." -msgstr "down [N] - flytta N ramar ner i stacken." +msgstr "down [N] — flytta N ramar ner i stacken." -#: command.y:837 +#: command.y:838 msgid "dump [filename] - dump instructions to file or stdout." -msgstr "dump [filnamn] - skriv instruktioner till filen eller standard ut." +msgstr "dump [filnamn] — skriv instruktioner till filen eller standard ut." -#: command.y:839 +#: command.y:840 msgid "enable [once|del] [breakpoints] [range] - enable specified breakpoints." msgstr "" -"enable [once|del] [brytpunkter] [intervall] - aktivera angivna brytpunkter." +"enable [once|del] [brytpunkter] [intervall] — aktivera angivna brytpunkter." -#: command.y:841 +#: command.y:842 msgid "end - end a list of commands or awk statements." -msgstr "end - avsluta en lista av kommandon eller awk-satser." +msgstr "end — avsluta en lista av kommandon eller awk-satser." -#: command.y:843 +#: command.y:844 msgid "eval stmt|[p1, p2, ...] - evaluate awk statement(s)." -msgstr "eval sats|[p1, p2, ...] - utför awk-sats(er)." +msgstr "eval sats|[p1, p2, ...] — utför awk-sats(er)." + +#: command.y:846 +msgid "exit - (same as quit) exit debugger." +msgstr "exit — (samma som quit) avsluta felsökaren." -#: command.y:845 +#: command.y:848 msgid "finish - execute until selected stack frame returns." -msgstr "finish - kör tills den valda stackramen returnerar." +msgstr "finish — kör tills den valda stackramen returnerar." -#: command.y:847 +#: command.y:850 msgid "frame [N] - select and print stack frame number N." -msgstr "frame [N] - välj och skriv ut stackram nummer N." +msgstr "frame [N] — välj och skriv ut stackram nummer N." -#: command.y:849 +#: command.y:852 msgid "help [command] - print list of commands or explanation of command." msgstr "" -"help [kommando] - skriv listan av kommandon eller en förklaring av kommando." +"help [kommando] — skriv listan av kommandon eller en förklaring av kommando." -#: command.y:851 +#: command.y:854 msgid "ignore N COUNT - set ignore-count of breakpoint number N to COUNT." msgstr "" -"ignore N ANTAL - sätt ignoreringsantal pÃ¥ brytpunkt nummer N till ANTAL." +"ignore N ANTAL — sätt ignoreringsantal pÃ¥ brytpunkt nummer N till ANTAL." -#: command.y:853 +#: command.y:856 msgid "" "info topic - source|sources|variables|functions|break|frame|args|locals|" "display|watch." msgstr "" -"info topic - source|sources|variables|functions|break|frame|args|locals|" +"info topic — source|sources|variables|functions|break|frame|args|locals|" "display|watch." -#: command.y:855 +#: command.y:858 msgid "list [-|+|[filename:]lineno|function|range] - list specified line(s)." -msgstr "list [-|+|[filnamn:]radnr|funktion|intervall] - lista angivna rad(er)." +msgstr "list [-|+|[filnamn:]radnr|funktion|intervall] — lista angivna rad(er)." -#: command.y:857 +#: command.y:860 msgid "next [COUNT] - step program, proceeding through subroutine calls." -msgstr "next [ANTAL] - stega programmet, passera genom subrutinanrop." +msgstr "next [ANTAL] — stega programmet, passera genom subrutinanrop." -#: command.y:859 +#: command.y:862 msgid "" "nexti [COUNT] - step one instruction, but proceed through subroutine calls." -msgstr "nexti [ANTAL] - stega en instruktion, men passera genom subrutinanrop." +msgstr "nexti [ANTAL] — stega en instruktion, men passera genom subrutinanrop." -#: command.y:861 +#: command.y:864 msgid "option [name[=value]] - set or display debugger option(s)." -msgstr "option [namn[=värde]] - sätt eller visa felsökningsalternativ." +msgstr "option [namn[=värde]] — sätt eller visa felsökningsalternativ." -#: command.y:863 +#: command.y:866 msgid "print var [var] - print value of a variable or array." -msgstr "print var [var] - skriv värdet pÃ¥ en variabel eller vektor." +msgstr "print var [var] — skriv värdet pÃ¥ en variabel eller vektor." -#: command.y:865 +#: command.y:868 msgid "printf format, [arg], ... - formatted output." -msgstr "printf format, [arg], … - formaterad utskrift." +msgstr "printf format, [arg], … — formaterad utskrift." -#: command.y:867 +#: command.y:870 msgid "quit - exit debugger." -msgstr "quit - avsluta felsökaren." +msgstr "quit — avsluta felsökaren." -#: command.y:869 +#: command.y:872 msgid "return [value] - make selected stack frame return to its caller." -msgstr "return [värde] - lÃ¥t den valda stackramen returnera till sin anropare." +msgstr "return [värde] — lÃ¥t den valda stackramen returnera till sin anropare." -#: command.y:871 +#: command.y:874 msgid "run - start or restart executing program." -msgstr "run - starta eller starta om körningen av programmet." +msgstr "run — starta eller starta om körningen av programmet." -#: command.y:874 +#: command.y:877 msgid "save filename - save commands from the session to file." -msgstr "save filnamn - spara kommandon frÃ¥n sessionen i en fil." +msgstr "save filnamn — spara kommandon frÃ¥n sessionen i en fil." -#: command.y:877 +#: command.y:880 msgid "set var = value - assign value to a scalar variable." -msgstr "set var = värde - tilldela värde till en skalär variabel." +msgstr "set var = värde — tilldela värde till en skalär variabel." -#: command.y:879 +#: command.y:882 msgid "" "silent - suspends usual message when stopped at a breakpoint/watchpoint." msgstr "" -"silent - undertrycker normala meddelanden vid stopp pÃ¥ en brytpunkt/" +"silent — undertrycker normala meddelanden vid stopp pÃ¥ en brytpunkt/" "observationspunkt. " -#: command.y:881 +#: command.y:884 msgid "source file - execute commands from file." -msgstr "source fil - kör kommandon frÃ¥n fil." +msgstr "source fil — kör kommandon frÃ¥n fil." -#: command.y:883 +#: command.y:886 msgid "step [COUNT] - step program until it reaches a different source line." -msgstr "step [ANTAL] - stega programmet tills det nÃ¥r en annan källkodsrad." +msgstr "step [ANTAL] — stega programmet tills det nÃ¥r en annan källkodsrad." -#: command.y:885 +#: command.y:888 msgid "stepi [COUNT] - step one instruction exactly." -msgstr "stepi [ANTAL] - stega exakt en instruktion." +msgstr "stepi [ANTAL] — stega exakt en instruktion." -#: command.y:887 +#: command.y:890 msgid "tbreak [[filename:]N|function] - set a temporary breakpoint." -msgstr "tbreak [[filenamn:]N|funktion] - sätt en tillfällig brytpunkt." +msgstr "tbreak [[filenamn:]N|funktion] — sätt en tillfällig brytpunkt." -#: command.y:889 +#: command.y:892 msgid "trace on|off - print instruction before executing." -msgstr "trace on|off - skriv ut instruktioner före de körs." +msgstr "trace on|off — skriv ut instruktioner före de körs." -#: command.y:891 +#: command.y:894 msgid "undisplay [N] - remove variable(s) from automatic display list." -msgstr "undisplay [N] - ta bort variabler frÃ¥n listan över automatiskt visade." +msgstr "undisplay [N] — ta bort variabler frÃ¥n listan över automatiskt visade." -#: command.y:893 +#: command.y:896 msgid "" "until [[filename:]N|function] - execute until program reaches a different " "line or line N within current frame." msgstr "" -"until [[filenamn:]N|funktion] - kör tills programmet nÃ¥r en annan rad eller " +"until [[filenamn:]N|funktion] — kör tills programmet nÃ¥r en annan rad eller " "rad N inom aktuell ram." -#: command.y:895 +#: command.y:898 msgid "unwatch [N] - remove variable(s) from watch list." -msgstr "unwatch [N] - ta bort variabler frÃ¥n observationslistan." +msgstr "unwatch [N] — ta bort variabler frÃ¥n observationslistan." -#: command.y:897 +#: command.y:900 msgid "up [N] - move N frames up the stack." -msgstr "up [N] - flytta N ramar uppÃ¥t i stacken." +msgstr "up [N] — flytta N ramar uppÃ¥t i stacken." -#: command.y:899 +#: command.y:902 msgid "watch var - set a watchpoint for a variable." -msgstr "watch var - sätt en observationspunkt för en variabel." +msgstr "watch var — sätt en observationspunkt för en variabel." -#: command.y:901 +#: command.y:904 msgid "" "where [N] - (same as backtrace) print trace of all or N innermost (outermost " "if N < 0) frames." msgstr "" -"where [N] - (samma som backtrace) skriv ett spÃ¥r över alla eller N innersta " +"where [N] — (samma som backtrace) skriv ett spÃ¥r över alla eller N innersta " "(yttersta om N < 0) ramar." -#: command.y:1013 debug.c:401 msg.c:135 +#: command.y:1016 debug.c:401 msg.c:135 #, c-format msgid "error: " msgstr "fel: " -#: command.y:1053 +#: command.y:1060 #, c-format msgid "can't read command (%s)\n" msgstr "kan inte läsa kommando (%s)\n" -#: command.y:1067 +#: command.y:1074 #, c-format msgid "can't read command (%s)" msgstr "kan inte läsa kommandot (%s)" -#: command.y:1118 +#: command.y:1125 msgid "invalid character in command" msgstr "ogiltigt tecken i kommandot" -#: command.y:1154 +#: command.y:1161 #, c-format msgid "unknown command - \"%.*s\", try help" -msgstr "okänt kommando - \"%.*s\", försök med help" +msgstr "okänt kommando — \"%.*s\", försök med help" -#: command.y:1224 +#: command.y:1231 #, c-format msgid "%s" msgstr "%s" -#: command.y:1286 +#: command.y:1293 msgid "invalid character" msgstr "ogiltigt tecken" -#: command.y:1457 +#: command.y:1497 #, c-format msgid "undefined command: %s\n" msgstr "odefinierat kommando: %s\n" @@ -1522,17 +1543,17 @@ msgstr "[\"%s\"] finns inte i vektorn â€%sâ€\n" msgid "`%s[\"%s\"]' is not an array\n" msgstr "â€%s[\"%s\"]†är inte en vektor\n" -#: debug.c:1236 debug.c:4964 +#: debug.c:1236 debug.c:5010 #, c-format msgid "`%s' is not a scalar variable" msgstr "â€%s†är inte en skalär variabel" -#: debug.c:1258 debug.c:4994 +#: debug.c:1258 debug.c:5040 #, c-format msgid "attempt to use array `%s[\"%s\"]' in a scalar context" msgstr "försök att använda vektorn â€%s[\"%s\"]†i skalärt sammanhang" -#: debug.c:1280 debug.c:5005 +#: debug.c:1280 debug.c:5051 #, c-format msgid "attempt to use scalar `%s[\"%s\"]' as array" msgstr "försök att använda skalären â€%s[\"%s\"]†som en vektor" @@ -1810,101 +1831,101 @@ msgstr "â€finish†är inte meningsfullt med icke lokalt hopp â€%sâ€\n" msgid "'until' not meaningful with non-local jump '%s'\n" msgstr "â€until†är inte meningsfullt med icke lokalt hopp â€%sâ€\n" -#: debug.c:4185 +#: debug.c:4231 msgid "\t------[Enter] to continue or q [Enter] to quit------" msgstr "" "\t------[Retur] för att fortsätta eller a [Retur] för att avsluta------" -#: debug.c:4186 +#: debug.c:4232 msgid "q" msgstr "a" -#: debug.c:5001 +#: debug.c:5047 #, c-format msgid "[\"%s\"] not in array `%s'" msgstr "[\"%s\"] finns inte i vektorn â€%sâ€" -#: debug.c:5207 +#: debug.c:5253 #, c-format msgid "sending output to stdout\n" msgstr "skickar utdata till standard ut\n" -#: debug.c:5247 +#: debug.c:5293 msgid "invalid number" msgstr "ogiltigt tal" -#: debug.c:5381 +#: debug.c:5427 #, c-format msgid "`%s' not allowed in current context; statement ignored" msgstr "â€%s†är inte tillÃ¥tet i det aktuella sammanhanget; satsen ignoreras" -#: debug.c:5389 +#: debug.c:5435 msgid "`return' not allowed in current context; statement ignored" msgstr "" "â€return†är inte tillÃ¥tet i det aktuella sammanhanget; satsen ignoreras" -#: debug.c:5604 +#: debug.c:5650 #, c-format msgid "No symbol `%s' in current context" msgstr "Ingen symbol â€%s†i aktuell omgivning" -#: dfa.c:1062 dfa.c:1065 dfa.c:1084 dfa.c:1094 dfa.c:1106 dfa.c:1142 -#: dfa.c:1151 dfa.c:1154 dfa.c:1159 dfa.c:1173 dfa.c:1221 +#: dfa.c:1090 dfa.c:1093 dfa.c:1112 dfa.c:1122 dfa.c:1135 dfa.c:1163 dfa.c:1172 +#: dfa.c:1175 dfa.c:1180 dfa.c:1202 dfa.c:1205 msgid "unbalanced [" msgstr "obalanserad [" -#: dfa.c:1118 +#: dfa.c:1148 msgid "invalid character class" msgstr "ogiltig teckenklass" -#: dfa.c:1264 +#: dfa.c:1271 msgid "character class syntax is [[:space:]], not [:space:]" msgstr "syntaxen för teckenklass är [[:space:]], inte [:space:]" -#: dfa.c:1326 +#: dfa.c:1332 msgid "unfinished \\ escape" msgstr "oavslutad \\-följd" -#: dfa.c:1473 +#: dfa.c:1499 msgid "invalid content of \\{\\}" msgstr "ogiltigt innehÃ¥ll i \\{\\}" -#: dfa.c:1476 +#: dfa.c:1502 msgid "regular expression too big" msgstr "reguljärt uttryck för stort" -#: dfa.c:1911 +#: dfa.c:1916 msgid "unbalanced (" msgstr "obalanserad (" -#: dfa.c:2037 +#: dfa.c:2044 msgid "no syntax specified" msgstr "ingen syntax angiven" -#: dfa.c:2045 +#: dfa.c:2052 msgid "unbalanced )" msgstr "obalanserad )" -#: eval.c:396 +#: eval.c:398 #, c-format msgid "unknown nodetype %d" msgstr "okänd nodtyp %d" -#: eval.c:407 eval.c:421 +#: eval.c:409 eval.c:423 #, c-format msgid "unknown opcode %d" msgstr "okänd op-kod %d" -#: eval.c:418 +#: eval.c:420 #, c-format msgid "opcode %s not an operator or keyword" msgstr "op-kod %s är inte en operator eller ett nyckelord" -#: eval.c:474 +#: eval.c:476 msgid "buffer overflow in genflags2str" msgstr "buffertöverflöd i genflags2str" -#: eval.c:676 +#: eval.c:678 #, c-format msgid "" "\n" @@ -1915,295 +1936,289 @@ msgstr "" "\t# Funktionsanropsstack:\n" "\n" -#: eval.c:705 +#: eval.c:707 msgid "`IGNORECASE' is a gawk extension" msgstr "\"IGNORECASE\" är en gawk-utökning" -#: eval.c:737 +#: eval.c:739 msgid "`BINMODE' is a gawk extension" msgstr "\"BINMODE\" är en gawk-utökning" -#: eval.c:795 +#: eval.c:797 #, c-format msgid "BINMODE value `%s' is invalid, treated as 3" msgstr "BINMODE-värde \"%s\" är ogiltigt, behandlas som 3" -#: eval.c:912 +#: eval.c:914 #, c-format msgid "bad `%sFMT' specification `%s'" msgstr "felaktig \"%sFMT\"-specifikation \"%s\"" -#: eval.c:996 +#: eval.c:988 msgid "turning off `--lint' due to assignment to `LINT'" msgstr "slÃ¥r av \"--lint\" pÃ¥ grund av en tilldelning till \"LINT\"" -#: eval.c:1174 +#: eval.c:1166 #, c-format msgid "reference to uninitialized argument `%s'" msgstr "referens till icke initierat argument \"%s\"" -#: eval.c:1175 +#: eval.c:1167 #, c-format msgid "reference to uninitialized variable `%s'" msgstr "referens till icke initierad variabel \"%s\"" -#: eval.c:1193 +#: eval.c:1185 msgid "attempt to field reference from non-numeric value" msgstr "försök att fältreferera frÃ¥n ickenumeriskt värde" -#: eval.c:1195 +#: eval.c:1187 msgid "attempt to field reference from null string" msgstr "försök till fältreferens frÃ¥n en tom sträng" -#: eval.c:1203 +#: eval.c:1195 #, c-format msgid "attempt to access field %ld" msgstr "försök att komma Ã¥t fält nummer %ld" -#: eval.c:1212 +#: eval.c:1204 #, c-format msgid "reference to uninitialized field `$%ld'" msgstr "referens till icke initierat fält \"$%ld\"" -#: eval.c:1299 +#: eval.c:1291 #, c-format msgid "function `%s' called with more arguments than declared" msgstr "funktionen \"%s\" anropad med fler argument än vad som deklarerats" -#: eval.c:1506 +#: eval.c:1498 #, c-format msgid "unwind_stack: unexpected type `%s'" msgstr "unwind_stack: oväntad typ \"%s\"" -#: eval.c:1602 +#: eval.c:1594 msgid "division by zero attempted in `/='" msgstr "försökte dividera med noll i \"/=\"" -#: eval.c:1609 +#: eval.c:1601 #, c-format msgid "division by zero attempted in `%%='" msgstr "försökte dividera med noll i \"%%=\"" -#: ext.c:65 ext.c:147 +#: ext.c:66 ext.c:148 msgid "extensions are not allowed in sandbox mode" msgstr "utökningar är inte tillÃ¥tna i sandlÃ¥deläge" -#: ext.c:68 +#: ext.c:69 msgid "-l / @load are gawk extensions" msgstr "-l / @load är gawk-utökningar" -#: ext.c:71 +#: ext.c:72 msgid "load_ext: received NULL lib_name" msgstr "load_ext: mottog NULL-lib_name" -#: ext.c:74 +#: ext.c:75 #, c-format msgid "load_ext: cannot open library `%s' (%s)\n" msgstr "load_ext: kan inte öppna biblioteket â€%s†(%s)\n" -#: ext.c:80 +#: ext.c:81 #, c-format msgid "" "load_ext: library `%s': does not define `plugin_is_GPL_compatible' (%s)\n" msgstr "" "load_ext: biblioteket â€%sâ€: definierar inte â€plugin_is_GPL_compatible†(%s)\n" -#: ext.c:86 +#: ext.c:87 #, c-format msgid "load_ext: library `%s': cannot call function `%s' (%s)\n" msgstr "load_ext: biblioteket â€%sâ€: kan inte anropa funktionen â€%s†(%s)\n" -#: ext.c:90 +#: ext.c:91 #, c-format msgid "load_ext: library `%s' initialization routine `%s' failed\n" msgstr "" "load_ext: initieringsrutinen â€%2$s†i biblioteket â€%1$s†misslyckades\n" -#: ext.c:150 +#: ext.c:151 msgid "`extension' is a gawk extension" msgstr "\"extension\" är en gawk-utökning" -#: ext.c:153 +#: ext.c:154 msgid "extension: received NULL lib_name" msgstr "utökning: mottog NULL-lib_name" -#: ext.c:156 +#: ext.c:157 #, c-format msgid "extension: cannot open library `%s' (%s)" msgstr "extension: kan inte öppna biblioteket â€%s†(%s)" -#: ext.c:162 +#: ext.c:163 #, c-format msgid "" "extension: library `%s': does not define `plugin_is_GPL_compatible' (%s)" msgstr "" "extension: biblioteket â€%sâ€: definierar inte â€plugin_is_GPL_compatible†(%s)" -#: ext.c:166 +#: ext.c:167 #, c-format msgid "extension: library `%s': cannot call function `%s' (%s)" msgstr "extension: biblioteket â€%sâ€: kan inte anropa funktionen â€%s†(%s)" -#: ext.c:197 +#: ext.c:198 msgid "make_builtin: missing function name" msgstr "make_builtin: funktionsnamn saknas" -#: ext.c:212 +#: ext.c:213 #, c-format msgid "make_builtin: can't redefine function `%s'" msgstr "make_builtin: det gÃ¥r inte att definiera om funktionen â€%sâ€" -#: ext.c:216 +#: ext.c:217 #, c-format msgid "make_builtin: function `%s' already defined" msgstr "make_builtin: funktionen â€%s†är redan definierad" -#: ext.c:220 +#: ext.c:221 #, c-format msgid "make_builtin: function name `%s' previously defined" msgstr "make_builtin: funktionsnamnet â€%s†är definierat sedan tidigare" -#: ext.c:222 +#: ext.c:223 #, c-format msgid "make_builtin: can't use gawk built-in `%s' as function name" msgstr "" "make_builtin: kan inte använda gawks inbyggda â€%s†som ett funktionsnamn" -#: ext.c:225 ext.c:280 +#: ext.c:226 ext.c:281 #, c-format msgid "make_builtin: negative argument count for function `%s'" msgstr "make_builtin: negativt argumentantal för funktionen \"%s\"" -#: ext.c:252 +#: ext.c:253 msgid "extension: missing function name" msgstr "extension: saknar funktionsnamn" -#: ext.c:255 ext.c:259 +#: ext.c:256 ext.c:260 #, c-format msgid "extension: illegal character `%c' in function name `%s'" msgstr "extension: ogiltigt tecken \"%c\" i funktionsnamnet \"%s\"" -#: ext.c:267 +#: ext.c:268 #, c-format msgid "extension: can't redefine function `%s'" msgstr "extension: det gÃ¥r inte att definiera om funktionen \"%s\"" -#: ext.c:271 +#: ext.c:272 #, c-format msgid "extension: function `%s' already defined" msgstr "extension: funktionen \"%s\" är redan definierad" -#: ext.c:275 +#: ext.c:276 #, c-format msgid "extension: function name `%s' previously defined" msgstr "extension: funktionsnamnet \"%s\" är definierat sedan tidigare" -#: ext.c:277 +#: ext.c:278 #, c-format msgid "extension: can't use gawk built-in `%s' as function name" msgstr "" "extension: kan inte använda gawks inbyggda \"%s\" som ett funktionsnamn" -#: ext.c:351 -#, c-format -msgid "function `%s' defined to take no more than %d argument(s)" -msgstr "funktionen \"%s\" definierades för att ta maximalt %d argument" - -#: ext.c:354 -#, c-format -msgid "function `%s': missing argument #%d" -msgstr "funktionen \"%s\": argument %d saknas" - -#: ext.c:371 +#: ext.c:358 #, c-format msgid "function `%s': argument #%d: attempt to use scalar as an array" msgstr "funktionen \"%s\": argument %d: försök att använda skalär som vektor" -#: ext.c:375 +#: ext.c:362 #, c-format msgid "function `%s': argument #%d: attempt to use array as a scalar" msgstr "funktionen \"%s\": argument %d: försök att använda vektor som skalär" -#: ext.c:389 +#: ext.c:376 msgid "dynamic loading of library not supported" msgstr "dynamisk laddning av bibliotek stödjs inte" -#: extension/filefuncs.c:159 +#: extension/filefuncs.c:164 msgid "chdir: called with incorrect number of arguments, expecting 1" msgstr "chdir: anropad med felaktigt antal argument, förväntade 1" -#: extension/filefuncs.c:439 +#: extension/filefuncs.c:444 #, c-format msgid "stat: unable to read symbolic link `%s'" msgstr "stat: kan inte läsa den symboliska länken â€%sâ€" -#: extension/filefuncs.c:472 +#: extension/filefuncs.c:477 msgid "stat: called with wrong number of arguments" msgstr "stat: anropad med fel antal argument" -#: extension/filefuncs.c:479 +#: extension/filefuncs.c:484 extension/filefuncs.c:534 msgid "stat: bad parameters" msgstr "stat: felaktiga parametrar" -#: extension/filefuncs.c:533 +#: extension/filefuncs.c:527 +msgid "statvfs: called with wrong number of arguments" +msgstr "statvfs: anropad med fel antal argument" + +#: extension/filefuncs.c:598 #, c-format msgid "fts init: could not create variable %s" msgstr "fts init: kunde inte skapa variabeln %s" -#: extension/filefuncs.c:554 +#: extension/filefuncs.c:619 msgid "fts is not supported on this system" msgstr "fts stödjs inte pÃ¥ detta system" -#: extension/filefuncs.c:573 +#: extension/filefuncs.c:638 msgid "fill_stat_element: could not create array" msgstr "fill_stat_element: kunde inte skapa en vektor" -#: extension/filefuncs.c:582 +#: extension/filefuncs.c:647 msgid "fill_stat_element: could not set element" msgstr "fill_stat_element: kunde inte sätta ett element" -#: extension/filefuncs.c:597 +#: extension/filefuncs.c:662 msgid "fill_path_element: could not set element" msgstr "fill_path_element: kunde inte sätta ett element" -#: extension/filefuncs.c:613 +#: extension/filefuncs.c:678 msgid "fill_error_element: could not set element" msgstr "fill_error_element: kunde inte sätta ett element" -#: extension/filefuncs.c:660 extension/filefuncs.c:707 +#: extension/filefuncs.c:725 extension/filefuncs.c:772 msgid "fts-process: could not create array" msgstr "fts-process: kunde inte skapa en vektor" -#: extension/filefuncs.c:670 extension/filefuncs.c:717 -#: extension/filefuncs.c:735 +#: extension/filefuncs.c:735 extension/filefuncs.c:782 +#: extension/filefuncs.c:800 msgid "fts-process: could not set element" msgstr "fts-process: kunde inte sätta ett element" -#: extension/filefuncs.c:784 +#: extension/filefuncs.c:849 msgid "fts: called with incorrect number of arguments, expecting 3" msgstr "fts: anropad med felaktigt antal argument, förväntade 3" -#: extension/filefuncs.c:787 +#: extension/filefuncs.c:852 msgid "fts: bad first parameter" msgstr "fts: felaktig första parameter" -#: extension/filefuncs.c:793 +#: extension/filefuncs.c:858 msgid "fts: bad second parameter" msgstr "fts: felaktig andra parameter" -#: extension/filefuncs.c:799 +#: extension/filefuncs.c:864 msgid "fts: bad third parameter" msgstr "fts: felaktig tredje parameter" -#: extension/filefuncs.c:806 +#: extension/filefuncs.c:871 msgid "fts: could not flatten array\n" msgstr "fts: kunde inte platta till en vektor\n" -#: extension/filefuncs.c:824 +#: extension/filefuncs.c:889 msgid "fts: ignoring sneaky FTS_NOSTAT flag. nyah, nyah, nyah." msgstr "fts: ignorerar lömsk FTS_NOSTAT-flagga, nä, nä, nä." -#: extension/filefuncs.c:841 +#: extension/filefuncs.c:906 msgid "fts: clear_array() failed\n" msgstr "fts: clear_array() misslyckades\n" @@ -2264,89 +2279,89 @@ msgstr "wait: anropad utan argument" msgid "wait: called with too many arguments" msgstr "wait: anropad med för mÃ¥nga argument" -#: extension/inplace.c:130 +#: extension/inplace.c:131 msgid "inplace_begin: in-place editing already active" msgstr "inplace_begin: redigering pÃ¥ plats är redan aktivt" -#: extension/inplace.c:133 extension/inplace.c:210 +#: extension/inplace.c:134 extension/inplace.c:211 #, c-format msgid "inplace_begin: expects 2 arguments but called with %d" msgstr "inplace_begin: förväntar sig 2 argument men anropad med %d" -#: extension/inplace.c:136 +#: extension/inplace.c:137 msgid "inplace_begin: cannot retrieve 1st argument as a string filename" msgstr "inplace_begin: kan inte hämta 1:a argumentet som en filnamnssträng" -#: extension/inplace.c:144 +#: extension/inplace.c:145 #, c-format msgid "inplace_begin: disabling in-place editing for invalid FILENAME `%s'" msgstr "" "inplace_begin: avaktiverar redigering pÃ¥ plats för ogiltigt FILNAMN â€%sâ€" -#: extension/inplace.c:151 +#: extension/inplace.c:152 #, c-format msgid "inplace_begin: Cannot stat `%s' (%s)" msgstr "inplace_begin: kan inte ta status pÃ¥ â€%s†(%s)" -#: extension/inplace.c:158 +#: extension/inplace.c:159 #, c-format msgid "inplace_begin: `%s' is not a regular file" msgstr "inplace_begin: â€%s†är inte en vanlig fil" -#: extension/inplace.c:169 +#: extension/inplace.c:170 #, c-format msgid "inplace_begin: mkstemp(`%s') failed (%s)" msgstr "inplace_begin: mkstemp(â€%sâ€) misslyckades (%s)" -#: extension/inplace.c:181 +#: extension/inplace.c:182 #, c-format msgid "inplace_begin: chmod failed (%s)" msgstr "inplace_begin: chmod misslyckades (%s)" -#: extension/inplace.c:188 +#: extension/inplace.c:189 #, c-format msgid "inplace_begin: dup(stdout) failed (%s)" msgstr "inplace_begin: dup(standard ut) misslyckades (%s)" -#: extension/inplace.c:191 +#: extension/inplace.c:192 #, c-format msgid "inplace_begin: dup2(%d, stdout) failed (%s)" msgstr "inplace_begin: dup2(%d, standard ut) misslyckades (%s)" -#: extension/inplace.c:194 +#: extension/inplace.c:195 #, c-format msgid "inplace_begin: close(%d) failed (%s)" msgstr "inplace_begin: close(%d) misslyckades (%s)" -#: extension/inplace.c:213 +#: extension/inplace.c:214 msgid "inplace_end: cannot retrieve 1st argument as a string filename" msgstr "inplace_end: kan inte hämta 1:a argumentet som en filnamnssträng" -#: extension/inplace.c:220 +#: extension/inplace.c:221 msgid "inplace_end: in-place editing not active" msgstr "inplace_end: redigering pÃ¥ plats är inte aktivt" -#: extension/inplace.c:226 +#: extension/inplace.c:227 #, c-format msgid "inplace_end: dup2(%d, stdout) failed (%s)" msgstr "inplace_end: dup2(%d, standard ut) misslyckades (%s)" -#: extension/inplace.c:229 +#: extension/inplace.c:230 #, c-format msgid "inplace_end: close(%d) failed (%s)" msgstr "inplace_end: close(%d) misslyckades (%s)" -#: extension/inplace.c:233 +#: extension/inplace.c:234 #, c-format msgid "inplace_end: fsetpos(stdout) failed (%s)" msgstr "inplace_end: fsetpos(standard ut) misslyckades (%s)" -#: extension/inplace.c:246 +#: extension/inplace.c:247 #, c-format msgid "inplace_end: link(`%s', `%s') failed (%s)" msgstr "inplace_end: link(â€%sâ€, â€%sâ€) misslyckades (%s)" -#: extension/inplace.c:256 +#: extension/inplace.c:257 #, c-format msgid "inplace_end: rename(`%s', `%s') failed (%s)" msgstr "inplace_end: rename(â€%sâ€, â€%sâ€) misslyckades (%s)" @@ -2375,7 +2390,7 @@ msgstr "chr: anropad utan argument" msgid "chr: called with inappropriate argument(s)" msgstr "chr: anropad med felaktiga argument" -#: extension/readdir.c:281 +#: extension/readdir.c:271 #, c-format msgid "dir_take_control_of: opendir/fdopendir failed: %s" msgstr "dir_take_control_of: opendir/fdopendir misslyckades: %s" @@ -2388,54 +2403,54 @@ msgstr "readfile: anropad med för mÃ¥nga argument" msgid "readfile: called with no arguments" msgstr "readfile: anropad utan argument" -#: extension/revoutput.c:125 +#: extension/revoutput.c:127 msgid "revoutput: could not initialize REVOUT variable" msgstr "revoutput: kunde inte initiera REVOUT-variabeln" -#: extension/rwarray.c:124 extension/rwarray0.c:109 +#: extension/rwarray.c:113 extension/rwarray0.c:109 msgid "writea: called with too many arguments" msgstr "writea: anropad med för mÃ¥nga argument" -#: extension/rwarray.c:131 extension/rwarray0.c:116 +#: extension/rwarray.c:120 extension/rwarray0.c:116 #, c-format msgid "do_writea: argument 0 is not a string\n" msgstr "do_writea: argument 0 är inte en sträng\n" -#: extension/rwarray.c:137 extension/rwarray0.c:122 +#: extension/rwarray.c:126 extension/rwarray0.c:122 #, c-format msgid "do_writea: argument 1 is not an array\n" msgstr "do_writea: argument 1 är inte en vektor\n" -#: extension/rwarray.c:184 extension/rwarray0.c:169 +#: extension/rwarray.c:173 extension/rwarray0.c:169 #, c-format msgid "write_array: could not flatten array\n" msgstr "write_array: kunde inte platta till vektor\n" -#: extension/rwarray.c:198 extension/rwarray0.c:183 +#: extension/rwarray.c:187 extension/rwarray0.c:183 #, c-format msgid "write_array: could not release flattened array\n" msgstr "write_array: kunde inte släppa en tillplattad vektor\n" -#: extension/rwarray.c:280 extension/rwarray0.c:265 +#: extension/rwarray.c:269 extension/rwarray0.c:265 msgid "reada: called with too many arguments" msgstr "reada: anropad med för mÃ¥nga argument" -#: extension/rwarray.c:287 extension/rwarray0.c:272 +#: extension/rwarray.c:276 extension/rwarray0.c:272 #, c-format msgid "do_reada: argument 0 is not a string\n" msgstr "do_reada: argument 0 är inte en sträng\n" -#: extension/rwarray.c:293 extension/rwarray0.c:278 +#: extension/rwarray.c:282 extension/rwarray0.c:278 #, c-format msgid "do_reada: argument 1 is not an array\n" msgstr "do_reada: argument 1 är inte en vektor\n" -#: extension/rwarray.c:337 extension/rwarray0.c:322 +#: extension/rwarray.c:326 extension/rwarray0.c:322 #, c-format msgid "do_reada: clear_array failed\n" msgstr "do_reada: clear_array misslyckades\n" -#: extension/rwarray.c:374 extension/rwarray0.c:358 +#: extension/rwarray.c:363 extension/rwarray0.c:358 #, c-format msgid "read_array: set_array_element failed\n" msgstr "read_array: set_array_element misslyckades\n" @@ -2547,7 +2562,7 @@ msgstr "tom sträng som \"FS\" är en gawk-utökning" msgid "old awk does not support regexps as value of `FS'" msgstr "gamla awk stöder inte reguljära uttryck som värden pÃ¥ \"FS\"" -#: field.c:1380 +#: field.c:1384 msgid "`FPAT' is a gawk extension" msgstr "\"FPAT\" är en gawk-utökning" @@ -2555,28 +2570,28 @@ msgstr "\"FPAT\" är en gawk-utökning" msgid "awk_value_to_node: received null retval" msgstr "awk_value_to_node: mottog null-returvärde" -#: gawkapi.c:384 +#: gawkapi.c:383 msgid "node_to_awk_value: received null node" msgstr "node_to_awk_value: mottog null-nod" -#: gawkapi.c:387 +#: gawkapi.c:386 msgid "node_to_awk_value: received null val" msgstr "node_to_awk_value: mottog null-värde" -#: gawkapi.c:809 +#: gawkapi.c:808 msgid "remove_element: received null array" msgstr "remove_element: fick en null-vektor" -#: gawkapi.c:812 +#: gawkapi.c:811 msgid "remove_element: received null subscript" msgstr "remove_element: mottog null-index" -#: gawkapi.c:949 +#: gawkapi.c:948 #, c-format msgid "api_flatten_array: could not convert index %d\n" msgstr "api_flatten_array: kunde inte konvertera index %d\n" -#: gawkapi.c:954 +#: gawkapi.c:953 #, c-format msgid "api_flatten_array: could not convert value %d\n" msgstr "api_flatten_array: kunde inte konvertera värdet %d\n" @@ -2636,269 +2651,273 @@ msgstr "%s: flaggan \"-W %s\" tillÃ¥ter inte nÃ¥got argument\n" msgid "%s: option '-W %s' requires an argument\n" msgstr "%s: flaggan \"-W %s\" kräver ett argument\n" -#: io.c:423 +#: io.c:426 #, c-format msgid "command line argument `%s' is a directory: skipped" msgstr "kommandoradsargumentet \"%s\" är en katalog: hoppas över" -#: io.c:426 io.c:544 +#: io.c:429 io.c:547 #, c-format msgid "cannot open file `%s' for reading (%s)" msgstr "kan inte öppna filen \"%s\" för läsning (%s)" -#: io.c:671 +#: io.c:674 #, c-format msgid "close of fd %d (`%s') failed (%s)" msgstr "stängning av fd %d (\"%s\") misslyckades (%s)" -#: io.c:749 +#: io.c:752 msgid "redirection not allowed in sandbox mode" msgstr "omdirigering är inte tillÃ¥ten i sandlÃ¥deläge" -#: io.c:783 +#: io.c:786 #, c-format msgid "expression in `%s' redirection only has numeric value" msgstr "uttrycket i \"%s\"-omdirigering har bara numeriskt värde" -#: io.c:789 +#: io.c:792 #, 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:794 +#: io.c:797 #, 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:842 +#: io.c:845 #, c-format msgid "unnecessary mixing of `>' and `>>' for file `%.*s'" msgstr "onödig blandning av \">\" och \">>\" för filen \"%.*s\"" -#: io.c:896 +#: io.c:902 #, c-format msgid "can't open pipe `%s' for output (%s)" msgstr "kan inte öppna röret \"%s\" för utmatning (%s)" -#: io.c:906 +#: io.c:915 #, c-format msgid "can't open pipe `%s' for input (%s)" msgstr "kan inte öppna röret \"%s\" för inmatning (%s)" -#: io.c:937 +#: io.c:946 #, 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:1019 +#: io.c:1030 #, c-format msgid "can't redirect from `%s' (%s)" msgstr "kan inte dirigera om frÃ¥n \"%s\" (%s)" -#: io.c:1022 +#: io.c:1033 #, c-format msgid "can't redirect to `%s' (%s)" msgstr "kan inte dirigera om till \"%s\" (%s)" -#: io.c:1073 +#: io.c:1084 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:1089 +#: io.c:1100 #, c-format msgid "close of `%s' failed (%s)." msgstr "stängning av \"%s\" misslyckades (%s)." -#: io.c:1097 +#: io.c:1108 msgid "too many pipes or input files open" msgstr "för mÃ¥nga rör eller indatafiler öppna" -#: io.c:1119 +#: io.c:1130 msgid "close: second argument must be `to' or `from'" msgstr "close: andra argumentet mÃ¥ste vara \"to\" eller \"from\"" -#: io.c:1136 +#: io.c:1147 #, 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:1141 +#: io.c:1152 msgid "close of redirection that was never opened" msgstr "stängning av omdirigering som aldrig öppnades" -#: io.c:1238 +#: io.c:1249 #, c-format msgid "close: redirection `%s' not opened with `|&', second argument ignored" msgstr "" "close: omdirigeringen \"%s\" öppnades inte med \"|&\", andra argumentet " "ignorerat" -#: io.c:1255 +#: io.c:1266 #, 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:1258 +#: io.c:1269 #, c-format msgid "failure status (%d) on file close of `%s' (%s)" msgstr "felstatus (%d) frÃ¥n filstängning av \"%s\" (%s)" -#: io.c:1278 +#: io.c:1289 #, c-format msgid "no explicit close of socket `%s' provided" msgstr "ingen explicit stängning av uttaget \"%s\" tillhandahÃ¥llen" -#: io.c:1281 +#: io.c:1292 #, c-format msgid "no explicit close of co-process `%s' provided" msgstr "ingen explicit stängning av koprocessen \"%s\" tillhandahÃ¥llen" -#: io.c:1284 +#: io.c:1295 #, c-format msgid "no explicit close of pipe `%s' provided" msgstr "ingen explicit stängning av röret \"%s\" tillhandahÃ¥llen" -#: io.c:1287 +#: io.c:1298 #, c-format msgid "no explicit close of file `%s' provided" msgstr "ingen explicit stängning av filen \"%s\" tillhandahÃ¥llen" -#: io.c:1317 io.c:1375 main.c:632 main.c:674 +#: io.c:1328 io.c:1387 main.c:645 main.c:687 #, c-format msgid "error writing standard output (%s)" msgstr "fel vid skrivning till standard ut (%s)" -#: io.c:1322 io.c:1381 main.c:634 +#: io.c:1333 io.c:1393 main.c:647 #, c-format msgid "error writing standard error (%s)" msgstr "fel vid skrivning till standard fel (%s)" -#: io.c:1330 +#: io.c:1341 #, c-format msgid "pipe flush of `%s' failed (%s)." msgstr "rörspolning av \"%s\" misslyckades (%s)." -#: io.c:1333 +#: io.c:1344 #, c-format msgid "co-process flush of pipe to `%s' failed (%s)." msgstr "koprocesspolning av röret till \"%s\" misslyckades (%s)." -#: io.c:1336 +#: io.c:1347 #, c-format msgid "file flush of `%s' failed (%s)." msgstr "filspolning av \"%s\" misslyckades (%s)." -#: io.c:1453 +#: io.c:1465 #, c-format msgid "local port %s invalid in `/inet'" msgstr "lokal port %s ogiltig i \"/inet\"" -#: io.c:1471 +#: io.c:1483 #, c-format msgid "remote host and port information (%s, %s) invalid" msgstr "ogiltig information (%s, %s) för fjärrvärd och fjärrport" -#: io.c:1699 +#: io.c:1711 msgid "TCP/IP communications are not supported" msgstr "TCP/IP-kommunikation stöds inte" -#: io.c:1880 +#: io.c:1905 #, c-format msgid "could not open `%s', mode `%s'" msgstr "kunde inte öppna \"%s\", läge \"%s\"" -#: io.c:1930 +#: io.c:1961 #, c-format msgid "close of master pty failed (%s)" msgstr "stängning av huvudpty misslyckades (%s)" -#: io.c:1932 io.c:2118 io.c:2319 +#: io.c:1963 io.c:2141 io.c:2342 #, c-format msgid "close of stdout in child failed (%s)" msgstr "stängning av standard ut i barnet misslyckades (%s)" -#: io.c:1935 +#: io.c:1966 #, 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:1937 io.c:2123 +#: io.c:1968 io.c:2146 #, c-format msgid "close of stdin in child failed (%s)" msgstr "stängning av standard in i barnet misslyckades (%s)" -#: io.c:1940 +#: io.c:1971 #, 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:1942 io.c:1964 +#: io.c:1973 #, c-format msgid "close of slave pty failed (%s)" msgstr "stängning av slavpty misslyckades (%s)" -#: io.c:2053 io.c:2121 io.c:2290 io.c:2322 +#: io.c:2076 io.c:2144 io.c:2313 io.c:2345 #, 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:2060 io.c:2126 +#: io.c:2083 io.c:2149 #, 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:2086 io.c:2312 +#: io.c:2109 io.c:2335 msgid "restoring stdout in parent process failed\n" msgstr "Ã¥terställande av standard ut i föräldraprocessen misslyckades\n" -#: io.c:2094 +#: io.c:2117 msgid "restoring stdin in parent process failed\n" msgstr "Ã¥terställande av standard in i föräldraprocessen misslyckades\n" -#: io.c:2129 io.c:2324 io.c:2339 +#: io.c:2152 io.c:2347 io.c:2362 #, c-format msgid "close of pipe failed (%s)" msgstr "stängning av röret misslyckades (%s)" -#: io.c:2188 +#: io.c:2211 msgid "`|&' not supported" msgstr "\"|&\" stöds inte" -#: io.c:2275 +#: io.c:2298 #, c-format msgid "cannot open pipe `%s' (%s)" msgstr "kan inte öppna röret \"%s\" (%s)" -#: io.c:2333 +#: io.c:2356 #, c-format msgid "cannot create child process for `%s' (fork: %s)" msgstr "kan inte skapa barnprocess för \"%s\" (fork: %s)" -#: io.c:2760 +#: io.c:2493 +msgid "getline: attempt to read from closed read end of two-way pipe" +msgstr "getline: försök att läsa frÃ¥n stängd läsände av ett tvÃ¥vägsrör" + +#: io.c:2795 msgid "register_input_parser: received NULL pointer" msgstr "register_input_parser: mottog NULL-pekare" -#: io.c:2788 +#: io.c:2823 #, c-format msgid "input parser `%s' conflicts with previously installed input parser `%s'" msgstr "" "inmatningstolken â€%s†stÃ¥r i konflikt med tidigare installerad " "inmatningstolk â€%sâ€" -#: io.c:2795 +#: io.c:2830 #, c-format msgid "input parser `%s' failed to open `%s'" msgstr "inmatningstolken â€%s†misslyckades att öppna â€%sâ€" -#: io.c:2815 +#: io.c:2850 msgid "register_output_wrapper: received NULL pointer" msgstr "register_output_wrapper: mottog NULL-pekare" -#: io.c:2843 +#: io.c:2878 #, c-format msgid "" "output wrapper `%s' conflicts with previously installed output wrapper `%s'" @@ -2906,16 +2925,16 @@ msgstr "" "utmatningsomslag â€%s†stÃ¥r i konflikt med tidigare installerat " "utmatningsomslag â€%sâ€" -#: io.c:2850 +#: io.c:2885 #, c-format msgid "output wrapper `%s' failed to open `%s'" msgstr "utmatningsomslag â€%s†misslyckades att öppna â€%sâ€" -#: io.c:2871 +#: io.c:2906 msgid "register_output_processor: received NULL pointer" msgstr "register_output_processor: mottog NULL-pekare" -#: io.c:2900 +#: io.c:2935 #, c-format msgid "" "two-way processor `%s' conflicts with previously installed two-way processor " @@ -2924,196 +2943,199 @@ msgstr "" "tvÃ¥vägsprocessorn â€%s†stÃ¥r i konflikt med tidigare installerad " "tvÃ¥vägsprocessor â€%sâ€" -#: io.c:2909 +#: io.c:2944 #, c-format msgid "two way processor `%s' failed to open `%s'" msgstr "tvÃ¥vägsprocessorn â€%s†misslyckades att öppna â€%sâ€" -#: io.c:3034 +#: io.c:3069 #, c-format msgid "data file `%s' is empty" msgstr "datafilen \"%s\" är tom" -#: io.c:3076 io.c:3084 +#: io.c:3111 io.c:3119 msgid "could not allocate more input memory" msgstr "kunde inte allokera mer indataminne" -#: io.c:3662 +#: io.c:3697 msgid "multicharacter value of `RS' is a gawk extension" msgstr "flerteckensvärdet av \"RS\" är en gawk-utökning" -#: io.c:3809 +#: io.c:3844 msgid "IPv6 communication is not supported" msgstr "IPv6-kommunikation stöds inte" -#: main.c:321 +#: main.c:334 msgid "environment variable `POSIXLY_CORRECT' set: turning on `--posix'" msgstr "miljövariabeln \"POSIXLY_CORRECT\" satt: slÃ¥r pÃ¥ \"--posix\"" -#: main.c:327 +#: main.c:340 msgid "`--posix' overrides `--traditional'" msgstr "\"--posix\" Ã¥sidosätter \"--traditional\"" -#: main.c:338 +#: main.c:351 msgid "`--posix'/`--traditional' overrides `--non-decimal-data'" msgstr "\"--posix\"/\"--traditional\" Ã¥sidosätter \"--non-decimal-data\"" -#: main.c:342 +#: main.c:355 #, 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:346 +#: main.c:359 msgid "`--posix' overrides `--characters-as-bytes'" msgstr "â€--posix†åsidosätter â€--character-as-bytesâ€" -#: main.c:404 +#: main.c:417 #, 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:407 +#: main.c:420 #, 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:409 +#: main.c:422 #, 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:469 +#: main.c:482 msgid "no program text at all!" msgstr "ingen programtext alls!" -#: main.c:563 +#: main.c:576 #, 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:565 +#: main.c:578 #, 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:570 +#: main.c:583 msgid "POSIX options:\t\tGNU long options: (standard)\n" msgstr "POSIX-flaggor:\t\tGNU lÃ¥nga flaggor: (standard)\n" -#: main.c:571 +#: main.c:584 msgid "\t-f progfile\t\t--file=progfile\n" msgstr "\t-f progfil\t\t--file=progfil\n" -#: main.c:572 +#: main.c:585 msgid "\t-F fs\t\t\t--field-separator=fs\n" msgstr "\t-F fs\t\t\t--field-separator=fs\n" -#: main.c:573 +#: main.c:586 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:574 +#: main.c:587 msgid "Short options:\t\tGNU long options: (extensions)\n" msgstr "Korta flaggor:\t\tGNU lÃ¥nga flaggor: (utökningar)\n" -#: main.c:575 +#: main.c:588 msgid "\t-b\t\t\t--characters-as-bytes\n" msgstr "\t-b\t\t\t--characters-as-bytes\n" -#: main.c:576 +#: main.c:589 msgid "\t-c\t\t\t--traditional\n" msgstr "\t-c\t\t\t--traditional\n" -#: main.c:577 +#: main.c:590 msgid "\t-C\t\t\t--copyright\n" msgstr "\t-C\t\t\t--copyright\n" -#: main.c:578 +#: main.c:591 msgid "\t-d[file]\t\t--dump-variables[=file]\n" msgstr "\t-d[fil]\t\t\t--dump-variables[=fil]\n" -#: main.c:579 +#: main.c:592 msgid "\t-D[file]\t\t--debug[=file]\n" msgstr "\t-D[fil]\t\t\t--debug[=fil]\n" -#: main.c:580 +#: main.c:593 msgid "\t-e 'program-text'\t--source='program-text'\n" msgstr "\t-e 'programtext'\t--source='programtext'\n" -#: main.c:581 +#: main.c:594 msgid "\t-E file\t\t\t--exec=file\n" msgstr "\t-E fil\t\t\t--exec=fil\n" -#: main.c:582 +#: main.c:595 msgid "\t-g\t\t\t--gen-pot\n" msgstr "\t-g\t\t\t--gen-pot\n" -#: main.c:583 +#: main.c:596 msgid "\t-h\t\t\t--help\n" msgstr "\t-h\t\t\t--help\n" -#: main.c:584 +#: main.c:597 msgid "\t-i includefile\t\t--include=includefile\n" msgstr "\t-i inkluderingsfil\t--include=inkluderingsfil\n" -#: main.c:585 +#: main.c:598 msgid "\t-l library\t\t--load=library\n" msgstr "\t-l bibliotek\t\t--load=bibliotek\n" -#: main.c:590 +#. TRANSLATORS: the "fatal" and "invalid" here are literal +#. values, they should not be translated. Thanks. +#. +#: main.c:603 msgid "\t-L[fatal|invalid]\t--lint[=fatal|invalid]\n" msgstr "\t-L[fatal|invalid]\t--lint[=fatal|invalid]\n" -#: main.c:591 +#: main.c:604 msgid "\t-M\t\t\t--bignum\n" msgstr "\t-M\t\t\t--bignum\n" -#: main.c:592 +#: main.c:605 msgid "\t-N\t\t\t--use-lc-numeric\n" msgstr "\t-N\t\t\t--use-lc-numeric\n" -#: main.c:593 +#: main.c:606 msgid "\t-n\t\t\t--non-decimal-data\n" msgstr "\t-n\t\t\t--non-decimal-data\n" -#: main.c:594 +#: main.c:607 msgid "\t-o[file]\t\t--pretty-print[=file]\n" msgstr "\t-o[fil]\t\t\t--pretty-print[=fil]\n" -#: main.c:595 +#: main.c:608 msgid "\t-O\t\t\t--optimize\n" msgstr "\t-O\t\t\t--optimize\n" -#: main.c:596 +#: main.c:609 msgid "\t-p[file]\t\t--profile[=file]\n" msgstr "\t-p[fil]\t\t\t--profile[=fil]\n" -#: main.c:597 +#: main.c:610 msgid "\t-P\t\t\t--posix\n" msgstr "\t-P\t\t\t--posix\n" -#: main.c:598 +#: main.c:611 msgid "\t-r\t\t\t--re-interval\n" msgstr "\t-r\t\t\t--re-interval\n" -#: main.c:599 +#: main.c:612 msgid "\t-S\t\t\t--sandbox\n" msgstr "\t-S\t\t\t--sandbox\n" -#: main.c:600 +#: main.c:613 msgid "\t-t\t\t\t--lint-old\n" msgstr "\t-t\t\t\t--lint-old\n" -#: main.c:601 +#: main.c:614 msgid "\t-V\t\t\t--version\n" msgstr "\t-V\t\t\t--version\n" -#: main.c:603 +#: main.c:616 msgid "\t-W nostalgia\t\t--nostalgia\n" msgstr "\t-W nostalgia\t\t--nostalgia\n" -#: main.c:606 +#: main.c:619 msgid "\t-Y\t\t--parsedebug\n" msgstr "\t-Y\t\t--parsedebug\n" @@ -3122,7 +3144,7 @@ msgstr "\t-Y\t\t--parsedebug\n" #. for this application. Please add _another line_ with the #. address for translation bugs. #. no-wrap -#: main.c:615 +#: main.c:628 msgid "" "\n" "To report bugs, see node `Bugs' in `gawk.info', which is\n" @@ -3136,7 +3158,7 @@ msgstr "" "Rapportera synpunkter pÃ¥ översättningen till .\n" "\n" -#: main.c:619 +#: main.c:632 msgid "" "gawk is a pattern scanning and processing language.\n" "By default it reads standard input and writes standard output.\n" @@ -3146,7 +3168,7 @@ msgstr "" "Normalt läser det frÃ¥n standard in och skriver till standard ut.\n" "\n" -#: main.c:623 +#: main.c:636 msgid "" "Examples:\n" "\tgawk '{ sum += $1 }; END { print sum }' file\n" @@ -3156,7 +3178,7 @@ msgstr "" "\tgawk '{ sum += $1 }; END { print sum }' fil\n" "\tgawk -F: '{ print $1 }' /etc/passwd\n" -#: main.c:648 +#: main.c:661 #, c-format msgid "" "Copyright (C) 1989, 1991-%d Free Software Foundation.\n" @@ -3175,7 +3197,7 @@ msgstr "" "nÃ¥gon senare version.\n" "\n" -#: main.c:656 +#: main.c:669 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" @@ -3189,7 +3211,7 @@ msgstr "" "General Public License för ytterligare information.\n" "\n" -#: main.c:662 +#: main.c:675 msgid "" "You should have received a copy of the GNU General Public License\n" "along with this program. If not, see http://www.gnu.org/licenses/.\n" @@ -3197,132 +3219,132 @@ msgstr "" "Du bör ha fÃ¥tt en kopia av GNU General Public License tillsammans\n" "med detta program. Om inte, se http://www.gnu.org/licenses/.\n" -#: main.c:699 +#: main.c:712 msgid "-Ft does not set FS to tab in POSIX awk" msgstr "-Ft sätter inte FS till tab i POSIX-awk" -#: main.c:986 +#: main.c:999 #, c-format msgid "unknown value for field spec: %d\n" msgstr "okänt värde till fältspecifikation: %d\n" -#: main.c:1084 +#: main.c:1097 #, 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:1110 +#: main.c:1123 #, c-format msgid "`%s' is not a legal variable name" msgstr "\"%s\" är inte ett giltigt variabelnamn" -#: main.c:1113 +#: main.c:1126 #, 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:1117 +#: main.c:1130 #, c-format msgid "cannot use gawk builtin `%s' as variable name" msgstr "kan inte använda gawks inbyggda \"%s\" som ett funktionsnamn" -#: main.c:1122 +#: main.c:1135 #, c-format msgid "cannot use function `%s' as variable name" msgstr "kan inte använda funktionen \"%s\" som variabelnamn" -#: main.c:1175 +#: main.c:1190 msgid "floating point exception" msgstr "flyttalsundantag" -#: main.c:1182 +#: main.c:1197 msgid "fatal error: internal error" msgstr "ödesdigert fel: internt fel" -#: main.c:1197 +#: main.c:1212 msgid "fatal error: internal error: segfault" msgstr "ödesdigert fel: internt fel: segmenteringsfel" -#: main.c:1209 +#: main.c:1224 msgid "fatal error: internal error: stack overflow" msgstr "ödesdigert fel: internt fel: stackspill" -#: main.c:1268 +#: main.c:1283 #, c-format msgid "no pre-opened fd %d" msgstr "ingen föröppnad fd %d" -#: main.c:1275 +#: main.c:1290 #, 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:1489 +#: main.c:1504 msgid "empty argument to `-e/--source' ignored" msgstr "tomt argument till \"-e/--source\" ignorerat" -#: main.c:1560 +#: main.c:1575 msgid "-M ignored: MPFR/GMP support not compiled in" msgstr "-M ignoreras: MPFR/GMP-stöd är inte inkompilerat" -#: main.c:1581 +#: main.c:1596 #, c-format msgid "%s: option `-W %s' unrecognized, ignored\n" msgstr "%s: flaggan \"-W %s\" okänd, ignorerad\n" -#: main.c:1634 +#: main.c:1649 #, c-format msgid "%s: option requires an argument -- %c\n" msgstr "%s: flaggan kräver ett argument -- %c\n" -#: mpfr.c:557 +#: mpfr.c:559 #, c-format msgid "PREC value `%.*s' is invalid" msgstr "PREC-värdet â€%.*s†är ogiltigt" -#: mpfr.c:615 +#: mpfr.c:617 #, c-format msgid "RNDMODE value `%.*s' is invalid" msgstr "RNDMODE-värdet â€%.*s†är ogiltigt" -#: mpfr.c:711 +#: mpfr.c:714 #, c-format msgid "%s: received non-numeric argument" msgstr "%s: fick ett ickenumeriskt argument" -#: mpfr.c:820 +#: mpfr.c:824 msgid "compl(%Rg): negative value will give strange results" msgstr "compl(%Rg): negativt värde kommer ge konstiga resultat" -#: mpfr.c:824 +#: mpfr.c:828 msgid "comp(%Rg): fractional value will be truncated" msgstr "compl(%Rg): flyttalsvärden kommer huggas av" -#: mpfr.c:836 +#: mpfr.c:840 #, c-format msgid "cmpl(%Zd): negative values will give strange results" msgstr "cmpl(%Zd): negativt värde kommer ge konstiga resultat" -#: mpfr.c:855 +#: mpfr.c:859 #, c-format msgid "%s: received non-numeric argument #%d" msgstr "%s: fick ett ickenumeriskt argument nr. %d" -#: mpfr.c:865 +#: mpfr.c:869 msgid "%s: argument #%d has invalid value %Rg, using 0" msgstr "%s: argument nr. %d har ogiltigt värde %Rg, använder 0" -#: mpfr.c:877 +#: mpfr.c:881 msgid "%s: argument #%d negative value %Rg will give strange results" msgstr "%s: argument nr. %d negativa värde %Rg kommer ge konstiga resultat" -#: mpfr.c:883 +#: mpfr.c:887 msgid "%s: argument #%d fractional value %Rg will be truncated" msgstr "%s: argument nr. %d flyttalsvärde %Rg kommer huggas av" -#: mpfr.c:898 +#: mpfr.c:902 #, c-format msgid "%s: argument #%d negative value %Zd will give strange results" msgstr "%s: argument nr. %d negativa värde %Zd kommer ge konstiga resultat" @@ -3332,24 +3354,24 @@ msgstr "%s: argument nr. %d negativa värde %Zd kommer ge konstiga resultat" msgid "cmd. line:" msgstr "kommandorad:" -#: node.c:418 +#: node.c:434 msgid "backslash at end of string" msgstr "omvänt snedstreck i slutet av strängen" -#: node.c:497 +#: node.c:513 #, c-format msgid "old awk does not support the `\\%c' escape sequence" msgstr "gamla awk stöder inte kontrollsekvensen \"\\%c\"" -#: node.c:548 +#: node.c:564 msgid "POSIX does not allow `\\x' escapes" msgstr "POSIX tillÃ¥ter inte \"\\x\"-kontrollsekvenser" -#: node.c:554 +#: node.c:570 msgid "no hex digits in `\\x' escape sequence" msgstr "inga hexadecimala siffror i \"\\x\"-kontrollsekvenser" -#: node.c:576 +#: node.c:592 #, c-format msgid "" "hex escape \\x%.*s of %d characters probably not interpreted the way you " @@ -3358,12 +3380,12 @@ msgstr "" "hexkod \\x%.*s med %d tecken tolkas förmodligen inte pÃ¥ det sätt du " "förväntar dig" -#: node.c:591 +#: node.c:607 #, c-format msgid "escape sequence `\\%c' treated as plain `%c'" msgstr "kontrollsekvensen \"\\%c\" behandlad som bara \"%c\"" -#: node.c:735 +#: node.c:744 msgid "" "Invalid multibyte data detected. There may be a mismatch between your data " "and your locale." @@ -3381,16 +3403,16 @@ msgstr "%s %s \"%s\": kunde inte hämta fb-flaggor: (fcntl F_GETFD: %s)" msgid "%s %s `%s': could not set close-on-exec: (fcntl F_SETFD: %s)" msgstr "%s %s \"%s\": kunde inte sätta stäng-vid-exec (fcntl F_SETFD: %s)" -#: profile.c:91 +#: profile.c:94 #, c-format msgid "could not open `%s' for writing: %s" msgstr "kunde inte öppna \"%s\" för skrivning: %s" -#: profile.c:93 +#: profile.c:96 msgid "sending profile to standard error" msgstr "skickar profilen till standard fel" -#: profile.c:213 +#: profile.c:216 #, c-format msgid "" "\t# %s rule(s)\n" @@ -3399,7 +3421,7 @@ msgstr "" "\t# %s-regler\n" "\n" -#: profile.c:218 +#: profile.c:221 #, c-format msgid "" "\t# Rule(s)\n" @@ -3408,16 +3430,16 @@ msgstr "" "\t# Regel/regler\n" "\n" -#: profile.c:292 +#: profile.c:295 #, c-format msgid "internal error: %s with null vname" msgstr "internt fel: %s med null vname" -#: profile.c:558 +#: profile.c:561 msgid "internal error: builtin with null fname" msgstr "internt fel: inbyggd med tomt fname" -#: profile.c:978 +#: profile.c:1006 #, c-format msgid "" "\t# Loaded extensions (-l and/or @load)\n" @@ -3426,12 +3448,12 @@ msgstr "" "\t# Laddade utvidgningar (-l och/eller @load)\n" "\n" -#: profile.c:1001 +#: profile.c:1029 #, c-format msgid "\t# gawk profile, created %s\n" msgstr "\t# gawkprofil, skapad %s\n" -#: profile.c:1555 +#: profile.c:1600 #, c-format msgid "" "\n" @@ -3440,95 +3462,95 @@ msgstr "" "\n" "\t# Funktioner, listade alfabetiskt\n" -#: profile.c:1593 +#: profile.c:1638 #, c-format msgid "redir2str: unknown redirection type %d" msgstr "redir2str: okänd omdirigeringstyp %d" -#: re.c:607 +#: re.c:610 #, c-format msgid "regexp component `%.*s' should probably be `[%.*s]'" msgstr "" "komponenten \"%.*s\" i reguljäruttryck skall förmodligen vara \"[%.*s]\"" -#: regcomp.c:139 +#: regcomp.c:143 msgid "Success" msgstr "Lyckades" -#: regcomp.c:142 +#: regcomp.c:146 msgid "No match" msgstr "Misslyckades" -#: regcomp.c:145 +#: regcomp.c:149 msgid "Invalid regular expression" msgstr "Ogiltigt reguljärt uttryck" -#: regcomp.c:148 +#: regcomp.c:152 msgid "Invalid collation character" msgstr "Ogiltigt kollationeringstecken" -#: regcomp.c:151 +#: regcomp.c:155 msgid "Invalid character class name" msgstr "Ogiltigt teckenklassnamn" -#: regcomp.c:154 +#: regcomp.c:158 msgid "Trailing backslash" msgstr "Eftersläpande omvänt snedstreck" -#: regcomp.c:157 +#: regcomp.c:161 msgid "Invalid back reference" msgstr "Ogiltig bakÃ¥trerefens" -#: regcomp.c:160 +#: regcomp.c:164 msgid "Unmatched [, [^, [:, [., or [=" msgstr "Obalanserad [, [^, [:, [. eller [=" -#: regcomp.c:163 +#: regcomp.c:167 msgid "Unmatched ( or \\(" msgstr "Obalanserad ( eller \\(" -#: regcomp.c:166 +#: regcomp.c:170 msgid "Unmatched \\{" msgstr "Obalanserad \\{" -#: regcomp.c:169 +#: regcomp.c:173 msgid "Invalid content of \\{\\}" msgstr "Ogiltigt innehÃ¥ll i \\{\\}" -#: regcomp.c:172 +#: regcomp.c:176 msgid "Invalid range end" msgstr "Ogiltigt omfÃ¥ngsslut" -#: regcomp.c:175 +#: regcomp.c:179 msgid "Memory exhausted" msgstr "Minnet slut" -#: regcomp.c:178 +#: regcomp.c:182 msgid "Invalid preceding regular expression" msgstr "Ogiltigt föregÃ¥ende reguljärt uttryck" -#: regcomp.c:181 +#: regcomp.c:185 msgid "Premature end of regular expression" msgstr "För tidigt slut pÃ¥ reguljärt uttryck" -#: regcomp.c:184 +#: regcomp.c:188 msgid "Regular expression too big" msgstr "Reguljärt uttryck för stort" -#: regcomp.c:187 +#: regcomp.c:191 msgid "Unmatched ) or \\)" msgstr "Obalanserad ) eller \\)" -#: regcomp.c:712 +#: regcomp.c:701 msgid "No previous regular expression" msgstr "Inget föregÃ¥ende reguljärt uttryck" -#: symbol.c:678 +#: symbol.c:684 #, c-format msgid "function `%s': can't use function `%s' as a parameter name" msgstr "" "funktionen â€%sâ€: kan inte använda funktionen â€%s†som ett parameternamn" -#: symbol.c:810 +#: symbol.c:816 msgid "can not pop main context" msgstr "kan inte poppa huvudsammanhang" diff --git a/po/vi.po b/po/vi.po index 1e09e2a..0bb10ba 100644 --- a/po/vi.po +++ b/po/vi.po @@ -1,16 +1,16 @@ # Vietnamese translation for Gawk. # Bản dịch Tiếng Việt dành cho Gawk. -# Copyright © 2015 Free Software Foundation, Inc. +# Copyright © 2016 Free Software Foundation, Inc. # This file is distributed under the same license as the gawk package. # Clytie Siddall , 2005-2010. -# Trần Ngá»c Quân , 2012-2014, 2015. +# Trần Ngá»c Quân , 2012-2014, 2015, 2016. # msgid "" msgstr "" -"Project-Id-Version: gawk 4.1.1d\n" +"Project-Id-Version: gawk 4.1.3h\n" "Report-Msgid-Bugs-To: bug-gawk@gnu.org\n" -"POT-Creation-Date: 2015-05-19 16:06+0300\n" -"PO-Revision-Date: 2015-04-17 07:37+0700\n" +"POT-Creation-Date: 2016-08-25 06:19+0300\n" +"PO-Revision-Date: 2016-07-08 07:45+0700\n" "Last-Translator: Trần Ngá»c Quân \n" "Language-Team: Vietnamese \n" "Language: vi\n" @@ -18,93 +18,94 @@ msgstr "" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=1; plural=0;\n" +"X-Generator: Gtranslator 2.91.7\n" -#: array.c:256 +#: array.c:259 #, c-format msgid "from %s" msgstr "từ %s" -#: array.c:357 +#: array.c:360 msgid "attempt to use a scalar value as array" msgstr "cố dùng giá trị vô hÆ°á»›ng nhÆ° là má»™t mảng" -#: array.c:359 +#: array.c:362 #, c-format msgid "attempt to use scalar parameter `%s' as an array" msgstr "cố dùng tham số vô hÆ°á»›ng “%s†nhÆ° là mảng" -#: array.c:362 +#: array.c:365 #, c-format msgid "attempt to use scalar `%s' as an array" msgstr "cố dùng “%s†vô hÆ°á»›ng nhÆ° là mảng" -#: array.c:409 array.c:576 builtin.c:85 builtin.c:1606 builtin.c:1652 -#: builtin.c:1665 builtin.c:2112 builtin.c:2126 eval.c:1149 eval.c:1153 -#: eval.c:1564 +#: array.c:412 array.c:579 builtin.c:85 builtin.c:1612 builtin.c:1658 +#: builtin.c:1671 builtin.c:2160 builtin.c:2179 eval.c:1141 eval.c:1145 +#: eval.c:1556 #, c-format msgid "attempt to use array `%s' in a scalar context" msgstr "cố gắng dùng mảng “%s†trong má»™t ngữ cảnh vô hÆ°á»›ng" -#: array.c:583 +#: array.c:586 #, c-format msgid "delete: index `%s' not in array `%s'" msgstr "delete: (xóa) chỉ số “%s†không nằm trong mảng “%sâ€" -#: array.c:597 +#: array.c:600 #, c-format msgid "attempt to use scalar `%s[\"%.*s\"]' as an array" msgstr "cố dùng “%s[\"%.*s\"]†vô hÆ°á»›ng nhÆ° là mảng" -#: array.c:776 +#: array.c:779 msgid "adump: first argument not an array" msgstr "adump: đối số thứ nhất không phải là má»™t mảng" -#: array.c:815 +#: array.c:818 msgid "asort: second argument not an array" msgstr "asort: đối số thứ hai không phải là má»™t mảng" -#: array.c:816 +#: array.c:819 msgid "asorti: second argument not an array" msgstr "asorti: đối số thứ hai không phải là má»™t mảng" -#: array.c:823 +#: array.c:826 msgid "asort: first argument not an array" msgstr "asort: đối số thứ nhất không phải là má»™t mảng" -#: array.c:824 +#: array.c:827 msgid "asorti: first argument not an array" msgstr "asorti: đối số thứ nhất không phải là má»™t mảng" -#: array.c:831 +#: array.c:834 msgid "asort: cannot use a subarray of first arg for second arg" msgstr "" "asort (má»™t chÆ°Æ¡ng trình xắp xếp thứ tá»±): không thể sá»­ dụng mảng con của tham " "số thứ nhất cho tham số thứ hai" -#: array.c:832 +#: array.c:835 msgid "asorti: cannot use a subarray of first arg for second arg" msgstr "" "asorti (má»™t chÆ°Æ¡ng trình xắp xếp thứ tá»±): không thể sá»­ dụng mảng con của " "tham số thứ nhất cho tham số thứ hai" -#: array.c:837 +#: array.c:840 msgid "asort: cannot use a subarray of second arg for first arg" msgstr "" "asort (má»™t chÆ°Æ¡ng trình xắp xếp thứ tá»±): không thể sá»­ dụng mảng con của tham " "số thứ hai cho tham số thứ nhất" -#: array.c:838 +#: array.c:841 msgid "asorti: cannot use a subarray of second arg for first arg" msgstr "" "asorti (má»™t chÆ°Æ¡ng trình xắp xếp thứ tá»±): không thể sá»­ dụng mảng con của " "tham số thứ hai cho tham số thứ nhất" -#: array.c:1313 +#: array.c:1316 #, c-format msgid "`%s' is invalid as a function name" msgstr "“%s†không phải là tên hàm hợp lệ" -#: array.c:1317 +#: array.c:1320 #, c-format msgid "sort comparison function `%s' is not defined" msgstr "chÆ°a định nghÄ©a hàm so sánh xắp xếp “%sâ€" @@ -144,19 +145,19 @@ msgstr "" #: awkgram.y:512 #, c-format msgid "duplicate case values in switch body: %s" -msgstr "gặp giá trị case trùng trong thân chuyển đổi (switch body): %s" +msgstr "gặp giá trị case bị trùng trong phần thân switch: %s" #: awkgram.y:533 msgid "duplicate `default' detected in switch body" msgstr "" "đã phát hiện trùng “default†trong thân cấu trúc Ä‘iá»u khiển chá»n lá»±a (switch)" -#: awkgram.y:793 awkgram.y:3763 +#: awkgram.y:793 awkgram.y:3774 msgid "`break' is not allowed outside a loop or switch" msgstr "" "không cho phép “break†(ngắt) nằm ở ngoại vòng lặp hay cấu trúc chá»n lá»±a" -#: awkgram.y:802 awkgram.y:3755 +#: awkgram.y:802 awkgram.y:3766 msgid "`continue' is not allowed outside a loop" msgstr "không cho phép “continue†(tiếp tục) ở ngoài má»™t vòng lặp" @@ -251,7 +252,7 @@ msgstr "cố gắng dùng không-phải-hàm “%s†trong cú gá»i hàm" msgid "invalid subscript expression" msgstr "biểu thức in thấp không hợp lệ" -#: awkgram.y:2047 awkgram.y:2067 gawkapi.c:206 gawkapi.c:224 msg.c:126 +#: awkgram.y:2047 awkgram.y:2067 gawkapi.c:206 gawkapi.c:223 msg.c:126 msgid "warning: " msgstr "cảnh báo: " @@ -259,267 +260,271 @@ msgstr "cảnh báo: " msgid "fatal: " msgstr "lá»—i nghiêm trá»ng: " -#: awkgram.y:2115 +#: awkgram.y:2116 msgid "unexpected newline or end of string" msgstr "gặp dòng má»›i hay kết thúc chuá»—i bất ngá»" -#: awkgram.y:2394 awkgram.y:2470 awkgram.y:2693 debug.c:523 debug.c:539 -#: debug.c:2812 debug.c:5055 +#: awkgram.y:2397 awkgram.y:2473 awkgram.y:2696 debug.c:523 debug.c:539 +#: debug.c:2812 debug.c:5101 #, c-format msgid "can't open source file `%s' for reading (%s)" msgstr "không thể mở tập tin nguồn “%s†để Ä‘á»c (%s)" -#: awkgram.y:2395 awkgram.y:2520 +#: awkgram.y:2398 awkgram.y:2523 #, c-format msgid "can't open shared library `%s' for reading (%s)" msgstr "không thể mở tập thÆ° viện chia sẻ “%s†để Ä‘á»c (%s)" -#: awkgram.y:2397 awkgram.y:2471 awkgram.y:2521 builtin.c:135 debug.c:5206 +#: awkgram.y:2400 awkgram.y:2474 awkgram.y:2524 builtin.c:135 debug.c:5252 msgid "reason unknown" msgstr "không rõ lý do" -#: awkgram.y:2406 awkgram.y:2430 +#: awkgram.y:2409 awkgram.y:2433 #, c-format msgid "can't include `%s' and use it as a program file" msgstr "không thể bao gồm “%s†và dùng nó nhÆ° là tập tin chÆ°Æ¡ng trình" -#: awkgram.y:2419 +#: awkgram.y:2422 #, c-format msgid "already included source file `%s'" msgstr "đã sẵn bao gồm tập tin nguồn “%sâ€" -#: awkgram.y:2420 +#: awkgram.y:2423 #, c-format msgid "already loaded shared library `%s'" msgstr "thÆ° viện dùng chung “%s†đã được sẵn được tải rồi" -#: awkgram.y:2455 +#: awkgram.y:2458 msgid "@include is a gawk extension" msgstr "@include là phần mở rá»™ng của gawk" -#: awkgram.y:2461 +#: awkgram.y:2464 msgid "empty filename after @include" msgstr "tập tin trống sau @include" -#: awkgram.y:2505 +#: awkgram.y:2508 msgid "@load is a gawk extension" msgstr "@load là má»™t phần mở rá»™ng gawk" -#: awkgram.y:2511 +#: awkgram.y:2514 msgid "empty filename after @load" msgstr "tên tập tin trống sau @load" -#: awkgram.y:2645 +#: awkgram.y:2648 msgid "empty program text on command line" msgstr "gặp Ä‘oạn chữ chÆ°Æ¡ng trình rá»—ng nằm trên dòng lệnh" -#: awkgram.y:2760 +#: awkgram.y:2763 #, c-format msgid "can't read sourcefile `%s' (%s)" msgstr "không thể Ä‘á»c tập tin nguồn “%s†(%s)" -#: awkgram.y:2771 +#: awkgram.y:2774 #, c-format msgid "source file `%s' is empty" msgstr "tập tin nguồn “%s†là rá»—ng" -#: awkgram.y:2830 +#: awkgram.y:2833 #, c-format msgid "PEBKAC error: invalid character '\\%03o' in source code" msgstr "Lá»—i PEBKAC: gặp ký tá»± không hợp lệ “\\%03o†trong mã nguồn" -#: awkgram.y:2961 +#: awkgram.y:2964 msgid "source file does not end in newline" msgstr "tập tin nguồn không kết thúc bằng má»™t dòng trống" -#: awkgram.y:3074 +#: awkgram.y:3081 msgid "unterminated regexp ends with `\\' at end of file" msgstr "" "biểu thức chính quy chÆ°a được chấm dứt kết thúc vá»›i “\\†tại kết thúc của " "tập tin" -#: awkgram.y:3101 +#: awkgram.y:3108 #, c-format msgid "%s: %d: tawk regex modifier `/.../%c' doesn't work in gawk" msgstr "" "%s: %d: bá»™ sá»­a đổi biểu thức chính quy tawk “/…/%c†không hoạt Ä‘á»™ng được " "trong gawk" -#: awkgram.y:3105 +#: awkgram.y:3112 #, c-format msgid "tawk regex modifier `/.../%c' doesn't work in gawk" msgstr "" "bá»™ sá»­a đổi biểu thức chính quy tawk “/…/%c†không hoạt Ä‘á»™ng được trong gawk" -#: awkgram.y:3112 +#: awkgram.y:3119 msgid "unterminated regexp" msgstr "biểu thức chính quy chÆ°a được chấm dứt" -#: awkgram.y:3116 +#: awkgram.y:3123 msgid "unterminated regexp at end of file" msgstr "biểu thức chính quy chÆ°a được chấm dứt nằm tại kết thúc của tập tin" -#: awkgram.y:3174 +#: awkgram.y:3181 msgid "use of `\\ #...' line continuation is not portable" msgstr "không thể mang khả năng dùng “\\#…†để tiếp tục dòng" -#: awkgram.y:3190 +#: awkgram.y:3197 msgid "backslash not last character on line" msgstr "dấu gạch ngược không phải là ký tá»± cuối cùng nằm trên dòng" -#: awkgram.y:3251 +#: awkgram.y:3235 awkgram.y:3237 +msgid "multidimensional arrays are a gawk extension" +msgstr "mảng nhiá»u chiá»u là má»™t phần mở rá»™ng gawk" + +#: awkgram.y:3262 msgid "POSIX does not allow operator `**='" msgstr "POSIX không cho phép toán tá»­ “**=â€" -#: awkgram.y:3253 +#: awkgram.y:3264 msgid "old awk does not support operator `**='" msgstr "awk cÅ© không há»— trợ toán tá»­ “**=â€" -#: awkgram.y:3262 +#: awkgram.y:3273 msgid "POSIX does not allow operator `**'" msgstr "POSIX không cho phép toán tá»­ “**â€" -#: awkgram.y:3264 +#: awkgram.y:3275 msgid "old awk does not support operator `**'" msgstr "awk cÅ© không há»— trợ toán tá»­ “**â€" -#: awkgram.y:3299 +#: awkgram.y:3310 msgid "operator `^=' is not supported in old awk" msgstr "awk cÅ© không há»— trợ toán tá»­ “^=â€" -#: awkgram.y:3307 +#: awkgram.y:3318 msgid "operator `^' is not supported in old awk" msgstr "awk cÅ© không há»— trợ toán tá»­ “^â€" -#: awkgram.y:3404 awkgram.y:3422 command.y:1180 +#: awkgram.y:3415 awkgram.y:3433 command.y:1187 msgid "unterminated string" msgstr "chuá»—i không được chấm dứt" -#: awkgram.y:3643 +#: awkgram.y:3654 #, c-format msgid "invalid char '%c' in expression" msgstr "có ký tá»± không hợp lệ “%c†nằm trong biểu thức" -#: awkgram.y:3690 +#: awkgram.y:3701 #, c-format msgid "`%s' is a gawk extension" msgstr "“%s†là má»™t phần mở rá»™ng gawk" -#: awkgram.y:3695 +#: awkgram.y:3706 #, c-format msgid "POSIX does not allow `%s'" msgstr "POSIX không cho phép “%sâ€" -#: awkgram.y:3703 +#: awkgram.y:3714 #, c-format msgid "`%s' is not supported in old awk" msgstr "awk kiểu cÅ© không há»— trợ “%sâ€" -#: awkgram.y:3793 +#: awkgram.y:3804 msgid "`goto' considered harmful!\n" msgstr "“goto†được xem là có hại!\n" -#: awkgram.y:3827 +#: awkgram.y:3873 #, c-format msgid "%d is invalid as number of arguments for %s" msgstr "“%d†không hợp lệ khi là số đối số cho “%sâ€" -#: awkgram.y:3862 +#: awkgram.y:3908 #, 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 sá»± thay thế, hằng mã nguồn chuá»—i không có tác " "dụng" -#: awkgram.y:3867 +#: awkgram.y:3913 #, 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:3950 awkgram.y:3953 +#: awkgram.y:3996 awkgram.y:3999 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:4007 awkgram.y:4010 +#: awkgram.y:4053 awkgram.y:4056 msgid "close: second argument is a gawk extension" msgstr "close: (đóng) đối số thứ hai là phần mở rá»™ng gawk" -#: awkgram.y:4022 +#: awkgram.y:4068 msgid "use of dcgettext(_\"...\") is incorrect: remove leading underscore" msgstr "dùng “dcgettext(_\"…\")†không đúng: hãy gỡ bá» gạch dÆ°á»›i nằm trÆ°á»›c" -#: awkgram.y:4037 +#: awkgram.y:4083 msgid "use of dcngettext(_\"...\") is incorrect: remove leading underscore" msgstr "dùng “dcgettext(_\"…\")†không đúng: hãy gỡ bá» gạch dÆ°á»›i nằm trÆ°á»›c" -#: awkgram.y:4056 +#: awkgram.y:4102 msgid "index: regexp constant as second argument is not allowed" msgstr "" "index: (chỉ mục) không cho phép hằng biểu thức chính quy làm đối số thứ hai" -#: awkgram.y:4109 +#: awkgram.y:4155 #, c-format msgid "function `%s': parameter `%s' shadows global variable" msgstr "hàm “%sâ€: tham số “%s†che biến toàn cục" -#: awkgram.y:4166 debug.c:4041 debug.c:4084 debug.c:5204 +#: awkgram.y:4214 debug.c:4087 debug.c:4130 debug.c:5250 #, c-format msgid "could not open `%s' for writing (%s)" msgstr "không mở được “%s†để ghi (%s)" -#: awkgram.y:4167 +#: awkgram.y:4215 msgid "sending variable list to standard error" msgstr "Ä‘ang gởi danh sách biến tá»›i thiết bị lá»—i chuẩn" -#: awkgram.y:4175 +#: awkgram.y:4223 #, c-format msgid "%s: close failed (%s)" msgstr "%s: gặp lá»—i khi đóng (%s)" -#: awkgram.y:4200 +#: awkgram.y:4248 msgid "shadow_funcs() called twice!" msgstr "shadow_funcs() (hàm bóng) được gá»i hai lần!" -#: awkgram.y:4208 +#: awkgram.y:4256 msgid "there were shadowed variables." msgstr "có biến bị bóng." -#: awkgram.y:4279 +#: awkgram.y:4327 #, c-format msgid "function name `%s' previously defined" msgstr "tên hàm “%s†trÆ°á»›c đây đã được định nghÄ©a rồi" -#: awkgram.y:4325 +#: awkgram.y:4373 #, c-format msgid "function `%s': can't use function name as parameter name" msgstr "hàm “%sâ€: không thể dùng tên hàm nhÆ° là tên tham số" -#: awkgram.y:4328 +#: awkgram.y:4376 #, c-format msgid "function `%s': can't use special variable `%s' as a function parameter" msgstr "hàm “%sâ€: không thể dùng biến đặc biệt “%s†nhÆ° là tham số hàm" -#: awkgram.y:4336 +#: awkgram.y:4384 #, c-format msgid "function `%s': parameter #%d, `%s', duplicates parameter #%d" msgstr "hàm “%sâ€: tham số “#%dâ€, “%sâ€, nhân đôi tham số “#%dâ€" -#: awkgram.y:4423 awkgram.y:4429 +#: awkgram.y:4471 awkgram.y:4477 #, c-format msgid "function `%s' called but never defined" msgstr "hàm “%s†được gá»i nhÆ°ng mà chÆ°a định nghÄ©a" -#: awkgram.y:4433 +#: awkgram.y:4481 #, c-format msgid "function `%s' defined but never called directly" msgstr "hàm “%s†được định nghÄ©a nhÆ°ng mà chÆ°a được gá»i trá»±c tiếp bao giá»" -#: awkgram.y:4465 +#: awkgram.y:4513 #, 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ý (bun)" -#: awkgram.y:4480 +#: awkgram.y:4528 #, c-format msgid "" "function `%s' called with space between name and `(',\n" @@ -528,21 +533,21 @@ msgstr "" "hàm “%s†được gá»i vá»›i dấu cách nằm giữa tên và “(â€\n" "hoặc được dùng nhÆ° là biến hay mảng" -#: awkgram.y:4686 +#: awkgram.y:4734 msgid "division by zero attempted" msgstr "gặp phép chia cho số không" -#: awkgram.y:4695 +#: awkgram.y:4743 #, c-format msgid "division by zero attempted in `%%'" msgstr "gặp phép chia cho số không trong “%%â€" -#: awkgram.y:5015 +#: awkgram.y:5064 msgid "" "cannot assign a value to the result of a field post-increment expression" msgstr "không thể gán giá trị cho kết quả của biểu thức trÆ°á»ng tăng-trÆ°á»›c" -#: awkgram.y:5018 +#: awkgram.y:5067 #, c-format msgid "invalid target of assignment (opcode %s)" msgstr "gán Ä‘ich không hợp lệ (mã thi hành “%sâ€)" @@ -579,210 +584,221 @@ msgstr "" "fflush: không thể flush (đẩy dữ liệu vào Ä‘Ä©a): tập tin “%s†được mở để Ä‘á»c, " "không phải để ghi" -#: builtin.c:244 +#: builtin.c:241 +#, c-format +msgid "fflush: cannot flush: two-way pipe `%s' has closed write end" +msgstr "" +"fflush: không thể flush (đẩy dữ liệu lên Ä‘Ä©a): ống dẫn hai chiá»u “%s†đã " +"đóng kết thúc ghi" + +#: builtin.c:247 #, c-format msgid "fflush: `%s' is not an open file, pipe or co-process" msgstr "" "fflush: “%s†không phải là tập tin, ống dẫn hay đồng tiến trình được mở" -#: builtin.c:351 +#: builtin.c:354 msgid "index: received non-string first argument" msgstr "index: (chỉ số) đã nhận đối số thứ nhất không phải là chuá»—i" -#: builtin.c:353 +#: builtin.c:356 msgid "index: received non-string second argument" msgstr "index: (chỉ số) đã nhận đối số thứ hai không phải là chuá»—i" -#: builtin.c:466 mpfr.c:777 +#: builtin.c:469 mpfr.c:781 msgid "int: received non-numeric argument" msgstr "int: (số nguyên?) đã nhận đối số không phải thuá»™c số" -#: builtin.c:503 +#: builtin.c:506 msgid "length: received array argument" msgstr "length: (chiá»u dài) đã nhận mảng đối số" -#: builtin.c:506 +#: builtin.c:509 msgid "`length(array)' is a gawk extension" msgstr "“length(array)†(Ä‘á»™ dài mảng) là má»™t phần mở rá»™ng gawk" -#: builtin.c:525 +#: builtin.c:528 msgid "length: received non-string argument" msgstr "length: (chiá»u dài) đã nhận đối số không phải chuá»—i" -#: builtin.c:554 +#: builtin.c:557 msgid "log: received non-numeric argument" msgstr "log: (nhật ký) đã nhận đối số không phải thuá»™c số" -#: builtin.c:557 +#: builtin.c:560 #, c-format msgid "log: received negative argument %g" msgstr "log: (nhật ký) đã nhận đối số âm “%gâ€" -#: builtin.c:755 builtin.c:760 builtin.c:911 +#: builtin.c:758 builtin.c:763 builtin.c:914 msgid "fatal: must use `count$' on all formats or none" msgstr "lá»—i nghiêm trá»ng: phải dùng “count$†vá»›i má»i dạng thức hay không gì cả" -#: builtin.c:830 +#: builtin.c:833 #, c-format msgid "field width is ignored for `%%' specifier" msgstr "chiá»u rá»™ng trÆ°á»ng bị bá» qua đối vá»›i bá»™ chỉ định “%%â€" -#: builtin.c:832 +#: builtin.c:835 #, c-format msgid "precision is ignored for `%%' specifier" msgstr "Ä‘á»™ chính xác bị bá» qua đối vá»›i bá»™ chỉ định “%%â€" -#: builtin.c:834 +#: builtin.c:837 #, c-format msgid "field width and precision are ignored for `%%' specifier" msgstr "chiá»u rá»™ng trÆ°á»ng và Ä‘á»™ chính xác bị bá» qua đối vá»›i bá»™ chỉ định “%%â€" -#: builtin.c:885 +#: builtin.c:888 msgid "fatal: `$' is not permitted in awk formats" msgstr "lá»—i nghiêm trá»ng: không cho phép “$†trong định dạng awk" -#: builtin.c:894 +#: builtin.c:897 msgid "fatal: arg count with `$' must be > 0" msgstr "lá»—i nghiêm trá»ng: số lượng đối số vá»›i “$†phải >0" -#: builtin.c:898 +#: builtin.c:901 #, c-format msgid "fatal: arg count %ld greater than total number of supplied arguments" msgstr "" "lá»—i nghiêm trá»ng: số lượng đối số %ld lá»›n hÆ¡n tổng số đối số được cung cấp" -#: builtin.c:902 +#: builtin.c:905 msgid "fatal: `$' not permitted after period in format" msgstr "lá»—i nghiêm trá»ng: không cho phép “$†nằm sau dấu chấm trong định dạng" -#: builtin.c:921 +#: builtin.c:924 msgid "fatal: no `$' supplied for positional field width or precision" msgstr "" "lá»—i nghiêm trá»ng: chÆ°a cung cấp “$†cho Ä‘á»™ rá»™ng trÆ°á»ng thuá»™c vị trí hay cho " "Ä‘á»™ chính xác" -#: builtin.c:991 +#: builtin.c:994 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:995 +#: builtin.c:998 msgid "fatal: `l' is not permitted in POSIX awk formats" msgstr "lá»—i nghiêm trá»ng: không cho phép chữ “l†nằm trong định dạng awk POSIX" -#: builtin.c:1008 +#: builtin.c:1011 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:1012 +#: builtin.c:1015 msgid "fatal: `L' is not permitted in POSIX awk formats" msgstr "lá»—i nghiêm trá»ng: không cho phép chữ “L†nằm trong định dạng awk POSIX" -#: builtin.c:1025 +#: builtin.c:1028 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:1029 +#: builtin.c:1032 msgid "fatal: `h' is not permitted in POSIX awk formats" msgstr "lá»—i nghiêm trá»ng: không cho phép chữ “h†nằm trong định dạng awk POSIX" -#: builtin.c:1055 +#: builtin.c:1058 #, c-format msgid "[s]printf: value %g is too big for %%c format" msgstr "[s]printf: giá trị %g quá lá»›n cho định dạng “%%câ€" -#: builtin.c:1068 +#: builtin.c:1071 #, c-format msgid "[s]printf: value %g is not a valid wide character" msgstr "[s]printf: giá trị %g phải là má»™t ký tá»± rá»™ng hợp lệ" -#: builtin.c:1454 +#: builtin.c:1457 #, c-format msgid "[s]printf: value %g is out of range for `%%%c' format" msgstr "[s]printf: giá trị %g ở ngoại phạm vi cho dạng thức “%%%câ€" -#: builtin.c:1552 +#: builtin.c:1555 #, c-format msgid "ignoring unknown format specifier character `%c': no argument converted" msgstr "" "Ä‘ang bá» qua ký tá»± ghi rõ định dạng không rõ “%câ€: không có đối số được " "chuyển đổi" -#: builtin.c:1557 +#: builtin.c:1560 msgid "fatal: not enough arguments to satisfy format string" msgstr "lá»—i nghiêm trá»ng: chÆ°a có đủ đối số để đáp ứng chuá»—i định dạng" -#: builtin.c:1559 +#: builtin.c:1562 msgid "^ ran out for this one" msgstr "bị hết “^†cho cái này" -#: builtin.c:1566 +#: builtin.c:1569 msgid "[s]printf: format specifier does not have control letter" msgstr "[s]printf: chỉ định định dạng không có ký hiệu Ä‘iá»u khiển" -#: builtin.c:1569 +#: builtin.c:1572 msgid "too many arguments supplied for format string" msgstr "quá nhiá»u đối số được cung cấp cho chuá»—i định dạng" -#: builtin.c:1625 +#: builtin.c:1631 msgid "sprintf: no arguments" msgstr "sprintf: không có đối số" -#: builtin.c:1648 builtin.c:1659 +#: builtin.c:1654 builtin.c:1665 msgid "printf: no arguments" msgstr "printf: không có đối số" -#: builtin.c:1702 +#: builtin.c:1676 +msgid "printf: attempt to write to closed write end of two-way pipe" +msgstr "printf: cố ghi vào má»™t Ä‘Æ°á»ng ống hai chiá»u mà chiá»u ghi đã đóng" + +#: builtin.c:1713 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:1706 +#: builtin.c:1717 #, 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:1737 +#: builtin.c:1748 #, c-format msgid "substr: length %g is not >= 1" msgstr "substr: (chuá»—i con) Ä‘á»™ dài %g không ≥1" -#: builtin.c:1739 +#: builtin.c:1750 #, c-format msgid "substr: length %g is not >= 0" msgstr "substr: (chuá»—i con) Ä‘á»™ dài %g không ≥0" -#: builtin.c:1753 +#: builtin.c:1764 #, 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:1758 +#: builtin.c:1769 #, c-format msgid "substr: length %g too big for string indexing, truncating to %g" msgstr "" "substr: (chuá»—i con) Ä‘á»™ dài %g là quá lá»›n cho chỉ số chuá»—i, nên xén ngắn " "thành %g" -#: builtin.c:1770 +#: builtin.c:1781 #, c-format msgid "substr: start index %g is invalid, using 1" msgstr "substr: (chuá»—i con) chỉ số đầu “%g†không hợp lệ nên dùng 1" -#: builtin.c:1775 +#: builtin.c:1786 #, c-format msgid "substr: non-integer start index %g will be truncated" msgstr "" "substr: (chuá»—i con) chỉ số đầu không phải số nguyên “%g†sẽ bị cắt ngắn" -#: builtin.c:1798 +#: builtin.c:1809 msgid "substr: source string is zero length" msgstr "substr: (chuá»—i con) chuá»—i nguồn có Ä‘á»™ dài số không" -#: builtin.c:1812 +#: builtin.c:1823 #, c-format msgid "substr: start index %g is past end of string" msgstr "substr: (chuá»—i con) chỉ số đầu %g nằm sau kết thúc của chuá»—i" -#: builtin.c:1820 +#: builtin.c:1831 #, c-format msgid "" "substr: length %g at start index %g exceeds length of first argument (%lu)" @@ -790,316 +806,320 @@ msgstr "" "substr: (chuá»—i con) Ä‘á»™ dài %g chỉ số đầu %g vượt quá Ä‘á»™ dài của đối số đầu " "(%lu)" -#: builtin.c:1892 +#: builtin.c:1903 msgid "strftime: format value in PROCINFO[\"strftime\"] has numeric type" msgstr "" "strftime: giá trị định dạng trong PROCINFO[\"strftime\"] phải thuá»™c kiểu số" -#: builtin.c:1915 +#: builtin.c:1926 msgid "strftime: received non-numeric second argument" msgstr "strftime: đã nhận đối số thứ hai khác thuá»™c số" -#: builtin.c:1925 +#: builtin.c:1936 msgid "strftime: second argument less than 0 or too big for time_t" msgstr "strftime: tham số thứ hai nhá» hÆ¡n 0 hay quá lá»›n dành cho time_t" -#: builtin.c:1932 +#: builtin.c:1943 msgid "strftime: second argument out of range for time_t" msgstr "strftime: tham số thứ hai nằm ngoài phạm vi cho phép của kiểu time_t" -#: builtin.c:1941 +#: builtin.c:1952 msgid "strftime: received non-string first argument" msgstr "strftime: đã nhận đối số thứ nhất khác chuá»—i" -#: builtin.c:1948 +#: builtin.c:1959 msgid "strftime: received empty format string" msgstr "strftime: đã nhận chuá»—i định dạng rá»—ng" -#: builtin.c:2017 +#: builtin.c:2028 msgid "mktime: received non-string argument" msgstr "mktime: đã nhận đối số khác chuá»—i" -#: builtin.c:2034 +#: builtin.c:2045 msgid "mktime: at least one of the values is out of the default range" msgstr "mktime: ít nhất má»™t của những giá trị nằm ở ngoại phạm vi mặc định" -#: builtin.c:2069 +#: builtin.c:2081 msgid "'system' function not allowed in sandbox mode" msgstr "hàm “system†không cho phép ở chế Ä‘á»™ khuôn đúc" -#: builtin.c:2074 +#: builtin.c:2086 msgid "system: received non-string argument" msgstr "system: (hệ thống) đã nhận đối số khác chuá»—i" -#: builtin.c:2194 +#: builtin.c:2165 builtin.c:2230 +msgid "print: attempt to write to closed write end of two-way pipe" +msgstr "print: cố ghi vào má»™t Ä‘Æ°á»ng ống hai chiá»u mà chiá»u ghi đã đóng" + +#: builtin.c:2248 #, c-format msgid "reference to uninitialized field `$%d'" msgstr "gặp tham chiếu đến trÆ°á»ng chÆ°a được khởi tạo “$%dâ€" -#: builtin.c:2279 +#: builtin.c:2333 msgid "tolower: received non-string argument" msgstr "tolower: (thành chÆ° thÆ°á»ng) đã nhận đối số khác chuá»—i" -#: builtin.c:2310 +#: builtin.c:2364 msgid "toupper: received non-string argument" msgstr "toupper: (thành chữ HOA) đã nhận đối số khác chuá»—i" -#: builtin.c:2343 mpfr.c:679 +#: builtin.c:2397 mpfr.c:681 msgid "atan2: received non-numeric first argument" msgstr "atan2: đã nhận đối số thứ nhất khác thuá»™c số" -#: builtin.c:2345 mpfr.c:681 +#: builtin.c:2399 mpfr.c:683 msgid "atan2: received non-numeric second argument" msgstr "atan2: đã nhận đối số thứ hai khác thuá»™c số" -#: builtin.c:2364 +#: builtin.c:2418 msgid "sin: received non-numeric argument" msgstr "sin: đã nhận đối số không thuá»™c kiểu số há»c" -#: builtin.c:2380 +#: builtin.c:2434 msgid "cos: received non-numeric argument" msgstr "cos: đã nhận đối số không thuá»™c kiểu số há»c" -#: builtin.c:2433 mpfr.c:1176 +#: builtin.c:2487 mpfr.c:1180 msgid "srand: received non-numeric argument" msgstr "srand: đã nhận đối số không thuá»™c kiểu số há»c" -#: builtin.c:2464 +#: builtin.c:2518 msgid "match: third argument is not an array" msgstr "match: (khá»›p) đối số thứ ba không phải là mảng" -#: builtin.c:2725 +#: builtin.c:2779 #, c-format msgid "gensub: third argument `%.*s' treated as 1" msgstr "gensub: đối số thứ ba “%.*s†được xá»­ lý nhÆ° 1" -#: builtin.c:2740 +#: builtin.c:2794 #, c-format msgid "gensub: third argument %g treated as 1" msgstr "gensub: đối số thứ ba %g được xá»­ lý nhÆ° 1" -#: builtin.c:3038 +#: builtin.c:3096 #, c-format msgid "%s: can be called indirectly only with two arguments" msgstr "%s: được gá»i má»™t cách gián tiếp vá»›i ít hÆ¡n hai đối số" -#: builtin.c:3128 +#: builtin.c:3186 #, c-format msgid "indirect call to %s requires at least two arguments" msgstr "cú gá»i gián tiếp đến %s cần ít nhất hai đối số" -#: builtin.c:3180 +#: builtin.c:3238 msgid "lshift: received non-numeric first argument" msgstr "lshift: đã nhận đối số đầu không phải thuá»™c số" -#: builtin.c:3182 +#: builtin.c:3240 msgid "lshift: received non-numeric second argument" msgstr "lshift: (dịch bên trái) đã nhận đối số thứ hai khác thuá»™c số" -#: builtin.c:3188 +#: builtin.c:3246 #, c-format msgid "lshift(%f, %f): negative values will give strange results" msgstr "lshift(%f, %f): giá trị âm sẽ gây ra kết quả không nhÆ° mong muốn" -#: builtin.c:3190 +#: builtin.c:3248 #, c-format msgid "lshift(%f, %f): fractional values will be truncated" msgstr "lshift(%f, %f): giá trị thuá»™c phân số sẽ bị cắt ngắn" -#: builtin.c:3192 +#: builtin.c:3250 #, c-format msgid "lshift(%f, %f): too large shift value will give strange results" msgstr "" "lshift(%f, %f): giá trị dịch quá lá»›n sẽ gây ra kết quả không nhÆ° mong muốn" -#: builtin.c:3217 +#: builtin.c:3275 msgid "rshift: received non-numeric first argument" msgstr "rshift: đã nhận đối số thứ nhất khác thuá»™c số" -#: builtin.c:3219 +#: builtin.c:3277 msgid "rshift: received non-numeric second argument" msgstr "rshift: (dịch phải) đã nhận đối số thứ hai khác thuá»™c số" -#: builtin.c:3225 +#: builtin.c:3283 #, c-format msgid "rshift(%f, %f): negative values will give strange results" msgstr "rshift(%f, %f): giá trị âm sẽ gây ra kết quả không nhÆ° mong muốn" -#: builtin.c:3227 +#: builtin.c:3285 #, c-format msgid "rshift(%f, %f): fractional values will be truncated" msgstr "rshift(%f, %f): giá trị thuá»™c kiểu phân số sẽ bị xén ngắn" -#: builtin.c:3229 +#: builtin.c:3287 #, c-format msgid "rshift(%f, %f): too large shift value will give strange results" msgstr "" "rshift(%f, %f): giá trị dịch quá lá»›n sẽ gây ra kết quả không nhÆ° mong muốn" -#: builtin.c:3254 mpfr.c:988 +#: builtin.c:3312 mpfr.c:992 msgid "and: called with less than two arguments" msgstr "and: được gá»i vá»›i ít hÆ¡n hai đối số" -#: builtin.c:3259 +#: builtin.c:3317 #, c-format msgid "and: argument %d is non-numeric" msgstr "and: đối số %d không phải thuá»™c số" -#: builtin.c:3263 +#: builtin.c:3321 #, c-format msgid "and: argument %d negative value %g will give strange results" msgstr "" "and: (và) đối số %d giá trị âm %g sẽ Ä‘Æ°a lại kết quả không nhÆ° mong muốn" -#: builtin.c:3286 mpfr.c:1020 +#: builtin.c:3344 mpfr.c:1024 msgid "or: called with less than two arguments" msgstr "or: (hoặc) được gá»i vá»›i ít hÆ¡n hai đối số" -#: builtin.c:3291 +#: builtin.c:3349 #, c-format msgid "or: argument %d is non-numeric" msgstr "or: (hoặc) đối số %d không thuá»™c kiểu số" -#: builtin.c:3295 +#: builtin.c:3353 #, c-format msgid "or: argument %d negative value %g will give strange results" msgstr "" "or: (hoặc) đối số %d giá trị âm %g sẽ Ä‘Æ°a lại kết quả không nhÆ° mong muốn" -#: builtin.c:3317 mpfr.c:1051 +#: builtin.c:3375 mpfr.c:1055 msgid "xor: called with less than two arguments" msgstr "xor: được gá»i vá»›i ít hÆ¡n hai đối số" -#: builtin.c:3323 +#: builtin.c:3381 #, c-format msgid "xor: argument %d is non-numeric" msgstr "xor: đối số %d không thuá»™c kiểu số" -#: builtin.c:3327 +#: builtin.c:3385 #, c-format msgid "xor: argument %d negative value %g will give strange results" msgstr "xor: đối số %d giá trị âm %g sẽ Ä‘Æ°a lại kết quả không nhÆ° mong muốn" -#: builtin.c:3352 mpfr.c:807 +#: builtin.c:3410 mpfr.c:811 msgid "compl: received non-numeric argument" msgstr "compl: (biên dịch) đã nhận được đối số không-phải-số" -#: builtin.c:3358 +#: builtin.c:3416 #, c-format msgid "compl(%f): negative value will give strange results" msgstr "compl(%f): giá trị âm sẽ gây ra kết quả không nhÆ° mong đợi" -#: builtin.c:3360 +#: builtin.c:3418 #, c-format msgid "compl(%f): fractional value will be truncated" msgstr "compl(%f): giá trị thuá»™c phân số sẽ bị cắt ngắn" -#: builtin.c:3529 +#: builtin.c:3588 #, 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ệ" -#: command.y:225 +#: command.y:226 #, c-format msgid "Type (g)awk statement(s). End with the command \"end\"\n" msgstr "Gõ các câu lệnh (g)awk. Kết thúc bằng lệnh “endâ€\n" -#: command.y:289 +#: command.y:290 #, c-format msgid "invalid frame number: %d" msgstr "số khung không hợp lệ: %d" -#: command.y:295 +#: command.y:296 #, c-format msgid "info: invalid option - \"%s\"" msgstr "info: tùy chá»n không hợp lệ - “%sâ€" -#: command.y:321 +#: command.y:322 #, c-format msgid "source \"%s\": already sourced." msgstr "nguồn “%sâ€: đã sẵn có trong nguồn rồi." -#: command.y:326 +#: command.y:327 #, c-format msgid "save \"%s\": command not permitted." msgstr "ghi “%sâ€: lệnh không đủ thẩm quyá»n." -#: command.y:339 +#: command.y:340 msgid "Can't use command `commands' for breakpoint/watchpoint commands" msgstr "Không thể dùng lệnh “commands†cho lệnh breakpoint/watchpoint" -#: command.y:341 +#: command.y:342 msgid "no breakpoint/watchpoint has been set yet" msgstr "chÆ°a có Ä‘iểm ngắt hay Ä‘iểm theo dõi nào được đặt cả" -#: command.y:343 +#: command.y:344 msgid "invalid breakpoint/watchpoint number" msgstr "số Ä‘iểm ngắt hay Ä‘iểm theo dõi không hợp lệ" -#: command.y:348 +#: command.y:349 #, c-format msgid "Type commands for when %s %d is hit, one per line.\n" msgstr "Gõ lệnh cho %s khi %d được gợi ý, má»—i lệnh má»™t dòng.\n" -#: command.y:350 +#: command.y:351 #, c-format msgid "End with the command \"end\"\n" msgstr "Kết thúc vá»›i lệnh “endâ€\n" -#: command.y:357 +#: command.y:358 msgid "`end' valid only in command `commands' or `eval'" msgstr "“end†chỉ hợp lệ trong “commands†hay “evalâ€" -#: command.y:367 +#: command.y:368 msgid "`silent' valid only in command `commands'" msgstr "“silent†chỉ hợp lệ vá»›i lệnh “commandsâ€" -#: command.y:373 +#: command.y:374 #, c-format msgid "trace: invalid option - \"%s\"" msgstr "trace: tùy chá»n không hợp lệ - “%sâ€" -#: command.y:387 +#: command.y:388 msgid "condition: invalid breakpoint/watchpoint number" msgstr "condition: Ä‘iá»u kiện: số hiệu Ä‘iểm ngắt hay Ä‘iểm theo dõi không hợp lệ" -#: command.y:449 +#: command.y:450 msgid "argument not a string" msgstr "tham số không phải là má»™t chuá»—i" -#: command.y:459 command.y:464 +#: command.y:460 command.y:465 #, c-format msgid "option: invalid parameter - \"%s\"" msgstr "option: tùy chá»n không hợp lệ - “%sâ€" -#: command.y:474 +#: command.y:475 #, c-format msgid "no such function - \"%s\"" msgstr "không có hàm nào nhÆ° thế cả - “%sâ€" -#: command.y:531 +#: command.y:532 #, c-format msgid "enable: invalid option - \"%s\"" msgstr "enable: tùy chá»n không hợp lệ - “%sâ€" -#: command.y:597 +#: command.y:598 #, c-format msgid "invalid range specification: %d - %d" msgstr "đặc tả vùng không hợp lệ: %d - %d" -#: command.y:659 +#: command.y:660 msgid "non-numeric value for field number" msgstr "giá trị cho trÆ°á»ng số mà không thuá»™c kiểu số" -#: command.y:680 command.y:687 +#: command.y:681 command.y:688 msgid "non-numeric value found, numeric expected" msgstr "cần giá trị kiểu số nhÆ°ng lại nhận được giá trị không thuá»™c kiểu này" -#: command.y:712 command.y:718 +#: command.y:713 command.y:719 msgid "non-zero integer value" msgstr "giá trị số nguyên khác không" -#: command.y:817 +#: command.y:818 msgid "" "backtrace [N] - print trace of all or N innermost (outermost if N < 0) " "frames." @@ -1107,17 +1127,17 @@ msgstr "" "backtrace [N] - in vết của tất cả hay N khung trong cùng nhất (ngoài cùng " "nhất nếu N < 0)." -#: command.y:819 +#: command.y:820 msgid "" "break [[filename:]N|function] - set breakpoint at the specified location." msgstr "break [[tên_tập_tin:]N|hàm] - đặt Ä‘iểm ngắt tại vị trí đã cho." -#: command.y:821 +#: command.y:822 msgid "clear [[filename:]N|function] - delete breakpoints previously set." msgstr "" "clear [[tên_tập_tin:]N|function] - xóa các Ä‘iểm ngắt được đặt trÆ°á»›c đây." -#: command.y:823 +#: command.y:824 msgid "" "commands [num] - starts a list of commands to be executed at a " "breakpoint(watchpoint) hit." @@ -1125,156 +1145,160 @@ msgstr "" "commands [số] - chạy má»™t danh sách các câu lệnh được thá»±c thi tại Ä‘iểm ngắt " "(hay Ä‘iểm theo dõi) tìm được." -#: command.y:825 +#: command.y:826 msgid "condition num [expr] - set or clear breakpoint or watchpoint condition." msgstr "" "condition num [expr] - đặt hay xóa Ä‘iểm ngắt hay Ä‘iá»u kiện Ä‘iểm theo dõi." -#: command.y:827 +#: command.y:828 msgid "continue [COUNT] - continue program being debugged." msgstr "continue [Sá»_LƯỢNG] - tiếp tục chÆ°Æ¡ng trình Ä‘ang được gỡ lá»—i." -#: command.y:829 +#: command.y:830 msgid "delete [breakpoints] [range] - delete specified breakpoints." msgstr "delete [Ä‘iểm_ngắt] [vùng] - xóa các Ä‘iểm ngắt đã chỉ ra." -#: command.y:831 +#: command.y:832 msgid "disable [breakpoints] [range] - disable specified breakpoints." msgstr "disable [Ä‘iểm_ngắt] [vùng] - tắt các Ä‘iểm ngắt đã chỉ định." -#: command.y:833 +#: command.y:834 msgid "display [var] - print value of variable each time the program stops." msgstr "display [var] - in giá trị của biến má»—i lần chÆ°Æ¡ng trình dừng." -#: command.y:835 +#: command.y:836 msgid "down [N] - move N frames down the stack." msgstr "down [N] - chuyển xuống N khung stack." -#: command.y:837 +#: command.y:838 msgid "dump [filename] - dump instructions to file or stdout." msgstr "" "dump [tên_tập_tin] - dump các chỉ lệnh ra tập tin hay đầu ra tiêu chuẩn." -#: command.y:839 +#: command.y:840 msgid "enable [once|del] [breakpoints] [range] - enable specified breakpoints." msgstr "enable [once|del] [Ä‘iểm_ngắt] [range] - bật các Ä‘iểm ngắt đã chỉ ra." -#: command.y:841 +#: command.y:842 msgid "end - end a list of commands or awk statements." msgstr "end - kết thúc má»™t danh sách các câu lệnh hay biểu thức awk" -#: command.y:843 +#: command.y:844 msgid "eval stmt|[p1, p2, ...] - evaluate awk statement(s)." msgstr "eval stmt|[p1, p2, …] - định giá các câu lệnh awk." -#: command.y:845 +#: command.y:846 +msgid "exit - (same as quit) exit debugger." +msgstr "exit - (giống vá»›i quit) thoát khá»i gỡ lá»—i." + +#: command.y:848 msgid "finish - execute until selected stack frame returns." msgstr "finish - thá»±c thi cho đến khi khung stack đã chá»n trả vá»." -#: command.y:847 +#: command.y:850 msgid "frame [N] - select and print stack frame number N." msgstr "frame [N] - chá»n và in khung stack số hiệu N." -#: command.y:849 +#: command.y:852 msgid "help [command] - print list of commands or explanation of command." msgstr "help [lệnh] - hiển thị danh sách các lệnh hay giải thích câu lệnh." -#: command.y:851 +#: command.y:854 msgid "ignore N COUNT - set ignore-count of breakpoint number N to COUNT." msgstr "ignore N Sá»-LƯỢNG - đặt số lượng Ä‘iểm ngắt bị bá» qua." -#: command.y:853 +#: command.y:856 msgid "" "info topic - source|sources|variables|functions|break|frame|args|locals|" "display|watch." msgstr "" "info chủ_Ä‘á» - nguồn|nguồn|biến|hàm|break|frame|args|locals|display|watch." -#: command.y:855 +#: command.y:858 msgid "list [-|+|[filename:]lineno|function|range] - list specified line(s)." msgstr "list [-|+|[tập_tin:]số_dòng|hàm|vùng] - liệt kê các dòng đã chỉ định." -#: command.y:857 +#: command.y:860 msgid "next [COUNT] - step program, proceeding through subroutine calls." msgstr "" "next [Sá»_LƯỢNG] - nhảy má»™t chỉ lệnh, nhÆ°ng được xá»­ lý thông qua gá»i thủ tục " "con." -#: command.y:859 +#: command.y:862 msgid "" "nexti [COUNT] - step one instruction, but proceed through subroutine calls." msgstr "" "nexti [Sá»_LƯỢNG] - nhảy từng chỉ lệnh, nhÆ°ng được xá»­ lý thông qua gá»i thủ " "tục con." -#: command.y:861 +#: command.y:864 msgid "option [name[=value]] - set or display debugger option(s)." msgstr "option [tên[=giá trị]] - đặt hay hiển thị tùy chá»n gỡ lá»—i." -#: command.y:863 +#: command.y:866 msgid "print var [var] - print value of a variable or array." msgstr "print var [var] - in giá trị của biến hay mảng." -#: command.y:865 +#: command.y:868 msgid "printf format, [arg], ... - formatted output." msgstr "printf format, [arg], … - kết xuất có định dạng." -#: command.y:867 +#: command.y:870 msgid "quit - exit debugger." msgstr "quit - thoát khá»i chÆ°Æ¡ng trình gỡ lá»—i." -#: command.y:869 +#: command.y:872 msgid "return [value] - make selected stack frame return to its caller." msgstr "" "return [giá-trị] - làm cho khung stack đã chá»n trả vá» giá trị này cho bá»™ gá»i " "nó." -#: command.y:871 +#: command.y:874 msgid "run - start or restart executing program." msgstr "run - khởi chạy hay khởi Ä‘á»™ng lại chÆ°Æ¡ng trình." -#: command.y:874 +#: command.y:877 msgid "save filename - save commands from the session to file." msgstr "save tên_tập_tin - ghi các câu lệnh từ phiên làm việc vào tập tin." -#: command.y:877 +#: command.y:880 msgid "set var = value - assign value to a scalar variable." msgstr "set biến = giá_trị - gán giá trị cho má»™t biến vô hÆ°á»›ng." -#: command.y:879 +#: command.y:882 msgid "" "silent - suspends usual message when stopped at a breakpoint/watchpoint." msgstr "" "silent - chặn các lá»i nhắn thông thÆ°á»ng khi dừng tại Ä‘iểm ngăt hay Ä‘iểm theo " "dõi." -#: command.y:881 +#: command.y:884 msgid "source file - execute commands from file." msgstr "source file - thá»±c hiện các câu lệnh từ tập tin." -#: command.y:883 +#: command.y:886 msgid "step [COUNT] - step program until it reaches a different source line." msgstr "" "step [Sá»_LƯỢNG] - chạy từng bÆ°á»›c chÆ°Æ¡ng trình cho đến khi nó gặp má»™t dòng " "nguồn khác." -#: command.y:885 +#: command.y:888 msgid "stepi [COUNT] - step one instruction exactly." msgstr "stepi [Sá»_LƯỢNG] - chạy từng lệnh má»™t." -#: command.y:887 +#: command.y:890 msgid "tbreak [[filename:]N|function] - set a temporary breakpoint." msgstr "tbreak [[tên_tập_tin:]N|hàm] - đặt Ä‘iểm ngắt tạm thá»i." -#: command.y:889 +#: command.y:892 msgid "trace on|off - print instruction before executing." msgstr "trace on|off - hiển thị chỉ lệnh trÆ°á»›c khi thá»±c hiện." -#: command.y:891 +#: command.y:894 msgid "undisplay [N] - remove variable(s) from automatic display list." msgstr "undisplay [N] - gỡ bá» các biến từ danh sách hiển thị tá»± Ä‘á»™ng." -#: command.y:893 +#: command.y:896 msgid "" "until [[filename:]N|function] - execute until program reaches a different " "line or line N within current frame." @@ -1282,19 +1306,19 @@ msgstr "" "until [[tên_tập_tin:]N|hàm] - thá»±c hiện cho đến khi chÆ°Æ¡ng trình đạt đến " "dòng khác hay dòng N trong khung hiện tại." -#: command.y:895 +#: command.y:898 msgid "unwatch [N] - remove variable(s) from watch list." msgstr "unwatch [N] - gỡ bá» các biến từ danh sách theo dõi." -#: command.y:897 +#: command.y:900 msgid "up [N] - move N frames up the stack." msgstr "up [N] - chuyển xuống N khung stack." -#: command.y:899 +#: command.y:902 msgid "watch var - set a watchpoint for a variable." msgstr "watch var - đặt Ä‘iểm theo dõi cho má»™t biến." -#: command.y:901 +#: command.y:904 msgid "" "where [N] - (same as backtrace) print trace of all or N innermost (outermost " "if N < 0) frames." @@ -1302,40 +1326,40 @@ msgstr "" "where [N] - (giống nhÆ° backtrace) in vết của tất cả hay N khung trong cùng " "nhất (ngoài cùng nhất nếu N < 0)." -#: command.y:1013 debug.c:401 msg.c:135 +#: command.y:1016 debug.c:401 msg.c:135 #, c-format msgid "error: " msgstr "lá»—i: " -#: command.y:1053 +#: command.y:1060 #, c-format msgid "can't read command (%s)\n" msgstr "không thể Ä‘á»c lệnh (%s)\n" -#: command.y:1067 +#: command.y:1074 #, c-format msgid "can't read command (%s)" msgstr "không thể Ä‘á»c lệnh (%s)" -#: command.y:1118 +#: command.y:1125 msgid "invalid character in command" msgstr "ký tá»± trong câu lệnh không hợp lệ" -#: command.y:1154 +#: command.y:1161 #, c-format msgid "unknown command - \"%.*s\", try help" msgstr "không hiểu lệnh - “%.*sâ€, hãy gõ lệnh trợ giúp “helpâ€" -#: command.y:1224 +#: command.y:1231 #, c-format msgid "%s" msgstr "%s" -#: command.y:1286 +#: command.y:1293 msgid "invalid character" msgstr "ký tá»± không hợp lệ" -#: command.y:1457 +#: command.y:1497 #, c-format msgid "undefined command: %s\n" msgstr "lệnh chÆ°a định nghÄ©a: %s\n" @@ -1543,17 +1567,17 @@ msgstr "[â€%sâ€] không nằm trong mảng “%sâ€\n" msgid "`%s[\"%s\"]' is not an array\n" msgstr "“%s[â€%sâ€]†không phải là má»™t mảng\n" -#: debug.c:1236 debug.c:4964 +#: debug.c:1236 debug.c:5010 #, c-format msgid "`%s' is not a scalar variable" msgstr "“%s†không phải là biến scalar" -#: debug.c:1258 debug.c:4994 +#: debug.c:1258 debug.c:5040 #, c-format msgid "attempt to use array `%s[\"%s\"]' in a scalar context" msgstr "cố dùng mảng “%s[â€%sâ€]†trong má»™t ngữ cảnh vô hÆ°á»›ng" -#: debug.c:1280 debug.c:5005 +#: debug.c:1280 debug.c:5051 #, c-format msgid "attempt to use scalar `%s[\"%s\"]' as array" msgstr "cố dùng kiểu vô hÆ°á»›ng “%s[â€%sâ€]†nhÆ° là mảng" @@ -1831,99 +1855,99 @@ msgstr "“finish†không có nghÄ©a vá»›i lệnh nhảy non-local “%sâ€\n" msgid "'until' not meaningful with non-local jump '%s'\n" msgstr "“until†không có nghÄ©a vá»›i cú nhảy non-local “%sâ€\n" -#: debug.c:4185 +#: debug.c:4231 msgid "\t------[Enter] to continue or q [Enter] to quit------" msgstr "\t------Nhấn [Enter] để tiếp tục hay t [Enter] để thoát------" -#: debug.c:4186 +#: debug.c:4232 msgid "q" msgstr "t" -#: debug.c:5001 +#: debug.c:5047 #, c-format msgid "[\"%s\"] not in array `%s'" msgstr "[\"%s\"] không trong mảng “%sâ€" -#: debug.c:5207 +#: debug.c:5253 #, c-format msgid "sending output to stdout\n" msgstr "gá»­i kết xuất ra stdout\n" -#: debug.c:5247 +#: debug.c:5293 msgid "invalid number" msgstr "số không hợp lệ" -#: debug.c:5381 +#: debug.c:5427 #, c-format msgid "`%s' not allowed in current context; statement ignored" msgstr "“%s†không được phép trong ngữ cảnh hiện hành; câu lệnh bị bá» qua" -#: debug.c:5389 +#: debug.c:5435 msgid "`return' not allowed in current context; statement ignored" msgstr "“return†không được phép trong ngữ cảnh hiện hành; câu lệnh bị bá» qua" -#: debug.c:5604 +#: debug.c:5650 #, c-format msgid "No symbol `%s' in current context" msgstr "Không có ký hiệu “%s†trong ngữ cảnh hiện thá»i" -#: dfa.c:1062 dfa.c:1065 dfa.c:1084 dfa.c:1094 dfa.c:1106 dfa.c:1142 -#: dfa.c:1151 dfa.c:1154 dfa.c:1159 dfa.c:1173 dfa.c:1221 +#: dfa.c:1090 dfa.c:1093 dfa.c:1112 dfa.c:1122 dfa.c:1135 dfa.c:1163 dfa.c:1172 +#: dfa.c:1175 dfa.c:1180 dfa.c:1202 dfa.c:1205 msgid "unbalanced [" msgstr "thiếu dấu ngoặc vuông mở [" -#: dfa.c:1118 +#: dfa.c:1148 msgid "invalid character class" msgstr "sai lá»›p ký tá»±" -#: dfa.c:1264 +#: dfa.c:1271 msgid "character class syntax is [[:space:]], not [:space:]" msgstr "cú pháp lá»›p ký tá»± là [[:dấu_cách:]], không phải [:dấu_cách:]" -#: dfa.c:1326 +#: dfa.c:1332 msgid "unfinished \\ escape" msgstr "chÆ°a kết thúc dãy thoát \\" -#: dfa.c:1473 +#: dfa.c:1499 msgid "invalid content of \\{\\}" msgstr "ná»™i dung của “\\{\\}†không hợp lệ" -#: dfa.c:1476 +#: dfa.c:1502 msgid "regular expression too big" msgstr "biểu thức chính quy quá lá»›n" -#: dfa.c:1911 +#: dfa.c:1916 msgid "unbalanced (" msgstr "thiếu dấu (" -#: dfa.c:2037 +#: dfa.c:2044 msgid "no syntax specified" msgstr "chÆ°a chỉ rõ cú pháp" -#: dfa.c:2045 +#: dfa.c:2052 msgid "unbalanced )" msgstr "thiếu dấu )" -#: eval.c:396 +#: eval.c:398 #, c-format msgid "unknown nodetype %d" msgstr "không biết kiểu nút %d" -#: eval.c:407 eval.c:421 +#: eval.c:409 eval.c:423 #, c-format msgid "unknown opcode %d" msgstr "gặp opcode (mã thao tác) không rõ %d" -#: eval.c:418 +#: eval.c:420 #, c-format msgid "opcode %s not an operator or keyword" msgstr "mã lệnh %s không phải là má»™t toán tá»­ hoặc từ khóa" -#: eval.c:474 +#: eval.c:476 msgid "buffer overflow in genflags2str" msgstr "tràn bá»™ đệm trong “genflags2str†(tạo ra cỠđến chuá»—i)" -#: eval.c:676 +#: eval.c:678 #, c-format msgid "" "\n" @@ -1934,296 +1958,290 @@ msgstr "" "\t# Ngăn xếp gá»i hàm:\n" "\n" -#: eval.c:705 +#: eval.c:707 msgid "`IGNORECASE' is a gawk extension" msgstr "“IGNORECASE†(bá» qua chữ HOA/thÆ°á»ng) là phần mở rá»™ng gawk" -#: eval.c:737 +#: eval.c:739 msgid "`BINMODE' is a gawk extension" msgstr "“BINMODE†(chế Ä‘á»™ nhị phân) là phần mở rá»™ng gawk" -#: eval.c:795 +#: eval.c:797 #, c-format msgid "BINMODE value `%s' is invalid, treated as 3" msgstr "Giá trị BINMODE (chế Ä‘á»™ nhị phân) “%s†không hợp lệ nên đã coi là 3" -#: eval.c:912 +#: eval.c:914 #, c-format msgid "bad `%sFMT' specification `%s'" msgstr "đặc tả “%sFMT†sai “%sâ€" -#: eval.c:996 +#: eval.c:988 msgid "turning off `--lint' due to assignment to `LINT'" msgstr "Ä‘ang tắt “--lint†do việc gán cho “LINTâ€" -#: eval.c:1174 +#: eval.c:1166 #, c-format msgid "reference to uninitialized argument `%s'" msgstr "gặp tham chiếu đến đối số chÆ°a được khởi tạo “%sâ€" -#: eval.c:1175 +#: eval.c:1167 #, c-format msgid "reference to uninitialized variable `%s'" msgstr "gặp tham chiếu đến biến chÆ°a được khởi tạo “%sâ€" -#: eval.c:1193 +#: eval.c:1185 msgid "attempt to field reference from non-numeric value" msgstr "cố gắng tham chiếu trÆ°á»ng từ giá trị khác thuá»™c số" -#: eval.c:1195 +#: eval.c:1187 msgid "attempt to field reference from null string" msgstr "cố gắng tham chiếu trÆ°á»ng từ chuá»—i trống rá»—ng" -#: eval.c:1203 +#: eval.c:1195 #, c-format msgid "attempt to access field %ld" msgstr "cố gắng để truy cập trÆ°á»ng %ld" -#: eval.c:1212 +#: eval.c:1204 #, c-format msgid "reference to uninitialized field `$%ld'" msgstr "tham chiếu đến trÆ°á»ng chÆ°a được khởi tạo “$%ldâ€" -#: eval.c:1299 +#: eval.c:1291 #, c-format msgid "function `%s' called with more arguments than declared" msgstr "hàm “%s†được gá»i vá»›i nhiá»u số đối số hÆ¡n số được khai báo" -#: eval.c:1506 +#: eval.c:1498 #, c-format msgid "unwind_stack: unexpected type `%s'" msgstr "unwind_stack: không cần kiểu “%sâ€" -#: eval.c:1602 +#: eval.c:1594 msgid "division by zero attempted in `/='" msgstr "gặp phép chia cho số không trong “/=â€" -#: eval.c:1609 +#: eval.c:1601 #, c-format msgid "division by zero attempted in `%%='" msgstr "gặp phép chia cho số không trong “%%=â€" -#: ext.c:65 ext.c:147 +#: ext.c:66 ext.c:148 msgid "extensions are not allowed in sandbox mode" msgstr "phần mở rá»™ng không cho phép ở chế Ä‘á»™ khuôn đúc" -#: ext.c:68 +#: ext.c:69 msgid "-l / @load are gawk extensions" msgstr "-l / @load là má»™t phần mở rá»™ng gawk" -#: ext.c:71 +#: ext.c:72 msgid "load_ext: received NULL lib_name" msgstr "load_ext: nhận được NULL lib_name" -#: ext.c:74 +#: ext.c:75 #, c-format msgid "load_ext: cannot open library `%s' (%s)\n" msgstr "load_ext: không thể mở thÆ° viện “%s†(%s)\n" -#: ext.c:80 +#: ext.c:81 #, c-format msgid "" "load_ext: library `%s': does not define `plugin_is_GPL_compatible' (%s)\n" msgstr "" "load_ext: thÆ° viện “%sâ€: chÆ°a định nghÄ©a “plugin_is_GPL_compatible†(%s)\n" -#: ext.c:86 +#: ext.c:87 #, c-format msgid "load_ext: library `%s': cannot call function `%s' (%s)\n" msgstr "load_ext: thÆ° viện “%sâ€: không thể gá»i hàm “%s†(%s)\n" -#: ext.c:90 +#: ext.c:91 #, c-format msgid "load_ext: library `%s' initialization routine `%s' failed\n" msgstr "load_ext: thÆ° viện “%s†thủ tục khởi tạo “%s†gặp lá»—i\n" -#: ext.c:150 +#: ext.c:151 msgid "`extension' is a gawk extension" msgstr "“extension†là má»™t phần mở rá»™ng gawk" -#: ext.c:153 +#: ext.c:154 msgid "extension: received NULL lib_name" msgstr "extension: nhận được tên_thÆ°_viện NULL" -#: ext.c:156 +#: ext.c:157 #, c-format msgid "extension: cannot open library `%s' (%s)" msgstr "phần mở rá»™ng: không thể mở thÆ° viện “%s†(%s)" -#: ext.c:162 +#: ext.c:163 #, c-format msgid "" "extension: library `%s': does not define `plugin_is_GPL_compatible' (%s)" msgstr "" "phần mở rá»™ng: thÆ° viện “%sâ€: chÆ°a định nghÄ©a “plugin_is_GPL_compatible†(%s)" -#: ext.c:166 +#: ext.c:167 #, c-format msgid "extension: library `%s': cannot call function `%s' (%s)" msgstr "phần mở rá»™ng: thÆ° viện “%sâ€: không thể gá»i hàm “%s†(%s)" -#: ext.c:197 +#: ext.c:198 msgid "make_builtin: missing function name" msgstr "make_builtin: thiếu tên hàm" -#: ext.c:212 +#: ext.c:213 #, c-format msgid "make_builtin: can't redefine function `%s'" msgstr "make_builtin: không thể định nghÄ©a lại hàm “%sâ€" -#: ext.c:216 +#: ext.c:217 #, c-format msgid "make_builtin: function `%s' already defined" msgstr "make_builtin: hàm “%s†đã được định nghÄ©a rồi" -#: ext.c:220 +#: ext.c:221 #, c-format msgid "make_builtin: function name `%s' previously defined" msgstr "make_builtin: hàm “%s†đã được định nghÄ©a trÆ°á»›c đây rồi" -#: ext.c:222 +#: ext.c:223 #, c-format msgid "make_builtin: can't use gawk built-in `%s' as function name" msgstr "" "make_builtin: không thể sá»­ dụng “%s†nhÆ° là má»™t hàm được xây dá»±ng sẵn trong " "gawk" -#: ext.c:225 ext.c:280 +#: ext.c:226 ext.c:281 #, c-format msgid "make_builtin: negative argument count for function `%s'" msgstr "make_builtin: đối số dành cho số đếm bị âm cho hàm “%sâ€" -#: ext.c:252 +#: ext.c:253 msgid "extension: missing function name" msgstr "extension: (phần mở rá»™ng) tên hàm còn thiếu" -#: ext.c:255 ext.c:259 +#: ext.c:256 ext.c:260 #, c-format msgid "extension: illegal character `%c' in function name `%s'" msgstr "extension: (phần mở rá»™ng) gặp ký tá»± cấm “%c†nằm trong tên hàm “%sâ€" -#: ext.c:267 +#: ext.c:268 #, c-format msgid "extension: can't redefine function `%s'" msgstr "extension: (phần mở rá»™ng) không thể định nghÄ©a lại hàm “%sâ€" -#: ext.c:271 +#: ext.c:272 #, c-format msgid "extension: function `%s' already defined" msgstr "extension: (phần mở rá»™ng) hàm “%s†đã được định nghÄ©a" -#: ext.c:275 +#: ext.c:276 #, c-format msgid "extension: function name `%s' previously defined" msgstr "tên hàm “%s†đã được định nghÄ©a trÆ°á»›c đó" -#: ext.c:277 +#: ext.c:278 #, 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 Ä‘iá»u có sẵn của gawk “%s†nhÆ° là " "tên hàm" -#: ext.c:351 -#, c-format -msgid "function `%s' defined to take no more than %d argument(s)" -msgstr "hàm “%s†được định nghÄ©a để chấp nhận tối Ä‘a %d đối số" - -#: ext.c:354 -#, c-format -msgid "function `%s': missing argument #%d" -msgstr "hàm “%sâ€: thiếu đối số #%d" - -#: ext.c:371 +#: ext.c:358 #, c-format msgid "function `%s': argument #%d: attempt to use scalar as an array" msgstr "hàm “%sâ€: đối số thứ %d: cố gắng dùng kiểu vô hÆ°á»›ng nhÆ° là mảng" -#: ext.c:375 +#: ext.c:362 #, c-format msgid "function `%s': argument #%d: attempt to use array as a scalar" msgstr "hàm “%sâ€: đối số thứ %d: cố gắng dùng mảng nhÆ° là kiểu vô hÆ°á»›ng" -#: ext.c:389 +#: ext.c:376 msgid "dynamic loading of library not supported" msgstr "tải Ä‘á»™ng của thÆ° viện không được há»— trợ" -#: extension/filefuncs.c:159 +#: extension/filefuncs.c:164 msgid "chdir: called with incorrect number of arguments, expecting 1" msgstr "chdir: được gá»i vá»›i số lượng đối số không đúng, cần 1" -#: extension/filefuncs.c:439 +#: extension/filefuncs.c:444 #, c-format msgid "stat: unable to read symbolic link `%s'" msgstr "stat: không thể Ä‘á»c liên kết má»m “%sâ€" -#: extension/filefuncs.c:472 +#: extension/filefuncs.c:477 msgid "stat: called with wrong number of arguments" msgstr "stat: được gá»i vá»›i số lượng đối số không đúng" -#: extension/filefuncs.c:479 +#: extension/filefuncs.c:484 extension/filefuncs.c:534 msgid "stat: bad parameters" msgstr "stat: các đối số sai" -#: extension/filefuncs.c:533 +#: extension/filefuncs.c:527 +msgid "statvfs: called with wrong number of arguments" +msgstr "statvfs: được gá»i vá»›i số lượng đối số không đúng" + +#: extension/filefuncs.c:598 #, c-format msgid "fts init: could not create variable %s" msgstr "khởi tạo fts: không thể tạo biến %s" -#: extension/filefuncs.c:554 +#: extension/filefuncs.c:619 msgid "fts is not supported on this system" msgstr "fts không được há»— trợ trên hệ thống này" -#: extension/filefuncs.c:573 +#: extension/filefuncs.c:638 msgid "fill_stat_element: could not create array" msgstr "fill_stat_element: không thể tạo mảng" -#: extension/filefuncs.c:582 +#: extension/filefuncs.c:647 msgid "fill_stat_element: could not set element" msgstr "fill_stat_element: không thể đặt phần tá»­" -#: extension/filefuncs.c:597 +#: extension/filefuncs.c:662 msgid "fill_path_element: could not set element" msgstr "fill_path_element: không thể đặt phần tá»­" -#: extension/filefuncs.c:613 +#: extension/filefuncs.c:678 msgid "fill_error_element: could not set element" msgstr "fill_error_element: không thể đặt phần tá»­" -#: extension/filefuncs.c:660 extension/filefuncs.c:707 +#: extension/filefuncs.c:725 extension/filefuncs.c:772 msgid "fts-process: could not create array" msgstr "fts-process: không thể tạo mảng" -#: extension/filefuncs.c:670 extension/filefuncs.c:717 -#: extension/filefuncs.c:735 +#: extension/filefuncs.c:735 extension/filefuncs.c:782 +#: extension/filefuncs.c:800 msgid "fts-process: could not set element" msgstr "fts-process: không thể đặt phần tá»­" -#: extension/filefuncs.c:784 +#: extension/filefuncs.c:849 msgid "fts: called with incorrect number of arguments, expecting 3" msgstr "fts: được gá»i vá»›i số lượng đối số không đúng, cần 3" -#: extension/filefuncs.c:787 +#: extension/filefuncs.c:852 msgid "fts: bad first parameter" msgstr "fts: đối số đầu tiên sai" -#: extension/filefuncs.c:793 +#: extension/filefuncs.c:858 msgid "fts: bad second parameter" msgstr "fts: đối số thứ hai sai" -#: extension/filefuncs.c:799 +#: extension/filefuncs.c:864 msgid "fts: bad third parameter" msgstr "fts: đối số thứ ba sai" -#: extension/filefuncs.c:806 +#: extension/filefuncs.c:871 msgid "fts: could not flatten array\n" msgstr "fts: không thể làm phẳng mảng\n" -#: extension/filefuncs.c:824 +#: extension/filefuncs.c:889 msgid "fts: ignoring sneaky FTS_NOSTAT flag. nyah, nyah, nyah." msgstr "fts: bá» qua cá» FTS_NOSTAT vụng trá»™m. nyah, nyah, nyah." -#: extension/filefuncs.c:841 +#: extension/filefuncs.c:906 msgid "fts: clear_array() failed\n" msgstr "fts: clear_array() gặp lá»—i\n" @@ -2284,88 +2302,88 @@ msgstr "wait: được gá»i mà không truyá»n đối số" msgid "wait: called with too many arguments" msgstr "wait: được gá»i vá»›i quá nhiá»u đối số" -#: extension/inplace.c:130 +#: extension/inplace.c:131 msgid "inplace_begin: in-place editing already active" msgstr "inplace_begin: sá»­a in-place đã sẵn được kích hoạt rồi" -#: extension/inplace.c:133 extension/inplace.c:210 +#: extension/inplace.c:134 extension/inplace.c:211 #, c-format msgid "inplace_begin: expects 2 arguments but called with %d" msgstr "inplace_begin: cần 2 đối số nhÆ° lại được gá»i vá»›i %d" -#: extension/inplace.c:136 +#: extension/inplace.c:137 msgid "inplace_begin: cannot retrieve 1st argument as a string filename" msgstr "inplace_begin: không thể lấy đối số thứ nhất nhÆ° là tên tập tin" -#: extension/inplace.c:144 +#: extension/inplace.c:145 #, c-format msgid "inplace_begin: disabling in-place editing for invalid FILENAME `%s'" msgstr "inplace_begin: tắt sá»­a chữa in-place cho TÊN_TẬP_TIN không hợp lệ “%sâ€" -#: extension/inplace.c:151 +#: extension/inplace.c:152 #, c-format msgid "inplace_begin: Cannot stat `%s' (%s)" msgstr "inplace_begin: Không thể lấy thông tin thống kê của “%s†(%s)" -#: extension/inplace.c:158 +#: extension/inplace.c:159 #, c-format msgid "inplace_begin: `%s' is not a regular file" msgstr "inplace_begin: “%s†không phải là tập tin thÆ°á»ng" -#: extension/inplace.c:169 +#: extension/inplace.c:170 #, c-format msgid "inplace_begin: mkstemp(`%s') failed (%s)" msgstr "inplace_begin: mkstemp(“%sâ€) gặp lá»—i (%s)" -#: extension/inplace.c:181 +#: extension/inplace.c:182 #, c-format msgid "inplace_begin: chmod failed (%s)" msgstr "inplace_begin: chmod gặp lá»—i (%s)" -#: extension/inplace.c:188 +#: extension/inplace.c:189 #, c-format msgid "inplace_begin: dup(stdout) failed (%s)" msgstr "inplace_begin: dup(stdout) gặp lá»—i (%s)" -#: extension/inplace.c:191 +#: extension/inplace.c:192 #, c-format msgid "inplace_begin: dup2(%d, stdout) failed (%s)" msgstr "inplace_begin: dup2(%d, stdout) gặp lá»—i (%s)" -#: extension/inplace.c:194 +#: extension/inplace.c:195 #, c-format msgid "inplace_begin: close(%d) failed (%s)" msgstr "inplace_begin: close(%d) gặp lá»—i (%s)" -#: extension/inplace.c:213 +#: extension/inplace.c:214 msgid "inplace_end: cannot retrieve 1st argument as a string filename" msgstr "inplace_end: không thể lấy lại đối số thứ nhất nhÆ° là má»™t tên tập tin" -#: extension/inplace.c:220 +#: extension/inplace.c:221 msgid "inplace_end: in-place editing not active" msgstr "inplace_end: việc sá»­a in-place không được kích hoạt" -#: extension/inplace.c:226 +#: extension/inplace.c:227 #, c-format msgid "inplace_end: dup2(%d, stdout) failed (%s)" msgstr "inplace_end: dup2(%d, stdout) gặp lá»—i (%s)" -#: extension/inplace.c:229 +#: extension/inplace.c:230 #, c-format msgid "inplace_end: close(%d) failed (%s)" msgstr "inplace_end: close(%d) gặp lá»—i (%s)" -#: extension/inplace.c:233 +#: extension/inplace.c:234 #, c-format msgid "inplace_end: fsetpos(stdout) failed (%s)" msgstr "inplace_end: fsetpos(stdout) gặp lá»—i (%s)" -#: extension/inplace.c:246 +#: extension/inplace.c:247 #, c-format msgid "inplace_end: link(`%s', `%s') failed (%s)" msgstr "inplace_end: link(“%sâ€, “%sâ€) gặp lá»—i (%s)" -#: extension/inplace.c:256 +#: extension/inplace.c:257 #, c-format msgid "inplace_end: rename(`%s', `%s') failed (%s)" msgstr "inplace_end: rename(“%sâ€, “%sâ€) gặp lá»—i (%s)" @@ -2394,7 +2412,7 @@ msgstr "chr: được gá»i mà không có đối số" msgid "chr: called with inappropriate argument(s)" msgstr "chr: được gá»i vá»›i đối số không thích hợp" -#: extension/readdir.c:281 +#: extension/readdir.c:271 #, c-format msgid "dir_take_control_of: opendir/fdopendir failed: %s" msgstr "dir_take_control_of: opendir/fdopendir gặp lá»—i: %s" @@ -2407,54 +2425,54 @@ msgstr "readfile: được gá»i vá»›i quá nhiá»u đối số" msgid "readfile: called with no arguments" msgstr "readfile: được gá»i mà không có đối số" -#: extension/revoutput.c:125 +#: extension/revoutput.c:127 msgid "revoutput: could not initialize REVOUT variable" msgstr "revoutput: không thể khởi tạo biến REVOUT" -#: extension/rwarray.c:124 extension/rwarray0.c:109 +#: extension/rwarray.c:113 extension/rwarray0.c:109 msgid "writea: called with too many arguments" msgstr "writea: được gá»i vá»›i quá nhiá»u đối số" -#: extension/rwarray.c:131 extension/rwarray0.c:116 +#: extension/rwarray.c:120 extension/rwarray0.c:116 #, c-format msgid "do_writea: argument 0 is not a string\n" msgstr "do_writea: đối số 0 không phải là má»™t chuá»—i\n" -#: extension/rwarray.c:137 extension/rwarray0.c:122 +#: extension/rwarray.c:126 extension/rwarray0.c:122 #, c-format msgid "do_writea: argument 1 is not an array\n" msgstr "do_writea: đối số 1 không phải là má»™t mảng\n" -#: extension/rwarray.c:184 extension/rwarray0.c:169 +#: extension/rwarray.c:173 extension/rwarray0.c:169 #, c-format msgid "write_array: could not flatten array\n" msgstr "write_array: không thể làm phẳng mảng\n" -#: extension/rwarray.c:198 extension/rwarray0.c:183 +#: extension/rwarray.c:187 extension/rwarray0.c:183 #, c-format msgid "write_array: could not release flattened array\n" msgstr "write_array: không thể giải phóng mảng được làm phẳng\n" -#: extension/rwarray.c:280 extension/rwarray0.c:265 +#: extension/rwarray.c:269 extension/rwarray0.c:265 msgid "reada: called with too many arguments" msgstr "reada: được gá»i vá»›i quá nhiá»u đối số" -#: extension/rwarray.c:287 extension/rwarray0.c:272 +#: extension/rwarray.c:276 extension/rwarray0.c:272 #, c-format msgid "do_reada: argument 0 is not a string\n" msgstr "do_reada: đối số 0 không phải là má»™t chuá»—i\n" -#: extension/rwarray.c:293 extension/rwarray0.c:278 +#: extension/rwarray.c:282 extension/rwarray0.c:278 #, c-format msgid "do_reada: argument 1 is not an array\n" msgstr "do_reada: đối số 1 không phải là má»™t mảng\n" -#: extension/rwarray.c:337 extension/rwarray0.c:322 +#: extension/rwarray.c:326 extension/rwarray0.c:322 #, c-format msgid "do_reada: clear_array failed\n" msgstr "do_reada: clear_array gặp lá»—i\n" -#: extension/rwarray.c:374 extension/rwarray0.c:358 +#: extension/rwarray.c:363 extension/rwarray0.c:358 #, c-format msgid "read_array: set_array_element failed\n" msgstr "read_array: set_array_element gặp lá»—i\n" @@ -2569,7 +2587,7 @@ msgstr "chuá»—i vô giá trị cho “FS†là phần mở rá»™ng gawk" msgid "old awk does not support regexps as value of `FS'" msgstr "awk cÅ© không há»— trợ biểu thức chính quy làm giá trị của “FSâ€" -#: field.c:1380 +#: field.c:1384 msgid "`FPAT' is a gawk extension" msgstr "“FPAT†là phần mở rá»™ng của gawk" @@ -2577,28 +2595,28 @@ msgstr "“FPAT†là phần mở rá»™ng của gawk" msgid "awk_value_to_node: received null retval" msgstr "awk_value_to_node: retval nhận được là null" -#: gawkapi.c:384 +#: gawkapi.c:383 msgid "node_to_awk_value: received null node" msgstr "node_to_awk_value: nút nhận được là null" -#: gawkapi.c:387 +#: gawkapi.c:386 msgid "node_to_awk_value: received null val" msgstr "node_to_awk_value: biến nhận được là null" -#: gawkapi.c:809 +#: gawkapi.c:808 msgid "remove_element: received null array" msgstr "remove_element: mảng nhận được là null" -#: gawkapi.c:812 +#: gawkapi.c:811 msgid "remove_element: received null subscript" msgstr "remove_element: nhận được là null" -#: gawkapi.c:949 +#: gawkapi.c:948 #, c-format msgid "api_flatten_array: could not convert index %d\n" msgstr "api_flatten_array: không thể chuyển đổi chỉ số %d\n" -#: gawkapi.c:954 +#: gawkapi.c:953 #, c-format msgid "api_flatten_array: could not convert value %d\n" msgstr "api_flatten_array: không thể chuyển đổi giá trị %d\n" @@ -2658,295 +2676,299 @@ msgstr "%s: tùy chá»n “-W %s†không cho phép đối số\n" msgid "%s: option '-W %s' requires an argument\n" msgstr "%s: tùy chá»n “-W %s†yêu cầu má»™t đối số\n" -#: io.c:423 +#: io.c:426 #, c-format msgid "command line argument `%s' is a directory: skipped" msgstr "tham số dòng lệnh “%s†là má»™t thÆ° mục: đã bị bá» qua" -#: io.c:426 io.c:544 +#: io.c:429 io.c:547 #, c-format msgid "cannot open file `%s' for reading (%s)" msgstr "không mở được tập tin “%s†để Ä‘á»c (%s)" -#: io.c:671 +#: io.c:674 #, c-format msgid "close of fd %d (`%s') failed (%s)" msgstr "lá»—i đóng fd %d (“%sâ€) (%s)" -#: io.c:749 +#: io.c:752 msgid "redirection not allowed in sandbox mode" msgstr "chuyển hÆ°á»›ng không cho phép ở chế Ä‘á»™ khuôn đúc" -#: io.c:783 +#: io.c:786 #, 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:789 +#: io.c:792 #, 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:794 +#: io.c:797 #, 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:842 +#: io.c:845 #, c-format msgid "unnecessary mixing of `>' and `>>' for file `%.*s'" msgstr "không cần hợp “>†và “>>†cho tập tin “%.*sâ€" -#: io.c:896 +#: io.c:902 #, c-format msgid "can't open pipe `%s' for output (%s)" msgstr "không thể mở ống dẫn “%s†để xuất (%s)" -#: io.c:906 +#: io.c:915 #, c-format msgid "can't open pipe `%s' for input (%s)" msgstr "không thể mở ống dẫn “%s†để nhập (%s)" -#: io.c:937 +#: io.c:946 #, c-format msgid "can't open two way pipe `%s' for input/output (%s)" msgstr "không thể mở ống dẫn hai chiá»u “%s†để nhập/xuất (%s)" -#: io.c:1019 +#: io.c:1030 #, c-format msgid "can't redirect from `%s' (%s)" msgstr "không thể chuyển hÆ°á»›ng từ “%s†(%s)" -#: io.c:1022 +#: io.c:1033 #, c-format msgid "can't redirect to `%s' (%s)" msgstr "không thể chuyển hÆ°á»›ng đến “%s†(%s)" -#: io.c:1073 +#: io.c:1084 msgid "" "reached system limit for open files: starting to multiplex file descriptors" msgstr "" "đã tá»›i giá»›i hạn hệ thống vá» tập tin được mở nên bắt đầu phối hợp nhiá»u dòng " "Ä‘iá»u mô tả tập tin" -#: io.c:1089 +#: io.c:1100 #, c-format msgid "close of `%s' failed (%s)." msgstr "lá»—i đóng “%s†(%s)" -#: io.c:1097 +#: io.c:1108 msgid "too many pipes or input files open" msgstr "quá nhiá»u ống dẫn hay tập tin nhập được mở" -#: io.c:1119 +#: io.c:1130 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:1136 +#: io.c:1147 #, c-format msgid "close: `%.*s' is not an open file, pipe or co-process" msgstr "" "close: (đóng) “%.*s†không phải là tập tin, ống dẫn hay đồng tiến trình đã " "được mở" -#: io.c:1141 +#: io.c:1152 msgid "close of redirection that was never opened" msgstr "đóng má»™t chuyển hÆ°á»›ng mà nó chÆ°a từng được mở" -#: io.c:1238 +#: io.c:1249 #, c-format msgid "close: redirection `%s' not opened with `|&', second argument ignored" msgstr "" "close: chuyển hÆ°á»›ng “%s†không được mở bởi “|&†nên đối số thứ hai bị bá» qua" -#: io.c:1255 +#: io.c:1266 #, 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:1258 +#: io.c:1269 #, 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:1278 +#: io.c:1289 #, c-format msgid "no explicit close of socket `%s' provided" msgstr "không cung cấp lệnh đóng ổ cắm “%s†rõ ràng" -#: io.c:1281 +#: io.c:1292 #, c-format msgid "no explicit close of co-process `%s' provided" msgstr "không cung cấp lệnh đóng đồng tiến trình “%s†rõ ràng" -#: io.c:1284 +#: io.c:1295 #, c-format msgid "no explicit close of pipe `%s' provided" msgstr "không cung cấp lệnh đóng Ä‘Æ°á»ng ống dẫn lệnh “%s†rõ ràng" -#: io.c:1287 +#: io.c:1298 #, c-format msgid "no explicit close of file `%s' provided" msgstr "không cung cấp lệnh đóng tập tin “%s†rõ ràng" -#: io.c:1317 io.c:1375 main.c:632 main.c:674 +#: io.c:1328 io.c:1387 main.c:645 main.c:687 #, c-format msgid "error writing standard output (%s)" msgstr "gặp lá»—i khi ghi đầu ra tiêu chuẩn (%s)" -#: io.c:1322 io.c:1381 main.c:634 +#: io.c:1333 io.c:1393 main.c:647 #, 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:1330 +#: io.c:1341 #, c-format msgid "pipe flush of `%s' failed (%s)." msgstr "lá»—i xóa sạch ống dẫn “%s†(%s)" -#: io.c:1333 +#: io.c:1344 #, c-format msgid "co-process flush of pipe to `%s' failed (%s)." msgstr "lá»—i xóa sạch ống dẫn đồng tiến trình đến “%s†(%s)" -#: io.c:1336 +#: io.c:1347 #, c-format msgid "file flush of `%s' failed (%s)." msgstr "lá»—i xóa sạch tập tin “%s†(%s)" -#: io.c:1453 +#: io.c:1465 #, c-format msgid "local port %s invalid in `/inet'" msgstr "cổng cục bá»™ %s không hợp lệ trong “/inetâ€" -#: io.c:1471 +#: io.c:1483 #, c-format msgid "remote host and port information (%s, %s) invalid" msgstr "thông tin vá» máy/cổng ở xa (%s, %s) không phải hợp lệ" -#: io.c:1699 +#: io.c:1711 msgid "TCP/IP communications are not supported" msgstr "truyá»n thông TCP/IP không được há»— trợ" -#: io.c:1880 +#: io.c:1905 #, c-format msgid "could not open `%s', mode `%s'" msgstr "không mở được “%sâ€, chế Ä‘á»™ “%sâ€" -#: io.c:1930 +#: io.c:1961 #, c-format msgid "close of master pty failed (%s)" msgstr "gặp lá»—i khi đóng thiết bị cuối giả (%s)" -#: io.c:1932 io.c:2118 io.c:2319 +#: io.c:1963 io.c:2141 io.c:2342 #, c-format msgid "close of stdout in child failed (%s)" msgstr "lá»—i đóng đầu ra tiêu chuẩn trong tiến trình con (%s)" -#: io.c:1935 +#: io.c:1966 #, c-format msgid "moving slave pty to stdout in child failed (dup: %s)" msgstr "" "gặp lá»—i khi di chuyển pty (thiết bị cuối giả) phụ thuá»™c đến thiết bị đầu ra " "tiêu chuẩn trong con (trùng: %s)" -#: io.c:1937 io.c:2123 +#: io.c:1968 io.c:2146 #, c-format msgid "close of stdin in child failed (%s)" msgstr "lá»—i đóng thiết bị nhập chuẩn trong tiến trình con (%s)" -#: io.c:1940 +#: io.c:1971 #, c-format msgid "moving slave pty to stdin in child failed (dup: %s)" msgstr "" "lá»—i di chuyển pty (thiết bị cuối giả) phụ tá»›i thiết bị nhập chuẩn trong Ä‘iá»u " "con (nhân đôi: %s)" -#: io.c:1942 io.c:1964 +#: io.c:1973 #, c-format msgid "close of slave pty failed (%s)" msgstr "đóng pty (thiết bị cuối giả) phụ thuá»™c gặp lá»—i (%s)" -#: io.c:2053 io.c:2121 io.c:2290 io.c:2322 +#: io.c:2076 io.c:2144 io.c:2313 io.c:2345 #, c-format msgid "moving pipe to stdout in child failed (dup: %s)" msgstr "" "lá»—i di chuyển ống dẫn đến thiết bị xuất chuẩn trong tiến trình con (trùng: " "%s)" -#: io.c:2060 io.c:2126 +#: io.c:2083 io.c:2149 #, c-format msgid "moving pipe to stdin in child failed (dup: %s)" msgstr "" "lá»—i di chuyển ống dẫn đến thiết bị nhập chuẩn trong tiến trình con (trùng: " "%s)" -#: io.c:2086 io.c:2312 +#: io.c:2109 io.c:2335 msgid "restoring stdout in parent process failed\n" msgstr "phục hồi đầu ra tiêu chuẩn trong tiến trình mẹ gặp lá»—i\n" -#: io.c:2094 +#: io.c:2117 msgid "restoring stdin in parent process failed\n" msgstr "phục hồi đầu vào tiêu chuẩn trong tiến trình mẹ gặp lá»—i\n" -#: io.c:2129 io.c:2324 io.c:2339 +#: io.c:2152 io.c:2347 io.c:2362 #, c-format msgid "close of pipe failed (%s)" msgstr "đóng ống dẫn gặp lá»—i (%s)" -#: io.c:2188 +#: io.c:2211 msgid "`|&' not supported" msgstr "“|&†không được há»— trợ" -#: io.c:2275 +#: io.c:2298 #, c-format msgid "cannot open pipe `%s' (%s)" msgstr "không thể mở ống dẫn “%s†(%s)" -#: io.c:2333 +#: io.c:2356 #, c-format msgid "cannot create child process for `%s' (fork: %s)" msgstr "không thể tạo tiến trình con cho “%s†(fork: %s)" -#: io.c:2760 +#: io.c:2493 +msgid "getline: attempt to read from closed read end of two-way pipe" +msgstr "getline: cố ghi vào má»™t Ä‘Æ°á»ng ống hai chiá»u mà chiá»u ghi đã đóng" + +#: io.c:2795 msgid "register_input_parser: received NULL pointer" msgstr "register_input_parser: nhận được con trá» NULL" -#: io.c:2788 +#: io.c:2823 #, c-format msgid "input parser `%s' conflicts with previously installed input parser `%s'" msgstr "" "bá»™ phân tích đầu vào “%s†xung Ä‘á»™t vá»›i bá»™ phân tích đầu vào được cài đặt " "trÆ°á»›c đó “%sâ€" -#: io.c:2795 +#: io.c:2830 #, c-format msgid "input parser `%s' failed to open `%s'" msgstr "bá»™ phân tích đầu vào “%s†gặp lá»—i khi mở “%sâ€" -#: io.c:2815 +#: io.c:2850 msgid "register_output_wrapper: received NULL pointer" msgstr "register_output_wrapper: nhận được con trá» NULL" -#: io.c:2843 +#: io.c:2878 #, c-format msgid "" "output wrapper `%s' conflicts with previously installed output wrapper `%s'" msgstr "" "bá»™ bao kết xuất “%s†xung Ä‘á»™t vá»›i bá»™ bao kết xuất được cài đặt trÆ°á»›c đó “%sâ€" -#: io.c:2850 +#: io.c:2885 #, c-format msgid "output wrapper `%s' failed to open `%s'" msgstr "bá»™ bao kết xuất “%s†gặp lá»—i khi mở “%sâ€" -#: io.c:2871 +#: io.c:2906 msgid "register_output_processor: received NULL pointer" msgstr "register_output_processor: nhận được con trá» NULL" -#: io.c:2900 +#: io.c:2935 #, c-format msgid "" "two-way processor `%s' conflicts with previously installed two-way processor " @@ -2955,206 +2977,209 @@ msgstr "" "bá»™ xá»­ lý hai hÆ°á»›ng “%s†xung Ä‘á»™t vá»›i bá»™ xá»­ lý hai hÆ°á»›ng đã được cài đặt " "trÆ°á»›c đó “%sâ€" -#: io.c:2909 +#: io.c:2944 #, c-format msgid "two way processor `%s' failed to open `%s'" msgstr "bá»™ xá»­ lý hai hÆ°á»›ng “%s†gặp lá»—i khi mở “%sâ€" -#: io.c:3034 +#: io.c:3069 #, c-format msgid "data file `%s' is empty" msgstr "tập tin dữ liệu “%s†là rá»—ng" -#: io.c:3076 io.c:3084 +#: io.c:3111 io.c:3119 msgid "could not allocate more input memory" msgstr "không thể cấp phát bá»™ nhá»› nhập thêm nữa" -#: io.c:3662 +#: io.c:3697 msgid "multicharacter value of `RS' is a gawk extension" msgstr "giá trị Ä‘a ký tá»± của “RS†là phần mở rá»™ng gawk" -#: io.c:3809 +#: io.c:3844 msgid "IPv6 communication is not supported" msgstr "Truyá»n thông trên IPv6 không được há»— trợ" -#: main.c:321 +#: main.c:334 msgid "environment variable `POSIXLY_CORRECT' set: turning on `--posix'" msgstr "" "biến môi trÆ°á»ng “POSIXLY_CORRECT†(đúng kiểu POSIX) đã được đặt; Ä‘ang bật " "tùy chá»n “--posixâ€" -#: main.c:327 +#: main.c:340 msgid "`--posix' overrides `--traditional'" msgstr "tùy chá»n “--posix†có quyá»n cao hÆ¡n “--traditional†(truyá»n thống)" -#: main.c:338 +#: main.c:351 msgid "`--posix'/`--traditional' overrides `--non-decimal-data'" msgstr "" "“--posixâ€/“--traditional†(cổ Ä‘iển) có quyá»n cao hÆ¡n “--non-decimal-" "data†(dữ liệu khác thập phân)" -#: main.c:342 +#: main.c:355 #, c-format msgid "running %s setuid root may be a security problem" msgstr "việc chạy %s vá»›i tÆ° cách “setuid root†có thể rủi rá» bảo mật" -#: main.c:346 +#: main.c:359 msgid "`--posix' overrides `--characters-as-bytes'" msgstr "“--posix†đè lên “--characters-as-bytesâ€" -#: main.c:404 +#: main.c:417 #, c-format msgid "can't set binary mode on stdin (%s)" msgstr "không thể đặt chế Ä‘á»™ nhị phân trên đầu vào tiêu chuẩn (%s)" -#: main.c:407 +#: main.c:420 #, c-format msgid "can't set binary mode on stdout (%s)" msgstr "không thể đặt chế Ä‘á»™ nhị phân trên đầu ra tiêu chuẩn (%s)" -#: main.c:409 +#: main.c:422 #, c-format msgid "can't set binary mode on stderr (%s)" msgstr "không thể đặt chế Ä‘á»™ nhị phân trên đầu ra lá»—i tiêu chuẩn (%s)" -#: main.c:469 +#: main.c:482 msgid "no program text at all!" msgstr "không có Ä‘oạn chữ chÆ°Æ¡ng trình nào cả!" -#: main.c:563 +#: main.c:576 #, c-format msgid "Usage: %s [POSIX or GNU style options] -f progfile [--] file ...\n" msgstr "" "Cách 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:565 +#: main.c:578 #, c-format msgid "Usage: %s [POSIX or GNU style options] [--] %cprogram%c file ...\n" msgstr "" "Cách dùng: %s [tùy chá»n kiểu POSIX hay GNU] [--] %cchÆ°Æ¡ng_trình%c tập_tin …\n" -#: main.c:570 +#: main.c:583 msgid "POSIX options:\t\tGNU long options: (standard)\n" msgstr "Tùy chá»n POSIX:\t\t\tTùy chá»n dài GNU: (tiêu chuẩn)\n" -#: main.c:571 +#: main.c:584 msgid "\t-f progfile\t\t--file=progfile\n" msgstr "\t-f tập_tin_chÆ°Æ¡ng_trình\t--file=tập_tin_chÆ°Æ¡ng_trình\n" -#: main.c:572 +#: main.c:585 msgid "\t-F fs\t\t\t--field-separator=fs\n" msgstr "\t-F fs\t\t\t--field-separator=ký_hiệu_phân_cách_trÆ°á»ng\n" -#: main.c:573 +#: main.c:586 msgid "\t-v var=val\t\t--assign=var=val\n" msgstr "" "\t-v var=giá_trị\t\t--assign=biến=giá_trị\n" "(assign: gán)\n" -#: main.c:574 +#: main.c:587 msgid "Short options:\t\tGNU long options: (extensions)\n" msgstr "Tùy chá»n ngắn:\t\t\tTùy chá»n GNU dạng dài: (mở rá»™ng)\n" -#: main.c:575 +#: main.c:588 msgid "\t-b\t\t\t--characters-as-bytes\n" msgstr "\t-b\t\t\t--characters-as-bytes\n" -#: main.c:576 +#: main.c:589 msgid "\t-c\t\t\t--traditional\n" msgstr "\t-c\t\t\t--traditional\n" -#: main.c:577 +#: main.c:590 msgid "\t-C\t\t\t--copyright\n" msgstr "\t-C\t\t\t--copyright\n" -#: main.c:578 +#: main.c:591 msgid "\t-d[file]\t\t--dump-variables[=file]\n" msgstr "\t-d[tập_tin]\t\t--dump-variables[=tập_tin]\n" -#: main.c:579 +#: main.c:592 msgid "\t-D[file]\t\t--debug[=file]\n" msgstr "\t-D[tập_tin]\t\t--debug[=tập_tin]\n" -#: main.c:580 +#: main.c:593 msgid "\t-e 'program-text'\t--source='program-text'\n" msgstr "\t-e “program-textâ€\t--source=“program-textâ€\n" -#: main.c:581 +#: main.c:594 msgid "\t-E file\t\t\t--exec=file\n" msgstr "\t-E file\t\t\t--exec=tập_tin\n" -#: main.c:582 +#: main.c:595 msgid "\t-g\t\t\t--gen-pot\n" msgstr "\t-g\t\t\t--gen-pot\n" -#: main.c:583 +#: main.c:596 msgid "\t-h\t\t\t--help\n" msgstr "\t-h\t\t\t--help\n" -#: main.c:584 +#: main.c:597 msgid "\t-i includefile\t\t--include=includefile\n" msgstr "\t-i includefile\t\t--include=tập-tin-bao-gồm\n" -#: main.c:585 +#: main.c:598 msgid "\t-l library\t\t--load=library\n" msgstr "\t-l library\t\t--load=thÆ°-viện\n" -#: main.c:590 +#. TRANSLATORS: the "fatal" and "invalid" here are literal +#. values, they should not be translated. Thanks. +#. +#: main.c:603 msgid "\t-L[fatal|invalid]\t--lint[=fatal|invalid]\n" msgstr "\t-L [fatal|invalid]\t--lint[=fatal|invalid]\n" -#: main.c:591 +#: main.c:604 msgid "\t-M\t\t\t--bignum\n" msgstr "\t-M\t\t\t--bignum\n" -#: main.c:592 +#: main.c:605 msgid "\t-N\t\t\t--use-lc-numeric\n" msgstr "\t-N\t\t\t--use-lc-numeric\n" -#: main.c:593 +#: main.c:606 msgid "\t-n\t\t\t--non-decimal-data\n" msgstr "\t-n\t\t\t--non-decimal-data\n" -#: main.c:594 +#: main.c:607 msgid "\t-o[file]\t\t--pretty-print[=file]\n" msgstr "\t-o[tập_tin]\t\t--pretty-print[=tập_tin]\n" -#: main.c:595 +#: main.c:608 msgid "\t-O\t\t\t--optimize\n" msgstr "\t-O\t\t\t--optimize (tối_Æ°u_hóa)\n" -#: main.c:596 +#: main.c:609 msgid "\t-p[file]\t\t--profile[=file]\n" msgstr "\t-p[tập_tin]\t\t--profile[=tập_tin]\n" -#: main.c:597 +#: main.c:610 msgid "\t-P\t\t\t--posix\n" msgstr "\t-P\t\t\t--posix\n" -#: main.c:598 +#: main.c:611 msgid "\t-r\t\t\t--re-interval\n" msgstr "\t-r\t\t\t--re-interval\n" -#: main.c:599 +#: main.c:612 msgid "\t-S\t\t\t--sandbox\n" msgstr "\t-S\t\t\t--sandbox\n" -#: main.c:600 +#: main.c:613 msgid "\t-t\t\t\t--lint-old\n" msgstr "\t-t\t\t\t--lint-old\n" -#: main.c:601 +#: main.c:614 msgid "\t-V\t\t\t--version\n" msgstr "\t-V\t\t\t--version\n" -#: main.c:603 +#: main.c:616 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:606 +#: main.c:619 msgid "\t-Y\t\t--parsedebug\n" msgstr "\t-Y\t\t--parsedebug\n" @@ -3163,7 +3188,7 @@ msgstr "\t-Y\t\t--parsedebug\n" #. for this application. Please add _another line_ with the #. address for translation bugs. #. no-wrap -#: main.c:615 +#: main.c:628 msgid "" "\n" "To report bugs, see node `Bugs' in `gawk.info', which is\n" @@ -3177,7 +3202,7 @@ msgstr "" "Thông báo lá»—i dịch cho: .\n" "\n" -#: main.c:619 +#: main.c:632 msgid "" "gawk is a pattern scanning and processing language.\n" "By default it reads standard input and writes standard output.\n" @@ -3187,7 +3212,7 @@ msgstr "" "Mặc định, nó Ä‘á»c từ đầu vào tiêu chuẩn và ghi ra đầu ra tiêu chuẩn.\n" "\n" -#: main.c:623 +#: main.c:636 msgid "" "Examples:\n" "\tgawk '{ sum += $1 }; END { print sum }' file\n" @@ -3197,7 +3222,7 @@ msgstr "" "\tgawk \"{ sum += $1 }; END { print sum }\" tập_tin\n" "\tgawk -F: \"{ print $1 }\" /etc/passwd\n" -#: main.c:648 +#: main.c:661 #, c-format msgid "" "Copyright (C) 1989, 1991-%d Free Software Foundation.\n" @@ -3216,7 +3241,7 @@ msgstr "" "của Giấy Phép này, hoặc là (tùy chá»n) bất kỳ phiên bản má»›i hÆ¡n.\n" "\n" -#: main.c:656 +#: main.c:669 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" @@ -3230,7 +3255,7 @@ msgstr "" "Hãy xem Giấy phép Công Chung GNU (GPL) để biết chi tiết.\n" "\n" -#: main.c:662 +#: main.c:675 msgid "" "You should have received a copy of the GNU General Public License\n" "along with this program. If not, see http://www.gnu.org/licenses/.\n" @@ -3238,16 +3263,16 @@ msgstr "" "Bạn nên nhận má»™t bản sao của Giấy Phép Công Cá»™ng GNU cùng vá»›i chÆ°Æ¡ng\n" "trình này. Nếu chÆ°a có, bạn xem tại .\n" -#: main.c:699 +#: main.c:712 msgid "-Ft does not set FS to tab in POSIX awk" msgstr "-Ft không đặt FS (hệ thống tập tin?) vào tab trong awk POSIX" -#: main.c:986 +#: main.c:999 #, c-format msgid "unknown value for field spec: %d\n" msgstr "không hiểu giá trị dành cho đặc tả trÆ°á»ng: %d\n" -#: main.c:1084 +#: main.c:1097 #, c-format msgid "" "%s: `%s' argument to `-v' not in `var=value' form\n" @@ -3256,116 +3281,116 @@ msgstr "" "%s: đối số “%s†cho “-v†không có dạng “biến=giá_trịâ€\n" "\n" -#: main.c:1110 +#: main.c:1123 #, c-format msgid "`%s' is not a legal variable name" msgstr "“%s†không phải là tên biến hợp lệ" -#: main.c:1113 +#: main.c:1126 #, c-format msgid "`%s' is not a variable name, looking for file `%s=%s'" msgstr "“%s†không phải là tên biến; Ä‘ang tìm tập tin “%s=%sâ€" -#: main.c:1117 +#: main.c:1130 #, c-format msgid "cannot use gawk builtin `%s' as variable name" msgstr "không thể dùng builtin (dá»±ng sẵn) của gawk “%s†nhÆ° là tên biến" -#: main.c:1122 +#: main.c:1135 #, c-format msgid "cannot use function `%s' as variable name" msgstr "không thể dùng hàm “%s†nhÆ° là tên biến" -#: main.c:1175 +#: main.c:1190 msgid "floating point exception" msgstr "ngoại lệ số thá»±c dấu chấm Ä‘á»™ng" -#: main.c:1182 +#: main.c:1197 msgid "fatal error: internal error" msgstr "lá»—i nghiêm trá»ng: lá»—i ná»™i bá»™" -#: main.c:1197 +#: main.c:1212 msgid "fatal error: internal error: segfault" msgstr "lá»—i nghiêm trá»ng: lá»—i ná»™i bá»™: lá»—i phân Ä‘oạn" -#: main.c:1209 +#: main.c:1224 msgid "fatal error: internal error: stack overflow" msgstr "lá»—i nghiêm trá»ng: lá»—i ná»™i bá»™: tràn ngăn xếp" -#: main.c:1268 +#: main.c:1283 #, c-format msgid "no pre-opened fd %d" msgstr "không có fd (bá»™ mô tả tập tin) %d đã mở trÆ°á»›c" -#: main.c:1275 +#: main.c:1290 #, c-format msgid "could not pre-open /dev/null for fd %d" msgstr "không thể mở trÆ°á»›c “/dev/null†cho fd %d" -#: main.c:1489 +#: main.c:1504 msgid "empty argument to `-e/--source' ignored" msgstr "đối số rá»—ng cho tùy chá»n “-e/--source†bị bá» qua" -#: main.c:1560 +#: main.c:1575 msgid "-M ignored: MPFR/GMP support not compiled in" msgstr "-M bị bá» qua: chÆ°a biên dịch phần há»— trợ MPFR/GMP" -#: main.c:1581 +#: main.c:1596 #, 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:1634 +#: main.c:1649 #, c-format msgid "%s: option requires an argument -- %c\n" msgstr "%s: tùy chá»n cần đến đối số “-- %câ€\n" -#: mpfr.c:557 +#: mpfr.c:559 #, c-format msgid "PREC value `%.*s' is invalid" msgstr "giá trị PREC “%.*s†là không hợp lệ" -#: mpfr.c:615 +#: mpfr.c:617 #, c-format msgid "RNDMODE value `%.*s' is invalid" msgstr "giá trị RNDMODE “%.*s†là không hợp lệ" -#: mpfr.c:711 +#: mpfr.c:714 #, c-format msgid "%s: received non-numeric argument" msgstr "%s: đã nhận đối số không phải thuá»™c số" -#: mpfr.c:820 +#: mpfr.c:824 msgid "compl(%Rg): negative value will give strange results" msgstr "compl(%Rg): giá trị âm sẽ gây ra kết quả không nhÆ° mong muốn" -#: mpfr.c:824 +#: mpfr.c:828 msgid "comp(%Rg): fractional value will be truncated" msgstr "compl(%Rg): giá trị thuá»™c phân số sẽ bị cắt ngắn" -#: mpfr.c:836 +#: mpfr.c:840 #, c-format msgid "cmpl(%Zd): negative values will give strange results" msgstr "cmpl(%Zd): giá trị âm sẽ gây ra kết quả không nhÆ° mong muốn" -#: mpfr.c:855 +#: mpfr.c:859 #, c-format msgid "%s: received non-numeric argument #%d" msgstr "%s: đã nhận đối số không phải thuá»™c số #%d" -#: mpfr.c:865 +#: mpfr.c:869 msgid "%s: argument #%d has invalid value %Rg, using 0" msgstr "%s: đối số #%d có giá trị không hợp lệ %Rg, dùng 0" -#: mpfr.c:877 +#: mpfr.c:881 msgid "%s: argument #%d negative value %Rg will give strange results" msgstr "%s: đối số #%d giá trị âm %Rg sẽ gây ra kết quả không nhÆ° mong muốn" -#: mpfr.c:883 +#: mpfr.c:887 msgid "%s: argument #%d fractional value %Rg will be truncated" msgstr "%s: đối số #%d giá trị phần phân số %Rg sẽ bị cắt cụt" -#: mpfr.c:898 +#: mpfr.c:902 #, c-format msgid "%s: argument #%d negative value %Zd will give strange results" msgstr "%s: đối số #%d có giá trị âm %Zd sẽ Ä‘Æ°a ra kết quả không nhÆ° mong muốn" @@ -3375,24 +3400,24 @@ msgstr "%s: đối số #%d có giá trị âm %Zd sẽ Ä‘Æ°a ra kết quả kh msgid "cmd. line:" msgstr "dòng lệnh:" -#: node.c:418 +#: node.c:434 msgid "backslash at end of string" msgstr "gặp dấu gạch ngược tại kết thúc của chuá»—i" -#: node.c:497 +#: node.c:513 #, c-format msgid "old awk does not support the `\\%c' escape sequence" msgstr "awk cÅ© không há»— trợ thoát chuá»—i “\\%câ€" -#: node.c:548 +#: node.c:564 msgid "POSIX does not allow `\\x' escapes" msgstr "POSIX không cho phép thoát chuá»—i “\\xâ€" -#: node.c:554 +#: node.c:570 msgid "no hex digits in `\\x' escape sequence" msgstr "không có số thập lúc nằm trong thoát chuá»—i “\\xâ€" -#: node.c:576 +#: node.c:592 #, c-format msgid "" "hex escape \\x%.*s of %d characters probably not interpreted the way you " @@ -3401,12 +3426,12 @@ msgstr "" "thoát chuá»—i thập lục \\x%.*s chứa %d ký tá»± mà rất có thể không phải được Ä‘á»c " "bằng cách dá»± định" -#: node.c:591 +#: node.c:607 #, c-format msgid "escape sequence `\\%c' treated as plain `%c'" msgstr "thoát chuá»—i “\\%c†được xá»­ lý nhÆ° là “%c†chuẩn" -#: node.c:735 +#: node.c:744 msgid "" "Invalid multibyte data detected. There may be a mismatch between your data " "and your locale." @@ -3426,16 +3451,16 @@ msgstr "" "%s %s “%sâ€: không thể đặt “close-on-exec†(đóng má»™t khi thá»±c hiện): (fcntl " "F_SETFD: %s)" -#: profile.c:91 +#: profile.c:94 #, c-format msgid "could not open `%s' for writing: %s" msgstr "không thể mở “%s†để ghi: %s" -#: profile.c:93 +#: profile.c:96 msgid "sending profile to standard error" msgstr "Ä‘ang gá»­i hồ sÆ¡ cho thiết bị lá»—i chuẩn" -#: profile.c:213 +#: profile.c:216 #, c-format msgid "" "\t# %s rule(s)\n" @@ -3444,7 +3469,7 @@ msgstr "" "\t# Quy tắc %s\n" "\n" -#: profile.c:218 +#: profile.c:221 #, c-format msgid "" "\t# Rule(s)\n" @@ -3453,16 +3478,16 @@ msgstr "" "\t# Quy tắc\n" "\n" -#: profile.c:292 +#: profile.c:295 #, 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:558 +#: profile.c:561 msgid "internal error: builtin with null fname" msgstr "lá»—i ná»™i bá»™: phần dá»±ng sẵn vá»›i fname là null" -#: profile.c:978 +#: profile.c:1006 #, c-format msgid "" "\t# Loaded extensions (-l and/or @load)\n" @@ -3471,12 +3496,12 @@ msgstr "" "\t# Các phần mở rá»™ng được tải (-l và/hoặc @load)\n" "\n" -#: profile.c:1001 +#: profile.c:1029 #, c-format msgid "\t# gawk profile, created %s\n" msgstr "\t# hồ sÆ¡ gawk, được tạo %s\n" -#: profile.c:1555 +#: profile.c:1600 #, c-format msgid "" "\n" @@ -3485,99 +3510,105 @@ msgstr "" "\n" "\t# Danh sách các hàm theo thứ tá»± abc\n" -#: profile.c:1593 +#: profile.c:1638 #, c-format msgid "redir2str: unknown redirection type %d" msgstr "redir2str: không hiểu kiểu chuyển hÆ°á»›ng %d" -#: re.c:607 +#: re.c:610 #, c-format msgid "regexp component `%.*s' should probably be `[%.*s]'" msgstr "" "thành phần của biểu thức chính qui (regexp) “%.*s†gần nhÆ° chắc chắn nên là " "“[%.*s]â€" -#: regcomp.c:139 +#: regcomp.c:143 msgid "Success" msgstr "Thành công" -#: regcomp.c:142 +#: regcomp.c:146 msgid "No match" msgstr "Không khá»›p" -#: regcomp.c:145 +#: regcomp.c:149 msgid "Invalid regular expression" msgstr "Biểu thức chính quy không hợp lệ" -#: regcomp.c:148 +#: regcomp.c:152 msgid "Invalid collation character" msgstr "Ký tá»± đối chiếu không hợp lệ" -#: regcomp.c:151 +#: regcomp.c:155 msgid "Invalid character class name" msgstr "Tên hạng ký tá»± không hợp lệ" -#: regcomp.c:154 +#: regcomp.c:158 msgid "Trailing backslash" msgstr "Gặp dấu gạch ngược thừa" -#: regcomp.c:157 +#: regcomp.c:161 msgid "Invalid back reference" msgstr "Tham chiếu ngược không hợp lệ" -#: regcomp.c:160 +#: regcomp.c:164 msgid "Unmatched [, [^, [:, [., or [=" msgstr "ChÆ°a khá»›p [, [^, [:, [., hay [=" -#: regcomp.c:163 +#: regcomp.c:167 msgid "Unmatched ( or \\(" msgstr "ChÆ°a khá»›p “(†hay “\\(â€" -#: regcomp.c:166 +#: regcomp.c:170 msgid "Unmatched \\{" msgstr "ChÆ°a khá»›p “\\{â€" -#: regcomp.c:169 +#: regcomp.c:173 msgid "Invalid content of \\{\\}" msgstr "Ná»™i dung của “\\{\\}†không hợp lệ" -#: regcomp.c:172 +#: regcomp.c:176 msgid "Invalid range end" msgstr "Kết thúc phạm vi không hợp lệ" -#: regcomp.c:175 +#: regcomp.c:179 msgid "Memory exhausted" msgstr "Hết bá»™ nhá»›" -#: regcomp.c:178 +#: regcomp.c:182 msgid "Invalid preceding regular expression" msgstr "Biểu thức chính quy nằm trÆ°á»›c không hợp lệ" -#: regcomp.c:181 +#: regcomp.c:185 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:184 +#: regcomp.c:188 msgid "Regular expression too big" msgstr "Biểu thức chính quy quá lá»›n" -#: regcomp.c:187 +#: regcomp.c:191 msgid "Unmatched ) or \\)" msgstr "ChÆ°a khá»›p “)†hoặc “\\)â€" -#: regcomp.c:712 +#: regcomp.c:701 msgid "No previous regular expression" msgstr "Không có biểu thức chính quy nằm trÆ°á»›c" -#: symbol.c:678 +#: symbol.c:684 #, c-format msgid "function `%s': can't use function `%s' as a parameter name" msgstr "hàm “%sâ€: không thể dùng hàm “%s†nhÆ° là tên tham số" -#: symbol.c:810 +#: symbol.c:816 msgid "can not pop main context" msgstr "không thể pop (lấy ra) ngữ cảnh chính" +#~ msgid "function `%s' defined to take no more than %d argument(s)" +#~ msgstr "hàm “%s†được định nghÄ©a để chấp nhận tối Ä‘a %d đối số" + +#~ msgid "function `%s': missing argument #%d" +#~ msgstr "hàm “%sâ€: thiếu đối số #%d" + #~ msgid "`getline var' invalid inside `%s' rule" #~ msgstr "“getline var†không hợp lệ bên trong quy tắc “%sâ€" diff --git a/posix/ChangeLog b/posix/ChangeLog index 40d1274..c5ce034 100644 --- a/posix/ChangeLog +++ b/posix/ChangeLog @@ -1,3 +1,7 @@ +2016-08-25 Arnold D. Robbins + + * 4.1.4: Release tar ball made. + 2015-05-19 Arnold D. Robbins * 4.1.3: Release tar ball made. diff --git a/profile.c b/profile.c index 74fc4f9..39c4f03 100644 --- a/profile.c +++ b/profile.c @@ -3,7 +3,7 @@ */ /* - * Copyright (C) 1999-2015 the Free Software Foundation, Inc. + * Copyright (C) 1999-2016 the Free Software Foundation, Inc. * * This file is part of GAWK, the GNU implementation of the * AWK Programming Language. @@ -25,7 +25,7 @@ #include "awk.h" -static void pprint(INSTRUCTION *startp, INSTRUCTION *endp, bool in_for_header); +static void pprint(INSTRUCTION *startp, INSTRUCTION *endp, int flags); static void pp_parenthesize(NODE *n); static void parenthesize(int type, NODE *left, NODE *right); static char *pp_list(int nargs, const char *paren, const char *delim); @@ -57,9 +57,12 @@ static FILE *prof_fp; /* where to send the profile */ static long indent_level = 0; - #define SPACEOVER 0 +#define NO_PPRINT_FLAGS 0 +#define IN_FOR_HEADER 1 +#define IN_ELSE_IF 2 + /* set_prof_file --- set the output file for profiling or pretty-printing */ void @@ -187,7 +190,7 @@ pp_free(NODE *n) /* pprint --- pretty print a program segment */ static void -pprint(INSTRUCTION *startp, INSTRUCTION *endp, bool in_for_header) +pprint(INSTRUCTION *startp, INSTRUCTION *endp, int flags) { INSTRUCTION *pc; NODE *t1; @@ -219,7 +222,7 @@ pprint(INSTRUCTION *startp, INSTRUCTION *endp, bool in_for_header) ip = pc->nexti; indent(ip->exec_count); if (ip != (pc + 1)->firsti) { /* non-empty pattern */ - pprint(ip->nexti, (pc + 1)->firsti, false); + pprint(ip->nexti, (pc + 1)->firsti, NO_PPRINT_FLAGS); t1 = pp_pop(); fprintf(prof_fp, "%s {", t1->pp_str); pp_free(t1); @@ -236,7 +239,7 @@ pprint(INSTRUCTION *startp, INSTRUCTION *endp, bool in_for_header) ip = ip->nexti; } indent_in(); - pprint(ip, (pc + 1)->lasti, false); + pprint(ip, (pc + 1)->lasti, NO_PPRINT_FLAGS); indent_out(); fprintf(prof_fp, "\t}\n\n"); pc = (pc + 1)->lasti; @@ -322,7 +325,7 @@ pprint(INSTRUCTION *startp, INSTRUCTION *endp, bool in_for_header) cleanup: pp_free(t2); pp_free(t1); - if (! in_for_header) + if ((flags & IN_FOR_HEADER) == 0) fprintf(prof_fp, "\n"); break; @@ -344,7 +347,7 @@ cleanup: case Op_and: case Op_or: - pprint(pc->nexti, pc->target_jmp, in_for_header); + pprint(pc->nexti, pc->target_jmp, flags); t2 = pp_pop(); t1 = pp_pop(); parenthesize(pc->opcode, t1, t2); @@ -448,7 +451,7 @@ cleanup: fprintf(prof_fp, "$%s%s%s", t1->pp_str, op2str(pc->opcode), t2->pp_str); pp_free(t2); pp_free(t1); - if (! in_for_header) + if ((flags & IN_FOR_HEADER) == 0) fprintf(prof_fp, "\n"); break; @@ -469,7 +472,7 @@ cleanup: efree(sub); } else fprintf(prof_fp, "%s %s", op2str(Op_K_delete), array); - if (! in_for_header) + if ((flags & IN_FOR_HEADER) == 0) fprintf(prof_fp, "\n"); pp_free(t1); } @@ -581,7 +584,7 @@ cleanup: } else fprintf(prof_fp, "%s%s", op2str(pc->opcode), tmp); efree(tmp); - if (! in_for_header) + if ((flags & IN_FOR_HEADER) == 0) fprintf(prof_fp, "\n"); break; @@ -699,15 +702,15 @@ cleanup: case Op_pop: t1 = pp_pop(); fprintf(prof_fp, "%s", t1->pp_str); - if (! in_for_header) + if ((flags & IN_FOR_HEADER) == 0) fprintf(prof_fp, "\n"); pp_free(t1); break; case Op_line_range: ip = pc + 1; - pprint(pc->nexti, ip->condpair_left, false); - pprint(ip->condpair_left->nexti, ip->condpair_right, false); + pprint(pc->nexti, ip->condpair_left, NO_PPRINT_FLAGS); + pprint(ip->condpair_left->nexti, ip->condpair_right, NO_PPRINT_FLAGS); t2 = pp_pop(); t1 = pp_pop(); str = pp_group3(t1->pp_str, ", ", t2->pp_str); @@ -721,12 +724,12 @@ cleanup: ip = pc + 1; indent(ip->while_body->exec_count); fprintf(prof_fp, "%s (", op2str(pc->opcode)); - pprint(pc->nexti, ip->while_body, false); + pprint(pc->nexti, ip->while_body, NO_PPRINT_FLAGS); t1 = pp_pop(); fprintf(prof_fp, "%s) {\n", t1->pp_str); pp_free(t1); indent_in(); - pprint(ip->while_body->nexti, pc->target_break, false); + pprint(ip->while_body->nexti, pc->target_break, NO_PPRINT_FLAGS); indent_out(); indent(SPACEOVER); fprintf(prof_fp, "}\n"); @@ -738,9 +741,9 @@ cleanup: indent(pc->nexti->exec_count); fprintf(prof_fp, "%s {\n", op2str(pc->opcode)); indent_in(); - pprint(pc->nexti->nexti, ip->doloop_cond, false); + pprint(pc->nexti->nexti, ip->doloop_cond, NO_PPRINT_FLAGS); indent_out(); - pprint(ip->doloop_cond, pc->target_break, false); + pprint(ip->doloop_cond, pc->target_break, NO_PPRINT_FLAGS); indent(SPACEOVER); t1 = pp_pop(); fprintf(prof_fp, "} %s (%s)\n", op2str(Op_K_while), t1->pp_str); @@ -759,24 +762,24 @@ cleanup: && pc->target_continue->opcode == Op_jmp) { fprintf(prof_fp, ";;"); } else { - pprint(pc->nexti, ip->forloop_cond, true); + pprint(pc->nexti, ip->forloop_cond, IN_FOR_HEADER); fprintf(prof_fp, "; "); if (ip->forloop_cond->opcode == Op_no_op && ip->forloop_cond->nexti == ip->forloop_body) fprintf(prof_fp, "; "); else { - pprint(ip->forloop_cond, ip->forloop_body, true); + pprint(ip->forloop_cond, ip->forloop_body, IN_FOR_HEADER); t1 = pp_pop(); fprintf(prof_fp, "%s; ", t1->pp_str); pp_free(t1); } - pprint(pc->target_continue, pc->target_break, true); + pprint(pc->target_continue, pc->target_break, IN_FOR_HEADER); } fprintf(prof_fp, ") {\n"); indent_in(); - pprint(ip->forloop_body->nexti, pc->target_continue, false); + pprint(ip->forloop_body->nexti, pc->target_continue, NO_PPRINT_FLAGS); indent_out(); indent(SPACEOVER); fprintf(prof_fp, "}\n"); @@ -801,7 +804,7 @@ cleanup: item, op2str(Op_in_array), array); indent_in(); pp_free(t1); - pprint(ip->forloop_body->nexti, pc->target_break, false); + pprint(ip->forloop_body->nexti, pc->target_break, NO_PPRINT_FLAGS); indent_out(); indent(SPACEOVER); fprintf(prof_fp, "}\n"); @@ -812,11 +815,11 @@ cleanup: case Op_K_switch: ip = pc + 1; fprintf(prof_fp, "%s (", op2str(pc->opcode)); - pprint(pc->nexti, ip->switch_start, false); + pprint(pc->nexti, ip->switch_start, NO_PPRINT_FLAGS); t1 = pp_pop(); fprintf(prof_fp, "%s) {\n", t1->pp_str); pp_free(t1); - pprint(ip->switch_start, ip->switch_end, false); + pprint(ip->switch_start, ip->switch_end, NO_PPRINT_FLAGS); indent(SPACEOVER); fprintf(prof_fp, "}\n"); pc = pc->target_break; @@ -832,13 +835,13 @@ cleanup: } else fprintf(prof_fp, "%s:\n", op2str(pc->opcode)); indent_in(); - pprint(pc->stmt_start->nexti, pc->stmt_end->nexti, false); + pprint(pc->stmt_start->nexti, pc->stmt_end->nexti, NO_PPRINT_FLAGS); indent_out(); break; case Op_K_if: fprintf(prof_fp, "%s (", op2str(pc->opcode)); - pprint(pc->nexti, pc->branch_if, false); + pprint(pc->nexti, pc->branch_if, NO_PPRINT_FLAGS); t1 = pp_pop(); fprintf(prof_fp, "%s) {", t1->pp_str); pp_free(t1); @@ -848,22 +851,47 @@ cleanup: fprintf(prof_fp, " # %ld", ip->exec_count); fprintf(prof_fp, "\n"); indent_in(); - pprint(ip->nexti, pc->branch_else, false); + pprint(ip->nexti, pc->branch_else, NO_PPRINT_FLAGS); indent_out(); pc = pc->branch_else; - if (pc->nexti->opcode == Op_no_op) { + if (pc->nexti->opcode == Op_no_op) { /* no following else */ indent(SPACEOVER); fprintf(prof_fp, "}\n"); } + /* + * See next case; turn off the flag so that the + * following else is correctly indented. + */ + flags &= ~IN_ELSE_IF; break; case Op_K_else: - fprintf(prof_fp, "} %s {\n", op2str(pc->opcode)); - indent_in(); - pprint(pc->nexti, pc->branch_end, false); - indent_out(); - indent(SPACEOVER); - fprintf(prof_fp, "}\n"); + /* + * If possible, chain else-if's together on the + * same line. + * + * See awkgram.y:mk_condition to understand + * what is being checked here. + * + * Op_exec_count follows Op_K_else, check the + * opcode of the following instruction. + * Additionally, check that the subsequent if + * terminates where this else does; in that case + * it's ok to compact the if to follow the else. + */ + + fprintf(prof_fp, "} %s ", op2str(pc->opcode)); + if (pc->nexti->nexti->opcode == Op_K_if + && pc->branch_end == pc->nexti->nexti->branch_else->lasti) { + pprint(pc->nexti, pc->branch_end, IN_ELSE_IF); + } else { + fprintf(prof_fp, "{\n"); + indent_in(); + pprint(pc->nexti, pc->branch_end, NO_PPRINT_FLAGS); + indent_out(); + indent(SPACEOVER); + fprintf(prof_fp, "}\n"); + } pc = pc->branch_end; break; @@ -872,14 +900,14 @@ cleanup: NODE *f, *t, *cond; size_t len; - pprint(pc->nexti, pc->branch_if, false); + pprint(pc->nexti, pc->branch_if, NO_PPRINT_FLAGS); ip = pc->branch_if; - pprint(ip->nexti, pc->branch_else, false); + pprint(ip->nexti, pc->branch_else, NO_PPRINT_FLAGS); ip = pc->branch_else->nexti; pc = ip->nexti; assert(pc->opcode == Op_cond_exp); - pprint(pc->nexti, pc->branch_end, false); + pprint(pc->nexti, pc->branch_end, NO_PPRINT_FLAGS); f = pp_pop(); t = pp_pop(); @@ -898,7 +926,7 @@ cleanup: break; case Op_exec_count: - if (! in_for_header) + if (flags == NO_PPRINT_FLAGS) indent(pc->exec_count); break; @@ -1000,7 +1028,7 @@ dump_prog(INSTRUCTION *code) /* \n on purpose, with \n in ctime() output */ fprintf(prof_fp, _("\t# gawk profile, created %s\n"), ctime(& now)); print_lib_list(prof_fp); - pprint(code, NULL, false); + pprint(code, NULL, NO_PPRINT_FLAGS); } /* prec_level --- return the precedence of an operator, for paren tests */ @@ -1324,9 +1352,10 @@ pp_number(NODE *n) { #define PP_PRECISION 6 char *str; - size_t count; #ifdef HAVE_MPFR + size_t count; + if (is_mpg_float(n)) { count = mpfr_get_prec(n->mpg_numbr) / 3; /* ~ 3.22 binary digits per decimal digit */ emalloc(str, char *, count, "pp_number"); @@ -1343,9 +1372,19 @@ pp_number(NODE *n) } else #endif { - count = PP_PRECISION + 10; - emalloc(str, char *, count, "pp_number"); - sprintf(str, "%0.*g", PP_PRECISION, n->numbr); + /* Use format_val() to get integral values printed as integers */ + NODE *s; + + getnode(s); + *s = *n; + s->flags &= ~STRCUR; + + s = r_format_val("%.6g", 0, s); + + s->stptr[s->stlen] = '\0'; + str = s->stptr; + + freenode(s); } return str; @@ -1385,33 +1424,39 @@ pp_list(int nargs, const char *paren, const char *delim) } delimlen = strlen(delim); - len = -delimlen; - for (i = 1; i <= nargs; i++) { - r = pp_args[i] = pp_pop(); - len += r->pp_len + delimlen; - } - if (paren != NULL) { - assert(strlen(paren) == 2); - len += 2; + if (nargs == 0) + len = 2; + else { + len = -delimlen; + for (i = 1; i <= nargs; i++) { + r = pp_args[i] = pp_pop(); + len += r->pp_len + delimlen; + } + if (paren != NULL) { + assert(strlen(paren) == 2); + len += 2; + } } emalloc(str, char *, len + 1, "pp_list"); s = str; if (paren != NULL) *s++ = paren[0]; - r = pp_args[nargs]; - memcpy(s, r->pp_str, r->pp_len); - s += r->pp_len; - pp_free(r); - for (i = nargs - 1; i > 0; i--) { - if (delimlen > 0) { - memcpy(s, delim, delimlen); - s += delimlen; - } - r = pp_args[i]; + if (nargs > 0) { + r = pp_args[nargs]; memcpy(s, r->pp_str, r->pp_len); s += r->pp_len; pp_free(r); + for (i = nargs - 1; i > 0; i--) { + if (delimlen > 0) { + memcpy(s, delim, delimlen); + s += delimlen; + } + r = pp_args[i]; + memcpy(s, r->pp_str, r->pp_len); + s += r->pp_len; + pp_free(r); + } } if (paren != NULL) *s++ = paren[1]; @@ -1568,7 +1613,7 @@ pp_func(INSTRUCTION *pc, void *data ATTRIBUTE_UNUSED) } fprintf(prof_fp, ")\n\t{\n"); indent_in(); - pprint(pc->nexti->nexti, NULL, false); /* function body */ + pprint(pc->nexti->nexti, NULL, NO_PPRINT_FLAGS); /* function body */ indent_out(); fprintf(prof_fp, "\t}\n"); return 0; diff --git a/re.c b/re.c index c0d2e90..878c884 100644 --- a/re.c +++ b/re.c @@ -3,7 +3,7 @@ */ /* - * Copyright (C) 1991-2015 the Free Software Foundation, Inc. + * Copyright (C) 1991-2016 the Free Software Foundation, Inc. * * This file is part of GAWK, the GNU implementation of the * AWK Programming Language. @@ -204,9 +204,10 @@ make_regexp(const char *s, size_t len, bool ignorecase, bool dfa, bool canfatal) } dfa_syn = syn; + /* FIXME: dfa doesn't pay attention RE_ICASE */ if (ignorecase) dfa_syn |= RE_ICASE; - dfasyntax(dfa_syn, ignorecase, '\n'); + re_set_syntax(syn); if ((rerr = re_compile_pattern(buf, len, &(rp->pat))) != NULL) { @@ -224,6 +225,7 @@ make_regexp(const char *s, size_t len, bool ignorecase, bool dfa, bool canfatal) if (dfa && ! no_dfa) { rp->dfa = true; rp->dfareg = dfaalloc(); + dfasyntax(rp->dfareg, dfa_syn, ignorecase, '\n'); dfacomp(buf, len, rp->dfareg, true); } else rp->dfa = false; @@ -254,7 +256,7 @@ research(Regexp *rp, char *str, int start, size_t len, int flags) { const char *ret = str; - int try_backref = false; + bool try_backref = false; int need_start; int no_bol; int res; @@ -266,17 +268,17 @@ research(Regexp *rp, char *str, int start, 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. + * Always do dfa search if can; if it fails, 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. * - * 7/2008: Skip the dfa matcher if need_start. The dfa matcher - * has bugs in certain multibyte cases and it's too difficult - * to try to special case things. + * 7/2016: The dfa matcher can't handle a case where searching + * starts in the middle of a string, so don't bother trying it + * in that case. */ - if (rp->dfa && ! no_bol && ! need_start) { + if (rp->dfa && ! no_bol && start == 0) { char save; size_t count = 0; struct dfa *superset = dfasuperset(rp->dfareg); @@ -419,7 +421,8 @@ resetup() syn |= RE_INTERVALS | RE_INVALID_INTERVAL_ORD | RE_NO_BK_BRACES; (void) re_set_syntax(syn); - dfasyntax(syn, false, '\n'); + + dfa_init(); } /* avoid_dfa --- return true if we should not use the DFA matcher */ diff --git a/regcomp.c b/regcomp.c index f3dcb3e..11c94fc 100644 --- a/regcomp.c +++ b/regcomp.c @@ -1,5 +1,5 @@ /* Extended regular expression matching and search library. - Copyright (C) 2002-2015 Free Software Foundation, Inc. + Copyright (C) 2002-2016 Free Software Foundation, Inc. This file is part of the GNU C Library. Contributed by Isamu Hasegawa . @@ -21,6 +21,10 @@ #include #endif +#ifdef HAVE_STRINGS_H +#include +#endif + #ifdef _LIBC # include #endif @@ -133,7 +137,7 @@ static reg_errcode_t mark_opt_subexp (void *extra, bin_tree_t *node); POSIX doesn't require that we do anything for REG_NOERROR, but why not be nice? */ -const char __re_error_msgid[] attribute_hidden = +static const char __re_error_msgid[] = { #define REG_NOERROR_IDX 0 gettext_noop ("Success") /* REG_NOERROR */ @@ -159,7 +163,7 @@ const char __re_error_msgid[] attribute_hidden = #define REG_EBRACK_IDX (REG_ESUBREG_IDX + sizeof "Invalid back reference") gettext_noop ("Unmatched [, [^, [:, [., or [=") /* REG_EBRACK */ "\0" -#define REG_EPAREN_IDX (REG_EBRACK_IDX + sizeof "Unmatched [ or [^") +#define REG_EPAREN_IDX (REG_EBRACK_IDX + sizeof "Unmatched [, [^, [:, [., or [=") gettext_noop ("Unmatched ( or \\(") /* REG_EPAREN */ "\0" #define REG_EBRACE_IDX (REG_EPAREN_IDX + sizeof "Unmatched ( or \\(") @@ -187,7 +191,7 @@ const char __re_error_msgid[] attribute_hidden = gettext_noop ("Unmatched ) or \\)") /* REG_ERPAREN */ }; -const size_t __re_error_msgid_idx[] attribute_hidden = +static const size_t __re_error_msgid_idx[] = { REG_NOERROR_IDX, REG_NOMATCH_IDX, @@ -211,10 +215,7 @@ const size_t __re_error_msgid_idx[] attribute_hidden = /* Entry points for GNU code. */ -#ifdef ZOS_USS - -/* For ZOS USS we must define btowc */ - +#ifndef HAVE_BTOWC wchar_t btowc (int c) { @@ -235,14 +236,12 @@ btowc (int c) compiles PATTERN (of length LENGTH) and puts the result in BUFP. Returns 0 if the pattern was valid, otherwise an error string. - Assumes the `allocated' (and perhaps `buffer') and `translate' fields + Assumes the 'allocated' (and perhaps 'buffer') and 'translate' fields are set in BUFP on entry. */ const char * -re_compile_pattern (pattern, length, bufp) - const char *pattern; - size_t length; - struct re_pattern_buffer *bufp; +re_compile_pattern (const char *pattern, size_t length, + struct re_pattern_buffer *bufp) { reg_errcode_t ret; @@ -264,7 +263,7 @@ re_compile_pattern (pattern, length, bufp) weak_alias (__re_compile_pattern, re_compile_pattern) #endif -/* Set by `re_set_syntax' to the current regexp syntax to recognize. Can +/* Set by 're_set_syntax' to the current regexp syntax to recognize. Can also be assigned to arbitrarily: each pattern buffer stores its own syntax, so it can be changed between regex compilations. */ /* This has no initializer because initialized variables in Emacs @@ -280,8 +279,7 @@ reg_syntax_t re_syntax_options; defined in regex.h. We return the old syntax. */ reg_syntax_t -re_set_syntax (syntax) - reg_syntax_t syntax; +re_set_syntax (reg_syntax_t syntax) { reg_syntax_t ret = re_syntax_options; @@ -293,8 +291,7 @@ weak_alias (__re_set_syntax, re_set_syntax) #endif int -re_compile_fastmap (bufp) - struct re_pattern_buffer *bufp; +re_compile_fastmap (struct re_pattern_buffer *bufp) { re_dfa_t *dfa = (re_dfa_t *) bufp->buffer; char *fastmap = bufp->fastmap; @@ -315,8 +312,8 @@ weak_alias (__re_compile_fastmap, re_compile_fastmap) #endif static inline void -__attribute ((always_inline)) -re_set_fastmap (char *fastmap, int icase, int ch) +__attribute__ ((always_inline)) +re_set_fastmap (char *fastmap, bool icase, int ch) { fastmap[ch] = 1; if (icase) @@ -344,7 +341,8 @@ re_compile_fastmap_iter (regex_t *bufp, const re_dfastate_t *init_state, #ifdef RE_ENABLE_I18N if ((bufp->syntax & RE_ICASE) && dfa->mb_cur_max > 1) { - unsigned char *buf = re_malloc (unsigned char, dfa->mb_cur_max), *p; + unsigned char buf[MB_LEN_MAX]; + unsigned char *p; wchar_t wc; mbstate_t state; @@ -360,7 +358,6 @@ re_compile_fastmap_iter (regex_t *bufp, const re_dfastate_t *init_state, && (__wcrtomb ((char *) buf, towlower (wc), &state) != (size_t) -1)) re_set_fastmap (fastmap, 0, buf[0]); - re_free (buf); } #endif } @@ -462,15 +459,15 @@ re_compile_fastmap_iter (regex_t *bufp, const re_dfastate_t *init_state, PREG is a regex_t *. We do not expect any fields to be initialized, since POSIX says we shouldn't. Thus, we set - `buffer' to the compiled pattern; - `used' to the length of the compiled pattern; - `syntax' to RE_SYNTAX_POSIX_EXTENDED if the + 'buffer' to the compiled pattern; + 'used' to the length of the compiled pattern; + 'syntax' to RE_SYNTAX_POSIX_EXTENDED if the REG_EXTENDED bit in CFLAGS is set; otherwise, to RE_SYNTAX_POSIX_BASIC; - `newline_anchor' to REG_NEWLINE being set in CFLAGS; - `fastmap' to an allocated space for the fastmap; - `fastmap_accurate' to zero; - `re_nsub' to the number of subexpressions in PATTERN. + 'newline_anchor' to REG_NEWLINE being set in CFLAGS; + 'fastmap' to an allocated space for the fastmap; + 'fastmap_accurate' to zero; + 're_nsub' to the number of subexpressions in PATTERN. PATTERN is the address of the pattern string. @@ -493,10 +490,7 @@ re_compile_fastmap_iter (regex_t *bufp, const re_dfastate_t *init_state, the return codes and their meanings.) */ int -regcomp (preg, pattern, cflags) - regex_t *__restrict preg; - const char *__restrict pattern; - int cflags; +regcomp (regex_t *__restrict preg, const char *__restrict pattern, int cflags) { reg_errcode_t ret; reg_syntax_t syntax = ((cflags & REG_EXTENDED) ? RE_SYNTAX_POSIX_EXTENDED @@ -555,11 +549,8 @@ weak_alias (__regcomp, regcomp) from either regcomp or regexec. We don't use PREG here. */ size_t -regerror (errcode, preg, errbuf, errbuf_size) - int errcode; - const regex_t *__restrict preg; - char *__restrict errbuf; - size_t errbuf_size; +regerror (int errcode, const regex_t *__restrict preg, char *__restrict errbuf, + size_t errbuf_size) { const char *msg; size_t msg_size; @@ -666,8 +657,7 @@ free_dfa_content (re_dfa_t *dfa) /* Free dynamically allocated space used by PREG. */ void -regfree (preg) - regex_t *preg; +regfree (regex_t *preg) { re_dfa_t *dfa = (re_dfa_t *) preg->buffer; if (BE (dfa != NULL, 1)) @@ -700,8 +690,7 @@ char * regcomp/regexec above without link errors. */ weak_function # endif -re_comp (s) - const char *s; +re_comp (const char *s) { reg_errcode_t ret; char *fastmap; @@ -730,7 +719,7 @@ re_comp (s) + __re_error_msgid_idx[(int) REG_ESPACE]); } - /* Since `re_exec' always passes NULL for the `regs' argument, we + /* Since 're_exec' always passes NULL for the 'regs' argument, we don't need to initialize the pattern buffer fields which affect it. */ /* Match anchors at newlines. */ @@ -808,7 +797,7 @@ re_compile_internal (regex_t *preg, const char * pattern, size_t length, __libc_lock_init (dfa->lock); err = re_string_construct (®exp, pattern, length, preg->translate, - syntax & RE_ICASE, dfa); + (syntax & RE_ICASE) != 0, dfa); if (BE (err != REG_NOERROR, 0)) { re_compile_internal_free_return: @@ -1570,7 +1559,7 @@ duplicate_node_closure (re_dfa_t *dfa, int top_org_node, int top_clone_node, destination. */ org_dest = dfa->edests[org_node].elems[0]; re_node_set_empty (dfa->edests + clone_node); - /* If the node is root_node itself, it means the epsilon clsoure + /* If the node is root_node itself, it means the epsilon closure has a loop. Then tie it to the destination of the root_node. */ if (org_node == root_node && clone_node != org_node) { @@ -1579,7 +1568,7 @@ duplicate_node_closure (re_dfa_t *dfa, int top_org_node, int top_clone_node, return REG_ESPACE; break; } - /* In case of the node has another constraint, add it. */ + /* In case the node has another constraint, append it. */ constraint |= dfa->nodes[org_node].constraint; clone_dest = duplicate_node (dfa, org_dest, constraint); if (BE (clone_dest == -1, 0)) @@ -1722,7 +1711,7 @@ calc_eclosure (re_dfa_t *dfa) /* If we have already calculated, skip it. */ if (dfa->eclosures[node_idx].nelem != 0) continue; - /* Calculate epsilon closure of `node_idx'. */ + /* Calculate epsilon closure of 'node_idx'. */ err = calc_eclosure_iter (&eclosure_elem, dfa, node_idx, 1); if (BE (err != REG_NOERROR, 0)) return err; @@ -1789,11 +1778,11 @@ calc_eclosure_iter (re_node_set *new_set, re_dfa_t *dfa, int node, int root) } else eclosure_elem = dfa->eclosures[edest]; - /* Merge the epsilon closure of `edest'. */ + /* Merge the epsilon closure of 'edest'. */ err = re_node_set_merge (&eclosure, &eclosure_elem); if (BE (err != REG_NOERROR, 0)) return err; - /* If the epsilon closure of `edest' is incomplete, + /* If the epsilon closure of 'edest' is incomplete, the epsilon closure of this node is also incomplete. */ if (dfa->eclosures[edest].nelem == 0) { @@ -2155,7 +2144,7 @@ peek_token_bracket (re_token_t *token, re_string_t *input, reg_syntax_t syntax) /* Entry point of the parser. Parse the regular expression REGEXP and return the structure tree. - If an error is occured, ERR is set by error code, and return NULL. + If an error occurs, ERR is set by error code, and return NULL. This function build the following tree, from regular expression : CAT / \ @@ -2197,7 +2186,7 @@ parse (re_string_t *regexp, regex_t *preg, reg_syntax_t syntax, / \ - ALT means alternative, which represents the operator `|'. */ + ALT means alternative, which represents the operator '|'. */ static bin_tree_t * parse_reg_exp (re_string_t *regexp, regex_t *preg, re_token_t *token, @@ -2205,6 +2194,7 @@ parse_reg_exp (re_string_t *regexp, regex_t *preg, re_token_t *token, { re_dfa_t *dfa = (re_dfa_t *) preg->buffer; bin_tree_t *tree, *branch = NULL; + bitset_word_t initial_bkref_map = dfa->completed_bkref_map; tree = parse_branch (regexp, preg, token, syntax, nest, err); if (BE (*err != REG_NOERROR && tree == NULL, 0)) return NULL; @@ -2215,6 +2205,8 @@ parse_reg_exp (re_string_t *regexp, regex_t *preg, re_token_t *token, if (token->type != OP_ALT && token->type != END_OF_RE && (nest == 0 || token->type != OP_CLOSE_SUBEXP)) { + bitset_word_t accumulated_bkref_map = dfa->completed_bkref_map; + dfa->completed_bkref_map = initial_bkref_map; branch = parse_branch (regexp, preg, token, syntax, nest, err); if (BE (*err != REG_NOERROR && branch == NULL, 0)) { @@ -2222,6 +2214,7 @@ parse_reg_exp (re_string_t *regexp, regex_t *preg, re_token_t *token, postorder (tree, free_tree, NULL); return NULL; } + dfa->completed_bkref_map |= accumulated_bkref_map; } else branch = NULL; @@ -2693,7 +2686,7 @@ parse_dup_op (bin_tree_t *elem, re_string_t *regexp, re_dfa_t *dfa, Build the range expression which starts from START_ELEM, and ends at END_ELEM. The result are written to MBCSET and SBCSET. RANGE_ALLOC is the allocated size of mbcset->range_starts, and - mbcset->range_ends, is a pointer argument sinse we may + mbcset->range_ends, is a pointer argument since we may update it. */ static reg_errcode_t @@ -2752,7 +2745,7 @@ build_range_exp (reg_syntax_t syntax, bitset_t sbcset, #endif if (start_wc == WEOF || end_wc == WEOF) return REG_ECOLLATE; - else if ((syntax & RE_NO_EMPTY_RANGES) && start_wc > end_wc) + else if (BE ((syntax & RE_NO_EMPTY_RANGES) && start_wc > end_wc, 0)) return REG_ERANGE; /* Got valid collation sequence values, add them as a new entry. @@ -2867,13 +2860,13 @@ parse_bracket_exp (re_string_t *regexp, re_dfa_t *dfa, re_token_t *token, const int32_t *symb_table; const unsigned char *extra; - /* Local function for parse_bracket_exp used in _LIBC environement. - Seek the collating symbol entry correspondings to NAME. + /* Local function for parse_bracket_exp used in _LIBC environment. + Seek the collating symbol entry corresponding to NAME. Return the index of the symbol in the SYMB_TABLE, or -1 if not found. */ auto inline int32_t - __attribute ((always_inline)) + __attribute__ ((always_inline)) seek_collating_symbol_entry (const unsigned char *name, size_t name_len) { int32_t elem; @@ -2899,7 +2892,7 @@ parse_bracket_exp (re_string_t *regexp, re_dfa_t *dfa, re_token_t *token, Return the value if succeeded, UINT_MAX otherwise. */ auto inline unsigned int - __attribute ((always_inline)) + __attribute__ ((always_inline)) lookup_collation_sequence_value (bracket_elem_t *br_elem) { if (br_elem->type == SB_CHAR) @@ -2959,15 +2952,15 @@ parse_bracket_exp (re_string_t *regexp, re_dfa_t *dfa, re_token_t *token, return UINT_MAX; } - /* Local function for parse_bracket_exp used in _LIBC environement. + /* Local function for parse_bracket_exp used in _LIBC environment. Build the range expression which starts from START_ELEM, and ends at END_ELEM. The result are written to MBCSET and SBCSET. RANGE_ALLOC is the allocated size of mbcset->range_starts, and - mbcset->range_ends, is a pointer argument sinse we may + mbcset->range_ends, is a pointer argument since we may update it. */ auto inline reg_errcode_t - __attribute ((always_inline)) + __attribute__ ((always_inline)) build_range_exp (bitset_t sbcset, re_charset_t *mbcset, int *range_alloc, bracket_elem_t *start_elem, bracket_elem_t *end_elem) { @@ -3040,14 +3033,14 @@ parse_bracket_exp (re_string_t *regexp, re_dfa_t *dfa, re_token_t *token, return REG_NOERROR; } - /* Local function for parse_bracket_exp used in _LIBC environement. + /* Local function for parse_bracket_exp used in _LIBC environment. Build the collating element which is represented by NAME. The result are written to MBCSET and SBCSET. COLL_SYM_ALLOC is the allocated size of mbcset->coll_sym, is a - pointer argument sinse we may update it. */ + pointer argument since we may update it. */ auto inline reg_errcode_t - __attribute ((always_inline)) + __attribute__ ((always_inline)) build_collating_symbol (bitset_t sbcset, re_charset_t *mbcset, int *coll_sym_alloc, const unsigned char *name) { @@ -3486,7 +3479,7 @@ parse_bracket_symbol (bracket_elem_t *elem, re_string_t *regexp, Build the equivalence class which is represented by NAME. The result are written to MBCSET and SBCSET. EQUIV_CLASS_ALLOC is the allocated size of mbcset->equiv_classes, - is a pointer argument sinse we may update it. */ + is a pointer argument since we may update it. */ static reg_errcode_t #ifdef RE_ENABLE_I18N @@ -3520,7 +3513,7 @@ build_equiv_class (bitset_t sbcset, const unsigned char *name) /* This isn't a valid character. */ return REG_ECOLLATE; - /* Build single byte matcing table for this equivalence class. */ + /* Build single byte matching table for this equivalence class. */ char_buf[1] = (unsigned char) '\0'; len = weights[idx1 & 0xffffff]; for (ch = 0; ch < SBC_MAX; ++ch) @@ -3580,7 +3573,7 @@ build_equiv_class (bitset_t sbcset, const unsigned char *name) Build the character class which is represented by NAME. The result are written to MBCSET and SBCSET. CHAR_CLASS_ALLOC is the allocated size of mbcset->char_classes, - is a pointer argument sinse we may update it. */ + is a pointer argument since we may update it. */ static reg_errcode_t #ifdef RE_ENABLE_I18N diff --git a/regex.c b/regex.c index ed6a4f5..9f133fa 100644 --- a/regex.c +++ b/regex.c @@ -1,5 +1,5 @@ /* Extended regular expression matching and search library. - Copyright (C) 2002-2015 Free Software Foundation, Inc. + Copyright (C) 2002-2016 Free Software Foundation, Inc. This file is part of the GNU C Library. Contributed by Isamu Hasegawa . diff --git a/regex.h b/regex.h index cd470a0..872c4b6 100644 --- a/regex.h +++ b/regex.h @@ -1,6 +1,6 @@ /* Definitions for data structures and routines for the regular expression library. - Copyright (C) 1985, 1989-2015 Free Software Foundation, Inc. + Copyright (C) 1985, 1989-2016 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 @@ -327,7 +327,7 @@ typedef enum /* POSIX regcomp return error codes. (In the order listed in the standard.) */ REG_BADPAT, /* Invalid pattern. */ - REG_ECOLLATE, /* Inalid collating element. */ + REG_ECOLLATE, /* Invalid collating element. */ REG_ECTYPE, /* Invalid character class name. */ REG_EESCAPE, /* Trailing backslash. */ REG_ESUBREG, /* Invalid back reference. */ diff --git a/regex_internal.c b/regex_internal.c index 5a5b936..18641ef 100644 --- a/regex_internal.c +++ b/regex_internal.c @@ -1,5 +1,5 @@ /* Extended regular expression matching and search library. - Copyright (C) 2002-2015 Free Software Foundation, Inc. + Copyright (C) 2002-2016 Free Software Foundation, Inc. This file is part of the GNU C Library. Contributed by Isamu Hasegawa . @@ -320,12 +320,13 @@ build_wcs_upper_buffer (re_string_t *pstr) + byte_idx), remain_len, &pstr->cur_state); if (BE (mbclen + 2 > 2, 1)) { - wchar_t wcu = towupper (wc); - if (wcu != wc) + wchar_t wcu = wc; + if (iswlower (wc)) { size_t mbcdlen; - mbcdlen = wcrtomb (buf, wcu, &prev_st); + wcu = towupper (wc); + mbcdlen = __wcrtomb (buf, wcu, &prev_st); if (BE (mbclen == mbcdlen, 1)) memcpy (pstr->mbs + byte_idx, buf, mbclen); else @@ -389,11 +390,12 @@ build_wcs_upper_buffer (re_string_t *pstr) mbclen = __mbrtowc (&wc, p, remain_len, &pstr->cur_state); if (BE (mbclen + 2 > 2, 1)) { - wchar_t wcu = towupper (wc); - if (wcu != wc) + wchar_t wcu = wc; + if (iswlower (wc)) { size_t mbcdlen; + wcu = towupper (wc); mbcdlen = wcrtomb ((char *) buf, wcu, &prev_st); if (BE (mbclen == mbcdlen, 1)) memcpy (pstr->mbs + byte_idx, buf, mbclen); @@ -838,7 +840,7 @@ re_string_reconstruct (re_string_t *pstr, int idx, int eflags) } static unsigned char -internal_function __attribute ((pure)) +internal_function __attribute__ ((__pure__)) re_string_peek_byte_case (const re_string_t *pstr, int idx) { int ch, off; @@ -1370,7 +1372,7 @@ re_node_set_insert_last (re_node_set *set, int elem) return 1 if SET1 and SET2 are equivalent, return 0 otherwise. */ static int -internal_function __attribute ((pure)) +internal_function __attribute__ ((__pure__)) re_node_set_compare (const re_node_set *set1, const re_node_set *set2) { int i; @@ -1385,7 +1387,7 @@ re_node_set_compare (const re_node_set *set1, const re_node_set *set2) /* Return (idx + 1) if SET contains the element ELEM, return 0 otherwise. */ static int -internal_function __attribute ((pure)) +internal_function __attribute__ ((__pure__)) re_node_set_contains (const re_node_set *set, int elem) { unsigned int idx, right, mid; @@ -1632,7 +1634,7 @@ free_state (re_dfastate_t *state) re_free (state); } -/* Create the new state which is independ of contexts. +/* Create the new state which is independent of contexts. Return the new state if succeeded, otherwise return NULL. */ static re_dfastate_t * diff --git a/regex_internal.h b/regex_internal.h index 327bd7e..09f17b2 100644 --- a/regex_internal.h +++ b/regex_internal.h @@ -1,5 +1,5 @@ /* Extended regular expression matching and search library. - Copyright (C) 2002-2015 Free Software Foundation, Inc. + Copyright (C) 2002-2016 Free Software Foundation, Inc. This file is part of the GNU C Library. Contributed by Isamu Hasegawa . @@ -41,13 +41,11 @@ #if defined HAVE_STDBOOL_H || defined _LIBC # include #endif /* HAVE_STDBOOL_H || _LIBC */ -#if !defined(ZOS_USS) #if defined HAVE_STDINT_H || defined _LIBC # include #endif /* HAVE_STDINT_H || _LIBC */ -#endif /* !ZOS_USS */ #if defined _LIBC -# include +# include #else # define __libc_lock_define(CLASS,NAME) # define __libc_lock_init(NAME) do { } while (0) @@ -145,14 +143,10 @@ is_blank (int c) # define __mempcpy mempcpy # define __wcrtomb wcrtomb # define __regfree regfree -# define attribute_hidden #endif /* not _LIBC */ -#ifdef __GNUC__ -# define __attribute(arg) __attribute__ (arg) -#else -# define __attribute(arg) -# define __attribute__(arg) /* GAWK: They left this out. Duh. */ +#if __GNUC__ < 3 + (__GNUC_MINOR__ < 1) +# define __attribute__(arg) #endif #ifdef GAWK @@ -164,9 +158,6 @@ is_blank (int c) # define __attribute_warn_unused_result__ #endif -extern const char __re_error_msgid[] attribute_hidden; -extern const size_t __re_error_msgid_idx[] attribute_hidden; - /* An integer used to represent a set of bits. It must be unsigned, and must be at least as wide as unsigned int. */ typedef unsigned long int bitset_word_t; @@ -480,7 +471,7 @@ test_malloc(size_t count, const char *file, size_t line) { if (count == 0) { fprintf(stderr, "%s:%lu: allocation of zero bytes\n", - file, line); + file, (unsigned long) line); exit(1); } return malloc(count); @@ -491,7 +482,7 @@ test_realloc(void *p, size_t count, const char *file, size_t line) { if (count == 0) { fprintf(stderr, "%s:%lu: reallocation of zero bytes\n", - file, line); + file, (unsigned long) line); exit(1); } return realloc(p, count); @@ -803,6 +794,10 @@ re_string_wchar_at (const re_string_t *pstr, int idx) } # ifndef NOT_IN_libc +# ifdef _LIBC +# include +# endif + static int internal_function __attribute__ ((pure, unused)) re_string_elem_size_at (const re_string_t *pstr, int idx) @@ -810,7 +805,6 @@ re_string_elem_size_at (const re_string_t *pstr, int idx) # ifdef _LIBC const unsigned char *p, *extra; const int32_t *table, *indirect; -# include uint_fast32_t nrules = _NL_CURRENT_WORD (LC_COLLATE, _NL_COLLATE_NRULES); if (nrules != 0) diff --git a/regexec.c b/regexec.c index 46a4d0a..aee2117 100644 --- a/regexec.c +++ b/regexec.c @@ -1,5 +1,5 @@ /* Extended regular expression matching and search library. - Copyright (C) 2002-2015 Free Software Foundation, Inc. + Copyright (C) 2002-2016 Free Software Foundation, Inc. This file is part of the GNU C Library. Contributed by Isamu Hasegawa . @@ -17,6 +17,10 @@ License along with the GNU C Library; if not, see . */ +#ifdef HAVE_STDINT_H +#include +#endif /* HAVE_STDINT_H */ + 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; @@ -51,8 +55,7 @@ static int re_search_stub (struct re_pattern_buffer *bufp, int ret_len) internal_function; static unsigned re_copy_regs (struct re_registers *regs, regmatch_t *pmatch, int nregs, int regs_allocated) internal_function; -static reg_errcode_t prune_impossible_nodes (re_match_context_t *mctx) - internal_function; +static reg_errcode_t prune_impossible_nodes (re_match_context_t *mctx); static int check_matching (re_match_context_t *mctx, int fl_longest_match, int *p_match_first) internal_function; static int check_halt_state_context (const re_match_context_t *mctx, @@ -226,12 +229,8 @@ MIN(size_t a, size_t b) We return 0 if we find a match and REG_NOMATCH if not. */ int -regexec (preg, string, nmatch, pmatch, eflags) - const regex_t *__restrict preg; - const char *__restrict string; - size_t nmatch; - regmatch_t pmatch[]; - int eflags; +regexec (const regex_t *__restrict preg, const char *__restrict string, + size_t nmatch, regmatch_t pmatch[], int eflags) { reg_errcode_t err; int start, length; @@ -302,7 +301,7 @@ compat_symbol (libc, __compat_regexec, regexec, GLIBC_2_0); concerned. If REGS is not NULL, and BUFP->no_sub is not set, the offsets of the match - and all groups is stroed in REGS. (For the "_2" variants, the offsets are + and all groups is stored in REGS. (For the "_2" variants, the offsets are computed relative to the concatenation, not relative to the individual strings.) @@ -311,11 +310,8 @@ compat_symbol (libc, __compat_regexec, regexec, GLIBC_2_0); match was found and -2 indicates an internal error. */ int -re_match (bufp, string, length, start, regs) - struct re_pattern_buffer *bufp; - const char *string; - int length, start; - struct re_registers *regs; +re_match (struct re_pattern_buffer *bufp, const char *string, int length, + int start, struct re_registers *regs) { return re_search_stub (bufp, string, length, start, 0, length, regs, 1); } @@ -324,11 +320,8 @@ weak_alias (__re_match, re_match) #endif int -re_search (bufp, string, length, start, range, regs) - struct re_pattern_buffer *bufp; - const char *string; - int length, start, range; - struct re_registers *regs; +re_search (struct re_pattern_buffer *bufp, const char *string, int length, + int start, int range, struct re_registers *regs) { return re_search_stub (bufp, string, length, start, range, length, regs, 0); } @@ -337,11 +330,9 @@ weak_alias (__re_search, re_search) #endif int -re_match_2 (bufp, string1, length1, string2, length2, start, regs, stop) - struct re_pattern_buffer *bufp; - const char *string1, *string2; - int length1, length2, start, stop; - struct re_registers *regs; +re_match_2 (struct re_pattern_buffer *bufp, const char *string1, int length1, + const char *string2, int length2, int start, + struct re_registers *regs, int stop) { return re_search_2_stub (bufp, string1, length1, string2, length2, start, 0, regs, stop, 1); @@ -351,11 +342,9 @@ weak_alias (__re_match_2, re_match_2) #endif int -re_search_2 (bufp, string1, length1, string2, length2, start, range, regs, stop) - struct re_pattern_buffer *bufp; - const char *string1, *string2; - int length1, length2, start, range, stop; - struct re_registers *regs; +re_search_2 (struct re_pattern_buffer *bufp, const char *string1, int length1, + const char *string2, int length2, int start, int range, + struct re_registers *regs, int stop) { return re_search_2_stub (bufp, string1, length1, string2, length2, start, range, regs, stop, 0); @@ -365,12 +354,11 @@ weak_alias (__re_search_2, re_search_2) #endif static int -re_search_2_stub (bufp, string1, length1, string2, length2, start, range, regs, - stop, ret_len) - struct re_pattern_buffer *bufp; - const char *string1, *string2; - int length1, length2, start, range, stop, ret_len; - struct re_registers *regs; +internal_function +re_search_2_stub (struct re_pattern_buffer *bufp, const char *string1, + int length1, const char *string2, int length2, int start, + int range, struct re_registers *regs, + int stop, int ret_len) { const char *str; int rval; @@ -412,11 +400,10 @@ re_search_2_stub (bufp, string1, length1, string2, length2, start, range, regs, otherwise the position of the match is returned. */ static int -re_search_stub (bufp, string, length, start, range, stop, regs, ret_len) - struct re_pattern_buffer *bufp; - const char *string; - int length, start, range, stop, ret_len; - struct re_registers *regs; +internal_function +re_search_stub (struct re_pattern_buffer *bufp, const char *string, int length, + int start, int range, int stop, struct re_registers *regs, + int ret_len) { reg_errcode_t result; regmatch_t *pmatch; @@ -500,10 +487,9 @@ re_search_stub (bufp, string, length, start, range, stop, regs, ret_len) } static unsigned -re_copy_regs (regs, pmatch, nregs, regs_allocated) - struct re_registers *regs; - regmatch_t *pmatch; - int nregs, regs_allocated; +internal_function +re_copy_regs (struct re_registers *regs, regmatch_t *pmatch, int nregs, + int regs_allocated) { int rval = REGS_REALLOCATE; int i; @@ -580,11 +566,8 @@ re_copy_regs (regs, pmatch, nregs, regs_allocated) freeing the old data. */ void -re_set_registers (bufp, regs, num_regs, starts, ends) - struct re_pattern_buffer *bufp; - struct re_registers *regs; - unsigned num_regs; - regoff_t *starts, *ends; +re_set_registers (struct re_pattern_buffer *bufp, struct re_registers *regs, + unsigned num_regs, regoff_t *starts, regoff_t *ends) { if (num_regs) { @@ -612,8 +595,7 @@ int # ifdef _LIBC weak_function # endif -re_exec (s) - const char *s; +re_exec (const char *s) { return 0 == regexec (&re_comp_buf, s, 0, NULL, 0); } @@ -623,7 +605,7 @@ re_exec (s) /* Searches for a compiled pattern PREG in the string STRING, whose length is LENGTH. NMATCH, PMATCH, and EFLAGS have the same - mingings with regexec. START, and RANGE have the same meanings + meaning as with regexec. START, and RANGE have the same meanings with re_search. Return REG_NOERROR if we find a match, and REG_NOMATCH if not, otherwise return the error code. @@ -631,14 +613,10 @@ re_exec (s) (START + RANGE >= 0 && START + RANGE <= LENGTH) */ static reg_errcode_t -__attribute_warn_unused_result__ -re_search_internal (preg, string, length, start, range, stop, nmatch, pmatch, - eflags) - const regex_t *preg; - const char *string; - int length, start, range, stop, eflags; - size_t nmatch; - regmatch_t pmatch[]; +__attribute_warn_unused_result__ internal_function +re_search_internal (const regex_t *preg, const char *string, int length, + int start, int range, int stop, size_t nmatch, + regmatch_t pmatch[], int eflags) { reg_errcode_t err; const re_dfa_t *dfa = (const re_dfa_t *) preg->buffer; @@ -691,7 +669,8 @@ re_search_internal (preg, string, length, start, range, stop, nmatch, pmatch, fl_longest_match = (nmatch != 0 || dfa->nbackref); err = re_string_allocate (&mctx.input, string, length, dfa->nodes_len + 1, - preg->translate, preg->syntax & RE_ICASE, dfa); + preg->translate, (preg->syntax & RE_ICASE) != 0, + dfa); if (BE (err != REG_NOERROR, 0)) goto free_return; mctx.input.stop = stop; @@ -908,7 +887,7 @@ re_search_internal (preg, string, length, start, range, stop, nmatch, pmatch, goto free_return; } - /* At last, add the offset to the each registers, since we slided + /* At last, add the offset to each register, since we slid the buffers so that we could assume that the matching starts from 0. */ for (reg_idx = 0; reg_idx < nmatch; ++reg_idx) @@ -958,9 +937,7 @@ re_search_internal (preg, string, length, start, range, stop, nmatch, pmatch, } static reg_errcode_t -__attribute_warn_unused_result__ -prune_impossible_nodes (mctx) - re_match_context_t *mctx; +prune_impossible_nodes (re_match_context_t *mctx) { const re_dfa_t *const dfa = mctx->dfa; int halt_node, match_last; @@ -1055,7 +1032,7 @@ prune_impossible_nodes (mctx) since initial states may have constraints like "\<", "^", etc.. */ static inline re_dfastate_t * -__attribute ((always_inline)) internal_function +__attribute__ ((always_inline)) internal_function acquire_init_state_context (reg_errcode_t *err, const re_match_context_t *mctx, int idx) { @@ -2416,7 +2393,7 @@ merge_state_with_log (reg_errcode_t *err, re_match_context_t *mctx, /* 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 * +static re_dfastate_t * internal_function find_recover_state (reg_errcode_t *err, re_match_context_t *mctx) { @@ -2445,7 +2422,7 @@ find_recover_state (reg_errcode_t *err, re_match_context_t *mctx) /* From the node set CUR_NODES, pick up the nodes whose types are OP_OPEN_SUBEXP and which have corresponding back references in the regular expression. And register them to use them later for evaluating the - correspoding back references. */ + corresponding back references. */ static reg_errcode_t internal_function diff --git a/str_array.c b/str_array.c index aa82d71..460e2f1 100644 --- a/str_array.c +++ b/str_array.c @@ -3,7 +3,8 @@ */ /* - * Copyright (C) 1986, 1988, 1989, 1991-2013 the Free Software Foundation, Inc. + * Copyright (C) 1986, 1988, 1989, 1991-2013, 2016, + * the Free Software Foundation, Inc. * * This file is part of GAWK, the GNU implementation of the * AWK Programming Language. @@ -96,7 +97,7 @@ str_array_init(NODE *symbol ATTRIBUTE_UNUSED, NODE *subs ATTRIBUTE_UNUSED) } else null_array(symbol); - return (NODE **) ! NULL; + return & success_node; } @@ -137,7 +138,18 @@ str_lookup(NODE *symbol, NODE *subs) hash1 = code1 % (unsigned long) symbol->array_size; } - if (subs->stfmt != -1) { + + /* + * Repeat after me: "Array indices are always strings." + * "Array indices are always strings." + * "Array indices are always strings." + * "Array indices are always strings." + * .... + * If subs is a STRNUM, copy it; don't clear the MAYBE_NUM + * flag on it since other variables could be using the same + * reference-counted value. + */ + if (subs->stfmt != -1 || (subs->flags & MAYBE_NUM) != 0) { NODE *tmp; /* @@ -168,6 +180,8 @@ str_lookup(NODE *symbol, NODE *subs) subs = dupnode(subs); } + assert((subs->flags & MAYBE_NUM) == 0); + getbucket(b); b->ahnext = symbol->buckets[hash1]; symbol->buckets[hash1] = b; @@ -273,7 +287,7 @@ str_remove(NODE *symbol, NODE *subs) symbol->ainit(symbol, NULL); /* re-initialize symbol */ } - return (NODE **) ! NULL; /* return success */ + return & success_node; /* return success */ } } diff --git a/symbol.c b/symbol.c index 84574e7..fe7e375 100644 --- a/symbol.c +++ b/symbol.c @@ -117,7 +117,9 @@ lookup(const char *name) } unref(tmp); - return n; /* NULL or new place */ + if (n == NULL || n->type == Node_val) /* non-variable in SYMTAB */ + return NULL; + return n; /* new place */ } /* make_params --- allocate function parameters for the symbol table */ @@ -407,7 +409,8 @@ get_symbols(SYMBOL_TYPE what, bool sort) max = the_table->table_size * 2; list = assoc_list(the_table, "@unsorted", ASORTI); - emalloc(table, NODE **, (var_count + 1) * sizeof(NODE *), "get_symbols"); + /* add three: one for FUNCTAB, one for SYMTAB, and one for a final NULL */ + emalloc(table, NODE **, (var_count + 1 + 1 + 1) * sizeof(NODE *), "get_symbols"); for (i = count = 0; i < max; i += 2) { r = list[i+1]; @@ -415,6 +418,9 @@ get_symbols(SYMBOL_TYPE what, bool sort) continue; table[count++] = r; } + + table[count++] = func_table; + table[count++] = symbol_table; } efree(list); diff --git a/test/ChangeLog b/test/ChangeLog index 738c1af..280a80a 100644 --- a/test/ChangeLog +++ b/test/ChangeLog @@ -1,3 +1,219 @@ +2016-08-25 Arnold D. Robbins + + * 4.1.4: Release tar ball made. + +2016-08-01 Arnold D. Robbins + + * Makefile.am (ignrcas3): Adjust to check that the el_GR.xxx locale + is present. Move it to extra tests so it's not run by default. + +2016-08-02 Arnold D. Robbins + + * Makefile.am (sortfor2): New test. + * sortfor2.awk, sortfor2.in, sortfor2.ok: New files. + Thanks Christian Schneider + for the report. + + Unrelated: + + * Makefile.am (ignrcas3): New test. + * ignrcas3.awk, ignrcas3.ok: New files. + Based on test code from Norihiro Tanaka . + +2015-06-17 Arnold D. Robbins + + * Makefile.am (ofmtstrnum): New test. + * ofmtstrnum.awk, ofmtstrnum.ok: New files. + +2016-07-01 Arnold D. Robbins + + * arrayind1.awk, arrayind1.ok: Comment out prints to stderr to + avoid buffer flushing on obscure systems. + * dumpvars.ok, symtab6.ok, symtab8.ok: Update after code changes. + +2016-06-14 Arnold D. Robbins + + * Makefile.am (subback): New test. + * subback.awk, subback.in, subback.ok: New files. + Thanks to Mike Brennan for the test. + + Unrelated: + + * Makefile.am (FAIL_CODE1): Update the list. + +2016-06-14 Arnold D. Robbins + + * Makefile.am (GAWK_EXT_TESTS): Add mixed1. Who knows + how long that's been broken... + * mixed1.ok: Adjust to match what the code produces. + Thanks to John E. Malmberg for the report. + +2016-06-08 Arnold D. Robbins + + * symtab10.awk, symtab10.in, symtab10.ok: New files. + * Makefile.am (symtab10): New test. + Thanks to Hermann Peifer for the report. + +2016-06-01 Arnold D. Robbins + + * Makefile.am (hex2): New test. + * hex2.awk, hex2.in, hex2.ok: New files. + +2016-05-30 Arnold D. Robbins + + * Makefile.am (fsnul1): New test. + * fsnul1.awk, fsnul1.in, fsnul1.ok: New files. + +2016-05-25 Arnold D. Robbins + + * arrayind1.awk: Flush writes to stderr. We hope this helps + with the MinGW version. + +2016-05-12 Arnold D. Robbins + + * Makefile.am (arrayind1): New test. + * arrayind1.awk, arrayind1.in, arrayind1.ok: New files. + * Makefile.am (sigpipe1): New test. + * sigpipe1.awk, sigpipe1.ok: New files. + +2016-04-27 Arnold D. Robbins + + * Makefile.am (rscompat): New test. + * rscompat.awk, rscompat.in, rscompat.ok: New files. + +2016-04-24 Arnold D. Robbins + + * Makefile.am (pty1): Ignore errors. + +2016-04-17 Arnold D. Robbins + + * Makefile.am (pty1): Really disable test on z/OS. + +2016-04-11 Arnold D. Robbins + + * clos1way2.ok, clos1way3.ok, clos1way4.ok, clos1way5.ok: Update + after Eli's code changes. + * Makefile.am (pty1): Disable test on z/OS. + +2016-04-08 Eli Zaretskii + + * clos1way2.awk: + * clos1way3.awk: + * clos1way4.awk: + * clos1way5.awk: Use "&&" instead of ";" to chain commands, so + that it works with stock MS-Windows shells as well. + * clos1way2.ok: Adjust the error message to the change in command. + +2016-04-08 Arnold D. Robbins + + * watchpoint1: Use $(srcdir) on input file so out-of-tree + builds can run the test suite. + +2016-04-07 Arnold D. Robbins + + * clos1way2.ok, clos1way3.ok, clos1way4.ok: Updated after + code changes. + +2016-04-04 Arnold D. Robbins + + * Makefile.am (clos1way2, clos1way3, clos1way4, clos1way5): + New tests. + * clos1way2.awk, clos1way2.in, clos1way2.ok, clos1way3.awk, + clos1way3.ok, clos1way4.awk, clos1way4.ok, clos1way5.awk, + clos1way5.ok: New files. + * clos1way2.awk: Add call to fflush() to test it too. + * clos1way2.ok: Updated after code change. + +2016-02-18 Arnold D. Robbins + + * profile2.ok, profile5.ok: Adjust after code changes. + +2016-01-14 Arnold D. Robbins + + * Makefile.am (aryprm9): New test. + * aryprm9.awk, aryprm9.ok: New files. + + Unrelated: + + * ChangeLog: Remove spurious whitespace. + +2015-12-27 Arnold D. Robbins + + * Makefile.am (profile8): New test. + * profile8.awk, profile8.ok: New files. + +2015-11-24 Arnold D. Robbins + + * Makefile.am (watchpoint1): New test. + * watchpoint1.awk, watchpoint1.in, watchpoint1.ok, + watchpoint1.script: New files. + +2015-10-28 Arnold D. Robbins + + * Makefile.am (nulinsrc): New test. + * nulinsrc.awk, nulinsrc.ok: New files. + +2015-10-26 Arnold D. Robbins + + * id.awk: Sort the output. Helps on z/OS. + * id.ok: Adjust. + +2015-10-11 Arnold D. Robbins + + * Makefile.am (readbuf): New test. + * readbuf.awk, readbuf.ok: New files. + +2015-09-26 Arnold D. Robbins + + * Makefile.am (muldimposix): New test. + * muldimposix.awk, muldimposix.ok: New files. + +2015-09-18 Arnold D. Robbins + + * Makefile.am (fpat5): New test. + * fpat5.awk, fpat5.in, fpat5.ok: New files. + +2015-09-04 Arnold D. Robbins + + * profile.ok: Updated after code change. + +2015-08-28 Daniel Richard G. + + * Makefile.am: Generate the Maketests file without + reference to its directory, because putting it directly into + srcdir can be problematic (e.g. srcdir could be read-only). + (clean-local): Renamed from "clean", as Automake already defines + "clean" and warns us as much. + +2015-08-25 Arnold D. Robbins + + * mbstr1.ok: Updated after code change. + * Makefile.am (mbstr2): New test. + * mbstr2.awk, mbstr2.in, mbstr2.ok: New files. + +2015-06-25 Arnold D. Robbins + + * Makefile.am (negtime): Fix out-of-tree test run. + +2015-06-17 Andrew J. Schorr + + * inplace1.ok, inplace2.ok, inplace3.ok: Update line number in error + messages, since inplace.awk changed a bit. + +2015-05-29 Arnold D. Robbins + + * checknegtime.awk: New file. + * Makefile.am (negtime): Use checknegtime.awk to test results. + Should solve some problems with BSD and also MinGW. + +2015-05-21 Arnold D. Robbins + + * fts.awk: Really remove atime from the output. + This avoids spurious failures on heavily loaded systems. + + * Makefile.am: Add list of needed locales to "inadequate locale + support" message. + 2015-05-19 Arnold D. Robbins * 4.1.3: Release tar ball made. diff --git a/test/Makefile.am b/test/Makefile.am index 8838b70..e27dcf6 100644 --- a/test/Makefile.am +++ b/test/Makefile.am @@ -1,7 +1,7 @@ # # test/Makefile.am --- automake input file for gawk # -# Copyright (C) 1988-2015 the Free Software Foundation, Inc. +# Copyright (C) 1988-2016 the Free Software Foundation, Inc. # # This file is part of GAWK, the GNU implementation of the # AWK Programming Language. @@ -52,6 +52,9 @@ EXTRA_DIST = \ argarray.ok \ argtest.awk \ argtest.ok \ + arrayind1.awk \ + arrayind1.in \ + arrayind1.ok \ arrayparm.awk \ arrayparm.ok \ arrayprm2.awk \ @@ -93,6 +96,8 @@ EXTRA_DIST = \ aryprm7.ok \ aryprm8.awk \ aryprm8.ok \ + aryprm9.awk \ + aryprm9.ok \ arysubnm.awk \ arysubnm.ok \ asgext.awk \ @@ -137,6 +142,7 @@ EXTRA_DIST = \ charasbytes.awk \ charasbytes.in \ charasbytes.ok \ + checknegtime.awk \ childin.awk \ childin.in \ childin.ok \ @@ -144,6 +150,15 @@ EXTRA_DIST = \ clobber.ok \ clos1way.awk \ clos1way.ok \ + clos1way2.awk \ + clos1way2.in \ + clos1way2.ok \ + clos1way3.awk \ + clos1way3.ok \ + clos1way4.awk \ + clos1way4.ok \ + clos1way5.awk \ + clos1way5.ok \ closebad.awk \ closebad.ok \ clsflnam.awk \ @@ -289,6 +304,9 @@ EXTRA_DIST = \ fpat3.ok \ fpat4.awk \ fpat4.ok \ + fpat5.awk \ + fpat5.in \ + fpat5.ok \ fpatnull.awk \ fpatnull.in \ fpatnull.ok \ @@ -298,6 +316,9 @@ EXTRA_DIST = \ fsfwfs.awk \ fsfwfs.in \ fsfwfs.ok \ + fsnul1.awk \ + fsnul1.in \ + fsnul1.ok \ fsrs.awk \ fsrs.in \ fsrs.ok \ @@ -399,6 +420,9 @@ EXTRA_DIST = \ hello.awk \ hex.awk \ hex.ok \ + hex2.awk \ + hex2.in \ + hex2.ok \ hsprint.awk \ hsprint.ok \ icasefs.awk \ @@ -419,6 +443,8 @@ EXTRA_DIST = \ igncfs.ok \ ignrcas2.awk \ ignrcas2.ok \ + ignrcas3.awk \ + ignrcas3.ok \ ignrcase.awk \ ignrcase.in \ ignrcase.ok \ @@ -505,6 +531,8 @@ EXTRA_DIST = \ manglprm.ok \ manyfiles.awk \ manyfiles.ok \ + muldimposix.awk \ + muldimposix.ok \ match1.awk \ match1.ok \ match2.awk \ @@ -530,6 +558,9 @@ EXTRA_DIST = \ mbprintf4.ok \ mbstr1.awk \ mbstr1.ok \ + mbstr2.awk \ + mbstr2.in \ + mbstr2.ok \ membug1.awk \ membug1.in \ membug1.ok \ @@ -618,6 +649,8 @@ EXTRA_DIST = \ noparms.ok \ nors.in \ nors.ok \ + nulinsrc.awk \ + nulinsrc.ok \ nulrsend.awk \ nulrsend.in \ nulrsend.ok \ @@ -643,6 +676,8 @@ EXTRA_DIST = \ ofmts.awk \ ofmts.in \ ofmts.ok \ + ofmtstrnum.awk \ + ofmtstrnum.ok \ ofs1.awk \ ofs1.in \ ofs1.ok \ @@ -739,6 +774,8 @@ EXTRA_DIST = \ profile6.ok \ profile7.awk \ profile7.ok \ + profile8.awk \ + profile8.ok \ prt1eval.awk \ prt1eval.ok \ prtoeval.awk \ @@ -751,6 +788,8 @@ EXTRA_DIST = \ range1.awk \ range1.in \ range1.ok \ + readbuf.awk \ + readbuf.ok \ readdir.awk \ readdir0.awk \ readfile2.awk \ @@ -815,6 +854,9 @@ EXTRA_DIST = \ rs.awk \ rs.in \ rs.ok \ + rscompat.awk \ + rscompat.in \ + rscompat.ok \ rsgetline.awk \ rsgetline.in \ rsgetline.ok \ @@ -862,6 +904,8 @@ EXTRA_DIST = \ sclifin.ok \ shadow.awk \ shadow.ok \ + sigpipe1.awk \ + sigpipe1.ok \ sort1.awk \ sort1.ok \ sortempty.awk \ @@ -869,6 +913,9 @@ EXTRA_DIST = \ sortfor.awk \ sortfor.in \ sortfor.ok \ + sortfor2.awk \ + sortfor2.in \ + sortfor2.ok \ sortglos.awk \ sortglos.in \ sortglos.ok \ @@ -911,6 +958,9 @@ EXTRA_DIST = \ subamp.awk \ subamp.in \ subamp.ok \ + subback.awk \ + subback.in \ + subback.ok \ subi18n.awk \ subi18n.ok \ subsepnm.awk \ @@ -946,6 +996,9 @@ EXTRA_DIST = \ symtab8.ok \ symtab9.awk \ symtab9.ok \ + symtab10.awk \ + symtab10.in \ + symtab10.ok \ synerr1.awk \ synerr1.ok \ synerr2.awk \ @@ -974,6 +1027,10 @@ EXTRA_DIST = \ uparrfs.awk \ uparrfs.in \ uparrfs.ok \ + watchpoint1.awk \ + watchpoint1.in \ + watchpoint1.ok \ + watchpoint1.script \ wideidx.awk \ wideidx.in \ wideidx.ok \ @@ -1008,39 +1065,41 @@ CLEANFILES = core core.* fmtspcl.ok # try to keep these sorted. each letter starts a new line BASIC_TESTS = \ - addcomma anchgsub argarray arrayparm arrayprm2 arrayprm3 \ + addcomma anchgsub argarray arrayind1 arrayparm arrayprm2 arrayprm3 \ arrayref arrymem1 arryref2 arryref3 arryref4 arryref5 arynasty \ arynocls aryprm1 aryprm2 aryprm3 aryprm4 aryprm5 aryprm6 aryprm7 \ - aryprm8 arysubnm asgext awkpath \ + aryprm8 aryprm9 arysubnm asgext awkpath \ back89 backgsub badassign1 badbuild \ callparam childin clobber closebad clsflnam compare compare2 concat1 concat2 \ concat3 concat4 convfmt \ datanonl defref delargv delarpm2 delarprm delfunc dfamb1 dfastress dynlj \ eofsplit exit2 exitval1 exitval2 exitval3 \ fcall_exit fcall_exit2 fldchg fldchgnf fnamedat fnarray fnarray2 \ - fnaryscl fnasgnm fnmisc fordel forref forsimp fsbs fsrs fsspcoln \ + fnaryscl fnasgnm fnmisc fordel forref forsimp fsbs fsnul1 fsrs fsspcoln \ fstabplus funsemnl funsmnam funstack \ getline getline2 getline3 getline4 getline5 getlnbuf getnr2tb getnr2tm \ gsubasgn gsubtest gsubtst2 gsubtst3 gsubtst4 gsubtst5 gsubtst6 \ gsubtst7 gsubtst8 \ - hex hsprint \ + hex hex2 hsprint \ inpref inputred intest intprec iobug1 \ leaddig leadnl litoct longsub longwrds \ manglprm math membug1 messages minusstr mmap8k mtchi18n \ nasty nasty2 negexp negrange nested nfldstr nfloop nfneg nfset nlfldsep \ nlinstr nlstrina noeffect nofile nofmtch noloop1 noloop2 nonl \ - noparms nors nulrsend numindex numsubstr \ - octsub ofmt ofmta ofmtbig ofmtfidl ofmts ofs1 onlynl opasnidx opasnslf \ + noparms nors nulinsrc nulrsend numindex numsubstr \ + octsub ofmt ofmta ofmtbig ofmtfidl ofmts ofmtstrnum ofs1 onlynl \ + opasnidx opasnslf \ paramasfunc1 paramasfunc2 \ paramdup paramres paramtyp paramuninitglobal parse1 parsefld parseme \ pcntplus posix2008sub prdupval prec printf0 printf1 prmarscl prmreuse \ prt1eval prtoeval \ - rand range1 rebrackloc rebt8b1 redfilnm regeq regexpbrack regexpbrack2 \ + rand range1 readbuf rebrackloc rebt8b1 redfilnm \ + regeq regexpbrack regexpbrack2 \ regexprange regrange reindops \ - reparse resplit rri1 rs rsnul1nl rsnulbig rsnulbig2 rstest1 rstest2 \ + reparse resplit rri1 rs rscompat rsnul1nl rsnulbig rsnulbig2 rstest1 rstest2 \ rstest3 rstest4 rstest5 rswhite \ - scalar sclforin sclifin sortempty sortglos splitargv splitarr splitdef \ - splitvar splitwht strcat1 strnum1 strtod subamp subi18n \ + scalar sclforin sclifin sigpipe1 sortempty sortglos splitargv splitarr splitdef \ + splitvar splitwht strcat1 strnum1 strtod subamp subback subi18n \ subsepnm subslash substr swaplns synerr1 synerr2 tradanch tweakfld \ uninit2 uninit3 uninit4 uninit5 uninitialized unterm uparrfs \ wideidx wideidx2 widesub widesub2 widesub3 widesub4 wjposer1 \ @@ -1053,25 +1112,29 @@ UNIX_TESTS = \ GAWK_EXT_TESTS = \ aadelete1 aadelete2 aarray1 aasort aasorti argtest arraysort \ backw badargs beginfile1 beginfile2 binmode1 charasbytes \ - colonwarn clos1way crlf dbugeval delsub devfd devfd1 devfd2 dumpvars exit \ - fieldwdth fpat1 fpat2 fpat3 fpat4 fpatnull fsfwfs funlen \ + colonwarn clos1way clos1way2 clos1way3 clos1way4 clos1way5 \ + crlf dbugeval delsub devfd devfd1 devfd2 dumpvars exit \ + fieldwdth fpat1 fpat2 fpat3 fpat4 fpat5 fpatnull fsfwfs funlen \ functab1 functab2 functab3 fwtest fwtest2 fwtest3 \ genpot gensub gensub2 getlndir gnuops2 gnuops3 gnureops \ icasefs icasers id igncdym igncfs ignrcas2 ignrcase \ incdupe incdupe2 incdupe3 incdupe4 incdupe5 incdupe6 incdupe7 \ include include2 indirectbuiltin indirectcall indirectcall2 \ lint lintold lintwarn \ - manyfiles match1 match2 match3 mbstr1 \ + mixed1 manyfiles match1 match2 match3 mbstr1 mbstr2 \ + muldimposix \ nastyparm negtime next nondec nondec2 \ patsplit posix printfbad1 printfbad2 printfbad3 printfbad4 printhuge procinfs \ - profile0 profile1 profile2 profile3 profile4 profile5 profile6 profile7 pty1 \ + profile0 profile1 profile2 profile3 profile4 profile5 profile6 \ + profile7 profile8 pty1 \ rebuf regnul1 regnul2 regx8bit reginttrad reint reint2 rsgetline rsglstdin rsstart1 \ - rsstart2 rsstart3 rstest6 shadow sortfor sortu split_after_fpat \ + rsstart2 rsstart3 rstest6 shadow sortfor sortfor2 sortu split_after_fpat \ splitarg4 strftime \ strtonum switch2 symtab1 symtab2 symtab3 symtab4 symtab5 symtab6 \ - symtab7 symtab8 symtab9 + symtab7 symtab8 symtab9 symtab10 \ + watchpoint1 -EXTRA_TESTS = inftest regtest +EXTRA_TESTS = inftest regtest ignrcas3 INET_TESTS = inetdayu inetdayt inetechu inetecht @@ -1099,7 +1162,10 @@ NEED_LINT_OLD = lintold # List of the tests which fail with EXIT CODE 1 FAIL_CODE1 = \ - fnarray2 fnmisc gsubasgn mixed1 noparms paramdup synerr1 synerr2 unterm + badassign1 badbuild callparam delfunc fcall_exit fcall_exit2 \ + fnamedat fnarray fnarray2 fnasgnm fnmisc funsmnam gsubasgn \ + incdupe2 lintwarn match2 mixed1 noparms paramasfunc1 paramasfunc2 \ + paramdup paramres parseme readbuf synerr1 synerr2 unterm # List of files which have .ok versions for MPFR CHECK_MPFR = \ @@ -1156,6 +1222,7 @@ charset-tests-all: $(MAKE) charset-msg-start charset-tests charset-msg-end; \ else \ echo %%%%%%%%%% Inadequate locale support: skipping charset tests. ; \ + echo %%%%%%%%%% At least en_US.UTF-8, ru_RU.UTF-8 and ja_JP.UTF-8 are needed. ; \ fi charset-tests: $(LOCALE_CHARSET_TESTS) @@ -1222,7 +1289,7 @@ charset-msg-start: @echo "======== Starting tests that can vary based on character set or locale support ========" @echo "**************************************************************************" @echo "* Some or all of these tests may fail if you have inadequate or missing *" - @echo "* locale support At least en_US.UTF-8, ru_RU.UTF-8 and ja_JP.UTF-8 are *" + @echo "* locale support. At least en_US.UTF-8, ru_RU.UTF-8 and ja_JP.UTF-8 are *" @echo "* needed. However, if you see this message, the Makefile thinks you have *" @echo "* what you need ... *" @echo "**************************************************************************" @@ -1703,6 +1770,12 @@ mbstr1:: AWKPATH="$(srcdir)" $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@ @-$(CMP) "$(srcdir)"/$@.ok _$@ && rm -f _$@ +mbstr2:: + @echo $@ + @[ -z "$$GAWKLOCALE" ] && GAWKLOCALE=en_US.UTF-8; \ + AWKPATH="$(srcdir)" $(AWK) -f $@.awk < "$(srcdir)"/$@.in >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@ + @-$(CMP) "$(srcdir)"/$@.ok _$@ && rm -f _$@ + printfbad2: printfbad2.ok @echo $@ @$(AWK) --lint -f "$(srcdir)"/$@.awk "$(srcdir)"/$@.in 2>&1 | sed 's;$(srcdir)/;;g' >_$@ || echo EXIT CODE: $$? >>_$@ @@ -1774,6 +1847,12 @@ profile7: @sed 1,2d < ap-$@.out > _$@; rm ap-$@.out @-$(CMP) "$(srcdir)"/$@.ok _$@ && rm -f _$@ +profile8: + @echo $@ + @$(AWK) --pretty=ap-$@.out -f "$(srcdir)"/$@.awk < /dev/null + @sed 1,2d < ap-$@.out > _$@; rm ap-$@.out + @-$(CMP) "$(srcdir)"/$@.ok _$@ && rm -f _$@ + posix2008sub: @echo $@ @$(AWK) --posix -f "$(srcdir)"/$@.awk > _$@ 2>&1 @@ -2072,17 +2151,52 @@ paramasfunc2:: negtime:: @echo $@ @TZ=GMT AWKPATH="$(srcdir)" $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@ + @AWKPATH="$(srcdir)" $(AWK) -f checknegtime.awk "$(srcdir)"/$@.ok _$@ && rm -f _$@ + +muldimposix:: + @echo $@ + @AWKPATH="$(srcdir)" $(AWK) -f $@.awk --posix >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@ + @-$(CMP) "$(srcdir)"/$@.ok _$@ && rm -f _$@ + +watchpoint1: + @echo $@ + @AWKPATH="$(srcdir)" $(AWK) -D -f $@.awk $(srcdir)/$@.in < $(srcdir)/$@.script >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@ + @-$(CMP) "$(srcdir)"/$@.ok _$@ && rm -f _$@ + +pty1: + @echo $@ + @-case `uname` in \ + *[Oo][Ss]/390*) : ;; \ + *) AWKPATH="$(srcdir)" $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@ ; \ + $(CMP) "$(srcdir)"/$@.ok _$@ && rm -f _$@ ;; \ + esac + +rscompat: + @echo $@ + @AWKPATH="$(srcdir)" $(AWK) --traditional -f $@.awk "$(srcdir)/$@.in" >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@ @-$(CMP) "$(srcdir)"/$@.ok _$@ && rm -f _$@ +symtab10: + @echo $@ + @AWKPATH="$(srcdir)" $(AWK) -D -f $@.awk < "$(srcdir)/$@.in" >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@ + @-$(CMP) "$(srcdir)"/$@.ok _$@ && rm -f _$@ + +ignrcas3:: + @echo $@ + @if locale -a | grep el_GR.iso88597 > /dev/null ; then \ + GAWKLOCALE=el_GR.iso88597 \ + AWKPATH="$(srcdir)" $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@ ; \ + $(CMP) "$(srcdir)"/$@.ok _$@ && rm -f _$@ ; \ + fi # Targets generated for other tests: include Maketests -$(srcdir)/Maketests: $(srcdir)/Makefile.am $(srcdir)/Gentests +Maketests: $(srcdir)/Makefile.am $(srcdir)/Gentests files=`cd "$(srcdir)" && echo *.awk *.in`; \ - $(AWK) -f "$(srcdir)"/Gentests "$(srcdir)"/Makefile.am $$files > "$(srcdir)"/Maketests + $(AWK) -f "$(srcdir)"/Gentests "$(srcdir)"/Makefile.am $$files > $@ -clean: +clean-local: rm -fr _* core core.* fmtspcl.ok junk strftime.ok test1 test2 \ seq *~ readfile.ok fork.tmp.* testext.awk fts.ok readdir.ok \ mmap8k.ok profile1.ok diff --git a/test/Makefile.in b/test/Makefile.in index 4c0fd9e..0a5595b 100644 --- a/test/Makefile.in +++ b/test/Makefile.in @@ -17,7 +17,7 @@ # # test/Makefile.am --- automake input file for gawk # -# Copyright (C) 1988-2015 the Free Software Foundation, Inc. +# Copyright (C) 1988-2016 the Free Software Foundation, Inc. # # This file is part of GAWK, the GNU implementation of the # AWK Programming Language. @@ -309,6 +309,9 @@ EXTRA_DIST = \ argarray.ok \ argtest.awk \ argtest.ok \ + arrayind1.awk \ + arrayind1.in \ + arrayind1.ok \ arrayparm.awk \ arrayparm.ok \ arrayprm2.awk \ @@ -350,6 +353,8 @@ EXTRA_DIST = \ aryprm7.ok \ aryprm8.awk \ aryprm8.ok \ + aryprm9.awk \ + aryprm9.ok \ arysubnm.awk \ arysubnm.ok \ asgext.awk \ @@ -394,6 +399,7 @@ EXTRA_DIST = \ charasbytes.awk \ charasbytes.in \ charasbytes.ok \ + checknegtime.awk \ childin.awk \ childin.in \ childin.ok \ @@ -401,6 +407,15 @@ EXTRA_DIST = \ clobber.ok \ clos1way.awk \ clos1way.ok \ + clos1way2.awk \ + clos1way2.in \ + clos1way2.ok \ + clos1way3.awk \ + clos1way3.ok \ + clos1way4.awk \ + clos1way4.ok \ + clos1way5.awk \ + clos1way5.ok \ closebad.awk \ closebad.ok \ clsflnam.awk \ @@ -546,6 +561,9 @@ EXTRA_DIST = \ fpat3.ok \ fpat4.awk \ fpat4.ok \ + fpat5.awk \ + fpat5.in \ + fpat5.ok \ fpatnull.awk \ fpatnull.in \ fpatnull.ok \ @@ -555,6 +573,9 @@ EXTRA_DIST = \ fsfwfs.awk \ fsfwfs.in \ fsfwfs.ok \ + fsnul1.awk \ + fsnul1.in \ + fsnul1.ok \ fsrs.awk \ fsrs.in \ fsrs.ok \ @@ -656,6 +677,9 @@ EXTRA_DIST = \ hello.awk \ hex.awk \ hex.ok \ + hex2.awk \ + hex2.in \ + hex2.ok \ hsprint.awk \ hsprint.ok \ icasefs.awk \ @@ -676,6 +700,8 @@ EXTRA_DIST = \ igncfs.ok \ ignrcas2.awk \ ignrcas2.ok \ + ignrcas3.awk \ + ignrcas3.ok \ ignrcase.awk \ ignrcase.in \ ignrcase.ok \ @@ -762,6 +788,8 @@ EXTRA_DIST = \ manglprm.ok \ manyfiles.awk \ manyfiles.ok \ + muldimposix.awk \ + muldimposix.ok \ match1.awk \ match1.ok \ match2.awk \ @@ -787,6 +815,9 @@ EXTRA_DIST = \ mbprintf4.ok \ mbstr1.awk \ mbstr1.ok \ + mbstr2.awk \ + mbstr2.in \ + mbstr2.ok \ membug1.awk \ membug1.in \ membug1.ok \ @@ -875,6 +906,8 @@ EXTRA_DIST = \ noparms.ok \ nors.in \ nors.ok \ + nulinsrc.awk \ + nulinsrc.ok \ nulrsend.awk \ nulrsend.in \ nulrsend.ok \ @@ -900,6 +933,8 @@ EXTRA_DIST = \ ofmts.awk \ ofmts.in \ ofmts.ok \ + ofmtstrnum.awk \ + ofmtstrnum.ok \ ofs1.awk \ ofs1.in \ ofs1.ok \ @@ -996,6 +1031,8 @@ EXTRA_DIST = \ profile6.ok \ profile7.awk \ profile7.ok \ + profile8.awk \ + profile8.ok \ prt1eval.awk \ prt1eval.ok \ prtoeval.awk \ @@ -1008,6 +1045,8 @@ EXTRA_DIST = \ range1.awk \ range1.in \ range1.ok \ + readbuf.awk \ + readbuf.ok \ readdir.awk \ readdir0.awk \ readfile2.awk \ @@ -1072,6 +1111,9 @@ EXTRA_DIST = \ rs.awk \ rs.in \ rs.ok \ + rscompat.awk \ + rscompat.in \ + rscompat.ok \ rsgetline.awk \ rsgetline.in \ rsgetline.ok \ @@ -1119,6 +1161,8 @@ EXTRA_DIST = \ sclifin.ok \ shadow.awk \ shadow.ok \ + sigpipe1.awk \ + sigpipe1.ok \ sort1.awk \ sort1.ok \ sortempty.awk \ @@ -1126,6 +1170,9 @@ EXTRA_DIST = \ sortfor.awk \ sortfor.in \ sortfor.ok \ + sortfor2.awk \ + sortfor2.in \ + sortfor2.ok \ sortglos.awk \ sortglos.in \ sortglos.ok \ @@ -1168,6 +1215,9 @@ EXTRA_DIST = \ subamp.awk \ subamp.in \ subamp.ok \ + subback.awk \ + subback.in \ + subback.ok \ subi18n.awk \ subi18n.ok \ subsepnm.awk \ @@ -1203,6 +1253,9 @@ EXTRA_DIST = \ symtab8.ok \ symtab9.awk \ symtab9.ok \ + symtab10.awk \ + symtab10.in \ + symtab10.ok \ synerr1.awk \ synerr1.ok \ synerr2.awk \ @@ -1231,6 +1284,10 @@ EXTRA_DIST = \ uparrfs.awk \ uparrfs.in \ uparrfs.ok \ + watchpoint1.awk \ + watchpoint1.in \ + watchpoint1.ok \ + watchpoint1.script \ wideidx.awk \ wideidx.in \ wideidx.ok \ @@ -1264,39 +1321,41 @@ CLEANFILES = core core.* fmtspcl.ok # try to keep these sorted. each letter starts a new line BASIC_TESTS = \ - addcomma anchgsub argarray arrayparm arrayprm2 arrayprm3 \ + addcomma anchgsub argarray arrayind1 arrayparm arrayprm2 arrayprm3 \ arrayref arrymem1 arryref2 arryref3 arryref4 arryref5 arynasty \ arynocls aryprm1 aryprm2 aryprm3 aryprm4 aryprm5 aryprm6 aryprm7 \ - aryprm8 arysubnm asgext awkpath \ + aryprm8 aryprm9 arysubnm asgext awkpath \ back89 backgsub badassign1 badbuild \ callparam childin clobber closebad clsflnam compare compare2 concat1 concat2 \ concat3 concat4 convfmt \ datanonl defref delargv delarpm2 delarprm delfunc dfamb1 dfastress dynlj \ eofsplit exit2 exitval1 exitval2 exitval3 \ fcall_exit fcall_exit2 fldchg fldchgnf fnamedat fnarray fnarray2 \ - fnaryscl fnasgnm fnmisc fordel forref forsimp fsbs fsrs fsspcoln \ + fnaryscl fnasgnm fnmisc fordel forref forsimp fsbs fsnul1 fsrs fsspcoln \ fstabplus funsemnl funsmnam funstack \ getline getline2 getline3 getline4 getline5 getlnbuf getnr2tb getnr2tm \ gsubasgn gsubtest gsubtst2 gsubtst3 gsubtst4 gsubtst5 gsubtst6 \ gsubtst7 gsubtst8 \ - hex hsprint \ + hex hex2 hsprint \ inpref inputred intest intprec iobug1 \ leaddig leadnl litoct longsub longwrds \ manglprm math membug1 messages minusstr mmap8k mtchi18n \ nasty nasty2 negexp negrange nested nfldstr nfloop nfneg nfset nlfldsep \ nlinstr nlstrina noeffect nofile nofmtch noloop1 noloop2 nonl \ - noparms nors nulrsend numindex numsubstr \ - octsub ofmt ofmta ofmtbig ofmtfidl ofmts ofs1 onlynl opasnidx opasnslf \ + noparms nors nulinsrc nulrsend numindex numsubstr \ + octsub ofmt ofmta ofmtbig ofmtfidl ofmts ofmtstrnum ofs1 onlynl \ + opasnidx opasnslf \ paramasfunc1 paramasfunc2 \ paramdup paramres paramtyp paramuninitglobal parse1 parsefld parseme \ pcntplus posix2008sub prdupval prec printf0 printf1 prmarscl prmreuse \ prt1eval prtoeval \ - rand range1 rebrackloc rebt8b1 redfilnm regeq regexpbrack regexpbrack2 \ + rand range1 readbuf rebrackloc rebt8b1 redfilnm \ + regeq regexpbrack regexpbrack2 \ regexprange regrange reindops \ - reparse resplit rri1 rs rsnul1nl rsnulbig rsnulbig2 rstest1 rstest2 \ + reparse resplit rri1 rs rscompat rsnul1nl rsnulbig rsnulbig2 rstest1 rstest2 \ rstest3 rstest4 rstest5 rswhite \ - scalar sclforin sclifin sortempty sortglos splitargv splitarr splitdef \ - splitvar splitwht strcat1 strnum1 strtod subamp subi18n \ + scalar sclforin sclifin sigpipe1 sortempty sortglos splitargv splitarr splitdef \ + splitvar splitwht strcat1 strnum1 strtod subamp subback subi18n \ subsepnm subslash substr swaplns synerr1 synerr2 tradanch tweakfld \ uninit2 uninit3 uninit4 uninit5 uninitialized unterm uparrfs \ wideidx wideidx2 widesub widesub2 widesub3 widesub4 wjposer1 \ @@ -1309,25 +1368,29 @@ UNIX_TESTS = \ GAWK_EXT_TESTS = \ aadelete1 aadelete2 aarray1 aasort aasorti argtest arraysort \ backw badargs beginfile1 beginfile2 binmode1 charasbytes \ - colonwarn clos1way crlf dbugeval delsub devfd devfd1 devfd2 dumpvars exit \ - fieldwdth fpat1 fpat2 fpat3 fpat4 fpatnull fsfwfs funlen \ + colonwarn clos1way clos1way2 clos1way3 clos1way4 clos1way5 \ + crlf dbugeval delsub devfd devfd1 devfd2 dumpvars exit \ + fieldwdth fpat1 fpat2 fpat3 fpat4 fpat5 fpatnull fsfwfs funlen \ functab1 functab2 functab3 fwtest fwtest2 fwtest3 \ genpot gensub gensub2 getlndir gnuops2 gnuops3 gnureops \ icasefs icasers id igncdym igncfs ignrcas2 ignrcase \ incdupe incdupe2 incdupe3 incdupe4 incdupe5 incdupe6 incdupe7 \ include include2 indirectbuiltin indirectcall indirectcall2 \ lint lintold lintwarn \ - manyfiles match1 match2 match3 mbstr1 \ + mixed1 manyfiles match1 match2 match3 mbstr1 mbstr2 \ + muldimposix \ nastyparm negtime next nondec nondec2 \ patsplit posix printfbad1 printfbad2 printfbad3 printfbad4 printhuge procinfs \ - profile0 profile1 profile2 profile3 profile4 profile5 profile6 profile7 pty1 \ + profile0 profile1 profile2 profile3 profile4 profile5 profile6 \ + profile7 profile8 pty1 \ rebuf regnul1 regnul2 regx8bit reginttrad reint reint2 rsgetline rsglstdin rsstart1 \ - rsstart2 rsstart3 rstest6 shadow sortfor sortu split_after_fpat \ + rsstart2 rsstart3 rstest6 shadow sortfor sortfor2 sortu split_after_fpat \ splitarg4 strftime \ strtonum switch2 symtab1 symtab2 symtab3 symtab4 symtab5 symtab6 \ - symtab7 symtab8 symtab9 + symtab7 symtab8 symtab9 symtab10 \ + watchpoint1 -EXTRA_TESTS = inftest regtest +EXTRA_TESTS = inftest regtest ignrcas3 INET_TESTS = inetdayu inetdayt inetechu inetecht MACHINE_TESTS = double1 double2 fmtspcl intformat MPFR_TESTS = mpfrnr mpfrnegzero mpfrmemok1 mpfrrem mpfrrnd mpfrieee \ @@ -1354,7 +1417,10 @@ NEED_LINT_OLD = lintold # List of the tests which fail with EXIT CODE 1 FAIL_CODE1 = \ - fnarray2 fnmisc gsubasgn mixed1 noparms paramdup synerr1 synerr2 unterm + badassign1 badbuild callparam delfunc fcall_exit fcall_exit2 \ + fnamedat fnarray fnarray2 fnasgnm fnmisc funsmnam gsubasgn \ + incdupe2 lintwarn match2 mixed1 noparms paramasfunc1 paramasfunc2 \ + paramdup paramres parseme readbuf synerr1 synerr2 unterm # List of files which have .ok versions for MPFR @@ -1488,7 +1554,9 @@ distclean-generic: maintainer-clean-generic: @echo "This command is intended for maintainers to use" @echo "it deletes files that may require special tools to rebuild." -clean-am: clean-generic mostlyclean-am +clean: clean-am + +clean-am: clean-generic clean-local mostlyclean-am distclean: distclean-am -rm -f Makefile @@ -1554,14 +1622,14 @@ uninstall-am: .MAKE: install-am install-strip -.PHONY: all all-am check check-am clean clean-generic cscopelist-am \ - ctags-am distclean distclean-generic distdir dvi dvi-am html \ - html-am info info-am install install-am install-data \ - install-data-am install-dvi install-dvi-am install-exec \ - install-exec-am install-html install-html-am install-info \ - install-info-am install-man install-pdf install-pdf-am \ - install-ps install-ps-am install-strip installcheck \ - installcheck-am installdirs maintainer-clean \ +.PHONY: all all-am check check-am clean clean-generic clean-local \ + cscopelist-am ctags-am distclean distclean-generic distdir dvi \ + dvi-am html html-am info info-am install install-am \ + install-data install-data-am install-dvi install-dvi-am \ + install-exec install-exec-am install-html install-html-am \ + install-info install-info-am install-man install-pdf \ + install-pdf-am install-ps install-ps-am install-strip \ + installcheck installcheck-am installdirs maintainer-clean \ maintainer-clean-generic mostlyclean mostlyclean-generic pdf \ pdf-am ps ps-am tags-am uninstall uninstall-am @@ -1596,6 +1664,7 @@ charset-tests-all: $(MAKE) charset-msg-start charset-tests charset-msg-end; \ else \ echo %%%%%%%%%% Inadequate locale support: skipping charset tests. ; \ + echo %%%%%%%%%% At least en_US.UTF-8, ru_RU.UTF-8 and ja_JP.UTF-8 are needed. ; \ fi charset-tests: $(LOCALE_CHARSET_TESTS) @@ -1662,7 +1731,7 @@ charset-msg-start: @echo "======== Starting tests that can vary based on character set or locale support ========" @echo "**************************************************************************" @echo "* Some or all of these tests may fail if you have inadequate or missing *" - @echo "* locale support At least en_US.UTF-8, ru_RU.UTF-8 and ja_JP.UTF-8 are *" + @echo "* locale support. At least en_US.UTF-8, ru_RU.UTF-8 and ja_JP.UTF-8 are *" @echo "* needed. However, if you see this message, the Makefile thinks you have *" @echo "* what you need ... *" @echo "**************************************************************************" @@ -2141,6 +2210,12 @@ mbstr1:: AWKPATH="$(srcdir)" $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@ @-$(CMP) "$(srcdir)"/$@.ok _$@ && rm -f _$@ +mbstr2:: + @echo $@ + @[ -z "$$GAWKLOCALE" ] && GAWKLOCALE=en_US.UTF-8; \ + AWKPATH="$(srcdir)" $(AWK) -f $@.awk < "$(srcdir)"/$@.in >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@ + @-$(CMP) "$(srcdir)"/$@.ok _$@ && rm -f _$@ + printfbad2: printfbad2.ok @echo $@ @$(AWK) --lint -f "$(srcdir)"/$@.awk "$(srcdir)"/$@.in 2>&1 | sed 's;$(srcdir)/;;g' >_$@ || echo EXIT CODE: $$? >>_$@ @@ -2211,6 +2286,12 @@ profile7: @sed 1,2d < ap-$@.out > _$@; rm ap-$@.out @-$(CMP) "$(srcdir)"/$@.ok _$@ && rm -f _$@ +profile8: + @echo $@ + @$(AWK) --pretty=ap-$@.out -f "$(srcdir)"/$@.awk < /dev/null + @sed 1,2d < ap-$@.out > _$@; rm ap-$@.out + @-$(CMP) "$(srcdir)"/$@.ok _$@ && rm -f _$@ + posix2008sub: @echo $@ @$(AWK) --posix -f "$(srcdir)"/$@.awk > _$@ 2>&1 @@ -2509,7 +2590,43 @@ paramasfunc2:: negtime:: @echo $@ @TZ=GMT AWKPATH="$(srcdir)" $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@ + @AWKPATH="$(srcdir)" $(AWK) -f checknegtime.awk "$(srcdir)"/$@.ok _$@ && rm -f _$@ + +muldimposix:: + @echo $@ + @AWKPATH="$(srcdir)" $(AWK) -f $@.awk --posix >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@ @-$(CMP) "$(srcdir)"/$@.ok _$@ && rm -f _$@ + +watchpoint1: + @echo $@ + @AWKPATH="$(srcdir)" $(AWK) -D -f $@.awk $(srcdir)/$@.in < $(srcdir)/$@.script >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@ + @-$(CMP) "$(srcdir)"/$@.ok _$@ && rm -f _$@ + +pty1: + @echo $@ + @-case `uname` in \ + *[Oo][Ss]/390*) : ;; \ + *) AWKPATH="$(srcdir)" $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@ ; \ + $(CMP) "$(srcdir)"/$@.ok _$@ && rm -f _$@ ;; \ + esac + +rscompat: + @echo $@ + @AWKPATH="$(srcdir)" $(AWK) --traditional -f $@.awk "$(srcdir)/$@.in" >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@ + @-$(CMP) "$(srcdir)"/$@.ok _$@ && rm -f _$@ + +symtab10: + @echo $@ + @AWKPATH="$(srcdir)" $(AWK) -D -f $@.awk < "$(srcdir)/$@.in" >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@ + @-$(CMP) "$(srcdir)"/$@.ok _$@ && rm -f _$@ + +ignrcas3:: + @echo $@ + @if locale -a | grep el_GR.iso88597 > /dev/null ; then \ + GAWKLOCALE=el_GR.iso88597 \ + AWKPATH="$(srcdir)" $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@ ; \ + $(CMP) "$(srcdir)"/$@.ok _$@ && rm -f _$@ ; \ + fi Gt-dummy: # file Maketests, generated from Makefile.am by the Gentests program addcomma: @@ -2522,6 +2639,11 @@ anchgsub: @AWKPATH="$(srcdir)" $(AWK) -f $@.awk < "$(srcdir)"/$@.in >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@ @-$(CMP) "$(srcdir)"/$@.ok _$@ && rm -f _$@ +arrayind1: + @echo $@ + @AWKPATH="$(srcdir)" $(AWK) -f $@.awk < "$(srcdir)"/$@.in >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@ + @-$(CMP) "$(srcdir)"/$@.ok _$@ && rm -f _$@ + arrayparm: @echo $@ @AWKPATH="$(srcdir)" $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@ @@ -2612,6 +2734,11 @@ aryprm8: @AWKPATH="$(srcdir)" $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@ @-$(CMP) "$(srcdir)"/$@.ok _$@ && rm -f _$@ +aryprm9: + @echo $@ + @AWKPATH="$(srcdir)" $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@ + @-$(CMP) "$(srcdir)"/$@.ok _$@ && rm -f _$@ + arysubnm: @echo $@ @AWKPATH="$(srcdir)" $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@ @@ -2817,6 +2944,11 @@ fsbs: @AWKPATH="$(srcdir)" $(AWK) -f $@.awk < "$(srcdir)"/$@.in >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@ @-$(CMP) "$(srcdir)"/$@.ok _$@ && rm -f _$@ +fsnul1: + @echo $@ + @AWKPATH="$(srcdir)" $(AWK) -f $@.awk < "$(srcdir)"/$@.in >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@ + @-$(CMP) "$(srcdir)"/$@.ok _$@ && rm -f _$@ + fsrs: @echo $@ @AWKPATH="$(srcdir)" $(AWK) -f $@.awk < "$(srcdir)"/$@.in >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@ @@ -2912,6 +3044,11 @@ hex: @AWKPATH="$(srcdir)" $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@ @-$(CMP) "$(srcdir)"/$@.ok _$@ && rm -f _$@ +hex2: + @echo $@ + @AWKPATH="$(srcdir)" $(AWK) -f $@.awk < "$(srcdir)"/$@.in >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@ + @-$(CMP) "$(srcdir)"/$@.ok _$@ && rm -f _$@ + hsprint: @echo $@ @AWKPATH="$(srcdir)" $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@ @@ -3062,6 +3199,11 @@ noparms: @AWKPATH="$(srcdir)" $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@ @-$(CMP) "$(srcdir)"/$@.ok _$@ && rm -f _$@ +nulinsrc: + @echo $@ + @AWKPATH="$(srcdir)" $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@ + @-$(CMP) "$(srcdir)"/$@.ok _$@ && rm -f _$@ + nulrsend: @echo $@ @AWKPATH="$(srcdir)" $(AWK) -f $@.awk < "$(srcdir)"/$@.in >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@ @@ -3107,6 +3249,11 @@ ofmts: @AWKPATH="$(srcdir)" $(AWK) -f $@.awk < "$(srcdir)"/$@.in >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@ @-$(CMP) "$(srcdir)"/$@.ok _$@ && rm -f _$@ +ofmtstrnum: + @echo $@ + @AWKPATH="$(srcdir)" $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@ + @-$(CMP) "$(srcdir)"/$@.ok _$@ && rm -f _$@ + ofs1: @echo $@ @AWKPATH="$(srcdir)" $(AWK) -f $@.awk < "$(srcdir)"/$@.in >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@ @@ -3214,6 +3361,11 @@ range1: @AWKPATH="$(srcdir)" $(AWK) -f $@.awk < "$(srcdir)"/$@.in >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@ @-$(CMP) "$(srcdir)"/$@.ok _$@ && rm -f _$@ +readbuf: + @echo $@ + @AWKPATH="$(srcdir)" $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@ + @-$(CMP) "$(srcdir)"/$@.ok _$@ && rm -f _$@ + rebrackloc: @echo $@ @AWKPATH="$(srcdir)" $(AWK) -f $@.awk < "$(srcdir)"/$@.in >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@ @@ -3319,6 +3471,11 @@ sclifin: @AWKPATH="$(srcdir)" $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@ @-$(CMP) "$(srcdir)"/$@.ok _$@ && rm -f _$@ +sigpipe1: + @echo $@ + @AWKPATH="$(srcdir)" $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@ + @-$(CMP) "$(srcdir)"/$@.ok _$@ && rm -f _$@ + sortempty: @echo $@ @AWKPATH="$(srcdir)" $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@ @@ -3369,6 +3526,11 @@ strtod: @AWKPATH="$(srcdir)" $(AWK) -f $@.awk < "$(srcdir)"/$@.in >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@ @-$(CMP) "$(srcdir)"/$@.ok _$@ && rm -f _$@ +subback: + @echo $@ + @AWKPATH="$(srcdir)" $(AWK) -f $@.awk < "$(srcdir)"/$@.in >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@ + @-$(CMP) "$(srcdir)"/$@.ok _$@ && rm -f _$@ + subsepnm: @echo $@ @AWKPATH="$(srcdir)" $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@ @@ -3494,6 +3656,26 @@ backw: @AWKPATH="$(srcdir)" $(AWK) -f $@.awk < "$(srcdir)"/$@.in >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@ @-$(CMP) "$(srcdir)"/$@.ok _$@ && rm -f _$@ +clos1way2: + @echo $@ + @AWKPATH="$(srcdir)" $(AWK) -f $@.awk < "$(srcdir)"/$@.in >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@ + @-$(CMP) "$(srcdir)"/$@.ok _$@ && rm -f _$@ + +clos1way3: + @echo $@ + @AWKPATH="$(srcdir)" $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@ + @-$(CMP) "$(srcdir)"/$@.ok _$@ && rm -f _$@ + +clos1way4: + @echo $@ + @AWKPATH="$(srcdir)" $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@ + @-$(CMP) "$(srcdir)"/$@.ok _$@ && rm -f _$@ + +clos1way5: + @echo $@ + @AWKPATH="$(srcdir)" $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@ + @-$(CMP) "$(srcdir)"/$@.ok _$@ && rm -f _$@ + crlf: @echo $@ @AWKPATH="$(srcdir)" $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@ @@ -3529,6 +3711,11 @@ fpat4: @AWKPATH="$(srcdir)" $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@ @-$(CMP) "$(srcdir)"/$@.ok _$@ && rm -f _$@ +fpat5: + @echo $@ + @AWKPATH="$(srcdir)" $(AWK) -f $@.awk < "$(srcdir)"/$@.in >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@ + @-$(CMP) "$(srcdir)"/$@.ok _$@ && rm -f _$@ + fpatnull: @echo $@ @AWKPATH="$(srcdir)" $(AWK) -f $@.awk < "$(srcdir)"/$@.in >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@ @@ -3724,11 +3911,6 @@ procinfs: @AWKPATH="$(srcdir)" $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@ @-$(CMP) "$(srcdir)"/$@.ok _$@ && rm -f _$@ -pty1: - @echo $@ - @AWKPATH="$(srcdir)" $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@ - @-$(CMP) "$(srcdir)"/$@.ok _$@ && rm -f _$@ - regnul1: @echo $@ @AWKPATH="$(srcdir)" $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@ @@ -3764,6 +3946,11 @@ sortfor: @AWKPATH="$(srcdir)" $(AWK) -f $@.awk < "$(srcdir)"/$@.in >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@ @-$(CMP) "$(srcdir)"/$@.ok _$@ && rm -f _$@ +sortfor2: + @echo $@ + @AWKPATH="$(srcdir)" $(AWK) -f $@.awk < "$(srcdir)"/$@.in >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@ + @-$(CMP) "$(srcdir)"/$@.ok _$@ && rm -f _$@ + sortu: @echo $@ @AWKPATH="$(srcdir)" $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@ @@ -3927,11 +4114,11 @@ time: # Targets generated for other tests: -$(srcdir)/Maketests: $(srcdir)/Makefile.am $(srcdir)/Gentests +Maketests: $(srcdir)/Makefile.am $(srcdir)/Gentests files=`cd "$(srcdir)" && echo *.awk *.in`; \ - $(AWK) -f "$(srcdir)"/Gentests "$(srcdir)"/Makefile.am $$files > "$(srcdir)"/Maketests + $(AWK) -f "$(srcdir)"/Gentests "$(srcdir)"/Makefile.am $$files > $@ -clean: +clean-local: rm -fr _* core core.* fmtspcl.ok junk strftime.ok test1 test2 \ seq *~ readfile.ok fork.tmp.* testext.awk fts.ok readdir.ok \ mmap8k.ok profile1.ok diff --git a/test/Maketests b/test/Maketests index 651ff03..c48b76d 100644 --- a/test/Maketests +++ b/test/Maketests @@ -10,6 +10,11 @@ anchgsub: @AWKPATH="$(srcdir)" $(AWK) -f $@.awk < "$(srcdir)"/$@.in >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@ @-$(CMP) "$(srcdir)"/$@.ok _$@ && rm -f _$@ +arrayind1: + @echo $@ + @AWKPATH="$(srcdir)" $(AWK) -f $@.awk < "$(srcdir)"/$@.in >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@ + @-$(CMP) "$(srcdir)"/$@.ok _$@ && rm -f _$@ + arrayparm: @echo $@ @AWKPATH="$(srcdir)" $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@ @@ -100,6 +105,11 @@ aryprm8: @AWKPATH="$(srcdir)" $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@ @-$(CMP) "$(srcdir)"/$@.ok _$@ && rm -f _$@ +aryprm9: + @echo $@ + @AWKPATH="$(srcdir)" $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@ + @-$(CMP) "$(srcdir)"/$@.ok _$@ && rm -f _$@ + arysubnm: @echo $@ @AWKPATH="$(srcdir)" $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@ @@ -305,6 +315,11 @@ fsbs: @AWKPATH="$(srcdir)" $(AWK) -f $@.awk < "$(srcdir)"/$@.in >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@ @-$(CMP) "$(srcdir)"/$@.ok _$@ && rm -f _$@ +fsnul1: + @echo $@ + @AWKPATH="$(srcdir)" $(AWK) -f $@.awk < "$(srcdir)"/$@.in >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@ + @-$(CMP) "$(srcdir)"/$@.ok _$@ && rm -f _$@ + fsrs: @echo $@ @AWKPATH="$(srcdir)" $(AWK) -f $@.awk < "$(srcdir)"/$@.in >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@ @@ -400,6 +415,11 @@ hex: @AWKPATH="$(srcdir)" $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@ @-$(CMP) "$(srcdir)"/$@.ok _$@ && rm -f _$@ +hex2: + @echo $@ + @AWKPATH="$(srcdir)" $(AWK) -f $@.awk < "$(srcdir)"/$@.in >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@ + @-$(CMP) "$(srcdir)"/$@.ok _$@ && rm -f _$@ + hsprint: @echo $@ @AWKPATH="$(srcdir)" $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@ @@ -550,6 +570,11 @@ noparms: @AWKPATH="$(srcdir)" $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@ @-$(CMP) "$(srcdir)"/$@.ok _$@ && rm -f _$@ +nulinsrc: + @echo $@ + @AWKPATH="$(srcdir)" $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@ + @-$(CMP) "$(srcdir)"/$@.ok _$@ && rm -f _$@ + nulrsend: @echo $@ @AWKPATH="$(srcdir)" $(AWK) -f $@.awk < "$(srcdir)"/$@.in >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@ @@ -595,6 +620,11 @@ ofmts: @AWKPATH="$(srcdir)" $(AWK) -f $@.awk < "$(srcdir)"/$@.in >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@ @-$(CMP) "$(srcdir)"/$@.ok _$@ && rm -f _$@ +ofmtstrnum: + @echo $@ + @AWKPATH="$(srcdir)" $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@ + @-$(CMP) "$(srcdir)"/$@.ok _$@ && rm -f _$@ + ofs1: @echo $@ @AWKPATH="$(srcdir)" $(AWK) -f $@.awk < "$(srcdir)"/$@.in >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@ @@ -702,6 +732,11 @@ range1: @AWKPATH="$(srcdir)" $(AWK) -f $@.awk < "$(srcdir)"/$@.in >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@ @-$(CMP) "$(srcdir)"/$@.ok _$@ && rm -f _$@ +readbuf: + @echo $@ + @AWKPATH="$(srcdir)" $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@ + @-$(CMP) "$(srcdir)"/$@.ok _$@ && rm -f _$@ + rebrackloc: @echo $@ @AWKPATH="$(srcdir)" $(AWK) -f $@.awk < "$(srcdir)"/$@.in >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@ @@ -807,6 +842,11 @@ sclifin: @AWKPATH="$(srcdir)" $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@ @-$(CMP) "$(srcdir)"/$@.ok _$@ && rm -f _$@ +sigpipe1: + @echo $@ + @AWKPATH="$(srcdir)" $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@ + @-$(CMP) "$(srcdir)"/$@.ok _$@ && rm -f _$@ + sortempty: @echo $@ @AWKPATH="$(srcdir)" $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@ @@ -857,6 +897,11 @@ strtod: @AWKPATH="$(srcdir)" $(AWK) -f $@.awk < "$(srcdir)"/$@.in >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@ @-$(CMP) "$(srcdir)"/$@.ok _$@ && rm -f _$@ +subback: + @echo $@ + @AWKPATH="$(srcdir)" $(AWK) -f $@.awk < "$(srcdir)"/$@.in >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@ + @-$(CMP) "$(srcdir)"/$@.ok _$@ && rm -f _$@ + subsepnm: @echo $@ @AWKPATH="$(srcdir)" $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@ @@ -982,6 +1027,26 @@ backw: @AWKPATH="$(srcdir)" $(AWK) -f $@.awk < "$(srcdir)"/$@.in >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@ @-$(CMP) "$(srcdir)"/$@.ok _$@ && rm -f _$@ +clos1way2: + @echo $@ + @AWKPATH="$(srcdir)" $(AWK) -f $@.awk < "$(srcdir)"/$@.in >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@ + @-$(CMP) "$(srcdir)"/$@.ok _$@ && rm -f _$@ + +clos1way3: + @echo $@ + @AWKPATH="$(srcdir)" $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@ + @-$(CMP) "$(srcdir)"/$@.ok _$@ && rm -f _$@ + +clos1way4: + @echo $@ + @AWKPATH="$(srcdir)" $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@ + @-$(CMP) "$(srcdir)"/$@.ok _$@ && rm -f _$@ + +clos1way5: + @echo $@ + @AWKPATH="$(srcdir)" $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@ + @-$(CMP) "$(srcdir)"/$@.ok _$@ && rm -f _$@ + crlf: @echo $@ @AWKPATH="$(srcdir)" $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@ @@ -1017,6 +1082,11 @@ fpat4: @AWKPATH="$(srcdir)" $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@ @-$(CMP) "$(srcdir)"/$@.ok _$@ && rm -f _$@ +fpat5: + @echo $@ + @AWKPATH="$(srcdir)" $(AWK) -f $@.awk < "$(srcdir)"/$@.in >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@ + @-$(CMP) "$(srcdir)"/$@.ok _$@ && rm -f _$@ + fpatnull: @echo $@ @AWKPATH="$(srcdir)" $(AWK) -f $@.awk < "$(srcdir)"/$@.in >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@ @@ -1212,11 +1282,6 @@ procinfs: @AWKPATH="$(srcdir)" $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@ @-$(CMP) "$(srcdir)"/$@.ok _$@ && rm -f _$@ -pty1: - @echo $@ - @AWKPATH="$(srcdir)" $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@ - @-$(CMP) "$(srcdir)"/$@.ok _$@ && rm -f _$@ - regnul1: @echo $@ @AWKPATH="$(srcdir)" $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@ @@ -1252,6 +1317,11 @@ sortfor: @AWKPATH="$(srcdir)" $(AWK) -f $@.awk < "$(srcdir)"/$@.in >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@ @-$(CMP) "$(srcdir)"/$@.ok _$@ && rm -f _$@ +sortfor2: + @echo $@ + @AWKPATH="$(srcdir)" $(AWK) -f $@.awk < "$(srcdir)"/$@.in >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@ + @-$(CMP) "$(srcdir)"/$@.ok _$@ && rm -f _$@ + sortu: @echo $@ @AWKPATH="$(srcdir)" $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@ diff --git a/test/arrayind1.awk b/test/arrayind1.awk new file mode 100755 index 0000000..5d4a6f3 --- /dev/null +++ b/test/arrayind1.awk @@ -0,0 +1,101 @@ +#!/usr/local/bin/awk -f +# this script renums pedigrees with metafounders +# so that they are added *before*regular animals +# mf are ascertained because they are not in the 1st column +# also ordered by generation assuming that all metafounders +# start at generation 1 +# +# + function maxval (a,b) { + max=b + if (a>b){max=a} + return max + } +BEGIN{ + pos[0]=0 # actual position in the original data file + changed=1 + posout[0]=0 # position in the new file + last=0 + cum[0]=0 #number of times it acts as parent + gen[0]=0 +} +# read and store pedigree file +{ + pos[$1]=NR + dam[$1]=$2 + sire[$1]=$3 + included[$1]=0 + gen[$1]=9999 +} +END{ + #printf("%10s%10s\n",NR,"animals") > "/dev/stderr" + # find out who is a genetic group + for (x in sire){ + if(! (sire[x] in pos)){ + is_group[sire[x]]=1 + #printf("%10s%10s\n","sire",sire[x]) > "/dev/stderr" + cum[sire[x],"sire"]++ + } + } + for (x in dam){ + if(! (dam[x] in pos)){ + is_group[dam[x]]=1 + #printf("%10s%10s\n","dam",dam[x]) > "/dev/stderr" + cum[dam[x],"dam"]++ + } + } + # compute numbers, but don't write them out + #printf("%16s\n","info on mf") > "/dev/stderr" + for (x in is_group){ + nmf++ + posout[x]=posout[last]+1 + printf("%16s%16s%16s%16s%16s%16s%16s\n", posout[x],0,0,x,0,0,0) + included[x]=1 + gen[x]=0 + last=x + cumgen[0]++ + #printf("%10s%16s%10s%16s%10s%10s%10s\n","group",last," included as",posout[x]," as sire, as dam",cum[x,"sire"],cum[x,"dam"]) > "/dev/stderr" + } + # regular individuals +# printf("%16s\n","recoding animals") > "/dev/stderr" + iter=1 + #--> comment next line and this element of the associative array becomes null + #printf("%s%16s\n","at the beginning it should be empty: ",posout["00000779770060"]) > "/dev/stderr" + #--> + while (changed){ + changed=0 + for (x in pos){ + if(x!=0 && !included[x]){ + # change to number of generation + # if(included[dam[x]] && included[sire[x]]){ + if((gen[dam[x]] +# printf("%s%16s\n","in the loop: ",posout["00000779770060"]) > "/dev/stderr" +# fflush("/dev/stderr") + #--> + #printf("%10s%10s%10s%10s%16s%16s\n","round",iter,"included",posout[last],"last ",last) > "/dev/stderr" + } + #printf("%10s%10s%10s%10s%10s%10s\n","metafounders:",nmf," animals",nanim," total",posout[last]) > "/dev/stderr" + #printf("%16s%16s\n","pseudogenerations:",gen[last]) > "/dev/stderr" + for (x in cumgen){ + #printf("%10s%16s%10s%16s\n","pseudogeneration:",x," including: ",cumgen[x]) > "/dev/stderr" + } + #--> this is the guilty line +# printf("%s%16s\n","at the end: ",posout["00000779770060"]) > "/dev/stderr" +# fflush("/dev/stderr") + #--> +} diff --git a/test/arrayind1.in b/test/arrayind1.in new file mode 100644 index 0000000..915d865 --- /dev/null +++ b/test/arrayind1.in @@ -0,0 +1,2 @@ +64000757790003 00000779770060 00000757740011 1979 2 1975 0 +00000779770060 1975su1du1 1975su1du1 1975 1 1975 1975su1du1 diff --git a/test/arrayind1.ok b/test/arrayind1.ok new file mode 100644 index 0000000..2b11bb5 --- /dev/null +++ b/test/arrayind1.ok @@ -0,0 +1,4 @@ + 1 0 0 00000757740011 0 0 0 + 2 0 0 1975su1du1 0 0 0 + 3 2 2 00000779770060 1975su1du1 1975su1du1 1 + 4 3 1 64000757790003 00000779770060 00000757740011 2 diff --git a/test/aryprm9.awk b/test/aryprm9.awk new file mode 100644 index 0000000..004e3c3 --- /dev/null +++ b/test/aryprm9.awk @@ -0,0 +1,16 @@ +#!/usr/bin/gawk -f +BEGIN { + + for (i = 0; i < 100; i++) + func_exec() +} + +function func_exec(opaque) +{ + func_a(1, opaque) #set additional argument, not expected by fname +} + +function func_a(a, b, loc1, loc2) +{ + b = 0 #unref Nnull_string +} diff --git a/test/checknegtime.awk b/test/checknegtime.awk new file mode 100644 index 0000000..06dfcae --- /dev/null +++ b/test/checknegtime.awk @@ -0,0 +1,22 @@ +NR == 1 { + # Tue Dec 15 07:00:00 GMT 1959 + Weekday = $1 + Month = $2 + Day = $3 + Time = $4 + Timezone = $5 + Year = $6 +} + +NR == 2 { + if (NF == 0) # MinGW gives an empty line + exit 0 + + # Some BSDs give us UTC in the timezone + if ($1 == Weekday && $2 == Month && $3 == Day && + $4 == Time && $6 == Year) + exit 0 + + # Some other mismatch + exit 1 +} diff --git a/test/clos1way2.awk b/test/clos1way2.awk new file mode 100644 index 0000000..c734c14 --- /dev/null +++ b/test/clos1way2.awk @@ -0,0 +1,7 @@ +{ + # We use "&&" and not ";" so it works with Windows shells as well. + cmd = "cat - 1>&2 && sleep 2" + print |& cmd; close(cmd, "to") + fflush(cmd) + print |& cmd; print ERRNO +} diff --git a/test/clos1way2.in b/test/clos1way2.in new file mode 100644 index 0000000..9daeafb --- /dev/null +++ b/test/clos1way2.in @@ -0,0 +1 @@ +test diff --git a/test/clos1way2.ok b/test/clos1way2.ok new file mode 100644 index 0000000..c13a79c --- /dev/null +++ b/test/clos1way2.ok @@ -0,0 +1,4 @@ +gawk: clos1way2.awk:5: (FILENAME=- FNR=1) warning: fflush: cannot flush: two-way pipe `cat - 1>&2 && sleep 2' has closed write end +test +gawk: clos1way2.awk:6: (FILENAME=- FNR=1) fatal: print: attempt to write to closed write end of two-way pipe +EXIT CODE: 2 diff --git a/test/clos1way3.awk b/test/clos1way3.awk new file mode 100644 index 0000000..2c4a6f4 --- /dev/null +++ b/test/clos1way3.awk @@ -0,0 +1,8 @@ +BEGIN { + # We use "&&" and not ";" so it works with Windows shells as well. + cmd = "cat - 1>&2 && sleep 2" + print "test1" |& cmd + close(cmd, "to") + print "test2" |& cmd + print ERRNO +} diff --git a/test/clos1way3.ok b/test/clos1way3.ok new file mode 100644 index 0000000..6677fdf --- /dev/null +++ b/test/clos1way3.ok @@ -0,0 +1,3 @@ +test1 +gawk: clos1way3.awk:6: fatal: print: attempt to write to closed write end of two-way pipe +EXIT CODE: 2 diff --git a/test/clos1way4.awk b/test/clos1way4.awk new file mode 100644 index 0000000..106e446 --- /dev/null +++ b/test/clos1way4.awk @@ -0,0 +1,8 @@ +BEGIN { + # We use "&&" and not ";" so it works with Windows shells as well. + cmd = "cat - 1>&2 && sleep 2" + printf "%s\n", "test1" |& cmd + close(cmd, "to") + printf "%s\n", "test2" |& cmd + print ERRNO +} diff --git a/test/clos1way4.ok b/test/clos1way4.ok new file mode 100644 index 0000000..132a4b9 --- /dev/null +++ b/test/clos1way4.ok @@ -0,0 +1,3 @@ +test1 +gawk: clos1way4.awk:6: fatal: printf: attempt to write to closed write end of two-way pipe +EXIT CODE: 2 diff --git a/test/clos1way5.awk b/test/clos1way5.awk new file mode 100644 index 0000000..0af1909 --- /dev/null +++ b/test/clos1way5.awk @@ -0,0 +1,10 @@ +BEGIN { + # We use "&&" and not ";" so it works with Windows shells as well. + cmd = "echo test1&& echo test2&& sleep 2" + cmd |& getline x + print x + close(cmd, "from") + cmd |& getline x + print x + print ERRNO +} diff --git a/test/clos1way5.ok b/test/clos1way5.ok new file mode 100644 index 0000000..5820598 --- /dev/null +++ b/test/clos1way5.ok @@ -0,0 +1,3 @@ +test1 +gawk: clos1way5.awk:7: fatal: getline: attempt to read from closed read end of two-way pipe +EXIT CODE: 2 diff --git a/test/dumpvars.ok b/test/dumpvars.ok index 73d3d30..85d1c85 100644 --- a/test/dumpvars.ok +++ b/test/dumpvars.ok @@ -9,6 +9,7 @@ FILENAME: "-" FNR: 3 FPAT: "[^[:space:]]+" FS: " " +FUNCTAB: array, 41 elements IGNORECASE: 0 LINT: 0 NF: 1 @@ -23,4 +24,5 @@ RS: "\n" RSTART: 0 RT: "\n" SUBSEP: "\034" +SYMTAB: array, 28 elements TEXTDOMAIN: "messages" diff --git a/test/fpat5.awk b/test/fpat5.awk new file mode 100644 index 0000000..b508f06 --- /dev/null +++ b/test/fpat5.awk @@ -0,0 +1,8 @@ +BEGIN { + FPAT = "([^,]*)|(\"[^\"]+\")" + OFS = ";" +} + +p != 0 { print NF } + +{ $1 = $1 ; print } diff --git a/test/fpat5.in b/test/fpat5.in new file mode 100644 index 0000000..15d874e --- /dev/null +++ b/test/fpat5.in @@ -0,0 +1 @@ +"A","B","C" diff --git a/test/fpat5.ok b/test/fpat5.ok new file mode 100644 index 0000000..cc9295c --- /dev/null +++ b/test/fpat5.ok @@ -0,0 +1 @@ +"A";"B";"C" diff --git a/test/fsnul1.awk b/test/fsnul1.awk new file mode 100644 index 0000000..5a1b473 --- /dev/null +++ b/test/fsnul1.awk @@ -0,0 +1,2 @@ +BEGIN { FS = "\0" ; RS = "" } +{ print $2 } diff --git a/test/fsnul1.ok b/test/fsnul1.ok new file mode 100644 index 0000000..ab4a981 --- /dev/null +++ b/test/fsnul1.ok @@ -0,0 +1 @@ +ho diff --git a/test/fts.awk b/test/fts.awk index b1df060..dea5b68 100644 --- a/test/fts.awk +++ b/test/fts.awk @@ -50,6 +50,11 @@ function sort_traverse(data, sorted, i) { asorti(data, sorted) for (i = 1; i in sorted; i++) { + # 5/2015: skip for atime, since there can + # occasionally be small differences. + if (sorted[i] == "atime") + continue + indent() printf("%s --> %s\n", sorted[i], data[sorted[i]]) > output } @@ -63,17 +68,20 @@ function traverse(data, i) printf("%s:\n", i) > output Level++ - if (("mtime" in data[i]) && ! isarray(data[i][mtime])) { + if (("mtime" in data[i]) && ! isarray(data[i]["mtime"])) { sort_traverse(data[i]) } else { traverse(data[i]) } Level-- - } else if (data[i] != "atime") { - # 4/2015: skip for atime, since there can - # occasionally be small differences. - indent() - printf("%s --> %s\n", i, data[i]) > output +# } else { +# JUNK = 1 +# if (i != "atime") { +# # 4/2015: skip for atime, since there can +# # occasionally be small differences. +# indent() +# printf("%s --> %s\n", i, data[i]) > output +# } } } } diff --git a/test/hex2.awk b/test/hex2.awk new file mode 100644 index 0000000..49c6203 --- /dev/null +++ b/test/hex2.awk @@ -0,0 +1 @@ +{ print $1 + 7} diff --git a/test/hex2.in b/test/hex2.in new file mode 100644 index 0000000..60f06f0 --- /dev/null +++ b/test/hex2.in @@ -0,0 +1,2 @@ +0x4 +-0x4 diff --git a/test/hex2.ok b/test/hex2.ok new file mode 100644 index 0000000..49019db --- /dev/null +++ b/test/hex2.ok @@ -0,0 +1,2 @@ +7 +7 diff --git a/test/id.awk b/test/id.awk index 2a35e42..9c2ae2d 100644 --- a/test/id.awk +++ b/test/id.awk @@ -7,5 +7,6 @@ BEGIN { an_array[1] = 1 for (i in PROCINFO["identifiers"]) - printf("%s -> %s\n", i, PROCINFO["identifiers"][i]) + printf("%s -> %s\n", i, PROCINFO["identifiers"][i]) | "sort" + close("sort") } diff --git a/test/id.ok b/test/id.ok index 011d6cf..ab9f639 100644 --- a/test/id.ok +++ b/test/id.ok @@ -1,74 +1,74 @@ -OFS -> scalar -rand -> builtin ARGC -> scalar -dcgettext -> builtin -gsub -> builtin -PREC -> scalar -match -> builtin ARGIND -> scalar -int -> builtin -ERRNO -> scalar ARGV -> array -log -> builtin -sprintf -> builtin +BINMODE -> scalar +CONVFMT -> scalar +ENVIRON -> array +ERRNO -> scalar +FIELDWIDTHS -> scalar +FILENAME -> scalar +FNR -> scalar +FPAT -> scalar +FS -> scalar +FUNCTAB -> array +IGNORECASE -> scalar +LINT -> scalar +NF -> scalar +NR -> scalar +OFMT -> scalar +OFS -> scalar +ORS -> scalar +PREC -> scalar +PROCINFO -> array +RLENGTH -> scalar ROUNDMODE -> scalar -strftime -> builtin -systime -> builtin -length -> builtin +RS -> scalar +RSTART -> scalar +RT -> scalar +SUBSEP -> scalar +SYMTAB -> array +TEXTDOMAIN -> scalar +an_array -> untyped and -> builtin -srand -> builtin -FNR -> scalar asort -> builtin +asorti -> builtin atan2 -> builtin -cos -> builtin -TEXTDOMAIN -> scalar -ORS -> scalar -split -> builtin -RSTART -> scalar -compl -> builtin bindtextdomain -> builtin +close -> builtin +compl -> builtin +cos -> builtin +dcgettext -> builtin +dcngettext -> builtin exp -> builtin -or -> builtin +extension -> builtin fflush -> builtin +function1 -> user gensub -> builtin -LINT -> scalar -dcngettext -> builtin +gsub -> builtin +i -> untyped index -> builtin -IGNORECASE -> scalar -system -> builtin -CONVFMT -> scalar -sqrt -> builtin -rshift -> builtin -tolower -> builtin -FS -> scalar -BINMODE -> scalar -sin -> builtin -asorti -> builtin -FIELDWIDTHS -> scalar -function1 -> user -FILENAME -> scalar -close -> builtin -mktime -> builtin -FUNCTAB -> array -NF -> scalar +int -> builtin isarray -> builtin -an_array -> untyped +length -> builtin +log -> builtin +lshift -> builtin +match -> builtin +mktime -> builtin +or -> builtin patsplit -> builtin -NR -> scalar -SUBSEP -> scalar -extension -> builtin -i -> untyped +rand -> builtin +rshift -> builtin +sin -> builtin +split -> builtin +sprintf -> builtin +sqrt -> builtin +srand -> builtin +strftime -> builtin +strtonum -> builtin sub -> builtin -OFMT -> scalar -RLENGTH -> scalar substr -> builtin -FPAT -> scalar -RS -> scalar -xor -> builtin -RT -> scalar -PROCINFO -> array -lshift -> builtin -SYMTAB -> array -strtonum -> builtin +system -> builtin +systime -> builtin +tolower -> builtin toupper -> builtin -ENVIRON -> array +xor -> builtin diff --git a/test/ignrcas3.awk b/test/ignrcas3.awk new file mode 100644 index 0000000..fd88744 --- /dev/null +++ b/test/ignrcas3.awk @@ -0,0 +1,20 @@ +BEGIN { + dfapat[1] = data[1] = "b\323" + dfapat[2] = data[2] = "b\362" + dfapat[3] = data[3] = "b\363" + + regexpat[1] = "[a-c]\323" + regexpat[2] = "[a-c]\362" + regexpat[3] = "[a-c]\363" + + IGNORECASE = 1 + + for (i = 1; i <= 3; i++) { + for (j = 1; j <= 3; j++) { + printf("data[%d] ~ dfa[%d] = %s\n", i, j, + data[i] ~ dfapat[j] ? "ok" : "bad") + printf("data[%d] ~ regex[%d] = %s\n", i, j, + data[i] ~ regexpat[j] ? "ok" : "bad") + } + } +} diff --git a/test/ignrcas3.ok b/test/ignrcas3.ok new file mode 100644 index 0000000..0222feb --- /dev/null +++ b/test/ignrcas3.ok @@ -0,0 +1,18 @@ +data[1] ~ dfa[1] = ok +data[1] ~ regex[1] = ok +data[1] ~ dfa[2] = ok +data[1] ~ regex[2] = ok +data[1] ~ dfa[3] = ok +data[1] ~ regex[3] = ok +data[2] ~ dfa[1] = ok +data[2] ~ regex[1] = ok +data[2] ~ dfa[2] = ok +data[2] ~ regex[2] = ok +data[2] ~ dfa[3] = ok +data[2] ~ regex[3] = ok +data[3] ~ dfa[1] = ok +data[3] ~ regex[1] = ok +data[3] ~ dfa[2] = ok +data[3] ~ regex[2] = ok +data[3] ~ dfa[3] = ok +data[3] ~ regex[3] = ok diff --git a/test/inplace1.ok b/test/inplace1.ok index 8256223..91b5276 100644 --- a/test/inplace1.ok +++ b/test/inplace1.ok @@ -1,5 +1,5 @@ before -gawk: inplace:14: warning: inplace_begin: disabling in-place editing for invalid FILENAME `-' +gawk: inplace:25: warning: inplace_begin: disabling in-place editing for invalid FILENAME `-' stdin start is bar replaced? stdin end diff --git a/test/inplace2.ok b/test/inplace2.ok index 8256223..91b5276 100644 --- a/test/inplace2.ok +++ b/test/inplace2.ok @@ -1,5 +1,5 @@ before -gawk: inplace:14: warning: inplace_begin: disabling in-place editing for invalid FILENAME `-' +gawk: inplace:25: warning: inplace_begin: disabling in-place editing for invalid FILENAME `-' stdin start is bar replaced? stdin end diff --git a/test/inplace3.ok b/test/inplace3.ok index a7b7254..deb926b 100644 --- a/test/inplace3.ok +++ b/test/inplace3.ok @@ -1,11 +1,11 @@ before -gawk: inplace:14: warning: inplace_begin: disabling in-place editing for invalid FILENAME `-' +gawk: inplace:25: warning: inplace_begin: disabling in-place editing for invalid FILENAME `-' stdin start is bar replaced? stdin end after Before -gawk: inplace:14: warning: inplace_begin: disabling in-place editing for invalid FILENAME `-' +gawk: inplace:25: warning: inplace_begin: disabling in-place editing for invalid FILENAME `-' stdin start is foo replaced? stdin end diff --git a/test/mbstr1.ok b/test/mbstr1.ok index dcb4347..3fd1bf8 100644 --- a/test/mbstr1.ok +++ b/test/mbstr1.ok @@ -1,2 +1,3 @@ +gawk: mbstr1.awk:2: warning: Invalid multibyte data detected. There may be a mismatch between your data and your locale. 4 1 diff --git a/test/mbstr2.awk b/test/mbstr2.awk new file mode 100644 index 0000000..4f2c8cc --- /dev/null +++ b/test/mbstr2.awk @@ -0,0 +1 @@ +match($0,/:deathdate=2007....:/) { print substr($0,RSTART+11,RLENGTH-16) } diff --git a/test/mbstr2.in b/test/mbstr2.in new file mode 100644 index 0000000..36e971a --- /dev/null +++ b/test/mbstr2.in @@ -0,0 +1,4 @@ +missile:deathdate=20070306: +P”rr”:deathdate=20070306: +wizard:deathdate=20071103: +Daithí:deathdate=20071103: diff --git a/test/mbstr2.ok b/test/mbstr2.ok new file mode 100644 index 0000000..29ac876 --- /dev/null +++ b/test/mbstr2.ok @@ -0,0 +1,5 @@ +2007 +gawk: mbstr2.awk:1: (FILENAME=- FNR=2) warning: Invalid multibyte data detected. There may be a mismatch between your data and your locale. +2007 +2007 +2007 diff --git a/test/mixed1.ok b/test/mixed1.ok index 91608fa..bd6f447 100644 --- a/test/mixed1.ok +++ b/test/mixed1.ok @@ -1,3 +1,3 @@ -gawk: BEGIN {return junk} -gawk: ^ `return' used outside function context +gawk: cmd. line:1: BEGIN {return junk} +gawk: cmd. line:1: ^ `return' used outside function context EXIT CODE: 1 diff --git a/test/muldimposix.awk b/test/muldimposix.awk new file mode 100644 index 0000000..135b324 --- /dev/null +++ b/test/muldimposix.awk @@ -0,0 +1 @@ +BEGIN { a[1][2] = 3 } diff --git a/test/muldimposix.ok b/test/muldimposix.ok new file mode 100644 index 0000000..3594fab --- /dev/null +++ b/test/muldimposix.ok @@ -0,0 +1,2 @@ +gawk: muldimposix.awk:1: fatal: multidimensional arrays are a gawk extension +EXIT CODE: 2 diff --git a/test/nulinsrc.ok b/test/nulinsrc.ok new file mode 100644 index 0000000..515f423 --- /dev/null +++ b/test/nulinsrc.ok @@ -0,0 +1,2 @@ +gawk: nulinsrc.awk:1: fatal: PEBKAC error: invalid character '\000' in source code +EXIT CODE: 2 diff --git a/test/ofmtstrnum.awk b/test/ofmtstrnum.awk new file mode 100644 index 0000000..805dad7 --- /dev/null +++ b/test/ofmtstrnum.awk @@ -0,0 +1,7 @@ +BEGIN { + split(" 1", f, "|") + OFMT = "%.1f" + print f[1] + x = f[1] + 0 + print f[1] +} diff --git a/test/ofmtstrnum.ok b/test/ofmtstrnum.ok new file mode 100644 index 0000000..ae95586 --- /dev/null +++ b/test/ofmtstrnum.ok @@ -0,0 +1,2 @@ + 1 + 1 diff --git a/test/profile2.ok b/test/profile2.ok index 938d685..1db4c2f 100644 --- a/test/profile2.ok +++ b/test/profile2.ok @@ -12,62 +12,46 @@ 571 nextstate = substr(machine[state symb], 1, 1) 571 act = substr(machine[state symb], 2, 1) 571 if (act == "0") { # 12 - 559 } else { - 559 if (act == "1") { # 8 - 8 if (! inarray(tok, names)) { # 3 - 3 names[++nnames] = tok + 559 } else if (act == "1") { # 8 + 8 if (! inarray(tok, names)) { # 3 + 3 names[++nnames] = tok + } + 8 lines[tok, ++xnames[tok]] = NR + 551 } else if (act == "2") { # 426 + 426 if (tok in local) { # 309 + 309 tok = tok "(" funcname ")" + 309 if (! inarray(tok, names)) { # 22 + 22 names[++nnames] = tok + } + 309 lines[tok, ++xnames[tok]] = NR + 117 } else { + 117 tok = tok "()" + 117 if (! inarray(tok, names)) { # 22 + 22 names[++nnames] = tok } - 8 lines[tok, ++xnames[tok]] = NR - 551 } else { - 551 if (act == "2") { # 426 - 426 if (tok in local) { # 309 - 309 tok = tok "(" funcname ")" - 309 if (! inarray(tok, names)) { # 22 - 22 names[++nnames] = tok - } - 309 lines[tok, ++xnames[tok]] = NR - 117 } else { - 117 tok = tok "()" - 117 if (! inarray(tok, names)) { # 22 - 22 names[++nnames] = tok - } - 117 lines[tok, ++xnames[tok]] = NR - } - 125 } else { - 125 if (act == "3") { # 4 - 4 funcname = tok - 4 flines[tok] = NR - 121 } else { - 121 if (act == "4") { # 49 - 49 braces++ - 72 } else { - 72 if (act == "5") { # 49 - 49 braces-- - 49 if (braces == 0) { # 4 - 22 for (temp in local) { - 22 delete local[temp] - } - 4 funcname = "" - 4 nextstate = 1 - } - 23 } else { - 23 if (act == "6") { # 22 - 22 local[tok] = 1 - 1 } else { - 1 if (act == "7") { # 1 - 1 break - } else { - if (act == "8") { - print("error: xref.awk: line " NR ": aborting") > "/dev/con" - exit 1 - } - } - } - } - } - } + 117 lines[tok, ++xnames[tok]] = NR + } + 125 } else if (act == "3") { # 4 + 4 funcname = tok + 4 flines[tok] = NR + 121 } else if (act == "4") { # 49 + 49 braces++ + 72 } else if (act == "5") { # 49 + 49 braces-- + 49 if (braces == 0) { # 4 + 22 for (temp in local) { + 22 delete local[temp] } + 4 funcname = "" + 4 nextstate = 1 } + 23 } else if (act == "6") { # 22 + 22 local[tok] = 1 + 1 } else if (act == "7") { # 1 + 1 break + } else if (act == "8") { + print("error: xref.awk: line " NR ": aborting") > "/dev/con" + exit 1 } 570 state = nextstate } @@ -127,44 +111,34 @@ 4 tok = "function" 4 line = substr(line, 9) 4 return 1 - 1697 } else { - 1697 if (line ~ /^{/) { # 53 - 53 tok = "{" - 53 line = substr(line, 2) - 53 return 2 - 1644 } else { - 1644 if (line ~ /^}/) { # 53 - 53 tok = "}" - 53 line = substr(line, 2) - 53 return 3 - 1591 } else { - 1591 if (match(line, /^[[:alpha:]_][[:alnum:]]*\[/)) { # 43 - 43 tok = substr(line, 1, RLENGTH - 1) - 43 line = substr(line, RLENGTH + 1) - 43 return 5 - 1548 } else { - 1548 if (match(line, /^[[:alpha:]_][[:alnum:]]*\(/)) { # 87 - 87 tok = substr(line, 1, RLENGTH - 1) - 87 line = substr(line, RLENGTH + 1) - 87 if (! (tok in keywords)) { # 12 - 12 return 6 - } - 1461 } else { - 1461 if (match(line, /^[[:alpha:]_][[:alnum:]]*/)) { # 525 - 525 tok = substr(line, 1, RLENGTH) - 525 line = substr(line, RLENGTH + 1) - 525 if (! (tok in keywords)) { # 405 - 405 return 4 - } - 936 } else { - 936 match(line, /^[^[:alpha:]_{}]/) - 936 tok = substr(line, 1, RLENGTH) - 936 line = substr(line, RLENGTH + 1) - } - } - } - } + 1697 } else if (line ~ /^{/) { # 53 + 53 tok = "{" + 53 line = substr(line, 2) + 53 return 2 + 1644 } else if (line ~ /^}/) { # 53 + 53 tok = "}" + 53 line = substr(line, 2) + 53 return 3 + 1591 } else if (match(line, /^[[:alpha:]_][[:alnum:]]*\[/)) { # 43 + 43 tok = substr(line, 1, RLENGTH - 1) + 43 line = substr(line, RLENGTH + 1) + 43 return 5 + 1548 } else if (match(line, /^[[:alpha:]_][[:alnum:]]*\(/)) { # 87 + 87 tok = substr(line, 1, RLENGTH - 1) + 87 line = substr(line, RLENGTH + 1) + 87 if (! (tok in keywords)) { # 12 + 12 return 6 + } + 1461 } else if (match(line, /^[[:alpha:]_][[:alnum:]]*/)) { # 525 + 525 tok = substr(line, 1, RLENGTH) + 525 line = substr(line, RLENGTH + 1) + 525 if (! (tok in keywords)) { # 405 + 405 return 4 } + 936 } else { + 936 match(line, /^[^[:alpha:]_{}]/) + 936 tok = substr(line, 1, RLENGTH) + 936 line = substr(line, RLENGTH + 1) } } } diff --git a/test/profile5.ok b/test/profile5.ok index bff767e..720683e 100644 --- a/test/profile5.ok +++ b/test/profile5.ok @@ -356,15 +356,11 @@ if (match(t, /^((--([Vv])ersion)|(-([Vv])))[ \t]*/, A)) { t = substr(t, RLENGTH + 1) _cmdln_version = A[3] A[5] - } else { - if (match(t, /^((-?\?)|(--help))[ \t]*/)) { - t = substr(t, RLENGTH + 1) - _cmdln_help = 1 - } else { - if (match(t, /^--[ \t]*/)) { - return _endpass(substr(t, RLENGTH + 1)) - } - } + } else if (match(t, /^((-?\?)|(--help))[ \t]*/)) { + t = substr(t, RLENGTH + 1) + _cmdln_help = 1 + } else if (match(t, /^--[ \t]*/)) { + return _endpass(substr(t, RLENGTH + 1)) } return t case "_lib_APPLY": @@ -848,11 +844,9 @@ _tLOG[n = _wLCHLD(p, _N())][""] delete _tLOG[n][""] _Zimparr(_tLOG[n], substr(t, 10)) - } else { - if ((t = _pass(_IMPORT, t, p, A)) != "") { - gsub(/\x1B\x3B/, "\033", t) - _wLCHLD(p, _N(_tSTR, t)) - } + } else if ((t = _pass(_IMPORT, t, p, A)) != "") { + gsub(/\x1B\x3B/, "\033", t) + _wLCHLD(p, _N(_tSTR, t)) } } return p @@ -1042,10 +1036,8 @@ if (optr == p) { delete _UIDOBLV[p] delete _UIDOBLV[_UIDOBLV[_UIDOBL[p] = p][""] = p][""] - } else { - if (optr in _UIDOBL) { - _UIDOBL[p] = _UIDOBL[optr] - } + } else if (optr in _UIDOBL) { + _UIDOBL[p] = _UIDOBL[optr] } } _UIDPFX[p] = (_istr(pfx) ? pfx : "") @@ -1137,11 +1129,9 @@ if (! (i in A1)) { a++ R[i] = 0 - } else { - if (A0[i] != A1[i]) { - a++ - R[i] = 2 - } + } else if (A0[i] != A1[i]) { + a++ + R[i] = 2 } } for (i in A1) { @@ -1306,10 +1296,8 @@ if ((c = _CHR[i]) ~ r) { D[c] = "\\" S[c] t = t c - } else { - if (D[c] == "") { - D[c] = c - } + } else if (D[c] == "") { + D[c] = c } } } else { @@ -1319,10 +1307,8 @@ if (S != "") { t = t c } - } else { - if (D[c] == "") { - D[c] = c - } + } else if (D[c] == "") { + D[c] = c } } } @@ -1489,10 +1475,8 @@ } else { return i } - } else { - if (match(B[i++], /^([^ \t\-]+)\-([^ \t\-]+)\-([^ \t]+)[ \t]+([^ \t]+)[ \t]+([0-9]+)[ \t]+(.+)$/, C)) { - A[f][f C[6]] = C[5] " " C[1] "/" _CHR["MONTH"][C[2]] "/" C[3] " " C[4] - } + } else if (match(B[i++], /^([^ \t\-]+)\-([^ \t\-]+)\-([^ \t]+)[ \t]+([^ \t]+)[ \t]+([0-9]+)[ \t]+(.+)$/, C)) { + A[f][f C[6]] = C[5] " " C[1] "/" _CHR["MONTH"][C[2]] "/" C[3] " " C[4] } } return i @@ -1507,13 +1491,11 @@ if (_dllchktv != _[pp][".Product Version"]) { _dllerr(_[pp]["AGENT"], "agent version (" _[pp][".Product Version"] ") do not match all lib versions: " _dllchktv "'") } + } else if (! _missfl) { + _creport(pp, "agent not detected in registry") } else { - if (! _missfl) { - _creport(pp, "agent not detected in registry") - } else { - _dllerr(pp, "agent not detected in registry but some registry entries exist:") - _tframe("_dll_check_i1", pp, pp) - } + _dllerr(pp, "agent not detected in registry but some registry entries exist:") + _tframe("_dll_check_i1", pp, pp) } } @@ -1549,10 +1531,8 @@ } else { if (_dllchktv == "") { _dllchktv = v - } else { - if (v != _dllchktv) { - return _dllerr(p, "different versions detected: " _dllchktv "!=" v "'") - } + } else if (v != _dllchktv) { + return _dllerr(p, "different versions detected: " _dllchktv "!=" v "'") } ERRNO = "" if (_th1(_[p]["DATA"] = _rdfile(f), ERRNO)) { @@ -1975,13 +1955,11 @@ return _dllerr(p, " file version mismatch: ==`" _[p]["VERSION"] "'; !=`" v "'", f) } _creport(p, substr("OK: FILE DETECTED" ((v == "" ? "" : "(" v ")")) ": " f, 1, 122)) - } else { - if (_[p]["TYPE"] == "defdir") { - if (_filexist(f = _[p]["DIR"])) { - _creport(p, substr("OK: DIR DETECTED: " f, 1, 112)) - } else { - _dllerr(p, "directory " f " is not detected") - } + } else if (_[p]["TYPE"] == "defdir") { + if (_filexist(f = _[p]["DIR"])) { + _creport(p, substr("OK: DIR DETECTED: " f, 1, 112)) + } else { + _dllerr(p, "directory " f " is not detected") } } } @@ -2678,14 +2656,12 @@ lstr = A[3] "+" hstr = "" } + } else if (match(cs, /^(([^'\xB4\|]*\xB4.)*[^'\xB4\|]*)(\|(.*))?/, A)) { + hstr = A[1] + lstr = A[4] } else { - if (match(cs, /^(([^'\xB4\|]*\xB4.)*[^'\xB4\|]*)(\|(.*))?/, A)) { - hstr = A[1] - lstr = A[4] - } else { - ERRNO = "_inituid(): bad parameters" - return - } + ERRNO = "_inituid(): bad parameters" + return } _conl(dptr ":" pfx "'" hstr "|" lstr "'" sfx) return _cfguid(p, dptr, pfx, sfx, hstr, lstr) @@ -2872,7 +2848,7 @@ _MACPFX84SFX["\204"] = "_macpfx84" _MACPFX84SFX["\224"] = "_macsfx94" _MACPFX84SFX[""] = "_mpusfxsubret" - _VLDMAXSTRING = 1e+06 + _VLDMAXSTRING = 1000000 } function _macpfx84(F, D, C, p1, p2, p3) @@ -2998,24 +2974,18 @@ F[p][""] delete F[p][""] _copyarr(F[p], v) - } else { - if (! (v == 0 && v == "")) { - F[p] = v - } + } else if (! (v == 0 && v == "")) { + F[p] = v } - } else { - if (! (F == 0 && F == "")) { - if (isarray(v)) { - _[p][F][""] - delete _[p][F][""] - _copyarr(_[p][F], v) - } else { - if (v == 0 && v == "") { - _mpu(F, p) - } else { - _[p][F] = v - } - } + } else if (! (F == 0 && F == "")) { + if (isarray(v)) { + _[p][F][""] + delete _[p][F][""] + _copyarr(_[p][F], v) + } else if (v == 0 && v == "") { + _mpu(F, p) + } else { + _[p][F] = v } } return p @@ -3188,24 +3158,22 @@ if (RLENGTH > 0) { D["type"] = toupper(substr(A[1], 1, RLENGTH - 1)) _patharr0_i0(i, D, "site", "port") - } else { - if (A[1] == "") { - D["type"] = "UNC" - if (h > 2) { - D["host"] - A[2] = _patharr0_i0(A[2], D, "drive", "", "FILE") - return _patharr0_i1(D, A, 2, q) - } - if (i == "") { - return 1 - } - D["host"] = i - A[3] = _patharr0_i0(A[3], D, "drive", "", "FILE") - } else { - D["type"] = "FILE" - A[1] = _patharr0_i0(A[1], D, "drive") - return _patharr0_i1(D, A, 1, q) + } else if (A[1] == "") { + D["type"] = "UNC" + if (h > 2) { + D["host"] + A[2] = _patharr0_i0(A[2], D, "drive", "", "FILE") + return _patharr0_i1(D, A, 2, q) + } + if (i == "") { + return 1 } + D["host"] = i + A[3] = _patharr0_i0(A[3], D, "drive", "", "FILE") + } else { + D["type"] = "FILE" + A[1] = _patharr0_i0(A[1], D, "drive") + return _patharr0_i1(D, A, 1, q) } return _patharr0_i1(D, A, 3, q) } @@ -3224,10 +3192,8 @@ D[r] = t } return t - } else { - if (t && r) { - D[l] = t - } + } else if (t && r) { + D[l] = t } return t } @@ -3250,10 +3216,8 @@ D["name"] = substr(t, 1, RSTART - 1) } D["ext"] = substr(t, RSTART, RLENGTH) - } else { - if (t != "") { - D["name"] = t - } + } else if (t != "") { + D["name"] = t } } return 1 @@ -3378,12 +3342,10 @@ { if (qm == qm + 0 && qm > 0) { _qparamim = substr(" ", 1, qm) + } else if (qm != "") { + _qparamim = qm } else { - if (qm != "") { - _qparamim = qm - } else { - _qparamim = " " - } + _qparamim = " " } _qparamask = "" return _qparam_i0(p0, p1, p2, p3, p4, p5, p6, p7) @@ -3400,16 +3362,12 @@ default: if (isarray(p0)) { _qparama0 = "A" + } else if (p0 == "" && p0 == 0) { + _qparama0 = " " + } else if (_isptr(p0)) { + _qparama0 = "P" } else { - if (p0 == "" && p0 == 0) { - _qparama0 = " " - } else { - if (_isptr(p0)) { - _qparama0 = "P" - } else { - _qparama0 = "S" - } - } + _qparama0 = "S" } case ".": _qparamask = _qparamask _qparama0 @@ -3669,11 +3627,9 @@ } else { break } - } else { - if (_rdregp0 ~ /^HK/) { - ++_rdregkey - return D[_rdregp0 = _rdregp0 "\\"] - } + } else if (_rdregp0 ~ /^HK/) { + ++_rdregkey + return D[_rdregp0 = _rdregp0 "\\"] } } return 1 @@ -3702,12 +3658,10 @@ } else { _dllerr(p, substr("REGENTRY NOT MATCH(!=" _[p]["VALUE"] "): " _[p]["REGPATH"], 1, 126)) } + } else if (_VAR[_[p]["REGPATH"]] == _REG[_[p]["REGPATH"]]) { + _creport(p, substr("OK: REGPATH MATCH(==" _VAR[_[p]["REGPATH"]] "): " _[p]["REGPATH"], 1, 126)) } else { - if (_VAR[_[p]["REGPATH"]] == _REG[_[p]["REGPATH"]]) { - _creport(p, substr("OK: REGPATH MATCH(==" _VAR[_[p]["REGPATH"]] "): " _[p]["REGPATH"], 1, 126)) - } else { - _dllerr(p, substr("REGPATH NOT MATCH(!=" _VAR[_[p]["REGPATH"]] "): " _[p]["REGPATH"], 1, 126)) - } + _dllerr(p, substr("REGPATH NOT MATCH(!=" _VAR[_[p]["REGPATH"]] "): " _[p]["REGPATH"], 1, 126)) } } else { _dllerr(p, substr("REGPATH NOT FOUND: " _[p]["REGPATH"], 1, 126)) @@ -3890,26 +3844,24 @@ if (D[7]) { t = "STR" v = _unstr(D[8]) + } else if (D[10]) { + t = "W32" + v = D[11] } else { - if (D[10]) { - t = "W32" - v = D[11] - } else { - v = D[15] - if (D[13]) { - switch (D[14]) { - case "2": - t = "XSZ" - break - case "7": - t = "MSZ" - break - default: - t = "W64" - } - } else { - t = "BIN" + v = D[15] + if (D[13]) { + switch (D[14]) { + case "2": + t = "XSZ" + break + case "7": + t = "MSZ" + break + default: + t = "W64" } + } else { + t = "BIN" } } DD[gensub(/(\\)\\+/, "\\1", "G", p "\\" _unstr(D[3] ((D[5] ? "(Default)" : ""))) "." t)] = v @@ -4095,57 +4047,33 @@ if (isarray(D)) { if (isarray(S)) { _addarrmask(D, S, _SHORTCUTWSTRUC) - } else { - if (S == 0 && S == "") { - _addarrmask(D, _SHORTCUTDEFAULT, _SHORTCUTWSTRUC) - } else { - if (_isnotfileptr(S)) { - _addarrmask(D, _[S], _SHORTCUTWSTRUC) - } else { - if (_rd_shortcut(D, S)) { - return - } - } - } + } else if (S == 0 && S == "") { + _addarrmask(D, _SHORTCUTDEFAULT, _SHORTCUTWSTRUC) + } else if (_isnotfileptr(S)) { + _addarrmask(D, _[S], _SHORTCUTWSTRUC) + } else if (_rd_shortcut(D, S)) { + return } - } else { - if (D == 0 && D == "") { - return _NOP - } else { - if (_isnotfileptr(D)) { - if (isarray(S)) { - _addarrmask(_[D], S, _SHORTCUTWSTRUC) - } else { - if (S == 0 && S == "") { - _addarrmask(_[D], _SHORTCUTDEFAULT, _SHORTCUTWSTRUC) - } else { - if (_isnotfileptr(S)) { - _addarrmask(_[D], _[S], _SHORTCUTWSTRUC) - } else { - if (_rd_shortcut(_[D], S)) { - return - } - } - } - } - } else { - if (isarray(S) && _wr_shortcut(D, S)) { - return - } else { - if (S == 0 && S == "" && _wr_shortcut(D, _SHORTCUTDEFAULT)) { - return - } else { - if (_isnotfileptr(S) && _wr_shortcut(D, _[S])) { - return - } else { - if (_rd_shortcut(_SHRTCUTA1, S) || _wr_shortcut(D, _SHRTCUTA1)) { - return - } - } - } - } - } + } else if (D == 0 && D == "") { + return _NOP + } else if (_isnotfileptr(D)) { + if (isarray(S)) { + _addarrmask(_[D], S, _SHORTCUTWSTRUC) + } else if (S == 0 && S == "") { + _addarrmask(_[D], _SHORTCUTDEFAULT, _SHORTCUTWSTRUC) + } else if (_isnotfileptr(S)) { + _addarrmask(_[D], _[S], _SHORTCUTWSTRUC) + } else if (_rd_shortcut(_[D], S)) { + return } + } else if (isarray(S) && _wr_shortcut(D, S)) { + return + } else if (S == 0 && S == "" && _wr_shortcut(D, _SHORTCUTDEFAULT)) { + return + } else if (_isnotfileptr(S) && _wr_shortcut(D, _[S])) { + return + } else if (_rd_shortcut(_SHRTCUTA1, S) || _wr_shortcut(D, _SHRTCUTA1)) { + return } return 1 } @@ -4165,14 +4093,12 @@ if (match(_SHRTCUTA0[q], /^([^\t]+)\t+([^\t]+)(\t+([^\t]+)(\t+([^\t]+))?)?/, B)) { if (B[3] == "") { _SHORTCUTRSTRUC[B[2]] = B[1] + } else if (B[5] == "") { + _SHORTCUTWSTRUC[_SHORTCUTRSTRUC[B[4]] = B[1]] = B[2] + delete _SHORTCUTDEFAULT[B[1]] } else { - if (B[5] == "") { - _SHORTCUTWSTRUC[_SHORTCUTRSTRUC[B[4]] = B[1]] = B[2] - delete _SHORTCUTDEFAULT[B[1]] - } else { - _SHORTCUTWSTRUC[_SHORTCUTRSTRUC[B[4]] = B[1]] = B[2] - _SHORTCUTDEFAULT[B[1]] = B[6] - } + _SHORTCUTWSTRUC[_SHORTCUTRSTRUC[B[4]] = B[1]] = B[2] + _SHORTCUTDEFAULT[B[1]] = B[6] } } else { _fatal("_shortcut.init: _shortcut_struc: syntax error: `" _SHRTCUTA0[q] "'") @@ -4584,46 +4510,38 @@ } return f } - } else { - if (p in _tPARENT) { - pp = _tPARENT[p] - delete _tPARENT[p] - if (p in _tPREV) { - if (p in _tNEXT) { - _tNEXT[_tPREV[f] = _tPREV[p]] = f = _tNEXT[p] - delete _tNEXT[p] - } else { - delete _tNEXT[_tLCHLD[pp] = _tPREV[p]] - } - delete _tPREV[p] - _tQCHLD[pp]-- + } else if (p in _tPARENT) { + pp = _tPARENT[p] + delete _tPARENT[p] + if (p in _tPREV) { + if (p in _tNEXT) { + _tNEXT[_tPREV[f] = _tPREV[p]] = f = _tNEXT[p] + delete _tNEXT[p] } else { - if (p in _tNEXT) { - delete _tPREV[_tFCHLD[pp] = _tNEXT[p]] - delete _tNEXT[p] - _tQCHLD[pp]-- - } else { - delete _tFCHLD[pp] - delete _tLCHLD[pp] - delete _tQCHLD[pp] - } + delete _tNEXT[_tLCHLD[pp] = _tPREV[p]] } + delete _tPREV[p] + _tQCHLD[pp]-- + } else if (p in _tNEXT) { + delete _tPREV[_tFCHLD[pp] = _tNEXT[p]] + delete _tNEXT[p] + _tQCHLD[pp]-- } else { - if (p in _tPREV) { - if (p in _tNEXT) { - _tNEXT[_tPREV[f] = _tPREV[p]] = f = _tNEXT[p] - delete _tNEXT[p] - } else { - delete _tNEXT[_tPREV[p]] - } - delete _tPREV[p] - } else { - if (p in _tNEXT) { - delete _tPREV[_tNEXT[p]] - delete _tNEXT[p] - } - } + delete _tFCHLD[pp] + delete _tLCHLD[pp] + delete _tQCHLD[pp] + } + } else if (p in _tPREV) { + if (p in _tNEXT) { + _tNEXT[_tPREV[f] = _tPREV[p]] = f = _tNEXT[p] + delete _tNEXT[p] + } else { + delete _tNEXT[_tPREV[p]] } + delete _tPREV[p] + } else if (p in _tNEXT) { + delete _tPREV[_tNEXT[p]] + delete _tNEXT[p] } } return p @@ -4656,10 +4574,8 @@ for (i in _ptr[p]) { if (isarray(_ptr[p][i])) { _tdel_i1(_ptr[p][i]) - } else { - if (i = _ptr[p][i]) { - _tdel(i) - } + } else if (i = _ptr[p][i]) { + _tdel(i) } } if (p in _tFCHLD) { @@ -4678,10 +4594,8 @@ for (i in _ptr[p]) { if (isarray(_ptr[p][i])) { _tdel_i1(_ptr[p][i]) - } else { - if (i = _ptr[p][i]) { - _tdel(i) - } + } else if (i = _ptr[p][i]) { + _tdel(i) } } if (p in _tFCHLD) { @@ -4699,10 +4613,8 @@ for (i in A) { if (isarray(A[i])) { _tdel_i1(A[i]) - } else { - if (i = A[i]) { - _tdel(i) - } + } else if (i = A[i]) { + _tdel(i) } } } @@ -4749,33 +4661,27 @@ delete _tNEXT[_tLCHLD[pp] = _tPREV[p]] } delete _tPREV[p] + } else if (p in _tNEXT) { + delete _tPREV[_tFCHLD[pp] = _tNEXT[p]] + delete _tNEXT[p] } else { - if (p in _tNEXT) { - delete _tPREV[_tFCHLD[pp] = _tNEXT[p]] - delete _tNEXT[p] - } else { - delete _tFCHLD[pp] - delete _tLCHLD[pp] - delete _tQCHLD[pp] - return p - } + delete _tFCHLD[pp] + delete _tLCHLD[pp] + delete _tQCHLD[pp] + return p } --_tQCHLD[pp] - } else { - if (p in _tPREV) { - if (p in _tNEXT) { - _tPREV[_tNEXT[v] = _tNEXT[p]] = v = _tPREV[p] - delete _tNEXT[p] - } else { - delete _tNEXT[_tPREV[p]] - } - delete _tPREV[p] + } else if (p in _tPREV) { + if (p in _tNEXT) { + _tPREV[_tNEXT[v] = _tNEXT[p]] = v = _tPREV[p] + delete _tNEXT[p] } else { - if (p in _tNEXT) { - delete _tPREV[_tNEXT[p]] - delete _tNEXT[p] - } + delete _tNEXT[_tPREV[p]] } + delete _tPREV[p] + } else if (p in _tNEXT) { + delete _tPREV[_tNEXT[p]] + delete _tNEXT[p] } return p } @@ -5123,14 +5029,12 @@ if (r != "") { A[".~"] = A["`~"] = A["^~"] = r } + } else if (match(v, /!/)) { + delete A[i] } else { - if (match(v, /!/)) { - delete A[i] - } else { - A[i] = v - if (r != "") { - A[i "~"] = r - } + A[i] = v + if (r != "") { + A[i "~"] = r } } } @@ -5793,16 +5697,14 @@ } --_tQCHLD[a] } - } else { - if (v in _tPARENT) { - if (p == (a = _tPARENT[v])) { - return v - } - delete _tPREV[_tFCHLD[a] = _tNEXT[v]] - --_tQCHLD[a] - } else { - delete _tPREV[_tNEXT[v]] + } else if (v in _tPARENT) { + if (p == (a = _tPARENT[v])) { + return v } + delete _tPREV[_tFCHLD[a] = _tNEXT[v]] + --_tQCHLD[a] + } else { + delete _tPREV[_tNEXT[v]] } ++_tQCHLD[p] return (_tFCHLD[p] = _tPREV[_tNEXT[v] = _tFCHLD[_tPARENT[v] = p]] = v) @@ -5819,15 +5721,13 @@ delete _tNEXT[_tPREV[v]] } delete _tPREV[v] - } else { - if (v in _tPARENT) { - if (p == (a = _tPARENT[v])) { - return v - } - delete _tFCHLD[a] - delete _tLCHLD[a] - delete _tQCHLD[a] + } else if (v in _tPARENT) { + if (p == (a = _tPARENT[v])) { + return v } + delete _tFCHLD[a] + delete _tLCHLD[a] + delete _tQCHLD[a] } ++_tQCHLD[p] return (_tFCHLD[p] = _tPREV[_tNEXT[v] = _tFCHLD[_tPARENT[v] = p]] = v) @@ -5845,12 +5745,10 @@ } else { delete _tNEXT[_tLCHLD[a] = _tPREV[v]] } + } else if (v in _tNEXT) { + _tNEXT[_tPREV[a] = _tPREV[v]] = a = _tNEXT[v] } else { - if (v in _tNEXT) { - _tNEXT[_tPREV[a] = _tPREV[v]] = a = _tNEXT[v] - } else { - delete _tNEXT[_tPREV[v]] - } + delete _tNEXT[_tPREV[v]] } delete _tPREV[v] } else { @@ -5867,10 +5765,8 @@ delete _tQCHLD[a] } delete _tPARENT[v] - } else { - if (v in _tNEXT) { - delete _tPREV[_tNEXT[v]] - } + } else if (v in _tNEXT) { + delete _tPREV[_tNEXT[v]] } } return (_tPREV[_tNEXT[v] = p] = v) @@ -5914,16 +5810,14 @@ } --_tQCHLD[a] } - } else { - if (v in _tPARENT) { - if (p == (a = _tPARENT[v])) { - return v - } - delete _tPREV[_tFCHLD[a] = _tNEXT[v]] - --_tQCHLD[a] - } else { - delete _tPREV[_tNEXT[v]] + } else if (v in _tPARENT) { + if (p == (a = _tPARENT[v])) { + return v } + delete _tPREV[_tFCHLD[a] = _tNEXT[v]] + --_tQCHLD[a] + } else { + delete _tPREV[_tNEXT[v]] } if (p in _tFCHLD) { ++_tQCHLD[p] @@ -5943,15 +5837,13 @@ delete _tNEXT[_tPREV[v]] } delete _tPREV[v] - } else { - if (v in _tPARENT) { - if (p == (a = _tPARENT[v])) { - return v - } - delete _tFCHLD[a] - delete _tLCHLD[a] - delete _tQCHLD[a] + } else if (v in _tPARENT) { + if (p == (a = _tPARENT[v])) { + return v } + delete _tFCHLD[a] + delete _tLCHLD[a] + delete _tQCHLD[a] } if (p in _tFCHLD) { ++_tQCHLD[p] @@ -6003,16 +5895,14 @@ } --_tQCHLD[a] } - } else { - if (v in _tPARENT) { - if (p == (a = _tPARENT[v])) { - return v - } - delete _tNEXT[_tLCHLD[a] = _tPREV[v]] - --_tQCHLD[a] - } else { - delete _tNEXT[_tPREV[v]] + } else if (v in _tPARENT) { + if (p == (a = _tPARENT[v])) { + return v } + delete _tNEXT[_tLCHLD[a] = _tPREV[v]] + --_tQCHLD[a] + } else { + delete _tNEXT[_tPREV[v]] } ++_tQCHLD[p] return (_tLCHLD[p] = _tNEXT[_tPREV[v] = _tLCHLD[_tPARENT[v] = p]] = v) @@ -6029,15 +5919,13 @@ delete _tPREV[_tNEXT[v]] } delete _tNEXT[v] - } else { - if (v in _tPARENT) { - if (p == (a = _tPARENT[v])) { - return v - } - delete _tLCHLD[a] - delete _tFCHLD[a] - delete _tQCHLD[a] + } else if (v in _tPARENT) { + if (p == (a = _tPARENT[v])) { + return v } + delete _tLCHLD[a] + delete _tFCHLD[a] + delete _tQCHLD[a] } ++_tQCHLD[p] return (_tLCHLD[p] = _tNEXT[_tPREV[v] = _tLCHLD[_tPARENT[v] = p]] = v) @@ -6055,12 +5943,10 @@ } else { delete _tPREV[_tFCHLD[a] = _tNEXT[v]] } + } else if (v in _tPREV) { + _tPREV[_tNEXT[a] = _tNEXT[v]] = a = _tPREV[v] } else { - if (v in _tPREV) { - _tPREV[_tNEXT[a] = _tNEXT[v]] = a = _tPREV[v] - } else { - delete _tPREV[_tNEXT[v]] - } + delete _tPREV[_tNEXT[v]] } delete _tNEXT[v] } else { @@ -6077,10 +5963,8 @@ delete _tQCHLD[a] } delete _tPARENT[v] - } else { - if (v in _tPREV) { - delete _tNEXT[_tPREV[v]] - } + } else if (v in _tPREV) { + delete _tNEXT[_tPREV[v]] } } return (_tNEXT[_tPREV[v] = p] = v) @@ -6124,16 +6008,14 @@ } --_tQCHLD[a] } - } else { - if (v in _tPARENT) { - if (p == (a = _tPARENT[v])) { - return v - } - delete _tNEXT[_tLCHLD[a] = _tPREV[v]] - --_tQCHLD[a] - } else { - delete _tNEXT[_tPREV[v]] + } else if (v in _tPARENT) { + if (p == (a = _tPARENT[v])) { + return v } + delete _tNEXT[_tLCHLD[a] = _tPREV[v]] + --_tQCHLD[a] + } else { + delete _tNEXT[_tPREV[v]] } if (p in _tLCHLD) { ++_tQCHLD[p] @@ -6153,15 +6035,13 @@ delete _tPREV[_tNEXT[v]] } delete _tNEXT[v] - } else { - if (v in _tPARENT) { - if (p == (a = _tPARENT[v])) { - return v - } - delete _tLCHLD[a] - delete _tFCHLD[a] - delete _tQCHLD[a] + } else if (v in _tPARENT) { + if (p == (a = _tPARENT[v])) { + return v } + delete _tLCHLD[a] + delete _tFCHLD[a] + delete _tQCHLD[a] } if (p in _tLCHLD) { ++_tQCHLD[p] @@ -6225,21 +6105,17 @@ --_tQCHLD[b] } } - } else { - if (v in _tNEXT) { - if (v in _tPARENT) { - delete _tPREV[_tFCHLD[a = _tPARENT[v]] = _tNEXT[v]] - --_tQCHLD[a] - } else { - delete _tPREV[_tNEXT[v]] - } + } else if (v in _tNEXT) { + if (v in _tPARENT) { + delete _tPREV[_tFCHLD[a = _tPARENT[v]] = _tNEXT[v]] + --_tQCHLD[a] } else { - if (v in _tPARENT) { - delete _tFCHLD[a = _tPARENT[v]] - delete _tLCHLD[a] - delete _tQCHLD[a] - } + delete _tPREV[_tNEXT[v]] } + } else if (v in _tPARENT) { + delete _tFCHLD[a = _tPARENT[v]] + delete _tLCHLD[a] + delete _tQCHLD[a] } if (p in _tNEXT) { _tPREV[_tNEXT[v] = _tNEXT[p]] = v @@ -6307,21 +6183,17 @@ --_tQCHLD[b] } } - } else { - if (v in _tPREV) { - if (v in _tPARENT) { - delete _tNEXT[_tLCHLD[a = _tPARENT[v]] = _tPREV[v]] - --_tQCHLD[a] - } else { - delete _tNEXT[_tPREV[v]] - } + } else if (v in _tPREV) { + if (v in _tPARENT) { + delete _tNEXT[_tLCHLD[a = _tPARENT[v]] = _tPREV[v]] + --_tQCHLD[a] } else { - if (v in _tPARENT) { - delete _tLCHLD[a = _tPARENT[v]] - delete _tFCHLD[a] - delete _tQCHLD[a] - } + delete _tNEXT[_tPREV[v]] } + } else if (v in _tPARENT) { + delete _tLCHLD[a = _tPARENT[v]] + delete _tFCHLD[a] + delete _tQCHLD[a] } if (p in _tPREV) { _tNEXT[_tPREV[v] = _tPREV[p]] = v diff --git a/test/profile8.awk b/test/profile8.awk new file mode 100644 index 0000000..68d0622 --- /dev/null +++ b/test/profile8.awk @@ -0,0 +1,4 @@ +{if(0){}else{}} +{while(0){}} +{do{}while(0)} +{for(;;){}} diff --git a/test/profile8.ok b/test/profile8.ok new file mode 100644 index 0000000..763c6fe --- /dev/null +++ b/test/profile8.ok @@ -0,0 +1,23 @@ + # Rule(s) + + { + if (0) { + } else { + } + } + + { + while (0) { + } + } + + { + do { + } while (0) + } + + { + for (;;) { + } + } + diff --git a/test/readbuf.awk b/test/readbuf.awk new file mode 100644 index 0000000..b7512db --- /dev/null +++ b/test/readbuf.awk @@ -0,0 +1,2 @@ + +{ diff --git a/test/readbuf.ok b/test/readbuf.ok new file mode 100644 index 0000000..110a26b --- /dev/null +++ b/test/readbuf.ok @@ -0,0 +1,3 @@ +gawk: readbuf.awk:2: { +gawk: readbuf.awk:2: ^ unexpected newline or end of string +EXIT CODE: 1 diff --git a/test/rscompat.awk b/test/rscompat.awk new file mode 100644 index 0000000..9415c70 --- /dev/null +++ b/test/rscompat.awk @@ -0,0 +1,2 @@ +BEGIN { RS = "bar" } +{ print $1, $2 } diff --git a/test/rscompat.in b/test/rscompat.in new file mode 100644 index 0000000..eb337e5 --- /dev/null +++ b/test/rscompat.in @@ -0,0 +1,2 @@ +0foobar0faz +1foobar1faz diff --git a/test/rscompat.ok b/test/rscompat.ok new file mode 100644 index 0000000..19cd9fb --- /dev/null +++ b/test/rscompat.ok @@ -0,0 +1,3 @@ +0foo +ar0faz 1foo +ar1faz diff --git a/test/sigpipe1.awk b/test/sigpipe1.awk new file mode 100644 index 0000000..9b23f39 --- /dev/null +++ b/test/sigpipe1.awk @@ -0,0 +1,13 @@ +BEGIN { + print "system" + command = "yes | true" + system(command) + + print "pipe to command" + print "hi" | command + close(command) + + print "pipe from command" + command | getline x + close(command) +} diff --git a/test/sigpipe1.ok b/test/sigpipe1.ok new file mode 100644 index 0000000..6596f07 --- /dev/null +++ b/test/sigpipe1.ok @@ -0,0 +1,3 @@ +system +pipe to command +pipe from command diff --git a/test/sortfor2.awk b/test/sortfor2.awk new file mode 100644 index 0000000..1dfca04 --- /dev/null +++ b/test/sortfor2.awk @@ -0,0 +1,11 @@ +BEGIN { + PROCINFO["sorted_in"] = "@ind_num_asc" + } + { + A[$1] = 0 + } + END { + for (I in A) B[I] = A[I] + for (I in B) SCRATCH = A[I] + for (I in A) print I + } diff --git a/test/sortfor2.in b/test/sortfor2.in new file mode 100644 index 0000000..e75357a --- /dev/null +++ b/test/sortfor2.in @@ -0,0 +1,2 @@ +1.0 +2.0 diff --git a/test/sortfor2.ok b/test/sortfor2.ok new file mode 100644 index 0000000..e75357a --- /dev/null +++ b/test/sortfor2.ok @@ -0,0 +1,2 @@ +1.0 +2.0 diff --git a/test/subback.awk b/test/subback.awk new file mode 100644 index 0000000..d91513c --- /dev/null +++ b/test/subback.awk @@ -0,0 +1,16 @@ +BEGIN { + A[0] = "&" + for(i=1;i<=11;i++) { + A[i] = "\\" A[i-1] + } +## A[] holds & \& \\& \\\& \\\\& ... +} + +{ + for(i=0; i <= 11 ; i++) { + x = $0 + sub(/B/, A[i], x) + y = gensub(/B/, A[i], "1", $0) + print i, x, y + } +} diff --git a/test/subback.in b/test/subback.in new file mode 100644 index 0000000..223b783 --- /dev/null +++ b/test/subback.in @@ -0,0 +1 @@ +B diff --git a/test/subback.ok b/test/subback.ok new file mode 100644 index 0000000..9792c82 --- /dev/null +++ b/test/subback.ok @@ -0,0 +1,12 @@ +0 B B +1 & & +2 \B \B +3 \& \& +4 \\B \\B +5 \\& \\& +6 \\\B \\\B +7 \\\& \\\& +8 \\\\B \\\\B +9 \\\\& \\\\& +10 \\\\\B \\\\\B +11 \\\\\& \\\\\& diff --git a/test/symtab10.awk b/test/symtab10.awk new file mode 100644 index 0000000..6fbd399 --- /dev/null +++ b/test/symtab10.awk @@ -0,0 +1 @@ +BEGIN { SYMTAB["x"] ; y=1 ; y++ } diff --git a/test/symtab10.in b/test/symtab10.in new file mode 100644 index 0000000..d9afcd6 --- /dev/null +++ b/test/symtab10.in @@ -0,0 +1,4 @@ +watch y +run +watch x +continue diff --git a/test/symtab10.ok b/test/symtab10.ok new file mode 100644 index 0000000..b0cabd7 --- /dev/null +++ b/test/symtab10.ok @@ -0,0 +1,11 @@ +Watchpoint 1: y +Starting program: +Stopping in BEGIN ... +Watchpoint 1: y + Old value: untyped variable + New value: 1 +main() at `symtab10.awk':1 +1 BEGIN { SYMTAB["x"] ; y=1 ; y++ } +no symbol `x' in current context +Program exited normally with exit value: 0 +EXIT CODE: 2 diff --git a/test/symtab6.ok b/test/symtab6.ok index 91f27e7..7de717a 100644 --- a/test/symtab6.ok +++ b/test/symtab6.ok @@ -9,6 +9,7 @@ FILENAME: "" FNR: 0 FPAT: "[^[:space:]]+" FS: " " +FUNCTAB: array, 41 elements IGNORECASE: 0 LINT: 0 NF: 0 @@ -23,4 +24,5 @@ RS: "\n" RSTART: 0 RT: "" SUBSEP: "\034" +SYMTAB: array, 29 elements TEXTDOMAIN: "messages" diff --git a/test/symtab8.ok b/test/symtab8.ok index 724f374..da29b58 100644 --- a/test/symtab8.ok +++ b/test/symtab8.ok @@ -9,6 +9,7 @@ FIELDWIDTHS: "" FNR: 1 FPAT: "[^[:space:]]+" FS: " " +FUNCTAB: array, 41 elements IGNORECASE: 0 LINT: 0 NF: 1 @@ -23,5 +24,6 @@ RS: "\n" RSTART: 0 RT: "\n" SUBSEP: "\034" +SYMTAB: array, 29 elements TEXTDOMAIN: "messages" test: 1 diff --git a/test/watchpoint1.awk b/test/watchpoint1.awk new file mode 100644 index 0000000..5e7e941 --- /dev/null +++ b/test/watchpoint1.awk @@ -0,0 +1,14 @@ +#! /usr/bin/gawk -f +BEGIN { + c = 0 +} + +/apple/ { + nr = NR + c++ + # printf "[c, NR] = [%s, %s]\n", c, NR +} + +END { + print c +} diff --git a/test/watchpoint1.in b/test/watchpoint1.in new file mode 100644 index 0000000..83ac6f4 --- /dev/null +++ b/test/watchpoint1.in @@ -0,0 +1,8 @@ +1 1 pear +2 1 apple 4 +3 2 pear +4 3 apple 9 +5 8 pear +6 9 apple +7 10 pear +8 12 apple diff --git a/test/watchpoint1.ok b/test/watchpoint1.ok new file mode 100644 index 0000000..b1e7e53 --- /dev/null +++ b/test/watchpoint1.ok @@ -0,0 +1,65 @@ +1 #! /usr/bin/gawk -f +2 BEGIN { +3 c = 0 +4 } +5 +6 /apple/ { +7 nr = NR +8 c++ +9 # printf "[c, NR] = [%s, %s]\n", c, NR +10 } +11 +12 END { +13 print c +14 } +Watchpoint 1: c +1: c = untyped variable +2: nr = untyped variable +3: NR = 0 +Breakpoint 2 set at file `watchpoint1.awk', line 6 +Starting program: +Stopping in Rule ... +Watchpoint 1: c + Old value: untyped variable + New value: 0 +main() at `watchpoint1.awk':6 +6 /apple/ { +1: c = 0 +2: nr = untyped variable +3: NR = 1 +Breakpoint 2, main() at `watchpoint1.awk':6 +6 /apple/ { +1: c = 0 +2: nr = untyped variable +3: NR = 1 +Breakpoint 2, main() at `watchpoint1.awk':6 +6 /apple/ { +1: c = 0 +2: nr = untyped variable +3: NR = 2 +Watchpoint 1: c + Old value: 0 + New value: 1 +main() at `watchpoint1.awk':6 +6 /apple/ { +1: c = 1 +2: nr = 2 +3: NR = 3 +Breakpoint 2, main() at `watchpoint1.awk':6 +6 /apple/ { +1: c = 1 +2: nr = 2 +3: NR = 3 +Breakpoint 2, main() at `watchpoint1.awk':6 +6 /apple/ { +1: c = 1 +2: nr = 2 +3: NR = 4 +Watchpoint 1: c + Old value: 1 + New value: 2 +main() at `watchpoint1.awk':6 +6 /apple/ { +1: c = 2 +2: nr = 4 +3: NR = 5 diff --git a/test/watchpoint1.script b/test/watchpoint1.script new file mode 100644 index 0000000..94897d1 --- /dev/null +++ b/test/watchpoint1.script @@ -0,0 +1,14 @@ +list +watch c +display c +display nr +display NR +break 6 +run +continue +continue +continue +continue +continue +continue +quit diff --git a/vms/ChangeLog b/vms/ChangeLog index 92fb7ab..d45a53b 100644 --- a/vms/ChangeLog +++ b/vms/ChangeLog @@ -1,3 +1,102 @@ +2016-08-25 Arnold D. Robbins + + * 4.1.4: Release tar ball made. + +2016-08-08 John E. Malmberg + + * vmstest.com: New test (basic) ofmtstrnum + New test (extra) ignrcas3 - skipped. + Updated test (shlib) filefuncs, backsmalls1 + +2016-06-16 John E. Malmberg + + * vmstest.com: New tests (basic) hex2, mixed1, subback + +2016-05-30 John E. Malmberg + + * vmstest.com: New tests (basic) fsnul1 + New tests (ext) fpat4, symtab10 + * vmstest.com: Outputs test_output.xml in junit format. + +2016-05-29 John E. Malmberg + + * stage_gawk_install.com: Fix directory path + * vmstest.com: new tests + (basic) arrayind1, rscompat, sigpipe1 + (ext) close1way2, clos1way3, clos1way4, clos1way5 + +2016-04-10 John E. Malmberg + + * generate_config_vms_h_gawk.com: define __attribute() as macro. + +2016-02-02 John E. Malmberg + + * descrip.mms: Add gawk_debug target. + * vms_sort.com: Implement sort function for tests. + * vmstest.com: updates + Reorganize test lists to make them easier to read and + update. + (vms_debug): New command to switch to debug_gawk + + New/fixed tests: + (basic): badassign1,dfamb1,exit2,nfloop,badbuild, + callparam,exitval2,exitval3,inpref,paramasfunc1, + paramasfunc2,regexpbrack,sortglos,rebrackloc + aryprm9,nulinsrc,rstest4,rstest5 + (ext): id,profile4,profile5,crlf,dbugeval,fpat4,genpot, + indirectbuiltin,printfbad4,printhuge,profile0, + profile6,profile7,regnul1,regnul2,rsgetline, + rsglstdin,mbstr2,profile8,watchpoint1,rsstart3 + (locale): backbigs1,backsmalls1,backsmalls2,mbprintf4 + (shlib): inplace2,testext,lc_num1,mbprintf1, + mbprintf2,mbprintf3,mbprintf4,mbfw1,ordchr2 + * vms.h, vms_args.c, vms_cli.c, vms_fwrite.c, + vms_misc.c, vms_popen.c: + Use VMS provided descriptor definitions. + +2016-01-27 John E. Malmberg + + * generate_config_vms_h_gawk.com: Add missing define + for macro TIME_T_UNSIGNED. Remove supression of + compiler message. + +2016-01-24 John E. Malmberg + + * vmstest.com: updates + (ofmta): Skip on VAX as VAX floating runtime is different. + (beginfile1): Handle NFS ODS-2 case encoded filenames. + (dumpvars): Fix test compare. + (gensub2): Capture stderr output for compare. + (define_gawklocale): set LC_ALL "utf8-20". + +2016-01-24 John E. Malmberg + + * generate_config_vms_h_gawk.com: Supress compiler message + about comparing an unsigned value to a negative number + in missing_d/strftime.c. + * descrip.mms: Temporary comment out the use of bison or yacc + until current ports are known to be available for VMS. + * build_gawk_pcsi_desc.com: Remove extra copy of a file being + installed. + +2016-01-21 John E. Malmberg + + * descrip.mms and vmsbuild.com: Remove the unused hand-updated + version numbers. + +2016-01-10 John E. Malmberg + + * build_gawk_pcsi_desc.com: Better detection for VMS Software + Inc.'s OpenVMS releases. + * compare_gawk_source.com: Skip files that VMS can not diff + with native tools. + * gawk_alias_setup: Install aliases in correct simulated + Linux directory. + * pcsi_gawk_file_list.txt: Install binaries and aliass in + correct simulated Linux directory. + * remove_old_gawk.com: Look for old gawk images that may + have been installed in the wrong directory. + 2015-05-19 Arnold D. Robbins * 4.1.3: Release tar ball made. diff --git a/vms/build_gawk_pcsi_desc.com b/vms/build_gawk_pcsi_desc.com index 63d149e..162da08 100644 --- a/vms/build_gawk_pcsi_desc.com +++ b/vms/build_gawk_pcsi_desc.com @@ -96,8 +96,8 @@ $! Required product dependencies. $!---------------------------------- $ vmsprd = "DEC" $ if base .eqs. "I64VMS" then vmsprd = "HP" +$ vsiprd = "VSI" $! -$ write pdsc " software ''vmsprd' ''base' VMS ;" $ arch_type = f$getsyi("ARCH_NAME") $ node_swvers = f$getsyi("node_swvers") $ vernum = f$extract(1, f$length(node_swvers), node_swvers) @@ -109,8 +109,20 @@ $ if dashver .eqs. "-" then dashver = "" $ vmstag = majver + minver + dashver $ code = f$extract(0, 1, arch_type) $ arch_code = f$extract(0, 1, arch_type) -$ write pdsc - - " if (not ) ;" +$ line_out = - + " if (( and" +$ write pdsc line_out +$ line_out = - + " (not )) or" +$ write pdsc line_out +$ line_out = - + " (" +$ write pdsc line_out +$ line_out = - + " and (not ))) ;" +$ write pdsc line_out $ write pdsc " error NEED_VMS''vmstag';" $ write pdsc " end if;" $! @@ -403,11 +415,6 @@ $! $flst_loop_end: $ close flst $! -$! Add Link alias procedure file (N/A for gawk) -$!----------------------------------------------------- -$ write pdsc " file ""[vms_bin]gawk_alias_setup.com""" -$ write pdsc " source [vms_bin]gawk_alias_setup.com ;" -$! $! Add [.SYS$STARTUP]gawk_startup file $!--------------------------------------- $ write pdsc " file ""[sys$startup]gnv$gawk_startup.com""" diff --git a/vms/compare_gawk_source.com b/vms/compare_gawk_source.com index 260ec4e..065b640 100644 --- a/vms/compare_gawk_source.com +++ b/vms/compare_gawk_source.com @@ -269,6 +269,8 @@ $ if ref_fname .eqs. "nasty2.ok" then ref_skip = 1 $ if ref_fname .eqs. "profile5.awk" then ref_skip = 1 $ if ref_fname .eqs. "profile5.ok" then ref_skip = 1 $ if ref_fname .eqs. "po.m4" then ref_skip = 1 +$ if ref_fname .eqs. "configure." then ref_skip = 1 +$ if ref_fname .eqs. "libtool.m4" then ref_skip = 1 $! $! $ if ref_skip .ne. 0 diff --git a/vms/descrip.mms b/vms/descrip.mms index 8b04e7f..5e83b41 100644 --- a/vms/descrip.mms +++ b/vms/descrip.mms @@ -120,21 +120,23 @@ VMSOBJS = $(VMSCODE),$(VMSCMD) DOCS= $(DOCDIR)gawk.1,$(DOCDIR)gawk.texi,$(DOCDIR)texinfo.tex -# Release of gawk -REL=4.1 -PATCHLVL=3 - # generic target -all : gawk +all : gawk gawk_debug @ $(NOOP) # dummy target to allow building "gawk" in addition to explicit "gawk.exe" gawk : gawk.exe @ $(ECHO) "$< is upto date" +gawk_debug : gawk_debug.exe + @ $(ECHO) "$< is upto date" + # rules to build gawk gawk.exe : $(GAWKOBJ) $(AWKOBJS) $(VMSOBJS) gawk.opt - $(LINK) $(LINKFLAGS) gawk.opt/options + $(LINK) $(LINKFLAGS)/EXE=$(MMS$TARGET) gawk.opt/options + +gawk_debug.exe : $(GAWKOBJ) $(AWKOBJS) $(VMSOBJS) gawk.opt + $(LINK) $(LINKFLAGS)/DEBUG/EXE=$(MMS$TARGET) gawk.opt/options gawk.opt : $(MAKEFILE) config.h # create linker options file @ open/write opt sys$disk:[]gawk.opt ! ~ 'cat <gawk.opt' @@ -205,28 +207,30 @@ replace.obj : replace.c $(MISSNGD)system.c $(MISSNGD)memcmp.c \ $(MISSNGD)usleep.c \ $(MISSNGD)setenv.c $(MISSNGD)strcoll.c $(MISSNGD)wcmisc.c +# bison or yacc have not been ported to current VMS versions +# When that changes, this can be restored. # bison or yacc required -awkgram.c : awkgram.y # foo.y :: yacc => y[_]tab.c, bison => foo_tab.c - @- if f$search("ytab.c") .nes."" then delete ytab.c;* !POSIX yacc - @- if f$search("y_tab.c") .nes."" then delete y_tab.c;* !DEC/Shell yacc - @- if f$search("awkgram_tab.c").nes."" then delete awkgram_tab.c;* !bison - - $(PARSERINIT) - $(PARSER) $(YFLAGS) $< - @- if f$search("ytab.c") .nes."" then rename/new_vers ytab.c $@ - @- if f$search("y_tab.c") .nes."" then rename/new_vers y_tab.c $@ - @- if f$search("awkgram_tab.c").nes."" then \ - rename/new_vers awkgram_tab.c $@ - -command.c : command.y - @- if f$search("ytab.c") .nes."" then delete ytab.c;* - @- if f$search("y_tab.c") .nes."" then delete y_tab.c;* - @- if f$search("command_tab.c").nes."" then delete command_tab.c;* - - $(PARSERINIT) - $(PARSER) $(YFLAGS) $< - @- if f$search("ytab.c") .nes."" then rename/new_vers ytab.c $@ - @- if f$search("y_tab.c") .nes."" then rename/new_vers y_tab.c $@ - @- if f$search("command_tab.c").nes."" then \ - rename/new_vers command_tab.c $@ +# awkgram.c : awkgram.y # foo.y :: yacc => y[_]tab.c, bison => foo_tab.c +# @- if f$search("ytab.c") .nes."" then delete ytab.c;* !POSIX yacc +# @- if f$search("y_tab.c") .nes."" then delete y_tab.c;* !DEC/Shell yacc +# @- if f$search("awkgram_tab.c").nes."" then delete awkgram_tab.c;* !bison +# - $(PARSERINIT) +# $(PARSER) $(YFLAGS) $< +# @- if f$search("ytab.c") .nes."" then rename/new_vers ytab.c $@ +# @- if f$search("y_tab.c") .nes."" then rename/new_vers y_tab.c $@ +# @- if f$search("awkgram_tab.c").nes."" then \ +# rename/new_vers awkgram_tab.c $@ + +# command.c : command.y +# @- if f$search("ytab.c") .nes."" then delete ytab.c;* +# @- if f$search("y_tab.c") .nes."" then delete y_tab.c;* +# @- if f$search("command_tab.c").nes."" then delete command_tab.c;* +# - $(PARSERINIT) +# $(PARSER) $(YFLAGS) $< +# @- if f$search("ytab.c") .nes."" then rename/new_vers ytab.c $@ +# @- if f$search("y_tab.c") .nes."" then rename/new_vers y_tab.c $@ +# @- if f$search("command_tab.c").nes."" then \ +# rename/new_vers command_tab.c $@ config_vms.h : $(VMSDIR)generate_config_vms_h_gawk.com $ @$(VMSDIR)generate_config_vms_h_gawk.com diff --git a/vms/gawk_alias_setup.com b/vms/gawk_alias_setup.com index a7f13f4..45cbc21 100644 --- a/vms/gawk_alias_setup.com +++ b/vms/gawk_alias_setup.com @@ -22,10 +22,8 @@ $ set proc/parse=extended $ endif $! $! -$ call do_alias "gawk" "[bin]" -$ call do_alias "gawk" "[bin]" "awk" -$ call do_alias "gawk" "[bin]" "gawk" "[usr.bin]" -$ call do_alias "gawk" "[bin]" "awk" "[usr.bin]" +$ call do_alias "gawk" "[usr.bin]" +$ call do_alias "gawk" "[usr.bin]" "awk" $ call do_alias "gawk.1" "[usr.share.man.man1]" "awk.1" $! $ exit diff --git a/vms/gawk_release_note_start.txt b/vms/gawk_release_note_start.txt index 44fceaf..cb7dc5f 100644 --- a/vms/gawk_release_note_start.txt +++ b/vms/gawk_release_note_start.txt @@ -141,8 +141,19 @@ fixes the issues. This kit is designed to be used with the GNV Bash 4.2.45 or later kit. + Fixes and enhancements: + Gawk 4.1.3 ECO 1 + +* The previous GAWK kits were placing the binaries in /bin instead of + /usr/bin, and not cleaning up the older binaries from the /bin directory + after an update. + +* The older kits could not properly detect the VSI releases of OpenVMS. + + Older kits: + * No logical names required for proper Gawk operations other than GNV$GNU for locating the simulated "/". diff --git a/vms/generate_config_vms_h_gawk.com b/vms/generate_config_vms_h_gawk.com index eff43d7..a6a3743 100644 --- a/vms/generate_config_vms_h_gawk.com +++ b/vms/generate_config_vms_h_gawk.com @@ -13,7 +13,7 @@ $! This generates a []config.h file and also a config_vms.h file, $! which is used to supplement that file. $! $! -$! Copyright (C) 2014 the Free Software Foundation, Inc. +$! Copyright (C) 2014, 2016 the Free Software Foundation, Inc. $! $! This file is part of GAWK, the GNU implementation of the $! AWK Progamming Language. @@ -288,8 +288,12 @@ $ write cvh " }" $ write cvh " decc$exit(vms_status);" $ write cvh "}" $ write cvh "" +$ write cvh "#define TIME_T_UNSIGNED 1" $ write cvh "#include ""custom.h""" $ write cvh "" +$ write cvh "#define __attribute(a)" +$ write cvh "" +$ $! $! Close out the file $! diff --git a/vms/pcsi_gawk_file_list.txt b/vms/pcsi_gawk_file_list.txt index 67d2d32..ed5a26e 100644 --- a/vms/pcsi_gawk_file_list.txt +++ b/vms/pcsi_gawk_file_list.txt @@ -71,8 +71,8 @@ [gnv.usr.src.gawk.extension] [gnv.usr.src.gawk.extension]vms.dir [gnv.usr.src.gawk.extension.vms] -[gnv.bin]gnv$gawk.exe -[gnv.bin]igawk. +[gnv.usr.bin]gnv$gawk.exe +[gnv.usr.bin]igawk. [gnv.vms_bin]remove_old_gawk.com [gnv.vms_bin]gawk_alias_setup.com [gnv.vms_bin]gawk_verb.cld diff --git a/vms/remove_old_gawk.com b/vms/remove_old_gawk.com index ed68fc4..ef7bce4 100644 --- a/vms/remove_old_gawk.com +++ b/vms/remove_old_gawk.com @@ -24,6 +24,7 @@ $ file = f$element(i, ",", old_cutils) $ if file .eqs. "" then goto cutils_loop_end $ if file .eqs. "," then goto cutils_loop_end $ call update_old_image 'file' +$ call update_old_image 'file' '[usr.bin]' $ i = i + 1 $ goto cutils_loop $cutils_loop_end: @@ -53,9 +54,11 @@ $!------------------------------------------- $update_old_image: subroutine $! $ file = p1 +$ fdir = p2 +$ if fdir .eqs. "" then fdir = "[bin]" $! First get the FID of the new gawk image. $! Don't remove anything that matches it. -$ new_gawk = f$search("GNV$GNU:[BIN]GNV$''file'.EXE") +$ new_gawk = f$search("GNV$GNU:[user.bin]GNV$''file'.EXE") $! $ new_gawk_fid = "No_new_gawk_fid" $ if new_gawk .nes. "" @@ -71,9 +74,9 @@ $! Ok to delete and replace. $! $! $ old_gawk_fid = "No_old_gawk_fid" -$ old_gawk = f$search("gnv$gnu:[bin]''file'.") +$ old_gawk = f$search("gnv$gnu:''fdir'''file'.") $ old_gawk_exe_fid = "No_old_gawk_fid" -$ old_gawk_exe = f$search("gnv$gnu:[bin]''file'.exe") +$ old_gawk_exe = f$search("gnv$gnu:''fdir'''file'.exe") $ if old_gawk_exe .nes. "" $ then $ old_gawk_exe_fid = f$file_attributes(old_gawk_exe, "FID") diff --git a/vms/stage_gawk_install.com b/vms/stage_gawk_install.com index 22daf7f..c980eac 100644 --- a/vms/stage_gawk_install.com +++ b/vms/stage_gawk_install.com @@ -39,7 +39,7 @@ $ create/dir new_gnu:[usr.share.awk]/prot=o:rwed $ create/dir new_gnu:[usr.share.doc.gawk]/prot=o:rwed $ create/dir new_gnu:[usr.share.info]/prot=o:rwed $ create/dir new_gnu:[usr.src.gawk.extension.vms]/prot=o:rwed -$ create/dir new_gnu:[usr.share.doc.man.man1]/prot=o:rwed +$ create/dir new_gnu:[usr.share.man.man1]/prot=o:rwed $ endif $! $ if mode .eqs. "install" diff --git a/vms/vax/ChangeLog b/vms/vax/ChangeLog index c73b814..5f1367b 100644 --- a/vms/vax/ChangeLog +++ b/vms/vax/ChangeLog @@ -1,3 +1,7 @@ +2016-08-25 Arnold D. Robbins + + * 4.1.4: Release tar ball made. + 2015-05-19 Arnold D. Robbins * 4.1.3: Release tar ball made. diff --git a/vms/vms.h b/vms/vms.h index 3991d39..43ca837 100644 --- a/vms/vms.h +++ b/vms/vms.h @@ -3,7 +3,7 @@ * Pat Rankin, Nov'89 */ -#if 0 +#if 1 #include #else #define IO$_WRITEVBLK 48 /* write virtual block */ @@ -11,7 +11,7 @@ #define IO$M_CANCTRLO (1 << IO$V_CANCTRLO) #endif -#if 0 +#if 1 #include #include #include @@ -22,19 +22,26 @@ #define FSCN$_FILESPEC 1 #endif -#if 0 +#if 1 #include #else -#define CLI$_RUNUSED 0x00030000 /* value returned by $CLI for "RUN" */ -#define CLI$_SYNTAX 0x000310FC /* error signalled by CLI$DCL_PARSE */ #define CLI$_INSFPRM 0x00038048 /* insufficient parameters */ #define CLI$_VALREQ 0x00038150 /* missing required value */ #define CLI$_NEGATED 0x000381F8 /* explicitly negated */ #define CLI$_CONFLICT 0x00038258 /* conflicting qualifiers */ #define CLI$_NOOPTPRS 0x00038840 /* no option present */ #endif +/* Missing in VAX/VMS 7.3 */ +#ifndef CLI$_RUNUSED +#define CLI$_RUNUSED 0x00030000 /* value returned by $CLI for "RUN" */ +#endif +/* Missing as of VMS 8.4 */ +#ifndef CLI$_SYNTAX +#define CLI$_SYNTAX 0x000310FC /* error signalled by CLI$DCL_PARSE */ +#endif + -#if 0 +#if 1 #include #else #define PSL$C_USER 3 /* user mode */ @@ -44,36 +51,60 @@ typedef unsigned long U_Long; typedef unsigned short U_Short; -typedef struct _dsc { int len; char *adr; } Dsc; /* limited string descriptor */ - /* standard VMS itemlist-3 structure */ +#include +#include + +#pragma member_alignment save +#pragma nomember_alignment longword +#pragma message save +#pragma message disable misalgndmem typedef struct _itm { U_Short len, code; void *buffer; U_Short *retlen; } Itm; +#pragma message restore +#pragma member_alignment restore + -#define vmswork(sts) ((sts)&1) -#define vmsfail(sts) (!vmswork(sts)) +#define vmswork(sts) $VMS_STATUS_SUCCESS(sts) +#define vmsfail(sts) (!$VMS_STATUS_SUCCESS(sts)) #define CondVal(sts) ((sts)&0x0FFFFFF8) /* strip severity & msg inhibit */ -#define Descrip(strdsc,strbuf) Dsc strdsc = {sizeof strbuf - 1, (char *)strbuf} +#define Descrip(strdsc,strbuf) struct dsc$descriptor_s \ + strdsc = {sizeof strbuf - 1, DSC$K_DTYPE_T, DSC$K_CLASS_S, (char *)strbuf} extern int shell$is_shell(void); -extern U_Long LIB$FIND_FILE(const Dsc *, Dsc *, void *, ...); +extern U_Long LIB$FIND_FILE(const struct dsc$descriptor_s *, + struct dsc$descriptor_s *, void *, ...); extern U_Long LIB$FIND_FILE_END(void *); #ifndef NO_TTY_FWRITE extern U_Long LIB$GET_EF(long *); -extern U_Long SYS$ASSIGN(const Dsc *, short *, long, const Dsc *); +extern U_Long SYS$ASSIGN(const struct dsc$descriptor_s *, short *, long, + const struct dsc$descriptor_s *); extern U_Long SYS$DASSGN(short); extern U_Long SYS$QIO(U_Long, U_Long, U_Long, void *, void (*)(U_Long), U_Long, const char *, int, int, U_Long, int, int); extern U_Long SYS$SYNCH(long, void *); #endif /*!NO_TTY_FWRITE*/ -extern U_Long LIB$SPAWN(const Dsc *,const Dsc *,const Dsc *, - const U_Long *,const Dsc *,U_Long *,U_Long *,...); +extern U_Long LIB$SPAWN(const struct dsc$descriptor_s *, + const struct dsc$descriptor_s *, + const struct dsc$descriptor_s *, + const U_Long *, + const struct dsc$descriptor_s *, + U_Long *, U_Long * ,...); /* system services for logical name manipulation */ -extern U_Long SYS$TRNLNM(const U_Long *,const Dsc *,const Dsc *, - const unsigned char *,Itm *); -extern U_Long SYS$CRELNM(const U_Long *,const Dsc *,const Dsc *, - const unsigned char *,const Itm *); -extern U_Long SYS$CRELOG(int,const Dsc *,const Dsc *,unsigned char); -extern U_Long SYS$DELLNM(const Dsc *,const Dsc *,const unsigned char *); +extern U_Long SYS$TRNLNM(const U_Long *, + const struct dsc$descriptor_s *, + const struct dsc$descriptor_s *, + const unsigned char *, Itm *); +extern U_Long SYS$CRELNM(const U_Long *, + const struct dsc$descriptor_s *, + const struct dsc$descriptor_s *, + const unsigned char *, const Itm *); +extern U_Long SYS$CRELOG(int, + const struct dsc$descriptor_s *, + const struct dsc$descriptor_s *, + unsigned char); +extern U_Long SYS$DELLNM(const struct dsc$descriptor_s *, + const struct dsc$descriptor_s *, + const unsigned char *); extern void v_add_arg(int, const char *); extern void vms_exit(int); diff --git a/vms/vms_args.c b/vms/vms_args.c index 1216513..1a9eb95 100644 --- a/vms/vms_args.c +++ b/vms/vms_args.c @@ -1,7 +1,8 @@ /* vms_args.c -- command line parsing, to emulate shell i/o redirection. [ Escape sequence parsing now suppressed. ] - Copyright (C) 1991-1996, 1997, 2011, 2014 the Free Software Foundation, Inc. + Copyright (C) 1991-1996, 1997, 2011, 2014, 2016 + 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 @@ -319,7 +320,7 @@ static void vms_expand_wildcards( const char *prospective_filespec ) { char *p, spec_buf[255+1], res_buf[255+1]; - Dsc spec, result; + struct dsc$descriptor_s spec, result; void *context; register int len = strlen(prospective_filespec); @@ -333,8 +334,14 @@ vms_expand_wildcards( const char *prospective_filespec ) else if (strchr(spec_buf, '*') == strchr(spec_buf, '%') /* => both NULL */ && strstr(spec_buf, "...") == NULL) return; /* no wildcards present; don't attempt file lookup */ - spec.len = len, spec.adr = spec_buf; - result.len = sizeof res_buf - 1, result.adr = res_buf; + spec.dsc$w_length = len; + spec.dsc$a_pointer = spec_buf; + spec.dsc$b_dtype = DSC$K_DTYPE_T; + spec.dsc$b_class = DSC$K_CLASS_S; + result.dsc$w_length = sizeof res_buf - 1; + result.dsc$a_pointer = res_buf; + result.dsc$b_dtype = DSC$K_DTYPE_T; + result.dsc$b_class = DSC$K_CLASS_S; /* The filespec is already in v_argv[v_argc]; if we fail to match anything, we'll just leave it there (unlike most shells, where it would evaporate). @@ -395,7 +402,7 @@ skipblanks( const char *ptr ) static U_Long vms_define( const char *log_name, const char *trans_val ) { - Dsc log_dsc; + struct dsc$descriptor_s log_dsc; static Descrip(lnmtable,"LNM$PROCESS_TABLE"); static U_Long attr = LNM$M_CONFINE; static Itm itemlist[] = { {0,LNM$_STRING,0,0}, {0,0} }; @@ -407,8 +414,10 @@ vms_define( const char *log_name, const char *trans_val ) && (trans_val[len] == '\0' || trans_val[len] == ':')) return 0; - log_dsc.adr = (char *)log_name; - log_dsc.len = len; + log_dsc.dsc$a_pointer = (char *)log_name; + log_dsc.dsc$w_length = len; + log_dsc.dsc$b_dtype = DSC$K_DTYPE_T; + log_dsc.dsc$b_class = DSC$K_CLASS_S; itemlist[0].buffer = (char *)trans_val; itemlist[0].len = strlen(trans_val); return SYS$CRELNM(&attr, &lnmtable, &log_dsc, &acmode, itemlist); diff --git a/vms/vms_cli.c b/vms/vms_cli.c index 08e2d14..521a0c9 100644 --- a/vms/vms_cli.c +++ b/vms/vms_cli.c @@ -1,6 +1,7 @@ /* vms_cli.c -- interface to CLI$xxx routines for fetching command line components - Copyright (C) 1991-1993, 2003, 2011, 2014 the Free Software Foundation, Inc. + Copyright (C) 1991-1993, 2003, 2011, 2014, 2016 + 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 @@ -15,7 +16,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., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. */ - + /* * vms_cli.c - command line interface routines. @@ -29,11 +30,12 @@ #include #endif -extern U_Long CLI$PRESENT(const Dsc *); -extern U_Long CLI$GET_VALUE(const Dsc *, Dsc *, short *); -extern U_Long CLI$DCL_PARSE(const Dsc *, const void *, ...); +extern U_Long CLI$PRESENT(const struct dsc$descriptor_s *); +extern U_Long CLI$GET_VALUE(const struct dsc$descriptor_s *, + struct dsc$descriptor_s *, short *); +extern U_Long CLI$DCL_PARSE(const struct dsc$descriptor_s *, const void *, ...); extern U_Long SYS$CLI(void *, ...); -extern U_Long SYS$FILESCAN(const Dsc *, void *, long *); +extern U_Long SYS$FILESCAN(const struct dsc$descriptor_s *, void *, long *); extern void *LIB$ESTABLISH(U_Long (*handler)(void *, void *)); extern U_Long LIB$SIG_TO_RET(void *, void *); /* condition handler */ @@ -42,10 +44,12 @@ extern U_Long LIB$SIG_TO_RET(void *, void *); /* condition handler */ U_Long Cli_Present( const char *item ) { - Dsc item_dsc; + struct dsc$descriptor_s item_dsc; (void)LIB$ESTABLISH(LIB$SIG_TO_RET); - item_dsc.len = strlen(item_dsc.adr = (char *)item); + item_dsc.dsc$w_length = strlen(item_dsc.dsc$a_pointer = (char *)item); + item_dsc.dsc$b_dtype = DSC$K_DTYPE_T; + item_dsc.dsc$b_class = DSC$K_CLASS_S; return CLI$PRESENT(&item_dsc); } @@ -54,13 +58,18 @@ Cli_Present( const char *item ) U_Long Cli_Get_Value( const char *item, char *result, int size ) { - Dsc item_dsc, res_dsc; + struct dsc$descriptor_s item_dsc, res_dsc; U_Long sts; short len = 0; (void)LIB$ESTABLISH(LIB$SIG_TO_RET); - item_dsc.len = strlen(item_dsc.adr = (char *)item); - res_dsc.len = size, res_dsc.adr = result; + item_dsc.dsc$w_length = strlen(item_dsc.dsc$a_pointer = (char *)item); + item_dsc.dsc$b_dtype = DSC$K_DTYPE_T; + item_dsc.dsc$b_class = DSC$K_CLASS_S; + res_dsc.dsc$w_length = size; + res_dsc.dsc$a_pointer = result; + res_dsc.dsc$b_dtype = DSC$K_DTYPE_T; + res_dsc.dsc$b_class = DSC$K_CLASS_S; sts = CLI$GET_VALUE(&item_dsc, &res_dsc, &len); result[len] = '\0'; return sts; @@ -75,7 +84,8 @@ Cli_Parse_Command( const void *cmd_tables, const char *cmd_verb ) { struct { short len, code; void *adr; } fscn[2]; struct { char rqtype, rqindx, rqflags, rqstat; unsigned :32; - Dsc rdesc; unsigned :32; unsigned :32; unsigned :32; } cmd; + struct dsc$descriptor_s rdesc; + unsigned :32; unsigned :32; unsigned :32; } cmd; U_Long sts; int ltmp; char longbuf[8200]; @@ -93,15 +103,16 @@ Cli_Parse_Command( const void *cmd_tables, const char *cmd_verb ) memset(fscn, 0, sizeof fscn); fscn[0].code = FSCN$_FILESPEC; /* full file specification */ (void)SYS$FILESCAN(&cmd.rdesc, fscn, (long *)0); - cmd.rdesc.len -= fscn[0].len; /* shrink size */ - cmd.rdesc.adr += fscn[0].len; /* advance ptr */ + cmd.rdesc.dsc$w_length -= fscn[0].len; /* shrink size */ + cmd.rdesc.dsc$a_pointer += fscn[0].len; /* advance ptr */ } /* prepend verb and then parse the command line */ strcat(strcpy(longbuf, cmd_verb), " "), ltmp = strlen(longbuf); - if (cmd.rdesc.len + ltmp > sizeof longbuf) - cmd.rdesc.len = sizeof longbuf - ltmp; - strncpy(&longbuf[ltmp], cmd.rdesc.adr, cmd.rdesc.len); - cmd.rdesc.len += ltmp, cmd.rdesc.adr = longbuf; + if (cmd.rdesc.dsc$w_length + ltmp > sizeof longbuf) + cmd.rdesc.dsc$w_length = sizeof longbuf - ltmp; + strncpy(&longbuf[ltmp], + cmd.rdesc.dsc$a_pointer, cmd.rdesc.dsc$w_length); + cmd.rdesc.dsc$w_length += ltmp, cmd.rdesc.dsc$a_pointer = longbuf; sts = CLI$DCL_PARSE(&cmd.rdesc, cmd_tables); } diff --git a/vms/vms_fwrite.c b/vms/vms_fwrite.c index f29ec83..644f62d 100644 --- a/vms/vms_fwrite.c +++ b/vms/vms_fwrite.c @@ -1,6 +1,7 @@ /* vms_fwrite.c - augmentation for the fwrite() function. - Copyright (C) 1991-1996, 2010, 2011, 2014 the Free Software Foundation, Inc. + Copyright (C) 1991-1996, 2010, 2011, 2014, 2016 + 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 @@ -78,12 +79,16 @@ tty_fwrite( const void *buf, size_t size, size_t number, FILE *file ) if (chan == 0) { /* if not initialized, need to assign a channel */ if (isatty(file_num) > 0 /* isatty: 1=yes, 0=no, -1=problem */ && ! do_debug) { - Dsc device; + struct dsc$descriptor_s device; char devnam[255+1]; fgetname(file, devnam); /* get 'file's name */ - device.len = strlen(device.adr = devnam); /* create descriptor */ - if (vmswork(SYS$ASSIGN(&device, &chan, 0, (Dsc *)0))) { + /* create descriptor */ + device.dsc$w_length = strlen(device.dsc$a_pointer = devnam); + device.dsc$b_dtype = DSC$K_DTYPE_T; + device.dsc$b_class = DSC$K_CLASS_S; + if (vmswork(SYS$ASSIGN(&device, &chan, 0, + (struct dsc$descriptor_s *)0))) { /* get an event flag; use #0 if problem */ if (evfn == -1 && vmsfail(LIB$GET_EF(&evfn))) evfn = 0; } else chan = 0; /* $ASSIGN failed */ diff --git a/vms/vms_misc.c b/vms/vms_misc.c index 82c2f8a..e561af5 100644 --- a/vms/vms_misc.c +++ b/vms/vms_misc.c @@ -120,7 +120,7 @@ vms_open( const char *name, int mode, ... ) struct stat stb; int stat_result; const char *mbc, *shr = "shr=get", *ctx = "ctx=stm"; - + stat_result = stat((char *)name, &stb); if ( stat_result < 0) { /* assume DECnet */ mbc = "mbc=8"; @@ -187,7 +187,9 @@ vms_gettimeofday(struct timeval *tv, void *timezone__not_used) /* Emulate unix's gettimeofday call; timezone argument is ignored. */ - static const Dsc epoch_dsc = { sizeof UNIX_EPOCH - sizeof "", UNIX_EPOCH }; + static const struct dsc$descriptor_s epoch_dsc = + { sizeof UNIX_EPOCH - sizeof "", + DSC$K_DTYPE_T, DSC$K_CLASS_S, UNIX_EPOCH }; static long epoch[2] = {0L,0L}; /* needs one time initialization */ const long thunk = VMS_UNITS_PER_SECOND; long now[2], quad[2]; diff --git a/vms/vms_popen.c b/vms/vms_popen.c index 23482df..e6238bf 100644 --- a/vms/vms_popen.c +++ b/vms/vms_popen.c @@ -71,8 +71,8 @@ extern char *mktemp(char *); static void push_logicals(void); static void pop_logicals(void); -static Itm *save_translation(const Dsc *); -static void restore_translation(const Dsc *, const Itm *); +static Itm *save_translation(const struct dsc$descriptor_s *); +static void restore_translation(const struct dsc$descriptor_s *, const Itm *); typedef enum { unopened = 0, reading, writing } pipemode; typedef struct pipe_info { @@ -159,22 +159,30 @@ pclose( FILE *current ) int vms_execute( const char *command, const char *input, const char *output ) { - Dsc cmd, in, out, *in_p, *out_p; + struct dsc$descriptor_s cmd, in, out, *in_p, *out_p; U_Long sts, cmpltn_sts; - cmd.len = strlen(cmd.adr = (char *)command); - if (input) - in.len = strlen(in.adr = (char *)input), in_p = ∈ - else + cmd.dsc$w_length = strlen(cmd.dsc$a_pointer = (char *)command); + cmd.dsc$b_dtype = DSC$K_DTYPE_T; + cmd.dsc$b_class = DSC$K_CLASS_S; + if (input) { + in.dsc$w_length = strlen(in.dsc$a_pointer = (char *)input); + in_p = ∈ + in.dsc$b_dtype = DSC$K_DTYPE_T; + in.dsc$b_class = DSC$K_CLASS_S; + } else in_p = 0; - if (output) - out.len = strlen(out.adr = (char *)output), out_p = &out; - else + if (output) { + out.dsc$w_length = strlen(out.dsc$a_pointer = (char *)output); + out_p = &out; + out.dsc$b_dtype = DSC$K_DTYPE_T; + out.dsc$b_class = DSC$K_CLASS_S; + } else out_p = 0; push_logicals(); /* guard against user-mode definitions of sys$Xput */ sts = LIB$SPAWN(&cmd, in_p, out_p, (U_Long *)0, - (Dsc *)0, (U_Long *)0, &cmpltn_sts); + (struct dsc$descriptor_s *)0, (U_Long *)0, &cmpltn_sts); pop_logicals(); /* restore environment */ if (vmswork(sts) && vmsfail(cmpltn_sts)) sts = cmpltn_sts; @@ -255,7 +263,7 @@ pop_logicals( void ) /* redefine sys$input and/or sys$output */ } static Itm * -save_translation( const Dsc *logname ) +save_translation( const struct dsc$descriptor_s *logname ) { Itm trans[4], *itmlst; long trans_attr, max_trans_indx; /* 0-based translation index count */ @@ -318,9 +326,10 @@ save_translation( const Dsc *logname ) } static void -restore_translation( const Dsc *logname, const Itm *itemlist ) +restore_translation( const struct dsc$descriptor_s *logname, + const Itm *itemlist ) { - Dsc trans_val; + struct dsc$descriptor_s trans_val; U_Long *attr_p; # define LOG_PROCESS_TABLE 2 /* */ # define LOG_USERMODE PSL$C_USER @@ -332,8 +341,10 @@ restore_translation( const Dsc *logname, const Itm *itemlist ) so it'll be the first string entry in the itemlist. */ /* assert( itemlist[2].code == LNM$_STRING ); */ - trans_val.adr = itemlist[2].buffer; - trans_val.len = itemlist[2].len; + trans_val.dsc$a_pointer = itemlist[2].buffer; + trans_val.dsc$w_length = itemlist[2].len; + trans_val.dsc$b_dtype = DSC$K_DTYPE_T; + trans_val.dsc$b_class = DSC$K_CLASS_S; (void) SYS$CRELOG(LOG_PROCESS_TABLE, logname, &trans_val, LOG_USERMODE); } else { /* $crelnm definition; itemlist could specify multiple translations, diff --git a/vms/vms_sort.com b/vms/vms_sort.com new file mode 100755 index 0000000..b8b614f --- /dev/null +++ b/vms/vms_sort.com @@ -0,0 +1,4 @@ +$!'f$verify(0,0)' +$ sort := sort +$ define/user sys$input sys$command: +$ sort sys$input: sys$output: diff --git a/vms/vmsbuild.com b/vms/vmsbuild.com index a43039e..984b83f 100644 --- a/vms/vmsbuild.com +++ b/vms/vmsbuild.com @@ -1,22 +1,4 @@ $! vmsbuild.com -- Commands to build GAWK Pat Rankin, Dec'89 -$! revised, Mar'90 -$! gawk 2.13 revised, Jun'91 -$! gawk 2.14 revised, Sep'92 -$! gawk 2.15 revised, Oct'93 -$! gawk 3.0 revised, Dec'95 -$! gawk 3.0.1 revised, Nov'96 -$! gawk 3.1.0 revised, Mar'01 -$! gawk 3.1.1 revised, Apr'02 -$! gawk 3.1.6 revised, Mar'07 -$! gawk-bytecode revd, Jan'10 -$! gawk 4.0.0 revd, May'11 -$! gawk 4.1.0 revd, May'13 -$! gawk 4.1.1 revd, Apr'14 -$! gawk 4.1.2 revd, Apr'15 -$! gawk 4.1.3 revd, May'15 -$! -$ REL = "4.1" !release version number -$ PATCHLVL = "3" $! $ if (f$getsyi("HW_MODEL") .lt. 1024) $ then diff --git a/vms/vmstest.com b/vms/vmstest.com index a2ab9bf..aa96ceb 100644 --- a/vms/vmstest.com +++ b/vms/vmstest.com @@ -15,7 +15,46 @@ $! $! 4.0.75: New tests $! basic: rri1,getline5,incdupe4,incdupe5,incdupe6,incdupe7 $! ext: colonwarn,reginttrad,symtab7,symtab8,symtab9 -$ +$! +$! 4.1.1: New tests implemented in 4.1.3a +$! +$! basic: badassign1,dfamb1,exit2,nfloop +$! ext: profile4,profile5 +$! locale: backbigs1,backsmalls1,backsmalls2,mbprintf4 +$! backgigs1 requires a locale not supplied with VMS. +$! +$! 4.1.2: New tests implemented in 4.1.3a +$! basic: badbuild,callparam,exitval3,inpref,paramasfunc1, +$! paramasfunc2,regexpbrack,sortglos +$! ext: crlf,dbugeval,fpat4,genpot,indirectbuiltin, +$! printfbad4,printhuge,profile0,profile6,profile7, +$! regnul1,regnul2,rsgetline,rsglstdin +$! charset_all: charset_msg_start,charset_tests,charset_msg_end +$! +$! 4.1.3: New tests - implemented in 4.1.3a +$! basic: rebrackloc +$! +$! 4.1.3a: New tests +$! vms_debug: Not a test, switches to a debug gawk for following tests +$! basic: aryprm9,exitval2,nulinsrc,rstest4,rstest5 +$! ext: mbstr2,profile8,watchpoint1 +$! shlib: inplace2,testext,lc_num1,mbprintf1 +$! mbprintf2,mbfprintf3,mbfprintf4,mbfw1 +$! +$! 4.1.3c: New tests +$! ext: clos1way2, clos1way3, clos1way4, clos1way5 +$! +$! 4.1.3f: New tests +$! basic: arrayind1,rscompat,sigpipe1 +$! +$! 4.1.3.g: New tests +$! basic: fsnul1, hex2, mixed1, subback +$! ext: fpat4, symtab10 +$! +$! 4.1.3.i: New tests +$! basic: ofmtstrnum +$! extra: ignrcas3 +$! $ echo = "write sys$output" $ cmp = "diff/Output=_NL:/Maximum=1" $ delsym = "delete/symbol/local/nolog" @@ -23,9 +62,11 @@ $ igncascmp = "''cmp'/Ignore=Case" $ sumslp = "edit/Sum" $ rm = "delete/noConfirm/noLog" $ mv = "rename/New_Vers" +$ sort = "sort" $ gawk = "$sys$disk:[-]gawk" $ AWKPATH_srcdir = "define/User AWKPATH sys$disk:[]" $ AWKLIBPATH_dir = "define/User AWKLIBPATH sys$disk:[-]" +$ arch_name = f$edit(f$getsyi("arch_name"),"upcase,trim") $ $! Make sure that the default directory exists on a search list. $ def_dir = f$environment("default") @@ -37,11 +78,87 @@ $ $ list = p1+" "+p2+" "+p3+" "+p4+" "+p5+" "+p6+" "+p7+" "+p8 $ list = f$edit(list,"TRIM,LOWERCASE") $ if list.eqs."" then list = "all" ! bigtest +$ gosub create_junit_test_header $ gosub list_of_tests +$ gosub finish_junit_test $ echo "done." $ exit +$! +$create_junit_test_header: +$ junit_count = 0 +$ temp_fdl = "sys$disk:[]stream_lf.fdl" +$ arch_code = f$extract(0, 1, arch_name) +$! +$ junit_hdr_file = "sys$disk:[]test_output.xml" +$ if f$search(junit_hdr_file) .nes. "" then delete 'junit_hdr_file';* +$ junit_body_file = "sys$disk:[]test_body_tmp.xml" +$ if f$search(junit_body_file) .nes. "" then delete 'junit_body_file';* +$!! +$ if arch_code .nes. "V" +$ then +$ create 'junit_hdr_file'/fdl="RECORD; FORMAT STREAM_LF;" +$ create 'junit_body_file'/fdl="RECORD; FORMAT STREAM_LF;" +$ else +$ if f$search(temp_fdl) .nes. "" then delete 'temp_fdl';* +$ create 'temp_fdl' +RECORD + FORMAT stream_lf +$ continue +$ create 'junit_hdr_file'/fdl='temp_fdl' +$ create 'junit_body_file'/fdl='temp_fdl' +$ endif +$ open/append junit 'junit_body_file' +$ return +$! +$finish_junit_test: +$ open/append junit_hdr 'junit_hdr_file' +$ write junit_hdr "" +$ write junit_hdr "" +$ close junit_hdr +$ write junit "" +$ close junit +$ append 'junit_body_file' 'junit_hdr_file' +$ delete 'junit_body_file';* +$ return +$! +$junit_report_skip: +$ write sys$output "Skipping test ''test' reason ''skip_reason'." +$ junit_count = junit_count + 1 +$ write junit " " +$ write junit " " +$ write junit " " +$ return +$! +$junit_report_fail_diff: +$ fail_msg = "failed" +$ fail_type = "diff" +$! fall through to junit_report_fail +$junit_report_fail: +$ write sys$output "failing test ''test' reason ''fail_msg'." +$ junit_count = junit_count + 1 +$ write junit " " +$ write junit - + " " +$ write junit " " +$ write junit " " +$ return +$! +$junit_report_pass: +$ junit_count = junit_count + 1 +$ write junit " " +$ write junit " " +$ return $ +$vms_debug: echo "Switching to gawk_debug.exe" +$ gawk = "$sys$disk:[-]gawk_debug.exe" +$ return +$! $all: +$ $bigtest: echo "bigtest..." $ ! omits "printlang" and "extra" $ list = "basic unix_tests gawk_ext vms_tests charset_tests" - @@ -50,54 +167,68 @@ $ gosub list_of_tests $ return $ $basic: echo "basic..." -$ list = "msg 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 closebad clsflnam compare compare2 concat1" +$ list = "msg addcomma anchgsub argarray arrayind1" - + + " arrayparm arrayref arrayprm2 arrayprm3 arrymem1" - + + " arryref2 arryref3 arryref4 arryref5 arynasty" - + + " arynocls aryprm1 aryprm2 aryprm3 aryprm4 aryprm5" - + + " aryprm6 aryprm7 aryprm8 aryprm9 arysubnm asgext" - + + " awkpath" - + + " back89 backgsub badassign1 badbuild" $ gosub list_of_tests -$ list = "concat2 concat3 concat4 convfmt datanonl defref" - - + " delargv delarprm delarpm2 delfunc dfastress dynlj" - - + " eofsplit exitval1" - - + " exitval2 fcall_exit fcall_exit2 fldchg fldchgnf" - +$ list = "callparam childin clobber closebad clsflnam" - + + " compare compare2 concat1 concat2 concat3 concat4" - + + " convfmt " - + + " datanonl defref delargv delarprm delarpm2 delfunc" - + + " dfamb1 dfastress dynlj" - + + " eofsplit exit2 exitval1 exitval2 exitval3" +$ gosub list_of_tests +$ list = "fcall_exit fcall_exit2 fldchg fldchgnf" - + " fnamedat fnarray fnarray2 fnaryscl fnasgnm fnmisc" - - + " fordel forref forsimp fsbs fsspcoln fsrs fstabplus" - - + " funsemnl funsmnam funstack getline getline2 getline3" - - + " getline4 getline5" + + " fordel forref forsimp fsbs fsnul1 fsspcoln fsrs" - + + " fstabplus funsemnl funsmnam funstack" $ gosub list_of_tests -$ list = "getlnbuf getnr2tb getnr2tm gsubasgn gsubtest" - +$ list = "getline getline2 getline3 getline4 getline5 " - + + " getlnbuf getnr2tb getnr2tm gsubasgn gsubtest" - + " gsubtst2 gsubtst3 gsubtst4 gsubtst5 gsubtst6" - - + " gsubtst7 gsubtst8 hex" - - + " hsprint inputred intest intprec iobug1" - + + " gsubtst7 gsubtst8" - + + " hex hex2 hsprint" - + + " inpref inputred intest intprec iobug1" - + " leaddig leadnl litoct longsub longwrds"- - + " manglprm math membug1 messages minusstr mmap8k" - - + " mtchi18n nasty nasty2 negexp negrange nested" - - + " nfldstr nfneg" + + " manglprm math membug1 messages minusstr mixed1" - + + " mmap8k mtchi18n" +$ gosub list_of_tests +$ list = "nasty nasty2 negexp negrange nested nfldstr" - + + " nfloop nfneg nfset nlfldsep nlinstr nlstrina" - + + " noeffect nofile nofmtch noloop1 noloop2 nonl" - + + " noparms nors nulinsrc nulrsend numindex numsubstr" - + + " octsub ofmt ofmtbig ofmtfidl" - + + " ofmta ofmts ofs1 onlynl opasnidx opasnslf $ gosub list_of_tests -$ list = "nfset nlfldsep nlinstr nlstrina noeffect nofile" - - + " nofmtch noloop1 noloop2 nonl noparms nors nulrsend" - - + " numindex numsubstr octsub ofmt ofmtbig ofmtfidl" - - + " ofmta ofmts ofs1 onlynl opasnidx opasnslf paramdup" - - + " paramres paramtyp paramuninitglobal parse1 parsefld" - - + " parseme pcntplus" - - + " posix2008sub prdupval prec printf0 printf1 prmarscl" +$ list = "paramasfunc1 paramasfunc2 paramdup" - + + " paramres paramtyp paramuninitglobal" - + + " parse1 parsefld parseme pcntplus posix2008sub" - + + " prdupval prec printf0 printf1 prmarscl prmreuse" - + + " prt1eval prtoeval" $ gosub list_of_tests -$ list = "prmreuse prt1eval prtoeval rand range1 rebt8b1" - - + " redfilnm regeq regexprange regrange reindops reparse resplit rri1 rs rsnul1nl" - - + " rsnulbig rsnulbig2 rstest1 rstest2 rstest3 rstest4" - - + " rstest5 rswhite scalar sclforin sclifin sortempty" - +$ list = "rand range1 rebrackloc rebt8b1 redfilnm regeq" - + + " regexpbrack regexprange regrange reindops reparse" - + + " resplit rri1 rs rscompat rsnul1nl rsnulbig rsnulbig2" - + + " rstest1 rstest2 rstest3 rstest4 rstest5 rswhite" +$ gosub list_of_tests +$ list = "scalar sclforin sclifin sigpipe1 sortempty sortglos" - + " splitargv splitarr splitdef splitvar splitwht" - - + " strcat1 strtod strnum1 subamp subi18n" + + " strcat1 strtod strnum1 subamp subback subi18n subsepnm" - + + " subslash substr swaplns synerr1 synerr2" $ gosub list_of_tests -$ list = "subsepnm subslash substr swaplns synerr1 synerr2" - - + " tradanch tweakfld uninit2 uninit3 uninit4 uninit5" - - + " uninitialized unterm uparrfs wideidx wideidx2" - - + " widesub widesub2 widesub3 widesub4 wjposer1 zeroe0" - - + " zeroflag zero2" +$ list = "tradanch tweakfld" - + + " uninit2 uninit3 uninit4 uninit5 uninitialized" - + + " unterm uparrfs" - + + " wideidx wideidx2 widesub widesub2 widesub3 widesub4" - + + " wjposer1" - + + " zeroe0 zeroflag zero2" $ gosub list_of_tests $ return -$ +$! $unix: $unix_tests: echo "unix_tests..." $ list = "fflush getlnhd localenl pid pipeio1 pipeio2" - @@ -108,24 +239,36 @@ $ $gnu: $gawk_ext: echo "gawk_ext... (gawk.extensions)" $ list = "aadelete1 aadelete2 aarray1 aasort aasorti" - - + " argtest arraysort backw badargs beginfile1 binmode1" - - + " colonwarn clos1way charasbytes delsub devfd devfd1 devfd2 dumpvars exit" - - + " fieldwdth fpat1 fpat2 fpat3 fpatnull funlen functab1" - - + " functab2 functab3 fsfwfs" - - + " fwtest fwtest2 fwtest3" - - + " gensub gensub2 getlndir gnuops2 gnuops3 gnureops" - + + " argtest arraysort" - + + " backw badargs beginfile1 binmode1" - + + " colonwarn clos1way clos1way2 clos1way3 clos1way4" - + + " clos1way5 charasbytes crlf" - + + " dbugeval delsub devfd devfd1 devfd2 dumpvars" - + + " exit" - + + " fieldwdth fpat1 fpat2 fpat3 fpat4 fpatnull funlen" - + + " functab1 functab2 functab3 fsfwfs fwtest fwtest2 fwtest3" +$ gosub list_of_tests +$ list = "genpot gensub gensub2 getlndir gnuops2 gnuops3" - + + " gnureops" - + " icasefs id icasers igncdym igncfs ignrcase ignrcas2" - - + " incdupe incdupe2 incdupe3 incdupe4 incdupe5 incdupe6 incdupe7" + + " incdupe incdupe2 incdupe3 incdupe4 incdupe5" - + + " incdupe6 incdupe7 include2 indirectbuiltin indirectcall" +$ gosub list_of_tests +$ list = "lint lintold lintwarn" - + + " match1 match2 match3 manyfiles mbprintf3 mbstr1 mbstr2" - + + " nastyparm next nondec nondec2" - + + " patsplit posix printfbad1 printfbad2 printfbad3" - + + " printfbad4 printhuge procinfs profile0 profile1" - + + " profile2 profile3 profile4 profile5 profile6" - + + " profile7 profile8 pty1" $ gosub list_of_tests -$ list = "include2 indirectcall lint lintold lintwarn match1" - - + " match2 match3 manyfiles mbprintf3 mbstr1" - - + " nastyparm next nondec" - - + " nondec2 patsplit posix profile1 procinfs printfbad1" - - + " printfbad2 printfbad3 profile2 profile3 pty1" - - + " regx8bit rebuf reginttrad reint reint2 rsstart1 rsstart2 rsstart3 rstest6" - +$ list = "regx8bit rebuf reginttrad regnul1 regnul2" - + + " reint reint2 rsgetline rsglstdin rsstart1 rsstart2" - + + " rsstart3 rstest6" - + " shadow sortfor sortu split_after_fpat splitarg4" - + " strtonum strftime switch2 symtab1 symtab2 symtab3" - - + " symtab4 symtab5 symtab6 symtab7 symtab8 symtab9" + + " symtab4 symtab5 symtab6 symtab7 symtab8 symtab9" - + + " symtab10 watchpoint1" $ gosub list_of_tests $ return $ @@ -139,8 +282,18 @@ $locale_tests: $charset_tests: echo "charset_tests..." $ ! without i18n kit, VMS only supports the C locale $ ! and several of these fail -$ list = "asort asorti fmttest fnarydel fnparydl lc_num1 mbfw1" - - + " mbprintf1 mbprintf2 rebt8b2 rtlenmb sort1 sprintfc" +$ list = "asort asorti" - + + " backbigs1 backsmalls1 backsmalls2" - + + " fmttest fnarydel fnparydl" - + + " lc_num1 mbfw1" - + + " mbprintf1 mbprintf2 mbprintf4" - + + " rebt8b2 rtlenmb" - + + " sort1 sprintfc" +$ gosub list_of_tests +$ return +$! +$charset_all: echo "All charset tests..." +$ list = "charset_msg_start charset_tests charset_msg_end" $ gosub list_of_tests $ return $ @@ -152,7 +305,7 @@ $ gosub list_of_tests $ return $ $extra: echo "extra..." -$ list = "regtest inftest inet" +$ list = "regtest inftest inet ignrcas3" $ gosub list_of_tests $ return $ @@ -165,13 +318,23 @@ $ list = "inetechu inetecht inetdayu inetdayt" $ gosub list_of_tests $ return $! +$shlib: $extension: echo "extension...." -$ list = "inplace1 filefuncs fnmatch fts functab4 ordchr" - - + " readdir revout revtwoway rwarray time" - gosub list_of_tests - return - -$ +$ list = "fnmatch filefuncs fork fork2 fts functab4" - + + " inplace1 inplace2" - + + " ordchr ordchr2" - + + " readdir readfile readfile2 revout revtwoway rwarray" - + + " testext time" +$ gosub list_of_tests +$ return +$! +$mpfr: +$ test_class = "mpfr" +$ skip_reason = "Not yet implmented on VMS" +$ ! mpfr has not yet been ported to VMS. +$ gosub junit_report_skip +$ return +$! $! list_of_tests: process 'list', a space-separated list of tests. $! Some tests assign their own 'list' and call us recursively, $! so we have to emulate a local stack to prevent the current list @@ -197,29 +360,22 @@ $anchgsub: $arrayprm2: $arryref2: $aryprm8: +$aryprm9: $asgext: $backgsub: -$backw: $concat1: $concat2: $concat3: $datanonl: $delarpm2: +$dfamb1: +$exit2: $fldchg: $fldchgnf: -$fmttest: $fordel: -$fpat1: -$fpat3: -$fpatnull: -$fsfwfs: +$fsnul1: $fsrs: -$funlen: $funstack: -$fwtest: -$fwtest2: -$fwtest3: -$gensub: $getline3: $getline4: $getnr2tb: @@ -231,16 +387,14 @@ $gsubtst5: $gsubtst7: $gsubtst8: $hex: -$icasers: -$igncfs: -$igncdym: -$indirectcall: +$hex2: +$inpref: $inputred: $leadnl: $manglprm: -$match3: $membug1: $nested: +$nfloop: $nfset: $nlfldsep: $nlinstr: @@ -258,124 +412,400 @@ $prdupval: $prec: $prtoeval: $range1: -$rebuf: +$rebrackloc: $regeq: +$regexpbrack: $reindops: $reparse: $rsnul1nl: -$rsstart1: $rstest1: $rstest2: $rstest3: -$rstest6: $rswhite: $sortempty: -$sortfor: -$split_after_fpat: -$splitarg4: +$sortglos: $splitargv: $splitarr: $splitvar: -$sprintfc: $strcat1: $strtod: +$subback: $subsepnm: $swaplns: $uparrfs: $wjposer1: $zeroe0: +$ test_class = "basic" +$ goto common_with_test_in +$! +$backsmalls2: +$fmttest: +$lc_num1: +$sprintfc: +$ classname="charset_tests" +$ goto common_with_test_in +$! +$backw: +$crlf: +$fpat1: +$fpat3: +$fpat4: +$fpatnull: +$fsfwfs: +$funlen: +$fwtest: +$fwtest2: +$fwtest3: +$gensub: +$icasers: +$igncdym: +$igncfs: +$indirectcall: +$match3: +$rebuf: +$regnul1: +$regnul2: +$rsgetline: +$rsstart1: +$rstest6: +$sortfor: +$split_after_fpat: +$splitarg4: +$ classname="gawk_ext" +$ goto common_with_test_in +$! +$common_with_test_in: $! common with 'test'.in +$! $ echo "''test'" $ gawk -f 'test'.awk 'test'.in >_'test'.tmp +$ if f$search("sys$disk:[]_''test'.tmp;2") .nes. "" +$ then +$ delete sys$disk:[]_'test'.tmp;2 +$ endif $ cmp 'test'.ok sys$disk:[]_'test'.tmp -$ if $status then rm _'test'.tmp; +$ if $status +$ then +$ rm _'test'.tmp; +$ gosub junit_report_pass +$ else +$ gosub junit_report_fail_diff +$ endif +$ return +$! +$! +$! +$arrayind1: +$ echo "''test'" +$ test_class = "basic" +$ define/user sys$error _'test'.tmp +$ gawk -f 'test'.awk 'test'.in >_'test'.tmp2 +$ append _'test'.tmp2 _'test'.tmp +$ cmp 'test'.ok sys$disk:[]_'test'.tmp +$ if $status +$ then +$ rm _'test'.tmp;,_'test'.tmp2; +$ gosub junit_report_pass +$ else +$ gosub junit_report_fail_diff +$ endif +$ return +$! +$indirectbuiltin: ! 4.1.2 +$ echo "''test'" +$ classname="gawk_ext" +$ ! No shell simulation in gawk +$ temp_file = "sys$disk:[]_'test'.tmp" +$ if f$search(temp_file) .nes. "" then delete 'temp_file';* +$ old_rm = rm +$ rm = "continue ! " +$ gawk -f 'test'.awk 'test'.in >_'test'.tmp +$ rm = old_rm +$ ! gawk subprocesses creating new generation of stdout +$ ! instead of appending to open one. +$ cmp 'test'.ok sys$disk:[]_'test'.tmp;1 +$ if $status +$ then +$ rm _'test'.tmp;*,x1.out;,x2.out; +$ gosub junit_report_pass +$ else +$ gosub junit_report_fail_diff +$ endif $ return $ $! more common tests, without a data file: gawk -f 'test'.awk -$aarray1: -$aasort: -$aasorti: +$ofmta: +$ if arch_name .eqs. "VAX" +$ then +$ test_class = "basic" +$ skip_reason = "skipped on VAX" +$ gosub junit_report_skip +$ return +$ endif $arrayref: -$arraysort: $arrymem1: $arynasty: $arysubnm: -$asort: -$asorti: +$badassign1: +$badbuild: +$callparam: $closebad: $compare2: $convfmt: $delargv: $delarprm: -$delsub: $dynlj: -$fnarydel: -$fnparydl: -$fpat2: $forref: $forsimp: $funsemnl: -$gensub2: -$gnuops2: -$gnuops3: -$gnureops: $hsprint: -$icasefs: $intest: -$match1: $math: $minusstr: $negrange: +$nulinsrc: $nlstrina: -$nondec: $octsub: -$ofmta: +$ofmtstrnum: $paramtyp: $paramuninitglobal: -$patsplit: $pcntplus: $printf1: -$procinfs: $prt1eval: $rebt8b1: -$rebt8b2: $regexprange: $regrange: -$regx8bit: -$sort1: -$sortu: $splitdef: $splitwht: $strnum1: -$strtonum: $substr: -$switch2: $zero2: $zeroflag: +$ test_class = "basic" +$ goto common_without_test_in +$! +$aarray1: +$aasort: +$aasorti: +$arraysort: +$delsub: +$fpat2: +$gensub2: +$gnuops2: +$gnuops3: +$gnureops: +$icasefs: +$match1: +$nondec: +$patsplit: +$procinfs: +$regx8bit: +$sortu: +$strtonum: +$switch2: +$ classname="gawk_ext" +$ goto common_without_test_in +$! +$asort: +$asorti: +$fnarydel: +$fnparydl: +$rebt8b2: +$sort1: +$ classname="charset_tests" +$ goto common_without_test_in +$! +$common_without_test_in: $! common without 'test'.in $ echo "''test'" -$ gawk -f 'test'.awk >_'test'.tmp +$ set noOn +$ gawk -f 'test'.awk 2>&1 >_'test'.tmp +$ if .not. $status then call exit_code '$status' _'test'.tmp +$ set On +$ if f$search("sys$disk:[]_''test'.tmp;2") .nes. "" +$ then +$ delete sys$disk:[]_'test'.tmp;2 +$ endif $ cmp 'test'.ok sys$disk:[]_'test'.tmp -$ if $status then rm _'test'.tmp; +$ if $status +$ then +$ rm _'test'.tmp; +$ gosub junit_report_pass +$ else +$ gosub junit_report_fail_diff +$ endif $ return $ $colonwarn: echo "''test'" +$ classname="gawk_ext" $ gawk -f 'test'.awk 1 < 'test'.in > _'test'.tmp $ gawk -f 'test'.awk 2 < 'test'.in > _'test'_2.tmp $ gawk -f 'test'.awk 3 < 'test'.in > _'test'_3.tmp +$ if f$search("sys$disk:[]_''test'_%.tmp;2") .nes. "" +$ then +$ delete sys$disk:[]_'test'_%.tmp;2 +$ endif +$ if f$search("sys$disk:[]_''test'.tmp;2") .nes. "" +$ then +$ delete sys$disk:[]_'test'.tmp;2 +$ endif $ append _'test'_2.tmp,_'test'_3.tmp _'test'.tmp $ cmp 'test'.ok sys$disk:[]_'test'.tmp;1 -$ if $status then rm _'test'*.tmp;* +$ if $status +$ then +$ rm _'test'*.tmp;* +$ gosub junit_report_pass +$ else +$ gosub junit_report_fail_diff +$ endif $ return $ +$dbugeval: +$ echo "''test'" +$ classname="gawk_ext" +$ if f$getdvi("SYS$COMMAND", "TRM") +$ then +$ set noOn +$ gawk --debug -f /dev/null < 'test'.in 2>&1 > _'test.tmp' +$ if .not. $status then call exit_code '$status' _'test'.tmp +$ set On +$ cmp 'test'.ok sys$disk:[]_'test'.tmp;1 +$ if $status +$ then +$ rm _'test'*.tmp;* +$ gosub junit_report_pass +$ else +$ gosub junit_report_fail_diff +$ endif +$ else +$ skip_reason = "Skipping because not a terminal." +$ gosub junit_report_skip +$ endif +$ return +$! +$rsglstdin: +$ echo "''test'" +$ classname="gawk_ext" +$ set noOn +$ define/user sys$input rsgetline.in +$ gawk -f rsgetline.awk 2>&1 > _'test'.tmp +$ if .not. $status then call exit_code '$status' _'test'.tmp +$ set On +$ if f$search("sys$disk:[]_''test'.tmp;2") .nes. "" +$ then +$ delete sys$disk:[]_'test'.tmp;2 +$ endif +$ cmp 'test'.ok sys$disk:[]_'test'.tmp +$ if $status +$ then +$ rm _'test'.tmp; +$ gosub junit_report_pass +$ else +$ gosub junit_report_fail_diff +$ endif +$ return +$! +$genpot: +$ echo "''test'" +$ classname="gawk_ext" +$ set noOn +$ gawk -f 'test'.awk --gen-pot 2>&1 >_'test'.tmp +$ if .not. $status then call exit_code '$status' _'test'.tmp +$ set On +$ cmp 'test'.ok sys$disk:[]_'test'.tmp +$ if $status +$ then +$ rm _'test'.tmp; +$ gosub junit_report_pass +$ else +$ gosub junit_report_fail_diff +$ endif +$ return +$! +$paramasfunc1: +$paramasfunc2: +$ echo "''test'" +$ classname="basic" +$ set noOn +$ gawk -f 'test'.awk --posix 2>&1 >_'test'.tmp +$ if .not. $status then call exit_code '$status' _'test'.tmp +$ set On +$ cmp 'test'.ok sys$disk:[]_'test'.tmp +$ if $status +$ then +$ rm _'test'.tmp; +$ gosub junit_report_pass +$ else +$ gosub junit_report_fail_diff +$ endif +$ return +$! +$watchpoint1: +$ echo "''test'" +$ classname="gawk_ext" +$ set noOn +$ gawk "-D" -f 'test'.awk 'test'.in < 'test'.script 2>&1 >_'test'.tmp +$ if .not. $status then call exit_code '$status' _'test'.tmp +$ set On +$ cmp 'test'.ok sys$disk:[]_'test'.tmp +$ if $status +$ then +$ rm _'test'.tmp; +$ gosub junit_report_pass +$ else +$ gosub junit_report_fail_diff +$ endif +$ return +$! +$! +$! +$fork: ! 4.0.2 +$fork2: ! 4.0.2 +$ classname="shlib" +$ skip_reasons = "''test' not implemented on VMS" +$ gosub junit_report_skip +$ return +$! +$testext: +$ echo "''test'" +$ classname="shlib" +$ if arch_name .eqs. "VAX" +$ then +$ skip_reason = "ODS-5 required" +$ gosub junit_report_skip +$ return +$ endif +$ set process/parse=extended ! ODS-5 only +$ gawk "/^(@load|BEGIN)/,/^}/" [-.extension]'test'.c > _'test'.awk +$ set noOn +$ AWKLIBPATH_dir +$ gawk -f _'test'.awk >_'test'.tmp 2>&1 +$ if .not. $status then call exit_code '$status' _'test'.tmp +$ gawk "{gsub(""no children"",""No child processes"")}1" - + _'test'.tmp >_'test'.tmp1 +$ rm sys$disk:[]_'test'.tmp;* +$ mv sys$disk:[]_'test'.tmp1 sys$disk:[]_'test'.tmp +$ cmp 'test'.ok sys$disk:[]_'test'.tmp +$ if $status +$ then +$ rm _'test'.tmp; +$ gosub junit_report_pass +$ else +$ gosub junit_report_fail_diff +$ endif +$ set On +$ return +$! $double1: $double2: -$lc_num1: -$mbprintf1: -$ echo "''test' skipped" +$ echo "''test'" +$ test_class = "hardware" +$ skip_reason = "skipped" +$ gosub junit_report_skip $ return $ $getline5: echo "''test'" +$ test_class = "basic" $ ! Use of echo and rm inside the awk script makes it necessary $ ! for some temporary redefinitions. The VMS gawk.exe also creates $ ! multiple output files. Only the first contains the data. @@ -389,7 +819,13 @@ $ rm = old_rm $ delsym old_echo $ delsym old_rm $ cmp 'test'.ok sys$disk:[]_'test'.tmp;1 -$ if $status then rm _'test'.tmp;*,f.;* +$ if $status +$ then +$ rm _'test'.tmp;*,f.;* +$ gosub junit_report_pass +$ else +$ gosub junit_report_fail_diff +$ endif $ return $ $msg: @@ -403,7 +839,25 @@ $ echo "some systems may omit a leading zero and the floating point" $ echo "precision may lead to slightly different output in a few cases." $ echo "" $ return -$ +$! +$charset_msg_start: +$ echo "======== Starting tests that can vary based on character set ========" +$ echo "======== or locale support ========" +$ echo "*********************************************************************" +$ echo "* Some or all of these tests may fail if you have inadequate or *" +$ echo "* missing locale support. At least en_US.UTF-8, ru_RU.UTF-8 and *" +$ echo "* ja_JP.UTF-8 are needed. However, if you see this message, then *" +$ echo "* this test script thinks you have what you need ... *" +$ echo "*********************************************************************" +$ echo "" +$ return +$! +$charset_msg_end: +$ echo "======== Done with tests that can vary based on character set ========" +$ echo "======== or locale support ========" +$ echo "" +$ return +$! $printlang: $! the default locale is C, with LC_LANG and LC_ALL left empty; $! showing that at the very beginning may cause some confusion about @@ -412,12 +866,41 @@ $ gawk -f printlang.awk $ return $ $poundbang: +$ echo "''test'" +$ test_class = "unix_tests" +$ skip_reason = "not supported" +$ gosub junit_report_skip +$ return +$! $pty1: -$ echo "''test': not supported" +$ echo "''test'" +$ test_class = "gawk_ext" +$ skip_reason = "not supported" +$ gosub junit_report_skip +$ return +$! +$rscompat: +$ echo "''test'" +$ test_class = "basic" +$ gawk --traditional -f 'test'.awk 'test'.in >_'test'.tmp +$ if f$search("sys$disk:[]_''test'.tmp;2") .nes. "" +$ then +$ delete sys$disk:[]_'test'.tmp;2 +$ endif +$ cmp 'test'.ok sys$disk:[]_'test'.tmp +$ if $status +$ then +$ rm _'test'.tmp; +$ gosub junit_report_pass +$ else +$ gosub junit_report_fail_diff +$ endif $ return +$! $ $ $messages: echo "''test'" +$ test_class = "basic" $ set noOn $ gawk -f 'test'.awk > _out2 >& _out3 $ cmp out1.ok sys$disk:[]_out1. @@ -425,64 +908,140 @@ $ if $status then rm _out1.; $ cmp out2.ok sys$disk:[]_out2. $ if $status then rm _out2.; $ cmp out3.ok sys$disk:[]_out3. -$ if $status then rm _out3.; +$ if $status +$ then +$ rm _out3.; +$ gosub junit_report_pass +$ else +$ gosub junit_report_fail_diff +$ endif $ set On $ return $ $argarray: echo "argarray" +$ test_class = "basic" $ define/User TEST "test" !this is useless... $ gawk -f argarray.awk ./argarray.in - >_argarray.tmp just a test +$ if f$search("sys$disk:[]_''test'.tmp;2") .nes. "" +$ then +$ delete sys$disk:[]_'test'.tmp;2 +$ endif $ cmp argarray.ok sys$disk:[]_argarray.tmp -$ if $status then rm _argarray.tmp; +$ if $status +$ then +$ rm _argarray.tmp; +$ gosub junit_report_pass +$ else +$ gosub junit_report_fail_diff +$ endif $ return $ $fstabplus: echo "fstabplus" +$ test_class = "basic" $ gawk -f fstabplus.awk >_fstabplus.tmp 1 2 +$ if f$search("sys$disk:[]_''test'.tmp;2") .nes. "" +$ then +$ delete sys$disk:[]_'test'.tmp;2 +$ endif $ cmp fstabplus.ok sys$disk:[]_fstabplus.tmp -$ if $status then rm _fstabplus.tmp; +$ if $status +$ then +$ rm _'test'.tmp; +$ gosub junit_report_pass +$ else +$ gosub junit_report_fail_diff +$ endif $ return $ $longwrds: echo "longwrds" +$ test_class = "basic" $ gawk -v "SORT=sort sys$input: _longwrds.tmp" -f longwrds.awk longwrds.in >_NL: $ cmp longwrds.ok sys$disk:[]_longwrds.tmp -$ if $status then rm _longwrds.tmp; +$ if $status +$ then +$ rm _longwrds.tmp; +$ gosub junit_report_pass +$ else +$ gosub junit_report_fail_diff +$ endif $ return $ $fieldwdth: echo "fieldwdth" +$ test_class = "gawk_ext" $ gawk -v "FIELDWIDTHS=2 3 4" "{ print $2}" >_fieldwdth.tmp 123456789 +$ if f$search("sys$disk:[]_''test'.tmp;2") .nes. "" +$ then +$ delete sys$disk:[]_'test'.tmp;2 +$ endif $ cmp fieldwdth.ok sys$disk:[]_fieldwdth.tmp -$ if $status then rm _fieldwdth.tmp; +$ if $status +$ then +$ rm _fieldwdth.tmp; +$ gosub junit_report_pass +$ else +$ gosub junit_report_fail_diff +$ endif $ return $ $ignrcase: echo "ignrcase" +$ test_class = "gawk_ext" $ gawk -v "IGNORECASE=1" "{ sub(/y/, """"); print}" >_ignrcase.tmp xYz +$ if f$search("sys$disk:[]_''test'.tmp;2") .nes. "" +$ then +$ delete sys$disk:[]_'test'.tmp;2 +$ endif $ cmp ignrcase.ok sys$disk:[]_ignrcase.tmp -$ if $status then rm _ignrcase.tmp; +$ if $status +$ then +$ rm _ignrcase.tmp; +$ gosub junit_report_pass +$ else +$ gosub junit_report_fail_diff +$ endif $ return $ $regtest: +$ echo "regtest" +$ test_class = "extra" $ if f$search("regtest.com").eqs."" -$ then echo "regtest: not available" -$ else echo "regtest" +$ then +$ skip_reason = "Not implemented on VMS" +$ gosub junit_report_skip +$ else +$ echo "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." $ @regtest.com +$ skip_reason = "Not implemented on VMS" +$ gosub junit_report_skip $ endif $ return $ $posix: echo "posix" +$ test_class = "gawk_ext" $ gawk -f posix.awk >_posix.tmp 1:2,3 4 +$ if f$search("sys$disk:[]_''test'.tmp;2") .nes. "" +$ then +$ delete sys$disk:[]_'test'.tmp;2 +$ endif $ cmp posix.ok sys$disk:[]_posix.tmp -$ if $status then rm _posix.tmp; +$ if $status +$ then +$ rm _posix.tmp; +$ gosub junit_report_pass +$ else +$ gosub junit_report_fail_diff +$ endif $ return $ $manyfiles: echo "manyfiles" +$ test_class = "gawk_ext" $!! this used to use a hard-coded value of 300 simultaneously open $!! files, but if our open file quota is generous enough then that $!! wouldn't exercise the ability to handle more than the maximum @@ -498,7 +1057,6 @@ $ gawk -- "BEGIN {for (i = 1; i <= ''f_cnt'; i++) print i, i}" >_manyfiles.dat $ echo "(processing ''f_cnt' files; this may take quite a while)" $ set noOn ! continue even if gawk fails $ gawk -f manyfiles.awk _manyfiles.dat _manyfiles.dat -$ set On $ define/User sys$error _NL: $ define/User sys$output _manyfiles.tmp $ search/Match=Nor/Output=_NL:/Log [.junk]*.* "" @@ -508,103 +1066,230 @@ $deck !some input begins with "$" $4 != 2 {++count} END {if (NR != F_CNT+1 || count != 1) {print "\nFailed!"}} $eod +$ set On +$ skip_reason = "Test detection not implemented yet" +$ gosub junit_report_skip $ rm _manyfiles.tmp;,_manyfiles.dat;,[.junk]*.*;*,[]junk.dir; $ return $ $compare: echo "compare" +$ test_class = "basic" $ gawk -f compare.awk 0 1 compare.in >_compare.tmp +$ if f$search("sys$disk:[]_''test'.tmp;2") .nes. "" +$ then +$ delete sys$disk:[]_'test'.tmp;2 +$ endif $ cmp compare.ok sys$disk:[]_compare.tmp -$ if $status then rm _compare.tmp; +$ if $status +$ then +$ rm _compare.tmp; +$ gosub junit_report_pass +$ else +$ gosub junit_report_fail_diff +$ endif $ return $ $rs: echo "rs" +$ test_class = "basic" $ gawk -v "RS=" "{ print $1, $2}" rs.in >_rs.tmp +$ if f$search("sys$disk:[]_''test'.tmp;2") .nes. "" +$ then +$ delete sys$disk:[]_'test'.tmp;2 +$ endif $ cmp rs.ok sys$disk:[]_rs.tmp -$ if $status then rm _rs.tmp; +$ if $status +$ then +$ rm _rs.tmp; +$ gosub junit_report_pass +$ else +$ gosub junit_report_fail_diff +$ endif $ return $ $fsbs: echo "fsbs" +$ test_class = "basic" $ gawk -v "FS=\" "{ print $1, $2 }" fsbs.in >_fsbs.tmp +$ if f$search("sys$disk:[]_''test'.tmp;2") .nes. "" +$ then +$ delete sys$disk:[]_'test'.tmp;2 +$ endif $ cmp fsbs.ok sys$disk:[]_fsbs.tmp -$ if $status then rm _fsbs.tmp; +$ if $status +$ then +$ rm _fsbs.tmp; +$ gosub junit_report_pass +$ else +$ gosub junit_report_fail_diff +$ endif $ return $ $inftest: echo "inftest" +$ test_class = "extra" $ !! echo "This test is very machine specific..." $ set noOn $ gawk -f inftest.awk >_inftest.tmp $ !! cmp inftest.ok sys$disk:[]_inftest.tmp !just care that gawk doesn't crash... -$ if $status then rm _inftest.tmp; +$ if $status +$ then +$ rm _inftest.tmp; +$ gosub junit_report_pass +$ else +$ gosub junit_report_fail_diff +$ endif $ set On $ return $ $getline2: echo "getline2" +$ test_class = "basic" $ gawk -f getline2.awk getline2.awk getline2.awk >_getline2.tmp +$ if f$search("sys$disk:[]_''test'.tmp;2") .nes. "" +$ then +$ delete sys$disk:[]_'test'.tmp;2 +$ endif $ cmp getline2.ok sys$disk:[]_getline2.tmp -$ if $status then rm _getline2.tmp; +$ if $status +$ then +$ rm _getline2.tmp; +$ gosub junit_report_pass +$ else +$ gosub junit_report_fail_diff +$ endif $ return $ $rand: echo "rand" +$ test_class = "basic" $ echo "The following line should just be 19 random numbers between 1 and 100" $ echo "" $ gawk -f rand.awk +$ skip_reason = "Test detection not implemented yet" +$ gosub junit_report_skip $ return $ $negexp: echo "negexp" +$ test_class = "basic" $ gawk "BEGIN { a = -2; print 10^a }" >_negexp.tmp +$ if f$search("sys$disk:[]_''test'.tmp;2") .nes. "" +$ then +$ delete sys$disk:[]_'test'.tmp;2 +$ endif $ cmp negexp.ok sys$disk:[]_negexp.tmp -$ if $status then rm _negexp.tmp; +$ if $status +$ then +$ rm _negexp.tmp; +$ gosub junit_report_pass +$ else +$ gosub junit_report_fail_diff +$ endif $ return $ $awkpath: echo "awkpath" +$ test_class = "basic" $ define/User AWK_LIBRARY [],[.lib] $ gawk -f awkpath.awk >_awkpath.tmp +$ if f$search("sys$disk:[]_''test'.tmp;2") .nes. "" +$ then +$ delete sys$disk:[]_'test'.tmp;2 +$ endif $ cmp awkpath.ok sys$disk:[]_awkpath.tmp -$ if $status then rm _awkpath.tmp; +$ if $status +$ then +$ rm _awkpath.tmp; +$ gosub junit_report_pass +$ else +$ gosub junit_report_fail_diff +$ endif $ return $ $argtest: echo "argtest" +$ test_class = "gawk_ext" $ gawk -f argtest.awk -x -y abc >_argtest.tmp +$ if f$search("sys$disk:[]_''test'.tmp;2") .nes. "" +$ then +$ delete sys$disk:[]_'test'.tmp;2 +$ endif $ cmp argtest.ok sys$disk:[]_argtest.tmp -$ if $status then rm _argtest.tmp; +$ if $status +$ then +$ rm _argtest.tmp; +$ gosub junit_report_pass +$ else +$ gosub junit_report_fail_diff +$ endif $ return $ $badargs: echo "badargs" +$ test_class = "gawk_ext" $ on error then continue $ gawk -f 2>&1 >_badargs.too +$ if f$search("sys$disk:[]_''test'.too;2") .nes. "" +$ then +$ delete sys$disk:[]_'test'.too;2 +$ endif $! search/Match=Nor _badargs.too "patchlevel" /Output=_badargs.tmp $ gawk "/patchlevel/{next}; {gsub(""\"""",""'""); print}" <_badargs.too >_badargs.tmp +$ if f$search("sys$disk:[]_''test'.tmp;2") .nes. "" +$ then +$ delete sys$disk:[]_'test'.tmp;2 +$ endif $ cmp badargs.ok sys$disk:[]_badargs.tmp -$ if $status then rm _badargs.tmp;,_badargs.too; +$ if $status +$ then +$ rm _badargs.tmp;,_badargs.too; +$ gosub junit_report_pass +$ else +$ gosub junit_report_fail_diff +$ endif $ return $ $nonl: echo "nonl" +$ test_class = "basic" $ ! This one might fail, depending on the tool used to unpack the $ ! distribution. Some will add a final newline if the file lacks one. $ AWKPATH_srcdir $ gawk --lint -f nonl.awk _NL: >_nonl.tmp 2>&1 $ cmp nonl.ok sys$disk:[]_nonl.tmp -$ if $status then rm _nonl.tmp; +$ if $status +$ then +$ rm _nonl.tmp; +$ gosub junit_report_pass +$ else +$ gosub junit_report_fail_diff +$ endif $ return $ $defref: echo "defref" +$ test_class = "basic" $ set noOn $ AWKPATH_srcdir $ gawk --lint -f defref.awk >_defref.tmp 2>&1 $ if .not. $status then call exit_code '$status' _defref.tmp $ set On $ cmp defref.ok sys$disk:[]_defref.tmp -$ if $status then rm _defref.tmp; +$ if $status +$ then +$ rm _defref.tmp; +$ gosub junit_report_pass +$ else +$ gosub junit_report_fail_diff +$ endif $ return $ $nofmtch: echo "nofmtch" +$ test_class = "basic" $ AWKPATH_srcdir $ gawk --lint -f nofmtch.awk >_nofmtch.tmp 2>&1 $ cmp nofmtch.ok sys$disk:[]_nofmtch.tmp -$ if $status then rm _nofmtch.tmp; +$ if $status +$ then +$ rm _nofmtch.tmp; +$ gosub junit_report_pass +$ else +$ gosub junit_report_fail_diff +$ endif $ return $ $strftime: echo "strftime" +$ test_class = "gawk_ext" $ ! this test could fail on slow machines or on a second boundary, $ ! so if it does, double check the actual results $ ! This test needs SYS$TIMEZONE_NAME and SYS$TIMEZONE_RULE @@ -613,7 +1298,8 @@ $ ! This test now needs GNV Corutils to work $ date_bin = "gnv$gnu:[bin]gnv$date.exe" $ if f$search(date_bin) .eqs. "" $ then -$ echo "''test' skipped" +$ skip_reason = "Need GNV Coreutils gnv$date.exe" +$ gosub junit_report_skip $ return $ endif $ date := $'date_bin' @@ -634,135 +1320,261 @@ $ close ftmp $ gawk -v "OUTPUT"=_strftime.tmp -f strftime.awk strftime.in $ set noOn $ cmp strftime.ok sys$disk:[]_strftime.tmp -$ if $status then rm _strftime.tmp;,strftime.ok;*,strftime.in;* +$ if $status +$ then +$ rm _strftime.tmp;,strftime.ok;*,strftime.in;* +$ gosub junit_report_pass +$ else +$ gosub junit_report_fail_diff +$ endif $ set On $ return $ $litoct: echo "litoct" +$ test_class = "basic" $ gawk --traditional -f litoct.awk >_litoct.tmp ab +$ if f$search("sys$disk:[]_''test'.tmp;2") .nes. "" +$ then +$ delete sys$disk:[]_'test'.tmp;2 +$ endif $ cmp litoct.ok sys$disk:[]_litoct.tmp -$ if $status then rm _litoct.tmp; +$ if $status +$ then +$ rm _litoct.tmp; +$ gosub junit_report_pass +$ else +$ gosub junit_report_fail_diff +$ endif $ return $ $resplit: echo "resplit" +$ test_class = "gawk_ext" $ gawk -- "{ FS = "":""; $0 = $0; print $2 }" >_resplit.tmp a:b:c d:e:f +$ if f$search("sys$disk:[]_''test'.tmp;2") .nes. "" +$ then +$ delete sys$disk:[]_'test'.tmp;2 +$ endif $ cmp resplit.ok sys$disk:[]_resplit.tmp -$ if $status then rm _resplit.tmp; +$ if $status +$ then +$ rm _resplit.tmp; +$ gosub junit_report_pass +$ else +$ gosub junit_report_fail_diff +$ endif $ return $ $intprec: echo "intprec" +$ test_class = "basic" $ gawk -f intprec.awk >_intprec.tmp 2>&1 $ cmp intprec.ok sys$disk:[]_intprec.tmp -$ if $status then rm _intprec.tmp; +$ if $status +$ then +$ rm _intprec.tmp; +$ gosub junit_report_pass +$ else +$ gosub junit_report_fail_diff +$ endif $ return $ $incdupe: echo "''test'" +$ test_class = "gawk_ext" $ set noOn $ gawk --lint -i inclib -i inclib.awk "BEGIN {print sandwich(""a"", ""b"", ""c"")}" > _'test'.tmp 2>&1 $ if .not. $status then call exit_code '$status' _'test'.tmp $ cmp 'test'.ok sys$disk:[]_'test'.tmp -$ if $status then rm _'test'.tmp;* +$ if $status +$ then +$ rm _'test'.tmp;* +$ gosub junit_report_pass +$ else +$ gosub junit_report_fail_diff +$ endif $ set On $ return $ $incdupe2: echo "''test'" +$ test_class = "gawk_ext" $ set noOn $ gawk --lint -f inclib -f inclib.awk >_'test'.tmp 2>&1 $ if .not. $status then call exit_code '$status' _'test'.tmp $ cmp 'test'.ok sys$disk:[]_'test'.tmp -$ if $status then rm _'test'.tmp;* +$ if $status +$ then +$ rm _'test'.tmp;* +$ gosub junit_report_pass +$ else +$ gosub junit_report_fail_diff +$ endif $ set On $ return $ $incdupe3: echo "''test'" +$ test_class = "gawk_ext" $ gawk --lint -f hello -f hello.awk >_'test'.tmp 2>&1 $ cmp 'test'.ok sys$disk:[]_'test'.tmp -$ if $status then rm _'test'.tmp;* +$ if $status +$ then +$ rm _'test'.tmp;* +$ gosub junit_report_pass +$ else +$ gosub junit_report_fail_diff +$ endif $ return $ $incdupe4: echo "''test'" +$ test_class = "gawk_ext" $ set NoOn $ gawk --lint -f hello -i hello.awk >_'test'.tmp 2>&1 $ if .not. $status then call exit_code '$status' _'test'.tmp $ cmp 'test'.ok sys$disk:[]_'test'.tmp -$ if $status then rm _'test'.tmp;* +$ if $status +$ then +$ rm _'test'.tmp;* +$ gosub junit_report_pass +$ else +$ gosub junit_report_fail_diff +$ endif $ set On $ return $ $incdupe5: echo "''test'" +$ test_class = "gawk_ext" $ set NoOn $ gawk --lint -i hello -f hello.awk >_'test'.tmp 2>&1 $ if .not. $status then call exit_code '$status' _'test'.tmp $ cmp 'test'.ok sys$disk:[]_'test'.tmp -$ if $status then rm _'test'.tmp;* +$ if $status +$ then +$ rm _'test'.tmp;* +$ gosub junit_report_pass +$ else +$ gosub junit_report_fail_diff +$ endif $ set On $ return $ $incdupe6: echo "''test'" +$ test_class = "gawk_ext" $ set NoOn $ gawk --lint -i inchello -f hello.awk >_'test'.tmp 2>&1 $ if .not. $status then call exit_code '$status' _'test'.tmp $ cmp 'test'.ok sys$disk:[]_'test'.tmp -$ if $status then rm _'test'.tmp;* +$ if $status +$ then +$ rm _'test'.tmp;* +$ gosub junit_report_pass +$ else +$ gosub junit_report_fail_diff +$ endif $ set On $ return $ $incdupe7: echo "''test'" +$ test_class = "gawk_ext" $ set NoOn $ gawk --lint -f hello -i inchello >_'test'.tmp 2>&1 $ if .not. $status then call exit_code '$status' _'test'.tmp $ cmp 'test'.ok sys$disk:[]_'test'.tmp -$ if $status then rm _'test'.tmp;* +$ if $status +$ then +$ rm _'test'.tmp;* +$ gosub junit_report_pass +$ else +$ gosub junit_report_fail_diff +$ endif $ set On $ return $ $include2: echo "''test'" +$ test_class = "gawk_ext" $ gawk -i inclib "BEGIN {print sandwich(""a"", ""b"", ""c"")}" >_'test'.tmp 2>&1 $ cmp 'test'.ok sys$disk:[]_'test'.tmp -$ if $status then rm _'test'.tmp;* +$ if $status +$ then +$ rm _'test'.tmp;* +$ gosub junit_report_pass +$ else +$ gosub junit_report_fail_diff +$ endif $ return $ $id: $symtab1: $symtab2: $symtab3: echo "''test'" +$ test_class = "gawk_ext" $ set noOn +$ old_sort = sort +$ sort = "@sys$disk:[-.vms]vms_sort.com" $ gawk -f 'test'.awk >_'test'.tmp 2>&1 $ if .not. $status then call exit_code '$status' _'test'.tmp +$ sort = old_sort $ cmp 'test'.ok sys$disk:[]_'test'.tmp -$ if $status then rm _'test'.tmp;* +$ if $status +$ then +$ rm _'test'.tmp;* +$ gosub junit_report_pass +$ else +$ gosub junit_report_fail_diff +$ endif $ set On $ return $ $symtab4: $symtab5: $symtab7: echo "''test'" +$ test_class = "gawk_ext" $ set noOn $ gawk -f 'test'.awk <'test'.in >_'test'.tmp 2>&1 $ if .not. $status then call exit_code '$status' _'test'.tmp $ cmp 'test'.ok sys$disk:[]_'test'.tmp -$ if $status then rm _'test'.tmp;* +$ if $status +$ then +$ rm _'test'.tmp;* +$ gosub junit_report_pass +$ else +$ gosub junit_report_fail_diff +$ endif $ set On $ return $ $symtab6: echo "''test'" +$ test_class = "gawk_ext" $ set noOn $ gawk -d__'test'.tmp -f 'test'.awk $ pipe search __'test'.tmp "ENVIRON","PROCINFO" /match=nor > _'test'.tmp $ cmp 'test'.ok sys$disk:[]_'test'.tmp -$ if $status then rm _'test'.tmp;*,__'test'.tmp;* +$ if $status +$ then +$ rm _'test'.tmp;*,__'test'.tmp;* +$ gosub junit_report_pass +$ else +$ gosub junit_report_fail_diff +$ endif $ set On $ return $ $symtab8: echo "''test'" +$ test_class = "gawk_ext" $ set noOn $ gawk -d__'test'.tmp -f 'test'.awk 'test'.in > _'test'.tmp +$ if f$search("sys$disk:[]_''test'.tmp;2") .nes. "" +$ then +$ delete sys$disk:[]_'test'.tmp;2 +$ endif $ pipe search __'test'.tmp "ENVIRON","PROCINFO","FILENAME" /match=nor > ___'test'.tmp $ convert/append ___'test'.tmp _'test'.tmp $ cmp 'test'.ok sys$disk:[]_'test'.tmp -$ if $status then rm _'test'.tmp;*,__'test'.tmp;*,___'test'.tmp;* +$ if $status +$ then +$ rm _'test'.tmp;*,__'test'.tmp;*,___'test'.tmp;* +$ gosub junit_report_pass +$ else +$ gosub junit_report_fail_diff +$ endif $ set On $ return $ @@ -775,349 +1587,730 @@ $! Additionally each awk "system" call results in a new version of the output fi $! so we need to compensate for that as well. $!----------------------------------------------------------------------------------- $symtab9: echo "''test'" +$ test_class = "gawk_ext" $ old_rm = rm ! Remember old definition of rm $ rm = "!" ! Redefine rm to something harmless $ gawk -f 'test'.awk >_'test'.tmp $ rm = old_rm ! Restore old value $ delsym old_rm $ cmp 'test'.ok sys$disk:[]_'test'.tmp;-0 ! -0 is the lowest version -$ if $status then rm _'test'.tmp;*,testit.txt;* +$ if $status +$ then +$ rm _'test'.tmp;*,testit.txt;* +$ gosub junit_report_pass +$ else +$ gosub junit_report_fail_diff +$ endif $ return -$ +$! +$symtab10: echo "''test'" +$ test_class = "gawk_ext" +$ set noOn +$ gawk "-D" -f 'test'.awk < 'test'.in > _'test'.tmp 2>&1 +$ if .not. $status then call exit_code '$status' _'test'.tmp +$ cmp 'test'.ok sys$disk:[]_'test'.tmp +$ if $status +$ then +$ rm _'test'.tmp;* +$ gosub junit_report_pass +$ else +$ gosub junit_report_fail_diff +$ endif +$ set On +$ return +$! +$ignrcas3: echo "''test'" +$ test_class = "extra" +$ if f$search("sys$i18n_locale:el_gr_iso8859-7.locale") .nes. "" +$ then +$ define/user LC_ALL "el_gr_iso8859-7" +$ define/user GAWKLOCALE "el_gr_iso8859-7" + AWKPATH_srcdir +$! goto common_without_test_in +$ skip_reason = "VMS EL_GR_ISO8859-7 locale fails test" +$ gosub junit_report_skip +$ else +$ skip_reason = "EL_GR_ISO8859-7 locale not installed" +$ gosub junit_report_skip +$ endif +$ return +$! $childin: echo "''test'" +$ test_class = "basic" $ cat = "type sys$input" $ gawk -f 'test'.awk < 'test'.in > _'test'.tmp $ delsym cat +$ if f$search("sys$disk:[]_''test'.tmp;2") .nes. "" +$ then +$ delete sys$disk:[]_'test'.tmp;2 +$ endif $ cmp 'test'.ok sys$disk:[]_'test'.tmp -$ if $status then rm _'test'.tmp; +$ if $status +$ then +$ rm _'test'.tmp; +$ gosub junit_report_pass +$ else +$ gosub junit_report_fail_diff +$ endif $ return $ $noeffect: echo "noeffect" +$ test_class = "basic" $ AWKPATH_srcdir $ gawk --lint -f noeffect.awk >_noeffect.tmp 2>&1 $ cmp noeffect.ok sys$disk:[]_noeffect.tmp -$ if $status then rm _noeffect.tmp; +$ if $status +$ then +$ rm _noeffect.tmp; +$ gosub junit_report_pass +$ else +$ gosub junit_report_fail_diff +$ endif $ return $ $numsubstr: echo "numsubstr" +$ test_class = "basic" $ AWKPATH_srcdir $ gawk -f numsubstr.awk numsubstr.in >_numsubstr.tmp +$ if f$search("sys$disk:[]_''test'.tmp;2") .nes. "" +$ then +$ delete sys$disk:[]_'test'.tmp;2 +$ endif $ cmp numsubstr.ok sys$disk:[]_numsubstr.tmp -$ if $status then rm _numsubstr.tmp; +$ if $status +$ then +$ rm _numsubstr.tmp; +$ gosub junit_report_pass +$ else +$ gosub junit_report_fail_diff +$ endif $ return $ $prmreuse: echo "prmreuse" +$ test_class = "basic" $ if f$search("prmreuse.ok").eqs."" then create prmreuse.ok $ gawk -f prmreuse.awk >_prmreuse.tmp $ cmp prmreuse.ok sys$disk:[]_prmreuse.tmp -$ if $status then rm _prmreuse.tmp; +$ if $status +$ then +$ rm _prmreuse.tmp; +$ gosub junit_report_pass +$ else +$ gosub junit_report_fail_diff +$ endif $ return $ $fflush: -$ echo "fflush: not supported" +$ echo "fflush" +$ test_class = "unix_tests" +$ skip_reason = "not supported" +$ gosub junit_report_skip $ return $!!fflush: echo "fflush" $ ! hopelessly Unix-specific $!! @fflush.sh >_fflush.tmp $ cmp fflush.ok sys$disk:[]_fflush.tmp -$ if $status then rm _fflush.tmp; +$ if $status +$ then +$ rm _fflush.tmp; +$ gosub junit_report_pass +$ else +$ gosub junit_report_fail_diff +$ endif $ return $ $getlnhd: -$ echo "getlnhd skipped" +$ echo "getlnhd" +$ !Expects a Unix shell +$ test_class = "unix_tests" +$ skip_reason = "Expects a Unix shell" +$ gosub junit_report_skip $ return $!!getlnhd: echo "getlnhd" $ gawk -f getlnhd.awk >_getlnhd.tmp $ cmp getlnhd.ok sys$disk:[]_getlnhd.tmp -$ if $status then rm _getlnhd.tmp; +$ if $status +$ then +$ rm _getlnhd.tmp; +$ gosub junit_report_pass +$ else +$ gosub junit_report_fail_diff +$ endif $ return $ $tweakfld: echo "tweakfld" +$ test_class = "basic" $ gawk -f tweakfld.awk tweakfld.in >_tweakfld.tmp $ if f$search("errors.cleanup").nes."" then rm errors.cleanup;* +$ if f$search("sys$disk:[]_''test'.tmp;2") .nes. "" +$ then +$ delete sys$disk:[]_'test'.tmp;2 +$ endif $ cmp tweakfld.ok sys$disk:[]_tweakfld.tmp -$ if $status then rm _tweakfld.tmp; +$ if $status +$ then +$ rm _tweakfld.tmp; +$ gosub junit_report_pass +$ else +$ gosub junit_report_fail_diff +$ endif $ return $ $clsflnam: echo "clsflnam" +$ test_class = "basic" $ if f$search("clsflnam.ok").eqs."" then create clsflnam.ok $ gawk -f clsflnam.awk clsflnam.in >_clsflnam.tmp 2>&1 $ cmp clsflnam.ok sys$disk:[]_clsflnam.tmp -$ if $status then rm _clsflnam.tmp; +$ if $status +$ then +$ rm _clsflnam.tmp; +$ gosub junit_report_pass +$ else +$ gosub junit_report_fail_diff +$ endif $ return $ $mmap8k: echo "mmap8k" +$ test_class = "basic" $ gawk "{ print }" mmap8k.in >_mmap8k.tmp +$ if f$search("sys$disk:[]_''test'.tmp;2") .nes. "" +$ then +$ delete sys$disk:[]_'test'.tmp;2 +$ endif $ cmp mmap8k.in sys$disk:[]_mmap8k.tmp -$ if $status then rm _mmap8k.tmp; +$ if $status +$ then +$ rm _mmap8k.tmp; +$ gosub junit_report_pass +$ else +$ gosub junit_report_fail_diff +$ endif $ return $ $eofsplit: echo "eofsplit" +$ test_class = "basic" $ if f$search("eofsplit.ok").eqs."" then create eofsplit.ok $ gawk -f eofsplit.awk >_eofsplit.tmp $ cmp eofsplit.ok sys$disk:[]_eofsplit.tmp -$ if $status then rm _eofsplit.tmp; +$ if $status +$ then +$ rm _eofsplit.tmp; +$ gosub junit_report_pass +$ else +$ gosub junit_report_fail_diff +$ endif $ return $ $back89: echo "back89" +$ test_class = "basic" $ gawk "/a\8b/" back89.in >_back89.tmp +$ if f$search("sys$disk:[]_''test'.tmp;2") .nes. "" +$ then +$ delete sys$disk:[]_'test'.tmp;2 +$ endif $ cmp back89.ok sys$disk:[]_back89.tmp -$ if $status then rm _back89.tmp; +$ if $status +$ then +$ rm _back89.tmp; +$ gosub junit_report_pass +$ else +$ gosub junit_report_fail_diff +$ endif $ return $ $tradanch: echo "tradanch" +$ test_class = "basic" $ if f$search("tradanch.ok").eqs."" then create tradanch.ok $ gawk --traditional -f tradanch.awk tradanch.in >_tradanch.tmp $ cmp tradanch.ok sys$disk:[]_tradanch.tmp -$ if $status then rm _tradanch.tmp; +$ if $status +$ then +$ rm _tradanch.tmp; +$ gosub junit_report_pass +$ else +$ gosub junit_report_fail_diff +$ endif $ return $ $reginttrad: echo "''test'" +$ test_class = "basic" $ gawk --traditional -r -f 'test'.awk >_'test'.tmp +$ if f$search("sys$disk:[]_''test'.tmp;2") .nes. "" +$ then +$ delete sys$disk:[]_'test'.tmp;2 +$ endif $ cmp 'test'.ok sys$disk:[]_'test'.tmp -$ if $status then rm _'test'.tmp; +$ if $status +$ then +$ rm _'test'.tmp; +$ gosub junit_report_pass +$ else +$ gosub junit_report_fail_diff +$ endif $ return $ $pid: echo "pid" +$ test_class = "unix_tests" $ pid = f$integer("%x" + f$getjpi("","PID")) $ ppid = f$integer("%x" + f$getjpi("","OWNER")) $ gawk -v "ok_pid=''pid'" -v "ok_ppid=''ppid'" -f pid.awk >_pid.tmp >& _NL: $ cmp pid.ok sys$disk:[]_pid.tmp -$ if $status then rm _pid.tmp; +$ if $status +$ then +$ rm _pid.tmp; +$ gosub junit_report_pass +$ else +$ gosub junit_report_fail_diff +$ endif $ return $ $strftlng: echo "strftlng" +$ test_class = "unix_tests" $ define/User TZ "UTC" !useless $ gawk -f strftlng.awk >_strftlng.tmp +$ if f$search("sys$disk:[]_''test'.tmp;2") .nes. "" +$ then +$ delete sys$disk:[]_'test'.tmp;2 +$ endif $ cmp strftlng.ok sys$disk:[]_strftlng.tmp -$ if $status then rm _strftlng.tmp; +$ if $status +$ then +$ rm _strftlng.tmp; +$ gosub junit_report_pass +$ else +$ gosub junit_report_fail_diff +$ endif $ return $ $nfldstr: echo "nfldstr" +$ test_class = "basic" $ if f$search("nfldstr.ok").eqs."" then create nfldstr.ok $ gawk "$1 == 0 { print ""bug"" }" >_nfldstr.tmp $ cmp nfldstr.ok sys$disk:[]_nfldstr.tmp -$ if $status then rm _nfldstr.tmp; +$ if $status +$ then +$ rm _nfldstr.tmp; +$ gosub junit_report_pass +$ else +$ gosub junit_report_fail_diff +$ endif $ return $ $nors: echo "nors" +$ test_class = "basic" $!! there's no straightforward way to supply non-terminated input on the fly $!! @echo A B C D E | tr -d '\12' | $(AWK) '{ print $$NF }' - $(srcdir)/nors.in > _$@ $!! so just read a line from sys$input instead $ gawk "{ print $NF }" - nors.in >_nors.tmp A B C D E +$ if f$search("sys$disk:[]_''test'.tmp;2") .nes. "" +$ then +$ delete sys$disk:[]_'test'.tmp;2 +$ endif $ cmp nors.ok sys$disk:[]_nors.tmp -$ if $status then rm _nors.tmp; +$ if $status +$ then +$ rm _nors.tmp; +$ gosub junit_report_pass +$ else +$ gosub junit_report_fail_diff +$ endif $ return $ $reint: echo "reint" +$ test_class = "gawk_ext" $ gawk --re-interval -f reint.awk reint.in >_reint.tmp +$ if f$search("sys$disk:[]_''test'.tmp;2") .nes. "" +$ then +$ delete sys$disk:[]_'test'.tmp;2 +$ endif $ cmp reint.ok sys$disk:[]_reint.tmp -$ if $status then rm _reint.tmp; +$ if $status +$ then +$ rm _reint.tmp; +$ gosub junit_report_pass +$ else +$ gosub junit_report_fail_diff +$ endif $ return $ $noparms: echo "noparms" +$ test_class = "basic" $ set noOn $ AWKPATH_srcdir $ gawk -f noparms.awk >_noparms.tmp 2>&1 $ if .not. $status then call exit_code '$status' _noparms.tmp $ set On $ cmp noparms.ok sys$disk:[]_noparms.tmp -$ if $status then rm _noparms.tmp; +$ if $status +$ then +$ rm _noparms.tmp; +$ gosub junit_report_pass +$ else +$ gosub junit_report_fail_diff +$ endif $ return $ $pipeio1: echo "pipeio1" +$ test_class = "unix_tests" $ cat = "TYPE" !close enough, as long as we avoid .LIS default suffix $ define/User test1 []test1. $ define/User test2 []test2. $ gawk -f pipeio1.awk >_pipeio1.tmp $ rm test1.;,test2.; +$ if f$search("sys$disk:[]_''test'.tmp;2") .nes. "" +$ then +$ delete sys$disk:[]_'test'.tmp;2 +$ endif $ cmp pipeio1.ok sys$disk:[]_pipeio1.tmp -$ if $status then rm _pipeio1.tmp; +$ if $status +$ then +$ rm _pipeio1.tmp; +$ gosub junit_report_pass +$ else +$ gosub junit_report_fail_diff +$ endif $ return $ $pipeio2: +$ test_class = "unix_tests" $ echo "pipeio2 skipped" +$ ! Expects the sed utility and Posix shell $ return $!!pipeio2: echo "pipeio2" $ cat = "gawk -- {print}" $ tr = "??" !unfortunately, no trivial substitution available... $ gawk -v "SRCDIR=." -f pipeio2.awk >_pipeio2.tmp $ cmp pipeio2.ok sys$disk:[]_pipeio2.tmp -$ if $status then rm _pipeio2.tmp; +$ if $status +$ then +$ rm _pipeio2.tmp; +$ gosub junit_report_pass +$ else +$ gosub junit_report_fail_diff +$ endif $ return $ $clobber: echo "clobber" +$ test_class = "basic" $ gawk -f clobber.awk >_clobber.tmp +$ if f$search("sys$disk:[]_''test'.tmp;2") .nes. "" +$ then +$ delete sys$disk:[]_'test'.tmp;2 +$ endif $ cmp clobber.ok sys$disk:[]seq. $ if $status then rm seq.;* $ cmp clobber.ok sys$disk:[]_clobber.tmp -$ if $status then rm _clobber.tmp; +$ if $status +$ then +$ rm _clobber.tmp; +$ gosub junit_report_pass +$ else +$ gosub junit_report_fail_diff +$ endif $ return $ $nasty: echo "nasty" +$ test_class = "basic" $ set noOn $ gawk -f nasty.awk >_nasty.tmp $ call fixup_LRL nasty.ok $ call fixup_LRL _nasty.tmp "purge" +$ if f$search("sys$disk:[]_''test'.tmp;2") .nes. "" +$ then +$ delete sys$disk:[]_'test'.tmp;2 +$ endif $ cmp nasty.ok sys$disk:[]_nasty.tmp $ if $status $ then $ rm _nasty.tmp; $ file = "lcl_root:[]nasty.ok" $ if f$search(file) .nes. "" then rm 'file';* +$ gosub junit_report_pass +$ else +$ gosub junit_report_fail_diff $ endif $ set On $ return $ $nasty2: echo "nasty2" +$ test_class = "basic" $ set noOn $ gawk -f nasty2.awk >_nasty2.tmp $ call fixup_LRL nasty2.ok $ call fixup_LRL _nasty2.tmp "purge" +$ if f$search("sys$disk:[]_''test'.tmp;2") .nes. "" +$ then +$ delete sys$disk:[]_'test'.tmp;2 +$ endif $ cmp nasty2.ok sys$disk:[]_nasty2.tmp $ if $status $ then $ rm _nasty2.tmp; $ file = "lcl_root:[]nasty2.ok" $ if f$search(file) .nes. "" then rm 'file';* +$ gosub junit_report_pass +$ else +$ gosub junit_report_fail_diff $ endif $ set On $ return $ -$aadelete1: -$aadelete2: $arrayparm: $fnaryscl: -$functab1: -$functab2: -$functab3: -$nastyparm: $opasnslf: $opasnidx: $printfbad1: $prmarscl: $subslash: +$ test_class = "basic" +$ goto test_error_capture1 +$! +$functab1: +$functab2: +$functab3: +$aadelete1: +$aadelete2: +$nastyparm: +$ test_class = "gawk_ext" +$ goto test_error_capture1 +$! +$test_error_capture1: $ echo "''test'" $ set noOn $ gawk -f 'test'.awk >_'test'.tmp 2>&1 $ if .not. $status then call exit_code '$status' _'test'.tmp $ set On $ cmp 'test'.ok sys$disk:[]_'test'.tmp -$ if $status then rm _'test'.tmp; +$ if $status +$ then +$ rm _'test'.tmp; +$ gosub junit_report_pass +$ else +$ gosub junit_report_fail_diff +$ endif $ return $ $arynocls: echo "arynocls" +$ test_class = "basic" $ gawk -v "INPUT"=arynocls.in -f arynocls.awk >_arynocls.tmp $ cmp arynocls.ok sys$disk:[]_arynocls.tmp -$ if $status then rm _arynocls.tmp; +$ if $status +$ then +$ rm _arynocls.tmp; +$ gosub junit_report_pass +$ else +$ gosub junit_report_fail_diff +$ endif $ return $ $getlnbuf: echo "getlnbuf" +$ test_class = "basic" $ gawk -f getlnbuf.awk getlnbuf.in >_getlnbuf.tmp $ gawk -f gtlnbufv.awk getlnbuf.in >_getlnbuf.too +$ if f$search("sys$disk:[]_''test'.tmp;2") .nes. "" +$ then +$ delete sys$disk:[]_'test'.tmp;2 +$ endif $ cmp getlnbuf.ok sys$disk:[]_getlnbuf.tmp $ if $status then rm _getlnbuf.tmp; +$ if f$search("sys$disk:[]_''test'.too;2") .nes. "" +$ then +$ delete sys$disk:[]_'test'.too;2 +$ endif $ cmp getlnbuf.ok sys$disk:[]_getlnbuf.too -$ if $status then rm _getlnbuf.too; +$ if $status +$ then +$ rm _getlnbuf.too; +$ gosub junit_report_pass +$ else +$ gosub junit_report_fail_diff +$ endif $ return $ $lint: echo "lint" +$ test_class = "gawk_ext" $ AWKPATH_srcdir $ gawk -f lint.awk >_lint.tmp 2>&1 $ cmp lint.ok sys$disk:[]_lint.tmp -$ if $status then rm _lint.tmp; +$ if $status +$ then +$ rm _lint.tmp; +$ gosub junit_report_pass +$ else +$ gosub junit_report_fail_diff +$ endif $ return $ $lintold: echo "lintold" +$ test_class = "gawk_ext" $ AWKPATH_srcdir $ gawk -f lintold.awk --lint-old _lintold.tmp 2>&1 $ cmp lintold.ok sys$disk:[]_lintold.tmp -$ if $status then rm _lintold.tmp; +$ if $status +$ then +$ rm _lintold.tmp; +$ gosub junit_report_pass +$ else +$ gosub junit_report_fail_diff +$ endif $ return $ $ofmtbig: echo "ofmtbig" +$ test_class = "basic" $ set noOn $ gawk -f ofmtbig.awk ofmtbig.in >_ofmtbig.tmp 2>&1 $ set On $ cmp ofmtbig.ok sys$disk:[]_ofmtbig.tmp -$ if $status then rm _ofmtbig.tmp; +$ if $status +$ then +$ rm _ofmtbig.tmp; +$ gosub junit_report_pass +$ else +$ gosub junit_report_fail_diff +$ endif $ return $ $inetechu: echo "inetechu" +$ test_class = "inet" $ echo "this test is for establishing UDP connections" $ set noOn $ gawk -- "BEGIN {print """" |& ""/inet/udp/0/127.0.0.1/9""}" +$ ! report skip as we do not validate yet. +$ skip_reason = "Test not validated." +$ gosub junit_report_skip $ set On $ return $ $inetecht: echo "inetecht" +$ test_class = "inet" $ echo "this test is for establishing TCP connections" $ set noOn $ gawk -- "BEGIN {print """" |& ""/inet/tcp/0/127.0.0.1/9""}" +$ ! report skip as we do not validate yet. +$ skip_reason = "Test not validated." +$ gosub junit_report_skip $ set On $ return $ $inetdayu: echo "inetdayu" +$ test_class = "inet" $ echo "this test is for bidirectional UDP transmission" $ set noOn $ gawk -f - _NL: BEGIN { print "" |& "/inet/udp/0/127.0.0.1/13"; "/inet/udp/0/127.0.0.1/13" |& getline; print $0} +$ ! report skip as we do not validate yet. +$ skip_reason = "Test not validated." +$ gosub junit_report_skip $ set On $ return $ $inetdayt: echo "inetdayt" +$ test_class = "inet" $ echo "this test is for bidirectional TCP transmission" $ set noOn $ gawk -f - _NL: BEGIN { print "" |& "/inet/tcp/0/127.0.0.1/13"; "/inet/tcp/0/127.0.0.1/13" |& getline; print $0} +$ ! report skip as we do not validate yet. +$ skip_reason = "Test not validated." +$ gosub junit_report_skip $ set On $ return $ $redfilnm: echo "redfilnm" +$ test_class = "basic" $ gawk -f redfilnm.awk srcdir="." redfilnm.in >_redfilnm.tmp +$ if f$search("sys$disk:[]_''test'.tmp;2") .nes. "" +$ then +$ delete sys$disk:[]_'test'.tmp;2 +$ endif $ cmp redfilnm.ok sys$disk:[]_redfilnm.tmp -$ if $status then rm _redfilnm.tmp; +$ if $status +$ then +$ rm _redfilnm.tmp; +$ gosub junit_report_pass +$ else +$ gosub junit_report_fail_diff +$ endif $ return $ $leaddig: echo "leaddig" +$ test_class = "basic" $ gawk -v "x=2E" -f leaddig.awk >_leaddig.tmp +$ if f$search("sys$disk:[]_''test'.tmp;2") .nes. "" +$ then +$ delete sys$disk:[]_'test'.tmp;2 +$ endif $ cmp leaddig.ok sys$disk:[]_leaddig.tmp -$ if $status then rm _leaddig.tmp; +$ if $status +$ then +$ rm _leaddig.tmp; +$ gosub junit_report_pass +$ else +$ gosub junit_report_fail_diff +$ endif $ return $ $clos1way: -$ echo "clos1way: not supported" +$clos1way2: +$clos1way3: +$clos1way4: +$clos1way5: +$ test_class = "gawk_ext" +$ echo "''test'" +$ skip_reason = "Test not supported." +$ gosub junit_report_skip $ return -$!!clos1way: echo "clos1way" +$#clos1way: echo "''test'" $ gawk -f clos1way.awk >_clos1way.tmp $ cmp clos1way.ok sys$disk:[]_clos1way.tmp -$ if $status then rm _clos1way.tmp; +$ if $status +$ then +$ rm _clos1way.tmp; +$ gosub junit_report_pass +$ else +$ gosub junit_report_fail_diff +$ endif $ return $ $shadow: echo "shadow" +$ test_class = "gawk_ext" $ set noOn $ AWKPATH_srcdir $ gawk --lint -f shadow.awk >_shadow.tmp 2>&1 $ set On $ cmp shadow.ok sys$disk:[]_shadow.tmp -$ if $status then rm _shadow.tmp; +$ if $status +$ then +$ rm _shadow.tmp; +$ gosub junit_report_pass +$ else +$ gosub junit_report_fail_diff +$ endif $ return $ $lintwarn: echo "lintwarn" +$ test_class = "basic" $ set noOn $ AWKPATH_srcdir $ gawk --lint -f lintwarn.awk >_lintwarn.tmp 2>&1 $ if .not. $status then call exit_code '$status' _lintwarn.tmp $ set On $ cmp lintwarn.ok sys$disk:[]_lintwarn.tmp -$ if $status then rm _lintwarn.tmp; +$ if $status +$ then +$ rm _lintwarn.tmp; +$ gosub junit_report_pass +$ else +$ gosub junit_report_fail_diff +$ endif $ return $ $longsub: echo "longsub" +$ test_class = "basic" $ set noOn $ gawk -f longsub.awk longsub.in >_longsub.tmp $!! the records here are too long for DIFF to handle @@ -1125,14 +2318,31 @@ $!! so assume success as long as gawk doesn't crash $!! call fixup_LRL longsub.ok $!! call fixup_LRL _longsub.tmp "purge" $!! cmp longsub.ok sys$disk:[]_longsub.tmp -$ if $status then rm _longsub.tmp; +$ if $status +$ then +$ rm _longsub.tmp; +$ gosub junit_report_pass +$ else +$ gosub junit_report_fail_diff +$ endif $ set On $ return $ $arrayprm3: echo "arrayprm3" +$ test_class = "basic" $ gawk -f arrayprm3.awk arrayprm3.in >_arrayprm3.tmp +$ if f$search("sys$disk:[]_''test'.tmp;2") .nes. "" +$ then +$ delete sys$disk:[]_'test'.tmp;2 +$ endif $ cmp arrayprm3.ok sys$disk:[]_arrayprm3.tmp -$ if $status then rm _arrayprm3.tmp; +$ if $status +$ then +$ rm _arrayprm3.tmp; +$ gosub junit_report_pass +$ else +$ gosub junit_report_fail_diff +$ endif $ return $ $arryref3: @@ -1152,12 +2362,26 @@ $scalar: $sclforin: $sclifin: $ echo "''test'" +$ test_class = "basic" $ set noOn $ gawk -f 'test'.awk 'test'.in >_'test'.tmp 2>&1 $ if .not. $status then call exit_code '$status' _'test'.tmp $ set On $ cmp 'test'.ok sys$disk:[]_'test'.tmp -$ if $status then rm _'test'.tmp; +$ if $status +$ then +$ rm _'test'.tmp; +$ gosub junit_report_pass +$ else +$ gosub junit_report_fail_diff +$ endif +$ return +$! +$sigpipe1: +$ test_class = "basic" +$ echo "''test'" +$ skip_reason = "Test not supported." +$ gosub junit_report_skip $ return $ $ ! @@ -1169,17 +2393,63 @@ $ gawk -f 'test'.awk <'test'.in >_'test'.tmp 2>&1 $ if .not. $status then call exit_code '$status' _'test'.tmp $ set On $ cmp 'test'.ok sys$disk:[]_'test'.tmp -$ if $status then rm _'test'.tmp; +$ if $status +$ then +$ rm _'test'.tmp; +$ gosub junit_report_pass +$ else +$ gosub junit_report_fail_diff +$ endif $ return $ -$exitval2: echo "exitval2 skipped" +$exitval2: +$ echo "''test'" +$ test_class = "basic" +$ cmdfile = "sys$disk:[]_''test'.com" +$ if f$search(cmdfile) .nes. "" then delete 'cmdfile';* +$ open/write xxx 'cmdfile' +$ write xxx "$!'f$verify(0,0)' +$ write xxx "$read := read" +$ write xxx "$define/user sys$input sys$command" +$ write xxx "$pipe read sys$input x ; write sys$output x ; exit %x003A151" +$ close xxx +$ ! Unix exit 42 is VMS %x003A151 +$ read := "@''cmdfile' !" +$ set noOn +$ gawk -f 'test'.awk >_'test'.tmp +$ if $status .ne. 1 then call exit_code '$status' _'test'.tmp +$ delete/symbol/local read +$ set On +$ cmp 'test'.ok sys$disk:[]_'test'.tmp +$ if $status +$ then +$ rm _'test'.tmp;* +$ if f$search(cmdfile) .nes. "" then rm 'cmdfile';* +$ gosub junit_report_pass +$ else +$ gosub junit_report_fail_diff +$ endif $ return -$!!exitval2: echo "exitval2" -$ gawk -f exitval2.awk exitval2.in >_exitval2.tmp -$ cmp exitval2.ok sys$disk:[]_exitval2.tmp -$ if $status then rm _exitval2.tmp; +$! +$exitval3: +$ echo "''test'" +$ test_class = "basic" +$ set noOn +$ gawk -f 'test'.awk >_'test'.tmp +$ ! Unix exit 42 is VMS %x003A151 +$ if $status .ne. 1 then call exit_code '$status' _'test'.tmp +$ set On +$ cmp 'test'.ok sys$disk:[]_'test'.tmp +$ if $status +$ then +$ rm _'test'.tmp; +$ gosub junit_report_pass +$ else +$ gosub junit_report_fail_diff +$ endif $ return -$ +$! +$! $delfunc: $fcall_exit2: $fnamedat: @@ -1189,30 +2459,59 @@ $fnmisc: $gsubasgn: $unterm: $ echo "''test'" +$ test_class = "basic" $ set noOn $ gawk -f 'test'.awk 'test'.in >_'test'.tmp 2>&1 $ if .not. $status then call exit_code '$status' _'test'.tmp $ set On $ cmp 'test'.ok sys$disk:[]_'test'.tmp -$ if $status then rm _'test'.tmp; +$ if $status +$ then +$ rm _'test'.tmp; +$ gosub junit_report_pass +$ else +$ gosub junit_report_fail_diff +$ endif $ return $ -$getline: echo "getline skipped" +$getline: echo "getline" +$ test_class = "basic" +$ !Expects a Unix shell +$ skip_reason = "Requires a Unix shell." +$ gosub junit_report_skip $ return $!!getline: echo "getline" $ gawk -f getline.awk getline.in >_getline.tmp $ cmp getline.ok sys$disk:[]_getline.tmp -$ if $status then rm _getline.tmp; +$ if $status +$ then +$ rm _getline.tmp; +$ gosub junit_report_pass +$ else +$ gosub junit_report_fail_diff +$ endif $ return $ $gsubtst3: echo "gsubtst3" +$ test_class = "basic" $ gawk --re-interval -f gsubtst3.awk gsubtst3.in >_gsubtst3.tmp +$ if f$search("sys$disk:[]_''test'.tmp;2") .nes. "" +$ then +$ delete sys$disk:[]_'test'.tmp;2 +$ endif $ cmp gsubtst3.ok sys$disk:[]_gsubtst3.tmp -$ if $status then rm _gsubtst3.tmp; +$ if $status +$ then +$ rm _gsubtst3.tmp; +$ gosub junit_report_pass +$ else +$ gosub junit_report_fail_diff +$ endif $ return $ $! FIXME: gawk generates an extra, empty output file while running this test... $iobug1: echo "iobug1" +$ test_class = "basic" $ cat = "TYPE sys$input:" $ true = "exit 1" !success $ oldout = f$search("_iobug1.tmp;") @@ -1220,55 +2519,104 @@ $ gawk -f iobug1.awk iobug1.in >_iobug1.tmp $ badout = f$search("_iobug1.tmp;-1") $ if badout.nes."" .and. badout.nes.oldout then rm 'badout' $ cmp iobug1.ok sys$disk:[]_iobug1.tmp -$ if $status then rm _iobug1.tmp; +$ if $status +$ then +$ rm _iobug1.tmp; +$ gosub junit_report_pass +$ else +$ gosub junit_report_fail_diff +$ endif $ return $ -$rstest4: echo "rstest4 skipped" -$ return -$!!rstest4: echo "rstest4" -$ gawk -f rstest4.awk rstest4.in >_rstest4.tmp +$rstest4: +$ echo "rstest4" +$ test_class = "basic" +$ old_echo = echo +$ echo = "write sys$output """ +$ gawk -f rstest4.awk >_rstest4.tmp1 +$ if f$search("sys$disk:[]_''test'.tmp1;2") .nes. "" +$ then +$ delete sys$disk:[]_'test'.tmp1;2 +$ endif +$ echo = old_echo +$ gawk "{gsub(""< A>"","""")}1" _'test'.tmp1 >_'test'.tmp +$ rm sys$disk:[]_'test'.tmp1;* +$ if f$search("sys$disk:[]_''test'.tmp;2") .nes. "" +$ then +$ delete sys$disk:[]_'test'.tmp;2 +$ endif $ cmp rstest4.ok sys$disk:[]_rstest4.tmp -$ if $status then rm _rstest4.tmp; +$! if $status then rm _rstest4.tmp; +$ if $status +$ then +$ rm _'test'.tmp; +$ gosub junit_report_pass +$ else +$ gosub junit_report_fail_diff +$ endif $ return $ -$rstest5: echo "rstest5 skipped" -$ return -$!!rstest5: echo "rstest5" -$ gawk -f rstest5.awk rstest5.in >_rstest5.tmp +$rstest5: +$ echo "rstest5" +$ test_class = "basic" +$ old_echo = echo +$ echo = "write sys$output """ +$ gawk -f rstest5.awk >_rstest5.tmp1 +$ if f$search("sys$disk:[]_''test'.tmp1;2") .nes. "" +$ then +$ delete sys$disk:[]_'test'.tmp1;2 +$ endif +$ echo = old_echo +$ gawk "{gsub("" '"","""");gsub(""'"","""")}1" _'test'.tmp1 >_'test'.tmp +$ rm sys$disk:[]_'test'.tmp1;* +$ if f$search("sys$disk:[]_''test'.tmp;2") .nes. "" +$ then +$ delete sys$disk:[]_'test'.tmp;2 +$ endif $ cmp rstest5.ok sys$disk:[]_rstest5.tmp -$ if $status then rm _rstest5.tmp; +$ if $status +$ then +$ rm _rstest5.tmp; +$ gosub junit_report_pass +$ else +$ gosub junit_report_fail_diff +$ endif $ return $ $fcall_exit: $fnarray: $funsmnam: -$match2: $paramdup: $paramres: $parseme: $synerr1: $synerr2: -$ echo "''test'" -$ set noOn -$ gawk -f 'test'.awk >_'test'.tmp 2>&1 -$ if .not. $status then call exit_code '$status' _'test'.tmp -$ set On -$ cmp 'test'.ok sys$disk:[]_'test'.tmp -$ if $status then rm _'test'.tmp; -$ return -$ +$ test_class = "basic" +$ goto test_error_capture1 +$match2: +$ test_class = "gawk_ext" +$ goto test_error_capture1 +$! $uninit2: $uninit3: $uninit4: $uninit5: $uninitialized: $ echo "''test'" +$ test_class = "basic" $ gawk --lint -f 'test'.awk 'test'.in >_'test'.tmp 2>&1 $ cmp 'test'.ok sys$disk:[]_'test'.tmp -$ if $status then rm _'test'.tmp; +$ if $status +$ then +$ rm _'test'.tmp; +$ gosub junit_report_pass +$ else +$ gosub junit_report_fail_diff +$ endif $ return $ $space: echo "space" +$ test_class = "unix_tests" $ set noOn $ gawk -f " " space.awk >_space.tmp 2>&1 $ if .not. $status then call exit_code '$status' _space.tmp @@ -1276,21 +2624,43 @@ $ set On $! we get a different error from what space.ok expects $ gawk "{gsub(""file specification syntax error"", ""no such file or directory""); print}" - _space.tmp >_space.too +$ if f$search("sys$disk:[]_''test'.too;2") .nes. "" +$ then +$ delete sys$disk:[]_'test'.too;2 +$ endif $ rm _space.tmp; $ mv _space.too _space.tmp $ igncascmp space.ok sys$disk:[]_space.tmp -$ if $status then rm _space.tmp; +$ if $status +$ then +$ rm _space.tmp; +$ gosub junit_report_pass +$ else +$ gosub junit_report_fail_diff +$ endif $ return $ $posix2008sub: $printf0: $ echo "''test'" +$ test_class = "basic" $ gawk --posix -f 'test'.awk >_'test'.tmp +$ if f$search("sys$disk:[]_''test'.tmp;2") .nes. "" +$ then +$ delete sys$disk:[]_'test'.tmp;2 +$ endif $ cmp 'test'.ok sys$disk:[]_'test'.tmp -$ if $status then rm _'test'.tmp; +$ if $status +$ then +$ rm _'test'.tmp; +$ gosub junit_report_pass +$ else +$ gosub junit_report_fail_diff +$ endif $ return $ $rsnulbig: echo "rsnulbig" +$ test_class = "basic" $ if .not.pipeok $ then echo "Without the PIPE command, ''test' can't be run." $ On warning then return @@ -1306,10 +2676,17 @@ $ pipe - gawk -- "/^[^a]/; END {print NR}" >_rsnulbig.tmp $ set On $ cmp rsnulbig.ok sys$disk:[]_rsnulbig.tmp -$ if $status then rm _rsnulbig.tmp; +$ if $status +$ then +$ rm _rsnulbig.tmp; +$ gosub junit_report_pass +$ else +$ gosub junit_report_fail_diff +$ endif $ return $ $rsnulbig2: echo "rsnulbig2" +$ test_class = "basic" $ if .not.pipeok $ then echo "Without the PIPE command, ''test' can't be run." $ On warning then return @@ -1325,86 +2702,223 @@ $ pipe - gawk -- "/^[^a]/; END {print NR}" >_rsnulbig2.tmp $ set On $ cmp rsnulbig2.ok sys$disk:[]_rsnulbig2.tmp -$ if $status then rm _rsnulbig2.tmp; +$ if $status +$ then +$ rm _rsnulbig2.tmp; +$ gosub junit_report_pass +$ else +$ gosub junit_report_fail_diff +$ endif $ return $ +$backbigs1: ! 4.1.1 +$ test_class = "charset_tests" +$ echo "''test'" +$ ! needs a locale not on VMS currently +$ skip_reason = "Needs locale not on VMS Currently" +$ gosub junit_report_skip +$ return +$! +$backsmalls1: +$ test_class = "charset_tests" +$ gosub define_gawklocale +$ if f$trnlnm("LC_ALL") .nes. "utf8-50" +$ then +$ echo "''test'" +$ skip_reason = "Needs utf8-50 locale." +$ gosub junit_report_skip +$ return +$ else +$ echo "''test'" +$ endif +$ gawk -f 'test'.awk 'test'.in >_'test'.tmp +$ if f$search("sys$disk:[]_''test'.tmp;2") .nes. "" +$ then +$ delete sys$disk:[]_'test'.tmp;2 +$ endif +$ cmp 'test'.ok sys$disk:[]_'test'.tmp +$ if $status +$ then +$ rm _'test'.tmp; +$ gosub junit_report_pass +$ else +$ gosub junit_report_fail_diff +$ endif +$ return +$! $subamp: $wideidx: $widesub2: $widesub3: $ echo "''test'" +$ test_class = "basic" $ gosub define_gawklocale $ gawk -f 'test'.awk 'test'.in >_'test'.tmp +$ if f$search("sys$disk:[]_''test'.tmp;2") .nes. "" +$ then +$ delete sys$disk:[]_'test'.tmp;2 +$ endif $ cmp 'test'.ok sys$disk:[]_'test'.tmp -$ if $status then rm _'test'.tmp; +$ if $status +$ then +$ rm _'test'.tmp; +$ gosub junit_report_pass +$ else +$ gosub junit_report_fail_diff +$ endif $ return $ $ignrcas2: -$!!lc_num1: +$ test_class = "gawk_ext" +$ goto wide_tests_1 $wideidx2: $widesub: $widesub4: +$ test_class = "basic" +$ goto wide_tests_1 +$! +$wide_tests_1: $ echo "''test'" $ gosub define_gawklocale $ gawk -f 'test'.awk >_'test'.tmp +$ if f$search("sys$disk:[]_''test'.tmp;2") .nes. "" +$ then +$ delete sys$disk:[]_'test'.tmp;2 +$ endif $ cmp 'test'.ok sys$disk:[]_'test'.tmp -$ if $status then rm _'test'.tmp; +$ if $status +$ then +$ rm _'test'.tmp; +$ gosub junit_report_pass +$ else +$ gosub junit_report_fail_diff +$ endif $ return $ $! This test is somewhat suspect for vms due to exit code manipulation $exitval1: echo "exitval1" +$ test_class = "basic" $ gawk -f exitval1.awk >_exitval1.tmp 2>&1 $ if $status then call exit_code '$status' _exitval1.tmp $ cmp exitval1.ok sys$disk:[]_exitval1.tmp -$ if $status then rm _exitval1.tmp; +$ if $status +$ then +$ rm _exitval1.tmp; +$ gosub junit_report_pass +$ else +$ gosub junit_report_fail_diff +$ endif $ return $ $fsspcoln: echo "fsspcoln" +$ test_class = "basic" $ gawk -f fsspcoln.awk "FS=[ :]+" fsspcoln.in >_forspcoln.tmp +$ if f$search("sys$disk:[]_forspcoln.tmp;2") .nes. "" +$ then +$ delete sys$disk:[]_forspcoln.tmp;2 +$ endif $ cmp fsspcoln.ok sys$disk:[]_forspcoln.tmp -$ if $status then rm _forspcoln.tmp; +$ if $status +$ then +$ rm _forspcoln.tmp; +$ gosub junit_report_pass +$ else +$ gosub junit_report_fail_diff +$ endif $ return $ $getlndir: echo "getlndir" +$ test_class = "gawk_ext" $ ! assume we're running in the test subdirectory; we don't want to $ ! perform a messy conversion of [] into its file specification $ gawk -v "SRCDIR=[-]test.dir" -f getlndir.awk >_getlndir.tmp $! getlndir.ok expects "Is a directory", we see "is a directory" +$ if f$search("sys$disk:[]_''test'.tmp;2") .nes. "" +$ then +$ delete sys$disk:[]_'test'.tmp;2 +$ endif $ igncascmp getlndir.ok sys$disk:[]_getlndir.tmp -$ if $status then rm _getlndir.tmp; +$ if $status +$ then +$ rm _getlndir.tmp; +$ gosub junit_report_pass +$ else +$ gosub junit_report_fail_diff +$ endif $ return $ $rsstart2: echo "rsstart2" +$ test_class = "gawk_ext" $ gawk -f rsstart2.awk rsstart1.in >_rsstart2.tmp +$ if f$search("sys$disk:[]_''test'.tmp;2") .nes. "" +$ then +$ delete sys$disk:[]_'test'.tmp;2 +$ endif $ cmp rsstart2.ok sys$disk:[]_rsstart2.tmp -$ if $status then rm _rsstart2.tmp; +$ if $status +$ then +$ rm _rsstart2.tmp; +$ gosub junit_report_pass +$ else +$ gosub junit_report_fail_diff +$ endif $ return $ -$! rsstart3 fails, presumeably due to PIPE's use of print file format -$rsstart3: echo "rsstart3 skipped" -$ return -$!!rsstart3: echo "rsstart3" -$ if .not.pipeok -$ then echo "Without the PIPE command, ''test' can't be run." -$ On warning then return -$ pipe echo "With PIPE, ''test' will finish quickly." -$ On warning then $ -$ pipeok = 1 -$ endif +$rsstart3: +$ echo "rsstart3" +$ test_class = "gawk_ext" +$! rsstart3 with pipe fails, +$! presumeably due to PIPE's use of print file format +$! if .not.pipeok +$! then echo "Without the PIPE command, ''test' can't be run." +$! On warning then return +$! pipe echo "With PIPE, ''test' will finish quickly." +$! On warning then $ +$! pipeok = 1 +$! endif $ ! head rsstart1.in | gawk -f rsstart2.awk >_rsstart3.tmp $ ! splitting this into two steps would make it the same as rsstart2 $ set noOn -$ pipe - - gawk -- "FNR <= 10" rsstart1.in | - - gawk -f rsstart2.awk >_rsstart3.tmp +$!$ pipe - +$! gawk -- "FNR <= 10" rsstart1.in | - +$! gawk -f rsstart2.awk >_rsstart3.tmp +$! +$ ! DCL redirection to files is similar to pipes +$ ! But not quite the same. +$ ! DCL pipes are mailboxes, not the same as CRTL pipes, +$ ! So eventually someone should look into why CRTL pipes and +$ ! gawk are not always playing well together. +$ gawk -- "FNR <= 10" rsstart1.in > _'test'.tmp1 +$ if f$search("sys$disk:[]_''test'.tmp1;2") .nes. "" +$ then +$ delete sys$disk:[]_'test'.tmp1;2 +$ endif +$ define/user sys$input _'test'.tmp1 +$ gawk -f rsstart2.awk >_rsstart3.tmp +$ if f$search("sys$disk:[]_''test'.tmp;2") .nes. "" +$ then +$ delete sys$disk:[]_'test'.tmp;2 +$ endif $ set On $ cmp rsstart3.ok sys$disk:[]_rsstart3.tmp -$ if $status then rm _rsstart3.tmp; +$ if $status +$ then +$ rm _rsstart3.tmp;, _rsstart3.tmp1; +$ gosub junit_report_pass +$ else +$ gosub junit_report_fail_diff +$ endif $ return $ $rtlen: $rtlen01: +$ test_class = "unix_tests" +$ goto rtlen_tests_1 $rtlenmb: +$ test_class = "charset_tests" +$ goto rtlen_tests_1 +$! +$rtlen_tests_1: $ echo "''test'" $ if .not.pipeok $ then echo "Without the PIPE command, ''test' can't be run." @@ -1422,15 +2936,29 @@ $ pipe - gawk -- "BEGIN {RS=""""}; {print length(RT)}" >_'test'.tmp $ if test.eqs."rtlenmb" then delet_/Symbol/Local GAWKLOCALE $ if test.eqs."rtlenmb" then f = "rtlen.ok" +$ if f$search("sys$disk:[]_''test'.tmp;2") .nes. "" +$ then +$ delete sys$disk:[]_'test'.tmp;2 +$ endif $ else $ call/Output=_rtlen01.tmp do__rtlen01 $ ! first test yields 1 instead of 0 due to forced newline $ gawk -- "FNR==1 {sub(""1"",""0"")}; {print}" _rtlen01.tmp >_rtlen01.too +$ if f$search("sys$disk:[]_''test'.too;2") .nes. "" +$ then +$ delete sys$disk:[]_'test'.too;2 +$ endif $ rm _rtlen01.tmp; $ mv _rtlen01.too _rtlen01.tmp $ endif $ cmp 'f' sys$disk:[]_'test'.tmp -$ if $status then rm _'test'.tmp; +$ if $status +$ then +$ rm _'test'.tmp; +$ gosub junit_report_pass +$ else +$ gosub junit_report_fail_diff +$ endif $ return $ $do__rtlen01: subroutine @@ -1447,72 +2975,158 @@ $ pipe - $ endsubroutine !do__rtlen01 $ $nondec2: echo "nondec2" +$ test_class = "gawk_ext" $ gawk --non-decimal-data -v "a=0x1" -f nondec2.awk >_nondec2.tmp +$ if f$search("sys$disk:[]_''test'.tmp;2") .nes. "" +$ then +$ delete sys$disk:[]_'test'.tmp;2 +$ endif $ cmp nondec2.ok sys$disk:[]_nondec2.tmp -$ if $status then rm _nondec2.tmp; +$ if $status +$ then +$ rm _nondec2.tmp; +$ gosub junit_report_pass +$ else +$ gosub junit_report_fail_diff +$ endif $ return $ $nofile: echo "nofile" +$ test_class = "basic" $! gawk "{}" no/such/file >_nofile.tmp 2>&1 $! nofile.ok expects no/such/file, but using that name in the test would $! yield "file specification syntax error" instead of "no such file..." $ set noOn $ gawk "{}" no-such-file >_nofile.tmp 2>&1 $ if .not. $status then call exit_code '$status' _nofile.tmp +$ if f$search("sys$disk:[]_''test'.tmp;2") .nes. "" +$ then +$ delete sys$disk:[]_'test'.tmp;2 +$ endif $ set On $! restore altered file name $ gawk "{gsub(""no-such-file"", ""no/such/file""); print}" _nofile.tmp >_nofile.too +$ if f$search("sys$disk:[]_''test'.too;2") .nes. "" +$ then +$ delete sys$disk:[]_'test'.too;2 +$ endif $ rm _nofile.tmp; $ mv _nofile.too _nofile.tmp $! nofile.ok expects "No such file ...", we see "no such file ..." $ igncascmp nofile.ok sys$disk:[]_nofile.tmp -$ if $status then rm _nofile.tmp; +$ if $status +$ then +$ rm _nofile.tmp; +$ gosub junit_report_pass +$ else +$ gosub junit_report_fail_diff +$ endif $ return $ $binmode1: echo "binmode1" +$ test_class = "gawk_ext" $ gawk -v "BINMODE=3" "BEGIN { print BINMODE }" >_binmode1.tmp +$ if f$search("sys$disk:[]_''test'.tmp;2") .nes. "" +$ then +$ delete sys$disk:[]_'test'.tmp;2 +$ endif $ cmp binmode1.ok sys$disk:[]_binmode1.tmp -$ if $status then rm _binmode1.tmp; +$ if $status +$ then +$ rm _binmode1.tmp; +$ gosub junit_report_pass +$ else +$ gosub junit_report_fail_diff +$ endif $ return $ $subi18n: echo "''test'" +$ test_class = "basic" $ define/User GAWKLOCALE "en_US.UTF-8" $ gawk -f 'test'.awk > _'test'.tmp +$ if f$search("sys$disk:[]_''test'.tmp;2") .nes. "" +$ then +$ delete sys$disk:[]_'test'.tmp;2 +$ endif $ cmp 'test'.ok sys$disk:[]_'test'.tmp -$ if $status then rm _'test'.tmp; +$ if $status +$ then +$ rm _'test'.tmp; +$ gosub junit_report_pass +$ else +$ gosub junit_report_fail_diff +$ endif $ return $ $rri1: $concat4: echo "''test'" +$ test_class = "basic" $ define/User GAWKLOCALE "en_US.UTF-8" $ gawk -f 'test'.awk 'test'.in > _'test'.tmp +$ if f$search("sys$disk:[]_''test'.tmp;2") .nes. "" +$ then +$ delete sys$disk:[]_'test'.tmp;2 +$ endif $ cmp 'test'.ok sys$disk:[]_'test'.tmp -$ if $status then rm _'test'.tmp; +$ if $status +$ then +$ rm _'test'.tmp; +$ gosub junit_report_pass +$ else +$ gosub junit_report_fail_diff +$ endif $ return $ -$devfd: echo "devfd: not supported" +$devfd: echo "devfd" +$ test_class = "gawk_ext" +$ skip_reason = "Not supported." +$ gosub junit_report_skip $ return $!!devfd: echo "devfd" $ gawk 1 /dev/fd/4 /dev/fd/5 4< /devfd.in4 5< devfd.in5 >_devfd.tmp $ cmp devfd.ok sys$disk:[]_devfd.tmp -$ if $status then rm _devfd.tmp; +$ if $status +$ then +$ rm _devfd.tmp; +$ gosub junit_report_pass +$ else +$ gosub junit_report_fail_diff +$ endif $ return $ -$devfd1: echo "devfd1: not supported" +$devfd1: echo "devfd1" +$ test_class = "gawk_ext" +$ skip_reason = "Not supported." +$ gosub junit_report_skip $ return $!!devfd1: echo "devfd1" $ gawk -f devfd1.awk 4< devfd.in1 5< devfd.in2 >_devfd1.tmp $ cmp devfd1.ok sys$disk:[]_devfd1.tmp -$ if $status then rm _devfd1.tmp; +$ if $status +$ then +$ rm _devfd1.tmp; +$ gosub junit_report_pass +$ else +$ gosub junit_report_fail_diff +$ endif $ return $ -$devfd2: echo "devfd2: not supported" +$devfd2: echo "devfd2" +$ test_class = "gawk_ext" +$ skip_reason = "Not supported." +$ gosub junit_report_skip $ return $!!devfd2: echo "devfd2" $! The program text is the '1' which will print each record. How compact can you get? $ gawk 1 /dev/fd/4 /dev/fd/5 4< /devfd.in1 5< devfd.in2 >_devfd2.tmp $ cmp devfd2.ok sys$disk:[]_devfd2.tmp -$ if $status then rm _devfd2.tmp; +$ if $status +$ then +$ rm _devfd2.tmp; +$ gosub junit_report_pass +$ else +$ gosub junit_report_fail_diff +$ endif $ return $ $charasbytes: @@ -1521,119 +3135,291 @@ $! we must try as best as possible using DUMP and SEARCH, instead of comparing $! to charasbytes.ok $! $ echo "''test'" +$ test_class = "gawk_ext" $ gawk -b -f 'test'.awk 'test'.in >_'test'.tmp +$ if f$search("sys$disk:[]_''test'.tmp;2") .nes. "" +$ then +$ delete sys$disk:[]_'test'.tmp;2 +$ endif $ pipe dump/byte/block=count:1 _charasbytes.tmp | - search sys$pipe /noout " 00 00 00 00 00 00 00 00 00 00 00 00 0A 5A 5A 5A" -$ if $severity .eq. 1 then rm _'test'.tmp;* +$ if $severity .eq. 1 +$ then +$ rm _'test'.tmp;* +$ gosub junit_report_pass +$ else +$ gosub junit_report_fail_diff +$ endif $ return $ $mixed1: echo "mixed1" +$ test_class = "basic" $ set noOn $ gawk -f /dev/null --source "BEGIN {return junk}" >_mixed1.tmp 2>&1 $ if .not. $status then call exit_code '$status' _mixed1.tmp $ set On $ cmp mixed1.ok sys$disk:[]_mixed1.tmp -$ if $status then rm _mixed1.tmp; +$ if $status +$ then +$ rm _mixed1.tmp; +$ gosub junit_report_pass +$ else +$ gosub junit_report_fail_diff +$ endif $ return $ $mtchi18n: echo "mtchi18n" +$ test_class = "basic" $ define/User GAWKLOCALE "ru_RU.UTF-8" $ gawk -f mtchi18n.awk mtchi18n.in >_mtchi18n.tmp +$ if f$search("sys$disk:[]_''test'.tmp;2") .nes. "" +$ then +$ delete sys$disk:[]_'test'.tmp;2 +$ endif $ cmp mtchi18n.ok sys$disk:[]_mtchi18n.tmp -$ if $status then rm _mtchi18n.tmp; +$ if $status +$ then +$ rm _mtchi18n.tmp; +$ gosub junit_report_pass +$ else +$ gosub junit_report_fail_diff +$ endif $ return $ $reint2: echo "reint2" +$ test_class = "gawk_ext" $ gosub define_gawklocale $ gawk --re-interval -f reint2.awk reint2.in >_reint2.tmp +$ if f$search("sys$disk:[]_''test'.tmp;2") .nes. "" +$ then +$ delete sys$disk:[]_'test'.tmp;2 +$ endif $ cmp reint2.ok sys$disk:[]_reint2.tmp -$ if $status then rm _reint2.tmp; +$ if $status +$ then +$ rm _reint2.tmp; +$ gosub junit_report_pass +$ else +$ gosub junit_report_fail_diff +$ endif $ return $ -$localenl: echo "localenl skipped" +$localenl: echo "localenl" +$ test_class = "unix_tests" +$ skip_reason = "Not supported." +$ gosub junit_report_skip $ return $!!localenl: echo "localenl" +$ ! localenl.com does not exist. $ @localenl.com /Output=_localenl.tmp ! sh ./localenl.sh >tmp. $ cmp localenl.ok sys$disk:[]_localenl.tmp -$ if $status then rm _localenl.tmp; +$ if $status +$ then +$ rm _localenl.tmp; +$ gosub junit_report_pass +$ else +$ gosub junit_report_fail_diff +$ endif $ return $ -$mbprintf1: echo "mbprintf1 skipped" -$ return -$!!mbprintf1: echo "mbprintf1" +$mbprintf1: echo "''test'" +$ test_class = "charset_tests" $! Makefile test exports this, but we don't want to impact user's environment -$ define/User GAWKLOCALE "en_US.UTF-8" +$! @GAWKLOCALE=en_US.UTF-8 ; export GAWKLOCALE ; \ +$! Only always have "utf8-20" +$ gosub define_gawklocale $ gawk -f mbprintf1.awk mbprintf1.in >_mbprintf1.tmp +$ if f$search("sys$disk:[]_''test'.tmp;2") .nes. "" +$ then +$ delete sys$disk:[]_'test'.tmp;2 +$ endif $ cmp mbprintf1.ok sys$disk:[]_mbprintf1.tmp -$ if $status then rm _mbprintf1.tmp; -$ return -$ -$mbprintf2: echo "mbprintf2" -$! Makefile test exports this, ... -$ define/User GAWKLOCALE "ja_JP.UTF-8" -$ gawk -f mbprintf2.awk >_mbprintf2.tmp -$ cmp mbprintf2.ok sys$disk:[]_mbprintf2.tmp -$ if $status then rm _mbprintf2.tmp; +$ if $status +$ then +$ rm _mbprintf1.tmp; +$ gosub junit_report_pass +$ else +$ gosub junit_report_fail_diff +$ endif $ return $ -$mbprintf3: echo "mbprintf3" +$mbprintf2: +$ echo "''test'" +$ test_class = "charset_tests" $! Makefile test exports this, ... -$ define/User GAWKLOCALE "en_US.UTF-8" -$ gawk -f mbprintf3.awk mbprintf3.in >_mbprintf2.tmp -$ cmp mbprintf3.ok sys$disk:[]_mbprintf2.tmp -$ if $status then rm _mbprintf2.tmp; +$! @GAWKLOCALE=ja_JP.UTF-8 ; export GAWKLOCALE ; \ +$! Only always have "utf8-20" +$! ja_jp_utf-8 is optional +$ gosub define_gawklocale_ja_jp +$ gawk -f 'test'.awk >_'test'.tmp +$ if f$search("sys$disk:[]_''test'.tmp;2") .nes. "" +$ then +$ delete sys$disk:[]_'test'.tmp;2 +$ endif +$ cmp 'test'.ok sys$disk:[]_'test'.tmp +$ if $status +$ then +$ rm _'test'.tmp; +$ gosub junit_report_pass +$ else +$ gosub junit_report_fail_diff +$ endif $ return $ -$mbfw1: echo "mbfw1 skipped" +$! +$mbprintf3: +$mbprintf4: +$ echo "''test'" +$ test_class = "charset_tests" +$! Makefile test exports this +$! @GAWKLOCALE=en_US.UTF-8 ; export GAWKLOCALE ; \ +$! Only always have "utf8-20" +$ gosub define_gawklocale +$ gawk -f 'test'.awk 'test'.in 2>&1 >_'test'.tmp +$ cmp 'test'.ok sys$disk:[]_'test'.tmp +$ if $status +$ then +$ rm _'test'.tmp; +$ gosub junit_report_pass +$ else +$ gosub junit_report_fail_diff +$ endif $ return -$!!mbfw1: echo "mbfw1" +$! +$! +$mbfw1: echo "mbfw1" +$ test_class = "charset_tests" $! Makefile test exports this, ... -$ define/User GAWKLOCALE "en_US.UTF-8" +$ !define/User GAWKLOCALE "en_US.UTF-8" +$ gosub define_gawklocale $ gawk -f mbfw1.awk mbfw1.in >_mbfw1.tmp +$ if f$search("sys$disk:[]_''test'.tmp;2") .nes. "" +$ then +$ delete sys$disk:[]_'test'.tmp;2 +$ endif $ cmp mbfw1.ok sys$disk:[]_mbfw1.tmp -$ if $status then rm _mbfw1.tmp; +$ if $status +$ then +$ rm _mbfw1.tmp; +$ gosub junit_report_pass +$ else +$ gosub junit_report_fail_diff +$ endif $ return $ $gsubtst6: echo "gsubtst6" +$ test_class = "basic" $ define/User GAWKLOCALE "C" $ gawk -f gsubtst6.awk >_gsubtst6.tmp +$ if f$search("sys$disk:[]_''test'.tmp;2") .nes. "" +$ then +$ delete sys$disk:[]_'test'.tmp;2 +$ endif $ cmp gsubtst6.ok sys$disk:[]_gsubtst6.tmp -$ if $status then rm _gsubtst6.tmp; +$ if $status +$ then +$ rm _gsubtst6.tmp; +$ gosub junit_report_pass +$ else +$ gosub junit_report_fail_diff +$ endif $ return $ -$mbstr1: echo "mbstr1" +$mbstr1: +$ echo "''test'" +$ test_class = "gawk_ext" $ gosub define_gawklocale $ AWKPATH_srcdir -$ gawk -f mbstr1.awk >_mbstr1.tmp -$ cmp mbstr1.ok sys$disk:[]_mbstr1.tmp -$ if $status then rm _mbstr1.tmp; +$ gawk -f 'test'.awk 2>&1 >_'test'.tmp +$ cmp 'test'.ok sys$disk:[]_'test'.tmp +$ if $status +$ then +$ rm _'test'.tmp; +$ gosub junit_report_pass +$ else +$ gosub junit_report_fail_diff +$ endif $ return -$ +$! +$mbstr2: +$ echo "''test'" +$ test_class = "gawk_ext" +$ gosub define_gawklocale +$ AWKPATH_srcdir +$ gawk -f 'test'.awk < 'test'.in 2>&1 >_'test'.tmp +$ cmp 'test'.ok sys$disk:[]_'test'.tmp +$ if $status +$ then +$ rm _'test'.tmp; +$ gosub junit_report_pass +$ else +$ gosub junit_report_fail_diff +$ endif +$ return +$! +$printhuge: +$ echo "''test'" +$ test_class = "gawk_ext" +$ gosub define_gawklocale +$ AWKPATH_srcdir +$ gawk -f 'test'.awk 2>&1 >_'test'.tmp +$ cmp 'test'.ok sys$disk:[]_'test'.tmp +$ if $status +$ then +$ rm _'test'.tmp; +$ gosub junit_report_pass +$ else +$ gosub junit_report_fail_diff +$ endif +$ return +$! $printfbad2: $printfbad3: +$printfbad4: $ echo "''test'" +$ test_class = "gawk_ext" $ set noOn $ gawk --lint -f 'test'.awk 'test'.in >_'test'.tmp 2>&1 +$ if .not. $status then call exit_code '$status' _'test'.tmp $ set On $ cmp 'test'.ok sys$disk:[]_'test'.tmp -$ if $status then rm _'test'.tmp; +$ if $status +$ then +$ rm _'test'.tmp; +$ gosub junit_report_pass +$ else +$ gosub junit_report_fail_diff +$ endif $ return $ -$fmtspcl: echo "fmtspcl: not supported" +$fmtspcl: echo "fmtspcl" +$ test_class = "hardware" +$ skip_reason = "Not supported." +$ gosub junit_report_skip $ return $!!fmtspcl: $! fmtspcl ought to work if gawk was compiled to use IEEE floating point $ if floatmode.lt.0 then gosub calc_floatmode $ if floatmode.lt.2 -$ then echo "fmtspcl: not supported" -$ else echo "fmtspcl" -$ gawk -f fmtspcl.awk >_fmtspcl.tmp 2>&1 -$ cmp fmtspcl.ok sys$disk:[]_fmtspcl.tmp -$ if $status then rm _fmtspcl.tmp; +$ then +$ echo "fmtspcl: not supported" +$ ! report skip ... +$ return +$ endif +$ echo "fmtspcl" +$ gawk -f fmtspcl.awk >_fmtspcl.tmp 2>&1 +$ cmp fmtspcl.ok sys$disk:[]_fmtspcl.tmp +$ if $status +$ then +$ rm _fmtspcl.tmp; +$ gosub junit_report_pass +$ else +$ gosub junit_report_fail_diff $ endif $ return $ $intformat: echo "intformat" +$ test_class = "hardware" $! note: we use the Alpha value for D_float; VAX value is slightly higher $! due to not losing precision by being processed via G_float $ huge_0 = "1.70141183460469213e+38" ! D_float @@ -1645,11 +3431,18 @@ $ set noOn $ gawk -v "HUGEVAL=''hugeval'" -f intformat.awk >_intformat.tmp 2>&1 $ set On $ cmp intformat.ok sys$disk:[]_intformat.tmp -$ if $status then rm _intformat.tmp; +$ if $status +$ then +$ rm _intformat.tmp; +$ gosub junit_report_pass +$ else +$ gosub junit_report_fail_diff +$ endif $ return $ $! ugh... BEGINFILE functionality works fine, but test is heavily Unix-centric $beginfile1: echo "beginfile1" +$ test_class = "gawk_ext" $ ! complications: "." is a filename, not the current directory $ ! (even "[]" is actually "[].", that same filename, but we can $ ! handle hacking it more easily); @@ -1657,25 +3450,84 @@ $ ! "no/such/file" yields syntax error rather than no such file $ ! when subdirectories no/ and no/such/ don't exist; $ ! vms test suite doesn't generate Makefile; $ ! "is a directory" and "no such file" aren't capitalized -$ ! gawk -f beginfile1.awk beginfile1.awk . ./no/such/file "Makefile" >_beginfile1.tmp 2>&1 -$ gawk -f beginfile1.awk beginfile1.awk [] ./no-such-file "Makefile.in" >_beginfile1.tmp 2>&1 -$ gawk -f - _beginfile1.tmp >_beginfile1.too +$ ! gawk -f beginfile1.awk beginfile1.awk . - +$ ! ./no/such/file "Makefile" >_beginfile1.tmp 2>&1 +$ ! And NFS on ODS2 encodes the case in the filename with +$ ! the $ character switching case. +$ makefile_in = "Makefile.in" +$ makefile_in_nfs_ods2 = "$M$akefile.in" +$ if f$search(makefile_in_nfs_ods2) .nes. "" +$ then +$ makefile_in = makefile_in_nfs_ods2 +$ endif +$ gawk -f beginfile1.awk beginfile1.awk [] - + ./no-such-file "''makefile_in'" >_beginfile1.tmp 2>&1 +$ gawk -f - _beginfile1.tmp >_beginfile1.too { if (gsub("\\[\\]",".")) gsub("no such file or directory","is a directory") - gsub("no-such-file","file"); gsub("Makefile.in","Makefile"); print } + gsub("no-such-file","file"); gsub("Makefile.in","Makefile"); + gsub("\\$M\\$akefile.in","Makefile"); print } +$ if f$search("sys$disk:[]_''test'.too;2") .nes. "" +$ then +$ delete sys$disk:[]_'test'.too;2 +$ endif $ rm _beginfile1.tmp; $ mv _beginfile1.too _beginfile1.tmp $ igncascmp beginfile1.ok sys$disk:[]_beginfile1.tmp -$ if $status then rm _beginfile1.tmp; +$ if $status +$ then +$ rm _beginfile1.tmp; +$ gosub junit_report_pass +$ else +$ gosub junit_report_fail_diff +$ endif $ return $ $dumpvars: echo "dumpvars" +$ test_class = "gawk_ext" $ gawk --dump-variables 1 _NL: 2>&1 $ mv awkvars.out _dumpvars.tmp +$ gawk "!/ENVIRON|PROCINFO/" _dumpvars.tmp >_dumpvars.tmp1 +$ if f$search("sys$disk:[]_''test'.tmp1;2") .nes. "" +$ then +$ delete sys$disk:[]_'test'.tmp1;2 +$ endif +$ rm sys$disk:[]_dumpvars.tmp;* +$ mv sys$disk:[]_dumpvars.tmp1 sys$disk:[]_dumpvars.tmp $ cmp dumpvars.ok sys$disk:[]_dumpvars.tmp -$ if $status then rm _dumpvars.tmp; +$ if $status +$ then +$ rm _dumpvars.tmp; +$ gosub junit_report_pass +$ else +$ gosub junit_report_fail_diff +$ endif $ return $ +$! +$profile0: +$ echo "''test'" +$ test_class = "gawk_ext" +$ gawk --profile=_ap-'test'.out -f 'test'.awk 'test'.in > _NL: +$ ! sed _profile3.tmp +$ gawk "NR>2" _ap-'test'.out > sys$disk:[]_awkprof.out +$ if f$search("sys$disk:[]_awkprof.out;2") .nes. "" +$ then +$ delete sys$disk:[]_awkprof.out;2 +$ endif +$ convert/fdl=nla0: _awkprof.out sys$disk:[]_'test'.tmp +$ convert/fdl=nla0: 'test'.ok _'test'.ok +$ cmp _'test'.ok sys$disk:[]_'test'.tmp +$ if $status +$ then +$ rm _'test'.tmp;*,_'test'.ok;*,_ap-'test'.out;,_awkprof.out; +$ gosub junit_report_pass +$ else +$ gosub junit_report_fail_diff +$ endif +$ return +$! $profile1: echo "''test'" +$ test_class = "gawk_ext" $ ! FIXME: for both gawk invocations which pipe output to SORT, $ ! two output files get created; the top version has real output $ ! but there's also an empty lower version. @@ -1694,6 +3546,7 @@ $ if $status then rm _'test'.tmp%;,awkprof.out; $ return $ $profile2: echo "''test'" +$ test_class = "gawk_ext" $ gawk --profile -v "sortcmd=SORT sys$input: sys$output:" - -f xref.awk dtdgport.awk > _NL: $ ! sed _profile2.tmp @@ -1702,21 +3555,65 @@ $ sumslp awkprof.out /update=sys$input: /output=_'test'.tmp / $ rm awkprof.out; $ cmp 'test'.ok sys$disk:[]_'test'.tmp -$ if $status then rm _'test'.tmp;* +$ if $status +$ then +$ rm _'test'.tmp;* +$ gosub junit_report_pass +$ else +$ gosub junit_report_fail_diff +$ endif $ return $ +$profile4: +$profile5: +$ echo "''test'" +$ test_class = "gawk_ext" +$ define/user GAWK_NO_PP_RUN 1 +$ gawk --profile -f 'test'.awk > _NL: +$ ! sed _profile4.tmp +$ gawk "NR>2" awkprof.out > sys$disk:[]_awkprof.out +$ if f$search("sys$disk:[]_awkprof.out;2") .nes. "" +$ then +$ delete sys$disk:[]_awkprof.out;2 +$ endif +$ convert/fdl=nla0: _awkprof.out sys$disk:[]_'test'.tmp +$ convert/fdl=nla0: 'test'.ok _'test'.ok +$ cmp _'test'.ok sys$disk:[]_'test'.tmp +$ if $status +$ then +$ rm _'test'.tmp;*,_'test'.ok;*,awkprof.out;,_awkprof.out; +$ gosub junit_report_pass +$ else +$ gosub junit_report_fail_diff +$ endif +$ return +$! +$profile6: +$profile7: +$profile8: $profile3: echo "''test'" +$ test_class = "gawk_ext" $ gawk --profile -f 'test'.awk > _NL: $ ! sed _profile3.tmp -$ sumslp awkprof.out /update=sys$input: /output=_'test'.tmp --1,2 -/ -$ rm awkprof.out; -$ cmp 'test'.ok sys$disk:[]_'test'.tmp -$ if $status then rm _'test'.tmp;* +$ gawk "NR>2" awkprof.out > sys$disk:[]_awkprof.out +$ if f$search("sys$disk:[]_awkprof.out;2") .nes. "" +$ then +$ delete sys$disk:[]_awkprof.out;2 +$ endif +$ convert/fdl=nla0: _awkprof.out sys$disk:[]_'test'.tmp +$ convert/fdl=nla0: 'test'.ok _'test'.ok +$ cmp _'test'.ok sys$disk:[]_'test'.tmp +$ if $status +$ then +$ rm _'test'.tmp;*,_'test'.ok;*,awkprof.out;,_awkprof.out; +$ gosub junit_report_pass +$ else +$ gosub junit_report_fail_diff +$ endif $ return $ $next: echo "next" +$ test_class = "gawk_ext" $ set noOn $ gawk "{next}" _NL: > _next.tmp 2>&1 $ gawk "function f() {next}; {f()}" _NL: >>_next.tmp 2>&1 @@ -1726,23 +3623,37 @@ $ gawk "function f() {next}; BEGINFILE{f()}" _NL: >>_next.tmp 2>&1 $ gawk "function f() {next}; {f()}; ENDFILE{f()}" _NL: >>_next.tmp 2>&1 $ set On $ cmp next.ok sys$disk:[]_next.tmp -$ if $status then rm _next.tmp; +$ if $status +$ then +$ rm _next.tmp; +$ gosub junit_report_pass +$ else +$ gosub junit_report_fail_diff +$ endif $ return $ $exit: echo "exit" +$ test_class = "gawk_ext" $ if .not.pipeok $ then echo "Without the PIPE command, ''test' can't be run." $ On warning then return $ pipe echo "PIPE command is available; running exit test" $ On warning then $ $ pipeok = 1 -$ else echo "PIPE command is available; running exit test" +$ else +$ echo "PIPE command is available; running exit test" $ endif $ set noOn $ call/Output=_exit.tmp do__exit $ set On $ cmp exit.ok sys$disk:[]_exit.tmp -$ if $status then rm _exit.tmp; +$ if $status +$ then +$ rm _exit.tmp; +$ gosub junit_report_pass +$ else +$ gosub junit_report_fail_diff +$ endif $ return $ $do__exit: subroutine @@ -1786,16 +3697,28 @@ $ echo "-- 11" $ endsubroutine !do__exit $ $vms_cmd: echo "vms_cmd" +$ test_class = "vms_tests" $ if f$search("vms_cmd.ok").eqs."" $ then create vms_cmd.ok World! $ endif $ gawk /Commands="BEGIN { print ""World!"" }" _NL: /Output=_vms_cmd.tmp +$ if f$search("sys$disk:[]_''test'.tmp;2") .nes. "" +$ then +$ delete sys$disk:[]_'test'.tmp;2 +$ endif $ cmp vms_cmd.ok sys$disk:[]_vms_cmd.tmp -$ if $status then rm _vms_cmd.tmp;,vms_cmd.ok;* +$ if $status +$ then +$ rm _vms_cmd.tmp;,vms_cmd.ok;* +$ gosub junit_report_pass +$ else +$ gosub junit_report_fail_diff +$ endif $ return $ $vms_io1: echo "vms_io1" +$ test_class = "vms_tests" $ if f$search("vms_io1.ok").eqs."" $ then create vms_io1.ok Hello @@ -1804,11 +3727,22 @@ $ ! define/User dbg$input sys$command: $ gawk -f - >_vms_io1.tmp # prior to 3.0.4, gawk crashed doing any redirection after closing stdin BEGIN { print "Hello" >"/dev/stdout" } +$ if f$search("sys$disk:[]_''test'.tmp;2") .nes. "" +$ then +$ delete sys$disk:[]_'test'.tmp;2 +$ endif $ cmp vms_io1.ok sys$disk:[]_vms_io1.tmp -$ if $status then rm _vms_io1.tmp;,vms_io1.ok;* +$ if $status +$ then +$ rm _vms_io1.tmp;,vms_io1.ok;* +$ gosub junit_report_pass +$ else +$ gosub junit_report_fail_diff +$ endif $ return $ $vms_io2: echo "vms_io2" +$ test_class = "vms_tests" $ if f$search("vms_io2.ok").eqs."" $ then create vms_io2.ok xyzzy @@ -1833,13 +3767,27 @@ $ set On $ cmp _NL: sys$disk:[]_vms_io2.tmp $ if $status then rm _vms_io2.tmp; $ cmp vms_io2.ok sys$disk:[]_vms_io2.vfc -$ if $status then rm _vms_io2.vfc;*,vms_io2.ok;* +$ if $status +$ then +$ rm _vms_io2.vfc;*,vms_io2.ok;* +$ gosub junit_report_pass +$ else +$ gosub junit_report_fail_diff +$ endif $ return $! $! $inplace1: -$ set process/parse=extended ! ODS-5 only +$inplace2: $ echo "''test'" +$ if arch_name .eqs. "VAX" +$ then +$ skip_reason = "ODS-5 required" +$ gosub junit_report_skip +$ return +$ endif +$ set process/parse=extended ! ODS-5 only +$ test_class = "shlib" $ filefunc_file = "[-]gawkapi.o" $ open/write awkfile _'test'.awk $ write awkfile "@load ""inplace""" @@ -1860,10 +3808,38 @@ $ set On $ cmp 'test'.1.ok sys$disk:[]_'test'.1.tmp $ if $status then rm _'test'.1.tmp;,_'test'.1; $ cmp 'test'.2.ok sys$disk:[]_'test'.2.tmp -$ if $status then rm _'test'.2.tmp;,_'test'.2;,_'test'.awk; +$ if $status +$ then +$ rm _'test'.2.tmp;,_'test'.2;,_'test'.awk; +$ gosub junit_report_pass +$ else +$ gosub junit_report_fail_diff +$ endif $ return $! $filefuncs: +$ echo "''test'" +$ test_class = "shlib" +$ filefunc_file = "[-]gawkapi.o" +$ open/write gapi 'filefunc_file' +$ close gapi +$ set noOn +$ AWKLIBPATH_dir +$ gawk -v builddir="sys$disk:[-]" - + -f 'test'.awk 'test'.in >_'test'.tmp 2>&1 +$ if .not. $status then call exit_code '$status' _'test'.tmp +$ set On +$ cmp 'test'.ok sys$disk:[]_'test'.tmp +$ if $status +$ then +$ rm _'test'.tmp; +$ gosub junit_report_pass +$ else +$ gosub junit_report_fail_diff +$ endif +$ if f$search(filefunc_file) .nes. "" then rm 'filefunc_file';* +$ return +$! $fnmatch: $functab4: $ordchr: @@ -1871,6 +3847,7 @@ $revout: $revtwoway: $time: $ echo "''test'" +$ test_class = "shlib" $ filefunc_file = "[-]gawkapi.o" $ open/write gapi 'filefunc_file' $ close gapi @@ -1880,12 +3857,42 @@ $ gawk -f 'test'.awk 'test'.in >_'test'.tmp 2>&1 $ if .not. $status then call exit_code '$status' _'test'.tmp $ set On $ cmp 'test'.ok sys$disk:[]_'test'.tmp -$ if $status then rm _'test'.tmp; +$ if $status +$ then +$ rm _'test'.tmp; +$ gosub junit_report_pass +$ else +$ gosub junit_report_fail_diff +$ endif +$ if f$search(filefunc_file) .nes. "" then rm 'filefunc_file';* +$ return +$! +$ordchr2: +$ echo "''test'" +$ test_class = "shlib" +$ filefunc_file = "[-]gawkapi.o" +$ open/write gapi 'filefunc_file' +$ close gapi +$ set noOn +$ AWKLIBPATH_dir +$ gawk --load ordchr "BEGIN {print chr(ord(""z""))}" > _'test'.tmp 2>&1 +$ if .not. $status then call exit_code '$status' _'test'.tmp +$ set On +$ cmp 'test'.ok sys$disk:[]_'test'.tmp +$ if $status +$ then +$ rm _'test'.tmp; +$ gosub junit_report_pass +$ else +$ gosub junit_report_fail_diff +$ endif $ if f$search(filefunc_file) .nes. "" then rm 'filefunc_file';* $ return +$ $! $rwarray: $ echo "''test'" +$ test_class = "shlib" $ set noOn $ AWKLIBPATH_dir $ gawk -f 'test'.awk 'test'.in >_'test'.tmp 2>&1 @@ -1899,12 +3906,19 @@ $ write tout "old and new are equal - GOOD" $ close tout $ endif $ cmp 'test'.ok sys$disk:[]_'test'.tmp -$ if $status then rm _'test'.tmp;,orig.bin;,orig.out;,new.out; +$ if $status +$ then +$ rm _'test'.tmp;,orig.bin;,orig.out;,new.out; +$ gosub junit_report_pass +$ else +$ gosub junit_report_fail_diff +$ endif $ return $! $readdir: $fts: $ echo "''test'" +$ test_class = "shlib" $ set noOn $ AWKLIBPATH_dir $ gawk -f 'test'.awk >_'test'.tmp 2>&1 @@ -1912,16 +3926,80 @@ $ if .not. $status $ then $ call exit_code '$status' _'test'.tmp $ write sys$output _'test'.tmp +$ gosub junit_report_fail_diff $ else +$ gosub junit_report_pass $ if f$search("_''test'.tmp") .nes. "" then rm _'test'.tmp;* $ if f$search("_''test'.") .nes. "" then rm _'test'.;* $ endif $ set On $ return +$! +$readfile: +$ echo "''test'" +$ test_class = "shlib" +$ if f$search("sys$disk:[-]readfile.exe") .eqs. "" +$ then +$ echo "Readfile extension not currently building on VMS." +$ skip_reason = "Readfile not building on VMS" +$ gosub junit_report_skip +$ return +$ else +$ echo "Surprise! Found the readfile extension so attempting test." +$ endif +$ set noOn +$ AWKLIBPATH_dir +$ gawk -l readfile - + "BEGIN {printf-f ""%s"", readfile("Makefile.in")}" >_'test'.tmp 2>&1 +$ if .not. $status then call exit_code '$status' _'test'.tmp +$ cmp Makefile.in sys$disk:[]_'test'.tmp +$ if $status +$ then +$ rm _'test'.tmp; +$ gosub junit_report_pass +$ else +$ gosub junit_report_fail_diff +$ copy Makefile.in 'test'.ok +$ endif +$ set On +$ return +$! +$readfile2: +$ echo "''test'" +$ test_class = "shlib" +$ if f$search("sys$disk:[-]readfile.exe") .eqs. "" +$ then +$ echo "Readfile extension not currently building on VMS." +$ skip_reason = "Readfile not building on VMS" +$ gosub junit_report_skip +$ return +$ else +$ echo "Surprise! Found the readfile extension so attempting test." +$ endif +$ set noOn +$ AWKLIBPATH_dir +$ gawk -f 'test'.awk 'test'.awk >_'test'.tmp 2>&1 +$ if .not. $status then call exit_code '$status' _'test'.tmp +$ cmp 'test'.ok sys$disk:[]_'test'.tmp +$ if $status +$ then +$ rm _'test'.tmp; +$ gosub junit_report_pass +$ else +$ gosub junit_report_fail_diff +$ endif +$ set On +$ return $ $clean: -$ if f$search("_*.*") .nes."" then rm _*.tmp;* +$ if f$search("_*.tmp") .nes."" then rm _*.tmp;* +$ if f$search("_*.out") .nes."" then rm _*.out;* +$ if f$search("_*.ok") .nes."" then rm _*.ok;* +$ if f$search("_*.1") .nes."" then rm _*.1;* +$ if f$search("_*.2") .nes."" then rm _*.2;* +$ if f$search("_*.awk") .nes."" then rm _*.awk;* $ if f$search("_*.too") .nes."" then rm _*.too;* +$ if f$search("awkprofile.out") .nes."" then rm awkprofile.out;* $ if f$search("out%.") .nes."" then rm out%.;* $ if f$search("strftime.in").nes."" then rm strftime.in;* $ if f$search("strftime.ok").nes."" then rm strftime.ok;* @@ -1952,15 +4030,22 @@ $ $! assign temporary value to logical name GAWKLOCALE unless it already has one $! [ -z "$GAWKLOCALE" ] && GAWKLOCALE=en_US.UTF-8 $define_gawklocale: -$ ! gawk uses the C run-time libary's getenv() function to look up -$ ! GAWKLOCALE, so a symbol provides another way to supply the value; -$ ! we don't want to override logical or symbol if either is present -$ if f$trnlnm("GAWKLOCALE").eqs."" +$ if f$search("sys$i18n_locale:utf8-50.locale") .nes. "" $ then -$ if f$type(gawklocale).nes."STRING" .or. "''gawklocale'".eqs."" -$ then -$ define/User GAWKLOCALE "en_US.UTF-8" -$ endif +$ define/user LC_ALL "utf8-50" +$ else +$ define/user LC_ALL "utf8-20" +$ endif +$ return +$! +$define_gawklocale_ja_jp: +$! @GAWKLOCALE=ja_JP.UTF-8 ; export GAWKLOCALE ; \ +$ if f$search("sys$i18n_locale:ja_jp_utf-8.locale") .nes. "" +$ then +$ define/user LC_ALL "ja_JP_utf-8" +$ else +$ write sys$output "Substituting UTF8-20 for ja_JP.UTF-8" +$ define/user LC_ALL "utf8-20" $ endif $ return $ diff -urN gawk-4.1.3/extension/Makefile.am gawk-4.1.4/extension/Makefile.am --- gawk-4.1.3/extension/Makefile.am 2016-08-25 08:36:06.141668845 +0300 +++ gawk-4.1.4/extension/Makefile.am 2016-08-25 08:32:47.000000000 +0300 @@ -120,6 +120,7 @@ ChangeLog.0 \ ext_custom.h \ fts.3 \ + m4 \ README.fts \ rwarray0.c diff -urN gawk-4.1.3/extension/Makefile.in gawk-4.1.4/extension/Makefile.in --- gawk-4.1.3/extension/Makefile.in 2016-08-25 08:36:06.141668845 +0300 +++ gawk-4.1.4/extension/Makefile.in 2016-08-25 08:32:51.000000000 +0300 @@ -566,6 +566,7 @@ ChangeLog.0 \ ext_custom.h \ fts.3 \ + m4 \ README.fts \ rwarray0.c diff -urN gawk-4.1.3/extension/m4/lib-ld.m4 gawk-4.1.4/extension/m4/lib-ld.m4 --- gawk-4.1.3/extension/m4/lib-ld.m4 1970-01-01 02:00:00.000000000 +0200 +++ gawk-4.1.4/extension/m4/lib-ld.m4 2015-04-05 11:13:50.000000000 +0300 @@ -0,0 +1,110 @@ +# lib-ld.m4 serial 4 (gettext-0.18) +dnl Copyright (C) 1996-2003, 2009-2010 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 Subroutines of libtool.m4, +dnl with replacements s/AC_/AC_LIB/ and s/lt_cv/acl_cv/ to avoid collision +dnl with libtool.m4. + +dnl From libtool-1.4. Sets the variable with_gnu_ld to yes or no. +AC_DEFUN([AC_LIB_PROG_LD_GNU], +[AC_CACHE_CHECK([if the linker ($LD) is GNU ld], [acl_cv_prog_gnu_ld], +[# I'd rather use --version here, but apparently some GNU ld's only accept -v. +case `$LD -v 2>&1 conf$$.sh + echo "exit 0" >>conf$$.sh + chmod +x conf$$.sh + if (PATH="/nonexistent;."; conf$$.sh) >/dev/null 2>&1; then + PATH_SEPARATOR=';' + else + PATH_SEPARATOR=: + fi + rm -f conf$$.sh +fi +ac_prog=ld +if test "$GCC" = yes; then + # Check if gcc -print-prog-name=ld gives a path. + AC_MSG_CHECKING([for ld used by GCC]) + case $host in + *-*-mingw*) + # gcc leaves a trailing carriage return which upsets mingw + ac_prog=`($CC -print-prog-name=ld) 2>&5 | tr -d '\015'` ;; + *) + ac_prog=`($CC -print-prog-name=ld) 2>&5` ;; + esac + case $ac_prog in + # Accept absolute paths. + [[\\/]* | [A-Za-z]:[\\/]*)] + [re_direlt='/[^/][^/]*/\.\./'] + # Canonicalize the path of ld + ac_prog=`echo $ac_prog| sed 's%\\\\%/%g'` + while echo $ac_prog | grep "$re_direlt" > /dev/null 2>&1; do + ac_prog=`echo $ac_prog| sed "s%$re_direlt%/%"` + done + test -z "$LD" && LD="$ac_prog" + ;; + "") + # If it fails, then pretend we aren't using GCC. + ac_prog=ld + ;; + *) + # If it is relative, then search for the first ld in PATH. + with_gnu_ld=unknown + ;; + esac +elif test "$with_gnu_ld" = yes; then + AC_MSG_CHECKING([for GNU ld]) +else + AC_MSG_CHECKING([for non-GNU ld]) +fi +AC_CACHE_VAL([acl_cv_path_LD], +[if test -z "$LD"; then + IFS="${IFS= }"; ac_save_ifs="$IFS"; IFS="${IFS}${PATH_SEPARATOR-:}" + for ac_dir in $PATH; do + test -z "$ac_dir" && ac_dir=. + if test -f "$ac_dir/$ac_prog" || test -f "$ac_dir/$ac_prog$ac_exeext"; then + acl_cv_path_LD="$ac_dir/$ac_prog" + # Check to see if the program is GNU ld. I'd rather use --version, + # but apparently some GNU ld's only accept -v. + # Break only if it was the GNU/non-GNU ld that we prefer. + case `"$acl_cv_path_LD" -v 2>&1 < /dev/null` in + *GNU* | *'with BFD'*) + test "$with_gnu_ld" != no && break ;; + *) + test "$with_gnu_ld" != yes && break ;; + esac + fi + done + IFS="$ac_save_ifs" +else + acl_cv_path_LD="$LD" # Let the user override the test with a path. +fi]) +LD="$acl_cv_path_LD" +if test -n "$LD"; then + AC_MSG_RESULT([$LD]) +else + AC_MSG_RESULT([no]) +fi +test -z "$LD" && AC_MSG_ERROR([no acceptable ld found in \$PATH]) +AC_LIB_PROG_LD_GNU +]) diff -urN gawk-4.1.3/extension/m4/lib-link.m4 gawk-4.1.4/extension/m4/lib-link.m4 --- gawk-4.1.3/extension/m4/lib-link.m4 1970-01-01 02:00:00.000000000 +0200 +++ gawk-4.1.4/extension/m4/lib-link.m4 2015-04-05 11:13:50.000000000 +0300 @@ -0,0 +1,774 @@ +# lib-link.m4 serial 21 (gettext-0.18) +dnl Copyright (C) 2001-2010 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.54]) + +dnl AC_LIB_LINKFLAGS(name [, dependencies]) searches for libname and +dnl the libraries corresponding to explicit and implicit dependencies. +dnl Sets and AC_SUBSTs the LIB${NAME} and LTLIB${NAME} variables and +dnl augments the CPPFLAGS variable. +dnl Sets and AC_SUBSTs the LIB${NAME}_PREFIX variable to nonempty if libname +dnl was found in ${LIB${NAME}_PREFIX}/$acl_libdirstem. +AC_DEFUN([AC_LIB_LINKFLAGS], +[ + AC_REQUIRE([AC_LIB_PREPARE_PREFIX]) + AC_REQUIRE([AC_LIB_RPATH]) + pushdef([Name],[translit([$1],[./-], [___])]) + pushdef([NAME],[translit([$1],[abcdefghijklmnopqrstuvwxyz./-], + [ABCDEFGHIJKLMNOPQRSTUVWXYZ___])]) + AC_CACHE_CHECK([how to link with lib[]$1], [ac_cv_lib[]Name[]_libs], [ + AC_LIB_LINKFLAGS_BODY([$1], [$2]) + ac_cv_lib[]Name[]_libs="$LIB[]NAME" + ac_cv_lib[]Name[]_ltlibs="$LTLIB[]NAME" + ac_cv_lib[]Name[]_cppflags="$INC[]NAME" + ac_cv_lib[]Name[]_prefix="$LIB[]NAME[]_PREFIX" + ]) + LIB[]NAME="$ac_cv_lib[]Name[]_libs" + LTLIB[]NAME="$ac_cv_lib[]Name[]_ltlibs" + INC[]NAME="$ac_cv_lib[]Name[]_cppflags" + LIB[]NAME[]_PREFIX="$ac_cv_lib[]Name[]_prefix" + AC_LIB_APPENDTOVAR([CPPFLAGS], [$INC]NAME) + AC_SUBST([LIB]NAME) + AC_SUBST([LTLIB]NAME) + AC_SUBST([LIB]NAME[_PREFIX]) + dnl Also set HAVE_LIB[]NAME so that AC_LIB_HAVE_LINKFLAGS can reuse the + dnl results of this search when this library appears as a dependency. + HAVE_LIB[]NAME=yes + popdef([NAME]) + popdef([Name]) +]) + +dnl AC_LIB_HAVE_LINKFLAGS(name, dependencies, includes, testcode, [missing-message]) +dnl searches for libname and the libraries corresponding to explicit and +dnl implicit dependencies, together with the specified include files and +dnl the ability to compile and link the specified testcode. The missing-message +dnl defaults to 'no' and may contain additional hints for the user. +dnl If found, it sets and AC_SUBSTs HAVE_LIB${NAME}=yes and the LIB${NAME} +dnl and LTLIB${NAME} variables and augments the CPPFLAGS variable, and +dnl #defines HAVE_LIB${NAME} to 1. Otherwise, it sets and AC_SUBSTs +dnl HAVE_LIB${NAME}=no and LIB${NAME} and LTLIB${NAME} to empty. +dnl Sets and AC_SUBSTs the LIB${NAME}_PREFIX variable to nonempty if libname +dnl was found in ${LIB${NAME}_PREFIX}/$acl_libdirstem. +AC_DEFUN([AC_LIB_HAVE_LINKFLAGS], +[ + AC_REQUIRE([AC_LIB_PREPARE_PREFIX]) + AC_REQUIRE([AC_LIB_RPATH]) + pushdef([Name],[translit([$1],[./-], [___])]) + pushdef([NAME],[translit([$1],[abcdefghijklmnopqrstuvwxyz./-], + [ABCDEFGHIJKLMNOPQRSTUVWXYZ___])]) + + dnl Search for lib[]Name and define LIB[]NAME, LTLIB[]NAME and INC[]NAME + dnl accordingly. + AC_LIB_LINKFLAGS_BODY([$1], [$2]) + + dnl Add $INC[]NAME to CPPFLAGS before performing the following checks, + dnl because if the user has installed lib[]Name and not disabled its use + dnl via --without-lib[]Name-prefix, he wants to use it. + ac_save_CPPFLAGS="$CPPFLAGS" + AC_LIB_APPENDTOVAR([CPPFLAGS], [$INC]NAME) + + AC_CACHE_CHECK([for lib[]$1], [ac_cv_lib[]Name], [ + ac_save_LIBS="$LIBS" + dnl If $LIB[]NAME contains some -l options, add it to the end of LIBS, + dnl because these -l options might require -L options that are present in + dnl LIBS. -l options benefit only from the -L options listed before it. + dnl Otherwise, add it to the front of LIBS, because it may be a static + dnl library that depends on another static library that is present in LIBS. + dnl Static libraries benefit only from the static libraries listed after + dnl it. + case " $LIB[]NAME" in + *" -l"*) LIBS="$LIBS $LIB[]NAME" ;; + *) LIBS="$LIB[]NAME $LIBS" ;; + esac + AC_TRY_LINK([$3], [$4], + [ac_cv_lib[]Name=yes], + [ac_cv_lib[]Name='m4_if([$5], [], [no], [[$5]])']) + LIBS="$ac_save_LIBS" + ]) + if test "$ac_cv_lib[]Name" = yes; then + HAVE_LIB[]NAME=yes + AC_DEFINE([HAVE_LIB]NAME, 1, [Define if you have the lib][$1 library.]) + AC_MSG_CHECKING([how to link with lib[]$1]) + AC_MSG_RESULT([$LIB[]NAME]) + else + HAVE_LIB[]NAME=no + dnl If $LIB[]NAME didn't lead to a usable library, we don't need + dnl $INC[]NAME either. + CPPFLAGS="$ac_save_CPPFLAGS" + LIB[]NAME= + LTLIB[]NAME= + LIB[]NAME[]_PREFIX= + fi + AC_SUBST([HAVE_LIB]NAME) + AC_SUBST([LIB]NAME) + AC_SUBST([LTLIB]NAME) + AC_SUBST([LIB]NAME[_PREFIX]) + popdef([NAME]) + popdef([Name]) +]) + +dnl Determine the platform dependent parameters needed to use rpath: +dnl acl_libext, +dnl acl_shlibext, +dnl acl_hardcode_libdir_flag_spec, +dnl acl_hardcode_libdir_separator, +dnl acl_hardcode_direct, +dnl acl_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 + AC_REQUIRE([AC_CONFIG_AUX_DIR_DEFAULT]) dnl we use $ac_aux_dir + AC_CACHE_CHECK([for shared library run path origin], [acl_cv_rpath], [ + CC="$CC" GCC="$GCC" LDFLAGS="$LDFLAGS" LD="$LD" with_gnu_ld="$with_gnu_ld" \ + ${CONFIG_SHELL-/bin/sh} "$ac_aux_dir/config.rpath" "$host" > conftest.sh + . ./conftest.sh + rm -f ./conftest.sh + acl_cv_rpath=done + ]) + wl="$acl_cv_wl" + acl_libext="$acl_cv_libext" + acl_shlibext="$acl_cv_shlibext" + acl_libname_spec="$acl_cv_libname_spec" + acl_library_names_spec="$acl_cv_library_names_spec" + acl_hardcode_libdir_flag_spec="$acl_cv_hardcode_libdir_flag_spec" + acl_hardcode_libdir_separator="$acl_cv_hardcode_libdir_separator" + acl_hardcode_direct="$acl_cv_hardcode_direct" + acl_hardcode_minus_L="$acl_cv_hardcode_minus_L" + dnl Determine whether the user wants rpath handling at all. + AC_ARG_ENABLE([rpath], + [ --disable-rpath do not hardcode runtime library paths], + :, enable_rpath=yes) +]) + +dnl AC_LIB_FROMPACKAGE(name, package) +dnl declares that libname comes from the given package. The configure file +dnl will then not have a --with-libname-prefix option but a +dnl --with-package-prefix option. Several libraries can come from the same +dnl package. This declaration must occur before an AC_LIB_LINKFLAGS or similar +dnl macro call that searches for libname. +AC_DEFUN([AC_LIB_FROMPACKAGE], +[ + pushdef([NAME],[translit([$1],[abcdefghijklmnopqrstuvwxyz./-], + [ABCDEFGHIJKLMNOPQRSTUVWXYZ___])]) + define([acl_frompackage_]NAME, [$2]) + popdef([NAME]) + pushdef([PACK],[$2]) + pushdef([PACKUP],[translit(PACK,[abcdefghijklmnopqrstuvwxyz./-], + [ABCDEFGHIJKLMNOPQRSTUVWXYZ___])]) + define([acl_libsinpackage_]PACKUP, + m4_ifdef([acl_libsinpackage_]PACKUP, [acl_libsinpackage_]PACKUP[[, ]],)[lib$1]) + popdef([PACKUP]) + popdef([PACK]) +]) + +dnl AC_LIB_LINKFLAGS_BODY(name [, dependencies]) searches for libname and +dnl the libraries corresponding to explicit and implicit dependencies. +dnl Sets the LIB${NAME}, LTLIB${NAME} and INC${NAME} variables. +dnl Also, sets the LIB${NAME}_PREFIX variable to nonempty if libname was found +dnl in ${LIB${NAME}_PREFIX}/$acl_libdirstem. +AC_DEFUN([AC_LIB_LINKFLAGS_BODY], +[ + AC_REQUIRE([AC_LIB_PREPARE_MULTILIB]) + pushdef([NAME],[translit([$1],[abcdefghijklmnopqrstuvwxyz./-], + [ABCDEFGHIJKLMNOPQRSTUVWXYZ___])]) + pushdef([PACK],[m4_ifdef([acl_frompackage_]NAME, [acl_frompackage_]NAME, lib[$1])]) + pushdef([PACKUP],[translit(PACK,[abcdefghijklmnopqrstuvwxyz./-], + [ABCDEFGHIJKLMNOPQRSTUVWXYZ___])]) + pushdef([PACKLIBS],[m4_ifdef([acl_frompackage_]NAME, [acl_libsinpackage_]PACKUP, lib[$1])]) + dnl Autoconf >= 2.61 supports dots in --with options. + pushdef([P_A_C_K],[m4_if(m4_version_compare(m4_defn([m4_PACKAGE_VERSION]),[2.61]),[-1],[translit(PACK,[.],[_])],PACK)]) + dnl By default, look in $includedir and $libdir. + use_additional=yes + AC_LIB_WITH_FINAL_PREFIX([ + eval additional_includedir=\"$includedir\" + eval additional_libdir=\"$libdir\" + ]) + AC_ARG_WITH(P_A_C_K[-prefix], +[[ --with-]]P_A_C_K[[-prefix[=DIR] search for ]PACKLIBS[ in DIR/include and DIR/lib + --without-]]P_A_C_K[[-prefix don't search for ]PACKLIBS[ in includedir and libdir]], +[ + if test "X$withval" = "Xno"; then + use_additional=no + else + if test "X$withval" = "X"; then + AC_LIB_WITH_FINAL_PREFIX([ + eval additional_includedir=\"$includedir\" + eval additional_libdir=\"$libdir\" + ]) + else + additional_includedir="$withval/include" + additional_libdir="$withval/$acl_libdirstem" + if test "$acl_libdirstem2" != "$acl_libdirstem" \ + && ! test -d "$withval/$acl_libdirstem"; then + additional_libdir="$withval/$acl_libdirstem2" + fi + fi + fi +]) + dnl Search the library and its dependencies in $additional_libdir and + dnl $LDFLAGS. Using breadth-first-seach. + LIB[]NAME= + LTLIB[]NAME= + INC[]NAME= + LIB[]NAME[]_PREFIX= + dnl HAVE_LIB${NAME} is an indicator that LIB${NAME}, LTLIB${NAME} have been + dnl computed. So it has to be reset here. + HAVE_LIB[]NAME= + rpathdirs= + ltrpathdirs= + names_already_handled= + names_next_round='$1 $2' + while test -n "$names_next_round"; do + names_this_round="$names_next_round" + names_next_round= + for name in $names_this_round; do + already_handled= + for n in $names_already_handled; do + if test "$n" = "$name"; then + already_handled=yes + break + fi + done + if test -z "$already_handled"; then + names_already_handled="$names_already_handled $name" + dnl See if it was already located by an earlier AC_LIB_LINKFLAGS + dnl or AC_LIB_HAVE_LINKFLAGS call. + uppername=`echo "$name" | sed -e 'y|abcdefghijklmnopqrstuvwxyz./-|ABCDEFGHIJKLMNOPQRSTUVWXYZ___|'` + eval value=\"\$HAVE_LIB$uppername\" + if test -n "$value"; then + if test "$value" = yes; then + eval value=\"\$LIB$uppername\" + test -z "$value" || LIB[]NAME="${LIB[]NAME}${LIB[]NAME:+ }$value" + eval value=\"\$LTLIB$uppername\" + test -z "$value" || LTLIB[]NAME="${LTLIB[]NAME}${LTLIB[]NAME:+ }$value" + else + dnl An earlier call to AC_LIB_HAVE_LINKFLAGS has determined + dnl that this library doesn't exist. So just drop it. + : + fi + else + dnl Search the library lib$name in $additional_libdir and $LDFLAGS + dnl and the already constructed $LIBNAME/$LTLIBNAME. + found_dir= + found_la= + found_so= + found_a= + eval libname=\"$acl_libname_spec\" # typically: libname=lib$name + if test -n "$acl_shlibext"; then + shrext=".$acl_shlibext" # typically: shrext=.so + else + shrext= + fi + if test $use_additional = yes; then + dir="$additional_libdir" + dnl The same code as in the loop below: + dnl First look for a shared library. + if test -n "$acl_shlibext"; then + if test -f "$dir/$libname$shrext"; then + found_dir="$dir" + found_so="$dir/$libname$shrext" + else + if test "$acl_library_names_spec" = '$libname$shrext$versuffix'; then + ver=`(cd "$dir" && \ + for f in "$libname$shrext".*; do echo "$f"; done \ + | sed -e "s,^$libname$shrext\\\\.,," \ + | sort -t '.' -n -r -k1,1 -k2,2 -k3,3 -k4,4 -k5,5 \ + | sed 1q ) 2>/dev/null` + if test -n "$ver" && test -f "$dir/$libname$shrext.$ver"; then + found_dir="$dir" + found_so="$dir/$libname$shrext.$ver" + fi + else + eval library_names=\"$acl_library_names_spec\" + for f in $library_names; do + if test -f "$dir/$f"; then + found_dir="$dir" + found_so="$dir/$f" + break + fi + done + fi + fi + fi + dnl Then look for a static library. + if test "X$found_dir" = "X"; then + if test -f "$dir/$libname.$acl_libext"; then + found_dir="$dir" + found_a="$dir/$libname.$acl_libext" + fi + fi + if test "X$found_dir" != "X"; then + if test -f "$dir/$libname.la"; then + found_la="$dir/$libname.la" + fi + fi + fi + if test "X$found_dir" = "X"; then + for x in $LDFLAGS $LTLIB[]NAME; do + AC_LIB_WITH_FINAL_PREFIX([eval x=\"$x\"]) + case "$x" in + -L*) + dir=`echo "X$x" | sed -e 's/^X-L//'` + dnl First look for a shared library. + if test -n "$acl_shlibext"; then + if test -f "$dir/$libname$shrext"; then + found_dir="$dir" + found_so="$dir/$libname$shrext" + else + if test "$acl_library_names_spec" = '$libname$shrext$versuffix'; then + ver=`(cd "$dir" && \ + for f in "$libname$shrext".*; do echo "$f"; done \ + | sed -e "s,^$libname$shrext\\\\.,," \ + | sort -t '.' -n -r -k1,1 -k2,2 -k3,3 -k4,4 -k5,5 \ + | sed 1q ) 2>/dev/null` + if test -n "$ver" && test -f "$dir/$libname$shrext.$ver"; then + found_dir="$dir" + found_so="$dir/$libname$shrext.$ver" + fi + else + eval library_names=\"$acl_library_names_spec\" + for f in $library_names; do + if test -f "$dir/$f"; then + found_dir="$dir" + found_so="$dir/$f" + break + fi + done + fi + fi + fi + dnl Then look for a static library. + if test "X$found_dir" = "X"; then + if test -f "$dir/$libname.$acl_libext"; then + found_dir="$dir" + found_a="$dir/$libname.$acl_libext" + fi + fi + if test "X$found_dir" != "X"; then + if test -f "$dir/$libname.la"; then + found_la="$dir/$libname.la" + fi + fi + ;; + esac + if test "X$found_dir" != "X"; then + break + fi + done + fi + if test "X$found_dir" != "X"; then + dnl Found the library. + LTLIB[]NAME="${LTLIB[]NAME}${LTLIB[]NAME:+ }-L$found_dir -l$name" + if test "X$found_so" != "X"; then + dnl Linking with a shared library. We attempt to hardcode its + dnl directory into the executable's runpath, unless it's the + dnl standard /usr/lib. + if test "$enable_rpath" = no \ + || test "X$found_dir" = "X/usr/$acl_libdirstem" \ + || test "X$found_dir" = "X/usr/$acl_libdirstem2"; then + dnl No hardcoding is needed. + LIB[]NAME="${LIB[]NAME}${LIB[]NAME:+ }$found_so" + else + dnl Use an explicit option to hardcode DIR into the resulting + dnl binary. + dnl Potentially add DIR to ltrpathdirs. + dnl The ltrpathdirs will be appended to $LTLIBNAME at the end. + haveit= + for x in $ltrpathdirs; do + if test "X$x" = "X$found_dir"; then + haveit=yes + break + fi + done + if test -z "$haveit"; then + ltrpathdirs="$ltrpathdirs $found_dir" + fi + dnl The hardcoding into $LIBNAME is system dependent. + if test "$acl_hardcode_direct" = yes; then + dnl Using DIR/libNAME.so during linking hardcodes DIR into the + dnl resulting binary. + LIB[]NAME="${LIB[]NAME}${LIB[]NAME:+ }$found_so" + else + if test -n "$acl_hardcode_libdir_flag_spec" && test "$acl_hardcode_minus_L" = no; then + dnl Use an explicit option to hardcode DIR into the resulting + dnl binary. + LIB[]NAME="${LIB[]NAME}${LIB[]NAME:+ }$found_so" + dnl Potentially add DIR to rpathdirs. + dnl The rpathdirs will be appended to $LIBNAME at the end. + haveit= + for x in $rpathdirs; do + if test "X$x" = "X$found_dir"; then + haveit=yes + break + fi + done + if test -z "$haveit"; then + rpathdirs="$rpathdirs $found_dir" + fi + else + dnl Rely on "-L$found_dir". + dnl But don't add it if it's already contained in the LDFLAGS + dnl or the already constructed $LIBNAME + haveit= + for x in $LDFLAGS $LIB[]NAME; do + AC_LIB_WITH_FINAL_PREFIX([eval x=\"$x\"]) + if test "X$x" = "X-L$found_dir"; then + haveit=yes + break + fi + done + if test -z "$haveit"; then + LIB[]NAME="${LIB[]NAME}${LIB[]NAME:+ }-L$found_dir" + fi + if test "$acl_hardcode_minus_L" != no; then + dnl FIXME: Not sure whether we should use + dnl "-L$found_dir -l$name" or "-L$found_dir $found_so" + dnl here. + LIB[]NAME="${LIB[]NAME}${LIB[]NAME:+ }$found_so" + else + dnl We cannot use $acl_hardcode_runpath_var and LD_RUN_PATH + dnl here, because this doesn't fit in flags passed to the + dnl compiler. So give up. No hardcoding. This affects only + dnl very old systems. + dnl FIXME: Not sure whether we should use + dnl "-L$found_dir -l$name" or "-L$found_dir $found_so" + dnl here. + LIB[]NAME="${LIB[]NAME}${LIB[]NAME:+ }-l$name" + fi + fi + fi + fi + else + if test "X$found_a" != "X"; then + dnl Linking with a static library. + LIB[]NAME="${LIB[]NAME}${LIB[]NAME:+ }$found_a" + else + dnl We shouldn't come here, but anyway it's good to have a + dnl fallback. + LIB[]NAME="${LIB[]NAME}${LIB[]NAME:+ }-L$found_dir -l$name" + fi + fi + dnl Assume the include files are nearby. + additional_includedir= + case "$found_dir" in + */$acl_libdirstem | */$acl_libdirstem/) + basedir=`echo "X$found_dir" | sed -e 's,^X,,' -e "s,/$acl_libdirstem/"'*$,,'` + if test "$name" = '$1'; then + LIB[]NAME[]_PREFIX="$basedir" + fi + additional_includedir="$basedir/include" + ;; + */$acl_libdirstem2 | */$acl_libdirstem2/) + basedir=`echo "X$found_dir" | sed -e 's,^X,,' -e "s,/$acl_libdirstem2/"'*$,,'` + if test "$name" = '$1'; then + LIB[]NAME[]_PREFIX="$basedir" + fi + additional_includedir="$basedir/include" + ;; + esac + if test "X$additional_includedir" != "X"; then + dnl Potentially add $additional_includedir to $INCNAME. + dnl But don't add it + dnl 1. if it's the standard /usr/include, + dnl 2. if it's /usr/local/include and we are using GCC on Linux, + dnl 3. if it's already present in $CPPFLAGS or the already + dnl constructed $INCNAME, + dnl 4. if it doesn't exist as a directory. + if test "X$additional_includedir" != "X/usr/include"; then + haveit= + if test "X$additional_includedir" = "X/usr/local/include"; then + if test -n "$GCC"; then + case $host_os in + linux* | gnu* | k*bsd*-gnu) haveit=yes;; + esac + fi + fi + if test -z "$haveit"; then + for x in $CPPFLAGS $INC[]NAME; do + AC_LIB_WITH_FINAL_PREFIX([eval x=\"$x\"]) + if test "X$x" = "X-I$additional_includedir"; then + haveit=yes + break + fi + done + if test -z "$haveit"; then + if test -d "$additional_includedir"; then + dnl Really add $additional_includedir to $INCNAME. + INC[]NAME="${INC[]NAME}${INC[]NAME:+ }-I$additional_includedir" + fi + fi + fi + fi + fi + dnl Look for dependencies. + if test -n "$found_la"; then + dnl Read the .la file. It defines the variables + dnl dlname, library_names, old_library, dependency_libs, current, + dnl age, revision, installed, dlopen, dlpreopen, libdir. + save_libdir="$libdir" + case "$found_la" in + */* | *\\*) . "$found_la" ;; + *) . "./$found_la" ;; + esac + libdir="$save_libdir" + dnl We use only dependency_libs. + for dep in $dependency_libs; do + case "$dep" in + -L*) + additional_libdir=`echo "X$dep" | sed -e 's/^X-L//'` + dnl Potentially add $additional_libdir to $LIBNAME and $LTLIBNAME. + dnl But don't add it + dnl 1. if it's the standard /usr/lib, + dnl 2. if it's /usr/local/lib and we are using GCC on Linux, + dnl 3. if it's already present in $LDFLAGS or the already + dnl constructed $LIBNAME, + dnl 4. if it doesn't exist as a directory. + if test "X$additional_libdir" != "X/usr/$acl_libdirstem" \ + && test "X$additional_libdir" != "X/usr/$acl_libdirstem2"; then + haveit= + if test "X$additional_libdir" = "X/usr/local/$acl_libdirstem" \ + || test "X$additional_libdir" = "X/usr/local/$acl_libdirstem2"; then + if test -n "$GCC"; then + case $host_os in + linux* | gnu* | k*bsd*-gnu) haveit=yes;; + esac + fi + fi + if test -z "$haveit"; then + haveit= + for x in $LDFLAGS $LIB[]NAME; do + AC_LIB_WITH_FINAL_PREFIX([eval x=\"$x\"]) + if test "X$x" = "X-L$additional_libdir"; then + haveit=yes + break + fi + done + if test -z "$haveit"; then + if test -d "$additional_libdir"; then + dnl Really add $additional_libdir to $LIBNAME. + LIB[]NAME="${LIB[]NAME}${LIB[]NAME:+ }-L$additional_libdir" + fi + fi + haveit= + for x in $LDFLAGS $LTLIB[]NAME; do + AC_LIB_WITH_FINAL_PREFIX([eval x=\"$x\"]) + if test "X$x" = "X-L$additional_libdir"; then + haveit=yes + break + fi + done + if test -z "$haveit"; then + if test -d "$additional_libdir"; then + dnl Really add $additional_libdir to $LTLIBNAME. + LTLIB[]NAME="${LTLIB[]NAME}${LTLIB[]NAME:+ }-L$additional_libdir" + fi + fi + fi + fi + ;; + -R*) + dir=`echo "X$dep" | sed -e 's/^X-R//'` + if test "$enable_rpath" != no; then + dnl Potentially add DIR to rpathdirs. + dnl The rpathdirs will be appended to $LIBNAME at the end. + haveit= + for x in $rpathdirs; do + if test "X$x" = "X$dir"; then + haveit=yes + break + fi + done + if test -z "$haveit"; then + rpathdirs="$rpathdirs $dir" + fi + dnl Potentially add DIR to ltrpathdirs. + dnl The ltrpathdirs will be appended to $LTLIBNAME at the end. + haveit= + for x in $ltrpathdirs; do + if test "X$x" = "X$dir"; then + haveit=yes + break + fi + done + if test -z "$haveit"; then + ltrpathdirs="$ltrpathdirs $dir" + fi + fi + ;; + -l*) + dnl Handle this in the next round. + names_next_round="$names_next_round "`echo "X$dep" | sed -e 's/^X-l//'` + ;; + *.la) + dnl Handle this in the next round. Throw away the .la's + dnl directory; it is already contained in a preceding -L + dnl option. + names_next_round="$names_next_round "`echo "X$dep" | sed -e 's,^X.*/,,' -e 's,^lib,,' -e 's,\.la$,,'` + ;; + *) + dnl Most likely an immediate library name. + LIB[]NAME="${LIB[]NAME}${LIB[]NAME:+ }$dep" + LTLIB[]NAME="${LTLIB[]NAME}${LTLIB[]NAME:+ }$dep" + ;; + esac + done + fi + else + dnl Didn't find the library; assume it is in the system directories + dnl known to the linker and runtime loader. (All the system + dnl directories known to the linker should also be known to the + dnl runtime loader, otherwise the system is severely misconfigured.) + LIB[]NAME="${LIB[]NAME}${LIB[]NAME:+ }-l$name" + LTLIB[]NAME="${LTLIB[]NAME}${LTLIB[]NAME:+ }-l$name" + fi + fi + fi + done + done + if test "X$rpathdirs" != "X"; then + if test -n "$acl_hardcode_libdir_separator"; then + dnl Weird platform: only the last -rpath option counts, the user must + dnl pass all path elements in one option. We can arrange that for a + dnl single library, but not when more than one $LIBNAMEs are used. + alldirs= + for found_dir in $rpathdirs; do + alldirs="${alldirs}${alldirs:+$acl_hardcode_libdir_separator}$found_dir" + done + dnl Note: acl_hardcode_libdir_flag_spec uses $libdir and $wl. + acl_save_libdir="$libdir" + libdir="$alldirs" + eval flag=\"$acl_hardcode_libdir_flag_spec\" + libdir="$acl_save_libdir" + LIB[]NAME="${LIB[]NAME}${LIB[]NAME:+ }$flag" + else + dnl The -rpath options are cumulative. + for found_dir in $rpathdirs; do + acl_save_libdir="$libdir" + libdir="$found_dir" + eval flag=\"$acl_hardcode_libdir_flag_spec\" + libdir="$acl_save_libdir" + LIB[]NAME="${LIB[]NAME}${LIB[]NAME:+ }$flag" + done + fi + fi + if test "X$ltrpathdirs" != "X"; then + dnl When using libtool, the option that works for both libraries and + dnl executables is -R. The -R options are cumulative. + for found_dir in $ltrpathdirs; do + LTLIB[]NAME="${LTLIB[]NAME}${LTLIB[]NAME:+ }-R$found_dir" + done + fi + popdef([P_A_C_K]) + popdef([PACKLIBS]) + popdef([PACKUP]) + popdef([PACK]) + popdef([NAME]) +]) + +dnl AC_LIB_APPENDTOVAR(VAR, CONTENTS) appends the elements of CONTENTS to VAR, +dnl unless already present in VAR. +dnl Works only for CPPFLAGS, not for LIB* variables because that sometimes +dnl contains two or three consecutive elements that belong together. +AC_DEFUN([AC_LIB_APPENDTOVAR], +[ + for element in [$2]; do + haveit= + for x in $[$1]; do + AC_LIB_WITH_FINAL_PREFIX([eval x=\"$x\"]) + if test "X$x" = "X$element"; then + haveit=yes + break + fi + done + if test -z "$haveit"; then + [$1]="${[$1]}${[$1]:+ }$element" + fi + done +]) + +dnl For those cases where a variable contains several -L and -l options +dnl referring to unknown libraries and directories, this macro determines the +dnl necessary additional linker options for the runtime path. +dnl AC_LIB_LINKFLAGS_FROM_LIBS([LDADDVAR], [LIBSVALUE], [USE-LIBTOOL]) +dnl sets LDADDVAR to linker options needed together with LIBSVALUE. +dnl If USE-LIBTOOL evaluates to non-empty, linking with libtool is assumed, +dnl otherwise linking without libtool is assumed. +AC_DEFUN([AC_LIB_LINKFLAGS_FROM_LIBS], +[ + AC_REQUIRE([AC_LIB_RPATH]) + AC_REQUIRE([AC_LIB_PREPARE_MULTILIB]) + $1= + if test "$enable_rpath" != no; then + if test -n "$acl_hardcode_libdir_flag_spec" && test "$acl_hardcode_minus_L" = no; then + dnl Use an explicit option to hardcode directories into the resulting + dnl binary. + rpathdirs= + next= + for opt in $2; do + if test -n "$next"; then + dir="$next" + dnl No need to hardcode the standard /usr/lib. + if test "X$dir" != "X/usr/$acl_libdirstem" \ + && test "X$dir" != "X/usr/$acl_libdirstem2"; then + rpathdirs="$rpathdirs $dir" + fi + next= + else + case $opt in + -L) next=yes ;; + -L*) dir=`echo "X$opt" | sed -e 's,^X-L,,'` + dnl No need to hardcode the standard /usr/lib. + if test "X$dir" != "X/usr/$acl_libdirstem" \ + && test "X$dir" != "X/usr/$acl_libdirstem2"; then + rpathdirs="$rpathdirs $dir" + fi + next= ;; + *) next= ;; + esac + fi + done + if test "X$rpathdirs" != "X"; then + if test -n ""$3""; then + dnl libtool is used for linking. Use -R options. + for dir in $rpathdirs; do + $1="${$1}${$1:+ }-R$dir" + done + else + dnl The linker is used for linking directly. + if test -n "$acl_hardcode_libdir_separator"; then + dnl Weird platform: only the last -rpath option counts, the user + dnl must pass all path elements in one option. + alldirs= + for dir in $rpathdirs; do + alldirs="${alldirs}${alldirs:+$acl_hardcode_libdir_separator}$dir" + done + acl_save_libdir="$libdir" + libdir="$alldirs" + eval flag=\"$acl_hardcode_libdir_flag_spec\" + libdir="$acl_save_libdir" + $1="$flag" + else + dnl The -rpath options are cumulative. + for dir in $rpathdirs; do + acl_save_libdir="$libdir" + libdir="$dir" + eval flag=\"$acl_hardcode_libdir_flag_spec\" + libdir="$acl_save_libdir" + $1="${$1}${$1:+ }$flag" + done + fi + fi + fi + fi + fi + AC_SUBST([$1]) +]) diff -urN gawk-4.1.3/extension/m4/lib-prefix.m4 gawk-4.1.4/extension/m4/lib-prefix.m4 --- gawk-4.1.3/extension/m4/lib-prefix.m4 1970-01-01 02:00:00.000000000 +0200 +++ gawk-4.1.4/extension/m4/lib-prefix.m4 2015-04-05 11:13:50.000000000 +0300 @@ -0,0 +1,224 @@ +# lib-prefix.m4 serial 7 (gettext-0.18) +dnl Copyright (C) 2001-2005, 2008-2010 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 AC_LIB_ARG_WITH is synonymous to AC_ARG_WITH in autoconf-2.13, and +dnl similar to AC_ARG_WITH in autoconf 2.52...2.57 except that is doesn't +dnl require excessive bracketing. +ifdef([AC_HELP_STRING], +[AC_DEFUN([AC_LIB_ARG_WITH], [AC_ARG_WITH([$1],[[$2]],[$3],[$4])])], +[AC_DEFUN([AC_][LIB_ARG_WITH], [AC_ARG_WITH([$1],[$2],[$3],[$4])])]) + +dnl AC_LIB_PREFIX adds to the CPPFLAGS and LDFLAGS the flags that are needed +dnl to access previously installed libraries. The basic assumption is that +dnl a user will want packages to use other packages he previously installed +dnl with the same --prefix option. +dnl This macro is not needed if only AC_LIB_LINKFLAGS is used to locate +dnl libraries, but is otherwise very convenient. +AC_DEFUN([AC_LIB_PREFIX], +[ + AC_BEFORE([$0], [AC_LIB_LINKFLAGS]) + AC_REQUIRE([AC_PROG_CC]) + AC_REQUIRE([AC_CANONICAL_HOST]) + AC_REQUIRE([AC_LIB_PREPARE_MULTILIB]) + AC_REQUIRE([AC_LIB_PREPARE_PREFIX]) + dnl By default, look in $includedir and $libdir. + use_additional=yes + AC_LIB_WITH_FINAL_PREFIX([ + eval additional_includedir=\"$includedir\" + eval additional_libdir=\"$libdir\" + ]) + AC_LIB_ARG_WITH([lib-prefix], +[ --with-lib-prefix[=DIR] search for libraries in DIR/include and DIR/lib + --without-lib-prefix don't search for libraries in includedir and libdir], +[ + if test "X$withval" = "Xno"; then + use_additional=no + else + if test "X$withval" = "X"; then + AC_LIB_WITH_FINAL_PREFIX([ + eval additional_includedir=\"$includedir\" + eval additional_libdir=\"$libdir\" + ]) + else + additional_includedir="$withval/include" + additional_libdir="$withval/$acl_libdirstem" + fi + fi +]) + if test $use_additional = yes; then + dnl Potentially add $additional_includedir to $CPPFLAGS. + dnl But don't add it + dnl 1. if it's the standard /usr/include, + dnl 2. if it's already present in $CPPFLAGS, + dnl 3. if it's /usr/local/include and we are using GCC on Linux, + dnl 4. if it doesn't exist as a directory. + if test "X$additional_includedir" != "X/usr/include"; then + haveit= + for x in $CPPFLAGS; do + AC_LIB_WITH_FINAL_PREFIX([eval x=\"$x\"]) + if test "X$x" = "X-I$additional_includedir"; then + haveit=yes + break + fi + done + if test -z "$haveit"; then + if test "X$additional_includedir" = "X/usr/local/include"; then + if test -n "$GCC"; then + case $host_os in + linux* | gnu* | k*bsd*-gnu) haveit=yes;; + esac + fi + fi + if test -z "$haveit"; then + if test -d "$additional_includedir"; then + dnl Really add $additional_includedir to $CPPFLAGS. + CPPFLAGS="${CPPFLAGS}${CPPFLAGS:+ }-I$additional_includedir" + fi + fi + fi + fi + dnl Potentially add $additional_libdir to $LDFLAGS. + dnl But don't add it + dnl 1. if it's the standard /usr/lib, + dnl 2. if it's already present in $LDFLAGS, + dnl 3. if it's /usr/local/lib and we are using GCC on Linux, + dnl 4. if it doesn't exist as a directory. + if test "X$additional_libdir" != "X/usr/$acl_libdirstem"; then + haveit= + for x in $LDFLAGS; do + AC_LIB_WITH_FINAL_PREFIX([eval x=\"$x\"]) + if test "X$x" = "X-L$additional_libdir"; then + haveit=yes + break + fi + done + if test -z "$haveit"; then + if test "X$additional_libdir" = "X/usr/local/$acl_libdirstem"; then + if test -n "$GCC"; then + case $host_os in + linux*) haveit=yes;; + esac + fi + fi + if test -z "$haveit"; then + if test -d "$additional_libdir"; then + dnl Really add $additional_libdir to $LDFLAGS. + LDFLAGS="${LDFLAGS}${LDFLAGS:+ }-L$additional_libdir" + fi + fi + fi + fi + fi +]) + +dnl AC_LIB_PREPARE_PREFIX creates variables acl_final_prefix, +dnl acl_final_exec_prefix, containing the values to which $prefix and +dnl $exec_prefix will expand at the end of the configure script. +AC_DEFUN([AC_LIB_PREPARE_PREFIX], +[ + dnl Unfortunately, prefix and exec_prefix get only finally determined + dnl at the end of configure. + if test "X$prefix" = "XNONE"; then + acl_final_prefix="$ac_default_prefix" + else + acl_final_prefix="$prefix" + fi + if test "X$exec_prefix" = "XNONE"; then + acl_final_exec_prefix='${prefix}' + else + acl_final_exec_prefix="$exec_prefix" + fi + acl_save_prefix="$prefix" + prefix="$acl_final_prefix" + eval acl_final_exec_prefix=\"$acl_final_exec_prefix\" + prefix="$acl_save_prefix" +]) + +dnl AC_LIB_WITH_FINAL_PREFIX([statement]) evaluates statement, with the +dnl variables prefix and exec_prefix bound to the values they will have +dnl at the end of the configure script. +AC_DEFUN([AC_LIB_WITH_FINAL_PREFIX], +[ + acl_save_prefix="$prefix" + prefix="$acl_final_prefix" + acl_save_exec_prefix="$exec_prefix" + exec_prefix="$acl_final_exec_prefix" + $1 + exec_prefix="$acl_save_exec_prefix" + prefix="$acl_save_prefix" +]) + +dnl AC_LIB_PREPARE_MULTILIB creates +dnl - a variable acl_libdirstem, containing the basename of the libdir, either +dnl "lib" or "lib64" or "lib/64", +dnl - a variable acl_libdirstem2, as a secondary possible value for +dnl acl_libdirstem, either the same as acl_libdirstem or "lib/sparcv9" or +dnl "lib/amd64". +AC_DEFUN([AC_LIB_PREPARE_MULTILIB], +[ + dnl There is no formal standard regarding lib and lib64. + dnl On glibc systems, the current practice is that on a system supporting + dnl 32-bit and 64-bit instruction sets or ABIs, 64-bit libraries go under + dnl $prefix/lib64 and 32-bit libraries go under $prefix/lib. We determine + dnl the compiler's default mode by looking at the compiler's library search + dnl path. If at least one of its elements ends in /lib64 or points to a + dnl directory whose absolute pathname ends in /lib64, we assume a 64-bit ABI. + dnl Otherwise we use the default, namely "lib". + dnl On Solaris systems, the current practice is that on a system supporting + dnl 32-bit and 64-bit instruction sets or ABIs, 64-bit libraries go under + dnl $prefix/lib/64 (which is a symlink to either $prefix/lib/sparcv9 or + dnl $prefix/lib/amd64) and 32-bit libraries go under $prefix/lib. + AC_REQUIRE([AC_CANONICAL_HOST]) + acl_libdirstem=lib + acl_libdirstem2= + case "$host_os" in + solaris*) + dnl See Solaris 10 Software Developer Collection > Solaris 64-bit Developer's Guide > The Development Environment + dnl . + dnl "Portable Makefiles should refer to any library directories using the 64 symbolic link." + dnl But we want to recognize the sparcv9 or amd64 subdirectory also if the + dnl symlink is missing, so we set acl_libdirstem2 too. + AC_CACHE_CHECK([for 64-bit host], [gl_cv_solaris_64bit], + [AC_EGREP_CPP([sixtyfour bits], [ +#ifdef _LP64 +sixtyfour bits +#endif + ], [gl_cv_solaris_64bit=yes], [gl_cv_solaris_64bit=no]) + ]) + if test $gl_cv_solaris_64bit = yes; then + acl_libdirstem=lib/64 + case "$host_cpu" in + sparc*) acl_libdirstem2=lib/sparcv9 ;; + i*86 | x86_64) acl_libdirstem2=lib/amd64 ;; + esac + fi + ;; + *) + searchpath=`(LC_ALL=C $CC -print-search-dirs) 2>/dev/null | sed -n -e 's,^libraries: ,,p' | sed -e 's,^=,,'` + if test -n "$searchpath"; then + acl_save_IFS="${IFS= }"; IFS=":" + for searchdir in $searchpath; do + if test -d "$searchdir"; then + case "$searchdir" in + */lib64/ | */lib64 ) acl_libdirstem=lib64 ;; + */../ | */.. ) + # Better ignore directories of this form. They are misleading. + ;; + *) searchdir=`cd "$searchdir" && pwd` + case "$searchdir" in + */lib64 ) acl_libdirstem=lib64 ;; + esac ;; + esac + fi + done + IFS="$acl_save_IFS" + fi + ;; + esac + test -n "$acl_libdirstem2" || acl_libdirstem2="$acl_libdirstem" +]) diff -urN gawk-4.1.3/extension/m4/nls.m4 gawk-4.1.4/extension/m4/nls.m4 --- gawk-4.1.3/extension/m4/nls.m4 1970-01-01 02:00:00.000000000 +0200 +++ gawk-4.1.4/extension/m4/nls.m4 2015-04-05 11:13:50.000000000 +0300 @@ -0,0 +1,32 @@ +# nls.m4 serial 5 (gettext-0.18) +dnl Copyright (C) 1995-2003, 2005-2006, 2008-2010 Free Software Foundation, +dnl 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 +dnl License but which still want to provide support for the GNU gettext +dnl functionality. +dnl Please note that the actual code of the GNU gettext library is covered +dnl by the GNU Library General Public License, and the rest of the GNU +dnl gettext package package is covered by the GNU General Public License. +dnl They are *not* in the public domain. + +dnl Authors: +dnl Ulrich Drepper , 1995-2000. +dnl Bruno Haible , 2000-2003. + +AC_PREREQ([2.50]) + +AC_DEFUN([AM_NLS], +[ + AC_MSG_CHECKING([whether NLS is requested]) + dnl Default is enabled NLS + AC_ARG_ENABLE([nls], + [ --disable-nls do not use Native Language Support], + USE_NLS=$enableval, USE_NLS=yes) + AC_MSG_RESULT([$USE_NLS]) + AC_SUBST([USE_NLS]) +]) diff -urN gawk-4.1.3/extension/m4/progtest.m4 gawk-4.1.4/extension/m4/progtest.m4 --- gawk-4.1.3/extension/m4/progtest.m4 1970-01-01 02:00:00.000000000 +0200 +++ gawk-4.1.4/extension/m4/progtest.m4 2015-04-05 11:13:50.000000000 +0300 @@ -0,0 +1,92 @@ +# progtest.m4 serial 6 (gettext-0.18) +dnl Copyright (C) 1996-2003, 2005, 2008-2010 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 +dnl License but which still want to provide support for the GNU gettext +dnl functionality. +dnl Please note that the actual code of the GNU gettext library is covered +dnl by the GNU Library General Public License, and the rest of the GNU +dnl gettext package package is covered by the GNU General Public License. +dnl They are *not* in the public domain. + +dnl Authors: +dnl Ulrich Drepper , 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, +dnl TEST-PERFORMED-ON-FOUND_PROGRAM [, VALUE-IF-NOT-FOUND [, PATH]]) +AC_DEFUN([AM_PATH_PROG_WITH_TEST], +[ +# Prepare PATH_SEPARATOR. +# The user is always right. +if test "${PATH_SEPARATOR+set}" != set; then + echo "#! /bin/sh" >conf$$.sh + echo "exit 0" >>conf$$.sh + chmod +x conf$$.sh + if (PATH="/nonexistent;."; conf$$.sh) >/dev/null 2>&1; then + PATH_SEPARATOR=';' + else + PATH_SEPARATOR=: + fi + rm -f conf$$.sh +fi + +# Find out how to test for executable files. Don't use a zero-byte file, +# as systems may use methods other than mode bits to determine executability. +cat >conf$$.file <<_ASEOF +#! /bin/sh +exit 0 +_ASEOF +chmod +x conf$$.file +if test -x conf$$.file >/dev/null 2>&1; then + ac_executable_p="test -x" +else + ac_executable_p="test -f" +fi +rm -f conf$$.file + +# Extract the first word of "$2", so it can be a program name with args. +set dummy $2; ac_word=[$]2 +AC_MSG_CHECKING([for $ac_word]) +AC_CACHE_VAL([ac_cv_path_$1], +[case "[$]$1" in + [[\\/]]* | ?:[[\\/]]*) + ac_cv_path_$1="[$]$1" # Let the user override the test with a path. + ;; + *) + ac_save_IFS="$IFS"; IFS=$PATH_SEPARATOR + for ac_dir in ifelse([$5], , $PATH, [$5]); do + IFS="$ac_save_IFS" + test -z "$ac_dir" && ac_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if $ac_executable_p "$ac_dir/$ac_word$ac_exec_ext"; then + 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 + fi + fi + done + done + IFS="$ac_save_IFS" +dnl If no 4th arg is given, leave the cache variable unset, +dnl so AC_PATH_PROGS will keep looking. +ifelse([$4], , , [ test -z "[$]ac_cv_path_$1" && ac_cv_path_$1="$4" +])dnl + ;; +esac])dnl +$1="$ac_cv_path_$1" +if test ifelse([$4], , [-n "[$]$1"], ["[$]$1" != "$4"]); then + AC_MSG_RESULT([$][$1]) +else + AC_MSG_RESULT([no]) +fi +AC_SUBST([$1])dnl +]) EOF # Final cleanup echo Sleeping and touching files to update timestamps. # touch list of zero length files touch test/aryprm9.ok sleep 2 touch aclocal.m4 extension/aclocal.m4 configh.in extension/configh.in touch test/Makefile.in touch awklib/Makefile.in doc/Makefile.in extension/Makefile.in Makefile.in sleep 2 touch configure extension/configure sleep 2 touch version.c echo Remove any .orig or "'~'" files that may remain. echo Use '"configure && make"' to rebuild any dependent files. echo Use "'make distclean'" to clean up.