Daiki Ueno [Tue, 13 Jan 2015 03:00:35 +0000 (12:00 +0900)]
c++: Differentiate scanning logic from C
To enable raw string literals only in C++, add a flag indicating
the current source language is C++.
Suggested by Vaclav Slavik at:
<https://savannah.gnu.org/bugs/?43970>.
* gettext-tools/src/x-c.h (extract_cxx): New declaration.
(SCANNERS_C): Use extract_cxx for "C++".
* gettext-tools/src/x-c.c (cxx_extensions): New variable.
(phase5_get): Respect cxx_extensions and recognize raw string
literals only when it is set.
(extract_cxx): New function.
(extract_c, extract_objc): Reset cxx_extensions.
* gettext-tools/tests/xgettext-c-20: Adjust the source file name
from *.c to *.cc to enable handling of raw string literals.
Daiki Ueno [Thu, 8 Jan 2015 02:09:14 +0000 (11:09 +0900)]
examples: Make hello-c-gnome3 translator friendly
Suggested by Benno Schulenberg in:
<https://lists.gnu.org/archive/html/bug-gettext/2015-01/msg00003.html>.
* hello-c-gnome3/hello.gschema.xml: Use "use-markup" property
instead of "sensitive", to clarify the meaning of the extracted
strings.
* hello-c-gnome3/hello.c (HelloApplicationWindow): Rename the
"label2" member to "label".
(update_content): New function.
(clicked_callback): Rename from quit_callback and call
update_content instead of quitting. All callers changed.
* hello-c-gnome3/hello.ui: Abolish the first label and put a
translatable text inside the button.
Václav Slavík [Sat, 3 Jan 2015 23:39:29 +0000 (08:39 +0900)]
intl: Add missing libintl.h dependency from pluralx.$lo
plural(x).c depends on libintl.h if ENABLE_NLS, but the makefile
didn't have corresponding dependency for pluralx.c, because d2d04ba forgot to add it. Fix by using $(PLURAL_OBJECT) for the
dependency rule too.
* Makefile.in ($(PLURAL_OBJECT)): Depend on libintl.h.
Daiki Ueno [Thu, 25 Dec 2014 04:04:47 +0000 (13:04 +0900)]
build-aux: Update texinfo.tex to 2014-12-03.16
* build-aux/texinfo.tex: Update to 2014-12-03.16. Needed because
the original texinfo does not allow @heading usage inside
@enumeration and texi2dvi fails due to this.
Daiki Ueno [Fri, 12 Dec 2014 08:18:51 +0000 (17:18 +0900)]
lisp, scheme: Avoid invalid memory access
* format-lisp.c (make_intersected_list): Don't dereference
potentially released memory. 'append_repeated_to_initial' may
release the LIST->element. Spotted by clang-analyzer.
* format-scheme.c (make_intersected_list): Likewise.
Daiki Ueno [Fri, 5 Dec 2014 06:18:55 +0000 (15:18 +0900)]
msgunfmt: Avoid integer overflow using xsize
* read-mo.c (get_uint32, get_sysdep_string): Use xsum to avoid
integer overflow, when checking length and offset fields.
Reported by Jakub Wilk at:
<https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=772088>.
Daiki Ueno [Fri, 5 Dec 2014 04:49:31 +0000 (13:49 +0900)]
examples: Include hello-*.pot in the distribution
Partially revert 2c3d71ce, as it broke "make dist". Instead,
include all the generated POT files in the distribution to prevent
re-generation of those files.
* Makefile.am (distdir1): Call update-po in po/Makefile.
* po/Makefile.am ($(DOMAIN).pot-update): Specify --directory for
xgettext invocation.
(DISTCLEANFILES): Move $(SMALLPOTS)...
(MAINTAINERCLEANFILES): ...here.
(distdir1): Include $(SMALLPOTS) in the distribution.
Daiki Ueno [Thu, 4 Dec 2014 03:21:35 +0000 (12:21 +0900)]
examples: Don't forcibly regenerate POT files on 'make dist'
Previously we generated POT files on 'make dist'. However, it
take some time to complete and require autotools bootstrap for
each project.
* Makefile.am (distdir1): Don't invoke update-po rule in po/Makefile.
* po/Makefile.am (distdir1): Don't invoke update-po rule.
Daiki Ueno [Thu, 4 Dec 2014 02:59:53 +0000 (11:59 +0900)]
intl: Make the LCOV workaround non-intrusive
* gettext-runtime/intl/Makefile.in (PLURAL_OBJECT): New variable.
(OBJECTS): Refer to $(PLURAL_OBJECT) instead of plural.$lo.
(pluralx.c, pluralx.lo): New rule.
(mostlyclean): Remove pluralx.c.
* gettext-tools/configure.ac: Replace PLURAL_OBJECT in intl/Makefile.
Daiki Ueno [Wed, 3 Dec 2014 06:14:44 +0000 (15:14 +0900)]
intl: Work around LCOV relative base directory resolution
* gettext-runtime/intl/Makefile.in (plural.lo): Resolve relative
source file name given with '#line' directive, when $(srcdir) !=
$(builddir).
(mostlyclean): Remove plural.c generated in the 'plural.lo' rule.
* gettext-tools/src/plural-exp.c: Include "../intl/plural.c" instead
of "../../gettext-runtime/intl/plural.c".
Daiki Ueno [Mon, 1 Dec 2014 07:45:57 +0000 (16:45 +0900)]
doc: Document placement of extracted comment blocks
* xgettext.texi: Mention that extracted comment blocks must be
adjacent to keyword lines.
Reported by Yves-Gwenael Bourhis at:
<https://savannah.gnu.org/bugs/index.php?42376>.
Daiki Ueno [Mon, 1 Dec 2014 04:39:30 +0000 (13:39 +0900)]
c#: Recognize Unicode surrogate character pair
* x-csharp.c (accumulate_escaped): Change the first argument type
from 'struct string_buffer *' to 'struct mixed_string_buffer *',
for Unicode surrogate character pair handling; all callers
changed. Reported by Petr Kadlec at:
<https://savannah.gnu.org/bugs/?32505>.
Daiki Ueno [Mon, 1 Dec 2014 03:18:04 +0000 (12:18 +0900)]
build: Update libtool files to 2.4.4
* m4/libtool.m4: Update from libtool-2.4.4, with modifications.
2008-04-06 Bruno Haible <bruno@clisp.org>
* m4/libtool.m4 (LT_INIT): When setting LIBTOOL, use
CONFIG_SHELL; don't assume that the Makefile.in will set SHELL
to ${CONFIG_SHELL}.
* m4/ltoptions.m4: Likewise.
* m4/ltversion.m4: Likewise.
* build-aux/ltmain.sh: Likewise.
Daiki Ueno [Fri, 28 Nov 2014 04:21:37 +0000 (13:21 +0900)]
msgfilter: Fix read buffer allocation for empty input
* msgfilter.c (prepare_read): Increase allocated buffer size even
if the original size is < 2.
Reported by Robin McCorkell at:
<https://savannah.gnu.org/bugs/?43720>.
Daiki Ueno [Fri, 28 Nov 2014 03:17:06 +0000 (12:17 +0900)]
build: Update libtool files to 2.4.3
* m4/libtool.m4: Update from libtool-2.4.3, with modifications.
2008-04-06 Bruno Haible <bruno@clisp.org>
* m4/libtool.m4 (LT_INIT): When setting LIBTOOL, use
CONFIG_SHELL; don't assume that the Makefile.in will set SHELL
to ${CONFIG_SHELL}.
* m4/ltoptions.m4: Likewise.
* m4/ltsuger.m4: Likewise.
* m4/ltversion.m4: Likewise.
* m4/lt~obsolete.m4: Likewise.
* build-aux/ltmain.sh: Likewise.
Daiki Ueno [Thu, 27 Nov 2014 09:32:23 +0000 (18:32 +0900)]
javascript: Simplify Unicode character escape handling
ECMA-262 only supports "\uXXXX" style Unicode character escape and
we don't need extra space for character names.
* x-javascript.c: Don't include "uniname.h".
(phase2_pushback): Decrease to 5. Don't refer to UNINAME_MAX.
Daiki Ueno [Tue, 18 Nov 2014 03:11:22 +0000 (12:11 +0900)]
read-mo: Check size_t overflow
* read-mo.c: Include "xsize.h".
(get_string): Use xsum3 to avoid overflow, when checking length
and offset fields.
Reported by Jakub Wilk at:
<https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=769901>.
Daiki Ueno [Tue, 28 Oct 2014 07:38:40 +0000 (16:38 +0900)]
xgettext: Allow plural extraction from a single argument function
The commit 8137d2b4 was a wrong fix since both singular/plural
msgids may point to the same address for Qt4 plural forms. This
reverts the commit and fix the original double-free problem in the
right way. Thanks to Jesper Fehrlund for suggestions.
* gettext-tools/src/xgettext.c (arglist_parser_remember_literal):
Don't ignore plural argument even if ARGNUM1 equals to ARGNUM2.
(arglist_parser_done): Make a copy of best_cp->msgid_plural when
passing it to remember_a_message_plural, if it equals to
best_cp->msgid. Also move code conversion logic earlier taking into
account of the ownership transfer of best_cp->msgid.
* gettext-tools/src/xgettext-12: Test a single argument function.
Daiki Ueno [Tue, 28 Oct 2014 06:51:01 +0000 (15:51 +0900)]
xgettext: Fix double-free in singular/plural argument extraction
After commit 6aa7b7ed in 2009, xgettext assumed that ARGNUM1 and
ARGNUM2 of -k are different. That could cause an double-free in
exceptional cases.
Reported by Johan Liljegren in:
<https://lists.gnu.org/archive/html/bug-gettext/2014-10/msg00028.html>.
* xgettext.c (arglist_parser_remember_literal): Don't assume that
ARGNUM1 and ARGNUM2 are different.
Daiki Ueno [Wed, 15 Oct 2014 03:37:45 +0000 (12:37 +0900)]
tests: Support newer ncurses with italic caps in xterm terminfo
* tests/test-term-ostream-xterm-basic-italic.out: New file.
* tests/test-term-ostream-xterm: Use it as possible test result.
* Makefile.am (EXTRA_DIST): Add new files.
Needed for ncurses >= 5.9-20140906 that defines sitm/ritm in the
xterm-basic terminfo definition.
Daiki Ueno [Sun, 12 Oct 2014 00:26:21 +0000 (09:26 +0900)]
tests: Avoid sed error on Mac OS X when dealing with binary input
Reported by Ramsey Dow in:
<http://lists.gnu.org/archive/html/bug-gettext/2014-07/msg00002.html>.
* msgmerge-compendium-6: Run sed with LC_ALL=C, to avoid 'illegal
byte sequence' error on Mac OS X.
* format-sh-1: Likewise.
Daiki Ueno [Wed, 8 Oct 2014 07:12:35 +0000 (16:12 +0900)]
msgunfmt: Error on incomplete multibyte sequence at EOF
* write-po.c (wrap): Report error on incomplete multibyte sequence
at the end of input bytes.
Reported by Jakub Wilk at:
<https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=763820>.
Daiki Ueno [Wed, 8 Oct 2014 06:17:08 +0000 (15:17 +0900)]
po: Make it possible to pass custom options to msginit
* Makevars (MSGINIT_OPTIONS): New variable.
* Rules-quot: Use it when invoking msginit.
If one wants to use '--no-wrap' in MSGMERGE_OPTIONS and
XGETTEXT_OPTIONS, there should be a way to pass the option to
msginit. Reported by Ludovic Courtès in:
<https://lists.gnu.org/archive/html/bug-gettext/2014-08/msg00004.html>.
Daiki Ueno [Thu, 2 Oct 2014 08:44:41 +0000 (17:44 +0900)]
Fix C++ compiler check to auto-disable building libasprintf
* gettext-runtime/configure.ac: To automatically disable building
libasprintf when no C++ is found, check if CXX is "no", not ":". This
seems to be a left over of commit 09963c23. Reported by Assaf Gordon in:
<https://lists.gnu.org/archive/html/bug-gettext/2014-10/msg00003.html>.
Daiki Ueno [Wed, 1 Oct 2014 05:40:08 +0000 (14:40 +0900)]
tests: Adjust textdomain directory for Solaris 11
Solaris 11 doesn't strip the CODESET part from the locale name,
when looking for a message catalog. Create a directory link with
CODESET, to work around this.
This was introduced by commit 3533f6cc when we didn't use separate
test directory for each test. Now that we switched to init.sh, we
don't need to worry about filename conflicts.