• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
12015-10-06  Daiki Ueno  <ueno@gnu.org>
2
3	* msgfmt.c (msgfmt_desktop_bulk): Distinguish the number of errors
4	and the exit status.
5	* write-desktop.c (msgdomain_write_desktop_bulk): Don't
6	immediately exit when fwriteerror() returns error.
7
82015-10-06  Daiki Ueno  <ueno@gnu.org>
9
10	msgfmt: Refactor --desktop handling
11	* msgfmt.c (get_languages): Avoid redundant memory allocation.
12	(msgfmt_operand_list_init): New function.
13	(msgfmt_operand_list_destroy): New function.
14	(msgfmt_operand_list_append): New function.
15	(msgfmt_operand_list_add_directory): New function.
16	(msgfmt_desktop_bulk): Rewrite using msgfmt_operand_list_ty.
17
18	* msgfmt.h (msgfmt_operand_ty)
19	(msgfmt_operand_list_ty): New type.
20	* write-desktop.c (msgdomain_write_desktop_bulk):
21	Simplify using msgfmt_operand_list_ty.
22	(msgdomain_write_desktop): Simplify using msgfmt_operand_list_ty.
23	* write-desktop.h (msgdomain_write_desktop_bulk): Take OPERANDS as
24	the first argument, instead of LANGUAGES and MESSAGES.
25
262015-10-06  Daiki Ueno  <ueno@gnu.org>
27
28	* sentence.c (sentence_end): Assign initial values to local
29	variables to suppress compiler warnings with
30	-Wmaybe-uninitialized.  This shouldn't address any real bug.
31
322015-09-11  Daiki Ueno  <ueno@gnu.org>
33
34	* gettext 0.19.6 released.
35
362015-08-24  Daiki Ueno  <ueno@gnu.org>
37
38	* xgettext.c (construct_header): Replace PACKAGE placeholder in
39	the header comment.
40
412015-06-11  Philip Withnall  <philip.withnall@collabora.co.uk>
42
43	xgettext: add support for AppData files
44	* x-appdata.h: New file.
45	* x-appdata.c: New file.
46	* xgettext.c: Include x-appdata.h.
47	(language_to_extractor): Add AppData rule.
48	(extension_to_language): Add AppData rule.
49	* Makefile.am (noinst_HEADERS): Add x-appdata.h.
50	(xgettext_SOURCES): Add x-appdata.c.
51	* FILES: Update.
52
532015-08-21  Daiki Ueno  <ueno@gnu.org>
54
55	xgettext: Allow multiple --copyright-holder
56	Feature requested by Francesco Poli in:
57	<https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=682580>.
58	* xgettext.c (default_copyright_holder): New constant, renamed
59	from copyright_holder.
60	(copyright_holder): Define as a variable.
61	(main): Allow multiple --copyright-holder options.
62	(construct_header): Support multiple --copyright-holder options.
63
642015-08-15  Daiki Ueno  <ueno@gnu.org>
65
66	* cldr-plurals.c (main): Close FP after use.
67	Reported by Denis Denisov.
68
692015-07-21  Václav Slavík  <vaclav@slavik.io>  (tiny change)
70
71	cldr-plurals: Fix --enable-relocatable compilation
72	Compilation of the cldr-plurals tool was broken in the relocatable
73	case because of missing CPPFLAGS/LDFLAGS.  Add the same flags used
74	by other tools to the makefile.
75	* Makefile.am (cldr_plurals_CPPFLAGS)
76	(cldr_plurals_LDFLAGS): Adjust for --enable-relocatable
77	compilation.
78
792015-07-10  Daiki Ueno  <ueno@gnu.org>
80
81	* gettext 0.19.5 released.
82
832015-06-29  Daiki Ueno  <ueno@gnu.org>
84
85	* msginit.c (catalogname_for_locale): Remove sr_YU, which were
86	removed from ISO 3166-1:1997.  Add comment saying that pap_AN,
87	which were removed from ISO 3166-1:2006, can be removed in the
88	future.
89	Reported by Jakub Wilk in:
90	<https://lists.gnu.org/archive/html/bug-gettext/2015-06/msg00057.html>.
91
922015-06-25  Daiki Ueno  <ueno@gnu.org>
93
94	* x-c.c (literalstring_parse): Bail out if C == NUL.  Also adjust
95	the loop invariant in Unicode literal handling.
96	Reported by Hanno Boeck in:
97	<http://savannah.gnu.org/bugs/?45391>.
98
992015-06-25  Daiki Ueno  <ueno@gnu.org>
100
101	* x-c.c (literalstring_parse): Add more NUL checks.  Change the
102	loop invariant so that C always points to the character previously
103	pointed by P.
104	Reported by Hanno Boeck in:
105	<http://savannah.gnu.org/bugs/?45391>.
106
1072015-06-24  Daiki Ueno  <ueno@gnu.org>
108
109	* x-c.c (literalstring_parse): Check if the next character of a
110	backslash is NUL.
111	Reported by Hanno Boeck in:
112	<http://savannah.gnu.org/bugs/?45391>.
113
1142015-06-23  Daiki Ueno  <ueno@gnu.org>
115
116	* cldr-plurals.c (main): Fix unmatched braces when
117	!(DYNLOAD_LIBEXPAT || HAVE_LIBEXPAT).
118
1192015-06-23  Daiki Ueno  <ueno@gnu.org>
120
121	* cldr-plurals.c: Include "basename.h".
122	(main): Place optind on the right hand side of the expression, to
123	work around build failure on Solaris.
124
1252015-06-23  Daiki Ueno  <ueno@gnu.org>
126
127	* Makefile.am (uninstall-local): Remove cldr-plurals.
128
1292015-06-23  Daiki Ueno  <ueno@gnu.org>
130
131	* Makefile.am (noinst_HEADERS): Add cldr-plural.h and
132	cldr-plural-exp.h.
133
1342015-06-22  Daiki Ueno  <ueno@gnu.org>
135
136	msginit: Guess plural rules from Unicode CLDR
137	* Makefile.am (noinst_PROGRAMS): Add cldr-plurals.
138	(install-exec-local): Install cldr-plurals.
139	(BUILT_SOURCES): Add cldr-plural.c and cldr-plural.h.
140	(cldr_plural_SOURCES): New variable.
141	(cldr_plural_LDADD): New variable.
142	* cldr-plural-exp.h: New file.
143	* cldr-plural-exp.c: New file.
144	* cldr-plural.y: New file.
145	* cldr-plurals.c: New file.
146	* msginit.c (plural_forms): Call cldr-plurals program if the
147	plural rule is not defined in the code.
148
1492015-06-01  Daiki Ueno  <ueno@gnu.org>
150
151	* x-awk.h (EXTENSIONS_AWK): Register file extensions ".gawk" and
152	".twjr".  Suggested by Karl Berry in:
153	<https://lists.gnu.org/archive/html/bug-gettext/2015-05/msg00032.html>.
154
1552015-05-08  Часлав Илић (Chusslove Illich)  <caslav.ilic@gmx.net>  (tiny change)
156
157	* x-c.c (init_flag_table_kde): New function.
158	(additional_keywords_kde): New variable.
159	(activate_additional_keywords_kde): New function.
160	(init_keywords): Optional addition of KDE-specific keywords.
161	* x-c.h (init_flag_table_kde): New function declaration.
162	(activate_additional_keywords_kde): New function declaration.
163	* xgettext.c (main): Invoke addition of KDE-specific keywords when
164	language is C++ with KDE.
165
1662015-03-20  Daiki Ueno  <ueno@gnu.org>
167
168	kde-kuit: Use xmlns to avoid element name conflict
169	* format-kde-kuit.c (XML_NS): New macro.
170	(format_parse): Add namespace qualifier to the <kuit> tag.
171
1722015-03-12  Daiki Ueno  <ueno@gnu.org>
173
174	* format-kde-kuit.c (format_parse): Remove dead assignment,
175	spotted by clang-analyzer.
176	* x-c.c (phase5_get): Likewise.
177
1782015-03-11  Daiki Ueno  <ueno@gnu.org>
179
180	msgunfmt: Check allocated size for static segment
181	Reported by Max Lin in:
182	http://lists.gnu.org/archive/html/bug-gettext/2015-03/msg00005.html
183	* read-mo.c (get_sysdep_string): Check if the embedded segment
184	size is valid, before adding it to the string length.
185
1862015-03-06  Daiki Ueno  <ueno@gnu.org>
187
188	format-kde: Recognize KUIT markup
189	Reported by Chusslove Illich in:
190	https://lists.gnu.org/archive/html/bug-gettext/2015-01/msg00017.html
191	* format.h (formatstring_kde_kuit): New variable declaration.
192	* format.c (formatstring_parsers): Register formatstring_kde_kuit
193	as a format string parser.
194	* format-kde-kuit.c: New file.
195	* message.h (NFORMATS): Increment.
196	(enum format_type): New enum value format_kde_kuit.
197	* xgettext.c (xgettext_record_flag): Handle format_kde_kuit.
198	* Makefile.am (xgettext_SOURCES): Move libexpat-compat.c to...
199	(libgettextsrc_la_SOURCES): ...here.
200	(xgettext_LDADD): Move @LTLIBEXPAT@ to...
201	(libgettextsrc_la_LDFLAGS): ...here.
202	(FORMAT_SOURCE): Add format-kde-kuit.c.
203
2042015-03-02  Daiki Ueno  <ueno@gnu.org>
205
206	xgettext: Support message syntax checks
207	With this change, xgettext could report common syntactic problems
208	in extracted strings.  The current built-in checks are
209	ellipsis-unicode, space-ellipsis, and quote-unicode.  Those checks
210	can be enabled with --check option of xgettext and disabled with
211	special "xgettext:" comment in source files.
212	Feature suggested by Philip Withnall in:
213	https://savannah.gnu.org/bugs/?44098
214	* message.h (enum syntax_check_type): New enum.
215	(NSYNTAXCHECKS): New constant.
216	(enum is_syntax_check): New enum.
217	(struct message_ty): New field 'do_syntax_check'.
218	(syntax_check_name): New variable declaration.
219	* message.c (syntax_check_name): New variable.
220	* msgl-cat.c (catenate_msgdomain_list): Propagate
221	mp->do_syntax_check.
222	* msgmerge.c (message_merge): Propagate ref->do_syntax_check.
223	* msgl-check.h (syntax_check_message_list): New declaration.
224	* msgl-check.c (syntax_check_ellipsis_unicode): New function.
225	(syntax_check_space_ellipsis): New function.
226	(syntax_check_quote_unicode): New function.
227	(syntax_check_message): New function.
228	(syntax_check_message_list): New function.
229	* read-catalog-abstract.h (po_parse_comment_special): Adjust
230	function declaration.
231	* read-catalog-abstract.c (po_parse_comment_special): Add new
232	argument SCP for syntax checking; all callers changed.
233	* read-catalog.h (DEFAULT_CATALOG_READER_TY): New field
234	'do_syntax_check'.
235	* read-catalog.c (default_constructor): Initialize
236	this->do_syntax_check.
237	(default_copy_comment_state): Propagate this->do_syntax_check.
238	* sentence.h: New file.
239	* sentence.c: New file.
240	* xgettext.c (long_options): Add options --check and --sentence-end.
241	(main): Handle options --check and --sentence-end.
242	(usage): Document options --check and --sentence-end.
243	(remember_a_message): Propagate do_syntax_check value.
244
2452015-02-05  Alex Henrie  <alexhenrie24@gmail.com>  (tiny change)
246
247	xgettext: Wrap location comments to 79 characters
248	Previously, messages were wrapped to 79 characters, but location
249	comments were wrapped to 78 characters.
250	* write-po.c (message_print_comment_filepos): Fix off-by-one in
251	calculating line-wrapping width of location comment.
252
2532015-02-03  Daiki Ueno  <ueno@gnu.org>
254
255	msgfilter: Factor out quoted string handling
256	For later use in xgettext, separate out the scanner part in
257	filter-quote.c into a separate file.  See:
258	<https://savannah.gnu.org/bugs/?44098>.
259	* quote.h: New file split from filter-quote.c.
260	* filter-quote.c: Include "quote.h".
261	(convert_quote_callback): New function.
262	(convert_ascii_quote_to_unicode): Use scan_quoted from quote.h.
263	* Makefile.am (libgettextsrc_la_SOURCES): Add quote.h.
264
2652015-01-29  Daiki Ueno  <ueno@gnu.org>
266
267	msgexec: Add --newline option
268	See the commit 96dde0b for the rationale.
269	* msgexec.c (newline): New variable.
270	(long_options): Add --newline option.
271	(main): Handle --newline option.
272	(usage): Document --newline option.
273	(process_string): Handle --newline option.
274
2752015-01-28  Daiki Ueno  <ueno@gnu.org>
276
277	msgfilter: Add --newline option
278	The filter program was supposed to handle translation without a
279	newline character at the end of line.  This was causing
280	portability problems with standard text processing programs on
281	some platforms (BSD sed, for instance) and not friendly towards
282	POSIX, where a "text file" is required to have an ending newline.
283	The new --newline option controls the behavior.  If it is given,
284	both filter input and output are assumed to end with a newline
285	character.
286	* msgfilter.c (newline): New variable.
287	(long_options): Add --newline option.
288	(main): Handle --newline option.
289	(usage): Document --newline option.
290	(process_string_with_newline): New function which wraps
291	process_string.
292	(process_message): Use process_string_with_newline instead of
293	process_string if --newline is specified.
294
2952015-01-24  Daiki Ueno  <ueno@gnu.org>
296
297	xgettext, msgmerge: Avoid undefined non-null argument behavior
298	* xgettext.c (remember_a_message): Building with gcc's
299	-fsanitize=undefined and running tests triggered:
300	  xgettext.c:2425:17: runtime error: null pointer passed as argument \
301	    2, which is declared to never be null
302	Adjust the argument of strncmp to never be null.
303	* msgmerge.c (message_merge): Likewise for memcpy.
304
3052015-01-23  Daiki Ueno  <ueno@gnu.org>
306
307	build: Fix parallel build from git checkout
308	Since po-gram-gen2.h depends on po-gram-gen.h, an explicit
309	dependency on the YACC rule is needed for parallel compilation.
310	* Makefile.am (po-gram-gen.h): Depend on po-gram-gen.c.
311
3122015-01-16  Daiki Ueno  <ueno@gnu.org>
313
314	desktop: Avoid useless warning for group header
315	Reported by Marek Černocký at:
316	<https://savannah.gnu.org/bugs/?44005>
317	* read-desktop.c (desktop_lex): Fix "invalid non-blank
318	character" check after reading a group header.
319
3202015-01-13  Daiki Ueno  <ueno@gnu.org>
321
322	* x-c.c (phase5_get): Reset raw_expected at the beginning of the
323	function.
324
3252015-01-13  Daiki Ueno  <ueno@gnu.org>
326
327	c++: Make C++11 raw string recognition stricter
328	Reported by Vaclav Slavik at:
329	<http://savannah.gnu.org/bugs/?43970>.
330	* x-c.c (struct token_ty): New field 'escape'.
331	(struct xgettext_token_ty): New field 'escape'.
332	(phase5_get): Recognize raw strings more strictly.  Set 'escape'
333	field of token appropriately for string literals.
334	(extract_parenthesized): Respect 'escape' field of token.
335
3362015-01-13  Daiki Ueno  <ueno@gnu.org>
337
338	c++: Differentiate scanning logic from C
339	To enable raw string literals only in C++, add a flag indicating
340	the current source language is C++.
341	Suggested by Vaclav Slavik at:
342	<https://savannah.gnu.org/bugs/?43970>.
343	* x-c.h (extract_cxx): New declaration.
344	(SCANNERS_C): Use extract_cxx for "C++".
345	* x-c.c (cxx_extensions): New variable.
346	(phase5_get): Respect cxx_extensions and recognize raw string
347	literals only when it is set.
348	(extract_cxx): New function.
349	(extract_c, extract_objc): Reset cxx_extensions.
350
3512014-12-24  Daiki Ueno  <ueno@gnu.org>
352
353	* gettext 0.19.4 released.
354
3552014-12-18  Daiki Ueno  <ueno@gnu.org>
356
357	* x-sh.c (read_word): Use phase1 instead of phase2 for Bash ANSI-C
358	escape sequences.  Also handle '\"' and '\E'.
359
3602014-12-17  Daiki Ueno  <ueno@gnu.org>
361
362	* x-sh.c (phase2_getc): Fix typo: debackslahificication ->
363	debackslashification.
364
3652014-12-12  Daiki Ueno  <ueno@gnu.org>
366
367	* read-desktop.c (desktop_parse): Check and ignore
368	token_type_other.
369
3702014-12-12  Daiki Ueno  <ueno@gnu.org>
371
372	* format-lisp.c (make_intersected_list): Don't dereference
373	potentially released memory.  'append_repeated_to_initial' may
374	release the LIST->element.  Spotted by clang-analyzer.
375	* format-scheme.c (make_intersected_list): Likewise.
376
3772014-12-10  Daiki Ueno  <ueno@gnu.org>
378
379	* msgl-check.c (check_header_entry): Don't declare unused variable
380	'nrequiredfields'.
381
3822014-12-09  Daiki Ueno  <ueno@gnu.org>
383
384	* xgettext.c (arglist_parser_done): Avoid potential
385	null-dereference.  Spotted by clang-analyzer.
386
3872014-12-09  Daiki Ueno  <ueno@gnu.org>
388
389	* msgfmt.c (msgfmt_desktop_bulk): Don't dereference potentially
390	uninitialized value.  Spotted by clang-analyzer.
391
3922014-12-09  Daiki Ueno  <ueno@gnu.org>
393
394	* x-vala.c (phase3_get): Factor out the buffer allocation as a
395	macro.
396
3972014-12-09  Daiki Ueno  <ueno@gnu.org>
398
399	* read-desktop.c (desktop_lex): Undef the APPEND macro before
400	defining.
401
4022014-12-09  Daiki Ueno  <ueno@gnu.org>
403
404	desktop: Simplify the parsing logic
405	* read-desktop.h (desktop_reader_class_ty): Rename 'handle_text'
406	to 'handle_blank'.
407	(desktop_reader_handle_blank): Rename from
408	'desktop_reader_handle_text'.
409	* read-desktop.c (SIZEOF): New macro.
410	(desktop_reader_handle_blank): Rename from
411	'desktop_reader_handle_blank'.
412	(read_until_newline, read_group_name, read_key_name): Remove.
413	Merge into...
414	(desktop_lex): ...here.
415	(desktop_parse): Call 'desktop_lex' instead of read_*.  Don't
416	normalize whitespaces.
417	(enum token_type_ty): New enum.
418	(struct token_ty): New struct.
419	(free_token): New function.
420	* write-desktop.c (msgfmt_desktop_handle_blank): Rename from
421	'msgfmt_desktop_handle_text'.
422	* x-desktop.c: Include "c-ctype.h".
423	(extract_desktop_handle_comment): Normalize whitespaces here.
424	(extract_desktop_handle_blank): Rename from
425	'extract_desktop_handle_text'.
426
4272014-12-07  Daiki Ueno  <ueno@gnu.org>
428
429	vala: Make regex literal handling robuster
430	* x-vala.c (token_type_ty): New enumeration values
431	'token_type_arithmetic_operator' and 'token_type_question'.
432	Remove 'token_type_minus'.
433	(phase3_get): Rewrite regex literal handling right after
434	arithmetic assignment operators.
435
4362014-12-05  Daiki Ueno  <ueno@gnu.org>
437
438	msgunfmt: Avoid integer overflow using xsize
439	* read-mo.c (get_uint32, get_sysdep_string): Use xsum to avoid
440	integer overflow, when checking length and offset fields.
441	Reported by Jakub Wilk at:
442	<https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=772088>.
443
4442014-12-04  Daiki Ueno  <ueno@gnu.org>
445
446	libgettextsrc: Follow plural.c -> pluralx.c file name change
447	* plural-exp.c: Include "../intl/pluralx.c" instead of
448	"../intl/plural.c".  Adjust to commit d2d04ba9.
449
4502014-12-03  Daiki Ueno  <ueno@gnu.org>
451
452	intl: Work around LCOV relative base directory resolution
453	* plural-exp.c: Include "../intl/plural.c" instead of
454	"../../gettext-runtime/intl/plural.c".
455
4562014-12-02  Daiki Ueno  <ueno@gnu.org>
457
458	c: Minor cleanup of the previous commit
459	* x-c.c (phase5_get): Remove redundant check of is_prefix; fit
460	lines to 80 column.
461
4622014-12-02  Daiki Ueno  <ueno@gnu.org>
463
464	c: Support C++11 string literals
465	* x-c.c (phase5_get): Recognize C++ string literals, defined in
466	ISO/IEC 9899:2011.  Reported at:
467	<https://savannah.gnu.org/bugs/?39499>.
468
4692014-12-01  Daiki Ueno  <ueno@gnu.org>
470
471	c#: Recognize Unicode surrogate character pair
472	* x-csharp.c (accumulate_escaped): Change the first argument type
473	from 'struct string_buffer *' to 'struct mixed_string_buffer *',
474	for Unicode surrogate character pair handling; all callers
475	changed.  Reported by Petr Kadlec at:
476	<https://savannah.gnu.org/bugs/?32505>.
477
4782014-11-28  Daiki Ueno  <ueno@gnu.org>
479
480	* msgfilter.c (prepare_read): Simplify the last commit 06e206f5,
481	by always adding 1 to the buffer size.
482
4832014-11-28  Daiki Ueno  <ueno@gnu.org>
484
485	msgfilter: Fix read buffer allocation for empty input
486	* msgfilter.c (prepare_read): Increase allocated buffer size even
487	if the original size is < 2.
488	Reported by Robin McCorkell at:
489	<https://savannah.gnu.org/bugs/?43720>.
490
4912014-11-27  Daiki Ueno  <ueno@gnu.org>
492
493	javascript: Simplify Unicode character escape handling
494	ECMA-262 only supports "\uXXXX" style Unicode character escape and
495	we don't need extra space for character names.
496	* x-javascript.c: Don't include "uniname.h".
497	(phase2_pushback): Decrease to 5.  Don't refer to UNINAME_MAX.
498
4992014-11-18  Daiki Ueno  <ueno@gnu.org>
500
501	* read-mo.c: Include "xsize.h".
502	(get_string): Use xsum3 to avoid overflow, when checking length
503	and offset fields.
504	Reported by Jakub Wilk at:
505	<https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=769901>.
506
5072014-10-28  Daiki Ueno  <ueno@gnu.org>
508
509	xgettext: Allow plural extraction from a single argument function
510	The commit 8137d2b4 was a wrong fix since both singular/plural msgids
511	may point to the same address for Qt4 plural forms.  This reverts
512	the commit and fix the original double-free problem in the right
513	way.  Thanks to Jesper Fehrlund for suggestions.
514	* xgettext.c (arglist_parser_remember_literal): Don't ignore
515	plural argument even if ARGNUM1 equals to ARGNUM2.
516	(arglist_parser_done): Make a copy of best_cp->msgid_plural when
517	passing it to remember_a_message_plural, if it equals to
518	best_cp->msgid.  Also move code conversion logic earlier taking
519	into account of the ownership transfer of best_cp->msgid.
520
5212014-10-28  Daiki Ueno  <ueno@gnu.org>
522
523	xgettext: Fix double-free in singular/plural argument extraction
524	After commit 6aa7b7ed in 2009, xgettext assumed that ARGNUM1 and
525	ARGNUM2 of -k are different.  That could cause an double-free in
526	exceptional cases.
527	Reported by Johan Liljegren in:
528	<https://lists.gnu.org/archive/html/bug-gettext/2014-10/msg00028.html>.
529	* xgettext.c (arglist_parser_remember_literal): Don't assume that
530	ARGNUM1 and ARGNUM2 are different.
531
5322014-10-15  Daiki Ueno  <ueno@gnu.org>
533
534	* gettext 0.19.3 released.
535
5362014-10-08  Daiki Ueno  <ueno@gnu.org>
537
538	* write-po.c (wrap): Report error on incomplete multibyte sequence
539	at the end of input bytes.
540	Reported by Jakub Wilk at:
541	<https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=763820>.
542
5432014-09-30  Daiki Ueno  <ueno@gnu.org>
544
545	* x-c.c (literalstring_parse): Fix octal character escape handling.
546	Reported by Kjartan Maraas at:
547	<https://bugzilla.redhat.com/show_bug.cgi?id=1147535>.
548
5492014-09-24  Daiki Ueno  <ueno@gnu.org>
550
551	* x-python.c (x_python_lex): Move 'token3' variable declaration
552	out of the internal block.
553
5542014-09-24  Daiki Ueno  <ueno@gnu.org>
555
556	* filter-quote.c (BOLD_START, BOLD_END): Don't use non-portable
557	character escape "\e".
558
5592014-08-28  Jonas 'Sortie' Termansen <sortie@maxsi.org>  (tiny change)
560
561	* msginit.c: Include <stdint.h>.
562	(get_user_pwd): Cast uid_t value into uintmax_t and print it with
563	'%ju' format directive.
564
5652014-08-27  Jonas 'Sortie' Termansen <sortie@maxsi.org>  (tiny change)
566
567	* msgfilter.c (process_message): Use proper format directive for
568	printing size_t.
569	* msgexec.c (process_message): Likewise.
570
5712014-08-27  Jonas 'Sortie' Termansen <sortie@maxsi.org>  (tiny change)
572
573	* hostname.c: Add guard around #include <sys/param.h>.
574
5752014-07-14  Daiki Ueno  <ueno@gnu.org>
576
577	* gettext 0.19.2 released.
578
5792014-07-14  Daiki Ueno  <ueno@gnu.org>
580
581	vala: Fix empty string literal handling
582	Similar to the commit 7b2d8d61 on July 11.
583	* x-vala.c (phase3_get): Add missing memory allocation for empty
584	string literal.
585
5862014-07-14  Daiki Ueno  <ueno@gnu.org>
587
588	build: Fix race in post-install removal of *.a
589	There was an implicit dependency between the prerequisites of
590	install-exec-local, which may have caused error with make -jN.
591	Use install-exec-hook to remove the dependency.
592	Reported by Christian Weisgerber in:
593	<https://lists.gnu.org/archive/html/bug-gettext/2014-07/msg00008.html>.
594	* Makefile.am (install-exec-local): Remove.
595	(install-exec-hook): New rule, depend on install-exec-clean.
596
5972014-07-11  Daiki Ueno  <ueno@gnu.org>
598
599	c: Fix empty string literal handling
600	Problem reported by Bernhard Voelker in:
601	<http://lists.gnu.org/archive/html/bug-gnulib/2014-07/msg00059.html>.
602	* x-c.c (phase5_get): Add missing memory allocation for empty
603	string literal.
604
6052014-06-10  Daiki Ueno  <ueno@gnu.org>
606
607	* gettext 0.19.1 released.
608
6092014-06-09  Daiki Ueno  <ueno@gnu.org>
610
611	msgmerge: Disable --color option in --update mode
612	Suggested by 林V字龍 at:
613	<https://lists.gnu.org/archive/html/bug-gettext/2014-06/msg00017.html>.
614	* msgmerge.c (main): Error out when --color and --update are
615	specified at the same time.
616
6172014-06-07  Daiki Ueno  <ueno@gnu.org>
618
619	xgettext: Fix misrecognition of character literals in C and Vala
620	Problem reported by Paul Eggert at
621	<http://lists.gnu.org/archive/html/bug-gettext/2014-06/msg00015.html>.
622	* x-c.c (phase5_get): Make sure to skip contents of character constant.
623	* x-vala.c (phase3_get): Likewise.
624
6252014-06-03  Daiki Ueno  <ueno@gnu.org>
626
627	desktop: Use logical filename as msgid location
628	* read-desktop.c (desktop_parse): Pass logical filename instead of
629	real filename to desktop_reader_handle_pair.
630
6312014-06-03  Daiki Ueno  <ueno@gnu.org>
632
633	desktop: Read LINGUAS file even if LINGUAS envvar is set
634	* msgfmt.c (get_languages): If the LINGUAS envvar is set, use it
635	to restrict the languages list read from the LINGUAS file, not to
636	extend the list.
637	(add_languages): Take an optional DESIRED_LANGUAGES argument.
638
6392014-06-03  Daiki Ueno  <ueno@gnu.org>
640
641	vala: Don't elide comments while parsing string literal
642	* x-vala.c (phase3_get): Use phase1_getc to read characters inside
643	a string literal.
644
6452014-06-02  Daiki Ueno  <ueno@gnu.org>
646
647	msgl-check: Treat missing header errors as warnings
648	Problem reported by Richard Hughes at
649	<https://lists.fedoraproject.org/pipermail/devel/2014-June/199539.html>.
650	After <https://savannah.gnu.org/bugs/?40262>, "msgfmt -c" reports
651	error on missing PO headers.  However, it turned out to be too strict
652	for the projects using Launchpad Translations.  Let's relax the check
653	for the moment and wait for one or two release cycles.
654	* msgl-check.c (check_header_entry): Report missing
655	required headers as warning, instead of error.
656
6572014-06-02  Daiki Ueno  <ueno@gnu.org>
658
659	* gettext 0.19 released.
660
6612014-05-31  Daiki Ueno  <ueno@gnu.org>
662
663	msgexec: Pass previous msgid to the child process
664	Suggested by Pavel Kharitonov in:
665	<http://lists.gnu.org/archive/html/bug-gettext/2014-05/msg00022.html>.
666	* msgexec.c (process_string): Set MSGEXEC_PREV_* envvar.
667
6682014-05-31  Daiki Ueno  <ueno@gnu.org>
669
670	msgfilter: Pass previous msgid to the child process
671	Suggested by Pavel Kharitonov in:
672	<http://lists.gnu.org/archive/html/bug-gettext/2014-05/msg00022.html>.
673	* msgfilter.c (process_message): Set MSGFILTER_PREV_* envvar.
674
6752014-05-19  Daiki Ueno  <ueno@gnu.org>
676
677	* Makefile.am (po-gram-gen2.h): Adjust the directory to which
678	po-gram-gen.h, for VPATH build.
679
6802014-05-15  Stanislav Brabec  <sbrabec@suse.cz>  (tiny change)
681
682	msgfilter: Implement plural support
683	* msgfilter.c (process_message): Set or unset
684	MSGFILTER_MSGID_PLURAL and MSGFILTER_PLURAL_FORM.
685
6862014-05-15  Stanislav Brabec  <sbrabec@suse.cz>  (tiny change)
687
688	msgexec: Implement plural support
689	* msgexec.c (process_string): Set or unset MSGEXEC_MSGID_PLURAL.
690	(process_message): Set or unset MSGEXEC_PLURAL_FORM.
691
6922014-05-14  Daiki Ueno  <ueno@gnu.org>
693
694	msgfmt: Report error on accelerator mismatch
695	* msgl-check.c (check_pair): Increment error count on missing
696	accelerator character or too many accelerators.
697
6982014-05-13  Daiki Ueno  <ueno@gnu.org>
699
700	msgfmt: Accumulate errors when parsing the PO header
701	Problem reported by Peter Eisentraut at
702	<https://savannah.gnu.org/bugs/?40262>.
703	* msgl-check.c (check_header_entry): Return the number of errors.
704	(check_message): Check the return value of check_header_entry.
705
7062014-05-13  Felipe Sateler <fsateler@debian.org>  (tiny change)
707
708	project-id: Add missing quotes around `pwd` for basename
709	Problem reported at <http://bugs.debian.org/654779>.
710	* project-id: Quote argument of the basename command.
711
7122014-05-12  Daiki Ueno  <ueno@gnu.org>
713
714	msgfilter: Fix quote handling of doubled grave charaters
715	* filter-quote.c (convert_ascii_quote_to_unicode): Fix handling of
716	doubled grave characters.
717
7182014-05-12  Daiki Ueno  <ueno@gnu.org>
719
720	* msgfmt.c (add_languages): New function split from get_languages.
721	(get_languages): Use add_languages instead of manually parsing
722	LINGUAS envvar with strtok_r.
723
724	* x-c.h (literalstring_c): Remove unnecessary DLL_VARIABLE.
725	* xgettext.c (arglist_parser_alloc): Use LET_NONE instead of 0.
726	(arglist_parser_remember): Likewise.
727	* xgettext.h (enum literalstring_escape_type): New enum value
728	LET_NONE.
729
7302014-05-10  Guido Flohr  <guido@imperia.net>
731
732	msgattrib: Add --empty option to clear msgstr
733	* msgattrib.c (REMOVE_TRANSLATION): New enum value.
734	(long_options): Add --empty.
735	(main): Set REMOVE_TRANSLATION flag when --empty is given.
736	(usage): Show help of --empty.
737	(process_message_list): Handle REMOVE_TRANSLATION flag.
738
7392014-05-09  Daiki Ueno  <ueno@gnu.org>
740
741	vala: Interpret string literals lazily
742	* x-vala.c (P7_EOF, P7_STRING_END, P7_QUOTES, P7_QUOTE, P7_NEWLINE)
743	(UNICODE, IS_UNICODE, UNICODE_VALUE): Remove.
744	(phase7_getc): Remove.
745	(phase7_ungetc): Remove.
746	(phase3_get): Use 'phase2_get' directly to extract string
747	literals; use 'arglist_parser_remember_literal' instead of
748	'arglist_parser_remember'.
749	(literalstring_c): Declare external variable.
750	(extract_balanced): Remove the
751	'xgettext_current_source_encoding' setting to prevent encoding
752	conversion around 'arglist_parser_done'.
753	(token_ty): New field 'escape'.
754	* x-vala.h (SCANNERS_VALA): Register 'literalstring_c' as a
755	literalstring_parser.
756
7572014-05-09  Daiki Ueno  <ueno@gnu.org>
758
759	c: Interpret string literals lazily
760	* x-c.c (P7_EOF, P7_STRING_END, P7_QUOTES, P7_QUOTE, P7_NEWLINE)
761	(UNICODE, IS_UNICODE, UNICODE_VALUE): Remove.
762	(phase7_get): Remove.
763	(phase7_ungetc): Remove.
764	(phase5_get): Use 'phase3_get' directly to extract string
765	literals; use 'arglist_parser_remember_literal' instead of
766	'arglist_parser_remember'.
767	(literalstring_parse): New function.
768	(literalstring_c): New variable.
769	(extract_parenthesized): Remove the
770	'xgettext_current_source_encoding' setting to prevent encoding
771	conversion around 'arglist_parser_done'.
772	* x-c.h (SCANNERS_C): Register 'literalstring_c' as a
773	literalstring_parser.
774	(literalstring_c): New variable declaration.
775
7762014-05-09  Daiki Ueno  <ueno@gnu.org>
777
778	xgettext: Provide a way to interpret string literals lazily
779	* xgettext.c (extract_ty): New field 'literalstring_parser'.
780	(current_literalstring_parser): New variable.
781	(extract_from_file): Set 'current_literalstring_parser'.
782	(savable_comment_convert_encoding): New function.
783	(arglist_parser_remember_literal): New function.
784	(arglist_parser_remember): Call 'arglist_parser_remember_literal'.
785	(arglist_parser_done): Call literalstring_parser on msgctxt,
786	msgid, and msgid_plural before calling 'remember_a_message';
787	convert encoding of msgid_comment.
788	* x-*.h: Register 'literalstring_parser' through SCANNER_*.
789	* xgettext.h (enum literalstring_escape_type): New enum.
790	(struct literalstring_parser): New struct.
791	(struct partial_call): New fields 'msgctxt_escape',
792	'msgid_escape', and 'msgid_plural_escape'.
793	(arglist_parser_remember_literal): New function declaration.
794	(savable_comment_convert_encoding): New function declaration.
795
7962014-05-03  Daiki Ueno  <ueno@gnu.org>
797
798	xgettext: Recognize prefixed comment tag
799	Reported by Jiang Xin in
800	<http://article.gmane.org/gmane.comp.version-control.git/246462>.
801	* xgettext.c (remember_a_message): Discard a string prefixed to
802	the comment tag from all remaining comment lines.
803
8042014-05-03  Daiki Ueno  <ueno@gnu.org>
805
806	c: Support C99-style Unicode character escapes
807	* x-c.c: Include assert.h and po-charset.h.
808	(P7_QUOTES, P7_QUOTE, P7_NEWLINE): Redefine as a negative integer.
809	(P7_EOF, P7_STRING_END): New definitions.
810	(UNICODE): New macro.
811	(IS_UNICODE): New macro.
812	(UNICODE_VALUE): New macro.
813	(phase7_getc): Recognize "\unnnn" and "\Unnnnnnnn".
814	(phase5_get): Use mixed_string_buffer for parse string literal.
815
8162014-05-02  Daiki Ueno  <ueno@gnu.org>
817
818	vala: Support C99-style Unicode character escapes
819	* x-vala.c: Include assert.h and po-charset.h.
820	(P7_QUOTES, P7_QUOTE, P7_NEWLINE): Redefine as a negative integer.
821	(P7_EOF, P7_STRING_END): New definitions.
822	(UNICODE): New macro.
823	(IS_UNICODE): New macro.
824	(UNICODE_VALUE): New macro.
825	(phase7_getc): Recognize "\unnnn" and "\Unnnnnnnn".
826	(phase3_get): Use mixed_string_buffer for parse string literal.
827
8282014-05-02  Daiki Ueno  <ueno@gnu.org>
829
830	xgettext: Factor out commonly used mixed_string_buffer
831	* x-python.c (init_mixed_string_buffer)
832	(mixed_string_buffer_append_byte)
833	(mixed_string_buffer_append_unicode_grow)
834	(mixed_string_buffer_append_unicode)
835	(mixed_string_buffer_flush_utf16_surr)
836	(mixed_string_buffer_flush_curr_buffer)
837	(mixed_string_buffer_append, mixed_string_buffer_result)
838	(free_mixed_string_buffer): Move to...
839	* xgettext.c: ...here.
840	(mixed_string_buffer_alloc): Rename from init_mixed_string_buffer.
841	(mixed_string_buffer_append_to_curr_buffer): Rename from
842	mixed_string_buffer_append_byte.
843	(mixed_string_buffer_append_to_utf8_buffer): Rename from
844	mixed_string_buffer_append_unicode.
845	(mixed_string_buffer_grow_utf8_buffer): Rename from
846	mixed_string_buffer_append_unicode_grow.
847	(mixed_string_buffer_append_char): Split from
848	mixed_string_buffer_append.
849	(mixed_string_buffer_append_unicode): Split from
850	mixed_string_buffer_append.
851	(mixed_string_buffer_done): New function merging
852	mixed_string_buffer_result and free_mixed_string_buffer.
853	* xgettext.h (mixed_string_buffer): New struct moved from
854	x-python.c; add logical_file_name and line_number fields.
855	(mixed_string_buffer_alloc): New function declaration.
856	(mixed_string_buffer_append_char): New function declaration.
857	(mixed_string_buffer_append_unicode): New function declaration.
858	(mixed_string_buffer_done): New function declaration.
859	* x-javascript.c (init_mixed_string_buffer)
860	(mixed_string_buffer_append_byte)
861	(mixed_string_buffer_append_unicode_grow)
862	(mixed_string_buffer_append_unicode)
863	(mixed_string_buffer_flush_utf16_surr)
864	(mixed_string_buffer_flush_curr_buffer)
865	(mixed_string_buffer_append, mixed_string_buffer_result)
866	(free_mixed_string_buffer): Remove.
867
8682014-04-30  Daiki Ueno  <ueno@gnu.org>
869
870	scheme: Recognize GIMP script-fu extension _"abc"
871	* x-scheme.c (read_object): Recognize _"abc".
872
8732014-04-30  Daiki Ueno  <ueno@gnu.org>
874
875	format-python-brace: Limit acceptable format specifiers
876	Problem reported by Kovid Goyal at:
877	<https://savannah.gnu.org/bugs/?41668>.
878	* format-python-brace.c (parse_directive): Only recognize a single
879	nested format directive or the standard format specifiers as
880	format specifiers.
881
8822014-04-22  Roumen Petrov  <bugtrack@roumenpetrov.info>  (tiny change)
883
884	build: Use Automake 'subdir-objects' option
885	* Makefile.am (AUTOMAKE_OPTIONS): Add 'subdir-objects'.
886
8872014-04-21  Daiki Ueno  <ueno@gnu.org>
888
889	msgfilter: Fix single quote handling in the quot filter
890	* filter-quote.c (convert_ascii_quote_to_unicode): Fix single
891	quote handling to accept multiple quotations in a string.
892
8932014-04-17  Daiki Ueno  <ueno@gnu.org>
894
895	xgettext: Strip multiple ".in" suffixes from the file name.
896	* xgettext.c (main): Strip multiple ".in" suffixes.
897
8982014-04-16  Daiki Ueno  <ueno@gnu.org>
899
900	* msgfmt.c (get_languages): Allow any whitespace character as a
901	list separator in LINGUAS.
902
9032014-04-15  Daiki Ueno  <ueno@gnu.org>
904
905	msgfilter: Add 'quot' and 'boldquot' built-in filters
906	* filter-quote.c: New file.
907	* filters.h (ascii_quote_to_unicode, ascii_quote_to_unicode_bold):
908	New function declaration.
909	* msgfilter.c (main): Handle 'quot' and 'boldquot' filters.
910	* Makefile.am (msgfilter_SOURCES): Add filter-quote.c.
911
9122014-04-04  Daiki Ueno  <ueno@gnu.org>
913
914	* xgettext.c (main): Warn user if invalid encoding name is
915	specified with the --from-code option.
916	Reported by jaroslav.fojtik@evolvsys.cz in
917	<https://lists.gnu.org/archive/html/bug-gettext/2014-03/msg00034.html>.
918
9192014-04-04  Daiki Ueno  <ueno@gnu.org>
920
921	msgfmt: Add support for Desktop Entry files
922	* write-desktop.h: New file.
923	* write-desktop.c: New file.
924	* msgfmt.c (desktop_mode, desktop_locale_name)
925	(desktop_template_name, desktop_base_directory, desktop_keywords)
926	(desktop_default_keywords): New variables.
927	(long_options): Add --desktop and --template options for Desktop
928	Entry mode.
929	(get_languages): New function.
930	(msgfmt_desktop_bulk): New function which implements bulk
931	operation mode for Desktop Entry mode.
932	(main): Handle Desktop Entry mode options; call
933	'msgfmt_desktop_bulk' if -d option is seen.
934	* Makefile.am (noinst_HEADERS): Add write-desktop.h.
935	(msgfmt_SOURCES): Add write-desktop.c
936
9372014-04-04  Daiki Ueno  <ueno@gnu.org>
938
939	xgettext: Add support for Desktop Entry files
940	* read-desktop.h: New file.
941	* read-desktop.c: New file.
942	* x-desktop.h: New file.
943	* x-desktop.h: New file.
944	* xgettext.c (main): Regiser keywords for Desktop Entry mode.
945	(usage): Mention Desktop Entry source language.
946	(language_to_extractor): Add Desktop Entry rule.
947	(extension_to_language): Add Desktop Entry rule.
948	* Makefile.am (noinst_HEADERS): Add read-desktop.h and x-desktop.h.
949	(xgettext_SOURCES): Add x-desktop.c.
950
9512014-03-26  Aurélien Gâteau <mail@agateau.com>  (tiny change)
952
953	msgfmt: Add --source option to generate .java file instead of .class
954	* msgfmt.c (java_output_source): New variable.
955	(long_options, main, usage): Add --source option.
956	* write-java.h (msgdomain_write_java): Add OUTPUT_SOURCE argument.
957	* write-java.c (msgdomain_write_java): Generate .java file instead
958	of .class if OUTPUT_SOURCE argument is given.
959	Reported at <https://savannah.gnu.org/bugs/?41766>.
960
9612014-03-25  Daiki Ueno  <ueno@gnu.org>
962
963	Extend --add-location option to suppress line number output
964	The --add-location option of msgattrib, msgcat, msgcomm, msgconv,
965	msgen, msgfilter, msggrep, msgmerge, msguniq, and xgettext
966	commands now got new semantics.  It takes an optional argument
967	'never', 'full', or 'file', to control the format of "#: ..."
968	comments.
969	The default catalog reader changed to always remember file
970	positions so the line number part can be suppressed in output
971	phase rather than input phase.
972	Feature requested in:
973	<https://lists.gnu.org/archive/html/bug-gettext/2013-08/msg00039.html>.
974	* read-catalog.h (line_comment): Abolish.
975	(DEFAULT_CATALOG_READER_TY): Remove handle_filepos_comments field.
976	* read-catalog.c (line_comment): Abolish.
977	(default_destructor, default_copy_comment_state)
978	(default_reset_comment_state, default_comment_filepos): Always
979	remember filepos.
980	(default_parse_brief, read_catalog_stream): Adjust to the change.
981	* write-po.h (enum filepos_comment_type): New enum.
982	(message_print_style_filepos): New function declaration.
983	(handle_filepos_comment_option): New function declaration.
984	* write-po.c (message_print_style_filepos): New function
985	(handle_filepos_comment_option): New function.
986	(message_print_comment_filepos): Uniquify mp->filepos elements
987	ignoring line number if filepos_comment_type is
988	filepos_comment_file.
989	* msgfmt.c: Adjust to the change.
990	* msgattrib.c (long_options, main): Allow --add-location option to
991	take an optional format specifier.
992	* msgcat.c (long_options, main): Likewise.
993	* msgcomm.c (long_options, main): Likewise.
994	* msguniq.c (long_options, main): Likewise.
995	* xgettext.c (long_options, main): Likewise.
996	* msgconv.c (long_options, main): Likewise; add a new option -n as
997	an alias of --add-location.
998	* msgen.c (long_options, main): Likewise.
999	* msgfilter.c (long_options, main): Likewise.
1000	* msggrep.c (long_options, main): Likewise.
1001	* msgmerge.c (long_options, main): Likewise.
1002
10032014-03-12  Daiki Ueno  <ueno@gnu.org>
1004
1005	xgettext: Fix infloop on loading Glade files with non-DL expat
1006	* libexpat-compat.c: Keep the references to
1007	XML_GetCurrent{Line,Column}Number symbols before including
1008	libexpat-compat.h, since they are redefined.
1009
10102014-03-10  Daiki Ueno  <ueno@gnu.org>
1011
1012	php: Recognize single and double quotes around heredoc label
1013	Problem reported by Byrial Jensen in:
1014	<https://lists.gnu.org/archive/html/bug-gettext/2012-04/msg00001.html>.
1015	Based on the patch by Andreas Stricker posted as:
1016	<https://lists.gnu.org/archive/html/bug-gettext/2012-04/msg00002.html>.
1017	* x-php.c (phase4_get): Strip quotes around heredoc label.
1018
10192013-11-20  Daiki Ueno  <ueno@gnu.org>
1020
1021	xgettext: Add E4X support to JavaScript scanner
1022	Reported by Piotr Drąg at: <https://savannah.gnu.org/bugs/?40125>.
1023	* xgettext.h (enum lexical_context_ty): New enumeration items
1024	lc_xml_open_tag, lc_xml_close_tag, lc_xml_content.
1025	* x-javascript.c (phase5_scan_xml_markup): New function.
1026	(phase5_get): Handle '<', '>', '/', '=', '{', and '}' specially
1027	to support E4X.
1028	(enum token_type_ty): New enumeration item token_type_equal.
1029	(xml_element_depth): New variable.
1030	(inside_embedded_in_xml): New variable.
1031	(extract_javascript): Initialize those variables.
1032
10332013-11-14  Daiki Ueno  <ueno@gnu.org>
1034
1035	* x-javascript.c (phase3_getc): Make sure to call comment_line_end
1036	after parsing C++ style comment line.
1037	Reported by Illimar Tambek at: <http://savannah.gnu.org/bugs/?40572>.
1038
10392013-11-14  Daiki Ueno  <ueno@gnu.org>
1040
1041	* x-javascript.c (comment_line_end): Add missing chars_to_remove
1042	argument; all callers changed.
1043	Reported by Illimar Tambek at: <http://savannah.gnu.org/bugs/?40573>.
1044
10452013-11-11  Daiki Ueno  <ueno@gnu.org>
1046
1047	* x-c.c (phase5_get): Fix misuse of a logical operator.
1048	* x-perl.c (extract_quotelike_pass3): Likewise.
1049	* x-vala.c (phase3_get): Likewise.
1050	Reported by David Binderman at: <https://savannah.gnu.org/bugs/?40528>.
1051
10522013-10-23  Daiki Ueno  <ueno@gnu.org>
1053
1054	* read-catalog-abstract.c (catalog_reader_parse): Clear
1055	error_message_count before parsing, rather than after.  The
1056	variable may be > 0 before calling the PO parser, when xgettext
1057	handles mutiple files.
1058	Problem reported by Emil Wojak in
1059	<https://lists.gnu.org/archive/html/bug-gettext/2013-10/msg00005.html>.
1060
10612013-10-15  Peter Eisentraut  <peter_e@gmx.net>  (tiny change)
1062
1063	* msgl-check.c (check_header_entry): Adjust the default value of
1064	PO-Revision-Date to xgettext output.  Reported at
1065	<https://savannah.gnu.org/bugs/?40261>.
1066
10672013-08-29  Daiki Ueno  <ueno@gnu.org>
1068
1069	* po-gram-gen.y (message): Free memory allocated for
1070	msgid_pluralform.
1071	(string_list): Free memory allocated for STRING.
1072	(prev_string_list): Free memory allocated for PREV_STRING.
1073	Reported by Alexander Potashev in
1074	<https://lists.gnu.org/archive/html/bug-gettext/2013-08/msg00043.html>.
1075
10762013-08-13  Miguel Angel Arruga Vivas  <rosen644835@gmail.com>
1077
1078	* x-glade.c (start_element_glade1): Use extract_all variable.
1079	(start_element_glade2): Ignore --extract-all option.
1080	(start_element_gtkbuilder): Likewise.
1081	(start_element_handler): Initialize p->extract_string to false.
1082
10832013-08-12  Daiki Ueno  <ueno@gnu.org>
1084
1085	* xgettext.c (remember_a_message): Handle multi-line extracted
1086	comments.
1087	Reported by Gabor Kelemen in
1088	<http://lists.gnu.org/archive/html/bug-gettext/2013-08/msg00026.html>.
1089
10902013-08-09  Daiki Ueno  <ueno@gnu.org>
1091
1092	* x-gsettings.c (extract_gsettings): Add guard when expat is not
1093	available at compile time.
1094
10952013-08-08  Miguel Angel Arruga Vivas  <rosen644835@gmail.com> (tiny change)
1096
1097	Fix copyright year in xgettext version string.
1098	* xgettext.c (main): Update copyright year.
1099
11002013-08-06  Daiki Ueno  <ueno@gnu.org>
1101
1102	xgettext: add support for GSettings schema file
1103	* x-gsettings.h: New file.
1104	* x-gsettings.c: New file.
1105	* xgettext.c: Include x-gsettings.h.
1106	(flag_table_vala): New variable.
1107	(usage): Mention GSettings source language.
1108	(language_to_extractor): Add GSettings rule.
1109	(extension_to_language): Add GSettings rule.
1110	* Makefile.am (noinst_HEADERS): Add x-gsettings.h.
1111	(xgettext_SOURCES): Add x-gsettings.c.
1112	* FILES: Update.
1113
11142013-08-05  Daiki Ueno  <ueno@gnu.org>
1115
1116	* xgettext.c (main): Allow exntension with multiple
1117	dots. e.g. .gschema.xml.
1118
11192013-03-02  Miguel Angel Arruga Vivas  <rosen644385@gmail.com>
1120
1121	Extract libexpat compatibility layer.
1122	* libexpat-compat.h, libexpat-compat.c: Extracted from x-glade.c
1123	* x-glade.c: Use libexpat-compat.h
1124
11252013-07-11  Daiki Ueno  <ueno@gnu.org>
1126
1127	Fix crash when parsing '..' with non-string argument.
1128	Reported by Koen Dergent at <http://savannah.gnu.org/bugs/?39458>.
1129	* x-lua.c (extract_balanced): Skip stray '..'.
1130
11312013-06-27  Daiki Ueno  <ueno@gnu.org>
1132
1133	* x-python.c (phase5_pushback): Increment size to 2.
1134
11352013-06-25  Daiki Ueno  <ueno@gnu.org>
1136
1137	Fix handling of \u escape sequences in Tcl.
1138	* x-tcl.c (do_getc_escaped): Fix handling of \u.
1139	Reported by Guido Berhoerster in
1140	<https://lists.gnu.org/archive/html/bug-gettext/2013-06/msg00022.html>.
1141
11422013-06-17  Daiki Ueno  <ueno@gnu.org>
1143
1144	* x-python.c (init_flag_table_python): Enable python-brace-format
1145	by default.
1146
11472013-06-17  Daiki Ueno  <ueno@gnu.org>
1148
1149	* x-glade.c (start_element_null): New function.
1150	(end_element_null): New function.
1151	(element_parser_null): New variable.
1152	(start_element_handler): Use element_parser_null if the top-level
1153	element does not indicate a valid Glade file.
1154	(do_extract_glade): Initialize element_parser to
1155	element_parser_null rather than NULL.
1156
11572013-06-13  Miguel Angel Arruga Vivas  <rosen644835@gmail.com>
1158            Daiki Ueno  <ueno@gnu.org>
1159
1160	Support for GtkBuilder file format in the Glade scanner.
1161	* x-glade.h (EXTENSIONS_GLADE): Recognize .ui.
1162	* x-glade.c (element_parser): New struct.
1163	(start_element_glade1): New function split from start_element_handler.
1164	(end_element_glade1): New function split from end_element_handler.
1165	(start_element_glade2): New function split from start_element_handler.
1166	(end_element_glade2): New function split from end_element_handler.
1167	(start_element_gtkbuilder): New function.
1168	(end_element_gtkbuilder): New function.
1169	(element_parser_glade1): New variable.
1170	(element_parser_glade2): New variable.
1171	(element_parser_gtkbuilder): New variable.
1172	(start_element_handler): Delegate the actual parsing logic to
1173	specific element_parser.
1174	(end_element_handler): Likewise.
1175	Thanks to Miguel Ángel Arruga Vivas for the initial implementation
1176	and the discussion in
1177	<https://lists.gnu.org/archive/html/bug-gettext/2013-03/msg00074.html>
1178	footnote 2.
1179
11802013-06-10  Daiki Ueno  <ueno@gnu.org>
1181
1182	* Makefile.am: Use $(MKDIR_P) instead of $(mkdir_p).
1183	Suggested by Stefano Lattarini in
1184	<https://lists.gnu.org/archive/html/bug-gettext/2013-04/msg00044.html>.
1185
11862013-06-04  Daiki Ueno  <ueno@gnu.org>
1187
1188	Support for Vala.
1189	* x-vala.h: New file.
1190	* x-vala.c: New file.
1191	* xgettext.c: Include x-vala.h.
1192	(flag_table_vala): New variable.
1193	(main): Invoke init_flag_table_vala, x_vala_extract_all,
1194	x_vala_keyword.
1195	(usage): Mention Vala source language.
1196	(language_to_extractor): Add Vala rule.
1197	(extension_to_language): Add Vala rule.
1198	* Makefile.am (noinst_HEADERS): Add x-vala.h.
1199	(xgettext_SOURCES): Add x-vala.c.
1200	* FILES: Update.
1201
12022013-05-21  Daiki Ueno  <ueno@gnu.org>
1203
1204	* x-javascript.c (phase7_getuc): Treat non-legitimate character
1205	escape sequences more strictly.
1206
12072013-05-20  Pavel Kharitonov  <ineiev@gnu.org>  (tiny change)
1208
1209	Add --previous option to msgattrib.
1210	* msgattrib.c (long_options, main, process_message_list):
1211	(usage): Add --previous option.
1212
12132013-05-12  Daiki Ueno  <ueno@gnu.org>
1214
1215	Fix end-of-string handling in JavaScript scanner.
1216	* x-javascript.c (phase7_getuc): Remove unused BACKSLASH_COUNTER
1217	argument; all callers changed.
1218	Reported by Andreas Stricker in
1219	<http://lists.gnu.org/archive/html/bug-gettext/2013-04/msg00051.html>.
1220
12212013-05-03  Daiki Ueno  <ueno@gnu.org>
1222
1223	* user-email.sh.in (lowercase_sed): Don't use non-portable
1224	character escape in sed 's' command.
1225	Reported by Ben Fox-Moore in
1226	<http://lists.gnu.org/archive/html/bug-gettext/2013-05/msg00003.html>
1227	and thanks to Ineiev for the suggestion.
1228
12292013-04-26  Daiki Ueno  <ueno@gnu.org>
1230
1231	Support for Python brace format.
1232	* message.h (format_type): New enum value 'format_python_brace.
1233	(NFORMATS): Increment.
1234	* message.c (format_language): Add format_python_brace entry.
1235	(format_language_pretty): Likewise.
1236	* format.h (formatstring_python_brace): New declaration.
1237	* format-python-brace.c: New file.
1238	* format.c (formatstring_parsers): Add formatstring_python_brace.
1239	* x-python.h (SCANNERS_PYTHON): Refar to formatstring_python_brace.
1240	* xgettext.c (xgettext_record_flag): Handle format_python_brace.
1241	* FILES: Update.
1242
12432013-04-22  Daiki Ueno  <ueno@gnu.org>
1244
1245	Make msgfmt --check-header more reliable.
1246	* msgl-check.c (check_header_entry): Don't use c_strstr to parse
1247	message header.
1248
12492013-04-22  Daiki Ueno  <ueno@gnu.org>
1250
1251	Support CR/LF line terminators in Python sources even on Unix.
1252	* x-python.c (phase0_getc, phase0_ungetc): New functions.
1253	(phase1_getc): Use them instead of calling getc/ungetc directly.
1254
12552013-04-22  Daiki Ueno  <ueno@gnu.org>
1256
1257	Support explicit string concatenation in Python.
1258	* x-python.c (enum token_type_ty): New enumeration item
1259	token_type_plus.
1260	(free_token): New function.
1261	(phase5_get): Recognize token_type_plus.
1262	(x_python_lex): Handle string concatenation with '+'.
1263	(extract_balanced): Handle token_type_plus.
1264
12652013-04-18  Daiki Ueno  <ueno@gnu.org>
1266
1267	* xgettext.c (usage): Wrap long lines in --help output.
1268
12692013-04-17  Andreas Stricker  <astricker@futurelab.ch>
1270
1271	Support for JavaScript.
1272	* message.h (format_type): New enum value 'format_javascript'.
1273	(NFORMATS): Increment.
1274	* message.c (format_language): Add format_javascript entry.
1275	(format_language_pretty): Likewise.
1276	* format.h (formatstring_javascript): New declaration.
1277	* format-javascript.c: New file.
1278	* format.c (formatstring_parsers): Add formatstring_javascript.
1279	* x-javascript.h: New file.
1280	* x-javascript.c: New file.
1281	* xgettext.c: Include x-javascript.h.
1282	(flag_table_javascript): New variable.
1283	(main): Invoke init_flag_table_javascript, x_javascript_extract_all,
1284	x_javascript_keyword.
1285	(usage): Mention JavaScript source language.
1286	(xgettext_record_flag): Handle format_javascript.
1287	(language_to_extractor): Add JavaScript rule.
1288	(extension_to_language): Add JavaScript rule.
1289	* Makefile.am (noinst_HEADERS): Add x-javascript.h.
1290	(FORMAT_SOURCE): Add format-javascript.c.
1291	(xgettext_SOURCES): Add x-javascript.c.
1292	* FILES: Update.
1293
12942013-04-16  Ľubomír Remák  <lubomirr@lubomirr.eu>
1295
1296	Support for escape sequences added in Lua 5.2.
1297	* x-lua.c (phase3_get): Add \x and \z escape sequences.
1298
12992013-04-11  Ľubomír Remák  <lubomirr@lubomirr.eu>
1300
1301	Support for Lua.
1302	* message.h (format_type): New enum value 'format_lua'.
1303	(NFORMATS): Increment.
1304	* message.c (format_language): Add format_lua entry.
1305	(format_language_pretty): Likewise.
1306	* format.h (formatstring_lua): New declaration.
1307	* format-lua.c: New file.
1308	* format.c (formatstring_parsers): Add formatstring_lua.
1309	* x-lua.h: New file.
1310	* x-lua.c: New file.
1311	* xgettext.c: Include x-lua.h.
1312	(flag_table_lua): New variable.
1313	(main): Invoke init_flag_table_lua, x_lua_extract_all,
1314	x_lua_keyword.
1315	(usage): Mention Lua source language.
1316	(xgettext_record_flag): Handle format_lua.
1317	(language_to_extractor): Add Lua rule.
1318	(extension_to_language): Add Lua rule.
1319	* Makefile.am (noinst_HEADERS): Add x-lua.h.
1320	(FORMAT_SOURCE): Add format-lua.c.
1321	(xgettext_SOURCES): Add x-lua.c.
1322	* FILES: Update.
1323
13242013-03-15  Miguel Ángel Arruga Vivas  <rosen644835@gmail.com>
1325            Daiki Ueno  <ueno@gnu.org>
1326
1327	Extract msgctxt from Glade input files.
1328	Reported at <https://savannah.gnu.org/bugs/?34506>
1329	* x-glade.c (struct element_state): Add field 'extract_context'.
1330	(start_element_handler): Check "context" attribute if the string
1331	contains msgctxt.
1332	(end_element_handler): Extract msgctxt if extract_context is set.
1333
13342013-02-25  Daiki Ueno  <ueno@gnu.org>
1335
1336	* Makefile.am (libgettextsrc_la_CPPFLAGS): Define to specify Woe32
1337	DLL export flags.
1338
13392013-01-09  Andreas Stricker  <astricker@futurelab.ch>  (tiny change)
1340
1341	* po-xerror.c: Include error.h for error_message_count.
1342	* read-catalog-abstract.c: Likewise.
1343
13442013-01-06  Daiki Ueno  <ueno@gnu.org>
1345
1346	* msgl-fsearch.c (message_fuzzy_index_ty): Don't use float-derived
1347	integer SHORT_MSG_MAX to define array.
1348	(message_fuzzy_index_alloc): Allocate memory for 'short_messages'
1349	field dynamically.
1350	(message_fuzzy_index_free): Free it.
1351
13522013-01-03  Daiki Ueno  <ueno@gnu.org>
1353
1354	* xgettext.c (construct_header): Fix memory leak.
1355
13562012-12-25  Daiki Ueno  <ueno@gnu.org>
1357
1358	* gettext-0.18.2 released.
1359
13602012-06-03  Jim Meyering  <jim@meyering.net>
1361
1362	* msginit.c: Spelling fixes.
1363	* write-catalog.c: Likewise.
1364
13652012-05-03  Bruno Haible  <bruno@clisp.org>
1366
1367	Document msgfmt option --endianness.
1368	* msgfmt.c (usage): Document the option --endianness.
1369	Reported by Paul Martin <pm@debian.org> via
1370	Santiago Vila <sanvila@unex.es>.
1371
13722012-01-26  Bruno Haible  <bruno@clisp.org>
1373
1374	Modernize quoting.
1375	* hostname.c (usage): Quote 'like this', not `like this', as per the
1376	recent change to the GNU coding standards.
1377	* msgattrib.c (usage): Likewise.
1378	* msgcat.c (usage): Likewise.
1379	* msgcmp.c (usage): Likewise.
1380	* msgcomm.c (usage): Likewise.
1381	* msgconv.c (usage): Likewise.
1382	* msgen.c (usage): Likewise.
1383	* msgexec.c (usage): Likewise.
1384	* msgfilter.c (usage): Likewise.
1385	* msgfmt.c (usage, msgfmt_set_domain, msgfmt_frob_new_message):
1386	Likewise.
1387	* msggrep.c (usage): Likewise.
1388	* msginit.c (usage): Likewise.
1389	* msgl-cat.c (catenate_msgdomain_list): Likewise.
1390	* msgl-check.c (check_pair, check_header_entry): Likewise.
1391	* msgmerge.c (usage): Likewise.
1392	* msgunfmt.c (usage): Likewise.
1393	* msguniq.c (usage): Likewise.
1394	* recode-sr-latin.c (usage): Likewise.
1395	* urlget.c (usage): Likewise.
1396	* write-po.c (wrap): Likewise.
1397	* xgettext.c (main, usage, remember_a_message, construct_header,
1398	language_to_extractor): Likewise.
1399	* po-gram-gen.y: Likewise.
1400	* po-error.h: Likewise.
1401	* po-lex.h: Likewise.
1402	* read-catalog-abstract.h: Likewise.
1403	* x-c.c: Likewise.
1404
14052011-10-04  Bruno Haible  <bruno@clisp.org>
1406
1407	xgettext for Scheme: Understand guile 2.0 comment syntax, part 2.
1408	* x-scheme.c (read_object): Extract and don't ignore block comments.
1409	Understand the #|...|# syntax of SRFI-30. (Code copied from x-lisp.c.)
1410
14112011-10-04  Bruno Haible  <bruno@clisp.org>
1412
1413	xgettext for Scheme: Understand guile 2.0 comment syntax, part 1.
1414	* x-scheme.c (read_object): Understand !# as a block comment terminator
1415	even when not surrounded by newlines.
1416	Reported by David Pirotte <david@altosw.be>
1417	via Santiago Vila <sanvila@unex.es>.
1418
14192011-07-29  Bruno Haible  <bruno@clisp.org>
1420
1421	Fix xgettext crash when extracting a message with plural that is
1422	excluded.
1423	* xgettext.h (remember_a_message): Document the return value.
1424	* xgettext.c (arglist_parser_done): Handle the case where
1425	remember_a_message returned NULL.
1426	* x-smalltalk.c (extract_smalltalk): Likewise.
1427	* x-ycp.c (extract_parenthesized): Likewise.
1428	Reported by Jean-Luc Coulon <jean-luc.coulon@wanadoo.fr> via
1429	Santiago Vila <sanvila@unex.es>.
1430
14312011-06-13  Bruno Haible  <bruno@clisp.org>
1432
1433	Avoid compilation error on Solaris 7 with cc.
1434	* msgl-fsearch.c (SHORT_MSG_MAX): Define more directly with SunPRO C.
1435
14362011-06-04  Bruno Haible  <bruno@clisp.org>
1437
1438	Avoid link error when linking statically on AIX 7.
1439	* Makefile.am (xgettext_LDADD): Add LTLIBICONV.
1440
14412011-04-13  Bruno Haible  <bruno@clisp.org>
1442
1443	* msgcat.c (usage): Fix description of --use-first.
1444	* msgcomm.c (usage): Fix typo.
1445	Reported by Matthijs Kooijman.
1446
14472011-06-04  Bruno Haible  <bruno@clisp.org>
1448
1449	Update after __attibute__ is no longer defined by gnulib.
1450	* msgl-check.c (formatstring_error_logger): Use __attribute__ only with
1451	compiler versions that support it.
1452
14532011-06-02  Bruno Haible  <bruno@clisp.org>
1454
1455	Use u8_mbtoucr instead of u8_mbtouc in some places.
1456	* po-lex.c (mbfile_getc): Call u8_mbtoucr instead of u8_mbtouc.
1457	* x-csharp.c (phase2_getc): Likewise.
1458	* x-python.c (phase2_getc): Likewise.
1459	Needed after libunistring changed on 2010-11-13.
1460
14612011-06-02  Bruno Haible  <bruno@clisp.org>
1462
1463	Update after gnulib changed.
1464	* msgexec.c: Include spawn-pipe.h instead of pipe.h.
1465	* msginit.c: Likewise.
1466	* read-csharp.c: Likewise.
1467	* read-java.c: Likewise.
1468	* read-resources.c: Likewise.
1469	* read-tcl.c: Likewise.
1470	* write-resources.c: Likewise.
1471
14722010-11-20  Bruno Haible  <bruno@clisp.org>
1473
1474	Port to uClibc.
1475	* write-po.c (wrap): Treat uClibc like a non-glibc platform.
1476	* format-c-parse.h (HANDLE_I_FLAG): Likewise.
1477	* po-charset.c (po_lex_charset_set): Likewise.
1478	* recode-sr-latin.c (process): Likewise.
1479	* x-python.c (set_current_file_source_encoding): Likewise.
1480	* xgettext.c (main): Likewise.
1481
14822010-11-13  Ihar Hrachyshka  <ihar.hrachyshka@gmail.com>  (tiny change)
1483
1484	* plural-table.c (plural_table): Added Belarusian, copied from Russian
1485	and Ukrainian.
1486
14872010-11-07  Bruno Haible  <bruno@clisp.org>
1488
1489	format-c.c: Share code with libintlext.
1490	* format-c-parse.h: New file, extracted from format-c.c.
1491	* format-c.c: Include it.
1492	(format_parse_entrails): Remove function.
1493	* Makefile.am (FORMAT_SOURCE): Add format-c-parse.h.
1494	* FILES: Update.
1495
14962010-11-07  Bruno Haible  <bruno@clisp.org>
1497
1498	format-c.c: Prepare for sharing code with libintlext.
1499	* format-c.c: Move INVALID_* macros.
1500	(IF_OOM): New macro.
1501	(SYSDEP_SEGMENTS_PROCESSED): New macro.
1502	(FAT_BASIC_MASK): New enumeration value.
1503	(HANDLE_I_FLAG): New macro.
1504	(format_parse_entrails): New function, extracted from format_parse.
1505	Use the IF_OOM, SYSDEP_SEGMENTS_PROCESSED, HANDLE_I_FLAG macros. Handle
1506	I64 as a size specifier on native Win32.
1507	(format_parse): Rewritten to call format_parse_entrails.
1508
15092010-11-07  Bruno Haible  <bruno@clisp.org>
1510
1511	format-c.c: Prepare for sharing code with libintlext.
1512	* format-c.c (INVALID_ANGLE_BRACKET, INVALID_IGNORED_ARGUMENT): New
1513	macros.
1514	(format_parse): Use them.
1515
15162011-06-07  Bruno Haible  <bruno@clisp.org>
1517
1518	Rely more on libtool.
1519	* Makefile.am (libgettextsrc_la_LDFLAGS): Use -no-undefined always.
1520	Don't use @LTNOUNDEF@.
1521
15222010-06-06  Bruno Haible  <bruno@clisp.org>
1523
1524	Bug fixes in libgettextpo.
1525	* msgl-check.h (check_message_list): Add ignore_untranslated_messages,
1526	ignore_fuzzy_messages arguments.
1527	* msgl-check.c (check_plural, check_message_list): Likewise.
1528	* msgfmt.c (main): Update.
1529
15302010-06-04  Bruno Haible  <bruno@clisp.org>
1531
1532	* gettext-0.18.1 released.
1533
15342010-06-03  Bruno Haible  <bruno@clisp.org>
1535
1536	xgettext: Recognize language of files ending in .perl.
1537	* x-perl.h (EXTENSIONS_PERL): Recognize .perl.
1538	Suggested by Ævar Arnfjörð Bjarmason <avarab@gmail.com>.
1539
15402010-06-03  Bruno Haible  <bruno@clisp.org>
1541
1542	urlget: Don't attempt to run the Java program if we don't install it.
1543	* Makefile.am (USEJAVA): New variable.
1544	(DEFS): Define USEJAVA.
1545	* urlget.c (fetch): Don't try to use Java is USEJAVA is 0.
1546
15472010-05-19  Bruno Haible  <bruno@clisp.org>
1548
1549	Link with libunistring, if it exists.
1550	* Makefile.am (LDADD, libgettextsrc_la_LDFLAGS): Add LTLIBUNISTRING.
1551
15522010-05-18  Bruno Haible  <bruno@clisp.org>
1553
1554	Correct program dependencies.
1555	* Makefile.am (OTHERPROGDEPENDENCIES): New variable.
1556	(recode_sr_latin_LDADD): Remove redundant variable.
1557	(recode_sr_latin_DEPENDENCIES): Use OTHERPROGDEPENDENCIES.
1558	(hostname_DEPENDENCIES, urlget_DEPENDENCIES): New variables.
1559
15602010-05-09  Bruno Haible  <bruno@clisp.org>
1561
1562	* gettext-0.18 released.
1563
15642010-05-09  Bruno Haible  <bruno@clisp.org>
1565
1566	* msgattrib.c (main): Update year in --version output.
1567	* msgcat.c (main): Likewise.
1568	* msgcmp.c (main): Likewise.
1569	* msgcomm.c (main): Likewise.
1570	* msgconv.c (main): Likewise.
1571	* msgen.c (main): Likewise.
1572	* msgexec.c (main): Likewise.
1573	* msgfilter.c (main): Likewise.
1574	* msgfmt.c (main): Likewise.
1575	* msggrep.c (main): Likewise.
1576	* msginit.c (main): Likewise.
1577	* msgmerge.c (main): Likewise.
1578	* msgunfmt.c (main): Likewise.
1579	* msguniq.c (main): Likewise.
1580	* xgettext.c (main): Likewise.
1581
15822010-04-25  Bruno Haible  <bruno@clisp.org>
1583
1584	Update support of object-pascal-format strings.
1585	* format-pascal.c: Update description of format strings.
1586	(enum format_arg_type): Remove FAT_INTEGER64.
1587	(format_parse): Accept an empty digit sequence before ':'. Treat 'd',
1588	'u', 'x' the same way.
1589	(main): Update.
1590
15912010-04-05  Bruno Haible  <bruno@clisp.org>
1592
1593	Interoperability with mono versions >= 2009-02-27.
1594	* write-csharp.c (write_csharp_code): Emit a TableInitialized field.
1595	Change ReadResources so that it may be called multiple times, even
1596	concurrently.
1597	Reported by Guido Flohr  <guido@imperia.net>
1598
15992010-03-31  Guido Flohr  <guido@imperia.net>
1600
1601	Improve how xgettext handles Perl syntax ambiguities.
1602	* x-perl.c(enum token_type_ty): New enumeration items
1603	token_type_number, token_type_object.
1604	(struct token_ty): New field 'last_type'.
1605	(token2string): Handle token_type_number, token_type_object.
1606	(free_token): Likewise.
1607	(prefer_division_over_regexp): Remove variable.
1608	(extract_variable): Recognize token of type token_type_object.
1609	(prefer_regexp_over_division): New function.
1610	(last_token_type): Renamed from last_token.
1611	(x_perl_prelex): Assign the token's last_type. Recognize token of type
1612	token_type_number. Don't special-case "grep" and "split". Invoke
1613	prefer_regexp_over_division for disambiguation.
1614	(token_stack_dump): Handle token_type_number, token_type_object.
1615	(x_perl_lex): Assign the token's last_type. Update last_token_type
1616	intelligently.
1617	(collect_message): Invoke prefer_regexp_over_division for
1618	disambiguation.
1619	(extract_balanced): Don't set last_token_type here. Handle
1620	token_type_number, token_type_object.
1621	(extract_perl): Initialize last_token_type here.
1622	Reported by Guillem Jover <guillem@debian.org> via Santiago Vila.
1623
1624	* x-perl.c (x_perl_prelex): Clarify interpolate_keywords arguments.
1625
1626	* x-perl.c (eaten_here): Renamed from here_eaten.
1627	(phase1_getc, get_here_document, skip_pod, extract_perl): Update.
1628
16292010-03-13  Bruno Haible  <bruno@clisp.org>
1630
1631	New options --color, --style for many programs.
1632	* msgattrib.c: Include color.h.
1633	(long_options): Add options --color, --style.
1634	(main): Implement them.
1635	(usage): Document them.
1636	* msgcomm.c: Include color.h.
1637	(long_options): Add options --color, --style.
1638	(main): Implement them.
1639	(usage): Document them.
1640	* msgconv.c: Include color.h.
1641	(long_options): Add options --color, --style.
1642	(main): Implement them.
1643	(usage): Document them.
1644	* msgen.c: Include color.h.
1645	(long_options): Add options --color, --style.
1646	(main): Implement them.
1647	(usage): Document them.
1648	* msgfilter.c: Include color.h.
1649	(long_options): Add options --color, --style.
1650	(main): Implement them.
1651	(usage): Document them.
1652	* msggrep.c: Include color.h.
1653	(long_options): Add options --color, --style.
1654	(main): Implement them.
1655	(usage): Document them.
1656	* msginit.c: Include color.h.
1657	(long_options): Add options --color, --style.
1658	(main): Implement them.
1659	(usage): Document them.
1660	* msgmerge.c: Include color.h.
1661	(long_options): Add options --color, --style.
1662	(main): Implement them.
1663	(usage): Document them.
1664	* msgunfmt.c: Include color.h.
1665	(long_options): Add options --color, --style.
1666	(main): Implement them.
1667	(usage): Document them.
1668	* msguniq.c: Include color.h.
1669	(long_options): Add options --color, --style.
1670	(main): Implement them.
1671	(usage): Document them.
1672	* xgettext.c: Include color.h.
1673	(long_options): Add options --color, --style.
1674	(main): Implement them.
1675	(usage): Document them.
1676	Reported by Kalle Olavi Niemitalo <kon@iki.fi>
1677	via Santiago Vila <sanvila@unex.es>.
1678
16792010-02-20  Bruno Haible  <bruno@clisp.org>
1680
1681	* plural-table.c (plural_table): Add Bulgarian.
1682	Reported by Roumen Petrov <transl@roumenpetrov.info>.
1683
16842010-02-20  Bruno Haible  <bruno@clisp.org>
1685
1686	* plural-table.c (plural_table): Sort in the same order as
1687	gettext.texi.
1688
16892010-02-17  Bruno Haible  <bruno@clisp.org>
1690
1691	Fix error in conversion of large PO file (> 4000 msgs) to Java class.
1692	* write-java.c: Include minmax.h.
1693	(write_java1_init_statements, write_java2_init_statements): New
1694	functions, extracted from write_java_code.
1695	(write_java_code): If there are many messages, split the initialization
1696	code into several static methods.
1697	Reported by sasha <predator@savannah.gnu.org>.
1698
16992009-12-21  Bruno Haible  <bruno@clisp.org>
1700
1701	* lang-table.c (language_table): Add Mapudungun, Lower Sorbian,
1702	Upper Sorbian, Mohawk, Yakut, Southern Sami, Lule Sami, Inari Sami,
1703	Skolt Sami.
1704	* msginit.c (catalogname_for_locale): Add Mapudungun, Lower Sorbian,
1705	Upper Sorbian, Yakut, Inari Sami, Skolt Sami.
1706
17072009-12-12  Bruno Haible  <bruno@clisp.org>
1708
1709	* *.h, *.c, *.y: Untabify.
1710
17112009-11-28  Bruno Haible  <bruno@clisp.org>
1712
1713	* x-perl.c (extract_variable): Fix tp->type when returning at EOF.
1714	Reported by Guido Flohr <guido@imperia.bg>.
1715
17162009-11-15  Bruno Haible  <bruno@clisp.org>
1717
1718	* x-python.c: Update comments regarding PEP 0263.
1719
17202009-09-05  Bruno Haible  <bruno@clisp.org>
1721
1722	* write-po.c (wrap): Remove unused initialization.
1723	* x-glade.c (comment_handler): Likewise.
1724	* xgettext.c (flag_context_list_table_insert): Add comment.
1725	Found by clang's static analyzer.
1726
17272009-08-30  Bruno Haible  <bruno@clisp.org>
1728
1729	Accommodate the Solaris iconv_open function, which cannot convert
1730	directly between many pairs of encodings.
1731	* msgl-iconv.h (convert_string_directly): Renamed from convert_string.
1732	* msgl-iconv.c: Include xstriconveh.h.
1733	(convert_string_directly): Renamed from convert_string.
1734	(convert_string): New function.
1735	(convert_string_list, convert_prev_msgid, convert_msgid,
1736	iconvable_string_list, iconvable_prev_msgid, iconvable_msgid): Change
1737	argument type to 'const iconveh_t *'.
1738	(convert_msgstr, iconvable_string, iconvable_msgstr): Likewise. Invoke
1739	xmem_cd_iconveh instead of xmem_cd_iconv.
1740	(iconv_message_list_internal, is_message_list_iconvable): Invoke
1741	iconveh_open, iconveh_close instead of iconv_open, iconv_close.
1742	* xgettext.c (from_current_source_encoding): Update.
1743
17442009-08-16  Bruno Haible  <bruno@clisp.org>
1745
1746	Reduce dependency on project-id heuristic.
1747	* msginit.c (project_id): Add header argument. Return first part of
1748	Project-Id-Version field if present.
1749	(fill_header): Update.
1750
17512009-08-13  Bruno Haible  <bruno@clisp.org>
1752
1753	* msgexec.c: Include msgl-charset.h.
1754	(main): Invoke compare_po_locale_charsets.
1755	(process_string): Add comment.
1756	* msgfilter.c (process_message): Likewise.
1757
17582009-08-10  Bruno Haible  <bruno@clisp.org>
1759
1760	Avoid a gcc warning.
1761	* msgfilter.c (sub_argv): Change type to 'const char **'.
1762	(main): Update.
1763
17642009-08-10  Bruno Haible  <bruno@clisp.org>
1765
1766	Use type 'ucs4_t' more often. Avoids gcc warnings on Cygwin.
1767	* po-lex.c (struct mbchar): Change type of 'uc'.
1768	(mb_width): Update.
1769	* read-properties.c (read_escaped_string): Change type of local
1770	variable 'uc'.
1771	* read-stringtable.c (phase2_getc): Likewise.
1772	* write-properties.c (conv_to_java, write_escaped_string): Change type
1773	of local variables 'uc', 'uc1', 'uc2'.
1774	* write-java.c (string_hashcode, write_java_string): Likewise.
1775	* write-csharp.c (construct_class_name, write_csharp_string): Change
1776	type of local variable 'uc'.
1777	* write-tcl.c (write_tcl_string): Likewise.
1778	* write-qt.c (conv_to_iso_8859_1, conv_to_utf16): Likewise.
1779	* x-python.c (phase2_getc, mixed_string_buffer_append): Likewise.
1780	(mixed_string_buffer_append_unicode): Change argument type to 'ucs4_t'.
1781	* x-java.c (string_buffer_append): Change type of local variable 'uc'.
1782	(string_buffer_append_unicode): Change argument type to 'ucs4_t'.
1783	* x-csharp.c (phase2_getc): Change type of local variable 'uc'.
1784
17852009-08-04  Bruno Haible  <bruno@clisp.org>
1786
1787	Port msgfilter to Woe32 platforms.
1788	* msgfilter.c: Don't include errno.h, fcntl.h, io.h, sys/select.h,
1789	pipe.h, wait-process.h. Include pipe-filter.h instead.
1790	(HAVE_SELECT): Remove undefine.
1791	(nonintr_close, nonintr_read, nonintr_write, nonintr_select): Remove
1792	functions.
1793	(O_NONBLOCK): Remove fallback.
1794	(IS_EAGAIN): Remove macro.
1795	(struct locals): New type.
1796	(prepare_write, done_write, prepare_read, done_read): New functions.
1797	(generic_filter): Implement using pipe_filter_ii_execute.
1798
17992009-07-27  Часлав Илић (Chusslove Illich)  <caslav.ilic@gmx.net>
1800
1801	Extend recode-sr-latin to also transform letters with accents.
1802	* filter-sr-latin.c (table): Add entries for letters with accents.
1803	(IS_UPPERCASE_CYRILLIC): Recognize also U+04E2, U+04EE.
1804	(serbian_to_latin): Update.
1805
18062009-06-06  Bruno Haible  <bruno@clisp.org>
1807
1808	* x-perl.c (x_perl_prelex): Recognize the perl 5.10 operator '//'.
1809	Reported by Kevin Ryde <user42@zip.com.au>.
1810
18112009-05-29  Bruno Haible  <bruno@clisp.org>
1812
1813	Improve msgfmt error message about format directive mismatches
1814	in msgstr[i].
1815	* format.h (struct formatstring_parser): Add pretty_msgid argument to
1816	'check' member.
1817	* format-awk.c (format_check): Add pretty_msgid argument.
1818	* format-boost.c (format_check): Likewise.
1819	* format-c.c (format_check): Likewise.
1820	* format-csharp.c (format_check): Likewise.
1821	* format-elisp.c (format_check): Likewise.
1822	* format-gcc-internal.c (format_check): Likewise.
1823	* format-gfc-internal.c (format_check): Likewise.
1824	* format-java.c (format_check): Likewise.
1825	* format-kde.c (format_check): Likewise.
1826	* format-librep.c (format_check): Likewise.
1827	* format-lisp.c (format_check): Likewise.
1828	* format-pascal.c (format_check): Likewise.
1829	* format-perl-brace.c (format_check): Likewise.
1830	* format-perl.c (format_check): Likewise.
1831	* format-php.c (format_check): Likewise.
1832	* format-python.c (format_check): Likewise.
1833	* format-qt.c (format_check): Likewise.
1834	* format-qt-plural.c (format_check): Likewise.
1835	* format-scheme.c (format_check): Likewise.
1836	* format-sh.c (format_check): Likewise.
1837	* format-tcl.c (format_check): Likewise.
1838	* format-ycp.c (format_check): Likewise.
1839	* format.c (check_msgid_msgstr_format_i): Pass either "msgid" or
1840	"msgid_plural" as pretty_msgid argument.
1841
18422009-05-23  Bruno Haible  <bruno@clisp.org>
1843
1844	* Makefile.am (libgettextsrc_la_LINK, msgattrib_LINK, msgcat_LINK,
1845	msgcomm_LINK, msgconv_LINK, msgen_LINK, msgfilter_LINK, msggrep_LINK,
1846	msgmerge_LINK, msguniq_LINK, xgettext_LINK): Add $(AM_V_lt) flag.
1847
18482009-05-16  Bruno Haible  <bruno@clisp.org>
1849
1850	Extract comments meant for translators from Glade input files.
1851	* xgettext.h (remember_a_message): Add 'extracted_comment' argument.
1852	* xgettext.c (remember_a_message): Likewise.
1853	(arglist_parser_done): Update.
1854	* x-glade.c (struct element_state): Add field 'extracted_comment'.
1855	(start_element_handler): Fill it.
1856	(end_element_handler): Pass it to 'remember_a_message', free it.
1857	* x-awk.c (extract_parenthesized): Update.
1858	* x-c.c (extract_parenthesized): Update.
1859	* x-csharp.c (extract_parenthesized): Update.
1860	* x-elisp.c (read_object): Update.
1861	* x-java.c (extract_parenthesized): Update.
1862	* x-librep.c (read_object): Update.
1863	* x-lisp.c (read_object): Update.
1864	* x-perl.c (extract_variable, interpolate_keywords, extract_balanced):
1865	Update.
1866	* x-php.c (extract_balanced): Update.
1867	* x-python.c (extract_balanced): Update.
1868	* x-rst.c (extract_rst): Update.
1869	* x-scheme.c (read_object): Update.
1870	* x-sh.c (read_word, read_command): Update.
1871	* x-smalltalk.c (extract_smalltalk): Update.
1872	* x-tcl.c (read_command): Update.
1873	* x-ycp.c (extract_parenthesized): Update.
1874	Reported by <sandro.bonazzola@gmail.com>
1875	at <https://savannah.gnu.org/bugs/?26570>.
1876
18772009-03-29  Bruno Haible  <bruno@clisp.org>
1878
1879	* message.h (format_type): New enum value 'format_gfc_internal'.
1880	(NFORMATS): Increment.
1881	* message.c (format_language): Add format_gfc_internal entry.
1882	(format_language_pretty): Likewise.
1883	* format.h (formatstring_gfc_internal): New declaration.
1884	* format-gfc-internal.c: New file.
1885	* format.c (formatstring_parsers): Add formatstring_gfc_internal.
1886	* x-c.h (SCANNERS_C): In language GCC-source, also keep track of
1887	gfc-internal-format format strings.
1888	* x-c.c (init_flag_table_gcc_internal): Also register flags for
1889	gfc-internal-format.
1890        * xgettext.c (xgettext_record_flag): Store gfc-internal-format flags in
1891	flag_table_gcc_internal.
1892        * Makefile.am (FORMAT_SOURCE): Add format-gfc-internal.c.
1893        * FILES: Update.
1894	Reported by Göran Uddeborg <goeran@uddeborg.se>.
1895
18962009-01-27  Bruno Haible  <bruno@clisp.org>
1897
1898	* message.h (format_type): New enum value 'format_qt_plural'.
1899	(NFORMATS): Increment.
1900	* message.c (format_language): Add format_qt_plural entry.
1901	(format_language_pretty): Likewise.
1902	* format.h (formatstring_qt_plural): New declaration.
1903	* format-qt-plural.c: New file.
1904	* format.c (formatstring_parsers): Add formatstring_qt_plural.
1905	* xgettext.h (struct flag_context_ty): Add fields is_format3,
1906	pass_format3.
1907	* xgettext.c (struct extractor_ty): Add field formatstring_parser3.
1908	(inherited_context, flag_context_list_table_insert): Handle the new
1909	flag_context_ty fields.
1910	(xgettext_record_flag): Handle format_qt_plural.
1911	(current_formatstring_parser3): New variable.
1912	(extract_from_file): Initialize it.
1913	(set_format_flags_from_context): Handle the new flag_context_ty fields.
1914	(remember_a_message, remember_a_message_plural): Handle
1915	current_formatstring_parser3. Avoid adding a c-format flag to a message
1916	already flagged as qt-plural-format.
1917	(arglist_parser_remember): Allow argnum1 and argnum2 in the call shape
1918	to be the same.
1919	(arglist_parser_done): Add special recognition of qt-plural-format
1920	strings.
1921	(language_to_extractor): Set the formatstring_parser3 in the result.
1922	* Makefile.am (FORMAT_SOURCE): Add format-qt-plural.c.
1923	* FILES: Update.
1924
19252009-01-27  Bruno Haible  <bruno@clisp.org>
1926
1927	* plural-table.c (plural_table): Put Turkish under nplurals=2.
1928	Reported by Sertaç Ö. Yıldız <sertacyildiz@gmail.com>.
1929
19302009-01-26  Bruno Haible  <bruno@clisp.org>
1931
1932	* msgattrib.c (main): Update year in --version output.
1933	* msgcat.c (main): Likewise.
1934	* msgcmp.c (main): Likewise.
1935	* msgcomm.c (main): Likewise.
1936	* msgconv.c (main): Likewise.
1937	* msgen.c (main): Likewise.
1938	* msgexec.c (main): Likewise.
1939	* msgfilter.c (main): Likewise.
1940	* msgfmt.c (main): Likewise.
1941	* msggrep.c (main): Likewise.
1942	* msginit.c (main): Likewise.
1943	* msgmerge.c (main): Likewise.
1944	* msgunfmt.c (main): Likewise.
1945	* msguniq.c (main): Likewise.
1946	* xgettext.c (main): Likewise.
1947	* urlget.c (main): Likewise.
1948
19492009-01-25  Bruno Haible  <bruno@clisp.org>
1950
1951	Fix bug introduced on 2005-10-01.
1952	* msgl-charset.c (compare_po_locale_charsets): Fix recognition of
1953	header entry.
1954
19552009-01-25  Bruno Haible  <bruno@clisp.org>
1956
1957	Fix bug introduced on 2008-10-04.
1958	* read-catalog-abstract.c (po_parse_comment_special): Initialize
1959	*rangep.
1960	Reported by Ralf Wildenhues <Ralf.Wildenhues@gmx.de>.
1961
19622009-01-18  Bruno Haible  <bruno@clisp.org>
1963
1964	* msgfmt.c: Include str-list.h.
1965	(main): When --statistics and --verbose are both specified, output the
1966	input file name in front of the statistics line.
1967	Suggested by Vincent Lefevre <vincent@vinc17.org>.
1968
19692009-01-18  Bruno Haible  <bruno@clisp.org>
1970
1971	Allow multiple levels of verbosity in 'msgfmt'.
1972	* msgfmt.h (verbose): Change from 'bool' to 'int'.
1973	* msgfmt.c (verbose): Likewise.
1974	(main): Increment 'verbose' for each --verbose option.
1975	* write-java.c (msgdomain_write_java): Update.
1976	* write-csharp.c (msgdomain_write_csharp): Update.
1977	* write-resources.c (msgdomain_write_csharp_resources): Update.
1978
19792009-01-18  Bruno Haible  <bruno@clisp.org>
1980
1981	* str-list.h (string_list_join): Change the separator argument,
1982	allowing an entire separator string.
1983	* str-list.c (string_list_join): Likewise.
1984
19852009-01-18  Bruno Haible  <bruno@clisp.org>
1986
1987	Fix a '(null)' in an error message. Bug present since gettext-0.16.
1988	* read-catalog.h (DEFAULT_CATALOG_READER_TY): Add a file_name field.
1989	* read-catalog.c (read_catalog_stream): Initialize it.
1990	* x-po.c (extract): Likewise.
1991	* msgfmt.c (read_catalog_file_msgfmt): Likewise.
1992	(msgfmt_parse_debrief): Use the file_name field from the catalog reader
1993	instead of gram_pos.file_name.
1994
19952009-01-17  Bruno Haible  <bruno@clisp.org>
1996
1997	Update after gnulib changed.
1998	* Makefile.am (RELOCATABLE_STRIP): New variable.
1999
20002008-12-07  Bruno Haible  <bruno@clisp.org>
2001
2002	* write-po.c (message_print_comment_filepos): Use a 'const' pointer
2003	where possible.
2004	* write-stringtable.c (write_message): Likewise.
2005
20062008-12-07  Bruno Haible  <bruno@clisp.org>
2007
2008	Avoid gcc -Wredundant-decls warnings.
2009	* x-awk.c: Don't include the specification header file twice.
2010	* x-c.c: Likewise.
2011	* x-csharp.c: Likewise.
2012	* x-elisp.c: Likewise.
2013	* x-glade.c: Likewise.
2014	* x-java.c: Likewise.
2015	* x-librep.c: Likewise.
2016	* x-lisp.c: Likewise.
2017	* x-perl.c: Likewise.
2018	* x-php.c: Likewise.
2019	* x-po.c: Likewise.
2020	* x-python.c: Likewise.
2021	* x-rst.c: Likewise.
2022	* x-scheme.c: Likewise.
2023	* x-sh.c: Likewise.
2024	* x-smalltalk.c: Likewise.
2025	* x-tcl.c: Likewise.
2026	* x-ycp.c: Likewise.
2027
20282008-11-14  Bruno Haible  <bruno@clisp.org>
2029
2030	* msgfilter.c: Include xvasprintf.h, xsetenv.h.
2031	(process_message): Set the environment variables MSGFILTER_MSGCTXT,
2032	MSGFILTER_MSGID, MSGFILTER_LOCATION.
2033
20342008-10-28  Bruno Haible  <bruno@clisp.org>
2035
2036	* msgmerge.c (match_domain): Remove space between '#' and 'pragma' for
2037	OpenMP.
2038	Reported by Lamarque Eric <eric.lamarque@free.fr>.
2039
20402008-10-04  Bruno Haible  <bruno@clisp.org>
2041
2042	* plural-distrib.h (struct plural_distribution): New field 'histogram'.
2043	* format.h (check_msgid_msgstr_format_i, check_msgid_msgstr_format):
2044	Add range argument.
2045	* format.c (check_msgid_msgstr_format_i): Add range argument. Set
2046	strict_checking to false if, due to the range, the plural forms applies
2047	to only one value of n.
2048	(check_msgid_msgstr_format): Add range argument.
2049	* msgl-check.c (plural_expression_histogram): New function.
2050	(check_plural_eval, check_plural): Update.
2051	(check_pair): Pass the range to check_msgid_msgstr_format.
2052	(check_message_list): Update.
2053	* msgmerge.c (message_merge): Pass the range to
2054	check_msgid_msgstr_format_i.
2055	Reported by Anatoly Techtonik <techtonik@gmail.com>
2056	via <https://savannah.gnu.org/bugs/?24433>.
2057
20582008-10-04  Bruno Haible  <bruno@clisp.org>
2059
2060	* message.h (struct argument_range): New type.
2061	(has_range_p): New macro.
2062	(struct message_ty): Add field 'range'.
2063	* message.c (message_alloc): Initialize the 'range' field.
2064	(message_copy): Copy the 'range' field.
2065	* read-catalog-abstract.h (po_parse_comment_special): Add 'rangep'
2066	argument.
2067	* read-catalog-abstract.c: Include <limits.h>.
2068	(po_parse_comment_special): Add 'rangep' argument. Parse the range
2069	description syntax.
2070	* read-catalog.h (DEFAULT_CATALOG_READER_TY): Add 'range' field.
2071	* read-catalog.c (default_constructor): Initialize the 'range' field.
2072	(default_copy_comment_state): Copy the 'range' field into the new
2073	message.
2074	(default_reset_comment_state): Clear the 'range' field.
2075	(default_comment_special): Update.
2076	* write-po.h (make_range_description_string): New declaration.
2077	* write-po.c (make_range_description_string): New function.
2078	(message_print_comment_flags): Also print the range.
2079	* write-stringtable.c (write_message): Likewise.
2080	* msgl-cat.c: Include <limits.h>.
2081	(catenate_msgdomain_list): Fill in the range of the resulting messages.
2082	* msgl-equal.c (message_equal): Compare also the ranges.
2083	* msgmerge.c (message_merge): Fill in the range of the resulting
2084	message. Set it fuzzy if a range was introduced or extended.
2085	* xgettext.c (remember_a_message): Set the range of the new message.
2086
20872008-10-03  Bruno Haible  <bruno@clisp.org>
2088
2089	* plural-distrib.h: New file.
2090	* format.h: Include plural-distrib.h.
2091	(check_msgid_msgstr_format_i, check_msgid_msgstr_format): Replace
2092	plural_distribution, plural_distribution_length arguments with a single
2093	distribution argument.
2094	* format.c (check_msgid_msgstr_format_i, check_msgid_msgstr_format):
2095	Likewise.
2096	* msgl-check.h: Include plural-distrib.h.
2097	(check_plural_eval, check_message): Replace plural_distribution,
2098	plural_distribution_length arguments with a single distribution
2099	argument.
2100	* msgl-check.c (check_plural_eval): Likewise. Free array in case of
2101	error.
2102	(check_plural): Replace plural_distribution, plural_distribution_length
2103	arguments with a single distribution argument. Don't store a
2104	distribution result when there are errors.
2105	(check_pair, check_message): Replace plural_distribution,
2106	plural_distribution_length arguments with a single distribution
2107	argument.
2108	(check_message_list): Update.
2109	* msgmerge.c (message_merge: Replace plural_distribution,
2110	plural_distribution_length arguments with a single distribution
2111	argument.
2112	(match_domain): Update.
2113	* Makefile.am (noinst_HEADERS): Add plural-distrib.h.
2114	* FILES: Mention plural-distrib.h.
2115
21162008-09-28  Bruno Haible  <bruno@clisp.org>
2117
2118	* write-catalog.c (msgdomain_list_print): Open the output stream in
2119	binary mode, for consistency with the term_styled_ostream or fd_stream
2120	based case.
2121
21222008-09-28  Bruno Haible  <bruno@clisp.org>
2123
2124	* Makefile.am (msg*_DEPENDENCIES, xgettext_DEPENDENCIES,
2125	recode_sr_latin_DEPENDENCIES): Add $(WOE32_LDADD).
2126
21272008-09-28  Bruno Haible  <bruno@clisp.org>
2128
2129	* msgexec.c (process_string): Don't die from SIGPIPE if the subprocess
2130	does not want our input.
2131	Reported by Rainer Tammer <tammer@tammer.net>.
2132
21332008-09-28  Bruno Haible  <bruno@clisp.org>
2134
2135	* Makefile.am (msgcmp_LDADD): Add MSGMERGE_LIBM.
2136	Reported by Rainer Tammer <tammer@tammer.net>.
2137
21382008-09-27  Bruno Haible  <bruno@clisp.org>
2139
2140	* lang-table.c (language_table): Add Asturian, Crimean Tatar, Friulian,
2141	Papiamento.
2142	* msginit.c (catalogname_for_locale): Add Asturian, Friulian,
2143	Papiamento.
2144
21452008-09-26  Bruno Haible  <bruno@clisp.org>
2146
2147	* write-catalog.c (cmp_by_msgid, cmp_by_filepos): Compare the msgctxt
2148	fields if the msgid fields are the same.
2149	Reported by Rainer Tammer <tammer@tammer.net>.
2150
21512008-09-15  Bruno Haible  <bruno@clisp.org>
2152
2153	* Makefile.am (msg*_DEPENDENCIES, xgettext_DEPENDENCIES,
2154	recode_sr_latin_DEPENDENCIES): New variables.
2155
21562008-09-15  Bruno Haible  <bruno@clisp.org>
2157
2158	* msgl-fsearch.h: Include stdbool.h.
2159	(message_fuzzy_index_search): Add 'heuristic' argument.
2160	* msgl-fsearch.c (message_fuzzy_index_search): Likewise. If !heuristic,
2161	consider all messages.
2162	* msgmerge.c (struct definitions_ty): Add fields 'curr_findex',
2163	'curr_findex_init_lock'.
2164	(definitions_init): Initialize them.
2165	(definitions_set_current_list): Clear the previous curr_findex.
2166	(definitions_init_curr_findex): New function.
2167	(definitions_search_fuzzy): Do fuzzy matching by calling
2168	message_fuzzy_index_search on a hashed index, rather than through
2169	message_list_search_fuzzy.
2170	(definitions_destroy): Update.
2171	(merge): Determine the definitions' canonical encoding.
2172	* msgcmp.c: Include xmalloca.h, po-charset.h, msgl-fsearch.h.
2173	(match_domain): Add defmlp_findex, def_canon_charset arguments. Do
2174	fuzzy matching by calling message_fuzzy_index_search on a hashed
2175	index, rather than through message_list_search_fuzzy.
2176	(compare): Determine the definitions' canonical encoding. Prepare room
2177	for a lazily allocated hashed index.
2178	* Makefile.am (msgcmp_SOURCES): Add msgl-fsearch.c.
2179
21802008-09-15  Bruno Haible  <bruno@clisp.org>
2181
2182	* msgcmp.c (use_fuzzy_matching): New variable.
2183	(long_options): Add option -N/--no-fuzzy-matching.
2184	(main, match_domain): Implement it.
2185	(usage): Document it.
2186
21872008-09-14  Bruno Haible  <bruno@clisp.org>
2188
2189	* msgl-fsearch.h (message_fuzzy_index_search): Add 'lower_bound'
2190	argument.
2191	* msgl-fsearch.c (message_fuzzy_index_search): Likewise.
2192	* msgmerge.c (definitions_search_fuzzy): Use the result of the fuzzy
2193	search in the current list as a lower bound for the fuzzy search in the
2194	compendiums.
2195
21962008-09-14  Bruno Haible  <bruno@clisp.org>
2197
2198	* message.h (message_list_search_fuzzy, FUZZY_THRESHOLD): Clarify
2199	documentation.
2200
2201	* msgmerge.c (struct definitions_ty): Rename field 'findex' to
2202	'comp_findex', and 'findex_init_lock' to 'comp_findex_init_lock'.
2203	(definitions_init): Update.
2204	(definitions_init_comp_findex): Renamed from definitions_init_findex.
2205	Update.
2206	(definitions_search_fuzzy, definitions_destroy): Update.
2207
2208	* msgmerge.c (definitions_current_list, definitions_set_current_list):
2209	Move functions.
2210
22112008-09-14  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>
2212            Bruno Haible  <bruno@clisp.org>
2213
2214	* message.h (fuzzy_search_goal_function): Add 'lower_bound' argument.
2215	* message.c (fuzzy_search_goal_function): Likewise. Use fstrcmp_bounded
2216	instead of fstrcmp.
2217	(message_list_search_fuzzy_inner): Pass fuzzy_search_goal_function the
2218	best weight known so far, to shortcut computations.
2219	* msgl-fsearch.c (message_fuzzy_index_search): Likewise.
2220	* msgmerge.c (definitions_search_fuzzy): Update
2221	fuzzy_search_goal_function calls.
2222
22232008-09-14  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>
2224            Bruno Haible  <bruno@clisp.org>
2225
2226	* xgettext.c: Include concat-filename.h.
2227	(main, xgettext_open): Use xconcatenated_filename instead of
2228	concatenated_filename.
2229
22302008-09-01  Bruno Haible  <bruno@clisp.org>
2231
2232	* color.c: Include concat-filename.h.
2233	(style_file_lookup, style_file_prepare): Use xconcatenated_filename
2234	instead of concatenated_filename.
2235	* msginit.c: Include concat-filename.h instead of filename.h.
2236	(project_id, project_id_version): Use xconcatenated_filename instead of
2237	concatenated_filename.
2238	* open-catalog.c: Include concat-filename.h.
2239	(try_open_catalog_file): Use xconcatenated_filename instead of
2240	concatenated_filename.
2241	* read-csharp.c: Include concat-filename.h instead of filename.h.
2242	(msgdomain_read_csharp): Use xconcatenated_filename instead of
2243	concatenated_filename.
2244	* read-resources.c: Include concat-filename.h instead of filename.h.
2245	(read_resources_file): Use xconcatenated_filename instead of
2246	concatenated_filename.
2247	* read-tcl.c: Include concat-filename.h instead of filename.h.
2248	(msgdomain_read_tcl): Use xconcatenated_filename instead of
2249	concatenated_filename.
2250	* write-resources.c: Include concat-filename.h instead of filename.h.
2251	(msgdomain_write_csharp_resources): Use xconcatenated_filename instead of
2252	concatenated_filename.
2253	* write-csharp.c: Include concat-filename.h instead of filename.h.
2254	(msgdomain_write_csharp): Use xconcatenated_filename instead of
2255	concatenated_filename.
2256	* write-java.c: Include concat-filename.h instead of filename.h.
2257	(msgdomain_write_java): Use xconcatenated_filename instead of
2258	concatenated_filename.
2259	* write-tcl.c: Include concat-filename.h instead of filename.h.
2260	(msgdomain_write_tcl: Use xconcatenated_filename instead of
2261	concatenated_filename.
2262
22632008-08-31  Bruno Haible  <bruno@clisp.org>
2264
2265	* msgexec.c: Include <signal.h>.
2266	(main): Block SIGPIPE for the duration of the processing.
2267
22682008-08-23  Bruno Haible  <bruno@clisp.org>
2269
2270	Fix behaviour of "msgmerge --update" when sorting is requested and
2271	obsolete messages are present.
2272	* write-catalog.h (struct catalog_output_format): New field
2273	'sorts_obsoletes_to_end'.
2274	* write-po.c (output_format_po): Initialize it to true.
2275	* write-properties.c (output_format_properties): Initialize it to false.
2276	* write-stringtable.c (output_format_stringtable): Likewise.
2277	* msgmerge.c (msgdomain_list_stablesort_by_obsolete): New function.
2278	(main): Before testing whether the result is the same as the old
2279	contents, sort the result using msgdomain_list_stablesort_by_obsolete.
2280	Reported by Vincent Danjean <vdanjean.abo@free.fr>
2281	via <http://savannah.gnu.org/bugs/?24123>.
2282
22832008-08-16  Bruno Haible  <bruno@clisp.org>
2284
2285	* x-python.c (enum token_type_ty): New values token_type_lbracket,
2286	token_type_rbracket.
2287	(phase5_get): Recognize also token_type_lbracket, token_type_rbracket.
2288	(extract_balanced): Renamed from extract_parenthesized. Add 'delim'
2289	argument. Handle token_type_lbracket and token_type_rbracket.
2290	(extract_python): Update.
2291	Reported by Claude Paroz <claude@2xlibre.net>
2292	via <http://savannah.gnu.org/bugs/?23824>.
2293
22942008-08-16  Bruno Haible  <bruno@clisp.org>
2295
2296	* x-php.c (extract_balanced): Fix small bug in 2007-03-17 commit.
2297
22982008-08-15  Bruno Haible  <bruno@clisp.org>
2299
2300	* format-python.c (format_parse): For %.0s and %.0r, set the type to
2301	FORMAT_ANY.
2302	(format_check): When strict equality is not desired, compare FORMAT_ANY
2303	as matching any type.
2304	Reported by Alexander Dupuy <alex.dupuy@mac.com> in
2305	<http://savannah.gnu.org/bugs/?24025>.
2306
23072008-08-14  Bruno Haible  <bruno@clisp.org>
2308
2309	* format-python.c (format_parse): For '%', set the type to FAT_NONE.
2310
23112008-08-14  Bruno Haible  <bruno@clisp.org>
2312
2313	* format-python.c (format_check): Require the same number of unnamed
2314	arguments also when !equality.
2315	Reported by Alexander Dupuy <alex.dupuy@mac.com> in
2316	<http://savannah.gnu.org/bugs/?24025>.
2317
23182008-08-14  Bruno Haible  <bruno@clisp.org>
2319
2320	* msgmerge.c: Include "glthread/lock.h" instead of "lock.h".
2321
23222008-08-03  Bruno Haible  <bruno@clisp.org>
2323
2324	* x-python.c (mixed_string_buffer_append): Replace a lone high
2325	surrogate with U+FFFD.
2326	Reported by Yann <asterix@lagaule.org>
2327	via Santiago Vila <sanvila@unex.es>.
2328
23292008-07-19  Bruno Haible  <bruno@clisp.org>
2330
2331	* gnu/gettext/GetURL.java: Don't output anything to standard error.
2332	Instead, set exit code to indicate failure reason.
2333	* urlget.c (verbose): New variable.
2334	(long_options): Add --quiet, --silent option.
2335	(main): Implement --quiet, --silent option.
2336	(usage): Document --quiet, --silent option.
2337	(java_exitcode): New variable.
2338	(execute_it): Set it. Return false also when the exit code is 2.
2339	(fetch): Implement verbosity to standard error here.
2340	Reported by 宋浩 <baritono.tux@gmail.com>.
2341
23422008-06-10  Bruno Haible  <bruno@clisp.org>
2343
2344	* msgexec.c (process_string): Update for changed signature of
2345	wait_subprocess().
2346	* msgfilter.c (generic_filter): Likewise.
2347	* msginit.c (project_id, project_id_version, get_user_email,
2348	language_team_address): Likewise.
2349	* read-csharp.c (execute_and_read_po_output): Likewise.
2350	* read-java.c (execute_and_read_po_output): Likewise.
2351	* read-resources.c (execute_and_read_po_output): Likewise.
2352	* read-tcl.c (msgdomain_read_tcl): Likewise.
2353	* write-resources.c (execute_writing_input): Likewise.
2354	* urlget.c (execute_it, fetch): Update for changed signature of
2355	execute().
2356
23572008-05-26  Bruno Haible  <bruno@clisp.org>
2358
2359	* msginit.c (get_field, put_field): Recognize a field also if there is
2360	no space after the ':'.
2361	Reported by Nacho <nacho.resa@gmail.com>.
2362
23632008-05-16  Bruno Haible  <bruno@clisp.org>
2364
2365	* msgl-iconv.c (iconvable_prev_msgid): Fix typo.
2366	Reported by Karl Eichwalder <ke@novell.com>
2367	via Philipp Thomas <pth@novell.com>
2368	at <https://bugzilla.novell.com/show_bug.cgi?id=391372>.
2369
23702008-05-10  Bruno Haible  <bruno@clisp.org>
2371
2372	* write-po.c: Include unilbrk.h instead of linebreak.h.
2373	(wrap): Update.
2374	* po-lex.c: Don't include linebreak.h.
2375
23762008-04-25  Bruno Haible  <bruno@clisp.org>
2377
2378	* lang-table.c (language_table): Add Beja. Remove Adangme, Banda,
2379	Batak. Update Scottish Gaelic, Central Khmer, Romansh.
2380	* msginit.c (catalogname_for_locale: Add Beja. Remove Banda, Batak.
2381	Update Scottish Gaelic, Central Khmer, Romansh.
2382
23832008-04-20  Bruno Haible  <bruno@clisp.org>
2384
2385	Improve error message.
2386	* xgettext.h (lexical_context_ty): New type.
2387	(non_ascii_error_message): New declaration.
2388	(from_current_source_encoding): Add lcontext argument.
2389	* xgettext.c (non_ascii_error_message): New function.
2390	(from_current_source_encoding): Add lcontext argument. Use
2391	non_ascii_error_message.
2392	(CONVERT_STRING): Add lcontext argument.
2393	(remember_a_message, remember_a_message_plural): Update.
2394	* x-csharp.c (lexical_context): New variable.
2395	(phase2_getc): Use non_ascii_error_message.
2396	(comment_start, comment_line_end, phase6_get): Set lexical_context.
2397	(extract_csharp): Initialize lexical_context.
2398	* x-java.c (struct string_buffer): Add lcontext field.
2399	(init_string_buffer): Add lcontext argument.
2400	(string_buffer_flush_curr_buffer): Update from_current_source_encoding
2401	call.
2402	(comment_start): Set lcontext.
2403	(phase5_get): Pass lcontext argument.
2404	* x-perl.c (get_here_document, phase2_getc,
2405	extract_quotelike_pass1_utf8): Pass lcontext argument.
2406	* x-python.c (lexical_context): New variable.
2407	(phase2_getc): Use non_ascii_error_message.
2408	(comment_start, comment_line_end, phase6_get): Set lexical_context.
2409	(struct mixed_string_buffer): Add lcontext field.
2410	(init_mixed_string_buffer): Add lcontext argument.
2411	(mixed_string_buffer_flush_curr_buffer): Update
2412	from_current_source_encoding call.
2413	(phase5_get): Set lexical_context. Pass lcontext argument.
2414	(extract_python): Initialize lexical_context.
2415	Reported by Mark Weyer.
2416
24172008-04-20  Bruno Haible  <bruno@clisp.org>
2418
2419	* xgettext.c (usage): Clarify single-letter options that take an
2420	optional argument: -c, -k, -m, -M.
2421
24222008-04-16  Bruno Haible  <bruno@clisp.org>
2423
2424	* msginit.c (catalogname_for_locale): Add entries for Maori, Uighur.
2425
24262008-02-20  Jakub Jelinek  <jakub@redhat.com>
2427            Bruno Haible  <bruno@clisp.org>
2428
2429	* format-gcc-internal.c: Update for GCC 4.3.
2430	(FAT_TREE_STATEMENT): New enum item.
2431	(format_parse): Recognize %K.
2432	(format_print): Update.
2433
24342008-02-04  Bruno Haible  <bruno@clisp.org>
2435
2436	* msgmerge.c (match_domain): Remove the prev_msgid fields also from
2437	the untranslated messages.
2438	Reported by Yukiko Bando <ybando@k6.dion.ne.jp> via
2439	Chusslove Illich (Часлав Илић) <caslav.ilic@gmx.net>.
2440
24412008-02-04  Bruno Haible  <bruno@clisp.org>
2442
2443	* msgmerge.c (message_merge): Store the prev_msgid field also if the
2444	resulting message is not fuzzy: it might be marked as fuzzy later.
2445	(match_domain): Remove the prev_msgid fields from the non-fuzzy
2446	messages.
2447
24482008-01-29  Bruno Haible  <bruno@clisp.org>
2449
2450	* write-po.c (wrap): Change the severity of the "should not contain
2451	escape sequence" message from PO_SEVERITY_ERROR to PO_SEVERITY_WARNING.
2452	Reported by Kerb <ykerb2@free.fr>.
2453
24542008-01-13  Bruno Haible  <bruno@clisp.org>
2455
2456	* Makefile.am (noinst_headers): Add msgl-header.h.
2457
24582007-12-24  Bruno Haible  <bruno@clisp.org>
2459
2460	Introduce 'Language' header field.
2461	* xgettext.c (construct_header): Add an empty 'Language' field.
2462	* msginit.c (language_value): New function.
2463	(fields): Add 'Language'.
2464	* msgmerge.c: Include lang-table.h.
2465	(catalogname): New variable.
2466	(long_options): Add --lang option.
2467	(main): Handle --lang option.
2468	(usage): Document --lang option.
2469	(message_merge): Set the 'Language' field if --lang was specified or
2470	if it is missing and can be inferred from the 'Language-Team' field.
2471	* msgl-header.h: New file.
2472	* msgl-header.c: New file.
2473	* msgcat.c: Include msgl-header.h.
2474	(long_options): Add --lang option.
2475	(main): Handle --lang option.
2476	(usage): Document --lang option.
2477	* msgen.c: Include msgl-header.h.
2478	(long_options): Add --lang option.
2479	(main): Handle --lang option.
2480	(usage): Document --lang option.
2481	* msgl-check.c (plural_help): Look at the 'Language' field before
2482	looking at the 'Language-Team' field.
2483	(check_header_entry): Fix comparison with default value. When the
2484	'Language' field is missing, signal a warning.
2485	* Makefile.am (libgettextsrc_la_SOURCES): Add msgl-header.c.
2486	(msgmerge_SOURCES): Add lang-table.c.
2487	* FILES: Update.
2488
24892007-12-22  Bruno Haible  <bruno@clisp.org>
2490
2491	* write-po.c (wrap): Avoid breaking line in the middle of a format
2492	directive.
2493	Reported by Dwayne Bailey <dwayne@translate.org.za>.
2494
24952007-11-07  Jim Meyering  <meyering@redhat.com>
2496            Bruno Haible  <bruno@clisp.org>
2497
2498	* write-catalog.c (msgdomain_list_print): Fix open() call.
2499
25002007-11-07  Bruno Haible  <bruno@clisp.org>
2501
2502	* gettext-0.17 released.
2503
25042007-10-28  Bruno Haible  <bruno@clisp.org>
2505
2506	* color.c (style_file_lookup): New function.
2507	(style_file_prepare): Use it.
2508
25092007-10-21  Bruno Haible  <bruno@clisp.org>
2510
2511	Normalize the leading space of every comment line during input, not
2512	during output.
2513	* read-catalog-abstract.c (po_callback_comment_dispatcher): Before
2514	calling po_callback_comment or po_callback_comment_dot, drop the
2515	leading space.
2516	* write-po.c (message_print_comment, message_print_comment_dot): Don't
2517	remove the leading space of every comment line.
2518	* write-stringtable.c (write_message): Likewise.
2519	Suggested by Dwayne Bailey <dwayne@translate.org.za>.
2520
25212007-10-20  Bruno Haible  <bruno@clisp.org>
2522
2523	* msgmerge.c (message_merge): Set the fuzzy flag if the msgid_plural
2524	changed.
2525	Suggested by Chusslove Illich (Часлав Илић) <caslav.ilic@gmx.net>.
2526
25272007-10-20  Bruno Haible  <bruno@clisp.org>
2528
2529	Make msgmerge's introduction of fuzzy markers more consistent with
2530	msgfmt's --check-format.
2531	* format.h (check_msgid_msgstr_format_i): New declaration.
2532	* format.c (check_msgid_msgstr_format_i): New function, extracted from
2533	check_msgid_msgstr_format.
2534	(check_msgid_msgstr_format): Use it.
2535	* msgl-check.h: Include plural-eval.h.
2536	(check_plural_eval): New declaration.
2537	* msgl-check.c (check_plural_eval): Add const to first parameter. Make
2538	non-static.
2539	(check_plural): Update.
2540	* msgmerge.c: Include plural-exp.h, msgl-check.h, po-xerror.h.
2541	(msgfmt_check_pair_fails): Remove function.
2542	(silent_error_logger, silent_xerror): New functions.
2543	(message_merge): Add plural_distribution, plural_distribution_length
2544	arguments. Call check_msgid_msgstr_format_i instead of
2545	msgfmt_check_pair_fails.
2546	(match_domain): Extract not only the plural count, but also the
2547	plural expression from the header entry. Determine the plural
2548	distribution from it. Pass it to message_merge.
2549	Reported by Chusslove Illich (Часлав Илић) <caslav.ilic@gmx.net>.
2550
25512007-10-20  Bruno Haible  <bruno@clisp.org>
2552
2553	* msgl-check.c (check_plural): If there is no header entry, or if the
2554	header entry does not contain plural= and nplurals=, return a plural
2555	distribution corresponding to the Germanic plural.
2556
25572007-10-20  Bruno Haible  <bruno@clisp.org>
2558
2559	* format.h (check_msgid_msgstr_format): Add plural_distribution_length
2560	argument.
2561	* format.c (check_msgid_msgstr_format): Likewise.
2562	* msgl-check.h (check_message): Likewise.
2563	* msgl-check.c (check_plural_eval, check_plural, check_pair,
2564	check_message): Likewise.
2565	(check_message_list): Update.
2566
25672007-10-18  Bruno Haible  <bruno@clisp.org>
2568
2569	* plural-count.c (get_plural_count): Adapt to changed prototype of
2570	extract_plural_expression.
2571	* write-csharp.c (write_csharp_expression): Add const to parameter.
2572	(write_csharp_code): Adapt to changed prototype of
2573	extract_plural_expression.
2574	* write-java.c (write_java_expression): Add const to parameter.
2575	(write_java_code): Adapt to changed prototype of
2576	extract_plural_expression.
2577
25782007-10-07  Bruno Haible  <bruno@clisp.org>
2579
2580	* hostname.c (main): In the --version output, say GPLv3+.
2581	* msgattrib.c (main): Likewise.
2582	* msgcat.c (main): Likewise.
2583	* msgcmp.c (main): Likewise.
2584	* msgcomm.c (main): Likewise.
2585	* msgconv.c (main): Likewise.
2586	* msgen.c (main): Likewise.
2587	* msgexec.c (main): Likewise.
2588	* msgfilter.c (main): Likewise.
2589	* msgfmt.c (main): Likewise.
2590	* msggrep.c (main): Likewise.
2591	* msginit.c (main): Likewise.
2592	* msgmerge.c (main): Likewise.
2593	* msgunfmt.c (main): Likewise.
2594	* msguniq.c (main): Likewise.
2595	* recode-sr-latin.c (main): Likewise.
2596	* urlget.c (main): Likewise.
2597	* xgettext.c (main): Likewise.
2598
25992007-09-30  Bruno Haible  <bruno@clisp.org>
2600
2601	* xgettext.c (package_name, package_version): New variables.
2602	(long_options): Add --package-name, --package-version.
2603	(main): Handle options --package-name, --package-version.
2604	(usage): Document them.
2605	(construct_header): Use package_name if present.
2606	* msginit.c (project_id_version): Take a header argument. Return the
2607	old value if already present.
2608	(fields): Update.
2609
26102007-09-30  Bruno Haible  <bruno@clisp.org>
2611
2612	* message.h (format_type): New enum value 'format_kde'.
2613	(NFORMATS): Increment.
2614	* message.c (format_language): Add format_kde entry.
2615	(format_language_pretty): Likewise.
2616	* format.h (formatstring_kde): New declaration.
2617	* format-kde.c: New file.
2618	* format.c (formatstring_parsers): Add formatstring_kde.
2619	* x-c.c (init_flag_table_c): Also register flags for qt-format and
2620	kde-format.
2621	* xgettext.c (flag_table_cxx_kde): New variable.
2622	(recognize_format_kde): New variable.
2623	(main): Handle --kde option.
2624	(usage): Document --kde option.
2625	(xgettext_record_flag): Also fill flag_table_cxx_kde.
2626	(remember_a_message, remember_a_message_plural): In the heuristics,
2627	don't mark a string as c-format that is already known to be a
2628	kde-format.
2629	(language_to_extractor): Use a flag_table_cxx_kde that is different
2630	from flag_table_c.
2631	* Makefile.am (FORMAT_SOURCE): Add format-kde.c.
2632	* FILES: Update.
2633
26342007-09-09  Bruno Haible  <bruno@clisp.org>
2635
2636	Add support for Qt 4 format strings.
2637	* format-qt.c (struct spec): Increase args_used field size to 100.
2638	Add 'simple' field.
2639	(format_parse): Update for Qt 4 syntax. Remove error message when the
2640	same format argument is used more than once.
2641	(format_check): Add check: If the msgid is simple, the msgstr must be
2642	simple as well.
2643	Reported by Chusslove Illich <caslav.ilic@gmx.net>.
2644
26452007-09-02  Bruno Haible  <bruno@clisp.org>
2646
2647	Correct handling of different libexpat ABIs.
2648	* x-glade.c: Include <stdint.h>.
2649	(p_XML_GetCurrentLineNumber, p_XML_GetCurrentColumnNumber): New
2650	variables.
2651	(is_XML_LARGE_SIZE_ABI, GetCurrentLineNumber, GetCurrentColumnNumber):
2652	New functions.
2653	(XML_GetCurrentLineNumber, XML_GetCurrentColumnNumber): Redefine.
2654	(XML_Expat_Version, XML_FeatureEnum, XML_Feature): New types.
2655	(p_XML_ExpatVersionInfo, p_XML_GetFeatureList): New variables.
2656	(p_XML_GetCurrentLineNumber, p_XML_GetCurrentColumnNumber): Change
2657	type to 'void *'.
2658	(XML_ExpatVersionInfo, XML_GetFeatureList): New macros.
2659	(XML_Size_ABI): New type.
2660	(get_XML_Size_ABI): New function.
2661	(XML_GetCurrentLineNumber, XML_GetCurrentColumnNumber): New functions.
2662	(load_libexpat): Try both version 2 and version 1. Initialize
2663	p_XML_ExpatVersionInfo, p_XML_GetFeatureList.
2664
26652007-09-02  Bruno Haible  <bruno@clisp.org>
2666
2667	Implement msgctxt for C# ResourceManagers.
2668	* x-csharp.c (init_keywords): Also register GetParticularString and
2669	GetParticularPluralString.
2670	(init_flag_table_csharp): Update accordingly.
2671	* write-csharp.c: Include xmalloca.h.
2672	(write_csharp_msgid): New function.
2673	(write_csharp_code): Use it instead of write_csharp_string.
2674	(msgdomain_write_csharp): Remove error message if mlp has entries with
2675	context.
2676	* msgunfmt.cs (DumpResource.DumpMessage): Emit an msgctxt line
2677	if the message contain the context separator.
2678
26792007-09-01  Bruno Haible  <bruno@clisp.org>
2680
2681	Implement msgctxt for Java ResourceBundles.
2682	* x-java.c (init_keywords): Also register pgettext and npgettext.
2683	(init_flag_table_java): Update accordingly.
2684	* write-java.c (msgid_hashcode): New function.
2685	(compute_hashsize, compute_table_items): Use it instead of
2686	string_hashcode.
2687	(write_java_msgid): New function.
2688	(write_java_code): Use it instead of write_java_string.
2689	(msgdomain_write_java): Remove error message if mlp has entries with
2690	context.
2691	* gnu/gettext/DumpResource.java (dumpMessage): Emit an msgctxt line
2692	if the message contain the context separator.
2693	Suggested by Felix Berger.
2694
26952007-09-01  Bruno Haible  <bruno@clisp.org>
2696
2697	* po-lex.c: Include uniwidth.h.
2698
26992007-06-19  Bruno Haible  <bruno@clisp.org>
2700
2701	* x-c.c (phase8_get): Call free_token, so that the reference to
2702	tmp.comment gets dropped.
2703
27042007-08-27  Bruno Haible  <bruno@clisp.org>
2705
2706	* x-python.c (phase7_getuc): Interpret octal and hexadecimal escapes
2707	as Unicode code points inside Unicode strings.
2708	Reported and patch by Jakub Wilk <ubanus@users.sf.net>.
2709
27102007-08-23  Bruno Haible  <bruno@clisp.org>
2711
2712	* file-list.c: Don't include getline.h.
2713	* format-awk.c: Likewise.
2714	* format-boost.c: Likewise.
2715	* format-c.c: Likewise.
2716	* format-csharp.c: Likewise.
2717	* format-elisp.c: Likewise.
2718	* format-gcc-internal.c: Likewise.
2719	* format-java.c: Likewise.
2720	* format-librep.c: Likewise.
2721	* format-lisp.c: Likewise.
2722	* format-pascal.c: Likewise.
2723	* format-perl-brace.c: Likewise.
2724	* format-perl.c: Likewise.
2725	* format-php.c: Likewise.
2726	* format-python.c: Likewise.
2727	* format-qt.c: Likewise.
2728	* format-scheme.c: Likewise.
2729	* format-sh.c: Likewise.
2730	* format-tcl.c: Likewise.
2731	* format-ycp.c: Likewise.
2732	* msginit.c: Likewise.
2733	* x-perl.c: Likewise.
2734
27352007-08-18  Bruno Haible  <bruno@clisp.org>
2736
2737	* write-csharp.c (msgdomain_write_csharp): Don't recommend to use
2738	--verbose if it is already in use.
2739	* write-java.c (msgdomain_write_java): Likewise.
2740	Reported by Karsten Kousgaard <karsten@f-kousgaard.dk>.
2741
27422007-07-07  Bruno Haible  <bruno@clisp.org>
2743
2744	* Makefile.am (AM_CPPFLAGS): Remove reference to libuniname directory.
2745	(LIBUNINAME): Remove variable.
2746	(xgettext_LDADD): Update.
2747
27482007-07-04  Bruno Haible  <bruno@clisp.org>
2749
2750	Recognize the PHP string concatenation operator.
2751	* x-php.c (enum token_type_ty): New elements token_type_dot,
2752	token_type_operator1, token_type_operator2.
2753	(struct token_ty): Add comment field.
2754	(free_token): Drop reference to comment field.
2755	(phase4_pushback, phase4_pushback_length): New variables.
2756	(phase4_get): Renamed from x_php_lex. Return last pushed-back token if
2757	available. Recognize tokens '.', '+', '-', '*', '/', '%', '++', '--',
2758	'!', '~', '@'. Fill in tp->comment.
2759	(phase4_unget): New function.
2760	(phase5_last): New variable.
2761	(x_php_lex): New function.
2762	(extract_balanced): Handle the new token types. Pass token's comment
2763	to remember_a_message.
2764	(extract_php): Initialize phase5_last.
2765	Reported by Jan Engelhardt <jengelh@computergmbh.de>.
2766
27672007-06-30  Bruno Haible  <bruno@clisp.org>
2768
2769	* hostname.c (main): Use the standard --version output, see
2770	<http://lists.gnu.org/archive/html/bug-gnulib/2007-03/msg00302.html>.
2771	* msgattrib.c (main): Likewise.
2772	* msgcat.c (main): Likewise.
2773	* msgcmp.c (main): Likewise.
2774	* msgcomm.c (main): Likewise.
2775	* msgconv.c (main): Likewise.
2776	* msgen.c (main): Likewise.
2777	* msgexec.c (main): Likewise.
2778	* msgfilter.c (main): Likewise.
2779	* msgfmt.c (main): Likewise.
2780	* msggrep.c (main): Likewise.
2781	* msginit.c (main): Likewise.
2782	* msgmerge.c (main): Likewise.
2783	* msgunfmt.c (main): Likewise.
2784	* msguniq.c (main): Likewise.
2785	* recode-sr-latin.c (main): Likewise.
2786	* urlget.c (main): Likewise.
2787	* xgettext.c (main): Likewise.
2788
27892007-06-30  Bruno Haible  <bruno@clisp.org>
2790
2791	* lang-table.c (language_table): Fix entry for Javanese.
2792
27932007-06-28  Bruno Haible  <bruno@clisp.org>
2794
2795	* format-gcc-internal.c (format_parse): Tweak an error message.
2796	Reported by Karl Eichwalder.
2797
27982007-06-28  Bruno Haible  <bruno@clisp.org>
2799
2800	* lang-table.h (language_variant_table, language_variant_table_size):
2801	New declarations.
2802	* lang-table.c (language_variant_table, language_variant_table_size):
2803	New variables.
2804	* msginit.c (language_team_englishname): New function.
2805	(language_team): Use it instead of englishname_of_language.
2806	Reported by Li Daobing <lidaobing@gmail.com>.
2807
28082007-06-25  Bruno Haible  <bruno@clisp.org>
2809
2810	Change boundary of extracted comments.
2811	* x-perl.c (struct token_ty): Add comment field.
2812	(free_token): Release tp->comment.
2813	(extract_quotelike): Fill in tp->comment.
2814	(x_perl_prelex): Set or release tp->comment when constructing tokens.
2815	(x_perl_lex): Likewise.
2816	(extract_balanced): Pass token's comment to remember_a_message.
2817
28182007-06-18  Bruno Haible  <bruno@clisp.org>
2819
2820	Change boundary of extracted comments.
2821	* x-ycp.c (struct token_ty): Add comment field.
2822	(free_token): New function.
2823	(phase5_get): Fill in tp->comment.
2824	(phase8_get): Use free_token.
2825	(extract_parenthesized): Pass token's comment to remember_a_message.
2826	Use free_token.
2827	Reported by Karl Eichwalder <ke@suse.de>.
2828
28292007-06-09  Bruno Haible  <bruno@clisp.org>
2830
2831	* format-java.c: Include xmalloca.h instead of xallocsa.h.
2832	(message_format_parse): Use xmalloca/freea instead of xallocsa/freesa.
2833	* message.c: Include xmalloca.h instead of xallocsa.h.
2834	(message_list_hash_insert_entry, message_list_search): Use
2835	xmalloca/freea instead of xallocsa/freesa.
2836	* msggrep.c: Include xmalloca.h instead of xallocsa.h.
2837	(is_message_selected_no_invert): Use xmalloca/freea instead of
2838	xallocsa/freesa.
2839	* msginit.c: Include xmalloca.h instead of xallocsa.h.
2840	(subst_string): Use xmalloca/freea instead of xallocsa/freesa.
2841	* msgl-cat.c: Include xmalloca.h instead of xallocsa.h.
2842	(catenate_msgdomain_list): Use xmalloca/freea instead of
2843	xallocsa/freesa.
2844	* msgl-charset.c: Include xmalloca.h instead of xallocsa.h.
2845	(compare_po_locale_charsets): Use xmalloca/freea instead of
2846	xallocsa/freesa.
2847	* msgl-iconv.c: Include xmalloca.h instead of xallocsa.h.
2848	(iconv_message_list_internal, is_message_list_iconvable): Use
2849	xmalloca/freea instead of xallocsa/freesa.
2850	* msgmerge.c: Include xmalloca.h instead of xallocsa.h.
2851	(merge): Use xmalloca/freea instead of xallocsa/freesa.
2852	* po-charset.c: Include xmalloca.h instead of xallocsa.h.
2853	(po_lex_charset_set): Use xmalloca/freea instead of xallocsa/freesa.
2854	* read-tcl.c: Include xmalloca.h instead of xallocsa.h.
2855	(msgdomain_read_tcl): Use xmalloca/freea instead of xallocsa/freesa.
2856	* write-java.c: Include xmalloca.h instead of xallocsa.h.
2857	(compute_hashsize, msgdomain_write_java): Use xmalloca/freea instead of
2858	xallocsa/freesa.
2859	* write-mo.c: Include xmalloca.h instead of xallocsa.h.
2860	(write_table): Use xmalloca/freea instead of xallocsa/freesa.
2861	* write-po.c: Include xmalloca.h instead of xallocsa.h.
2862	(msgdomain_list_print_po): Use xmalloca/freea instead of
2863	xallocsa/freesa.
2864	* write-tcl.c: Include xmalloca.h instead of xallocsa.h.
2865	(msgdomain_write_tcl): Use xmalloca/freea instead of xallocsa/freesa.
2866	* xgettext.c: Include xmalloca.h instead of xallocsa.h.
2867	(flag_context_list_table_insert): Use xmalloca/freea instead of
2868	xallocsa/freesa.
2869
28702007-06-08  Bruno Haible  <bruno@clisp.org>
2871
2872	* msgattrib.c (main): Update year in --version output.
2873	* msgcat.c (main): Likewise.
2874	* msgcmp.c (main): Likewise.
2875	* msgcomm.c (main): Likewise.
2876	* msgconv.c (main): Likewise.
2877	* msgen.c (main): Likewise.
2878	* msgexec.c (main): Likewise.
2879	* msgfilter.c (main): Likewise.
2880	* msgfmt.c (main): Likewise.
2881	* msggrep.c (main): Likewise.
2882	* msginit.c (main): Likewise.
2883	* msgmerge.c (main): Likewise.
2884	* msgunfmt.c (main): Likewise.
2885	* msguniq.c (main): Likewise.
2886	* xgettext.c (main): Likewise.
2887	* recode-sr-latin.c (main): Likewise.
2888	* hostname.c (main): Likewise.
2889	* urlget.c (main): Likewise.
2890
28912007-06-08  Bruno Haible  <bruno@clisp.org>
2892
2893	* msginit.c: Include localename.h.
2894	(_nl_locale_name): Remove declaration.
2895	(main): Use gl_locale_name instead of _nl_locale_name.
2896	* Makefile.am (msginit_LDADD): Remove localename object file.
2897
28982007-05-28  Bruno Haible  <bruno@clisp.org>
2899
2900	* Makefile.am (WOE32_LDADD): New variable.
2901	(LDADD, msgcmp_LDADD, msgfmt_LDADD, msgmerge_LDADD, msgunfmt_LDADD,
2902	xgettext_LDADD, msgattrib_LDADD, msgcat_LDADD, msgcomm_LDADD,
2903	msgconv_LDADD, msgen_LDADD, msgexec_LDADD, msgfilter_LDADD,
2904	msggrep_LDADD, msginit_LDADD, msguniq_LDADD, recode_sr_latin_LDADD):
2905	Include it.
2906	(gettext.res): New rule.
2907	(MOSTLYCLEANFILES): Add gettext.res.
2908
29092007-05-27  Bruno Haible  <bruno@clisp.org>
2910
2911	Avoid link error; u16_mbtouc_aux is no longer a public API.
2912	* x-java.c (string_buffer_append): Use u16_mbtouc instead of
2913	u16_mbtouc_aux.
2914	* x-python.c (mixed_string_buffer_append): Likewise.
2915
29162007-05-13  Bruno Haible  <bruno@clisp.org>
2917
2918	* write-java.c (mkdir): Remove definition. Now done by gnulib.
2919	* write-csharp.c (mkdir): Remove definition. Now done by gnulib.
2920
29212007-05-13  Bruno Haible  <bruno@clisp.org>
2922
2923	* msgl-check.c: Include stdio.h instead of vasprintf.h.
2924	* po-lex.c: Don't include vasprintf.h.
2925
29262007-03-27  Bruno Haible  <bruno@clisp.org>
2927
2928	* hostname.c (usage): Ask translators to specify a translation bug
2929	report address.
2930	* msgattrib.c (usage): Likewise.
2931	* msgcat.c (usage): Likewise.
2932	* msgcmp.c (usage): Likewise.
2933	* msgcomm.c (usage): Likewise.
2934	* msgconv.c (usage): Likewise.
2935	* msgen.c (usage): Likewise.
2936	* msgexec.c (usage): Likewise.
2937	* msgfilter.c (usage): Likewise.
2938	* msgfmt.c (usage): Likewise.
2939	* msggrep.c (usage): Likewise.
2940	* msginit.c (usage): Likewise.
2941	* msgmerge.c (usage): Likewise.
2942	* msgunfmt.c (usage): Likewise.
2943	* msguniq.c (usage): Likewise.
2944	* recode-sr-latin.c (usage): Likewise.
2945	* urlget.c (usage): Likewise.
2946	* xgettext.c (usage): Likewise.
2947
29482007-03-24  Bruno Haible  <bruno@clisp.org>
2949
2950	* po-lex.c: Include unistr.h instead of utf8-ucs4.h.
2951	* read-properties.c: Include unistr.h instead of utf16-ucs4.h,
2952	ucs4-utf8.h.
2953	* x-java.c: Likewise.
2954	* read-stringtable.c: Include unistr.h instead of utf8-ucs4.h,
2955	ucs4-utf8.h.
2956	* x-csharp.c: Likewise.
2957	* write-csharp.c: Include unistr.h instead of utf8-ucs4.h.
2958	* write-java.c: Likewise.
2959	* write-properties.c: Likewise.
2960	* write-qt.c: Likewise.
2961	* write-tcl.c: Likewise.
2962	* x-perl.c: Likewise.
2963	* x-python.c: Include unistr.h instead of utf8-ucs4.h, utf16-ucs4.h,
2964	ucs4-utf8.h.
2965	* x-tcl.c: Include unistr.h instead of ucs4-utf8.h.
2966
29672007-03-17  Bruno Haible  <bruno@clisp.org>
2968
2969	* x-php.c (enum token_type_ty): New values token_type_lbracket,
2970	token_type_rbracket.
2971	(x_php_lex): Recognize also token_type_lbracket, token_type_rbracket.
2972	(extract_balanced): Renamed from extract_parenthesized. Add 'delim'
2973	argument. Handle token_type_lbracket and token_type_rbracket.
2974	(extract_php): Update.
2975	Reported by Robert Vock <RobertVock@gmx.de>.
2976
29772007-03-10  Bruno Haible  <bruno@clisp.org>
2978
2979	* msginit.c (get_user_fullname): Reduce scope of local variables.
2980
29812007-03-04  Bruno Haible  <bruno@clisp.org>
2982
2983	Moved --enable-relocatable infrastructure to gnulib.
2984	* Makefile.am: Remove SET_RELOCATABLE invocation.
2985
29862007-02-25  Bruno Haible  <bruno@clisp.org>
2987
2988	* color.c: Include filename.h instead of pathname.h.
2989	(style_file_prepare): Update.
2990	* msginit.c: Include filename.h instead of pathname.h.
2991	(project_id, project_id_version): Update.
2992	* open-catalog.c: Include filename.h instead of pathname.h.
2993	(try_open_catalog_file): Update.
2994	* read-csharp.c: Include filename.h instead of pathname.h.
2995	(msgdomain_read_csharp): Update.
2996	* read-resources.c: Include filename.h instead of pathname.h.
2997	(read_resources_file): Update.
2998	* read-tcl.c: Include filename.h instead of pathname.h.
2999	(msgdomain_read_tcl): Update.
3000	* write-csharp.c: Include filename.h instead of pathname.h.
3001	(msgdomain_write_csharp): Update.
3002	* write-java.c Include filename.h instead of pathname.h.
3003	(msgdomain_write_java): Update.
3004	* write-resources.c: Include filename.h instead of pathname.h.
3005	(msgdomain_write_csharp_resources): Update.
3006	* write-tcl.c: Include filename.h instead of pathname.h.
3007	(msgdomain_write_tcl): Update.
3008	* xgettext.c: Include filename.h instead of pathname.h.
3009	(main, xgettext_open): Update.
3010
30112007-02-19  Bruno Haible  <bruno@clisp.org>
3012
3013	* file-list.c: Don't include exit.h.
3014	* hostname.c: Likewise.
3015	* msgattrib.c: Likewise.
3016	* msgcat.c: Likewise.
3017	* msgcmp.c: Likewise.
3018	* msgcomm.c: Likewise.
3019	* msgconv.c: Likewise.
3020	* msgen.c: Likewise.
3021	* msgexec.c: Likewise.
3022	* msgfilter.c: Likewise.
3023	* msgfmt.c: Likewise.
3024	* msggrep.c: Likewise.
3025	* msginit.c: Likewise.
3026	* msgl-cat.c: Include <stdlib.h> instead of exit.h.
3027	* msgl-charset.c: Likewise.
3028	* msgl-check.c: Don't include exit.h.
3029	* msgmerge.c: Likewise.
3030	* msgunfmt.c: Likewise.
3031	* msguniq.c: Likewise.
3032	* po-lex.c: Likewise.
3033	* po-xerror.c: Likewise.
3034	* read-csharp.c: Likewise.
3035	* read-java.c: Likewise.
3036	* read-mo.c: Likewise.
3037	* read-resources.c: Likewise.
3038	* read-tcl.c: Likewise.
3039	* recode-sr-latin.c: Likewise.
3040	* urlget.c: Likewise.
3041	* write-mo.c: Likewise.
3042	* write-qt.c: Likewise.
3043	* write-resources.c: Likewise.
3044	* write-tcl.c: Include <stdlib.h> instead of exit.h.
3045	* x-awk.c: Don't include exit.h.
3046	* x-c.c: Likewise.
3047	* x-csharp.c: Likewise.
3048	* x-elisp.c: Likewise.
3049	* x-glade.c: Likewise.
3050	* x-java.c: Likewise.
3051	* x-librep.c: Likewise.
3052	* x-lisp.c: Likewise.
3053	* x-perl.c: Likewise.
3054	* x-php.c: Likewise.
3055	* x-python.c: Likewise.
3056	* x-rst.c: Include <stdlib.h> instead of exit.h.
3057	* x-scheme.c: Don't include exit.h.
3058	* x-sh.c: Likewise.
3059	* x-smalltalk.c: Likewise.
3060	* x-tcl.c: Likewise.
3061	* x-ycp.c: Likewise.
3062	* xgettext.c: Likewise.
3063
30642007-01-28  Bruno Haible  <bruno@clisp.org>
3065
3066	* x-java.c (string_buffer_append_lone_surrogate): New function.
3067	(string_buffer_flush_utf16_surr, string_buffer_append): Use it.
3068
30692007-01-28  Bruno Haible  <bruno@clisp.org>
3070
3071	* x-java.c (string_buffer_flush_utf16_surr): Give a warning when
3072	converting a surrogate code point to U+FFFD.
3073	(string_buffer_append): Convert a lone high surrogate code point to
3074	U+FFFD, and give a warning.
3075
30762007-01-26  Bruno Haible  <bruno@clisp.org>
3077
3078	* msgfilter.c: Include <sys/time.h> unconditionally.
3079
30802007-01-26  Bruno Haible  <bruno@clisp.org>
3081
3082	* msginit.c: Don't include strpbrk.h, use <string.h> instead.
3083
30842007-01-26  Bruno Haible  <bruno@clisp.org>
3085
3086	* msgmerge.c: Don't include stpncpy.h, use <string.h> instead.
3087
30882007-01-26  Bruno Haible  <bruno@clisp.org>
3089
3090	* msgfmt.c: Don't include stpcpy.h, use <string.h> instead.
3091	* msgmerge.c: Likewise.
3092
30932007-01-21  Bruno Haible  <bruno@clisp.org>
3094
3095	* msgl-iconv.c (convert_string, convert_msgstr, iconvable_string,
3096	iconvable_msgstr): Update for changed calling convention of
3097	xmem_cd_iconv.
3098	* recode-sr-latin.c (process): Likewise.
3099
31002007-01-07  Bruno Haible  <bruno@clisp.org>
3101
3102	* msgmerge.c (message_merge): Copy the obsolete bit from the ref
3103	message.
3104	Reported by Leonardo Fontenelle <leo.fontenelle@gmail.com>.
3105
31062006-12-24  Bruno Haible  <bruno@clisp.org>
3107
3108	* Makefile.am (AM_CXXFLAGS): New variable.
3109
31102006-12-23  Bruno Haible  <bruno@clisp.org>
3111
3112	* color.c (print_color_test): Print labels before the hue/saturation
3113	rectangle. Show also a few lines that mix colors and attributes.
3114
31152006-12-03  Bruno Haible  <bruno@clisp.org>
3116
3117	* msgcat.c: Include color.h.
3118	(long_options): Add --color, --style options.
3119	(main): Handle them. Invoke print_color_test when --color=test was
3120	given.
3121	(usage): Document --color, --style options.
3122
31232006-12-01  Bruno Haible  <bruno@clisp.org>
3124
3125	Add styling support to the PO output routines.
3126	* color.h: New file.
3127	* color.c: New file.
3128	* write-catalog.h (struct catalog_output_format): Add field
3129	'supports_color'.
3130	* write-catalog.c: Include fcntl.h, unistd.h, styled-ostream.h,
3131	term-styled-ostream.h, html-styled-ostream.h, fd-ostream.h, color.h,
3132	po-charset.h, msgl-iconv.h.
3133	(STDOUT_FILENO): New macro.
3134	(ENABLE_COLOR): New macro.
3135	(msgdomain_list_print): Use a styled_ostream_t that uses the
3136	style_file_name.
3137	* write-po.c: Include format.h, styled-ostream.h.
3138	(is_stylable, begin_css_class, end_css_class): New functions or macros.
3139	(class_header, class_translated, class_untranslated, class_fuzzy,
3140	class_obsolete, class_comment, class_translator_comment,
3141	class_extracted_comment, class_reference_comment, class_reference,
3142	class_flag_comment, class_flag, class_fuzzy_flag,
3143	class_previous_comment, class_previous, class_msgid, class_msgstr,
3144	class_keyword, class_string, class_text, class_escape_sequence,
3145	class_format_directive, class_invalid_format_directive): New variables.
3146	(ATTR_ESCAPE_SEQUENCE, ATTR_FORMAT_DIRECTIVE,
3147	ATTR_INVALID_FORMAT_DIRECTIVE): New enum items.
3148	(message_print_comment, message_print_comment_dot,
3149	message_print_comment_filepos, message_print_comment_flags): Call
3150	begin/end_css_class.
3151	(memset_small): New function.
3152	(wrap): Add css_class argument. Determine the extent of format
3153	string directives. Call begin/end_css_class.
3154	(print_blank_line): Call begin/end_css_class.
3155	(message_print, message_print_obsolete): Likewise. Pass a css_class
3156	argument to 'wrap'.
3157	(msgdomain_list_print_po): Call begin/end_css_class.
3158	(output_format_po): Update.
3159	* write-properties.c (output_format_properties): Update.
3160	* write-stringtable.c (output_format_stringtable): Update.
3161	* Makefile.am (noinst_HEADERS): Add color.h.
3162	(libgettextsrc_la_SOURCES): Add color.c.
3163
31642006-11-26  Bruno Haible  <bruno@clisp.org>
3165
3166	* write-po.c (make_format_description_string,
3167	make_c_width_description_string): Strip off the leading space.
3168	(message_print_comment_flags): Print the space here.
3169	* write-stringtable.c (write_message): Print the space here.
3170
31712006-11-26  Bruno Haible  <bruno@clisp.org>
3172
3173	* write-po.c: Include write-catalog.h instead of write-properties.h,
3174	write-stringtable.h.
3175
31762006-11-26  Bruno Haible  <bruno@clisp.org>
3177
3178	* format.h (FMTDIR_START, FMTDIR_END, FMTDIR_ERROR): New enum values.
3179	(FDI_SET): New macro.
3180	(struct formatstring_parser): Add fdi argument to 'parse' method.
3181	* format.c (check_msgid_msgstr_format): Update.
3182	* format-awk.c (format_parse): Add fdi argument. Invoke FDI_SET.
3183	* format-boost.c (format_parse): Likewise.
3184	* format-c.c (format_parse): Add fdi argument. Invoke FDI_SET.
3185	(format_c_parse, format_objc_parse): Add fdi argument.
3186	(get_sysdep_c_format_directives): Update.
3187	* format-csharp.c (format_parse): Add fdi argument. Invoke FDI_SET.
3188	* format-elisp.c (format_parse): Likewise.
3189	* format-gcc-internal.c (format_parse): Likewise.
3190	* format-java.c (message_format_parse): Add fdi argument. Invoke
3191	FDI_SET.
3192	(choice_format_parse): Update.
3193	(format_parse): Add fdi argument.
3194	* format-librep.c (format_parse): Add fdi argument. Invoke FDI_SET.
3195	* format-lisp.c (parse_upto): Add fdi argument. Invoke FDI_SET.
3196	(format_parse): Add fdi argument.
3197	* format-pascal.c (format_parse): Add fdi argument. Invoke FDI_SET.
3198	* format-perl.c (format_parse): Likewise.
3199	* format-perl-brace.c (format_parse): Likewise.
3200	* format-php.c (format_parse): Likewise.
3201	* format-python.c (format_parse): Add fdi argument. Invoke FDI_SET.
3202	(get_python_format_unnamed_arg_count): Update.
3203	* format-qt.c (format_parse): Add fdi argument. Invoke FDI_SET.
3204	* format-scheme.c (parse_upto): Add fdi argument. Invoke FDI_SET.
3205	(format_parse): Add fdi argument.
3206	* format-sh.c (format_parse): Add fdi argument. Invoke FDI_SET.
3207	* format-tcl.c (format_parse): Likewise.
3208	* format-ycp.c (format_parse): Likewise.
3209	* msgmerge.c (msgfmt_check_pair_fails): Update.
3210	* read-mo.c (read_mo_file): Update.
3211	* xgettext.c (set_format_flags_from_context, remember_a_message,
3212	remember_a_message_plural): Update.
3213
32142006-11-25  Bruno Haible  <bruno@clisp.org>
3215
3216	* message.h (message_list_copy, msgdomain_list_copy): New declarations.
3217	* message.c (message_list_copy, msgdomain_list_copy): New functions.
3218
32192006-11-25  Bruno Haible  <bruno@clisp.org>
3220
3221	* msgl-iconv.h (iconv_msgdomain_list): Add update_header argument.
3222	* msgl-iconv.c (iconv_message_list_internal): Renamed from
3223	iconv_msgdomain_list. Add update_header argument.
3224	(iconv_message_list): New function.
3225	(iconv_msgdomain_list): Add update_header argument.
3226	* msgcmp.c (compare): Update iconv_msgdomain_list call.
3227	* msgconv.c (main): Likewise.
3228	* msgfilter.c (main): Likewise.
3229	* msgmerge.c (merge): Likewise.
3230	* xgettext.c (main): Likewise.
3231
32322006-11-23  Bruno Haible  <bruno@clisp.org>
3233
3234	* write-catalog.h: Include ostream.h. Don't include <stdio.h>.
3235	(struct catalog_output_format): Use ostream_t instead of 'FILE *'.
3236	* write-catalog.c: Include ostream.h, file-ostream.h.
3237	(msgdomain_list_print): Open a temporary file_ostream_t.
3238	* write-po.h: Include ostream.h. Don't include <stdio.h>.
3239	(message_print_comment, message_print_comment_dot,
3240	message_print_comment_filepos, message_print_comment_flags): Replace
3241	'FILE *' argument with an 'ostream_t' argument.
3242	* write-po.c: Include ostream.h.
3243	(message_print_comment, message_print_comment_dot,
3244	message_print_comment_filepos, message_print_comment_flags, wrap,
3245	print_blank_line, message_print, message_print_obsolete,
3246	msgdomain_list_print_po): Replace 'FILE *' argument with an 'ostream_t'
3247	argument.
3248	* write-properties.c: Include ostream.h.
3249	(write_escaped_string, write_message, write_properties,
3250	msgdomain_list_print_properties): Replace 'FILE *' argument with an
3251	'ostream_t' argument.
3252	* write-stringtable.c: Include ostream.h, xvasprintf.h. Don't include
3253	<stdio.h>.
3254	(write_escaped_string, write_message, write_stringtable,
3255	msgdomain_list_print_stringtable): Replace 'FILE *' argument with an
3256	'ostream_t' argument.
3257
32582006-11-12  Bruno Haible  <bruno@clisp.org>
3259
3260	* write-po.c (wrap): Indent by use of spaces, not tabs.
3261
32622006-11-03  Bruno Haible  <bruno@clisp.org>
3263
3264	Simplify xmalloc expressions. Add overflow check in xmalloc arguments.
3265	* filter-sr-latin.c (serbian_to_latin): Use XNMALLOC instead of xmalloc.
3266	* format-awk.c (format_parse): Use XMALLOC instead of xmalloc.
3267	* format-boost.c (format_parse): Likewise.
3268	* format-c.c (format_parse): Use XMALLOC, XNMALLOC instead of xmalloc.
3269	(get_sysdep_c_format_directives): Use XNMALLOC instead of xmalloc.
3270	* format-csharp.c (format_parse): Use XMALLOC instead of xmalloc.
3271	* format-elisp.c (format_parse): Likewise.
3272	* format-gcc-internal.c (format_parse): Likewise.
3273	* format-java.c (format_parse): Likewise.
3274	* format-librep.c (format_parse): Likewise.
3275	* format-lisp.c (copy_list): Use XMALLOC, XNMALLOC instead of xmalloc.
3276	(make_unconstrained_list): Likewise.
3277	(make_empty_list): Use XMALLOC instead of xmalloc.
3278	(rotate_loop): Use XNMALLOC instead of xmalloc.
3279	(make_intersected_list): Use XMALLOC instead of xmalloc.
3280	(make_union_list): Use XMALLOC, XNMALLOC instead of xmalloc.
3281	(make_repeated_list_of_lists): Likewise.
3282	(make_repeated_list): Likewise.
3283	(format_parse): Use XMALLOC instead of xmalloc.
3284	* format-pascal.c (format_parse): Likewise.
3285	* format-perl.c (format_parse): Likewise.
3286	* format-perl-brace.c (format_parse): Use XMALLOC, XNMALLOC instead of
3287	xmalloc.
3288	* format-php.c (format_parse): Use XMALLOC instead of xmalloc.
3289	* format-python.c (format_parse): Use XMALLOC, XNMALLOC instead of
3290	xmalloc.
3291	* format-qt.c (format_parse): Use XMALLOC instead of xmalloc.
3292	* format-scheme.c (copy_list): Use XMALLOC, XNMALLOC instead of xmalloc.
3293	(make_unconstrained_list): Likewise.
3294	(make_empty_list): Use XMALLOC instead of xmalloc.
3295	(rotate_loop): Use XNMALLOC instead of xmalloc.
3296	(make_intersected_list): Use XMALLOC instead of xmalloc.
3297	(make_union_list): Use XMALLOC, XNMALLOC instead of xmalloc.
3298	(make_repeated_list_of_lists): Likewise.
3299	(make_repeated_list): Likewise.
3300	(format_parse): Use XMALLOC instead of xmalloc.
3301	* format-sh.c (format_parse): Use XMALLOC, XNMALLOC instead of xmalloc.
3302	* format-tcl.c (format_parse): Use XMALLOC instead of xmalloc.
3303	* format-ycp.c (format_parse): Likewise.
3304	* message.c (message_alloc, message_list_list_alloc, msgdomain_alloc):
3305	Use XMALLOC instead of xmalloc.
3306	(msgdomain_list_alloc): Use XMALLOC, XNMALLOC instead of xmalloc.
3307	* msgexec.c (main): Use XNMALLOC instead of xmalloc.
3308	* msgfilter.c (main, generic_filter, process_message): Likewise.
3309	* msgfmt.c (add_mo_suffix): Likewise.
3310	(new_domain): Use XMALLOC instead of xmalloc.
3311	* msginit.c (catalogname_for_locale, language_of_locale,
3312	get_user_fullname, get_field, put_field, subst_string,
3313	update_msgstr_plurals): Use XNMALLOC instead of xmalloc.
3314	* msgl-cat.c (catenate_msgdomain_list): Likewise.
3315	* msgl-check.c (check_plural_eval): Use XCALLOC instead of xcalloc.
3316	* msgl-english.c (msgdomain_list_english): Use XNMALLOC instead of
3317	xmalloc.
3318	* msgl-fsearch.c (new_index): Likewise.
3319	(message_fuzzy_index_alloc): Use XMALLOC instead of xmalloc.
3320	(mult_index_list_accumulate): Use XNMALLOC instead of xmalloc.
3321	* msgl-iconv.c (iconv_message_list): Likewise.
3322	* msgmerge.c (message_merge, match_domain): Likewise.
3323	* po-gram-gen.y (plural_form_list): Likewise.
3324	* read-catalog-abstract.c (po_parse_comment_filepos,
3325	po_parse_comment_solaris_filepos): Likewise.
3326	* read-mo.c (get_sysdep_string): Likewise.
3327	* read-properties.c (conv_from_iso_8859_1, read_escaped_string):
3328	Likewise.
3329	* read-stringtable.c (conv_from_ucs4): Likewise.
3330	* str-list.c (string_list_alloc): Use XMALLOC instead of xmalloc.
3331	(string_list_concat, string_list_join): Use XNMALLOC instead of xmalloc.
3332	* write-csharp.c (construct_class_name, msgdomain_write_csharp):
3333	Likewise.
3334	* write-java.c (compute_hashsize, compute_table_items): Likewise.
3335	* write-mo.c: Include xsize.h.
3336	(write_table): Use XNMALLOC instead of xmalloc. Use xsum, xtimes in
3337	xmalloc argument.
3338	* write-po.c (wrap): Use XNMALLOC instead of xmalloc.
3339	* write-properties.c (conv_to_java): Likewise.
3340	* write-qt.c (conv_to_iso_8859_1, conv_to_utf16): Likewise.
3341	* x-elisp.c (init_token, string_of_object): Likewise.
3342	(read_object): Use XMALLOC instead of xmalloc.
3343	* x-librep.c (init_token, string_of_object): Use XNMALLOC instead of
3344	xmalloc.
3345	(read_object): Use XMALLOC instead of xmalloc.
3346	* x-lisp.c (x_lisp_keyword, init_token, string_of_object): Use XNMALLOC
3347	instead of xmalloc.
3348	(read_object): Use XMALLOC instead of xmalloc.
3349	* x-perl.c (get_here_document, extract_quotelike_pass1,
3350	extract_quotelike_pass3): Use XNMALLOC instead of xmalloc.
3351	(x_perl_lex): Use XMALLOC instead of xmalloc.
3352	* x-po.c (strextract_add_message, extract): Use XNMALLOC instead of
3353	xmalloc.
3354	* x-python.c (try_to_extract_coding): Use XNMALLOC instead of xmalloc.
3355	* x-scheme.c (init_token, string_of_object): Use XNMALLOC
3356	instead of xmalloc.
3357	(read_object): Use XMALLOC instead of xmalloc.
3358	* x-sh.c (init_token, string_of_token, string_of_word): Use XNMALLOC
3359	instead of xmalloc.
3360	(read_word): Use XMALLOC instead of xmalloc.
3361	* x-smalltalk.c (phase2_get): Use XNMALLOC instead of xmalloc.
3362	* x-tcl.c (init_token, string_of_word): Use XNMALLOC instead of xmalloc.
3363	(read_word): Use XMALLOC instead of xmalloc.
3364	* xgettext.c: Include xsize.h.
3365	(split_keywordspec): Use XNMALLOC instead of xmalloc.
3366	(insert_keyword_callshape): Use XMALLOC instead of xmalloc. Use xsum,
3367	xtimes to avoid overflow.
3368	(flag_context_list_table_insert): Use XMALLOC instead of xmalloc.
3369	(savable_comment_add): Likewise.
3370	(remember_a_message_plural): Use XNMALLOC instead of xmalloc.
3371	(arglist_parser_alloc, arglist_parser_clone): Use xsum, xtimes.
3372	(arglist_parser_done): Use XNMALLOC instead of xmalloc.
3373	(finalize_header): Likewise.
3374
33752006-10-30  Bruno Haible  <bruno@clisp.org>
3376
3377	* plural-eval.h [C++]: Define functions without name mangling.
3378
33792006-10-29  Bruno Haible  <bruno@clisp.org>
3380
3381	Clean up libgettextpo exports in C++ mode.
3382	* po-gram.h: Wrap declarations in extern "C".
3383
33842006-10-29  Bruno Haible  <bruno@clisp.org>
3385
3386	Make it compile in C++ mode.
3387	* dir-list.c (dir_list_restore): Add cast.
3388	* format-c.c (format_arg_type_t): New type. Use it instead of
3389	'enum format_arg_type'.
3390	* format-gcc-internal.c (format_arg_type_t): New type. Use it instead of
3391	'enum format_arg_type'.
3392	* format-perl.c (format_arg_type_t): New type. Use it instead of
3393	'enum format_arg_type'.
3394	* format-lisp.c (struct segment): Move out of the scope of struct
3395	format_arg_list.
3396	* format-scheme.c (struct segment): Likewise.
3397	* message.h (struct altstr): Move out of the scope of struct message_ty.
3398	* msgl-equal.c (msgstr_equal_ignoring_potcdate): Cast memchr results.
3399	* po-lex.c (mb_copy): Rename arguments to new_mbc, old_mbc.
3400	* read-mo.c (enum mo_endianness): Move out of the scope of struct
3401	binary_mo_file.
3402	* read-po.c (this): New macro.
3403	* read-properties.c (this): New macro.
3404	* write-mo.c (write_table): Cast alloca result.
3405	* x-glade.c (load_libexpat): Cast dlsym results.
3406	* x-perl.c (get_here_document): Use xmalloc instead of
3407	xrealloc (NULL...). Cast its result.
3408	* x-po.c (extract_add_message): Limit the scope of variable
3409	'charsetstr'.
3410	* x-smalltalk.c (phase2_get): Cast xmalloc results.
3411
34122006-10-29  Bruno Haible  <bruno@clisp.org>
3413
3414	* x-awk.h: Make includable without prerequisites.
3415	* x-c.h: Likewise.
3416	* x-csharp.h: Likewise.
3417	* x-elisp.h: Likewise.
3418	* x-glade.h: Likewise.
3419	* x-java.h: Likewise.
3420	* x-librep.h: Likewise.
3421	* x-lisp.h: Likewise.
3422	* x-perl.h: Likewise.
3423	* x-php.h: Likewise.
3424	* x-po.h: Likewise.
3425	* x-properties.h: Likewise.
3426	* x-python.h: Likewise.
3427	* x-rst.h: Likewise.
3428	* x-scheme.h: Likewise.
3429	* x-sh.h: Likewise.
3430	* x-smalltalk.h: Likewise.
3431	* x-stringtable.h: Likewise.
3432	* x-tcl.h: Likewise.
3433	* x-ycp.h: Likewise.
3434	* x-awk.c: Include x-awk.h.
3435	* x-c.c: Include x-c.h.
3436	* x-csharp.c: Include x-csharp.h.
3437	* x-elisp.c: Include x-elisp.h.
3438	* x-glade.c: Include x-glade.h.
3439	* x-java.c: Include x-java.h.
3440	* x-librep.c: Include x-librep.h.
3441	* x-lisp.c: Include x-lisp.h.
3442	* x-perl.c: Include x-perl.h.
3443	* x-php.c: Include x-php.h.
3444	* x-po.c: Include x-po.h, x-properties.h, x-stringtable.h.
3445	* x-python.c: Include x-python.h.
3446	* x-rst.c: Include x-rst.h.
3447	* x-scheme.c: Include x-scheme.h.
3448	* x-sh.c: Include x-sh.h.
3449	* x-smalltalk.c: Include x-smalltalk.h.
3450	* x-tcl.c: Include x-tcl.h.
3451	* x-ycp.c: Include x-ycp.h.
3452	* xgettext.c: Remove extern "C" around x-*.h includes.
3453
34542006-10-29  Bruno Haible  <bruno@clisp.org>
3455
3456	* format-awk.c (format_parse): Fix bug with unnumbered argument in
3457	precision field.
3458
34592006-11-27  Bruno Haible  <bruno@clisp.org>
3460
3461	* gettext-0.16.1 released.
3462
34632006-10-26  Bruno Haible  <bruno@clisp.org>
3464
3465	* gettext-0.16 released.
3466
34672006-10-24  Bruno Haible  <bruno@clisp.org>
3468
3469	* Makefile.am (AM_CPPFLAGS): Add also $(top_srcdir). Needed so that
3470	woe32dll/export.h is found while compiling gettextsrc-exports.c in a
3471	VPATH build.
3472	Reported by Charles Wilson <cygwin@cwilson.fastmail.fm>.
3473
34742006-10-24  Bruno Haible  <bruno@clisp.org>
3475
3476	* msgmerge.c (struct definitions_ty): Remove semicolon after
3477	gl_lock_define invocation.
3478
34792006-10-21  Bruno Haible  <bruno@clisp.org>
3480
3481	* po-error.h (po_error, po_error_at_line): Use format attribute only
3482	with gcc >= 3.1.
3483
34842006-10-21  Bruno Haible  <bruno@clisp.org>
3485
3486	* msgmerge.c (struct definitions_ty): Use gl_lock_define to declare
3487	the findex_init_lock field.
3488	(definitions_init): Use gl_lock_init to initialize it, instead of
3489	memcpy hack.
3490
34912006-10-16  Bruno Haible  <bruno@clisp.org>
3492
3493	Work around automake-1.10 problem described in
3494	http://lists.gnu.org/archive/html/bug-automake/2006-08/msg00025.html.
3495	* Makefile.am (CXXLINK): Remove variable.
3496	(msgmerge_CXXFLAGS): New variable.
3497	(libgettextsrc_la_LINK, msgattrib_LINK, msgcat_LINK, msgcomm_LINK,
3498	msgconv_LINK, msgen_LINK, msgfilter_LINK, msggrep_LINK, msgmerge_LINK,
3499	msguniq_LINK, xgettext_LINK): New variables.
3500
35012006-10-18  Bruno Haible  <bruno@clisp.org>
3502
3503	* read-po.h (input_format_po): Mark as DLL_VARIABLE.
3504	* read-properties.h (input_format_properties): Likewise.
3505	* read-stringtable.h (input_format_stringtable): Likewise.
3506	* write-po.h (output_format_po): Likewise.
3507	* write-properties.h (output_format_properties): Likewise.
3508	* write-stringtable.h (output_format_stringtable): Likewise.
3509
35102006-10-16  Bruno Haible  <bruno@clisp.org>
3511
3512	* gettext-po.h.in: Move to ../libgettextpo/.
3513	* gettext-po.c: Move to ../libgettextpo/.
3514	* Makefile.am (lib_LTLIBRARIES): Remove libgettextpo.la.
3515	(nodist_include_HEADERS): Remove variable.
3516	(libgettextpo_la_SOURCES, LTV_CURRENT, LTV_REVISION, LTV_AGE,
3517	libgettextpo_la_LDFLAGS, libgettextpo_la_DEPENDENCIES,
3518	libgettextpo_la_LDFLAGS): Remove variables.
3519	(EXTRA_DIST, BUILT_SOURCES, CLEANFILES): Remove gettext-po.h support.
3520	(gettext-po.h): Remove rule.
3521
35222006-10-18  Bruno Haible  <bruno@clisp.org>
3523
3524	* po-error.h (__attribute__, __format__, __printf__): New macros.
3525	(po_error, po_error_at_line): Declare format string argument.
3526	* po-lex.h (__attribute__, __format__, __printf__): New macros.
3527	(po_gram_error, po_gram_error_at_line): Declare format string argument.
3528
3529	* msgl-cat.c (catenate_msgdomain_list): Avoid "gcc -Wshadow" warning.
3530	* msgl-check.c (formatstring_error_logger): Avoid "gcc
3531	-Wmissing-format-attribute" warning.
3532	(check_pair): Avoid "gcc -Wshadow" warning.
3533
3534	* read-stringtable.c (stringtable_parse): Pass a mutable string as
3535	msgstr to po_callback_message.
3536	* write-po.c (msgdomain_list_print_po): Avoid "gcc -Wwrite-strings"
3537	warning.
3538	* xgettext.c (remember_a_message_plural): Free a temporary string
3539	after use.
3540
35412006-10-17  Bruno Haible  <bruno@clisp.org>
3542
3543	* lang-table.c (language_table): Add the most important languages that
3544	have an ISO 639-2 code.
3545	* msginit.c (catalogname_for_locale): Likewise.
3546
35472006-10-15  Bruno Haible  <bruno@clisp.org>
3548
3549	* read-catalog-abstract.h (input_syntax_ty): Remove type.
3550	(catalog_input_format): New structure type.
3551	(catalog_input_format_ty): New type.
3552	(catalog_reader_parse): Change type of input_syntax argument.
3553	* read-catalog.h (input_syntax): Remove variable.
3554	(read_catalog_stream, read_catalog_file): Add input_syntax argument.
3555	* msgl-cat.h: Include read-catalog-abstract.h.
3556	(catenate_msgdomain_list): Add input_syntax argument.
3557	* read-po.h: New file.
3558	* read-po.c: New file, extracted from read-catalog-abstract.c.
3559	* msgattrib.c: Include read-po.h, read-properties.h, read-stringtable.h.
3560	(main): Change handling of --properties-input, --stringtable-input
3561	options. Update read_catalog_file calls.
3562	* msgcat.c: Include read-po.h, read-properties.h, read-stringtable.h.
3563	(main): Change handling of --properties-input, --stringtable-input
3564	options. Update catenate_msgdomain_list call.
3565	* msgcmp.c: Include read-po.h, read-properties.h, read-stringtable.h.
3566	(main): Change handling of --properties-input, --stringtable-input
3567	options. Update compare call.
3568	(compare): Add input_syntax argument.
3569	* msgcomm.c: Include read-po.h, read-properties.h, read-stringtable.h.
3570	(main): Change handling of --properties-input, --stringtable-input
3571	options. Update catenate_msgdomain_list call.
3572	* msgconv.c: Include read-po.h, read-properties.h, read-stringtable.h.
3573	(main): Change handling of --properties-input, --stringtable-input
3574	options. Update read_catalog_file call.
3575	* msgen.c: Include read-po.h, read-properties.h, read-stringtable.h.
3576	(main): Change handling of --properties-input, --stringtable-input
3577	options. Update read_catalog_file call.
3578	* msgexec.c: Include read-po.h, read-properties.h, read-stringtable.h.
3579	(main): Change handling of --properties-input, --stringtable-input
3580	options. Update read_catalog_file call.
3581	* msgfilter.c: Include read-po.h, read-properties.h, read-stringtable.h.
3582	(main): Change handling of --properties-input, --stringtable-input
3583	options. Update read_catalog_file call.
3584	* msgfmt.c: Include read-po.h, read-properties.h, read-stringtable.h.
3585	(main): Change handling of --properties-input, --stringtable-input
3586	options. Update read_catalog_file_msgfmt call.
3587	(read_catalog_file_msgfmt): Add input_syntax argument.
3588	* msggrep.c: Include read-po.h, read-properties.h, read-stringtable.h.
3589	(main): Change handling of --properties-input, --stringtable-input
3590	options. Update read_catalog_file call.
3591	* msginit.c: Include read-po.h, read-properties.h, read-stringtable.h.
3592	(main): Change handling of --properties-input, --stringtable-input
3593	options. Update read_catalog_file call.
3594	* msgl-cat.c (catenate_msgdomain_list): Add input_syntax argument.
3595	* msgmerge.c: Include read-po.h, read-properties.h, read-stringtable.h.
3596	(main): Change handling of --properties-input, --stringtable-input
3597	options. Update merge call.
3598	(compendium): Read it in PO syntax.
3599	(merge): Add input_syntax argument.
3600	* msguniq.c: Include read-po.h, read-properties.h, read-stringtable.h.
3601	(main): Change handling of --properties-input, --stringtable-input
3602	options. Update catenate_msgdomain_list call.
3603	* read-catalog-abstract.c: Don't include po-gram.h, read-properties.h,
3604	read-stringtable.h.
3605	(catalog_reader_parse): Change type of input_syntax argument. Invoke
3606	the parser indirectly.
3607	* read-catalog.c (input_syntax): Remove variable.
3608	(read_catalog_stream, read_catalog_file): Add input_syntax argument.
3609	* read-csharp.c: Include read-po.h.
3610	(execute_and_read_po_output): Update read_catalog_stream call.
3611	* read-java.c: Include read-po.h.
3612	(execute_and_read_po_output): Update read_catalog_stream call.
3613	* read-properties.c (properties_parse): Make static.
3614	(input_format_properties): New variable.
3615	* read-properties.h (properties_parse): Remove declaration.
3616	(input_format_properties): New declaration.
3617	* read-resources.c: Include read-po.h.
3618	(execute_and_read_po_output): Update read_catalog_stream call.
3619	* read-stringtable.c (stringtable_parse): Make static.
3620	(input_format_stringtable): New variable.
3621	* read-stringtable.h (stringtable_parse): Remove declaration.
3622	(input_format_stringtable): New declaration.
3623	* read-tcl.c: Include read-po.h.
3624	(msgdomain_read_tcl): Update read_catalog_stream call.
3625	* x-po.c: Include read-po.h, read-properties.h, read-stringtable.h.
3626	(extract): Change type of input_syntax argument.
3627	(extract_po, extract_properties, extract_stringtable): Update.
3628	* xgettext.c: Include read-po.h.
3629	(read_exclusion_file): Read it in PO syntax.
3630	* gettext-po.c: Include read-po.h.
3631	(po_file_read_v3, po_file_read_v2, po_file_read): Update
3632	read_catalog_stream call.
3633	* Makefile.am (noinst_HEADERS): Add read-po.h.
3634	(COMMON_SOURCE): Add read-po.c.
3635
36362006-10-15  Bruno Haible  <bruno@clisp.org>
3637
3638	* read-catalog-abstract.h (abstract_catalog_reader_ty): Renamed from
3639	abstract_po_reader_ty.
3640	(abstract_catalog_reader_class_ty): Renamed from
3641	abstract_po_reader_class_ty. Update.
3642	(ABSTRACT_CATALOG_READER_TY): Renamed from ABSTRACT_PO_READER_TY.
3643	Update.
3644	(abstract_catalog_reader_ty): Renamed from abstract_po_reader_ty.
3645	Update.
3646	(catalog_reader_alloc): Renamed from po_reader_alloc.
3647	(catalog_reader_parse): Renamed from po_scan.
3648	(catalog_reader_free): Renamed from po_reader_free.
3649	* read-catalog.h: Update.
3650	(default_catalog_reader_class_ty): Renamed from
3651	default_po_reader_class_ty.
3652	(DEFAULT_CATALOG_READER_TY): Renamed from DEFAULT_PO_READER_TY. Update.
3653	(default_catalog_reader_ty): Renamed from default_po_reader_ty. Update.
3654	(default_constructor, default_destructor, default_parse_brief,
3655	default_parse_debrief, default_directive_domain,
3656	default_directive_message, default_comment, default_comment_dot,
3657	default_comment_filepos, default_comment_special, default_set_domain,
3658	default_add_message): Update.
3659	(default_catalog_reader_alloc): Renamed from default_po_reader_alloc.
3660	Update.
3661	(read_catalog_stream): Renamed from read_po.
3662	(read_catalog_file): Renamed from read_po_file.
3663	* open-catalog.h (open_catalog_file): Renamed from open_po_file.
3664	* msgattrib.c: Update.
3665	(main): Update.
3666	* msgcat.c: Update.
3667	* msgcmp.c: Update.
3668	(compare): Update.
3669	* msgcomm.c: Update.
3670	* msgconv.c: Update.
3671	(main): Update.
3672	* msgen.c: Update.
3673	(main): Update.
3674	* msgexec.c: Update.
3675	(main): Update.
3676	* msgfilter.c: Update.
3677	(main): Update.
3678	* msgfmt.c: Update.
3679	(read_catalog_file_msgfmt): Renamed from read_po_file_msgfmt. Update.
3680	(main): Update.
3681	(msgfmt_catalog_reader_ty): Renamed from msgfmt_po_reader_ty. Update.
3682	(msgfmt_constructor, msgfmt_parse_debrief, msgfmt_set_domain,
3683	msgfmt_add_message, msgfmt_frob_new_message, msgfmt_comment_special,
3684	msgfmt_methods): Update.
3685	(read_catalog_file_msgfmt): Renamed from read_po_file_msgfmt. Update.
3686	* msggrep.c: Update.
3687	(main): Update.
3688	* msginit.c: Update.
3689	(main): Update.
3690	* msgl-cat.c: Update.
3691	(catenate_msgdomain_list): Update.
3692	* msgmerge.c: Update.
3693	(compendium, merge): Update.
3694	* msguniq.c: Update.
3695	* open-catalog.c: Update.
3696	(try_open_catalog_file): Renamed from try_open_po_file.
3697	(open_catalog_file): Renamed from open_po_file. Update.
3698	* po-gram-gen.y: Update.
3699	* read-catalog-abstract.c: Update.
3700	(callback_arg): Update.
3701	(catalog_reader_alloc): Renamed from po_reader_alloc.
3702	(catalog_reader_free): Renamed from po_reader_free.
3703	(call_parse_brief, call_parse_debrief, call_directive_domain,
3704	call_directive_message, call_comment, call_comment_dot,
3705	call_comment_filepos, call_comment_special): Update.
3706	(parse_start): Renamed from po_scan_start.
3707	(parse_end): Renamed from po_scan_end.
3708	(catalog_reader_parse): Renamed from po_scan.
3709	* read-catalog.c: Update.
3710	(call_set_domain, call_add_message, call_frob_new_message): Update.
3711	(default_constructor, default_destructor, default_parse_brief,
3712	default_parse_debrief, default_copy_comment_state,
3713	default_reset_comment_state, default_directive_domain,
3714	default_directive_message, default_comment, default_comment_dot,
3715	default_comment_filepos, default_comment_special, default_set_domain,
3716	default_add_message, default_methods): Update.
3717	(default_catalog_reader_alloc): Renamed from default_po_reader_alloc.
3718	(read_catalog_stream): Renamed from read_po. Update.
3719	(read_catalog_file): Renamed from read_po_file. Update.
3720	* read-csharp.c: Update.
3721	(execute_and_read_po_output): Update.
3722	* read-java.c: Update.
3723	(execute_and_read_po_output): Update.
3724	* read-properties.c: Update.
3725	(properties_parse): Update.
3726	* read-properties.h: Update.
3727	(properties_parse): Update.
3728	* read-resources.c: Update.
3729	(execute_and_read_po_output): Update.
3730	* read-stringtable.c: Update.
3731	(stringtable_parse): Update.
3732	* read-stringtable.h: Update.
3733	(stringtable_parse): Update.
3734	* read-tcl.c: Update.
3735	(msgdomain_read_tcl): Update.
3736	* x-po.c: Update.
3737	(extract_add_message, extract_methods, extract): Update.
3738	* xgettext.c: Update.
3739	(exclude_directive_domain, exclude_directive_message, exclude_methods,
3740	read_exclusion_file): Update.
3741	* xgettext.h: Update.
3742	* gettext-po.c: Update.
3743	(po_file_read_v3, po_file_read_v2, po_file_read): Update.
3744
3745	* read-catalog-abstract.h: Renamed from read-po-abstract.h.
3746	* read-catalog-abstract.c: Renamed from read-po-abstract.c.
3747	* read-catalog.h: Renamed from read-po.h.
3748	* read-catalog.c: Renamed from read-po.c.
3749	* open-catalog.h: Renamed from open-po.h.
3750	* open-catalog.c: Renamed from open-po.c.
3751	* Makefile.am (noinst_HEADERS, COMMON_SOURCE, libgettextsrc_la_SOURCES):
3752	Update.
3753
37542006-10-15  Bruno Haible  <bruno@clisp.org>
3755
3756	* write-catalog.h: New file.
3757	* write-catalog.c: New file, mostly extracted from write-po.c.
3758	* write-po.h (message_page_width_set): Move declaration to
3759	write-catalog.h.
3760	(message_print_syntax_properties, message_print_syntax_stringtable):
3761	Remove declarations.
3762	(msgdomain_list_print): Move out to write-catalog.h, adding a
3763	catalog_output_format_ty argument.
3764	(msgdomain_list_sort_by_msgid, msgdomain_list_sort_by_filepos): Move
3765	out to write-catalog.h.
3766	(output_format_po): New declaration.
3767	* write-po.c: Don't include fwriteerror.h, error-progname.h.
3768	(page_width, message_page_width_set): Move out to write-catalog.c.
3769	(use_syntax_properties): Remove variable.
3770	(message_print_syntax_properties): Remove function.
3771	(use_syntax_stringtable): Remove variable.
3772	(message_print_syntax_stringtable): Remove function.
3773	(wrap, message_print, message_print_obsolete, msgdomain_list_print_po):
3774	Add page_width argument.
3775	(msgdomain_list_print): Move out to write-catalog.c, adding a
3776	catalog_output_format_ty argument.
3777	(cmp_by_msgid, msgdomain_list_sort_by_msgid,
3778	cmp_filepos, msgdomain_list_sort_filepos,
3779	cmp_by_filepos, msgdomain_list_sort_by_filepos): Move out to
3780	write-catalog.c.
3781	(output_format_po): New variable.
3782	* write-properties.h (msgdomain_list_print_properties): Remove
3783	declaration.
3784	(output_format_properties): New declaration.
3785	* write-properties.c (msgdomain_list_print_properties): Make static.
3786	(output_format_properties): New variable.
3787	* write-stringtable.h (msgdomain_list_print_stringtable): Remove
3788	declaration.
3789	(output_format_stringtable): New declaration.
3790	* write-stringtable.c (msgdomain_list_print_stringtable): Make static.
3791	(output_format_stringtable): New variable.
3792	* msgattrib.c: Include write-catalog.h, write-properties.h,
3793	write-stringtable.h.
3794	(main): Change handling of --properties-output, --stringtable-output
3795	options. Pass the output_syntax to msgdomain_list_print.
3796	* msgcat.c: Include write-catalog.h, write-properties.h,
3797	write-stringtable.h.
3798	(main): Change handling of --properties-output, --stringtable-output
3799	options. Pass the output_syntax to msgdomain_list_print.
3800	* msgcomm.c: Include write-catalog.h, write-properties.h,
3801	write-stringtable.h.
3802	(main): Change handling of --properties-output, --stringtable-output
3803	options. Pass the output_syntax to msgdomain_list_print.
3804	* msgconv.c: Include write-catalog.h, write-properties.h,
3805	write-stringtable.h.
3806	(main): Change handling of --properties-output, --stringtable-output
3807	options. Pass the output_syntax to msgdomain_list_print.
3808	* msgen.c: Include write-catalog.h, write-properties.h,
3809	write-stringtable.h.
3810	(main): Change handling of --properties-output, --stringtable-output
3811	options. Pass the output_syntax to msgdomain_list_print.
3812	* msgfilter.c: Include write-catalog.h, write-properties.h,
3813	write-stringtable.h.
3814	(main): Change handling of --properties-output, --stringtable-output
3815	options. Pass the output_syntax to msgdomain_list_print.
3816	* msggrep.c: Include write-catalog.h, write-properties.h,
3817	write-stringtable.h.
3818	(main): Change handling of --properties-output, --stringtable-output
3819	options. Pass the output_syntax to msgdomain_list_print.
3820	* msginit.c: Include write-catalog.h, write-properties.h,
3821	write-stringtable.h.
3822	(main): Change handling of --properties-output, --stringtable-output
3823	options. Pass the output_syntax to msgdomain_list_print.
3824	* msgmerge.c: Include write-catalog.h, write-properties.h,
3825	write-stringtable.h.
3826	(main): Change handling of --properties-output, --stringtable-output
3827	options. Pass the output_syntax to msgdomain_list_print.
3828	* msgunfmt.c: Include write-catalog.h, write-properties.h,
3829	write-stringtable.h.
3830	(main): Change handling of --properties-output, --stringtable-output
3831	options. Pass the output_syntax to msgdomain_list_print.
3832	* msguniq.c: Include write-catalog.h, write-properties.h,
3833	write-stringtable.h.
3834	(main): Change handling of --properties-output, --stringtable-output
3835	options. Pass the output_syntax to msgdomain_list_print.
3836	* xgettext.c: Include write-catalog.h, write-properties.h,
3837	write-stringtable.h.
3838	(output_syntax): Change type to catalog_output_format_ty.
3839	(main): Update. Pass the output_syntax to msgdomain_list_print.
3840	(finalize_header): Update.
3841	* gettext-po.c: Include write-catalog.h.
3842	(po_file_write): Specify PO syntax.
3843	* Makefile.am (noinst_HEADERS): Add write-catalog.h.
3844	(libgettextsrc_la_SOURCES): Add write.catalog.c.
3845
38462006-10-05  Bruno Haible  <bruno@clisp.org>
3847
3848	* lang-table.c (language_table): Add Adangme, Kashubian. Fix the
3849	names of Western Frisian, Marshallese, Sinhala.
3850	* msginit.c (catalogname_for_locale): Add entries for Kashubian,
3851	Western Frisian, South Ndebele. Change entry for Serbian from sr_CS to
3852	sr_RS.
3853
38542006-10-06  Bruno Haible  <bruno@clisp.org>
3855
3856	* write-java.c (msgdomain_write_java): Use fopen_temp, fwriteerror_temp
3857	instead of fopen, fwriteerror.
3858	* write-csharp.c (msgdomain_write_csharp): Likewise.
3859
38602006-10-06  Bruno Haible  <bruno@clisp.org>
3861
3862	* Makefile.am (LTV_CURRENT, LTV_REVISION, LTV_AGE): Bump to 3:0:3.
3863
38642006-10-03  Bruno Haible  <bruno@clisp.org>
3865
3866	* message.h (struct message_ty): New fields prev_msgctxt, prev_msgid,
3867	prev_msgid_plural.
3868	* message.c (message_alloc): Initialize the prev_msg* fields.
3869	(message_free): Free the prev_msg* fields.
3870	(message_copy): Copy the prev_msg* fields.
3871	* msgl-ascii.c (is_ascii_message): Consider also the prev_msg* fields.
3872	* msgl-cat.c (catenate_msgdomain_list): Copy the prev_msg* fields if
3873	a message is copied, not merged.
3874	* msgl-equal.c (message_equal): Consider also the prev_msg* fields.
3875	* msgl-iconv.c (convert_prev_msgid): New function.
3876	(iconv_message_list): Call it.
3877	iconvable_prev_msgid): New function.
3878	(is_message_list_iconvable): Call it.
3879
3880	* po-lex.c (po_lex_previous): New variable.
3881	(lex_start, lex_end): Reset it.
3882	(keyword_p): Test it. New return values PREV_MSGID, PREV_MSGID_PLURAL,
3883	PREV_MSGCTXT.
3884	(po_gram_lex): Recognize #| and #~| syntax. New return value
3885	PREV_STRING.
3886	* po-gram-gen.y (do_callback_message): Add prev_msgctxt, prev_msgid,
3887	prev_msgid_plural arguments.
3888	(free_message_intro): New macro.
3889	(PREV_MSGCTXT, PREV_MSGID, PREV_MSGID_PLURAL, PREV_STRING): New tokens.
3890	(prev, message_intro): New structures.
3891	(po_file): Renamed from msgfmt.
3892	(message): Pass prev_* fields around. Call free_message_intro.
3893	(message_intro, prev): New rules.
3894	(msg_intro): Renamed from message_intro.
3895	(prev_msg_intro, prev_msgid_pluralform, prev_string_list): New rules.
3896	* read-po-abstract.h (struct abstract_po_reader_class_ty): Add
3897	prev_msgctxt, prev_msgid, prev_msgid_plural arguments to the
3898	'directive_message' method.
3899	(po_callback_message): Add prev_msgctxt, prev_msgid,
3900	prev_msgid_plural arguments.
3901	* read-po-abstract.c (call_directive_message, po_callback_message): Add
3902	prev_msgctxt, prev_msgid, prev_msgid_plural arguments.
3903	* read-po.h (struct default_po_reader_class_ty): Add prev_msgctxt,
3904	prev_msgid, prev_msgid_plural arguments to the 'add_message' method.
3905	(default_directive_message, default_add_message): Add prev_msgctxt,
3906	prev_msgid, prev_msgid_plural arguments.
3907	* read-po.c (call_add_message, default_directive_message,
3908	default_add_message): Add prev_msgctxt, prev_msgid, prev_msgid_plural
3909	arguments.
3910	* read-properties.c (properties_parse): Update.
3911	* read-stringtable.c (stringtable_parse): Update.
3912	* xgettext.c (exclude_directive_message): Add prev_msgctxt, prev_msgid,
3913	prev_msgid_plural arguments.
3914	* x-po.c (extract_add_message): Add prev_msgctxt, prev_msgid,
3915	prev_msgid_plural arguments.
3916
3917	* write-po.c (wrap): Add extra_indent argument.
3918	(message_print, message_print_obsolete): Print the prev_msgctxt,
3919	prev_msgid, prev_msgid_plural fields. Compute an extra_indent.
3920
3921	* msgmerge.c (keep_previous): New variable.
3922	(long_options): Add --previous option.
3923	(main): Handle it.
3924	(usage): Document --previous option.
3925	(message_merge): Add force_fuzzy argument. Set the new message's
3926	prev_msg* fields.
3927	(match_domain): Update.
3928	* msgattrib.c (REMOVE_PREV): New enum item.
3929	(long_options): Add --clear-previous option.
3930	(main): Handle it.
3931	(usage): Document --clear-previous option.
3932	(process_message_list): Handle REMOVE_PREV.
3933	* msgfmt.c (msgfmt_add_message): Add prev_msgctxt, prev_msgid,
3934	prev_msgid_plural arguments.
3935	* gettext-po.c (po_message_prev_msgctxt, po_message_set_prev_msgctxt,
3936	po_message_prev_msgid, po_message_set_prev_msgid,
3937	po_message_prev_msgid_plural, po_message_set_prev_msgid_plural): New
3938	functions.
3939
39402006-10-03  Bruno Haible  <bruno@clisp.org>
3941
3942	* msgmerge.c (definitions_init): Fix initialization of fresh_lock.
3943
39442006-10-03  Bruno Haible  <bruno@clisp.org>
3945
3946	* msgcmp.c (include_fuzzies, include_untranslated): New variables.
3947	(long_options): Add options --use-fuzzy, --use-untranslated.
3948	(main): Handle them.
3949	(usage): Document them.
3950	(match_domain): Consider include_fuzzies and include_untranslated.
3951
39522006-10-02  Bruno Haible  <bruno@clisp.org>
3953
3954	* gettext-po.h.in (LIBGETTEXTPO_VERSION): Bump version number.
3955	* Makefile.am (LTV_CURRENT, LTV_REVISION, LTV_AGE): Bump to 2:1:2.
3956
39572006-10-01  Bruno Haible  <bruno@clisp.org>
3958
3959	* x-perl.c (extract_balanced): Remove state argument.
3960
3961	* x-perl.c (extract_balanced): Remove unused variable prev_last_token.
3962
3963	Fix Perl parsing bug introduced between 0.14.6 and 0.15.
3964	* x-perl.c (extract_balanced): Add eat_delim and comma_delim arguments.
3965	Use recursion to handle the case of a keyword not followed by an
3966	opening parenthesis. When a keyword is seen, set next_argparser
3967	instead of modifying the argparser variable of the current recursion.
3968	When seeing an opening parenthesis, distinguish the case of function
3969	arguments and the case of a subexpression. Don't call collect_message
3970	for unused argument positions.
3971	Reported by Nicolas François <nicolas.francois@centraliens.net>.
3972
3973	* x-perl.c (extract_balanced): Remove unused variable.
3974
39752006-09-06  Bruno Haible  <bruno@clisp.org>
3976
3977	* msgl-iconv.c: Include xstriconv.h instead of iconvstring.h.
3978	(convert_string, convert_msgstr, iconvable_string, iconvable_msgstr):
3979	Use xmem_cd_iconv instead of iconv_string.
3980	* recode-sr-latin.c: Include xstriconv.h instead of iconvstring.h.
3981	(process): Use xmem_cd_iconv instead of iconv_string.
3982
39832006-09-04  Bruno Haible  <bruno@clisp.org>
3984
3985	* Makefile.am (msginit_SOURCES): Add ../../gettext-runtime/intl/lock.c.
3986	Reported by Aaron Williams <aaron_williams@net.com>.
3987
39882006-08-28  Bruno Haible  <bruno@clisp.org>
3989
3990	* x-scheme.c (read_object): Don't call arglist_parser_remember if
3991	argparser is NULL.
3992	* x-elisp.c (read_object): Likewise.
3993	* x-librep.c (read_object): Likewise.
3994	* x-lisp.c (read_object): Likewise.
3995	Reported by Kevin Ryde <user42@zip.com.au>.
3996
39972006-08-16  Bruno Haible  <bruno@clisp.org>
3998
3999	* plural-table.c (plural_table): Put Hungarian under nplurals=2.
4000	Reported by Arpad Biro <biro_arpad@yahoo.com> and
4001	Gabor Kelemen <kelemeng@gnome.hu>.
4002
40032006-08-16  Bruno Haible  <bruno@clisp.org>
4004
4005	* read-mo.c: Include stdbool.h, stdlib.h, format.h.
4006	(read_mo_file): Mark messages with system-dependent segments as
4007	"#, c-format" or "#, objc-format", as appropriate.
4008	Reported by Egmont Koblinger <egmont@uhulinux.hu>.
4009
40102006-08-07  Bruno Haible  <bruno@clisp.org>
4011
4012	* xgettext.c (remember_a_message): Use the position passed as argument
4013	instead of a dummypos.
4014	Reported by Paul Eggert <eggert@cs.ucla.edu>.
4015
40162006-08-01  Bruno Haible  <bruno@clisp.org>
4017
4018	Fix behaviour of msgmerge when the PO file and the compendium are
4019	in different encodings.
4020	* msgl-iconv.h (is_message_list_iconvable): New declaration.
4021	* msgl-iconv.c (iconvable_string, iconvable_string_list,
4022	iconvable_msgid, iconvable_msgstr, is_message_list_iconvable): New
4023	functions.
4024	* msgmerge.c: Include xallocsa.h.
4025	(merge): In the case that the .pot file is ASCII, not UTF-8, convert
4026	the definitions and the compendia contents to a common encoding.
4027	Reported by Stanislav Brabec <sbrabec@suse.cz>.
4028
40292006-07-30  Bruno Haible  <bruno@clisp.org>
4030
4031	* Makefile.am (AM_CPPFLAGS, LDADD, libgettextsrc_la_LDFLAGS,
4032	libgettextpo_la_LDFLAGS, recode_sr_latin_LDADD, RELOCATABLE_SRC_DIR,
4033	RELOCATABLE_BUILD_DIR): Replace ../lib with ../gnulib-lib.
4034	(JAVACOMP, CSHARPCOMP): Remove lib/ from pathname.
4035
40362006-07-30  Bruno Haible  <bruno@clisp.org>
4037
4038	* msgl-cat.c: Include c-strstr.h instead of strstr.h.
4039	(catenate_msgdomain_list): Use c_strstr instead of strstr.
4040	* msgl-charset.c: Include c-strstr.h instead of strstr.h.
4041	(compare_po_locale_charsets): Use c_strstr instead of strstr.
4042	* msgl-check.c: Include c-strstr.h instead of strstr.h.
4043	(plural_help, check_plural, check_header_entry): Use c_strstr instead
4044	of strstr.
4045	* msgl-iconv.c: Include c-strstr.h instead of strstr.h.
4046	(iconv_message_list): Use c_strstr instead of strstr.
4047	* po-charset.c: Include c-strstr.h instead of strstr.h.
4048	(po_lex_charset_set): Use c_strstr instead of strstr.
4049	* write-po.c: Include c-strstr.h instead of strstr.h.
4050	(msgdomain_list_print_po): Use c_strstr instead of strstr.
4051	* write-stringtable.c: Include c-strstr.h instead of strstr.h.
4052	(write_message): Use c_strstr instead of strstr.
4053	* msgcmp.c: Include c-strstr.h instead of strstr.h.
4054	(compare): Use c_strstr instead of strstr.
4055	* msginit.c: Include c-strstr.h instead of strstr.h.
4056	(content_type): Use c_strstr instead of strstr.
4057	* msgmerge.c: Include c-strstr.h instead of strstr.h.
4058	(message_merge, merge): Use c_strstr instead of strstr.
4059	* x-python.c: Include c-strstr.h instead of strstr.h.
4060	(try_to_extract_coding): Use c_strstr instead of strstr.
4061	* xgettext.c: Include c-strstr.h instead of strstr.h.
4062	(remember_a_message, finalize_header): Use c_strstr instead of strstr.
4063
40642006-07-23  Bruno Haible  <bruno@clisp.org>
4065
4066	Exploit CPUs with multiple execution units.
4067	* msgmerge.c: Include lock.h.
4068	(struct definitions_ty): Add 'findex_init_lock' field.
4069	(definitions_init): Initialize it.
4070	(definitions_init_findex): Ensure findex is initialized by the
4071	first thread who attempts so.
4072	(match_domain): Split the main loop into two. Parallelize the first
4073	loop using OpenMP pragmas.
4074	* Makefile.am (msgmerge_CFLAGS): New variable.
4075	(msgmerge_LDADD): Add OPENMP_CFLAGS.
4076
40772006-07-25  Bruno Haible  <bruno@clisp.org>
4078
4079	* Makefile.msvc: Remove file.
4080	* Makefile.am (EXTRA_DIST): Remove Makefile.msvc.
4081
40822006-07-25  Bruno Haible  <bruno@clisp.org>
4083
4084	* Makefile.vms: Remove file.
4085	* Makefile.am (EXTRA_DIST): Remove Makefile.vms.
4086
40872006-07-24  Bruno Haible  <bruno@clisp.org>
4088
4089	* Makefile.am (include_HEADERS): Remove variable.
4090	(nodist_include_HEADERS): New variable.
4091	Suggested by Ralf Corsepius <rc040203@freenet.de>.
4092
40932006-07-21  Bruno Haible  <bruno@clisp.org>
4094
4095	* gettext-0.15 released.
4096
40972006-07-20  Bruno Haible  <bruno@clisp.org>
4098
4099	* gettext-po.h.in (LIBGETTEXTPO_VERSION): Bump version number.
4100
41012006-07-20  Bruno Haible  <bruno@clisp.org>
4102
4103	* Makefile.am (LTV_CURRENT, LTV_REVISION, LTV_AGE): Bump to 2:0:2.
4104
41052006-07-14  Bruno Haible  <bruno@clisp.org>
4106
4107	* Makefile.am (MOSTLYCLEANFILES): New variable.
4108
41092006-07-02  Bruno Haible  <bruno@clisp.org>
4110
4111	* write-csharp.c (msgdomain_write_csharp): Update.
4112	* write-java.c (msgdomain_write_java): Update.
4113
41142006-06-29  Bruno Haible  <bruno@clisp.org>
4115
4116	* write-csharp.c (msgdomain_write_csharp): Update.
4117	* write-java.c (msgdomain_write_java): Likewise.
4118
41192006-06-28  Bruno Haible  <bruno@clisp.org>
4120
4121	Assume <dirent.h> on all Unix platforms. Assume closedir works.
4122	* msginit.c: Don't include <sys/ndir.h>, <sys/dir.h>, <ndir.h>.
4123	(find_pot): Use closedir directly.
4124
41252006-06-27  Bruno Haible  <bruno@clisp.org>
4126
4127	Assume correct S_ISDIR macro.
4128	* write-csharp.c: Remove test of STAT_MACROS_BROKEN.
4129	* write-java.c: Likewise.
4130
41312006-04-14  Bruno Haible  <bruno@clisp.org>
4132
4133	Assume autoconf >= 2.60.
4134	* Makefile.am (localedir): Remove variable.
4135
41362006-06-21  Bruno Haible  <bruno@clisp.org>
4137
4138	* x-sh.c (read_word): Recognize the Bash process substitution syntax.
4139
41402006-06-21  Bruno Haible  <bruno@clisp.org>
4141
4142	* x-sh.c (read_word): Recognize $(...) and $((...)) also inside
4143	double-quoted strings.
4144	Reported by Michelle Konzack <linux4michelle@freenet.de>.
4145
41462006-06-04  Bruno Haible  <bruno@clisp.org>
4147
4148	* msgl-check.c (check_plural_eval): Declare 'distribution' as volatile,
4149	so that it is unaffected by longjmp.
4150
41512006-06-04  Bruno Haible  <bruno@clisp.org>
4152
4153	* xgettext.c (arglist_parser_done): Cast length argument for format
4154	string.
4155
41562006-05-31  Bruno Haible  <bruno@clisp.org>
4157
4158	* x-ycp.c (phase5_pushback, phase5_pushback_length): New variables.
4159	(phase5_get): Renamed from x_ycp_lex.
4160	(phase5_unget): New function.
4161	(phase8_get): New function.
4162	(extract_parenthesized): Inside i18n construct, use phase8_get
4163	instead of phase5_get.
4164	Reported by Karl Eichwalder <ke@suse.de>.
4165
41662006-05-22  Bruno Haible  <bruno@clisp.org>
4167
4168	* msgfilter.c: Include <sys/select.h> also on Minix.
4169	Reported by Leonard den Ottolander <leonard@den.ottolander.nl>.
4170
41712006-05-17  Bruno Haible  <bruno@clisp.org>
4172
4173	Cygwin portability.
4174	* hostname.c (WIN32_NATIVE): Renamed from WIN32.
4175
41762006-05-16  Bruno Haible  <bruno@clisp.org>
4177
4178	* Makefile.am (CLEANFILES): Add gettext-po.h.
4179
41802006-05-16  Bruno Haible  <bruno@clisp.org>
4181
4182	* xgettext.c (main): Use a size_t index variable for looping over the
4183	files.
4184	(arglist_parser_done): Fix a format string.
4185
41862006-05-16  Bruno Haible  <bruno@clisp.org>
4187
4188	* msgfilter.c (main): Change type of i.
4189
41902006-05-15  Bruno Haible  <bruno@clisp.org>
4191
4192	* Makefile.am: Test flag WOE32DLL instead of CYGWINDLL.
4193
41942006-05-14  Bruno Haible  <bruno@clisp.org>
4195
4196	* x-php.c (x_php_lex): Fix handling of here documents.
4197	Reported by Gaëtan Frenoy <gaetan@frenoy.net>.
4198
41992006-05-12  Bruno Haible  <bruno@clisp.org>
4200
4201	* write-csharp.c [MINGW]: Include <io.h>.
4202	(mkdir): Define using _mkdir.
4203	* write-java.c [MINGW]: Include <io.h>.
4204	(mkdir): Define using _mkdir.
4205
42062006-05-11  Bruno Haible  <bruno@clisp.org>
4207
4208	* gettext-po.h.in: Renamed from gettext-po.h.
4209	* Makefile.am: Treat condition WOE32DLL like MINGW. Update file names.
4210	(libgettextsrc_la_SOURCES, libgettextsrc_la_LDFLAGS): Modify for
4211	Cygwin.
4212	libgettextpo_la_SOURCES, libgettextpo_la_LDFLAGS): Likewise.
4213	(BUILT_SOURCES): Add gettext-po.h.
4214	(EXTRA_DIST): Add gettext-po.h.in.
4215	(gettext-po.h): New rule.
4216
42172006-05-11  Bruno Haible  <bruno@clisp.org>
4218
4219	* Makefile.am (format_CFLAGS): Remove variable.
4220	(format.lo): Remove variable.
4221	(FORMAT_SOURCE) [MINGW]: Use ../mingw/c++format.cc instead of format.c.
4222
42232006-05-09  Bruno Haible  <bruno@clisp.org>
4224
4225	* plural-eval.h (USE_SIGINFO): Don't define on Cygwin.
4226
42272006-05-02  Charles Wilson  <cygwin@cwilson.fastmail.fm>
4228
4229	* write-mo.h: Remove DLL_VARIABLE declarations, not needed since
4230	write-mo.c is not compiled into a shared library.
4231	* lang-table.h: Likewise.
4232
42332006-05-02  Charles Wilson  <cygwin@cwilson.fastmail.fm>
4234
4235	* filters.h: Add C++ guards.
4236
42372006-05-07  Bruno Haible  <bruno@clisp.org>
4238
4239	* x-perl.c (extract_variable): Fix syntax error introduced on
4240	2005-10-03.
4241
42422006-05-07  Bruno Haible  <bruno@clisp.org>
4243
4244	* format-awk.c: Include xvasprintf.h instead of xerror.h.
4245	* format-elisp.c: Likewise.
4246	* format-librep.c: Likewise.
4247	* format-pascal.c: Likewise.
4248	* format-php.c: Likewise.
4249	* format-tcl.c: Likewise.
4250
42512006-04-30  Bruno Haible  <bruno@clisp.org>
4252
4253	* write-java.c (msgdomain_write_java): Specify source-version 1.3 and
4254	require target-version 1.1.
4255
42562006-04-30  Bruno Haible  <bruno@clisp.org>
4257
4258	* msginit.c (main): Simplify by use of xasprintf().
4259	* write-java.c: Include xvasprintf.h.
4260	(msgdomain_write_java): Simplify by use of xasprintf().
4261	* x-c.c: Include xvasprintf.h.
4262	(phase8a_get): Simplify by use of xasprintf().
4263	* xgettext.c: Don't include stpcpy.h.
4264	(remember_a_message, remember_a_message_plural): Simplify by use of
4265	xasprintf().
4266
42672006-04-30  Bruno Haible  <bruno@clisp.org>
4268
4269	* msgfmt.c: Include xvasprintf.h.
4270	* msginit.c: Likewise.
4271	* msgl-cat.c: Likewise.
4272	* msgl-charset.c: Likewise.
4273	* po-xerror.c: Likewise.
4274	* x-csharp.c: Likewise.
4275	* x-glade.c: Likewise.
4276	* x-python.c: Likewise.
4277	* xgettext.c: Likewise.
4278	* format-boost.c: Include xvasprintf.h instead of xerror.h.
4279	* format-c.c: Likewise.
4280	* format-csharp.c: Likewise.
4281	* format-gcc-internal.c: Likewise.
4282	* format-java.c: Likewise.
4283	* format-lisp.c: Likewise.
4284	* format-perl.c: Likewise.
4285	* format-python.c: Likewise.
4286	* format-qt.c: Likewise.
4287	* format-scheme.c: Likewise.
4288	* format-ycp.c: Likewise.
4289	* msgexec.c: Likewise.
4290	* msgl-check.c: Likewise.
4291	* msgl-iconv.c: Likewise.
4292	* open-po.c: Likewise.
4293	* po-charset.c: Likewise.
4294	* po-lex.c: Likewise.
4295	* po-time.c: Likewise.
4296	* read-po-abstract.c: Likewise.
4297	* read-properties.c: Likewise.
4298	* read-stringtable.c: Likewise.
4299	* write-po.c: Likewise.
4300
43012006-04-30  Bruno Haible  <bruno@clisp.org>
4302
4303	* msginit.c (project_id, project_id_version, get_user_email): Close
4304	the FILE in case of I/O error.
4305
43062006-04-30  Bruno Haible  <bruno@clisp.org>
4307
4308	* write-java.c (msgdomain_write_java): Don't fclose the FILE after
4309	fwriteerror signalled a failure.
4310	* write-csharp.c (msgdomain_write_csharp): Likewise.
4311
43122006-04-23  Bruno Haible  <bruno@clisp.org>
4313
4314	* msgexec.c: Include <unistd.h> unconditionally.
4315	* msgfilter.c: Likewise.
4316	* msggrep.c: Likewise.
4317	* msginit.c: Likewise.
4318	* hostname.c: Likewise.
4319	* urlget.c: Likewise.
4320
43212006-04-17  Bruno Haible  <bruno@clisp.org>
4322
4323	* Makefile.am: Use $(mkdir_p) instead of $(mkinstalldirs).
4324
43252006-04-09  Bruno Haible  <bruno@clisp.org>
4326
4327	* write-csharp.c: Include clean-temp.h. Don't include unistd.h,
4328	mkdtemp.h, tmpdir.h, pathmax.h, fatal-signal.h, xallocsa.h.
4329	(cleanup_list): Remove variable.
4330	(cleanup): Remove function.
4331	(msgdomain_write_csharp): Simplify handling of temporary directory.
4332	* write-java.c: Include clean-temp.h. Don't include unistd.h,
4333	mkdtemp.h, tmpdir.h, pathmax.h, fatal-signal.h.
4334	(cleanup_list): Remove variable.
4335	(cleanup): Remove function.
4336	(msgdomain_write_java): Simplify handling of temporary directory.
4337
43382006-04-03  Bruno Haible  <bruno@clisp.org>
4339
4340	* x-glade.c (p_XML_GetCurrentLineNumber, p_XML_GetCurrentColumnNumber):
4341	Declare differently for expat >= 2.0.0.
4342	(load_libexpat): Search for a differently library name for expat >=
4343	2.0.0.
4344	(do_extract_glade): Update.
4345	Reported by Mike Frysinger <vapier@gentoo.org>.
4346
43472006-04-02  Bruno Haible  <bruno@clisp.org>
4348
4349	* hostname.c: Include propername.h.
4350	(main): Call proper_name.
4351	* msgattrib.c: Include propername.h.
4352	(main): Call proper_name.
4353	* msgcat.c: Include propername.h.
4354	(main): Call proper_name.
4355	* msgcmp.c: Include propername.h.
4356	(main): Call proper_name.
4357	* msgcomm.c: Include propername.h.
4358	(main): Call proper_name.
4359	* msgconv.c: Include propername.h.
4360	(main): Call proper_name.
4361	* msgen.c: Include propername.h.
4362	(main): Call proper_name.
4363	* msgexec.c: Include propername.h.
4364	(main): Call proper_name.
4365	* msgfilter.c: Include propername.h.
4366	(main): Call proper_name.
4367	* msgfmt.c: Include propername.h.
4368	(main): Call proper_name.
4369	* msggrep.c: Include propername.h.
4370	(main): Call proper_name.
4371	* msginit.c: Include propername.h.
4372	(main): Call proper_name.
4373	* msgmerge.c: Include propername.h.
4374	(main): Call proper_name.
4375	* msgunfmt.c: Include propername.h.
4376	(main): Call proper_name.
4377	* msguniq.c: Include propername.h.
4378	(main): Call proper_name.
4379	* recode-sr-latin.c: Include propername.h.
4380	(main): Call proper_name and proper_name_utf8.
4381	* urlget.c: Include propername.h.
4382	(main): Call proper_name.
4383	* xgettext.c: Include propername.h.
4384	(main): Call proper_name.
4385
43862006-04-01  Bruno Haible  <bruno@clisp.org>
4387
4388	* xgettext.c (main): Treat --keyword= like --keyword.
4389
43902006-03-28  Bruno Haible  <bruno@clisp.org>
4391
4392	* filters.h: New file.
4393	* filter-sr-latin.c: New file, based on code from Danilo Šegan.
4394	* recode-sr-latin.c: New file.
4395	* msgfilter.c: Include filters.h, msgl-iconv.h, po-charset.h.
4396	(filter): New variable.
4397	(main): Recognize recode-sr-latin as built-in.
4398	(generic_filter): New function, extracted from process_string.
4399	(process_string): Call the filter.
4400	* Makefile.am (bin_PROGRAMS): Add recode-sr-latin.
4401	(noinst_HEADERS): Add filters.h.
4402	(msgfilter_SOURCES): Add filter-sr-latin.c.
4403	(recode_sr_latin_SOURCES, recode_sr_latin_LDADD,
4404	recode_sr_latin_CPPFLAGS, recode_sr_latin_LDFLAGS): New variables.
4405	* Makefile.msvc (PROGRAMS): Add recode-sr-latin.exe.
4406	(msgfilter_OBJECTS): Add filter-sr-latin.obj.
4407	(recode_sr_latin_OBJECTS): New variable.
4408	(filter-sr-latin.obj, recode-sr-latin.obj): New rules.
4409	(recode-sr-latin.exe): New rule.
4410	(install): Also install recode-sr-latin.exe.
4411	(uninstall): Also uninstall recode-sr-latin.exe.
4412	* Makefile.vms (PROGRAMS): Add recode-sr-latin.exe.
4413	(msgfilter_OBJECTS): Add filter-sr-latin.obj.
4414	(recode_sr_latin_OBJECTS): New variable.
4415	(filter-sr-latin.obj, recode-sr-latin.obj): New rules.
4416	(recode-sr-latin.exe): New rule.
4417	(install): Also install recode-sr-latin.exe.
4418	(uninstall): Also uninstall recode-sr-latin.exe.
4419
44202006-03-28  Bruno Haible  <bruno@clisp.org>
4421
4422	* msgl-iconv.c: Include iconvstring.h. Don't include <errno.h>.
4423	(iconv_string): Remove function, moved to ../lib/.
4424
44252006-03-19  Bruno Haible  <bruno@clisp.org>
4426
4427	* xgettext.h (struct callshape): New field 'xcomments'.
4428	(struct partial_call): New field 'xcomments'.
4429	* xgettext.c (split_keywordspec): Accept the ID:ARGNUM...,"XCOMMENT"
4430	syntax.
4431	(insert_keyword_callshape): Store the xcomments from the new shape.
4432	(arglist_parser_alloc, arglist_parser_clone): Update.
4433	(arglist_parser_done): After calling remember_a_message, attach the
4434	specified extracted comments.
4435	* x-perl.c (extract_variable): Update.
4436	Suggested by Behdad Esfahbod <behdad@cs.toronto.edu>.
4437
44382006-03-19  Bruno Haible  <bruno@clisp.org>
4439
4440	* xgettext.c (arglist_parser_done): Use error_at_line instead of error.
4441
44422006-03-16  Bruno Haible  <bruno@clisp.org>
4443
4444	* msggrep.c (grep_task): Increment size.
4445	(long_options): Add --extracted-comment option.
4446	(main): Handle --extracted-comment option.
4447	(no_pass, usage): Update.
4448	(is_message_selected_no_invert): Implement matching on extracted
4449	comments.
4450	Suggested by Behdad Esfahbod <behdad@cs.toronto.edu>.
4451
44522006-03-16  Bruno Haible  <bruno@clisp.org>
4453
4454	Handle GNOME glib context syntax.
4455	* xgettext.h (struct callshape): Add fields argnum1_glib_context,
4456	argnum2_glib_context.
4457	(struct partial_call): Add fields argnum1_glib_context,
4458	argnum2_glib_context.
4459	* xgettext.c (split_keywordspec): Recognize suffix 'g' and set the
4460	argnum1_glib_context, argnum2_glib_context fields.
4461	(insert_keyword_callshape, arglist_parser_alloc, arglist_parser_clone):
4462	Update.
4463	(arglist_parser_done): When suffix 'g' was specified, split off the
4464	context from the msgid and/or msgid_plural.
4465	* x-perl.c (extract_variable): Update.
4466	Suggested by Danilo Šegan <danilo@gnome.org>.
4467
44682006-03-16  Bruno Haible  <bruno@clisp.org>
4469
4470	* xgettext.c (set_format_flags_from_context): Break long line.
4471
44722006-03-11  Bruno Haible  <bruno@clisp.org>
4473
4474	* message.c (fuzzy_search_goal_function): Use 'volatile double'.
4475
44762006-03-11  Bruno Haible  <bruno@clisp.org>
4477
4478	Speed up msgmerge with large compendia.
4479	* message.h (message_list_free): Add keep_messages argument.
4480	(message_list_list_free): Add keep_level argument.
4481	(fuzzy_search_goal_function): New declaration.
4482	(FUZZY_THRESHOLD): New macro.
4483	* message.c (message_list_free): Add keep_messages argument.
4484	(fuzzy_search_goal_function): New function, extracted from
4485	message_list_search_fuzzy_inner.
4486	(message_list_search_fuzzy_inner): Use it.
4487	(message_list_search_fuzzy): Use symbolic value FUZZY_THRESHOLD.
4488	(message_list_list_free): Comment in. Add keep_level argument.
4489	(message_list_list_search_fuzzy): Comment out. Use symbolic value
4490	FUZZY_THRESHOLD.
4491	(msgdomain_free): Update.
4492	(msgdomain_list_search_fuzzy): Use symbolic value FUZZY_THRESHOLD.
4493	* po-charset.h: Include stddef.h.
4494	(character_iterator_t): New type.
4495	(po_charset_character_iterator): New declaration.
4496	* po-charset.c (char_iterator, euc_character_iterator,
4497	euc_jp_character_iterator, euc_tw_character_iterator,
4498	big5_character_iterator, big5hkscs_character_iterator,
4499	gbk_character_iterator, gb18030_character_iterator,
4500	shift_jis_character_iterator, johab_character_iterator,
4501	utf8_character_iterator, po_charset_character_iterator): New functions.
4502	* msgl-fsearch.h: New file.
4503	* msgl-fsearch.c: New file.
4504	* msgmerge.c: Include po-charset.h, msgl-fsearch.h.
4505	(compendium_filenames): New variable.
4506	(compendium): Also put the filename into compendium_filenames.
4507	(definitions_ty): New structure type.
4508	(definitions_init, definitions_init_findex, definitions_current_list,
4509	definitions_set_current_list, definitions_search,
4510	definitions_search_fuzzy, definitions_destroy): New functions.
4511	(match_domain): Change type of 'definitions' argument.
4512	(merge): Also convert the compendium to UTF-8. Use definitions_init,
4513	definitions_set_current_list, definitions_destroy.
4514	* msgfmt.c (main): Update.
4515	* Makefile.am (noinst_HEADERS): Add msgl-fsearch.h.
4516	(msgmerge_SOURCES): Add msgl-fsearch.c.
4517	(msgmerge_LDADD): Link with MSGMERGE_LIBM.
4518	* Makefile.msvc (msgmerge_OBJECTS): Add msgl-fsearch.obj.
4519	(msgl-fsearch.obj): New rule.
4520	* Makefile.vms (msgmerge_OBJECTS): Add msgl-fsearch.obj.
4521	(msgl-fsearch.obj): New rule.
4522	Reported by Clytie Siddall <clytie@riverland.net.au>.
4523
45242006-03-09  Bruno Haible  <bruno@clisp.org>
4525
4526	* Makefile.am (CXXLINK) [!mingw]: Overwrite automake's value. Fixes
4527	unintended dependency on libstdc++ introduced on 2005-07-05.
4528
45292005-10-09  Bruno Haible  <bruno@clisp.org>
4530
4531	* lang-table.h: New file.
4532	* lang-table.c: New file, extracted from msginit.c.
4533	* msginit.c: Include lang-table.h.
4534	(englishname_of_language): Use language_table.
4535	* Makefile.am (noinst_HEADERS): Add lang-table.h.
4536	(msginit_SOURCES): Add lang-table.c.
4537	* Makefile.msvc (MSGINIT_OBJECTS): Add lang-table.obj.
4538	(lang-table.obj): New rule.
4539	* Makefile.vms (MSGINIT_OBJECTS): Add lang-table.obj.
4540	(lang-table.obj): New rule.
4541
45422006-02-12  Bruno Haible  <bruno@clisp.org>
4543
4544	* message.h (format_type): New enum value 'format_boost'.
4545	(NFORMATS): Increment.
4546	* message.c (format_language): Add format_boost entry.
4547	(format_language_pretty): Likewise.
4548	* format.h (formatstring_boost): New declaration.
4549	* format-boost.c: New file, based on format-c.c.
4550	* format.c (formatstring_parsers): Add formatstring_boost.
4551	* x-c.c (init_flag_table_c): Also register flags for boost-format.
4552	* xgettext.c (flag_table_cxx_qt, flag_table_cxx_boost): New variables.
4553	(recognize_format_boost): New variable.
4554	(main): Handle --boost option.
4555	(usage): Document --boost option.
4556	(xgettext_record_flag): Also fill flag_table_cxx_qt,
4557	flag_table_cxx_boost.
4558	(remember_a_message, remember_a_message_plural): In the heuristics,
4559	don't mark a string as c-format that is already known to be a qt-format
4560	or boost-format.
4561	(language_to_extractor): Use a flag_table_cxx_qt or
4562	flag_table_cxx_boost that is different from flag_table_c.
4563	* Makefile.am (FORMAT_SOURCE): Add format-boost.c.
4564	* Makefile.msvc (OBJECTS): Add format-boost.obj.
4565	(format-boost.obj): New rule.
4566	* Makefile.vms (OBJECTS): Add format-boost.obj.
4567	(format-boost.obj): New rule.
4568	* FILES: Update.
4569
45702006-02-12  Bruno Haible  <bruno@clisp.org>
4571
4572	* xgettext.c (xgettext_record_flag): When asked to set "qt-format",
4573	really set "qt-format", not "c-format". Fixes bug introduced on
4574	2003-10-19.
4575
45762006-02-12  Bruno Haible  <bruno@clisp.org>
4577
4578	Reduce the number of false positives produced by the c-format guessing
4579	heuristics.
4580	* format.h (struct formatstring_parser): Add 'is_unlikely_intentional'
4581	field.
4582	* format-awk.c (formatstring_awk): Update.
4583	* format-c.c (struct spec): Add 'unlikely_unintentional' field.
4584	(format_parse): Set unlikely_unintentional to true when encountering
4585	a "%...%" directive other than "%%".
4586	(format_is_unlikely_intentional): New function.
4587	(formatstring_c, formatstring_objc): Use it.
4588	* format-csharp.c (formatstring_csharp): Update.
4589	* format-elisp.c (formatstring_elisp): Update.
4590	* format-gcc-internal.c (formatstring_gcc_internal): Update.
4591	* format-java.c (formatstring_java): Update.
4592	* format-librep.c (formatstring_librep): Update.
4593	* format-lisp.c (formatstring_lisp): Update.
4594	* format-pascal.c (formatstring_pascal): Update.
4595	* format-perl.c (formatstring_perl): Update.
4596	* format-perl-brace.c (formatstring_perl_brace): Update.
4597	* format-php.c (format_php): Update.
4598	* format-python.c (formatstring_python): Update.
4599	* format-qt.c (formatstring_qt): Update.
4600	* format-scheme.c (formatstring_scheme): Update
4601	* format-sh.c (formatstring_sh): Update.
4602	* format-tcl.c (formatstring_tcl): Update.
4603	* format-ycp.c (formatstring_ycp, formatstring_smalltalk): Update.
4604	* xgettext.c (remember_a_message, remember_a_message_plural): Don't
4605	mark the message as c-format if the validity as c-format looks
4606	unintentional.
4607
46082006-02-12  Bruno Haible  <bruno@clisp.org>
4609
4610	* msgattrib.c (main): Update year in --version output.
4611	* msgcat.c (main): Likewise.
4612	* msgcmp.c (main): Likewise.
4613	* msgcomm.c (main): Likewise.
4614	* msgconv.c (main): Likewise.
4615	* msgen.c (main): Likewise.
4616	* msgexec.c (main): Likewise.
4617	* msgfilter.c (main): Likewise.
4618	* msgfmt.c (main): Likewise.
4619	* msggrep.c (main): Likewise.
4620	* msginit.c (main): Likewise.
4621	* msgmerge.c (main): Likewise.
4622	* msgunfmt.c (main): Likewise.
4623	* msguniq.c (main): Likewise.
4624	* xgettext.c (main): Likewise.
4625
46262006-01-25  Bruno Haible  <bruno@clisp.org>
4627
4628	* x-php.c (x_php_lex): Treat byte values >= 127 like alphabetic.
4629	Reported by Hagen Fritsch <itooktheredpill@gmx.de>.
4630
46312005-12-25  Bruno Haible  <bruno@clisp.org>
4632
4633	Tell Python developers to use named arguments in format strings.
4634	* format.h (get_python_format_unnamed_arg_count): New declaration.
4635	* format-python.c (get_python_format_unnamed_arg_count): New function.
4636	* xgettext.c (warn_format_string): New function.
4637	(remember_a_message, remember_a_message_plural): Call it.
4638	Suggested by Martin von Löwis.
4639
46402005-12-07  Bruno Haible  <bruno@clisp.org>
4641
4642	* msgl-iconv.c (iconv_message_list): Fix syntax error.
4643	Reported by Dave Patton <dpatton@confluence.org>.
4644
46452005-12-04  Bruno Haible  <bruno@clisp.org>
4646
4647	* Makefile.am (CSHARPCOMPFLAGS): Use value set by csharpcomp.m4.
4648
46492005-11-29  Colin Watson  <cjwatson@ubuntu.com>
4650
4651	* msggrep.c (invert_match): New variable.
4652	(long_options): Add --invert-match option.
4653	(main): Handle --invert-match option.
4654	(usage): Document --invert-match option.
4655	(is_message_selected_no_invert): New function, extracted from
4656	is_message_selected.
4657	(is_message_selected): Call it. Handle match inversion.
4658
46592005-11-01  Bruno Haible  <bruno@clisp.org>
4660
4661	* write-csharp.c (write_csharp_code): Add culture_name argument.
4662	Emit an AssemblyCulture note for it.
4663	(msgdomain_write_csharp): Update.
4664	Suggested by Pepa <cerna.zelva@seznam.cz>.
4665
46662005-10-09  Bruno Haible  <bruno@clisp.org>
4667
4668	* plural-eval.h: New file.
4669	* plural-eval.c: Include plural-eval.h.
4670	(sigfpe_exit, sigfpe_code, sigfpe_handler, install_sigfpe_handler,
4671	uninstall_sigfpe_handler): New definitions, moved here from
4672	msgl-check.c.
4673	* msgl-check.c: Include plural.eval.h.
4674	(sigjmp_buf, sigsetjmp, siglongjmp, USE_SIGINFO): Move to plural-eval.h.
4675	(sigfpe_exit, sigfpe_code, sigfpe_handler, install_sigfpe_handler,
4676	uninstall_sigfpe_handler): Move to plural-eval.c.
4677	* Makefile.am (noinst_HEADERS): Add plural-eval.h.
4678
46792005-10-09  Bruno Haible  <bruno@clisp.org>
4680
4681	* msgl-check.c: Include c-ctype.h instead of ctype.h.
4682	(check_plural): Use c_isspace instead of isspace.
4683	* x-librep.c: Include c-ctype.h instead of ctype.h.
4684	(read_token): Use c_isxdigit instead of isxdigit.
4685	* x-rst.c: Include c-ctype.h instead of ctype.h.
4686	(extract_rst): Use c_isdigit instead of isdigit.
4687	* x-ycp.c: Don't include ctype.h.
4688
46892005-10-09  Bruno Haible  <bruno@clisp.org>
4690
4691	* plural-exp.c: Renamed from plural.c.
4692	* Makefile.am (libgettextsrc_la_SOURCES): Update.
4693
46942005-10-18  Bruno Haible  <bruno@clisp.org>
4695
4696	Disambiguate overloaded function calls according to argument count.
4697	* xgettext.h (struct callshape): Add field 'argtotal'.
4698	(struct partial_call): Likewise.
4699	(arglist_parser_done): Add argnum argument.
4700	* xgettext.c (split_keywordspec): Recognize NNt syntax and fill
4701	argtotal.
4702	(insert_keyword_callshape, arglist_parser_alloc, arglist_parser_clone):
4703	Update.
4704	(arglist_parser_decidedp): Compare also the argtotal if given.
4705	(arglist_parser_done): Add argnum argument.
4706	* x-awk.c (extract_parenthesized): Pass arg count to
4707	arglist_parser_done.
4708	* x-c.c (extract_parenthesized): Likewise.
4709	* x-csharp.c (extract_parenthesized): Likewise.
4710	* x-elisp.c (read_object): Likewise.
4711	* x-java.c (extract_parenthesized): Likewise.
4712	* x-librep.c (read_object): Likewise.
4713	* x-lisp.c (read_object): Likewise.
4714	* x-perl.c (extract_variable): Update.
4715	(extract_balanced): Pass arg count to arglist_parser_done.
4716	* x-php.c (extract_parenthesized): Likewise.
4717	* x-python.c (extract_parenthesized): Likewise.
4718	* x-scheme.c (read_object): Likewise.
4719	* x-sh.c (read_command): Likewise.
4720	* x-tcl.c (read_command): Likewise.
4721	Stimulated by a patch from
4722	Chusslove Illich (Часлав Илић) <caslav.ilic@gmx.net>.
4723
47242005-10-09  Bruno Haible  <bruno@clisp.org>
4725
4726	* msginit.c (catalogname_for_locale, language_of_locale): Drop support
4727	of CEN locale name syntax.
4728
47292005-10-05  Bruno Haible  <bruno@clisp.org>
4730
4731	* format.h (check_msgid_msgstr_format): Add plural_distribution
4732	argument.
4733	* format.c (check_msgid_msgstr_format): Add plural_distribution
4734	argument. Use it for index dependent strictness.
4735	* msgl-check.h (check_message): Add plural_distribution argument.
4736	* msgl-check.c: Include xalloc.h.
4737	(check_plural_eval): Create a plural_distribution array as additional
4738	output parameter.
4739	(check_plural): Return plural_distribution array as additional output
4740	parameter.
4741	(check_pair, check_message): Add plural_distribution argument.
4742	(check_message_list): Pass the plural_distribution from check_plural
4743	to check_message.
4744	* gettext-po.c (po_message_check_format): Update.
4745
47462005-10-04  Bruno Haible  <bruno@clisp.org>
4747
4748	Combine all msgfmt checks in a single place.
4749	* format.h (check_msgid_msgstr_format): Change return type to int.
4750	* format.c (check_msgid_msgstr_format): Return the number of errors.
4751	* msgl-check.h (check_plural): Remove declaration.
4752	* msgl-check.c (check_plural): Make static. Return the number of
4753	errors.
4754	(check_pair): Return the number of errors.
4755	(check_message_list): Likewise.
4756	* msgfmt.c (main): Perform the message checks here, after all files
4757	were read. Call check_message_list instead of check_plural and
4758	check_message. Emit statistics of fatal errors.
4759	(msgfmt_frob_new_message): Don't call check_message here.
4760
47612005-10-04  Bruno Haible  <bruno@clisp.org>
4762
4763	* msgl-check.h (check_message_list): New declaration.
4764	* msgl-check.c (check_message_list): New function.
4765	* gettext-po.c (po_file_check_all, po_message_check_all): Call
4766	check_message_list instead of check_message and check_plural.
4767
47682005-10-04  Bruno Haible  <bruno@clisp.org>
4769
4770	Fix handling of obsolete messages.
4771	* msgl-check.c (check_plural): Ignore obsolete messages.
4772	* gettext-po.c (po_file_check_all, po_message_check_all,
4773	po_message_check_format): Likewise.
4774
47752005-10-04  Bruno Haible  <bruno@clisp.org>
4776
4777	* msgl-check.h (check_message): Remove msgstr_pos argument.
4778	* msgl-check.c (check_pair, check_message): Remove msgstr_pos argument.
4779	* msgfmt.c (msgfmt_frob_new_message): Update.
4780	* gettext-po.c (po_file_check_all, po_message_check_all,
4781	po_message_check_format): Update.
4782
47832005-10-03  Bruno Haible  <bruno@clisp.org>
4784
4785	Add support for contexts in xgettext.
4786	* xgettext.h: Include stdbool.h.
4787	(struct callshape): New structure type.
4788	(split_keywordspec): Return a struct callshape, not two integers,
4789	by reference.
4790	(struct callshapes): New structure type.
4791	(insert_keyword_callshape): New declaration.
4792	(remember_a_message): Add msgctxt argument.
4793	(struct partial_call): New structure type.
4794	(struct arglist_parser): New structure type.
4795	(arglist_parser_alloc, arglist_parser_clone, arglist_parser_remember,
4796	arglist_parser_decidedp, arglist_parser_done): New declarations.
4797	* xgettext.c (split_keywordspec): Return a struct callshape, not two
4798	integers, by reference. Handle the notation Nc for a context argument.
4799	(insert_keyword_callshape): New function.
4800	(remember_a_message): Add msgctxt argument. Free both strings when
4801	the message is excluded.
4802	(arglist_parser_alloc, arglist_parser_clone, arglist_parser_remember,
4803	arglist_parser_decidedp, arglist_parser_done): New functions.
4804	* x-awk.c (x_awk_keyword): Use callshape API: split_keywordspec,
4805	insert_keyword_callshape.
4806	(extract_parenthesized): Replace commas_to_skip, plural_commas
4807	arguments with a single argparser argument. Use arglist_parser_* API.
4808	(extract_awk): Update.
4809	* x-c.c (add_keyword): Use callshape API: split_keywordspec,
4810	insert_keyword_callshape.
4811	(init_keywords): Register the new functions [d[c]][n]pgettext.
4812	(init_flag_table_c, init_flag_table_objc): Likewise.
4813	(struct xgettext_token_ty): Replace argnum1, argnum2 with a callshapes
4814	pointer.
4815	(x_c_lex): Update.
4816	(extract_parenthesized): Replace commas_to_skip, plural_commas
4817	arguments with a single argparser argument. Use arglist_parser_* API.
4818	(extract_whole_file): Update.
4819	* x-csharp.c (x_csharp_keyword): Use callshape API: split_keywordspec,
4820	insert_keyword_callshape.
4821	(extract_parenthesized): Replace commas_to_skip, plural_commas
4822	arguments with a single argparser argument. Use arglist_parser_* API.
4823	(extract_csharp): Update.
4824	* x-elisp.c (x_elisp_keyword): Use callshape API: split_keywordspec,
4825	insert_keyword_callshape.
4826	(read_object): Use arglist_parser_* API.
4827	* x-glade.c (start_element_handler, end_element_handler): Update.
4828	* x-java.c (x_java_keyword): Use callshape API: split_keywordspec,
4829	insert_keyword_callshape.
4830	(extract_parenthesized): Replace commas_to_skip, plural_commas
4831	arguments with a single argparser argument. Use arglist_parser_* API.
4832	(extract_java): Update.
4833	* x-librep.c (x_librep_keyword): Use callshape API: split_keywordspec,
4834	insert_keyword_callshape.
4835	(read_object): Use arglist_parser_* API.
4836	* x-lisp.c (x_lisp_keyword): Use callshape API: split_keywordspec,
4837	insert_keyword_callshape.
4838	(read_object): Use arglist_parser_* API.
4839	* x-perl.c (x_perl_keyword): Use callshape API: split_keywordspec,
4840	insert_keyword_callshape.
4841	(extract_balanced): Replace arg_sg, arg_pl arguments with arg,
4842	argparser arguments. Use arglist_parser_* API.
4843	(extract_variable, interpolate_keywords, extract_perl): Update.
4844	* x-php.c (x_php_keyword): Use callshape API: split_keywordspec,
4845	insert_keyword_callshape.
4846	(extract_parenthesized): Replace commas_to_skip, plural_commas
4847	arguments with a single argparser argument. Use arglist_parser_* API.
4848	(extract_php): Update.
4849	* x-python.c (x_python_keyword): Use callshape API: split_keywordspec,
4850	insert_keyword_callshape.
4851	(extract_parenthesized): Replace commas_to_skip, plural_commas
4852	arguments with a single argparser argument. Use arglist_parser_* API.
4853	(extract_python): Update.
4854	* x-rst.c (extract_rst): Update.
4855	* x-scheme.c (x_scheme_keyword): Use callshape API: split_keywordspec,
4856	insert_keyword_callshape.
4857	(read_object): Use arglist_parser_* API.
4858	* x-sh.c (x_sh_keyword): Use callshape API: split_keywordspec,
4859	insert_keyword_callshape.
4860	(read_word): Update.
4861	(read_command): Use arglist_parser_* API.
4862	* x-smalltalk.c (extract_smalltalk): Update.
4863	* x-tcl.c (x_tcl_keyword): Use callshape API: split_keywordspec,
4864	insert_keyword_callshape.
4865	(read_command): Use arglist_parser_* API.
4866	* x-ycp.c (extract_parenthesized): Update.
4867
48682005-10-03  Bruno Haible  <bruno@clisp.org>
4869
4870	* xgettext.h (savable_comment_to_xgettext_comment): Remove
4871	declaration.
4872	(remember_a_message, remember_a_message_plural): Add a comment
4873	argument.
4874	* xgettext.c (savable_comment_to_xgettext_comment): Make static.
4875	(remember_a_message): Add comment argument. Call
4876	savable_comment_to_xgettext_comment and savable_comment_reset at the
4877	end.
4878	(remember_a_message_plural): Add comment argument. Call
4879	savable_comment_to_xgettext_comment and xgettext_comment_reset,
4880	savable_comment_reset at the end.
4881	* x-awk.c (extract_parenthesized): Pass comment to remember_a_message.
4882	* x-c.c (extract_parenthesized): Likewise.
4883	* x-csharp.c (extract_parenthesized): Likewise.
4884	* x-elisp.c (read_object): Likewise.
4885	* x-glade.c (start_element_handler, end_element_handler): Likewise.
4886	* x-java.c (extract_parenthesized): Likewise.
4887	* x-librep.c (read_object): Likewise.
4888	* x-lisp.c (read_object): Likewise.
4889	* x-perl.c (extract_variable, interpolate_keywords, extract_balanced):
4890	Likewise.
4891	* x-php.c (extract_parenthesized): Likewise.
4892	* x-python.c (extract_parenthesized): Likewise.
4893	* x-scheme.c (read_object): Likewise.
4894	* x-sh.c (read_word, read_command): Likewise.
4895	* x-smalltalk.c (extract_smalltalk): Likewise.
4896	* x-tcl.c (read_command): Likewise.
4897	* x-ycp.c (extract_parenthesized): Likewise.
4898	* x-rst.c (extract_rst): Update.
4899
49002005-10-03  Bruno Haible  <bruno@clisp.org>
4901
4902	* xgettext.h (xgettext_comment_add, xgettext_comment,
4903	xgettext_comment_reset): Remove declarations.
4904	* xgettext.c (xgettext_comment_add, xgettext_comment,
4905	xgettext_comment_reset): Make static.
4906
49072005-10-03  Bruno Haible  <bruno@clisp.org>
4908
4909	Use savable_comment_* API instead of xgettext_comment_* API.
4910	* x-awk.c (phase2_getc): Call savable_comment_add instead of
4911	xgettext_comment_add.
4912	(x_awk_lex): Call savable_comment_reset instead of
4913	xgettext_comment_reset.
4914	(extract_parenthesized): Call savable_comment_to_xgettext_comment and
4915	savable_comment_reset around remember_a_message.
4916	* x-elisp.c (comment_line_end): Call savable_comment_add instead of
4917	xgettext_comment_add.
4918	(read_object): Call savable_comment_reset instead of
4919	xgettext_comment_reset. Call savable_comment_to_xgettext_comment and
4920	savable_comment_reset around remember_a_message.
4921	* x-glade.c (start_element_handler, end_element_handler): Call
4922	savable_comment_to_xgettext_comment and savable_comment_reset around
4923	remember_a_message. Call savable_comment_reset instead of
4924	xgettext_comment_reset.
4925	(comment_handler): Call savable_comment_add instead of
4926	xgettext_comment_add.
4927	* x-librep.c (comment_line_end): Call savable_comment_add instead of
4928	xgettext_comment_add.
4929	(read_object): Call savable_comment_reset instead of
4930	xgettext_comment_reset. Call savable_comment_to_xgettext_comment and
4931	savable_comment_reset around remember_a_message.
4932	* x-lisp.c (comment_line_end): Call savable_comment_add instead of
4933	xgettext_comment_add.
4934	(read_object): Call savable_comment_reset instead of
4935	xgettext_comment_reset. Call savable_comment_to_xgettext_comment and
4936	savable_comment_reset around remember_a_message.
4937	* x-perl.c (phase2_getc): Call savable_comment_add instead of
4938	xgettext_comment_add.
4939	(extract_variable, interpolate_keywords): Call
4940	savable_comment_to_xgettext_comment and savable_comment_reset around
4941	remember_a_message.
4942	(x_perl_prelex): Call savable_comment_reset instead of
4943	xgettext_comment_reset.
4944	(extract_balanced): Call savable_comment_to_xgettext_comment and
4945	savable_comment_reset around remember_a_message.
4946	* x-php.c (comment_line_end): Call savable_comment_add instead of
4947	xgettext_comment_add.
4948	(x_php_lex): Call savable_comment_reset instead of
4949	xgettext_comment_reset.
4950	(extract_parenthesized): Call savable_comment_to_xgettext_comment and
4951	savable_comment_reset around remember_a_message.
4952	* x-scheme.c (comment_line_end): Call savable_comment_add instead of
4953	xgettext_comment_add.
4954	(read_object): Call savable_comment_reset instead of
4955	xgettext_comment_reset. Call savable_comment_to_xgettext_comment and
4956	savable_comment_reset around remember_a_message.
4957	* x-sh.c (comment_line_end): Call savable_comment_add instead of
4958	xgettext_comment_add.
4959	(read_word): Call savable_comment_reset instead of
4960	xgettext_comment_reset. Call savable_comment_to_xgettext_comment and
4961	savable_comment_reset around remember_a_message.
4962	(read_command): Call savable_comment_to_xgettext_comment and
4963	savable_comment_reset around remember_a_message.
4964	* x-smalltalk.c (comment_line_end): Call savable_comment_add instead of
4965	xgettext_comment_add.
4966	(phase2_get): Call savable_comment_reset instead of
4967	xgettext_comment_reset.
4968	(extract_smalltalk): Call savable_comment_to_xgettext_comment and
4969	savable_comment_reset around remember_a_message.
4970	* x-tcl.c (comment_line_end): Call savable_comment_add instead of
4971	xgettext_comment_add.
4972	(read_word): Call savable_comment_reset instead of
4973	xgettext_comment_reset.
4974	(read_command): Call savable_comment_to_xgettext_comment and
4975	savable_comment_reset around remember_a_message.
4976	* x-ycp.c (phase2_getc): Call savable_comment_add instead of
4977	xgettext_comment_add.
4978	(x_ycp_lex): Call savable_comment_reset instead of
4979	xgettext_comment_reset.
4980	(extract_parenthesized): Call savable_comment_to_xgettext_comment and
4981	savable_comment_reset around remember_a_message.
4982
49832005-10-03  Bruno Haible  <bruno@clisp.org>
4984
4985	* message.c (message_list_hash_insert_entry): Update.
4986
49872005-10-03  Bruno Haible  <bruno@clisp.org>
4988
4989	* message.c (message_list_alloc, message_list_free,
4990	message_list_hash_insert_entry, message_list_remove_if_not,
4991	message_list_msgids_changed, message_list_search): Update.
4992	* write-qt.c (write_qm): Update.
4993	* xgettext.c (flag_context_list_table_lookup,
4994	flag_context_list_table_insert): Update.
4995	* x-awk.c (x_awk_keyword, extract_parenthesized): Update.
4996	* x-c.c (add_keyword, x_c_lex): Update.
4997	* x-csharp.c (x_csharp_keyword, extract_parenthesized: Update.
4998	* x-elisp.c (x_elisp_keyword, read_object): Update.
4999	* x-glade.c (x_glade_keyword, start_element_handler): Update.
5000	* x-java.c (x_java_keyword, extract_parenthesized): Update.
5001	* x-librep.c (x_librep_keyword, read_object): Update.
5002	* x-lisp.c (x_lisp_keyword, read_object): Update.
5003	* x-perl.c (x_perl_keyword, extract_variable, interpolate_keywords,
5004	extract_balanced): Update.
5005	* x-php.c (x_php_keyword, extract_parenthesized): Update.
5006	* x-python.c (x_python_keyword, extract_parenthesized): Update.
5007	* x-scheme.c (x_scheme_keyword, read_object): Update.
5008	* x-sh.c (x_sh_keyword, read_command): Update.
5009	* x-tcl.c (x_tcl_keyword, read_command): Update.
5010
50112005-10-01  Bruno Haible  <bruno@clisp.org>
5012
5013	Support for context dependent translations in PO files.
5014	* message.h (MSGCTXT_SEPARATOR): New macro.
5015	(struct message_ty): Add 'msgctxt' field.
5016	(message_alloc): Add msgctxt argument.
5017	(is_header): New macro.
5018	(message_list_search, message_list_search_fuzzy,
5019	message_list_list_search, message_list_list_search_fuzzy,
5020	msgdomain_list_search, msgdomain_list_search_fuzzy): Add msgctxt
5021	argument.
5022	* message.c: Include xallocsa.h.
5023	(message_alloc): Add msgctxt argument.
5024	(message_copy): Update.
5025	(message_list_hash_insert_entry): New function.
5026	(message_list_append, message_list_prepend, message_list_insert_at,
5027	message_list_msgids_changed): Use it.
5028	(message_list_search): Add msgctxt argument.
5029	(message_list_search_fuzzy_inner): Likewise.
5030	(message_list_search_fuzzy): Likewise.
5031	(message_list_list_search): Likewise.
5032	(message_list_list_search_fuzzy): Likewise.
5033	* msgl-ascii.c (is_ascii_message): Also test the msgctxt.
5034	* write-po.c (message_print): Warn if some msgctxt has non-ASCII
5035	characters. Write out the msgctxt.
5036	(message_print_obsolete): Likewise.
5037	(msgdomain_list_print_po): Use is_header macro.
5038	(msgdomain_list_print): Likewise. Bail out if contexts are present and
5039	cannot be stored in the given output format.
5040	* write-properties.c (write_message): Use is_header macro.
5041	* po-lex.c: Include message.h.
5042	(keyword_p): Also recognize 'msgctxt'.
5043	(po_gram_lex): Bail out if a string contains the EOT character.
5044	* read-po-abstract.h (struct abstract_po_reader_class_ty): Add msgctxt
5045	argument to directive_message function pointer.
5046	(po_callback_message): Add msgctxt argument.
5047	* read-po-abstract.c (call_directive_message, po_callback_message): Add
5048	msgctxt argument.
5049	* po-gram-gen.y (do_callback_message): Add msgctxt argument. Use
5050	is_header macro.
5051	(MSGCTXT): New token type.
5052	(message_intro, MSGCTXT): Declare return types.
5053	(message): Use message_intro instead of just MSGID.
5054	(message_intro): New nonterminal reduction rules.
5055	* read-properties.c (properties_parse): Update.
5056	* read-stringtable.c (stringtable_parse): Update.
5057	* read-po.h (struct default_po_reader_class_ty): Add msgctxt argument
5058	to add_message field.
5059	(default_directive_message, default_add_message): Likewise.
5060	* read-po.c (call_add_message, default_directive_message,
5061	default_add_message): Add msgctxt argument.
5062	* msgl-iconv.c (convert_msgid): Also convert the msgctxt.
5063	(iconv_message_list): Use is_header macro. Test also the msgctxt for
5064	non-ASCII-ness.
5065	* msgl-cat.c (is_message_selected, is_message_needed): Use is_header
5066	macro.
5067	(catenate_msgdomain_list): Likewise. Update.
5068	* msgl-equal.c (message_equal): Likewise. Also compare the msgctxt.
5069	* msgcmp.c (is_message_selected): Use is_header macro.
5070	(match_domain): Update.
5071	(compare): Use is_header macro.
5072	* msgmerge.c (message_merge, match_domain): Use is_header macro.
5073	Update.
5074	(merge): Update.
5075	* msgattrib.c (is_message_selected): Use is_header macro.
5076	(process_message_list): Likewise. Update.
5077	* msgl-charset.c (compare_po_locale_charsets): Use is_header macro.
5078	* msgexec.c (process_string): Also set or unset MSGEXEC_MSGCTXT
5079	variable.
5080	* msgfilter.c (process_message): Use is_header macro.
5081	* msggrep.c (grep_task): Increase size from 3 to 4.
5082	(long_options): Add --msgctxt option.
5083	(main): Accept -J/--msgctxt option. Update grep_pass numbers.
5084	(no_pass): Update.
5085	(usage): Mention -J option.
5086	(is_message_selected): Use is_header macro. Perform a new grep pass on
5087	the msgctxt.
5088	* msginit.c (fill_header): Use is_header macro. Update.
5089	(update_msgstr_plurals): Update.
5090	* read-mo.c (read_mo_file): Split msgid into msgctxt and msgid. Update.
5091	* read-tcl.c (msgdomain_read_tcl): Use is_header macro.
5092	* msgl-check.c (check_plural): Update.
5093	(check_message): Use is_header macro.
5094	* write-mo.c (write_table): Write msgid with msgctxt, instead of just
5095	the msgid.
5096	* write-java.c: Include xerror.h.
5097	(write_java_code): Update.
5098	(msgdomain_write_java): Give error if some entries have a context.
5099	* write-csharp.c: Include xerror.h.
5100	(write_csharp_code): Update.
5101	(msgdomain_write_csharp): Give error if some entries have a context.
5102	* write-resources.c (msgdomain_write_csharp_resources): Bail out if
5103	contexts are present and cannot be stored in the given output format.
5104	* write-tcl.c (write_msg): Use is_header macro.
5105	(msgdomain_write_tcl): Bail out if contexts are present and cannot be
5106	stored in the given output format.
5107	* write-qt.c: Include hash.h.
5108	(write_qm): Use is_header macro. Write out msgctxt if present. Write
5109	a contexts section if appropriate.
5110	* msgfmt.c (msgfmt_add_message): Add msgctxt argument.
5111	(msgfmt_frob_new_message): Use is_header macro.
5112	* xgettext.c (exclude_directive_message): Add msgctxt argument.
5113	(remember_a_message, construct_header, finalize_header): Update.
5114	* x-po.c (extract_add_message): Add msgctxt argument. Update.
5115	(extract): Update.
5116	* gettext-po.h (po_message_msgctxt, po_message_set_msgctxt): New
5117	declarations.
5118	* gettext-po.c (po_file_domain_header): Use is_header macro.
5119	(po_message_create): Update.
5120	(po_message_msgctxt, po_message_set_msgctxt): New functions.
5121	(po_message_check_all): Use is_header macro.
5122
51232005-10-01  Bruno Haible  <bruno@clisp.org>
5124
5125	Avoid a crash when msgcat or msgconv is asked to convert a non-ASCII
5126	msgid.
5127	* msgl-iconv.h (iconv_message_list): Change return type to boolean.
5128	* msgl-iconv.c (iconv_message_list): Likewise. Return true if some
5129	msgids change.
5130	* msgl-cat.c (catenate_msgdomain_list): Exit with an error message if
5131	the msgids change through charset conversion.
5132
51332005-10-04  Bruno Haible  <bruno@clisp.org>
5134
5135	* format.c: Include stdbool.h.
5136	(check_msgid_msgstr_format): Enable strict checking also when
5137	msgid_plural is present but nplurals = 1.
5138	Reported by Farzaneh Sarafraz <farzaneh@farsiweb.info>.
5139
51402005-10-01  Bruno Haible  <bruno@clisp.org>
5141
5142	Change msgattrib to no longer remove extracted comments and file
5143	positions when marking messages obsolete.
5144	* msgmerge.c (merge): When marking a message obsolete, remove the
5145	extracted comments and file positions.
5146	* write-po.c (message_print_obsolete): Also print the extracted
5147	comments and file positions.
5148
51492005-09-25  Bruno Haible  <bruno@clisp.org>
5150
5151	Support for Python source encodings (PEP 0263).
5152	* x-python.c: Include progname.h, basename.h, xerror.h, strstr.h,
5153	c-ctype.h, utf8-ucs4.h.
5154	(phase1_pushback): Reduce size.
5155	(UEOF): New macro.
5156	(phase2_pushback, phase2_pushback_length): New variables.
5157	(phase2_getc, phase2_ungetc): New functions.
5158	(struct unicode_string_buffer): New structure type.
5159	(init_unicode_string_buffer, unicode_string_buffer_append_unicode_grow,
5160	unicode_string_buffer_append_unicode, unicode_string_buffer_result,
5161	free_unicode_string_buffer): New functions.
5162	(comment_buffer): New variable.
5163	(buffer, bufmax, buflen): Remove variables.
5164	(comment_start, comment_add, comment_line_end): Rewritten.
5165	(comment_at_start): New function.
5166	(xgettext_current_file_source_encoding): New variable.
5167	(xgettext_current_file_source_iconv): New variable.
5168	(set_current_file_source_encoding, try_to_extract_coding): New
5169	functions.
5170	(continuation_or_nonblank_line): New variable.
5171	(phase3_getc): Renamed from phase2_getc. Use phase2_getc instead of
5172	phase1_getc. Return a Unicode character. Call try_to_extract_coding
5173	when seeing a comment among the first two lines.
5174	(phase3_ungetc): Renamed from phase2_ungetc. Use phase2_ungetc instead
5175	of phase1_ungetc.
5176	(UNICODE, IS_UNICODE, UNICODE_VALUE): New macros.
5177	(struct mixed_string_buffer): New structure type.
5178	(init_mixed_string_buffer, mixed_string_buffer_append_byte,
5179	mixed_string_buffer_append_unicode_grow,
5180	mixed_string_buffer_append_unicode,
5181	mixed_string_buffer_flush_utf16_surr,
5182	mixed_string_buffer_flush_curr_buffer, mixed_string_buffer_append,
5183	mixed_string_buffer_result, free_mixed_string_buffer): New functions.
5184	(phase7_getuc): Use phase2_getc instead of phase1_getc. Return a
5185	Unicode character except for \ooo and \xnn.
5186	(phase5_get): Operate on the level of Unicode characters instead of
5187	at the level of bytes. Use a mixed_string_buffer to accumulate a
5188	string literal.
5189	(extract_parenthesized): Set xgettext_current_source_encoding to UTF-8
5190	while passing UTF-8 strings to the xgettext main code.
5191	(extract_python): Initialize xgettext_current_file_source_encoding and
5192	xgettext_current_source_encoding.
5193
51942005-09-25  Bruno Haible  <bruno@clisp.org>
5195
5196	* x-csharp.c (phase2_getc): Fix mis-use of iconv() when the source
5197	encoding is neither ASCII nor UTF-8.
5198
51992005-09-20  Bruno Haible  <bruno@clisp.org>
5200
5201	* msgattrib.c (main): Invoke bindtextdomain for bison-runtime.
5202	* msgcat.c (main): Likewise.
5203	* msgcmp.c (main): Likewise.
5204	* msgcomm.c (main): Likewise.
5205	* msgconv.c (main): Likewise.
5206	* msgen.c (main): Likewise.
5207	* msgexec.c (main): Likewise.
5208	* msgfilter.c (main): Likewise.
5209	* msggrep.c (main): Likewise.
5210	* msginit.c (main): Likewise.
5211	* msgmerge.c (main): Likewise.
5212	* msgunfmt.c (main): Likewise.
5213	* msguniq.c (main): Likewise.
5214	* xgettext.c (main): Likewise.
5215	* Makefile.am (DEFS): Also define BISON_LOCALEDIR.
5216
52172005-09-17  Bruno Haible  <bruno@clisp.org>
5218
5219	* msgl-check.h: New file.
5220	* msgl-check.c: New file, mostly extracted from msgfmt.c.
5221	* Makefile.am (noinst_HEADERS): Add msgl-check.h.
5222	(libgettextsrc_la_SOURCES): Add msgl-check.c, plural-eval.c.
5223	(msgfmt_SOURCES): Remove plural-eval.c.
5224	* format.c (check_msgid_msgstr_format): Add const to argument type.
5225	* format.h (check_msgid_msgstr_format): Add const to argument type.
5226	* gettext-po.c: Include msgl-check.h.
5227	(po_file_check_all, po_message_check_all): New functions.
5228	(po_xerror_logger): Remove function.
5229	(po_message_check_format): Use new check_message function.
5230	* gettext-po.h (po_file_check_all, po_message_check_all): New
5231	declarations.
5232	* msgfmt.c: Include msgl-check.h instead of setjmp.h, signal.h,
5233	stdarg.h, po-xerror.h, format.h, plural-exp.h, plural-table.h,
5234	strstr.h.
5235	(SIZEOF, sigjmp_buf, sigsetjmp, siglongjmp, USE_SIGINFO,
5236	sigfpe_exit, sigfpe_code, sigfpe_handler, install_sigfpe_handler,
5237	uninstall_sigfpe_handler, check_plural_eval, plural_help, check_plural,
5238	curr_mp, curr_msgid_pos, formatstring_error_logger, check_pair,
5239	check_header_entry): Move definitions to msgl-check.c.
5240	(main): Update.
5241	(msgfmt_frob_new_message): Call check_message instead of
5242	check_header_entry and check_pair.
5243
52442005-09-17  Bruno Haible  <bruno@clisp.org>
5245
5246	Use new error handlers in libgettextpo.
5247	* gettext-po.h (PO_SEVERITY_WARNING, PO_SEVERITY_ERROR,
5248	PO_SEVERITY_FATAL_ERROR): New macros.
5249	(po_xerror_handler): New structure type.
5250	(po_xerror_handler_t): New type.
5251	(po_file_read): Change signature; version 3.
5252	(po_file_write): Change signature; version 2.
5253	(po_message_check_format): Change signature; version 2.
5254	* gettext-po.c: Include po-xerror.h.
5255	(po_file_read): New implementation. Renamed old implementation to
5256	po_file_read_v2.
5257	(po_file_write): New implementation. Keep old implementation.
5258	(po_xerror_logger): New function.
5259	(po_message_check_format): New implementation. Keep old implementation.
5260
52612005-09-17  Bruno Haible  <bruno@clisp.org>
5262
5263	* msgfmt.c (check_plural): Fix broken determination of max_nplurals.
5264
52652005-09-17  Bruno Haible  <bruno@clisp.org>
5266
5267	New, higher-level error message output primitives.
5268	* po-xerror.h: New file.
5269	* po-xerror.c: New file.
5270	* open-po.c: Include xerror.h, po-xerror.h, not error.h.
5271	(open_po_file): Use po_xerror instead of error.
5272	* po-charset.c: Include po-xerror.h, not po-error.h.
5273	(po_lex_charset_set): Use po_xerror instead of po_multiline_warning.
5274	* po-lex.c: Include xerror.h, po-error.h, po-xerror.h.
5275	(po_gram_error, po_gram_error_at_line): Use po_xerror instead of
5276	po_error or po_error_at_line. Don't decrement error_message_count;
5277	let the caller do this instead.
5278	(mbfile_getc, lex_getc): Use po_xerror instead of po_error.
5279	* po-lex.h: Don't include po-error.h.
5280	(po_gram_error, po_gram_error_at_line): Remove optimized macros.
5281	* read-po-abstract.c: Include xerror.h, po-xerror.h.
5282	(po_scan): Use po_xerror instead of po_error.
5283	* read-po.c: Include po-xerror.h.
5284	(default_add_message): Use po_xerror2 instead of po_gram_error_at_line
5285	pair.
5286	* read-properties.c: Include xerror.h, po-xerror.h, not exit.h.
5287	(phase1_getc, phase4_getuc): Use po_xerror instead of error.
5288	* read-stringtable.c: Include xerror.h, po-xerror.h, not exit.h.
5289	(phase1_getc, read_string, stringtable_parse): Use po_xerror instead of
5290	error.
5291	* write-po.c: Include po-xerror.h, not exit.h, po-error.h.
5292	(wrap): Pass the entire message as argument. Use po_xerror instead of
5293	po_error.
5294	(message_print, message_print_obsolete): Update. Use po_xerror instead
5295	of po_multiline_warning.
5296	(msgdomain_list_print): Use po_xerror instead of po_error or
5297	po_error_at_line.
5298	* msgl-iconv.h (struct conversion_context): Add 'message' field.
5299	* msgl-iconv.c: Include xerror.h, po-xerror.h, not error.h, exit.h.
5300	(conversion_error): Use po_xerror instead of error.
5301	(iconv_message_list): Likewise. Set the entire message in the
5302	conversion context before calling convert_*.
5303	(iconv_msgdomain_list): Use po_xerror instead of error.
5304	* xgettext.c (from_current_source_encoding): Set context.message.
5305	* msgfmt.c: Include po-xerror.h.
5306	(check_plural_eval): Pass the entire header as argument. Use po_xerror
5307	instead of error_at_line.
5308	(plural_help): New function, extracted from check_plural.
5309	(check_plural): Change type of local variables has_plural, min_pos,
5310	max_pos. Use po_xerror2 instead of error_at_line pairs. Use po_xerror
5311	instead of error_at_line.
5312	(curr_mp): New variable.
5313	(formatstring_error_logger): Use po_xerror instead of vfprintf.
5314	(check_pair): Take the entire message as argument. Use po_xerror
5315	instead of error_at_line. Set curr_mp before calling
5316	check_msgid_msgstr_format.
5317	(check_header_entry): Take the entire header message as argument. Use
5318	po_xerror instead of multiline_error.
5319	(msgfmt_frob_new_message): Update.
5320	* msgcmp.c (match_domain): Decrement error_message_count between two
5321	error messages that belong together.
5322	* msgmerge.c (match_domain): Decrement error_message_count between two
5323	error messages that belong together.
5324	* Makefile.am (noinst_HEADERS): Add po-xerror.h.
5325	(COMMON_SOURCE): Add po-xerror.c.
5326
53272005-09-16  Bruno Haible  <bruno@clisp.org>
5328
5329	* gettext-po.c (po_file_read): Set gram_max_allowed_errors to a large
5330	integer, so that po_gram_error doesn't cause the program to exit().
5331
53322005-09-14  Bruno Haible  <bruno@clisp.org>
5333
5334	* x-csharp.c: Include xerror.h.
5335
53362005-09-11  Bruno Haible  <bruno@clisp.org>
5337
5338	* user-email.sh.in: Add support for Mozilla Thunderbird and GNOME
5339	Evolution 2. Improve mutt support.
5340
53412005-08-26  Bruno Haible  <bruno@clisp.org>
5342
5343	* plural-table.c (plural_table): Add an entry about Romanian.
5344	Explanations by Eddy Petrişor <eddy.petrisor@gmail.com>.
5345
53462005-08-23  Bruno Haible  <bruno@clisp.org>
5347
5348	* write-mo.h (byteswap): New variable.
5349	* write-mo.c: Include byteswap.h.
5350	(byteswap): New variable.
5351	(BSWAP32): New macro.
5352	(write_table): If requested, byteswap all 32-bit values before writing
5353	them out.
5354	* msgfmt.c (long_options): Add --endianness.
5355	(main): Accept --endianness argument and set byteswap.
5356
53572005-08-08  Bruno Haible  <bruno@clisp.org>
5358
5359	* msginit.c (catalogname_for_locale): Add support for Old English,
5360	Hyam, Jju, Tyap, Maithili, Nahuatl, Low Saxon, Northern Sotho, Páez,
5361	Tetum, Zapotec.
5362	(englishname_of_language): Add support for Old English, Hyam, Jju,
5363	Tyap, Kagoma, Maithili, Mayan, Nahuatl, Low Saxon, Northern Sotho,
5364	Páez, Tetum, Zapotec.
5365
53662005-05-21  Bruno Haible  <bruno@clisp.org>
5367
5368	New undocumented option, used by glocale PO files.
5369	* msgfmt.c (include_fuzzies): Renamed from include_all.
5370	(include_untranslated): New variable.
5371	(long_options): Add --use-untranslated.
5372	(main): Handle --use-untranslated.
5373	(msgfmt_frob_new_message): Test include_untranslated.
5374	(msgfmt_comment_special): Update.
5375
53762005-07-26  Bruno Haible  <bruno@clisp.org>
5377
5378	* user-email.sh.in (datarootdir): New variable.
5379
53802005-07-26  Bruno Haible  <bruno@clisp.org>
5381
5382	Fix compilation error on systems without iconv().
5383	* xgettext.c (convert_string): Remove fallback macro definition.
5384	(from_current_source_encoding) [!HAVE_ICONV]: Just abort here.
5385
53862005-07-17  Bruno Haible  <bruno@clisp.org>
5387
5388	* po-lex.c (mb_width): Remove gcc warnings on platform with unsigned
5389	'char' type (e.g. Linux/PowerPC).
5390	Reported by Jeff Rizzo <riz@netbsd.org>.
5391
53922005-07-05  Bruno Haible  <bruno@clisp.org>
5393
5394	* Makefile.am (msgmerge_SOURCES, xgettext_SOURCES, msgattrib_SOURCES,
5395	msgcat_SOURCES, msgcomm_SOURCES, msgconv_SOURCES, msgen_SOURCES,
5396	msgfilter_SOURCES, msggrep_SOURCES, msguniq_SOURCES): On mingw, use
5397	C++ source code.
5398	(libgettextsrc_la_LDFLAGS, libgettextpo_la_LDFLAGS): Use LTNOUNDEF.
5399	(format_CFLAGS): New variable.
5400	(format.lo): New rule.
5401	(msg*_CFLAGS, xgettext_CFLAGS): Remove variables.
5402	(msg*_CPPFLAGS, xgettext_CPPFLAGS): New variables.
5403
54042005-05-27  Bruno Haible  <bruno@clisp.org>
5405
5406	* write-po.c (wrap): Output \a and \v as an escape sequence, like
5407	\b, \f, \r.
5408	Suggested by Asgeir Frimannsson <asgeirf@redhat.com>.
5409
54102005-05-05  Bruno Haible  <bruno@clisp.org>
5411
5412	* Makefile.am (msgfmt_SOURCES): Add hash-string.c.
5413	* Makefile.msvc (msgfmt_OBJECTS): Add hash-string.obj.
5414	(hash-string.obj): New rule.
5415	* Makefile.vms (msgfmt_OBJECTS): Add hash-string.obj.
5416	(hash-string.obj): New rule.
5417
54182005-05-01  Bruno Haible  <bruno@clisp.org>
5419
5420	* x-sh.c (open_singlequote_terminator): New variable.
5421	(saw_opening_singlequote): Set it.
5422	(phase2_getc): Handle the case of open_singlequote_terminator == '"'.
5423	(read_word): Likewise. Treat i18n quotes like single quotes with
5424	terminator '"'.
5425	Reported by Jakub Bogusz <qboosh@pld-linux.org>.
5426
54272005-05-01  Bruno Haible  <bruno@clisp.org>
5428
5429	Improved error message.
5430	* msgl-iconv.h (struct conversion_context): New type.
5431	(convert_string): Add context argument.
5432	* msgl-iconv.c (conversion_error): New function.
5433	(convert_string, convert_string_list, convert_msgid, convert_msgstr):
5434	Add context argument.
5435	(iconv_message_list): Construct context for them.
5436	* xgettext.c (convert_string): Add context argument.
5437	(from_current_source_encoding): Construct context for convert_string.
5438	Reported by Hans Ulrich Niedermann <debian@n-dimensional.de>.
5439
54402005-04-18  Bruno Haible  <bruno@clisp.org>
5441
5442	* po-lex.h (po_gram_error, po_gram_error_at_line): Test for
5443	__APPLE_CC__ > 1. Needed because gcc-4.0 defines __APPLE_CC__ and
5444	implements __VA_ARGS__ correctly.
5445	* po-lex.c (po_gram_error, po_gram_error_at_line): Likewise.
5446	* read-stringtable.c (phase2_getc): Optimize UTF-8 code. Avoids
5447	gcc-4.0 warnings.
5448
54492006-06-21  Bruno Haible  <bruno@clisp.org>
5450
5451	* gettext-0.14.6 released.
5452
54532006-06-21  Bruno Haible  <bruno@clisp.org>
5454
5455	* Makefile.am (CLEANFILES): Add msgfmt.net.exe.mdb,
5456	msgunfmt.net.exe.mdb.
5457
54582006-06-21  Bruno Haible  <bruno@clisp.org>
5459
5460	* gettext-po.h (LIBGETTEXTPO_VERSION): Bump version number.
5461
54622006-06-20  Bruno Haible  <bruno@clisp.org>
5463
5464	* format-gcc-internal.c (struct unnumbered_arg): Remove type.
5465	(struct numbered_arg): New type.
5466	(struct spec): Use it.
5467	(isdigit): New macro.
5468	(numbered_arg_compare): New function.
5469	(format_parse, format_free, format_check, format_print): Update to
5470	GCC 4.1 internal format strings.
5471	Reported by Göran Uddeborg <goeran@uddeborg.se>.
5472
54732005-05-23  Bruno Haible  <bruno@clisp.org>
5474
5475	* gettext-0.14.5 released.
5476
54772005-05-23  Bruno Haible  <bruno@clisp.org>
5478
5479	* gettext-po.h (LIBGETTEXTPO_VERSION): Bump version number.
5480
54812005-05-21  Bruno Haible  <bruno@clisp.org>
5482
5483	* format-gcc-internal.c: Update for GCC 4.0.
5484	(FAT_POINTER, FAT_SIZE_LONGLONG, FAT_SIZE_WIDE, FAT_SIZE_MASK): New
5485	enum items.
5486	(FAT_*): Update.
5487	(struct spec): Add uses_err_no field.
5488	(format_parse): Initialize uses_err_no field. Handle %q flag. Handle
5489	'll', 'w' size specifiers. Handle %<, %>, %', %m, %p, %J directives.
5490	(format_check): Also check that the use of err_no is the same.
5491	Based on a patch by Jakub Jelinek <jakub@redhat.com>.
5492
54932005-04-11  Bruno Haible  <bruno@clisp.org>
5494
5495	* gettext-0.14.4 released.
5496
54972005-04-11  Bruno Haible  <bruno@clisp.org>
5498
5499	* gettext-po.h (LIBGETTEXTPO_VERSION): Bump version number.
5500
55012005-03-14  Bruno Haible  <bruno@clisp.org>
5502
5503	* gettext-0.14.3 released.
5504
55052005-03-08  Bruno Haible  <bruno@clisp.org>
5506
5507	* gettext-po.h (LIBGETTEXTPO_VERSION): Bump version number.
5508
55092005-02-26  Bruno Haible  <bruno@clisp.org>
5510
5511	* format-scheme.c (format_arg_type): Add FAT_COMPLEX. Remove
5512	FAT_FUNCTION.
5513	(make_intersected_element): Simplify also the intersection with
5514	FAT_COMPLEX.
5515	(make_union_element): Simplify also the union with FAT_COMPLEX.
5516	(IIC): New array.
5517	(nocheck_params): Remove function.
5518	(parse_upto): Remove handling of ~W, ~<, ~>.
5519	Implement non-CL handling of ~C, ~I, ~_, ~/, ~T.
5520	Implement handling of ~Y, ~!, ~Q, ~K.
5521
55222005-02-26  Bruno Haible  <bruno@clisp.org>
5523
5524	* format-scheme.c (parse_upto): Remove support for ~!.
5525	Reported by Kevin Ryde <user42@zip.com.au>.
5526
55272005-02-24  Bruno Haible  <bruno@clisp.org>
5528
5529	* gettext-0.14.2 released.
5530
55312005-02-12  Bruno Haible  <bruno@clisp.org>
5532
5533	* Makefile.msvc (gettextpo.lib): Link with intl.lib as well.
5534
55352005-02-12  Bruno Haible  <bruno@clisp.org>
5536
5537	* Makefile.msvc (msginit_OBJECTS): Add plural-count.obj.
5538	* Makefile.vms (msginit_OBJECTS): Add plural-count.obj.
5539
55402005-02-10  Bruno Haible  <bruno@clisp.org>
5541
5542	* gettext-po.h (po_header_set_field): New declaration.
5543	* gettext-po.c (po_header_set_field): New function.
5544	Suggested by Ross Golder <ross@golder.org>.
5545
55462005-02-10  Bruno Haible  <bruno@clisp.org>
5547
5548	* gettext-po.h (LIBGETTEXTPO_VERSION): New macro.
5549	(libgettextpo_version): New declaration.
5550	* gettext-po.c (libgettextpo_version): New variable.
5551
55522005-02-10  Bruno Haible  <bruno@clisp.org>
5553
5554	* gettext-po.h (po_message_remove_filepos, po_message_add_filepos): New
5555	declarations.
5556	* gettext-po.c (po_message_remove_filepos, po_message_add_filepos): New
5557	functions.
5558	Suggested by Asgeir Frimannsson <asgeirf@redhat.com>.
5559
55602005-02-10  Bruno Haible  <bruno@clisp.org>
5561
5562	* gettext-po.h (po_message_set_extracted_comments): New declaration.
5563	* gettext-po.c (po_message_set_extracted_comments): New function.
5564	Suggested by Asgeir Frimannsson <asgeirf@redhat.com>.
5565
55662005-02-08  Bruno Haible  <bruno@clisp.org>
5567
5568	* msginit.c (get_user_email): Cast _() to 'char *', to avoid compiler
5569	warning.
5570
55712005-02-07  Bruno Haible  <bruno@clisp.org>
5572
5573	Make the tools work in the tr_TR locale.
5574	* po-charset.c: Include c-strcase.h instead of strcase.h.
5575	(po_charset_canonicalize): Use c_strcasecmp.
5576	* msgcmp.c: Include c-strcase.h instead of strcase.h.
5577	(compare): Use c_strncasecmp.
5578	* msginit.c: Include c-strcase.h instead of strcase.h.
5579	(content_type): Use c_strcasecmp.
5580	* msgmerge.c: Include c-strcase.h instead of strcase.h.
5581	(message_merge, merge): Use c_strncasecmp.
5582	* xgettext.c: Include c-strcase.h instead of strcase.h.
5583	(language_to_extractor): Use c_strcasecmp.
5584	Reported by Recai Oktaş <roktas@omu.edu.tr>.
5585
55862005-02-07  Bruno Haible  <bruno@clisp.org>
5587
5588	* project-id: Use LC_ALL=C to protect range expression against
5589	Estonian locale.
5590
55912005-02-06  Bruno Haible  <bruno@clisp.org>
5592
5593	Leave #: lines with unknown syntax alone instead of turning them into
5594	plain comments.
5595	* po-hash.h: Remove file.
5596	* po-hash-gen.y: Remove file.
5597	* read-po-abstract.c: Don't include po-hash.h.
5598	(po_parse_comment_filepos, po_parse_comment_solaris_filepos): New
5599	functions.
5600	(po_callback_comment_dispatcher): Call them instead of the old
5601	po_parse_comment_filepos.
5602	* read-stringtable.c: Don't include po-hash.h.
5603	* Makefile.am (noinst_HEADERS): Remove po-hash.h, po-hash-gen.h.
5604	(COMMON_SOURCE): Remove po-hash-gen.y.
5605	(BUILT_SOURCES): Remove po-hash-gen.c, po-hash-gen.h.
5606	* Makefile.msvc (OBJECTS): Remove po-hash-gen.obj.
5607	(po-hash-gen.obj): Remove rule.
5608	* Makefile.vms (OBJECTS): Remove po-hash-gen.obj.
5609	(po-hash-gen.obj): Remove rule.
5610	* FILES: Update.
5611	Reported by David Fraser <davidf@sjsoft.com>.
5612
56132005-02-04  Bruno Haible  <bruno@clisp.org>
5614
5615	* plural-table.c (plural_table): Add an entry about Vietnamese.
5616	Explanations by Clytie Siddall <clytie@riverland.net.au>.
5617
56182005-01-29  Bruno Haible  <bruno@clisp.org>
5619
5620	* Makefile.am (msgcmp_LDADD, msgfmt_LDADD, msgmerge_LDADD,
5621	msgunfmt_LDADD, xgettext_LDADD, msgattrib_LDADD, msgcat_LDADD,
5622	msgcomm_LDADD, msgconv_LDADD, msgen_LDADD, msgexec_LDADD,
5623	msgfilter_LDADD, msggrep_LDADD, msguniq_LDADD): Add INTL_MACOSX_LIBS.
5624
56252005-01-27  Bruno Haible  <bruno@clisp.org>
5626
5627	* msgfmt.c (formatstring_error_logger): Cast the fprrintf argument,
5628	to make it work on big-endian 64-bit machines.
5629
56302005-01-16  Bruno Haible  <bruno@clisp.org>
5631
5632	Support for Scheme.
5633	* message.h (format_type): New enum value 'format_scheme'.
5634	(NFORMATS): Increment.
5635	* message.c (format_language): Add format_scheme entry.
5636	(format_language_pretty): Likewise.
5637	* format.h (formatstring_scheme): New declaration.
5638	* format-scheme.c: New file, based on format-lisp.c.
5639	* format.c (formatstring_parsers): Add formatstring_scheme.
5640	* x-scheme.h: New file.
5641	* x-scheme.c: New file.
5642	* xgettext.c: Include x-scheme.h.
5643	(flag_table_scheme): New variable.
5644	(main): Invoke init_flag_table_scheme, x_scheme_extract_all,
5645	x_scheme_keyword.
5646	(usage): Mention Scheme source language.
5647	(xgettext_record_flag): Handle format_scheme.
5648	(language_to_extractor): Add Scheme rule.
5649	(extension_to_language): Add Scheme rule.
5650	* Makefile.am (noinst_HEADERS): Add x-scheme.h.
5651	(FORMAT_SOURCE): Add format-scheme.c.
5652	(xgettext_SOURCES): Add x-scheme.c.
5653	* Makefile.msvc (OBJECTS): Add format-scheme.obj.
5654	(xgettext_OBJECTS): Add x-scheme.obj.
5655	(format-scheme.obj, x-scheme.obj): New rules.
5656	* Makefile.vms (OBJECTS): Add format-scheme.obj.
5657	(xgettext_OBJECTS): Add x-scheme.obj.
5658	(format-scheme.obj, x-scheme.obj): New rules.
5659	* FILES: Update.
5660
56612005-01-08  Bruno Haible  <bruno@clisp.org>
5662
5663	* msggrep.c (grep_args, grep_path, grep_argv): Remove variables.
5664	(struct grep_task): New type.
5665	(grep_task): New variable.
5666	(main): Initialize grep_task instead of grep_args. Change processing
5667	of options 'E', 'F' to set a matcher, of 'e', 'f' to append to the
5668	pattern string, and of 'i' to set a boolean. Compile the patterns.
5669	(is_string_selected): Execute a compiled pattern instead of calling
5670	the grep program.
5671	(is_message_selected): Update.
5672	* Makefile.am (AM_CPPFLAGS): Add -I option for libgrep.
5673	(LIBGREP): New variable.
5674	(msggrep_LDADD): Add $(LIBGREP).
5675	* Makefile.msvc (INCLUDES): Add libgrep directory.
5676	(msggrep.exe): Link with libgrep.
5677	* Makefile.vms (INCLUDES): Add libgrep directory.
5678	(msggrep.exe): Link with libgrep.
5679
56802005-01-09  Bruno Haible  <bruno@clisp.org>
5681
5682	* msgl-ascii.h (is_ascii_msgdomain_list): New declaration.
5683	* msgl-ascii.c (is_ascii_msgdomain_list): New function.
5684	* x-po.c (header_charset): New variable.
5685	(extract_add_message): When seeing the header entry, store the charset
5686	in header_charset.
5687	(extract): Store the value of header_charset in the new constructed
5688	header entry.
5689	* xgettext.c (main): Convert the existing PO file to UTF-8 if it was
5690	not entirely ASCII.
5691	Reported by Jörg Schilling <schilling@fokus.fraunhofer.de>.
5692
56932005-01-08  Bruno Haible  <bruno@clisp.org>
5694
5695	* msggrep.c (usage): Explain COMMENT-PATTERN syntax as well.
5696
56972005-01-06  Bruno Haible  <bruno@clisp.org>
5698
5699	* x-tcl.c (read_word): Ignore non-space whitespace at the beginning.
5700	Reported by William J Poser <wjposer@ldc.upenn.edu>.
5701
57022005-01-06  Bruno Haible  <bruno@clisp.org>
5703
5704	* write-csharp.c (msgdomain_write_csharp): Don't call fclose after
5705	fwriteerror.
5706	* write-java.c (msgdomain_write_java): Likewise.
5707	* write-mo.c (msgdomain_write_mo): Likewise.
5708	* write-po.c (msgdomain_list_print): Likewise.
5709	* write-qt.c (msgdomain_write_qt): Likewise.
5710	* write-resources.c (execute_writing_input): Likewise.
5711	* write-tcl.c (msgdomain_write_tcl): Likewise.
5712
57132005-01-05  Bruno Haible  <bruno@clisp.org>
5714
5715	* msgattrib.c (main): Update year in --version output.
5716	* msgcat.c (main): Likewise.
5717	* msgcmp.c (main): Likewise.
5718	* msgcomm.c (main): Likewise.
5719	* msgconv.c (main): Likewise.
5720	* msgen.c (main): Likewise.
5721	* msgexec.c (main): Likewise.
5722	* msgfilter.c (main): Likewise.
5723	* msgfmt.c (main): Likewise.
5724	* msggrep.c (main): Likewise.
5725	* msginit.c (main): Likewise.
5726	* msgmerge.c (main): Likewise.
5727	* msgunfmt.c (main): Likewise.
5728	* msguniq.c (main): Likewise.
5729	* xgettext.c (main): Likewise.
5730
57312005-01-07  Bruno Haible  <bruno@clisp.org>
5732
5733	* gettext-po.c (po_file_read): Interpret "-" and "/dev/stdin" as
5734	denoting stdin.
5735	Suggested by Asgeir Frimannsson <asgeirf@redhat.com>.
5736
57372004-11-29  Bruno Haible  <bruno@clisp.org>
5738
5739	* Makefile.am (libgettextpo_la_LDFLAGS): Add @LTLIBINTL@ @LTLIBICONV@.
5740	Reported by Sam Steingold <sds@gnu.org>.
5741
57422004-10-01  Guido Flohr  <guido@imperia.net>
5743
5744	* x-perl.c (x_perl_prelex): Recognize function names starting with '-'.
5745	Reported by Ryan Anderson <ryan@autoweb.net>.
5746
57472004-09-16  Bruno Haible  <bruno@clisp.org>
5748
5749	* format.h (formatstring_error_logger_t): Modify decl for GCC <= 3.0.
5750	Reported by Jens A. Tkotz <jens@peino.de>.
5751
57522004-09-11  Bruno Haible  <bruno@clisp.org>
5753
5754	* Makefile.am (msginit_SOURCES): Add plural-count.c.
5755	* msginit.c (update_msgstr_plurals): New function.
5756	(main): Call it.
5757	* msgmerge.c (match_domain): Provide the appropriate number of plural
5758	forms for messages that don't occur in the Def.po file.
5759	Reported by Jens A. Tkotz <jens@peino.de>.
5760
57612004-09-06  Bruno Haible  <bruno@clisp.org>
5762
5763	* format.h (formatstring_error_logger_t): New type.
5764	(struct formatstring_parser): Change calling convention of 'check'
5765	method.
5766	(check_msgid_msgstr_format): New declaration.
5767	* format-awk.c (format_check): Use error_logger argument instead of
5768	noisy and error_at_line.
5769	* format-c.c (format_check): Likewise.
5770	* format-csharp.c (format_check): Likewise.
5771	* format-elisp.c (format_check): Likewise.
5772	* format-gcc-internal.c (format_check): Likewise.
5773	* format-java.c (format_check): Likewise.
5774	* format-librep.c (format_check): Likewise.
5775	* format-lisp.c (format_check): Likewise.
5776	* format-pascal.c (format_check): Likewise.
5777	* format-perl.c (format_check): Likewise.
5778	* format-perl-brace.c (format_check): Likewise.
5779	* format-php.c (format_check): Likewise.
5780	* format-python.c (format_check): Likewise.
5781	* format-qt.c (format_check): Likewise.
5782	* format-sh.c (format_check): Likewise.
5783	* format-tcl.c (format_check): Likewise.
5784	* format-ycp.c (format_check): Likewise.
5785	* format.c (check_msgid_msgstr_format): New function, extracted from
5786	msgfmt.c.
5787	* msgfmt.c (curr_msgid_pos): New variable.
5788	(formatstring_error_logger): New function.
5789	(check_pair): Use check_msgid_msgstr_format, formatstring_error_logger.
5790	* msgmerge.c (msgfmt_check_pair_fails): Update.
5791	* gettext-po.h (po_message_check_format): New declaration.
5792	* gettext-po.c (po_error_logger, po_message_check_format): New
5793	functions.
5794
57952004-09-05  Bruno Haible  <bruno@clisp.org>
5796
5797	* po-error.h: New file.
5798	* po-error.c: New file.
5799	* po-charset.c: Include po-error.h.
5800	(po_lex_charset_set): Use po_multiline_warning instead of
5801	multiline_warning.
5802	* po-lex.h: Include po-error.h.
5803	(po_gram_error): Use po_error instead of error.
5804	(po_gram_error_at_line): Use po_error_at_line instead of error_at_line.
5805	* po-lex.c (po_gram_error): Use po_error instead of error.
5806	(po_gram_error_at_line): Use po_error_at_line instead of error_at_line.
5807	(mbfile_getc, lex_getc): Use po_error instead of error.
5808	* read-po-abstract.c (po_scan): Likewise.
5809	* write-po.c: Include po-error.h instead of error.h.
5810	(wrap): Use po_error instead of error.
5811	(message_print, message_print_obsolete): Use po_multiline_warning
5812	instead of multiline_warning.
5813	(msgdomain_list_print): Use po_error instead of error, po_error_at_line
5814	instead of error_at_line.
5815	* str-list.h (string_list_join): New declaration.
5816	* str-list.c (string_list_join): New function.
5817	* message.h (message_list_insert_at): New declaration.
5818	* message.c (message_list_insert_at): New function.
5819	* gettext-po.h (po_filepos_t): New type.
5820	(struct po_error_handler, po_error_handler_t): New types.
5821	(po_file_create): New declaration.
5822	(po_file_read): Add handler argument.
5823	(po_file_write, po_message_insert, po_message_create,
5824	po_message_set_msgid, po_message_set_msgid_plural,
5825	po_message_set_msgstr, po_message_set_msgstr_plural,
5826	po_message_comments, po_message_set_comments,
5827	po_message_extracted_comments, po_message_filepos,
5828	po_message_set_obsolete, po_message_set_fuzzy, po_message_set_format,
5829	po_filepos_file, po_filepos_start_line): New declarations.
5830	* gettext-po.c (po_file_create): New function.
5831	(po_file_read): Add handler argument. Keep an old version for backward
5832	compatibility.
5833	(po_file_write): New function.
5834	(po_message_iterator): Store more information, to make
5835	po_message_insert possible.
5836	(po_message_iterator_free): Update.
5837	(po_next_message): Don't crash if iterator->mlp is NULL.
5838	(po_message_insert): New function.
5839	(po_message_create): New function.
5840	(po_message_set_msgid, po_message_set_msgid_plural,
5841	po_message_set_msgstr, po_message_set_msgstr_plural,
5842	po_message_comments, po_message_set_comments,
5843	po_message_extracted_comments, po_message_filepos,
5844	po_message_set_obsolete, po_message_set_fuzzy, po_message_set_format,
5845	po_filepos_file, po_filepos_start_line): New functions.
5846	* Makefile.am (noinst_HEADERS): Add po-error.h.
5847	(COMMON_SOURCE): Add po-error.c.
5848	* Makefile.msvc (OBJECTS): Add po-error.obj.
5849	(po-error.obj): New rule.
5850	* Makefile.vms (OBJECTS): Add po-error.obj.
5851	(po-error.obj): New rule.
5852	* FILES: Update.
5853
58542004-09-03  Bruno Haible  <bruno@clisp.org>
5855
5856	* Makefile.am (msginit_LDADD): Use the INTL_MACOSX_LDFLAGS.
5857
58582004-08-30  Bruno Haible  <bruno@clisp.org>
5859
5860	* plural-table.c (plural_table): Czech is now like Slovak.
5861	Reported by Stepan Kasal <kasal@ucw.cz>.
5862
58632004-06-23  Bruno Haible  <bruno@clisp.org>
5864
5865	* x-c.c (phase1_getc): Fix phase0_getc invocation.
5866	Reported by Matt Dreezer <matthew.dreezer@edl.uk.eds.com>.
5867
58682004-05-14  Bruno Haible  <bruno@clisp.org>
5869
5870	* format-java.c (message_format_parse): Fix argument of freesa() calls.
5871
58722004-03-19  Bruno Haible  <bruno@clisp.org>
5873
5874	* Makefile.am (install-exec-clean): Don't remove libgettextsrc.a on
5875	AIX.
5876	Reported by Kouichi Hashikawa <z01a7ksy@cs.ecip.tohoku.ac.jp>.
5877
58782004-03-14  Bruno Haible  <bruno@clisp.org>
5879
5880	* format-lisp.c (parse_upto): Add integer restriction for the dispatch
5881	argument in ~[...~].
5882
58832004-03-02  Bruno Haible  <bruno@clisp.org>
5884
5885	* read-csharp.c (msgdomain_read_csharp): Extend the lang -> frobbedlang
5886	mapping so as to support Serbian and Uzbek locales.
5887	* write-csharp.c (msgdomain_write_csharp): Likewise.
5888	Reported by Jorn Baayen <jbaayen@dds.nl>.
5889
58902004-02-27  Bruno Haible  <bruno@clisp.org>
5891
5892	* plural-table.c (plural_table): Add an entry about Serbian.
5893	Reported by Danilo Segan <danilo@gnome.org>.
5894
58952004-01-29  Bruno Haible  <bruno@clisp.org>
5896
5897	* gettext-0.14.1 released.
5898
58992004-01-28  Bruno Haible  <bruno@clisp.org>
5900
5901	* gettext-0.14 released.
5902
59032004-01-18  Bruno Haible  <bruno@clisp.org>
5904
5905	* msginit.c (catalogname_for_locale): Add entries for Akan, Avaric,
5906	Bambara, Cree, Divehi (Maldivian), Éwé, Igbo, Kongo, Kanuri, Ganda,
5907	Luba-Katanga, Ojibwa, Venda.
5908	(englishname_of_language): Likewise, and also for Fulah (Fulfulde).
5909
59102004-01-09  Bruno Haible  <bruno@clisp.org>
5911
5912	* format.h (struct formatstring_parser): Add 'translated' argument to
5913	parse function.
5914	(get_sysdep_c_format_directives): Renamed from
5915	get_c99_format_directives. Add 'translated' argument. Change meaning
5916	of endpos in returned array.
5917	* format-c.c (struct spec): Rename field c99_directives to
5918	sysdep_directives, and c99_directives_count to sysdep_directives_count.
5919	(format_parse): Add 'translated' argument. Handle 'I' flag. Store the
5920	pointer past the '>' character instead of the pointer to the '>'.
5921	(format_c_parse, format_objc_parse): Add 'translated' argument.
5922	(get_sysdep_c_format_directives): Renamed from
5923	get_c99_format_directives. Add 'translated' argument.
5924	* format-awk.c (format_parse): Add 'translated' argument.
5925	* format-csharp.c (format_parse): Likewise.
5926	* format-elisp.c (format_parse): Likewise.
5927	* format-gcc-internal.c (format_parse): Likewise.
5928	* format-java.c (format_parse): Likewise.
5929	* format-librep.c (format_parse): Likewise.
5930	* format-lisp.c (format_parse): Likewise.
5931	* format-pascal.c (format_parse): Likewise.
5932	* format-perl-brace.c (format_parse): Likewise.
5933	* format-perl.c (format_parse): Likewise.
5934	* format-php.c (format_parse): Likewise.
5935	* format-python.c (format_parse): Likewise.
5936	* format-qt.c (format_parse): Likewise.
5937	* format-sh.c (format_parse): Likewise.
5938	* format-tcl.c (format_parse): Likewise.
5939	* format-ycp.c (format_parse): Likewise.
5940	* msgfmt.c (check_pair): Update.
5941	* msgmerge.c (msgfmt_check_pair_fails): Likewise.
5942	* read-mo.c (get_sysdep_string): Don't add '<'...'>' around segments
5943	of length 1.
5944	(read_mo_file): Treat major revision 1 like major revision 0.
5945	* write-mo.c (write_table): Update. Use major revision 1 if "I" occurs
5946	among the sysdep segments.
5947	* xgettext.c (set_format_flags_from_context, remember_a_message,
5948	remember_a_message_plural): Update.
5949
59502004-01-14  Bruno Haible  <bruno@clisp.org>
5951
5952	* msginit.c (fill_header): Avoid a NULL pointer access when the header
5953	has no comment attached to it.
5954	Reported by Josep Puigdemont <baldrick@terra.es>.
5955
59562004-01-09  Bruno Haible  <bruno@clisp.org>
5957
5958	* msgattrib.c (main): Update year in --version output.
5959	* msgcat.c (main): Likewise.
5960	* msgcmp.c (main): Likewise.
5961	* msgcomm.c (main): Likewise.
5962	* msgconv.c (main): Likewise.
5963	* msgen.c (main): Likewise.
5964	* msgexec.c (main): Likewise.
5965	* msgfilter.c (main): Likewise.
5966	* msgfmt.c (main): Likewise.
5967	* msggrep.c (main): Likewise.
5968	* msginit.c (main): Likewise.
5969	* msgmerge.c (main): Likewise.
5970	* msgunfmt.c (main): Likewise.
5971	* msguniq.c (main): Likewise.
5972	* xgettext.c (main): Likewise.
5973
59742003-12-29  Bruno Haible  <bruno@clisp.org>
5975
5976	* xgettext.h: Include stdlib.h, str-list.h.
5977	(struct refcounted_string_list_ty): New type.
5978	(add_reference, drop_reference): New functions.
5979	(savable_comment, savable_comment_add, savable_comment_reset,
5980	savable_comment_to_xgettext_comment): New declarations.
5981	* xgettext.c (savable_comment): New variable.
5982	(savable_comment_add, savable_comment_reset,
5983	savable_comment_to_xgettext_comment): New functions.
5984	* x-java.c (struct refcounted_string_list_ty, comment, add_reference,
5985	drop_reference, x_java_comment_add, x_java_comment_reset,
5986	x_java_comment_to_xgettext_comment): Remove. Use replacement from
5987	xgettext.{h,c} instead.
5988	* x-csharp.c (struct refcounted_string_list_ty, comment, add_reference,
5989	drop_reference, x_csharp_comment_add, x_csharp_comment_reset,
5990	x_csharp_comment_to_xgettext_comment): Remove. Use replacement from
5991	xgettext.{h,c} instead.
5992	* x-c.c (comment_line_end): Call savable_comment_add instead of
5993	xgettext_comment_add.
5994	(struct token_ty): Add 'comment' field.
5995	(free_token): Free it.
5996	(phase5_get): Initialize token's 'comment' field.
5997	(phase6_get): Call savable_comment_reset instead of
5998	xgettext_comment_reset.
5999	(phase8a_get): Initialize token's 'comment' field.
6000	(phase8b_get): Call savable_comment_reset instead of
6001	xgettext_comment_reset.
6002	(phase8c_get): In @"...", use the comment of the first token, not of
6003	the second.
6004	(struct xgettext_token_ty): Add 'comment' field.
6005	(x_c_lex): Deal with the token's comment.
6006	(extract_parenthesized): Call savable_comment_to_xgettext_comment and
6007	savable_comment_reset. Free the token's comment field.
6008	* x-python.c (comment_line_end): Call savable_comment_add instead of
6009	xgettext_comment_add.
6010	(struct token_ty): Add 'comment' field.
6011	(phase5_get): Call savable_comment_reset instead of
6012	xgettext_comment_reset. Initialize token's 'comment' field.
6013	(extract_parenthesized): Call savable_comment_to_xgettext_comment and
6014	savable_comment_reset. Free the token's comment field.
6015
60162003-12-28  Bruno Haible  <bruno@clisp.org>
6017
6018	* read-mo.h (read_mo_file): Change 'fn' into 'filename'.
6019	* read-mo.c (read_mo_file): Likewise.
6020
60212003-12-28  Bruno Haible  <bruno@clisp.org>
6022
6023	* write-resources.h: New file.
6024	* write-resources.c: New file.
6025	* msgfmt.cs: New file.
6026	* msgfmt.c: Include write-resources.h.
6027	(csharp_resources_mode): New variable.
6028	(long_options): Add --csharp-resources.
6029	(main): Handle --csharp-resources. More generic code for detection of
6030	contradicting modes. Invoke msgdomain_write_csharp_resources.
6031	(usage): Document --csharp-resources option.
6032	(msgfmt_set_domain): Update.
6033	* read-resources.h: New file.
6034	* read-resources.c: New file.
6035	* msgunfmt.cs (DumpResource): Add a constructor that dumps a .resources
6036	file.
6037	(Main): Invoke it when only one argument is given.
6038	* msgunfmt.c: Include read-resources.h.
6039	(csharp_resources_mode): New variable.
6040	(long_options): Add --csharp-resources.
6041	(main): Handle --csharp-resources. More generic code for detection of
6042	contradicting modes. Invoke read_one_file instead of read_mo_file.
6043	(usage): Document --csharp-resources option.
6044	(read_one_file): New function.
6045	* Makefile.am (noinst_HEADERS): Add read-resources.h and
6046	write-resources.h.
6047	(msgfmt_SOURCES): Add write-resources.c.
6048	(msgunfmt_SOURCES): Add read-resources.c.
6049	(EXTRA_DIST): Add msgfmt.cs.
6050	(CLEANFILES): Add msgfmt.net.exe.
6051	(msgfmt.net.exe): New rule.
6052	(all-csharp-yes): Depend on it.
6053	(install-exec-csharp-yes): Also install msgfmt.net.exe.
6054	(uninstall-csharp-yes): Also uninstall msgfmt.net.exe.
6055	* Makefile.msvc (msgfmt_OBJECTS): Add write-resources.obj.
6056	(msgunfmt_OBJECTS): Add read-resources.obj.
6057	(write-resources.obj, read-resources.obj): New rules.
6058	* Makefile.vms (msgfmt_OBJECTS): Add write-resources.obj.
6059	(msgunfmt_OBJECTS): Add read-resources.obj.
6060	(write-resources.obj, read-resources.obj): New rules.
6061	* FILES: Update.
6062
60632003-12-26  Bruno Haible  <bruno@clisp.org>
6064
6065	Support for C#.
6066	* write-csharp.h: New file.
6067	* write-csharp.c: New file.
6068	* msgfmt.c: Include write-csharp.h.
6069	(csharp_mode, csharp_resource_name, csharp_locale_name,
6070	csharp_base_directory): New variables.
6071	(long_options): Add option --csharp.
6072	(main): Handle option --csharp. Initialize csharp_resource_name,
6073	csharp_locale_name, csharp_base_directory. Perform checks for C# mode.
6074	Invoke msgdomain_write_csharp.
6075	(usage): Document --csharp option and C# mode.
6076	(msgfmt_set_domain): Ignore in C# mode.
6077	* read-csharp.h: New file.
6078	* read-csharp.c: New file.
6079	* msgunfmt.cs: New file.
6080	* msgunfmt.c: Include read-csharp.h.
6081	(csharp_mode, csharp_resource_name, csharp_locale_name,
6082	csharp_base_directory): New variables.
6083	(long_options): Add option --csharp.
6084	(main): Handle option --csharp. Initialize csharp_resource_name,
6085	csharp_locale_name, csharp_base_directory. Perform checks for C# mode.
6086	Invoke msgdomain_read_csharp.
6087	(usage): Document --csharp option and C# mode.
6088	* Makefile.am (noinst_HEADERS): Add read-csharp.h, write-csharp.h.
6089	(CSHARPCOMP, CSHARPCOMPFLAGS): New variables.
6090	(msgfmt_SOURCES): Add write-csharp.c.
6091	(msgunfmt_SOURCES): Add read-csharp.c.
6092	(EXTRA_DIST): Add msgunfmt.cs.
6093	(CLEANFILES): Add msgunfmt.net.exe.
6094	(all-csharp-yes, all-csharp-no): New rules.
6095	(all-local): Depend on them.
6096	(msgunfmt.net.exe): New rule.
6097	(install-exec-csharp-yes, install-exec-csharp-no): New rules.
6098	(install-exec-local): Depend on them.
6099	(installdirs-csharp): New rule.
6100	(installdirs-local): Depend on it.
6101	(uninstall-csharp-yes, uninstall-csharp-no): New rules.
6102	(uninstall-local): Depend on it.
6103	* Makefile.msvc (msgfmt_OBJECTS): Add write-csharp.obj.
6104	(msgunfmt_OBJECTS): Add read-csharp.obj.
6105	(write-csharp.obj, read-csharp.obj): New rules.
6106	* Makefile.vms (msgfmt_OBJECTS): Add write-csharp.obj.
6107	(msgunfmt_OBJECTS): Add read-csharp.obj.
6108	(write-csharp.obj, read-csharp.obj): New rules.
6109	* FILES: Update.
6110
61112003-12-26  Bruno Haible  <bruno@clisp.org>
6112
6113	* read-java.c (msgdomain_read_java): Relocate also the GETTEXTJAR
6114	value.
6115	* urlget.c (fetch): Likewise.
6116
61172003-12-26  Bruno Haible  <bruno@clisp.org>
6118
6119	* write-java.c (write_java_code): Emit a static method
6120	'get_msgid_plural_table' instead of a static field 'plural'.
6121	* gnu/gettext/DumpResource.java (DumpResource.dump): Exploit a
6122	'get_msgid_plural_table' method if it exists.
6123
61242003-12-14  Bruno Haible  <bruno@clisp.org>
6125
6126	* message.h (format_type): New enum value 'format_csharp'.
6127	(NFORMATS): Increment.
6128	* message.c (format_language): Add format_csharp entry.
6129	(format_language_pretty): Likewise.
6130	* format.h (formatstring_csharp): New declaration.
6131	* format-csharp.c: New file.
6132	* format.c (formatstring_parsers): Add formatstring_csharp.
6133	* x-csharp.h: New file.
6134	* x-csharp.c: New file.
6135	* xgettext.c: Include x-csharp.h.
6136	(flag_table_csharp): New variable.
6137	(main): Invoke init_flag_table_csharp, x_csharp_extract_all,
6138	x_csharp_keyword.
6139	(usage): Mention C# source language.
6140	(xgettext_record_flag): Handle format_csharp.
6141	(language_to_extractor): Add C# rule.
6142	(extension_to_language): Add C# rule.
6143	* Makefile.am (noinst_HEADERS): Add x-csharp.h.
6144	(FORMAT_SOURCE): Add format-csharp.c.
6145	(xgettext_SOURCES): Add x-csharp.c.
6146	* Makefile.msvc (OBJECTS): Add format-csharp.obj.
6147	(xgettext_OBJECTS): Add x-csharp.obj.
6148	(format-csharp.obj, x-csharp.obj): New rules.
6149	* Makefile.vms (OBJECTS): Add format-csharp.obj.
6150	(xgettext_OBJECTS): Add x-csharp.obj.
6151	(format-csharp.obj, x-csharp.obj): New rules.
6152	* FILES: Update.
6153
61542003-12-28  Bruno Haible  <bruno@clisp.org>
6155
6156	* msgexec.c (process_string): Pass ignore_sigpipe = false.
6157	* msgfilter.c (process_string): Likewise.
6158	* msggrep.c (is_string_selected): Likewise.
6159	* msginit.c (project_id, project_id_version, get_user_email,
6160	language_team_address): Likewise.
6161	* read-java.c (execute_and_read_po_output): Likewise.
6162	* read-tcl.c (msgdomain_read_tcl): Likewise.
6163	* urlget.c (execute_it): Pass ignore_sigpipe = true.
6164	(fetch): Pass ignore_sigpipe = true when fetching the file, = false
6165	otherwise.
6166
61672003-12-14  Bruno Haible  <bruno@clisp.org>
6168
6169	* x-c.c (SIZEOF): New macro.
6170	(phase1_ungetc): Verify that the pushback buffer's size is sufficient.
6171	(phase2_ungetc): Likewise.
6172	(phase3_ungetc): Likewise.
6173	(phase5_unget): Likewise.
6174	(phase6_unget): Likewise.
6175	* x-java.c (SIZEOF): New macro.
6176	(phase1_ungetc): Verify that the pushback buffer's size is sufficient.
6177	(phase2_ungetc): Likewise.
6178	(phase3_ungetc): Likewise.
6179	(phase5_unget): Likewise.
6180	(phase6_unget): Likewise.
6181	* x-php.c (SIZEOF): New macro.
6182	(phase1_ungetc): Verify that the pushback buffer's size is sufficient.
6183	(phase2_ungetc): Likewise.
6184	(phase3_ungetc): Likewise.
6185	* x-python.c (SIZEOF): New macro.
6186	(phase1_ungetc): Verify that the pushback buffer's size is sufficient.
6187	(phase5_unget): Likewise.
6188	* x-sh.c (SIZEOF): New macro.
6189	(phase1_ungetc): Verify that the pushback buffer's size is sufficient.
6190	(phase2_ungetc): Likewise.
6191	* x-smalltalk.c (SIZEOF): New macro.
6192	(phase2_unget): Verify that the pushback buffer's size is sufficient.
6193	* x-tcl.c (SIZEOF): New macro.
6194	(phase1_ungetc): Verify that the pushback buffer's size is sufficient.
6195	(phase2_ungetc): Likewise.
6196	* x-ycp.c (SIZEOF): New macro.
6197	(phase2_unget): Verify that the pushback buffer's size is sufficient.
6198
61992003-12-14  Bruno Haible  <bruno@clisp.org>
6200
6201	* x-c.c (phase1_pushback): Reduce size to 2.
6202	(phase2_pushback): Reduce size to 1.
6203	(phase3_pushback): Reduce size to 2.
6204	(phase5_pushback): Reduce size to 1.
6205	(phase6_pushback): Reduce size to 2.
6206	* x-java.c (phase2_pushback): Reduce size to 1.
6207	(phase3_pushback): Reduce size to 2.
6208	(phase5_pushback): Reduce size to 3.
6209	(phase6_pushback): Reduce size to 2.
6210	* x-php.c (phase1_pushback): Reduce size to 2.
6211	* x-python.c (max): New macro.
6212	(phase1_pushback): Reduce size to UNINAME_MAX + 3.
6213	(phase5_pushback): Reduce size to 1.
6214	* x-sh.c (phase1_pushback): Reduce size to 1.
6215	(phase2_pushback): Reduce size to 2.
6216	* x-smalltalk.c (phase2_pushback): Reduce size to 1.
6217	* x-tcl.c (phase1_pushback): Reduce size to 1.
6218	(phase2_pushback): Reduce size to 2.
6219
62202003-12-12  Bruno Haible  <bruno@clisp.org>
6221
6222	Assume automake-1.8.
6223	* Makefile.am (install-exec-local): Renamed from install-exec-am.
6224
62252003-11-30  Bruno Haible  <bruno@clisp.org>
6226
6227	* format-java.c: Include xallocsa.h.
6228	(message_format_parse): Use xallocsa instead of alloca.
6229	(choice_format_parse): Likewise.
6230	* msgl-cat.c: Include xallocsa.h.
6231	(catenate_msgdomain_list): Use xallocsa instead of alloca.
6232	* msgl-charset.c: Include xallocsa.h.
6233	(compare_po_locale_charsets): Use xallocsa instead of alloca.
6234	* msgl-iconv.c: Include xallocsa.h.
6235	(iconv_message_list): Use xallocsa instead of alloca.
6236	* po-charset.c: Include xallocsa.h.
6237	(po_lex_charset_set): Use xallocsa instead of alloca.
6238	* read-tcl.c: Include xallocsa.h.
6239	(msgdomain_read_tcl): Use xallocsa instead of alloca.
6240	* write-java.c: Include xallocsa.h.
6241	(compute_hashsize, msgdomain_write_java): Use xallocsa instead of
6242	alloca.
6243	* write-mo.c: Include xallocsa.h.
6244	(write_table): Use xallocsa instead of alloca.
6245	* write-po.c: Include xallocsa.h.
6246	(msgdomain_list_print_po): Use xallocsa instead of alloca.
6247	* write-tcl.c: Include xallocsa.h.
6248	(msgdomain_write_tcl): Use xallocsa instead of alloca.
6249	* msggrep.c: Include xallocsa.h.
6250	(is_message_selected): Use xallocsa instead of alloca.
6251	* msginit.c: Include xallocsa.h.
6252	(subst_string): Use xallocsa instead of alloca.
6253	* msgmerge.c: Include obstack.h.
6254	(obstack_chunk_alloc, obstack_chunk_free): New macros.
6255	(message_merge): Use obstack_alloc instead of alloca.
6256	* xgettext.c: Include xallocsa.h.
6257	(flag_context_list_table_insert): Use xallocsa instead of alloca.
6258
62592003-12-17  Bruno Haible  <bruno@clisp.org>
6260
6261	* gettext-0.13.1 released.
6262
62632003-12-14  Bruno Haible  <bruno@clisp.org>
6264
6265	* x-sh.c (phase2_getc): Call phase1_ungetc instead of phase2_ungetc:
6266	The next phase2_getc invocation must return QUOTED('"'), not '"'.
6267
62682003-12-14  Bruno Haible  <bruno@clisp.org>
6269
6270	* x-c.c (phase7_getc): Remove dead code.
6271	* x-java.c (accumulate_escaped): More precise error message.
6272
62732003-12-02  Bruno Haible  <bruno@clisp.org>
6274
6275	* msginit.c (catalogname_for_locale): Treat sr_CS like sr_YU.
6276
62772003-11-30  Bruno Haible  <bruno@clisp.org>
6278
6279	* gettext-0.13 released.
6280
62812003-11-28  Bruno Haible  <bruno@clisp.org>
6282
6283	* xgettext.c (set_format_flags_from_context): Add casts, to make it
6284	compile in C++ mode.
6285
62862003-11-22  Bruno Haible  <bruno@clisp.org>
6287
6288	* x-c.c (phase4_getc): Skip leading whitespace in C++ style comments
6289	as well.
6290	* x-sh.c (read_word): Skip leading whitespace in comments.
6291	* x-lisp.c (read_object): Skip leading whitespace in single-line
6292	comments as well.
6293	* x-elisp.c (read_object): Skip leading whitespace in comments.
6294	* x-librep.c (read_object): Skip leading whitespace in single-line
6295	comments as well.
6296	* x-java.c (phase4_getc): Skip leading whitespace in C++ style comments
6297	as well.
6298	* x-awk.c (phase2_getc): Skip leading whitespace in comments.
6299	* x-ycp.c (phase2_getc): Skip leading whitespace in single-line
6300	comments as well.
6301	* x-tcl.c (read_command): Skip leading whitespace in comments.
6302
63032003-11-24  Bruno Haible  <bruno@clisp.org>
6304
6305	* format-lisp.c (check_params): Use ngettext for one of the messages.
6306	Reported by Rafał Maszkowski <rzm@icm.edu.pl>.
6307
63082003-11-15  Bruno Haible  <bruno@clisp.org>
6309
6310	* Makefile.am (AM_CPPFLAGS): Renamed from INCLUDES.
6311
63122003-11-09  Bruno Haible  <bruno@clisp.org>
6313
6314	* msginit.c (main): Drop the blank line in --no-translator mode.
6315
63162003-11-07  Bruno Haible  <bruno@clisp.org>
6317
6318	* xgettext.c (remember_a_message): Omit the programmer comments of a
6319	duplicated msgid only if they are redundant.
6320	Reported by Christian Neumair <chris@gnome-de.org>.
6321
63222003-11-05  Bruno Haible  <bruno@clisp.org>
6323
6324	* user-email.sh.in: Renamed from user-email.in. Internationalize, use
6325	localedir and gettext.
6326	* FILES: Update.
6327
63282003-10-23  Bruno Haible  <bruno@clisp.org>
6329
6330	* read-stringtable.c (read_string, stringtable_parse): Cast
6331	gram_pos.line_number to 'unsigned long'.
6332	* x-sh.c (read_word): Case line_number to 'unsigned long'.
6333
63342003-10-21  Bruno Haible  <bruno@clisp.org>
6335
6336	* message.h (message_list_msgids_changed): New declaration.
6337	* message.c (message_list_msgids_changed): New function.
6338	* msgl-iconv.c (iconv_message_list): Update the message list's hash
6339	table if it happens to contain non-ASCII msgids.
6340
63412003-10-19  Bruno Haible  <bruno@clisp.org>
6342
6343	* message.h (format_type): New enum value 'format_qt'.
6344	(NFORMATS): Increment.
6345	* message.c (format_language): Add format_qt entry.
6346	(format_language_pretty): Likewise.
6347	* format.h (formatstring_qt): New declaration.
6348	* format-qt.c: New file.
6349	* format.c (formatstring_parsers): Add formatstring_qt.
6350	* xgettext.c (recognize_format_qt): New variable.
6351	(long_options): Add option "--qt".
6352	(main): Handle --qt option. Determine the extractor only after option
6353	processing is complete.
6354	(usage): Document --qt option.
6355	(xgettext_record_flag): Handle format_qt.
6356	(language_to_extractor): For C++, return a different extractor when
6357	--qt was specified.
6358	* write-qt.h: New file.
6359	* write-qt.c: New file.
6360	* msgfmt.c: Include write-qt.h.
6361	(qt_mode): New variable.
6362	(long_options): Add option "--qt".
6363	(main): Handle --qt option. More checks for contradicting options.
6364	Call msgdomain_write_qt.
6365	(usage): Mention Qt mode.
6366	(format_directive_domain): Ignore domain directive if in Qt mode.
6367	* Makefile.am (noinst_HEADERS): Add write-qt.h.
6368	(FORMAT_SOURCE): Add format-qt.c.
6369	(msgfmt_SOURCES): Add write-qt.c.
6370	* Makefile.msvc (OBJECTS): Add format-qt.obj.
6371	(msgfmt_OBJECTS): Add write-qt.obj.
6372	(format-qt.obj, write-qt.obj): New rules.
6373	* Makefile.vms (OBJECTS): Add format-qt.obj.
6374	(msgfmt_OBJECTS): Add write-qt.obj.
6375	(format-qt.obj, write-qt.obj): New rules.
6376	* FILES: Update.
6377
63782003-10-14  Bruno Haible  <bruno@clisp.org>
6379
6380	Fix compilation errors in C++ mode.
6381	* msgfilter.c (process_string): Cast the xrealloc expression.
6382	* xgettext.c (language_to_extractor, extension_to_language): Move the
6383	typedef after the struct definition.
6384
63852003-10-13  Bruno Haible  <bruno@clisp.org>
6386
6387	Support CR/LF line terminators in C sources even on Unix.
6388	* x-c.c (phase0_getc, phase0_ungetc): New functions.
6389	(phase1_getc): Use them instead of calling getc/ungetc directly.
6390	Reported by Christoph Thielecke <u15119@hs-harz.de>.
6391
63922003-10-13  Bruno Haible  <bruno@clisp.org>
6393
6394	Support and recognize Objective C specific format strings.
6395	* message.h (enum format_type): New item format_objc.
6396	(NFORMATS): Increment.
6397	* message.c (format_language): Add an entry for format_objc.
6398	(format_language_pretty): Likewise.
6399	* format.h (formatstring_objc): New declaration.
6400	* format-c.c (enum format_arg_type): New item FAT_OBJC_OBJECT.
6401	(format_parse): Add objc_extensions argument. Handle %@ in ObjC mode.
6402	(format_c_parse, format_objc_parse): New functions.
6403	(formatstring_c): Use format_c_parse instead of format_parse.
6404	(formatstring_objc): New variable.
6405	(get_c99_format_directives): Update.
6406	* format.c (formatstring_parsers): Add an entry for format_objc.
6407	* write-mo.c (write_table): Look for system dependent strings also in
6408	ObjectiveC format strings.
6409	* x-c.h (SCANNERS_C): Use separate flag_table for ObjectiveC.
6410	(x_objc_keyword, init_flag_table_objc): New declarations.
6411	(x_c_any_keywords): Remove declaration.
6412	* x-c.c (c_keywords): Renamed from keywords.
6413	(objc_keywords): New variable.
6414	(add_keyword): Renamed from x_c_keyword. Add keywords table argument.
6415	(x_c_keyword, x_objc_keyword): New functions.
6416	(x_c_any_keywords): Remove function.
6417	(init_keywords): Also initialize ObjectiveC keyword table.
6418	(init_flag_table_objc): New function.
6419	(enum token_type_ty): New item token_type_colon.
6420	(phase5_get): Recognize colon.
6421	(enum xgettext_token_type_ty): New item xgettext_token_type_colon.
6422	(x_c_lex): Use keywords table depending on objc_extensions. Handle
6423	colon.
6424	(extract_parenthesized): Change the context_iter and inner_context
6425	after a keyword/symbol followed by a colon was seen.
6426	* xgettext.c (flag_table_objc): New variable.
6427	(main): Invoke init_flag_table_objc, x_objc_keyword. Watch out for
6428	keywords arguments, instead of calling x_c_any_keywords().
6429	(flag_context_list_table_insert): New function, extracted from
6430	xgettext_record_flag.
6431	(xgettext_record_flag): Call it. For format_c, insert the flags also
6432	in the flag_table_objc. Handle format_objc.
6433	(remember_a_message): Don't add a heuristic c-format flag to an entry
6434	that already carries objc-format.
6435	(remember_a_message_plural): Likewise.
6436
64372003-10-18  Bruno Haible  <bruno@clisp.org>
6438
6439	Support for GNUstep .strings format.
6440	* read-stringtable.h: New file.
6441	* read-stringtable.c: New file.
6442	* read-po-abstract.h (enum input_syntax_ty): New item
6443	syntax_stringtable.
6444	(po_callback_comment_dispatcher): Renamed from po_callback_comment.
6445	(po_callback_comment, po_callback_comment_special): New declarations.
6446	* read-po-abstract.c: Include read-stringtable.h.
6447	(po_scan): Add support for syntax_stringtable.
6448	(po_callback_comment_dispatcher): Renamed from po_callback_comment.
6449	(po_callback_comment, po_callback_comment_dot): New functions.
6450	(po_callback_comment_special): New function.
6451	* read-po.c (read_po): Set mdlp->encoding for syntax_stringtable too.
6452	* po-gram-gen.y: Update po_callback_comment_dispatcher call.
6453	* read-properties.c (properties_parse): Likewise.
6454	* write-stringtable.h: New file.
6455	* write-stringtable.c: New file.
6456	* write-po.h (make_format_description_string, significant_format_p):
6457	New declarations.
6458	(message_print_syntax_stringtable): New declaration.
6459	* write-po.c: Include write-stringtable.h.
6460	(make_format_description_string, significant_format_p): Make
6461	non-static.
6462	(use_syntax_stringtable): New variable.
6463	(message_print_syntax_stringtable): New function.
6464	(msgdomain_list_print): Add check for plural forms for
6465	syntax_stringtable too. Add support for writing the .strings format.
6466	* msgattrib.c (long_options): Add --stringtable-input/output.
6467	(main): Handle them.
6468	(usage): Document options --stringtable-input/output.
6469	* msgcat.c (long_options): Add --stringtable-input/output.
6470	(main): Handle them. If option --stringtable-output is used, convert to
6471	UTF-8 and ignore the to_code.
6472	(usage): Document options --stringtable-input/output.
6473	* msgcmp.c (long_options): Add --stringtable-input.
6474	(main): Handle it.
6475	(usage): Document option --stringtable-input.
6476	* msgcomm.c (long_options): Add --stringtable-input/output.
6477	(main): Handle them.
6478	(usage): Document options --stringtable-input/output.
6479	* msgconv.c (long_options): Add --stringtable-input/output.
6480	(main): Handle them. If option --stringtable-output is used, ignore the
6481	to_code.
6482	(usage): Document options --stringtable-input/output.
6483	* msgen.c (long_options): Add --stringtable-input/output.
6484	(main): Handle them.
6485	(usage): Document options --stringtable-input/output.
6486	* msgexec.c: Include limits.h.
6487	(long_options): Add --stringtable-input.
6488	(main): Handle it.
6489	(usage): Document option --stringtable-input.
6490	* msgfilter.c (long_options): Add --stringtable-input/output.
6491	(main): Handle them.
6492	(usage): Document options --stringtable-input/output.
6493	* msgfmt.c (long_options): Add --stringtable-input.
6494	(main): Handle it.
6495	(usage): Document option --stringtable-input.
6496	* msggrep.c (long_options): Add --stringtable-input/output.
6497	(main): Handle them.
6498	(usage): Document options --stringtable-input/output.
6499	* msginit.c (long_options): Add --stringtable-input/output.
6500	(main): Handle them.
6501	(usage): Document options --stringtable-input/output.
6502	* msgmerge.c (long_options): Add --stringtable-input/output.
6503	(main): Handle them. In update mode, --stringtable-input implies
6504	--stringtable-output.
6505	(usage): Document options --stringtable-input/output.
6506	* msgunfmt.c (long_options): Add --stringtable-output.
6507	(main): Handle it.
6508	(usage): Document option --stringtable-output.
6509	* msguniq.c (long_options): Add --stringtable-input/output.
6510	(main): Handle them.
6511	(usage): Document options --stringtable-input/output.
6512	* x-stringtable.h: New file.
6513	* x-po.c: Include x-stringtable.h.
6514	(extract_stringtable): New function.
6515	* xgettext.c: Include x-stringtable.h.
6516	(long_options): Add --stringtable-output.
6517	(main): Handle it.
6518	(usage): Document options -L NXStringTable and --stringtable-output.
6519	(finalize_header): If --stringtable-output was given, set the charset.
6520	(language_to_extractor): Add support for .strings format.
6521	(extension_to_language): Likewise.
6522	* Makefile.am (noinst_HEADERS): Add read-stringtable.h,
6523	write-stringtable.h, x-stringtable.h.
6524	(COMMON_SOURCE): Add read-stringtable.c.
6525	(libgettextsrc_la_SOURCES): Add write-stringtable.c.
6526	* Makefile.msvc (OBJECTS): Add read-stringtable.obj,
6527	write-stringtable.obj.
6528	(read-stringtable.obj, write-stringtable.obj): New rules.
6529	* Makefile.vms (OBJECTS): Add read-stringtable.obj,
6530	write-stringtable.obj.
6531	(read-stringtable.obj, write-stringtable.obj): New rules.
6532	* FILES: Update.
6533
65342003-10-21  Bruno Haible  <bruno@clisp.org>
6535
6536	* hostname.c (xgethostname): Add support for native Woe32 API.
6537
65382003-10-21  Bruno Haible  <bruno@clisp.org>
6539
6540	* message.c (message_list_search): Avoid casting a pointer to a local
6541	variable; it violated strict aliasing.
6542
65432003-10-21  Bruno Haible  <bruno@clisp.org>
6544
6545	* write-java.c (mkdir): Redefine on mingw.
6546
65472003-10-12  Bruno Haible  <bruno@clisp.org>
6548
6549	Improved ObjectiveC support.
6550	* x-c.h (extract_objc): New declaration.
6551	(SCANNERS_C): For ObjectiveC, use extract_objc.
6552	* x-c.c (objc_extensions): New variable.
6553	(enum token_type_ty): New item token_type_objc_special.
6554	(phase5_get): Recognize '@' for ObjectiveC.
6555	(phase8b_get, phase8b_unget): New functions. Handle
6556	token_type_white_space and token_type_eoln here instead of in x_c_lex.
6557	(phase8c_get, phase8c_unget): New functions.
6558	(phase8_get): Rely on phase8c, not phase8a. No more need to care about
6559	token_type_white_space and token_type_eoln.
6560	(x_c_lex): Drop handling of token_type_white_space and token_type_eoln.
6561	(extract_whole_file): Renamed from extract_c.
6562	(extract_c, extract_objc): New functions.
6563
65642003-10-20  Bruno Haible  <bruno@clisp.org>
6565
6566	* x-java.c (phase3_getc): Fix typo: Use phase2_ungetc, not phase2_getc.
6567
65682003-10-20  Bruno Haible  <bruno@clisp.org>
6569
6570	Portability to AIX with cc.
6571	* xgettext.h (struct flag_context_ty): Define the bitfields of type
6572	'unsigned int'.
6573
65742003-10-20  Bruno Haible  <bruno@clisp.org>
6575
6576	Portability to Solaris with cc.
6577	* x-java.c (string_buffer_append): Avoid aggregate initializer
6578	containing non-constant expressions.
6579	* xgettext.c (flag_context_list_iterator): Likewise.
6580	(language_to_extractor): Likewise.
6581
65822003-10-11  Bruno Haible  <bruno@clisp.org>
6583
6584	* xgettext.c (main): Drop suffix ".in" from input file name, if
6585	present, before looking at the file extension.
6586
65872003-10-09  Bruno Haible  <bruno@clisp.org>
6588
6589	* format-awk.c: Include xalloc.h instead of xmalloc.h.
6590	* format-c.c: Likewise.
6591	* format-elisp.c: Likewise.
6592	* format-gcc-internal.c: Likewise.
6593	* format-java.c: Likewise.
6594	* format-librep.c: Likewise.
6595	* format-lisp.c: Likewise.
6596	* format-pascal.c: Likewise.
6597	* format-perl.c: Likewise.
6598	* format-perl-brace.c: Likewise.
6599	* format-php.c: Likewise.
6600	* format-python.c: Likewise.
6601	* format-sh.c: Likewise.
6602	* format-tcl.c: Likewise.
6603	* format-ycp.c: Likewise.
6604	* gettext-po.c: Likewise.
6605	* hostname.c: Likewise.
6606	* message.c: Likewise.
6607	* msgexec.c: Likewise.
6608	* msgfilter.c: Likewise.
6609	* msgfmt.c: Likewise.
6610	* msggrep.c: Likewise.
6611	* msginit.c: Likewise.
6612	* msgl-cat.c: Likewise.
6613	* msgl-english.c: Likewise.
6614	* msgl-iconv.c: Likewise.
6615	* msgmerge.c: Likewise.
6616	* open-po.c: Likewise.
6617	* po-gram-gen.y: Likewise.
6618	* po-hash-gen.y: Likewise.
6619	* po-lex.c: Likewise.
6620	* read-mo.c: Likewise.
6621	* read-po-abstract.c: Likewise.
6622	* read-po.c: Likewise.
6623	* read-properties.c: Likewise.
6624	* str-list.c: Likewise.
6625	* write-java.c: Likewise.
6626	* write-mo.c: Likewise.
6627	* write-po.c: Likewise.
6628	* write-properties.c: Likewise.
6629	* write-tcl.c: Likewise.
6630	* x-awk.c: Likewise.
6631	* x-c.c: Likewise.
6632	* x-elisp.c: Likewise.
6633	* x-glade.c: Likewise.
6634	* x-java.c: Likewise.
6635	* x-librep.c: Likewise.
6636	* x-lisp.c: Likewise.
6637	* x-perl.c: Likewise.
6638	* x-php.c: Likewise.
6639	* x-po.c: Likewise.
6640	* x-python.c: Likewise.
6641	* x-rst.c: Likewise.
6642	* x-sh.c: Likewise.
6643	* x-smalltalk.c: Likewise.
6644	* x-tcl.c: Likewise.
6645	* x-ycp.c: Likewise.
6646	* xgettext.c: Likewise.
6647
66482003-10-07  Bruno Haible  <bruno@clisp.org>
6649
6650	More reliable subprocess cleanup.
6651	* msgexec.c (process_string): Pass slave_process = true to
6652	create_pipe_out() and wait_subprocess().
6653	* msgfilter.c (process_string): Pass slave_process = true to
6654	create_pipe_bidi() and wait_subprocess().
6655	* msggrep.c (is_string_selected): Pass slave_process = true to
6656	create_pipe_out() and wait_subprocess().
6657	* msginit.c (project_id, project_id_version, get_user_email,
6658	language_team_address): Pass slave_process = true to create_pipe_in()
6659	and wait_subprocess().
6660	* read-java.c (execute_and_read_po_output): Likewise.
6661	* read-tcl.c (msgdomain_read_tcl): Likewise.
6662	* urlget.c (execute_it, fetch): Pass slave_process = true to execute().
6663
66642003-10-05  Bruno Haible  <bruno@clisp.org>
6665
6666	* write-java.c: Include fatal-signal.h, not signal.h.
6667	(uninstall_handlers): Remove function.
6668	(cleanup): Remove signal argument. Don't execute the signal's default
6669	action; leave that to the caller.
6670	(install_handlers, init_signal_set, block, unblock): Remove functions.
6671	(msgdomain_write_java): Invoke at_fatal_signal instead of
6672	install_handlers/uninstall_handlers. Invoke [un]block_fatal_signals
6673	instead of [un]block.
6674
66752003-10-05  Bruno Haible  <bruno@clisp.org>
6676
6677	* xgettext.c (substring_match): Remove variable.
6678	(long_options): Remove --keyword-substring option.
6679	(main): Remove handling of --keyword-substring option.
6680
66812003-10-05  Bruno Haible  <bruno@clisp.org>
6682
6683	* message.h (enum is_format): New item yes_according_to_context.
6684	* message.c (possible_format_p): Handle also yes_according_to_context.
6685	* write-po.c (make_format_description_string): Likewise.
6686
6687	* xgettext.h (struct flag_context_ty): New type.
6688	(null_context, passthrough_context): New declarations.
6689	(inherited_context): New declaration.
6690	(struct flag_context_list_ty): New type.
6691	(struct flag_context_list_iterator_ty): New type.
6692	(null_context_list_iterator, passthrough_context_list_iterator): New
6693	declarations.
6694	(flag_context_list_iterator): New declaration.
6695	(flag_context_list_iterator_advance): New declaration.
6696	(flag_context_list_table_ty): New type.
6697	(flag_context_list_table_lookup): New declaration.
6698	(xgettext_record_flag): New declaration.
6699	(remember_a_message, remember_a_message_plural): Add context argument.
6700	* xgettext.c: Include alloca.h.
6701	(flag_table_c, flag_table_gcc_internal, flag_table_sh,
6702	flag_table_python, flag_table_lisp, flag_table_elisp,
6703	flag_table_librep, flag_table_java, flag_table_awk, flag_table_ycp,
6704	flag_table_tcl, flag_table_perl, flag_table_php): New variables.
6705	(long_options): Add option --flag.
6706	(extractor_func): Add argument flag_table.
6707	(struct extractor_ty): New type.
6708	(main): Use type 'extractor_ty' instead of 'extractor_func'.
6709	Invoke init_flag_table_c(), init_flag_table_gcc_internal(),
6710	init_flag_table_sh(), init_flag_table_python(), init_flag_table_lisp(),
6711	init_flag_table_elisp(), init_flag_table_librep(),
6712	init_flag_table_java(), init_flag_table_awk(), init_flag_table_ycp(),
6713	init_flag_table_tcl(), init_flag_table_perl(), init_flag_table_php().
6714	Implement option --flag.
6715	(usage): Rename a section to "Language specific options". Document
6716	the languages to which --extract-all, --keyword, --trigraphs are
6717	applicable. Document option --flag.
6718	(null_context): New variable.
6719	(passthrough_context): New variable.
6720	(inherited_context): New function.
6721	(null_context_list_iterator): New variable.
6722	(passthrough_context_circular_list, passthrough_context_list_iterator):
6723	New variables.
6724	(flag_context_list_iterator): New function.
6725	(flag_context_list_iterator_advance): New function.
6726	(flag_context_list_table_lookup): New function.
6727	(xgettext_record_flag): New function.
6728	(extract_from_file): Change argument type to 'extractor_ty' instead of
6729	'extractor_func'. Set current_formatstring_parser{1,2} before invoking
6730	the extractor.
6731	(set_format_flags_from_context): New function.
6732	(remember_a_message): Add context argument. Set some *-format flag if
6733	the context specifies it.
6734	(remember_a_message_plural): Likewise.
6735	(language_to_extractor): Change return type to 'extractor_ty' instead
6736	of 'extractor_func'.
6737
6738	* x-awk.h (SCANNERS_AWK): Refer to flag_table_awk.
6739	(extract_awk): Add argument flag_table.
6740	(init_flag_table_awk): New declaration.
6741	* x-awk.c (init_flag_table_awk): New function.
6742	(enum token_type_ty): New enum item token_type_semicolon.
6743	(x_awk_lex): Recognize semicolon.
6744	(flag_context_list_table): New variable.
6745	(extract_parenthesized): Add arguments outer_context, context_iter.
6746	Implement context handling depending on symbol before '('. Also
6747	recognize argument lists that start without '(', but only up to the
6748	next semicolon.
6749	(extract_awk): Add argument flag_table. Initialize
6750	flag_context_list_table.
6751
6752	* x-c.h (SCANNERS_C): Refer to flag_table_c, flag_table_gcc_internal.
6753	(extract_c): Add argument flag_table.
6754	(init_flag_table_c): New declaration.
6755	(init_flag_table_gcc_internal): New declaration.
6756	* x-c.c (init_flag_table_c): New function.
6757	(init_flag_table_gcc_internal): New function.
6758	(enum xgettext_token_type_ty): New item xgettext_token_type_other.
6759	(x_c_lex): For token_type_name, put the string into the resulting
6760	token instead of freeing it. Return token type
6761	xgettext_token_type_other instead of xgettext_token_type_symbol in
6762	some cases.
6763	(flag_context_list_table): New variable.
6764	(extract_parenthesized): Add arguments outer_context, context_iter.
6765	Implement context handling depending on symbol before '('.
6766	(extract_c): Add argument flag_table. Initialize
6767	flag_context_list_table.
6768
6769	* x-elisp.h (SCANNERS_ELISP): Refer to flag_table_elisp.
6770	(extract_elisp): Add argument flag_table.
6771	(init_flag_table_elisp): New declaration.
6772	* x-elisp.c (init_flag_table_elisp): New function.
6773	(flag_context_list_table): New variable.
6774	(read_object): Add argument outer_context. Implement context handling
6775	depending on first symbol after '('.
6776	(extract_elisp): Add argument flag_table. Initialize
6777	flag_context_list_table.
6778
6779	* x-glade.h (SCANNERS_GLADE): Update.
6780	(extract_glade): Add argument flag_table.
6781	* x-glade.c (start_element_handler, end_element_handler): Pass null
6782	context to remember_a_message.
6783	(extract_glade): Add argument flag_table.
6784
6785	* x-java.h (SCANNERS_JAVA): Refer to flag_table_java.
6786	(extract_java): Add argument flag_table.
6787	(init_flag_table_java): New declaration.
6788	* x-java.c (init_flag_table_java): New function.
6789	(flag_context_list_table): New variable.
6790	(extract_parenthesized): Add arguments outer_context, context_iter.
6791	Implement context handling depending on symbol before '('.
6792	(extract_java): Add argument flag_table. Initialize
6793	flag_context_list_table.
6794
6795	* x-librep.h (SCANNERS_ELISP): Refer to flag_table_librep.
6796	(extract_librep): Add argument flag_table.
6797	(init_flag_table_librep): New declaration.
6798	* x-librep.c (init_flag_table_librep): New function.
6799	(flag_context_list_table): New variable.
6800	(read_object): Add argument outer_context. Implement context handling
6801	depending on first symbol after '('.
6802	(extract_librep): Add argument flag_table. Initialize
6803	flag_context_list_table.
6804
6805	* x-lisp.h (SCANNERS_LISP): Refer to flag_table_lisp.
6806	(extract_lisp): Add argument flag_table.
6807	(init_flag_table_lisp): New declaration.
6808	* x-lisp.c (init_flag_table_lisp): New function.
6809	(flag_context_list_table): New variable.
6810	(read_object): Add argument outer_context. Implement context handling
6811	depending on first symbol after '('.
6812	(extract_lisp): Add argument flag_table. Initialize
6813	flag_context_list_table.
6814
6815	* x-perl.h (SCANNERS_PERL): Refer to flag_table_perl.
6816	(extract_perl): Add argument flag_table.
6817	(init_flag_table_perl): New declaration.
6818	* x-perl.c (init_flag_table_java): New function.
6819	(flag_context_list_table): New variable.
6820	(extract_variable): Update. Implement context handling depending on
6821	symbol before '{'...'}'.
6822	(interpolate_keywords): Implement context handling depending on symbol
6823	before '->' or '{'...'}'.
6824	(extract_balanced): Add arguments outer_context, context_iter.
6825	Implement context handling depending on symbol before '('. Also
6826	recognize argument lists that start without '('.
6827	(extract_perl): Add argument flag_table. Initialize
6828	flag_context_list_table.
6829
6830	* x-php.h (SCANNERS_PHP): Refer to flag_table_php.
6831	(extract_php): Add argument flag_table.
6832	(init_flag_table_php): New declaration.
6833	* x-php.c (init_flag_table_php): New function.
6834	(flag_context_list_table): New variable.
6835	(extract_parenthesized): Add arguments outer_context, context_iter.
6836	Implement context handling depending on symbol before '('.
6837	(extract_php): Add argument flag_table. Initialize
6838	flag_context_list_table.
6839
6840	* x-po.h (SCANNERS_PO): Update.
6841	(extract_po): Add argument flag_table.
6842	* x-properties.h (SCANNERS_PROPERTIES): Update.
6843	(extract_properties): Add argument flag_table.
6844	* x-po.c (extract_po): Add argument flag_table.
6845	(extract_properties): Add argument flag_table.
6846
6847	* x-python.h (SCANNERS_PYTHON): Refer to flag_table_python.
6848	(extract_python): Add argument flag_table.
6849	(init_flag_table_python): New declaration.
6850	* x-python.c (init_flag_table_python): New function.
6851	(flag_context_list_table): New variable.
6852	(extract_parenthesized): Add arguments outer_context, context_iter.
6853	Implement context handling depending on symbol before '('.
6854	(extract_python): Add argument flag_table. Initialize
6855	flag_context_list_table.
6856
6857	* x-rst.h (SCANNERS_RST): Update.
6858	(extract_rst): Add argument flag_table.
6859	* x-rst.c (extract_rst): Add argument flag_table.
6860
6861	* x-sh.h (SCANNERS_SH): Refer to flag_table_sh.
6862	(extract_sh): Add argument flag_table.
6863	(init_flag_table_sh): New declaration.
6864	* x-sh.c (init_flag_table_sh): New function.
6865	(flag_context_list_table): New variable.
6866	(read_word): Add context argument.
6867	(read_command): Add outer_context argument. Implement context handling
6868	depending on first symbol of command.
6869	(read_command_list): Add outer_context argument.
6870	(extract_sh): Add argument flag_table. Initialize
6871	flag_context_list_table.
6872
6873	* x-smalltalk.h (SCANNERS_SMALLTALK): Update.
6874	(extract_smalltalk): Add argument flag_table.
6875	* x-smalltalk.c (extract_smalltalk): Add argument flag_table.
6876
6877	* x-tcl.h (SCANNERS_TCL): Refer to flag_table_tcl.
6878	(extract_tcl): Add argument flag_table.
6879	(init_flag_table_tcl): New declaration.
6880	* x-tcl.c (init_flag_table_tcl): New function.
6881	(flag_context_list_table): New variable.
6882	(accumulate_word): Add context argument.
6883	(read_word): Add context argument.
6884	(read_command): Add outer_context argument. Implement context handling
6885	depending on first symbol of command.
6886	(read_command_list): Add outer_context argument.
6887	(extract_tcl): Add argument flag_table. Initialize
6888	flag_context_list_table.
6889
6890	* x-ycp.h (SCANNERS_YCP): Refer to flag_table_ycp.
6891	(extract_ycp): Add argument flag_table.
6892	(init_flag_table_ycp): New declaration.
6893	* x-ycp.c (init_flag_table_ycp): New function.
6894	(flag_context_list_table): New variable.
6895	(extract_parenthesized): New function, split off from extract_ycp.
6896	Implement context handling depending on symbol before '('.
6897	(extract_ycp): Add argument flag_table. Initialize
6898	flag_context_list_table. Call extract_parenthesized to do the work.
6899
6900	* po-lex.c (mbfile_getc, control_sequence): Remove explicit marking of
6901	strings as c-format, now done by xgettext.
6902
69032003-09-23  Bruno Haible  <bruno@clisp.org>
6904
6905	* x-awk.c (extract_parenthesized): Remove optimization of the
6906	extract_all case.
6907	* x-c.c (extract_parenthesized): Likewise.
6908	* x-elisp.c (read_object): Likewise.
6909	* x-librep.c (read_object): Likewise.
6910	* x-lisp.c (read_object): Likewise.
6911	* x-perl.c (x_perl_prelex, extract_balanced): Likewise.
6912	* x-php.c (extract_parenthesized): Likewise.
6913	* x-python.c (extract_parenthesized): Likewise.
6914	* x-sh.c (read_command): Likewise.
6915
69162003-10-08  Bruno Haible  <bruno@clisp.org>
6917
6918	* msgmerge.c (main): Make option -N work.
6919	Reported by Liu Garfield <jackliu9999@hotmail.com>.
6920
69212003-10-04  Bruno Haible  <bruno@clisp.org>
6922
6923	New Java backend.
6924	* x-java.c: New file.
6925	* x-java.l: Remove file.
6926	* Makefile.am (xgettext_SOURCES): Add x-java.c, remove x-java.l.
6927	(x-java.c): Remove rule.
6928	* FILES: Update.
6929
69302003-09-22  Bruno Haible  <bruno@clisp.org>
6931
6932	* x-glade.c (start_element_handler): Implement extract_all behaviour.
6933
69342003-10-04  Bruno Haible  <bruno@clisp.org>
6935
6936	* x-glade.c (do_extract_glade): Initialize stack_depth.
6937	* x-perl.c (extract_perl): Initialize linesize and linepos.
6938
6939	* x-python.c (phase2_getc): Set last_comment_line.
6940	(phase5_get): Set last_non_comment_line.
6941
69422003-10-04  Bruno Haible  <bruno@clisp.org>
6943
6944	* x-glade.c: Don't include msgl-ascii.h and msgl-iconv.h.
6945	* x-python.c: Likewise.
6946	* x-tcl.c: Likewise.
6947
69482003-10-06  Guido Flohr  <guido@imperia.net>
6949            Bruno Haible  <bruno@clisp.org>
6950
6951	* x-perl.c (enum symbol_type_ty): New enum.
6952	(struct token_ty): Rename field string_type to sub_type and change its
6953	type to 'int'.
6954	(extract_quotelike_pass3, interpolate_keywords): Update.
6955	(x_perl_prelex): Set sub_type also for symbol tokens.
6956	(x_perl_lex): Special handling of prototype argument lists.
6957	Reported by Crispin Flowerday <cflowerday@zeus.com>.
6958
69592003-09-22  Bruno Haible  <bruno@clisp.org>
6960
6961	* x-sh.c (read_word): Warn about $"...".
6962
69632003-09-18  Bruno Haible  <bruno@clisp.org>
6964
6965	* gettext-po.h (po_file_domain_header, po_header_field,
6966	po_message_is_obsolete, po_message_is_fuzzy, po_message_is_format): New
6967	declarations.
6968	* gettext-po.c (po_file_domain_header, po_header_field,
6969	po_message_is_obsolete, po_message_is_fuzzy, po_message_is_format): New
6970	functions.
6971	* Makefile.am (LTV_CURRENT, LTV_REVISION, LTV_AGE): Bump to 1:0:1.
6972
69732003-09-14  Bruno Haible  <bruno@clisp.org>
6974
6975	* plural-count.c: Include plural-count.h.
6976	* x-po.c: Include x-properties.h.
6977	* x-java.l (append_strings): Change argument type to 'const char *'.
6978
69792003-09-14  Bruno Haible  <bruno@clisp.org>
6980
6981	* msgfmt.c (check_plural_eval): Mark some strings as c-format.
6982	(msgfmt_add_message): Make static.
6983	* po-lex.c (mbfile_getc, control_sequence): Mark some strings as
6984	c-format.
6985
69862003-09-18  Bruno Haible  <bruno@clisp.org>
6987
6988	* FILES: Update.
6989
69902003-09-14  Bruno Haible  <bruno@clisp.org>
6991
6992	More reliable checking for read errors.
6993	* po-lex.c (mbfile_getc): Diagnose read errors also in the middle of
6994	multibyte characters.
6995	(lex_getc): Diagnose read errors also right after backslash.
6996	* x-rst.c (extract_rst): Diagnose read errors also inside ConstName
6997	and immediately after #.
6998
69992003-09-14  Bruno Haible  <bruno@clisp.org>
7000
7001	* write-mo.c: Include fwriterror.h.
7002	(msgdomain_write_mo): Use fwriteerror, to get right errno value in
7003	error message about write error.
7004	* write-po.c: Include fwriterror.h.
7005	(msgdomain_list_print): Use fwriteerror, to get right errno value in
7006	error message about write error.
7007	* write-java.c: Include fwriterror.h.
7008	(msgdomain_write_java): Use fwriteerror, to get right errno value in
7009	error message about write error.
7010	* write-tcl.c: Include fwriterror.h.
7011	(msgdomain_write_tcl): Use fwriteerror, to get right errno value in
7012	error message about write error.
7013
70142003-09-18  Bruno Haible  <bruno@clisp.org>
7015
7016	* xgettext.c (from_current_source_encoding): Use multiline_error,
7017	for a prettier error message.
7018
7019	* x-perl.c (extract_quotelike_pass1): Store counter_delim instead of
7020	EOF as delimiter, to avoid error during from_current_source_encoding.
7021	Reported by Crispin Flowerday <cflowerday@zeus.com>.
7022
70232003-09-13  Bruno Haible  <bruno@clisp.org>
7024
7025	* format-sh.c (INVALID_SHELL_SYNTAX,
7026	INVALID_CONTEXT_DEPENDENT_VARIABLE): New macros.
7027	(format_parse): Reject constructs like ${variable-default} and $?.
7028
70292003-09-13  Bruno Haible  <bruno@clisp.org>
7030
7031	Fix behaviour of "<program> --help > /dev/full".
7032	* hostname.c: Include closeout.h.
7033	(main): Register close_stdout for execution at program exit.
7034	* msgattrib.c: Include closeout.h.
7035	(main): Register close_stdout for execution at program exit.
7036	* msgcat.c: Include closeout.h.
7037	(main): Register close_stdout for execution at program exit.
7038	* msgcmp.c: Include closeout.h.
7039	(main): Register close_stdout for execution at program exit.
7040	* msgcomm.c: Include closeout.h.
7041	(main): Register close_stdout for execution at program exit.
7042	* msgconv.c: Include closeout.h.
7043	(main): Register close_stdout for execution at program exit.
7044	* msgen.c: Include closeout.h.
7045	(main): Register close_stdout for execution at program exit.
7046	* msgexec.c: Include closeout.h.
7047	(main): Register close_stdout for execution at program exit.
7048	* msgfilter.c: Include closeout.h.
7049	(main): Register close_stdout for execution at program exit.
7050	* msgfmt.c: Include closeout.h.
7051	(main): Register close_stdout for execution at program exit.
7052	* msggrep.c: Include closeout.h.
7053	(main): Register close_stdout for execution at program exit.
7054	* msginit.c: Include closeout.h.
7055	(main): Register close_stdout for execution at program exit.
7056	* msgmerge.c: Include closeout.h.
7057	(main): Register close_stdout for execution at program exit.
7058	* msgunfmt.c: Include closeout.h.
7059	(main): Register close_stdout for execution at program exit.
7060	* msguniq.c: Include closeout.h.
7061	(main): Register close_stdout for execution at program exit.
7062	* urlget.c: Include closeout.h.
7063	(main): Register close_stdout for execution at program exit.
7064	* xgettext.c: Include closeout.h.
7065	(main): Register close_stdout for execution at program exit.
7066	* write-po.c (msgdomain_list_print): Don't fclose (stdout) here.
7067
70682003-09-11  Bruno Haible  <bruno@clisp.org>
7069
7070	* po-lex.c (mbfile_getc): Handle unexpected return value of
7071	u8_mbtouc(). Reported by Jochen Hein <jochen@jochen.org>.
7072
70732003-09-09  Bruno Haible  <bruno@clisp.org>
7074
7075	* read-properties.c (phase4_getuc): Cast line_number to 'unsigned long'
7076	before outputting it.
7077
70782003-09-09  Bruno Haible  <bruno@clisp.org>
7079
7080	* po-lex.c: Test HAVE_DECL_GETC_UNLOCKED instead of HAVE_GETC_UNLOCKED.
7081	* write-po.c: Test HAVE_DECL_PUTC_UNLOCKED instead of
7082	HAVE_PUTC_UNLOCKED.
7083
70842003-09-09  Guido Flohr  <guido@imperia.net>
7085
7086	* x-perl.c (extract_quotelike_pass3): Change \l handling to no longer
7087	eat up non-uppercase characters; likewise for \u. Also make \l and \u
7088	work on characters written using hex or octal escape sequence. Fix \Q
7089	handling. With option --extract-all, avoid "invalid variable
7090	interpolation" warnings.
7091	(x_perl_prelex): With option --extract-all, keep variables inside
7092	double-quoted strings untouched.
7093
70942003-09-03  Bruno Haible  <bruno@clisp.org>
7095
7096	* x-sh.h: New file.
7097	* x-sh.c: New file.
7098	* xgettext.c: Include x-sh.h.
7099	(main): Call x_sh_extract_all, x_sh_keyword.
7100	(usage): Mention Shell language.
7101	(language_to_extractor): Add Shell rule.
7102	(extension_to_language): Add Shell rule.
7103	* Makefile.am (noinst_HEADERS): Add x-sh.h.
7104	(xgettext_SOURCES): Add x-sh.c.
7105	* Makefile.msvc (xgettext_OBJECTS): Add x-sh.obj.
7106	(x-sh.obj): New rule.
7107	* Makefile.vms (xgettext_OBJECTS): Add x-sh.obj.
7108	(x-sh.obj): New rule.
7109
71102003-08-31  Bruno Haible  <bruno@clisp.org>
7111
7112	* format-sh.c: New file.
7113	* message.h (format_sh): New enum value.
7114	(NFORMATS): Increment.
7115	* format.h (formatstring_sh): New declaration.
7116	* format.c (formatstring_parsers): Add entry for sh.
7117	* message.c (format_language, format_language_pretty): Likewise.
7118	* Makefile.am (FORMAT_SOURCE): Add format-sh.c.
7119	* Makefile.msvc (OBJECTS): Add format-sh.obj.
7120	(format-sh.obj): New rule.
7121	* Makefile.vms (OBJECTS): Add format-sh.obj.
7122	(format-sh.obj): New rule.
7123
71242003-08-31  Bruno Haible  <bruno@clisp.org>
7125
7126	* format-gcc-internal.c (isdigit): Remove unused macro.
7127	* format-perl-brace.c (isdigit): Likewise.
7128
71292003-09-01  Guido Flohr  <guido@imperia.net>
7130
7131	* x-perl.c (extract_balanced): Access the global last_token.
7132	Initialize last_token and prefer_division_over_regexp here.
7133	(extract_perl): Not here.
7134
71352003-08-29  Bruno Haible  <bruno@clisp.org>
7136
7137	* x-perl.c: Include getline.h.
7138
71392003-08-24  Bruno Haible  <bruno@clisp.org>
7140
7141	* Makefile.msvc (format.obj, msgmerge.obj, xgettext.obj, msgattrib.obj,
7142	msgcat.obj, msgcomm.obj, msgconv.obj, msgen.obj, msgfilter.obj,
7143	msggrep.obj, msguniq.obj): Compile these in C++ mode. This works around
7144	the "non-constant initializer" error that we get for addresses of
7145	variables in DLLs in C mode.
7146
71472003-08-24  Bruno Haible  <bruno@clisp.org>
7148
7149	* msgfilter.c (process_message): Cast xrealloc() result.
7150
71512003-08-24  Bruno Haible  <bruno@clisp.org>
7152
7153	* msgfilter.c: On Windows, include <io.h> instead of <unistd.h>.
7154	* msggrep.c: Likewise.
7155
71562003-08-24  Bruno Haible  <bruno@clisp.org>
7157
7158	* plural-count.h: New file.
7159	* plural-count.c: New file, extracted from msgmerge.c.
7160	* msgmerge.c: Include plural-count.h instead of plural-exp.h.
7161	(match_domain): Use function get_plural_count().
7162	* Makefile.am (noinst_HEADERS): Add plural-count.h.
7163	(msgmerge_SOURCES): Add plural-count.c.
7164	* Makefile.msvc (msgmerge_OBJECTS): Add plural-count.obj.
7165	(plural-count.obj): New rule.
7166	* Makefile.vms (msgmerge_OBJECTS): Add plural-count.obj.
7167	(plural-count.obj): New rule.
7168
71692003-08-24  Bruno Haible  <bruno@clisp.org>
7170
7171	Support for building DLLs on Windows.
7172	* format.h (formatstring_c, formatstring_python, formatstring_lisp,
7173	formatstring_elisp, formatstring_librep, formatstring_smalltalk,
7174	formatstring_java, formatstring_awk, formatstring_pascal,
7175	formatstring_ycp, formatstring_tcl, formatstring_perl,
7176	formatstring_perl_brace, formatstring_php, formatstring_gcc_internal,
7177	formatstring_parsers): Add DLL_VARIABLE attribute.
7178	* message.h (format_language, format_language_pretty): Likewise.
7179	* msgl-cat.h (more_than, less_than, use_first, msgcomm_mode,
7180	omit_header): Likewise.
7181	* plural-table.h (plural_table, plural_table_size): Likewise.
7182	* po-charset.h (po_charset_ascii, po_charset_utf8, po_lex_charset,
7183	po_lex_iconv, po_lex_weird_cjk): Likewise.
7184	* po-lex.h (gram_pos, gram_pos_column, gram_max_allowed_errors,
7185	pass_obsolete_entries): Likewise.
7186	* read-po.h (line_comment, allow_duplicates, input_syntax): Likewise.
7187	* write-mo.h (alignment, no_hash_table): Likewise.
7188	* Makefile.am (po-gram-gen2.h): Likewise.
7189
71902003-08-24  Bruno Haible  <bruno@clisp.org>
7191
7192	* Makefile.msvc (gettext-po.obj, gettextpo.lib, gettextpo.res): New
7193	rules.
7194	(all): Depend on gettextpo.lib.
7195	(install, installdirs, uninstall): Install/uninstall gettext-po.h,
7196	gettextpo.dll and gettextpo.lib.
7197	* Makefile.vms (gettext-po.obj, gettextpo.olb): New rules.
7198	(all): Depend on gettextpo.olb.
7199	(install, installdirs, uninstall): Install/uninstall gettext-po.h,
7200	gettextpo.olb.
7201
72022003-08-24  Bruno Haible  <bruno@clisp.org>
7203
7204	* dir-list.h: Make this file includable in C++ mode: add extern "C".
7205	* file-list.h: Likewise.
7206	* format.h: Likewise.
7207	* message.h: Likewise.
7208	* msgl-ascii.h: Likewise.
7209	* msgl-cat.h: Likewise.
7210	* msgl-charset.h: Likewise.
7211	* msgl-english.h: Likewise.
7212	* msgl-equal.h: Likewise.
7213	* msgl-iconv.h: Likewise.
7214	* open-po.h: Likewise.
7215	* po-charset.h: Likewise.
7216	* po-lex.h: Likewise.
7217	* po-time.h: Likewise.
7218	* read-po-abstract.h: Likewise.
7219	* str-list.h: Likewise.
7220	* write-po.h: Likewise.
7221	* xgettext.h: Likewise.
7222	* read-po.h: Likewise.
7223	(this): Redefine to a different symbol.
7224	* xgettext.c: Add extern "C" around all "x-*.h" includes.
7225
72262003-08-22  Bruno Haible  <bruno@clisp.org>
7227
7228	* format-awk.c: Include error-progname.h instead of progname.h.
7229	* format-c.c: Likewise.
7230	* format-elisp.c: Likewise.
7231	* format-gcc-internal.c: Likewise.
7232	* format-java.c: Likewise.
7233	* format-librep.c: Likewise.
7234	* format-lisp.c: Likewise.
7235	* format-pascal.c: Likewise.
7236	* format-perl.c: Likewise.
7237	* format-perl-brace.c: Likewise.
7238	* format-php.c: Likewise.
7239	* format-python.c: Likewise.
7240	* format-tcl.c: Likewise.
7241	* format-ycp.c: Likewise.
7242	* po-lex.h: Likewise.
7243	* read-properties.c: Likewise.
7244	* write-po.c: Likewise.
7245	* x-awk.c: Likewise.
7246	* x-c.c: Likewise.
7247	* x-perl.c: Likewise.
7248	* x-python.c: Likewise.
7249	* x-rst.c: Likewise.
7250	* hostname.c: Include error-progname.h.
7251	* msgattrib.c: Likewise.
7252	* msgcat.c: Likewise.
7253	* msgcmp.c: Likewise.
7254	* msgcomm.c: Likewise.
7255	* msgconv.c: Likewise.
7256	* msgen.c: Likewise.
7257	* msgexec.c: Likewise.
7258	* msgfilter.c: Likewise.
7259	* msgfmt.c: Likewise.
7260	* msggrep.c: Likewise.
7261	* msginit.c: Likewise.
7262	* msgmerge.c: Likewise.
7263	* msgunfmt.c: Likewise.
7264	* msguniq.c: Likewise.
7265	* urlget.c: Likewise.
7266	* xgettext.c: Likewise.
7267	* po-lex.c: Include error-progname.h and pos.h.
7268
72692003-08-15  Bruno Haible  <bruno@clisp.org>
7270
7271	* msginit.c (catalogname_for_locale): Add entries for Aragonese,
7272	Haitian, Sichuan Yi, Limburgish.
7273	(englishname_of_language): Likewise.
7274
72752003-08-08  Bruno Haible  <bruno@clisp.org>
7276
7277	* format-gcc-internal.c: New file.
7278	* message.h (format_gcc_internal): New enum value.
7279	(NFORMATS): Increment.
7280	* format.h (formatstring_gcc_internal): New declaration.
7281	* format.c (formatstring_parsers): Add entry for gcc_internal.
7282	* message.c (format_language, format_language_pretty): Likewise.
7283	* x-c.h (SCANNERS_C): Add an entry for GCC-source.
7284	* xgettext.c (usage): Mention GCC-source language.
7285	* Makefile.am (FORMAT_SOURCE): Add format-gcc-internal.c.
7286	* Makefile.msvc (OBJECTS): Add format-gcc-internal.obj.
7287	(format-gcc-internal.obj): New rule.
7288	* Makefile.vms (OBJECTS): Add format-gcc-internal.obj.
7289	(format-gcc-internal.obj): New rule.
7290
72912003-08-04  Bruno Haible  <bruno@clisp.org>
7292
7293	* x-perl.c (extract_quotelike_pass3): Fix \x handling.
7294	Reported by Guido Flohr.
7295
72962003-07-05  Bruno Haible  <bruno@clisp.org>
7297
7298	* format-perl-brace.c: Renamed from format-perl-bracket.c. Recognize
7299	braces instead of brackets.
7300	* format.h (formatstring_perl_brace): Renamed from
7301	formatstring_perl_bracket.
7302	* format.c (formatstring_parsers): Add formatstring_perl_brace, remove
7303	formatstring_perl_bracket.
7304	* message.h (enum format_type): Add format_perl_brace, remove
7305	format_perl_bracket.
7306	* message.c (format_language, format_language_pretty): Update.
7307	* x-perl.h (SCANNERS_PERL): Update.
7308	* Makefile.am (FORMAT_SOURCE): Add format-perl-brace.c, remove
7309	format-perl-bracket.c.
7310	* Makefile.msvc (OBJECTS): Add format-perl-brace.obj, remove
7311	format-perl-bracket.obj.
7312	(format-perl-brace.obj): Renamed from format-perl-bracket.obj.
7313	* Makefile.vms (OBJECTS): Add format-perl-brace.obj, remove
7314	format-perl-bracket.obj.
7315	(format-perl-brace.obj): Renamed from format-perl-bracket.obj.
7316
73172003-07-03  Bruno Haible  <bruno@clisp.org>
7318
7319	Support for PHP >= 4.2.0.
7320	* x-php.c (init_keywords): Add ngettext, dngettext, dcngettext to the
7321	built-in keywords.
7322	Reported by A. Sopicki <a.sopicki@gmx.de>.
7323
73242003-06-27  Bruno Haible  <bruno@clisp.org>
7325
7326	* xgettext.h (from_current_source_encoding): New declaraction.
7327	* xgettext.c (from_current_source_encoding): New function.
7328	(CONVERT_STRING): Use it.
7329	* x-perl.c: Include po-charset.h.
7330	(get_here_document): Convert each line to UTF-8.
7331	(phase2_getc): Convert each comment to UTF-8. Tell xgettext_comment_add
7332	to not convert it.
7333	(extract_quotelike_pass1_utf8): New function.
7334	(extract_quotelike): Use extract_quotelike_pass1_utf8.
7335	(extract_triple_quotelike): Likewise.
7336	(extract_variable): Tell remember_a_message to not convert the string.
7337	(interpolate_keywords): Likewise.
7338	(extract_balanced): Tell remember_a_message, remember_a_message_plural
7339	to not convert the string.
7340
73412003-06-23  Guido Flohr  <guido@imperia.net>
7342
7343	* x-perl.c (extract_quotelike_pass3): Fix handling of doubled
7344	backslashes in single-quoted strings.
7345
73462003-06-23  Bruno Haible  <bruno@clisp.org>
7347
7348	* format-perl-bracket.c (format_check): Allow additional bracketed
7349	items in the msgstr.
7350
73512003-06-22  Bruno Haible  <bruno@clisp.org>
7352
7353	* write-properties.c: Don't include exit.h and gettext.h.
7354
73552003-06-22  Bruno Haible  <bruno@clisp.org>
7356
7357	* x-php.c (phase3_ungetc): Comment out unused function.
7358
73592003-06-21  Bruno Haible  <bruno@clisp.org>
7360
7361	* format-perl.c: Complete rewrite.
7362	* format-perl-bracket.c: New file.
7363	* message.h (format_perl_bracket): New enum value.
7364	(NFORMATS): Increment.
7365	* format.h (formatstring_perl_bracket): New declaration.
7366	* format.c (formatstring_parsers): Add entry for perl_bracket.
7367	* message.c (format_language, format_language_pretty): Likewise.
7368	* x-perl.h (SCANNERS_PERL): Use formatstring_perl and
7369	formatstring_perl_bracket.
7370	* Makefile.am (FORMAT_SOURCE): Add format-perl-bracket.c.
7371	* Makefile.msvc (OBJECTS): Add format-perl.obj,format-perl-bracket.obj.
7372	(xgettext_OBJECTS): Add x-perl.obj.
7373	(format-perl.obj, format-perl-bracket.obj, x-perl.obj): New rules.
7374	* Makefile.vms (OBJECTS): Add format-perl.obj, format-perl-bracket.obj.
7375	(xgettext_OBJECTS): Add x-perl.obj.
7376	(format-perl.obj, format-perl-bracket.obj, x-perl.obj): New rules.
7377
7378	* x-perl.c (extract_quotelike_pass3): Don't give an invalid
7379	interpolation error for a backslashed dollar sign.
7380
73812003-06-21  Bruno Haible  <bruno@clisp.org>
7382
7383	* x-perl.c (extract_quotelike_pass3): Fix handling of double backslash.
7384
73852003-06-19  Bruno Haible  <bruno@clisp.org>
7386
7387	* x-perl.c (enum string_type_ty): Remove trailing comma.
7388	(interpolate_keywords::enum parser_state): Likewise.
7389	(extract_quotelike_pass3): Cast first argument of u8_uctomb().
7390
73912003-06-15  Bruno Haible  <bruno@clisp.org>
7392
7393	* x-awk.c: Reorder definitions.
7394	* x-c.c: Reorder definitions.
7395	* x-perl.c: Reorder definitions.
7396	* x-php.c: Reorder definitions.
7397	* x-python.c: Reorder definitions.
7398	* x-smalltalk.c: Reorder definitions.
7399	* x-ycp.c: Reorder definitions.
7400
74012003-06-15  Bruno Haible  <bruno@clisp.org>
7402
7403	* x-perl.c (struct stack_entry): Remove type.
7404	(struct stack): Remove type.
7405	(struct token_stack_ty): New type.
7406	(token_stack): Change type to 'struct token_stack_ty'.
7407	(token_stack_dump): Renamed from stack_dump. Update.
7408	(token_stack_push): Renamed from stack_unshift. Rewritten.
7409	(token_stack_pop): Renamed from stack_shift. Rewritten.
7410	(token_stack_peek): Renamed from stack_head. Rewritten.
7411	(token_stack_free): Renamed from stack_free. Rewritten.
7412	(x_perl_lex, x_perl_unlex, extract_perl): Update.
7413
74142003-06-15  Bruno Haible  <bruno@clisp.org>
7415
7416	* x-perl.c (DEBUG_MEMORY): Remove macro.
7417	(remember_a_message_debug, remember_a_message_plural_debug,
7418	xmalloc_debug, xrealloc_debug, xrealloc_static_debug, xstrdup_debug,
7419	free_debug): Remove functions.
7420	(xrealloc_static): Remove macro. Use xrealloc instead.
7421
74222003-06-15  Bruno Haible  <bruno@clisp.org>
7423
7424	* x-awk.c (phase2_getc, x_awk_lex): Increase bufmax proportionally.
7425	* x-c.c (comment_add, comment_line_end, phase5_get, phase6_get):
7426	Likewise.
7427	* x-elisp.c (comment_add, comment_line_end): Likewise.
7428	* x-librep.c (comment_add, comment_line_end): Likewise.
7429	* x-lisp.c (comment_add, comment_line_end): Likewise.
7430	* x-php.c (comment_add, comment_line_end, x_php_lex): Likewise.
7431	* x-python.c (comment_add, comment_line_end, phase5_get): Likewise.
7432	* x-rst.c (extract_rst): Likewise.
7433	* x-smalltalk.c (comment_add, comment_line_end, phase2_get): Likewise.
7434	* x-tcl.c (comment_add, comment_line_end): Likewise.
7435	* x-ycp.c (phase2_getc, x_ycp_lex): Likewise.
7436
74372003-06-15  Bruno Haible  <bruno@clisp.org>
7438
7439	* xgettext.c (current_formatstring_parser1,
7440	current_formatstring_parser2): New variables, replacing
7441	current_formatstring_parser.
7442	(remember_a_message, remember_a_message_plural): Try both
7443	formatstring parsers.
7444	(language_to_extractor): Allow two formatstring parsers per language,
7445	not just one.
7446	* x-perl.h (SCANNERS_PERL): Add formatstring_c as secondary format
7447	string parser.
7448	* x-awk.h (SCANNERS_AWK): Update.
7449	* x-c.h (SCANNERS_C): Update.
7450	* x-elisp.h (SCANNERS_ELISP): Update.
7451	* x-glade.h (SCANNERS_GLADE): Update.
7452	* x-java.h (SCANNERS_JAVA): Update.
7453	* x-librep.h (SCANNERS_LIBREP): Update.
7454	* x-lisp.h (SCANNERS_LISP): Update.
7455	* x-php.h (SCANNERS_PHP): Update.
7456	* x-po.h (SCANNERS_PO): Update.
7457	* x-properties.h (SCANNERS_PROPERTIES): Update.
7458	* x-python.h (SCANNERS_PYTHON): Update.
7459	* x-rst.h (SCANNERS_RST): Update.
7460	* x-smalltalk.h (SCANNERS_SMALLTALK): Update.
7461	* x-tcl.h (SCANNERS_TCL): Update.
7462	* x-ycp.h (SCANNERS_YCP): Update.
7463
74642003-06-15  Bruno Haible  <bruno@clisp.org>
7465
7466	* x-perl.c (case_whitespace): New macro.
7467	(is_whitespace): New function.
7468	(interpolate_keywords): Add lineno argument. Track newlines to update
7469	lineno while processing the string. Use is_whitespace.
7470	(extract_triple_quotelike): Update. Use is_whitespace.
7471	(extract_variable): Simplify: add final NUL byte only when done. Use
7472	is_whitespace.
7473	(x_perl_prelex): Use is_whitespace. After reading a here document, use
7474	line_number+1, not line_number. Fix buffer overrun in <<XYZ handling.
7475	(collect_message): Use is_whitespace.
7476	(extract_balanced): Call free_token at the end of the loop, not at the
7477	beginning.
7478
74792003-06-14  Bruno Haible  <bruno@clisp.org>
7480
7481	* x-perl.c (enum token_type_ty): Reorder, so as to simplify the
7482	function free_token().
7483	(struct token_ty): Fix comments.
7484	(token2string): Add const.
7485	(token_stack): Make static.
7486	(*_debug, stack_dump): Remove all fflushs.
7487	(linebuf, linesize, linepos, linebuf_size, last_token, here_eaten,
7488	end_of_file): Make static.
7489	(last_string, last_string_finished): Remove unused variables.
7490	(phase1_getc, get_here_document, skip_pod): Test getline() result
7491	for being < 0, not == EOF.
7492	(phase1_ungetc): Signal internal error through abort(), not exit().
7493	(get_here_document): Tweak. Increase bufmax proportionally.
7494	(phase2_getc): Increase bufmax proportionally.
7495	(prefer_division_over_regexp): Fix comment.
7496	(extract_hex, extract_oct): Add const. Simplify.
7497	(extract_quotelike): Add a safety check.
7498	(extract_quotelike_pass1): Increase bufmax proportionally. Fix
7499	insufficient memory allocation at "bufpos + len >= bufmax".
7500	(extract_quotelike_pass3): Increase bufmax proportionally. Make crs
7501	const. After \x{ABC} position crs after the closing brace. Simplify \c
7502	code. Reduce memory allocation when \N{ABC} is seen. Fix bug in \l and
7503	\u. Fix error message when $ or @ is seen.
7504	(extract_variable): Increase bufmax proportionally.
7505	(interpolate_keywords): Likewise. Convert c's value to unsigned char.
7506	(x_perl_prelex): Increase bufmax proportionally. Compute 4th argument
7507	to extract_triple_quotelike completely.
7508	(extract_perl): Initialize token_stack correctly.
7509
75102003-06-13  Bruno Haible  <bruno@clisp.org>
7511
7512	* msgexec.c (process_string): Pass null_stderr=false.
7513	* msgfilter.c (process_string): Likewise.
7514	* msggrep.c (is_string_selected): Likewise.
7515	* read-java.c (execute_and_read_po_output): Likewise.
7516	* read-tcl.c (msgdomain_read_tcl): Likewise.
7517	* msginit.c (project_id, project_id_version, get_user_email,
7518	language_team_address): Return a default value if the subprocess
7519	fails, instead of exiting.
7520
75212003-06-12  Bruno Haible  <bruno@clisp.org>
7522
7523	* Makefile.am (noinst_HEADERS): Add x-perl.h.
7524	(FORMAT_SOURCE): Add format-perl.c.
7525	(xgettext_SOURCES): Add x-perl.c.
7526	* message.h (enum format_type): Mention perl between tcl and php.
7527	* message.c (format_language, format_language_pretty): Likewise.
7528	* format.h (formatstring_perl): Likewise.
7529	* format.c (formatstring_parsers): Likewise.
7530	* format-perl.c: Use GNU coding style. Prefer xmalloc over xcalloc.
7531	* x-perl.h: Assume ANSI C.
7532	* x-perl.c: Assume ANSI C. Use GNU coding style. Prefer xmalloc over
7533	xcalloc.
7534	(token_buf): Remove unused variable.
7535	(xcalloc_debug, stack_push, stack_pop): Remove unused functions.
7536	* xgettext.c: Mention perl between tcl and php.
7537
75382003-06-11  Guido Flohr  <guido@imperia.net>
7539
7540	* message.h (enum format_type): New enum value 'format_perl'.
7541	(NFORMATS): Increment.
7542	* message.c (format_language, format_language_pretty): Add entry
7543	for perl.
7544	* format.h (formatstring_perl): New declaration.
7545	* format-perl.c: New file.
7546	* format.c (formatstring_parsers): Add entry for perl.
7547	* x-perl.h: New file.
7548	* x-perl.c: New file.
7549	* xgettext.c: Include x-perl.h.
7550	(main): Call x_perl_extract_all, x_perl_keyword.
7551	(usage): Mention Perl language.
7552	(language_to_extractor): Add Perl rule.
7553	(extension_to_language): Add Perl rule.
7554
75552003-06-08  Bruno Haible  <bruno@clisp.org>
7556
7557	* Makefile.vms (LDADD): Take options from .opt files.
7558	(libiconv.opt): New rule.
7559	(msgcmp.exe, msgfmt.exe, msgmerge.exe, msgunfmt.exe, xgettext.exe,
7560	msgattrib.exe, msgcat.exe, msgcomm.exe, msgconv.exe, msgen.exe,
7561	msgexec.exe, msgfilter.exe, msggrep.exe, msginit.exe, msguniq.exe):
7562	Depend on it.
7563	* plural-eval.c: Include "eval-plural.h" without a path, rely on the
7564	Makefile's -I options instead.
7565	* read-properties.c (conv_from_java): Change type of q to
7566	'unsigned char *'.
7567	Reported by Jouk Jansen <joukj@hrem.stm.tudelft.nl>.
7568
75692003-05-27  Bruno Haible  <bruno@clisp.org>
7570
7571	* plural-table.c (plural_table): Correct entry for Slovak.
7572	Reported by Marcel Telka <marcel@telka.sk>.
7573
75742003-05-24  Bruno Haible  <bruno@clisp.org>
7575
7576	* x-glade.h (EXTENSIONS_GLADE): Also recognize the .glade2 extension.
7577	* x-glade.c (start_element_handler): Also extract strings according to
7578	Glade 2 conventions.
7579
75802003-05-22  Bruno Haible  <bruno@clisp.org>
7581
7582	* gettext-0.12.1 released.
7583
75842003-05-21  Bruno Haible  <bruno@clisp.org>
7585
7586	* msggrep.c (main) [Solaris]: Fix syntax error.
7587	Reported by Valery Beaud <valery.beaud@art.alcatel.fr>.
7588
75892003-05-21  Bruno Haible  <bruno@clisp.org>
7590
7591	* xgettext.c (output_syntax): New variable.
7592	(main): Set it.
7593	(finalize_header): If --properties-output was given, set the charset.
7594
75952003-05-18  Bruno Haible  <bruno@clisp.org>
7596
7597	* Makefile.msvc (DEBUGFLAGS): New variable.
7598	(gettextsrc.lib): Use it.
7599	(msgcmp.exe, msgfmt.exe, msgmerge.exe, msgunfmt.exe, xgettext.exe,
7600	msgattrib.exe, msgcat.exe, msgcomm.exe, msgconv.exe, msgen.exe,
7601	msgexec.exe, msgfilter.exe, msggrep.exe, msginit.exe, msguniq.exe):
7602	Use it, and MFLAGS too.
7603
76042003-05-17  Bruno Haible  <bruno@clisp.org>
7605
7606	* gettext-0.12 released.
7607
76082003-05-17  Bruno Haible  <bruno@clisp.org>
7609
7610	* Makefile.msvc (msgcmp.exe, msgfmt.exe, msgmerge.exe, msgunfmt.exe,
7611	msgattrib.exe, msgcat.exe, msgcomm.exe, msgconv.exe, msgen.exe,
7612	msgexec.exe, msgfilter.exe, msggrep.exe, msginit.exe, msguniq.exe):
7613	Link with iconv.lib, needed by intl.lib.
7614
76152003-05-12  Bruno Haible  <bruno@clisp.org>
7616
7617	* msginit.c (F_OK): Provide a fallback value.
7618	Reported by Perry Rapp.
7619
76202003-05-10  Bruno Haible  <bruno@clisp.org>
7621
7622	* msgl-iconv.c (iconv_string): Don't return -1 just because the string
7623	is longer than 4 KB.
7624	Reported by Denis Barbier <barbier@linuxfr.org>.
7625
76262003-05-04  Bruno Haible  <bruno@clisp.org>
7627
7628	* po-lex.h (po_gram_error): Don't use ISO C 99 feature on DEC C.
7629	* po-lex.c (po_gram_error): LIkewise.
7630
76312003-05-03  Bruno Haible  <bruno@clisp.org>
7632
7633	* msgfilter.c: Include <sys/select.h> also on EMX.
7634	Reported by Andreas Buening <andreas.buening@nexgo.de>.
7635
76362003-04-26  Bruno Haible  <bruno@clisp.org>
7637
7638	* message.h (msgdomain_list_ty): Add field 'encoding'.
7639	* message.c (msgdomain_list_alloc): Initialize it.
7640	* read-properties.h: New file.
7641	* read-properties.c: New file.
7642	* read-po-abstract.h (abstract_po_reader_class_ty): In
7643	directive_message field, add force_fuzzy argument.
7644	(po_scan_start, po_scan_end): Remove declarations.
7645	(input_syntax_ty): New type.
7646	(po_callback_message): Add force_fuzzy argument.
7647	* read-po-abstract.c (call_directive_message, po_callback_message):
7648	Add force_fuzzy argument.
7649	(po_scan_start, po_scan_end): Make static.
7650	(po_scan): Add support for syntax_properties. Move
7651	error_message_count handling to here.
7652	(po_callback_message): Move po_lex_charset_set invocation away.
7653	* read-po.h (default_po_reader_class_ty): In add_message field, add
7654	force_fuzzy argument.
7655	(default_directive_message, default_add_message): Add force_fuzzy
7656	argument.
7657	(inout_syntax): New declaration.
7658	* read-po.c (call_add_message): Add force_fuzzy argument.
7659	(default_directive_message, default_add_message): Likewise.
7660	(input_syntax): New variable.
7661	(read_po): Pass input_syntax to po_scan(). Set mdlp->encoding if
7662	possible.
7663	* po-gram-gen.y: Pass force_fuzzy = false.
7664	(do_callback_message): New function. Move po_lex_charset_set
7665	invocation to here.
7666	* po-lex.c (lex_end): Move error_message_count handling away.
7667	* write-properties.h: New file.
7668	* write-properties.c: New file.
7669	* write-po.h (message_print_syntax_properties): New declaration.
7670	* write-po.c (use_syntax_properties): New variable.
7671	(message_print_syntax_properties): New function.
7672	(msgdomain_list_print_po): New function, extracted from
7673	msgdomain_list_print.
7674	(msgdomain_list_print): Add check for plural forms. Add support for
7675	writing the .properties format.
7676	(extract_po): Renamed from extract.
7677	* write-java.h (msgdomain_write_java): Add canon_encoding argument.
7678	* write-java.c (msgdomain_write_java): Likewise.
7679	* write-tcl.h (msgdomain_write_tcl): Likewise.
7680	* write-tcl.c (msgdomain_write_tcl): Likewise.
7681	* msgl-cat.c (catenate_msgdomain_list): Use mdlp->encoding if there
7682	is no header entry. Set total_mdlp->encoding if possible.
7683	* msgl-iconv.c (iconv_msgdomain_list): Use mdlp->encoding if there
7684	is no header entry. Set mdlp->encoding.
7685	* msgattrib.c (long_options): Add --properties-input/output.
7686	(main): Handle them.
7687	(usage): Document options -P and -p.
7688	* msgcat.c (long_options): Add --properties-input/output.
7689	(main): Handle them. If option -p is used, convert to UTF-8 and
7690	ignore the to_code.
7691	(usage): Document options -P and -p.
7692	* msgcomm.c (long_options): Add --properties-input/output.
7693	(main): Handle them.
7694	(usage): Document options -P and -p.
7695	* msgconv.c (long_options): Add --properties-input/output.
7696	(main): Handle them. If option -p is used, ignore the to_code.
7697	(usage): Document options -P and -p.
7698	* msgen.c (long_options): Add --properties-input/output.
7699	(main): Handle them.
7700	(usage): Document options -P and -p.
7701	* msgfilter.c (long_options): Add --properties-input/output.
7702	(main): Handle them.
7703	(usage): Document options -P and -p.
7704	* msggrep.c (long_options): Add --properties-input/output.
7705	(main): Handle them.
7706	(usage): Document options -P and -p.
7707	* msginit.c (long_options): Add --properties-input/output.
7708	(main): Handle them.
7709	(usage): Document options -P and -p.
7710	* msgmerge.c (long_options): Add --properties-input/output.
7711	(main): Handle them. In update mode, --properties-input implies
7712	--properties-output.
7713	(usage): Document options -P and -p.
7714	(merge): Set result->encoding if possible.
7715	* msguniq.c (long_options): Add --properties-input/output.
7716	(main): Handle them.
7717	(usage): Document options -P and -p.
7718	* msgcmp.c (long_options): Add --properties-input.
7719	(main): Handle it.
7720	(usage): Document option -P.
7721	* msgexec.c (long_options): Add --properties-input.
7722	(main): Handle it.
7723	(usage): Document option -P.
7724	* msgfmt.c (long_options): Add --properties-input.
7725	(main): Handle it. Pass the known canon_encoding to
7726	msgdomain_write_java and msgdomain_write_tcl.
7727	(usage): Document option -P.
7728	(msgfmt_add_message): Add force_fuzzy argument.
7729	(read_po_file_msgfmt): Pass input_syntax to po_scan().
7730	* msgunfmt.c (long_options): Add --properties-output.
7731	(main): Handle it.
7732	(usage): Document option -p.
7733	* x-properties.h: New file.
7734	* x-po.c (extract_add_message): Add force_fuzzy argument.
7735	(extract): Renamed from extract_po. Pass input_syntax to po_scan().
7736	(extract_po): New function.
7737	(extract_properties): New function.
7738	* xgettext.h: Include read-po.h.
7739	* xgettext.c (long_options): Add --properties-output.
7740	(main): Handle it.
7741	(usage): Document options -L JavaProperties and --properties-output.
7742	(exclude_directive_message): Add force_fuzzy argument.
7743	(read_exclusion_file): Pass input_syntax to po_scan().
7744	(table): Add support for .properties format.
7745	* Makefile.am (noinst_HEADERS): Add read-properties.h,
7746	write-properties.h, x-properties.h.
7747	(COMMON_SOURCE): Add read-properties.c.
7748	(libgettextsrc_la_SOURCES): Add write-properties.c.
7749	* Makefile.msvc (OBJECTS): Add read-properties.obj,
7750	write-properties.obj.
7751	(read-properties.obj, write-properties.obj): New rules.
7752	* Makefile.vms (OBJECTS): Add read-properties.obj,
7753	write-properties.obj.
7754	(read-properties.obj, write-properties.obj): New rules.
7755	* FILES: Update.
7756
77572003-04-21  Bruno Haible  <bruno@clisp.org>
7758
7759	* read-po-abstract.h (po_scan_file): Remove declaration.
7760	* read-po-abstract.c (po_scan_file): Remove function.
7761	* read-po.c (read_po_file): Call read_po.
7762	* msgfmt.c (read_po_file_msgfmt): Call open_po_file. Invoke po_scan
7763	instead of po_scan_file.
7764	* xgettext.c (read_exclusion_file): Call open_po_file. Invoke po_scan
7765	instead of po_scan_file.
7766
77672003-04-20  Bruno Haible  <bruno@clisp.org>
7768
7769	* open-po.h (open_po_file): Add argument 'exit_on_error'.
7770	* open-po.c (try_open_po_file): Renamed from open_po_file.
7771	(open_po_file): New function.
7772	* po-lex.h (lex_end): Change return type to void.
7773	(lex_open, lex_close): Remove declarations.
7774	* po-lex.c (lex_end): Change return type to void.
7775	(lex_open, lex_close): Remove functions.
7776	* read-po-abstract.c (po_scan_file): Inline lex_open and lex_close.
7777	Reuse po_scan code.
7778
77792003-04-14  Bruno Haible  <bruno@clisp.org>
7780
7781	* hostname.c (usage): Split strings: use one string per option
7782	description.
7783	* msgattrib.c (usage): Likewise.
7784	* msgcat.c (usage): Likewise.
7785	* msgcmp.c (usage): Likewise.
7786	* msgcomm.c (usage): Likewise.
7787	* msgconv.c (usage): Likewise.
7788	* msgen.c (usage): Likewise.
7789	* msgexec.c (usage): Likewise.
7790	* msgfilter.c (usage): Likewise.
7791	* msgfmt.c (usage): Likewise.
7792	* msggrep.c (usage): Likewise.
7793	* msginit.c (usage): Likewise.
7794	* msgmerge.c (usage): Likewise.
7795	* msgunfmt.c (usage): Likewise.
7796	* msguniq.c (usage): Likewise.
7797	* urlget.c (usage): Likewise.
7798	* xgettext.c (usage): Likewise.
7799
78002003-04-13  Bruno Haible  <bruno@clisp.org>
7801
7802	Unify three PO file parsers.
7803	* read-po-abstract.h: Renamed from po.h.
7804	(abstract_po_reader_class_ty): Renamed from po_method_ty.
7805	(abstract_po_reader_ty): Renamed from po_ty.
7806	(ABSTRACT_PO_READER_TY): Renamed from PO_BASE_TY.
7807	(po_reader_alloc): Renamed from po_alloc.
7808	(po_reader_free): Renamed from po_free.
7809	* read-po-abstract.c: Renamed from po.c.
7810	(po_reader_alloc): Renamed from po_alloc.
7811	(po_reader_free): Renamed from po_free.
7812	(call_parse_brief): Renamed from po_parse_brief.
7813	(call_parse_debrief): Renamed from po_parse_debrief.
7814	(call_directive_domain): Renamed from po_directive_domain.
7815	(call_directive_message): Renamed from po_directive_message.
7816	(call_comment): Renamed from po_comment.
7817	(call_comment_dot): Renamed from po_comment_dot.
7818	(call_comment_filepos): Renamed from po_comment_filepos.
7819	(call_comment_special): Renamed from po_comment_special.
7820	* read-po.h: Include read-po-abstract.h.
7821	(default_po_reader_class_ty, default_po_reader_ty): New types.
7822	(ABSTRACT_PO_READER_TY): New macro.
7823	(default_constructor, default_destructor, default_parse_brief,
7824	default_parse_debrief, default_directive_domain,
7825	default_directive_message, default_comment, default_comment_dot,
7826	default_comment_filepos, default_comment_special, default_set_domain,
7827	default_add_message): New declarations.
7828	(default_po_reader_alloc): New declaration.
7829	* read-po.c (default_po_reader_ty): Renamed from readall_class_ty.
7830	Add fields handle_comments, handle_filepos_comments,
7831	allow_domain_directives, allow_duplicates,
7832	allow_duplicates_if_same_msgstr.
7833	(call_set_domain, call_add_message, call_frob_new_message): New
7834	functions.
7835	(default_constructor): Renamed from readall_constructor. Don't set
7836	this->mdlp and this->mlp.
7837	(default_destructor): Renamed from readall_destructor.
7838	(default_parse_brief): Renamed from readall_parse_brief.
7839	(default_parse_debrief): New function.
7840	(default_copy_comment_state, default_reset_comment_state): New
7841	functions.
7842	(default_directive_domain): Renamed from readall_directive_domain.
7843	Call set_domain method.
7844	(default_directive_message): Renamed from readall_directive_message.
7845	Call add_message method.
7846	(default_comment): Renamed from readall_comment.
7847	(default_comment_dot): Renamed from readall_comment_dot.
7848	(default_comment_filepos): Renamed from readall_comment_filepos.
7849	(default_comment_special): Renamed from readall_comment_special.
7850	(default_set_domain, default_add_message): New functions.
7851	(default_methods): Renamed from readall_methods.
7852	(default_po_reader_alloc): New function.
7853	(read_po, read_po_file): Update.
7854	* msgfmt.c: Include read-po.h instead of po.h.
7855	(msgfmt_po_reader_ty): Renamed from msgfmt_class_ty. Inherit
7856	from default_po_reader_ty.
7857	(main): Drop po_lex_pass_comments call, done by default_parse_brief.
7858	(msgfmt_constructor): Renamed from format_constructor. Call superclass
7859	function.
7860	(msgfmt_parse_debrief): Renamed from format_debrief. Call superclass
7861	function.
7862	(format_directive_domain): Remove function.
7863	(msgfmt_set_domain): New function.
7864	(format_directive_message): Remove function.
7865	(msgfmt_add_message, msgfmt_frob_new_message): New functions.
7866	(msgfmt_comment_special): Renamed from format_comment_special.
7867	(msgfmt_methods): Renamed from format_methods.
7868	(read_po_file_msgfmt): Renamed from read_po_file.
7869	* x-po.c: Include read-po.h instead of po.h.
7870	(extract_class_ty, extract_constructor, extract_directive_domain,
7871	extract_directive_message, extract_parse_brief, extract_comment,
7872	extract_comment_dot, extract_comment_filepos, extract_comment_special):
7873	Remove functions.
7874	(extract_add_message): New function.
7875	(extract_methods): Update.
7876	(extract_po): Update.
7877	* xgettext.c: Include read-po-abstract.h instead of po.h.
7878	(exclude_directive_domain, exclude_directive_message, exclude_methods,
7879	read_exclusion_file): Update.
7880	* msgcmp.c: Don't include po.h.
7881	* msgmerge.c: Likewise.
7882	* po-gram-gen.y: Include read-po-abstract.h instead of po.h.
7883	* po-hash-gen.y: Likewise.
7884	(po_parse_comment_filepos): Renamed from po_hash.
7885	* po-hash.h (po_parse_comment_filepos): Renamed from po_hash.
7886	* Makefile.am (noinst_HEADERS): Remove po.h, add read-po-abstract.h.
7887	(COMMON_SOURCE): Remove po.c, add read-po-abstract.c.
7888	* Makefile.msvc (OBJECTS): Remove po.obj, add read-po-abstract.obj.
7889	(read-po-abstract.obj): Renamed from po.obj.
7890	* Makefile.vms (OBJECTS): Remove po.obj, add read-po-abstract.obj.
7891	(read-po-abstract.obj): Renamed from po.obj.
7892
78932003-04-13  Bruno Haible  <bruno@clisp.org>
7894
7895	* read-po.c (readall_directive_message): Separate accumulation and
7896	reset.
7897	* x-po.c (extract_directive_message): Likewise.
7898
78992003-04-13  Bruno Haible  <bruno@clisp.org>
7900
7901	* write-po.h (message_print_comment, message_print_comment_dot,
7902	message_print_comment_filepos, message_print_comment_flags): New
7903	declarations.
7904	* write-po.c: Reorder functions.
7905	(message_print_comment, message_print_comment_dot,
7906	message_print_comment_filepos, message_print_comment_flags): New
7907	functions, extracted from message_print.
7908	(message_print): Use them.
7909	(message_print_obsolete): Use message_print_comment.
7910
79112003-04-22  Bruno Haible  <bruno@clisp.org>
7912
7913	* plural-table.c (plural_table): Add an entry about Faroese.
7914	Reported by Jacob Sparre Andersen <sparre@crs4.it>.
7915
79162003-04-13  Bruno Haible  <bruno@clisp.org>
7917
7918	* po.h (po_scan_start, po_scan_end): New declarations.
7919	* po.c: Reorder functions.
7920	(po_scan_start, po_scan_end): New functions.
7921	(po_scan, po_scan_file): Use them.
7922
79232003-04-12  Bruno Haible  <bruno@clisp.org>
7924
7925	* Makefile.vms: New variables ABIFLAGS, DEFS. Avoid rules with no
7926	lines. Don't use the force target. Correct wildcard syntax.
7927	Suggested by Jouk Jansen <joukj@hrem.stm.tudelft.nl>.
7928
79292003-04-13  Bruno Haible  <bruno@clisp.org>
7930
7931	* xgettext.c (construct_header): Remove spurious comma.
7932
79332003-03-30  Bruno Haible  <bruno@clisp.org>
7934
7935	* Makefile.vms: New file.
7936	* Makefile.am (EXTRA_DIST): Add Makefile.vms.
7937	(x-java.c): Prepend a few VMS specific lines.
7938	* po-lex.c (mbfile_getc): Change element type of scatchbuf to
7939	'unsigned char'.
7940	* write-java.c (string_hashcode, write_java_string): Cast argument of
7941	u8_mbtouc.
7942	* write-tcl.c (write_tcl_string): Likewise.
7943	* x-python.c (phase7_getuc): Cast argument of unicode_name_character.
7944	* msgfilter.c (write): #undef before redefining it. Needed for VMS.
7945	(select): Likewise.
7946
79472003-03-30  Bruno Haible  <bruno@clisp.org>
7948
7949	* Makefile.am (noinst_HEADERS): Add po-gram-gen2.h.
7950	(BUILT_SOURCES): Add po-gram-gen2.h.
7951	(DISTCLEANFILES): Remove po-gram-gen2.h.
7952	(po-gram-gen2.h): Simplify rule.
7953
79542003-03-17  Bruno Haible  <bruno@clisp.org>
7955
7956	Native Woe32/MSVC support.
7957	* Makefile.msvc: New file.
7958	* Makefile.am (EXTRA_DIST): Add it.
7959	* msgfilter.c: Include <sys/time.h> only if it exists.
7960	(process_string): Mark as NYI on Woe32.
7961	* msgfmt.c (sigjmp_buf, sigsetjmp, siglongjmp): Provide fallback
7962	definitions for Woe32.
7963	* msginit.c: Include <fcntl.h>, for F_OK. Include <pwd.h> only if it
7964	exists.
7965	(get_user_pwd, get_user_fullname): Adapt for when <pwd.h> is missing.
7966	(project_id, project_id_version, get_user_email,
7967	language_team_address): Use DEV_NULL instead of "/dev/null".
7968	* msggrep.c (is_string_selected): Likewise.
7969	* read-java.c (execute_and_read_po_output): Likewise.
7970	* read-tcl.c (msgdomain_read_tcl): Likewise.
7971	* write-mo.c: Include <sys/param.h> only if it exists.
7972
79732003-03-28  Bruno Haible  <bruno@clisp.org>
7974
7975	* msgmerge.c (main): Use copy_file_preserving instead of copy_file.
7976
79772003-03-16  Bruno Haible  <bruno@clisp.org>
7978
7979	* str-list.h (string_list_join): Comment out.
7980	* str-list.c (string_list_join): Comment out.
7981
79822003-03-10  Bruno Haible  <bruno@clisp.org>
7983
7984	* msggrep.c (no_pass): Mention option -C.
7985	(usage): Document option -C completely.
7986	Reported by Martin Quinson <Martin.Quinson@tuxfamily.org>.
7987
79882003-02-28  Bruno Haible  <bruno@clisp.org>
7989
7990	Support for relocatable installation.
7991	* msgattrib.c: Include relocatable.h.
7992	(main): Relocate LOCALEDIR value.
7993	* msgcat.c: Include relocatable.h.
7994	(main): Relocate LOCALEDIR value.
7995	* msgcmp.c: Include relocatable.h.
7996	(main): Relocate LOCALEDIR value.
7997	* msgcomm.c: Include relocatable.h.
7998	(main): Relocate LOCALEDIR value.
7999	* msgconv.c: Include relocatable.h.
8000	(main): Relocate LOCALEDIR value.
8001	* msgen.c: Include relocatable.h.
8002	(main): Relocate LOCALEDIR value.
8003	* msgexec.c: Include relocatable.h.
8004	(main): Relocate LOCALEDIR value.
8005	* msgfilter.c: Include relocatable.h.
8006	(main): Relocate LOCALEDIR value.
8007	* msgfmt.c: Include relocatable.h.
8008	(main): Relocate LOCALEDIR value.
8009	* msggrep.c: Include relocatable.h.
8010	(main): Relocate LOCALEDIR value.
8011	* msginit.c: Include relocatable.h.
8012	(main): Relocate LOCALEDIR value.
8013	(project_id, project_id_version, get_user_email): Relocate LIBDIR
8014	value.
8015	(language_team_address): Relocate LIBDIR and PROJECTSDIR values.
8016	* msgmerge.c: Include relocatable.h.
8017	(main): Relocate LOCALEDIR value.
8018	* msgunfmt.c: Include relocatable.h.
8019	(main): Relocate LOCALEDIR value.
8020	* msguniq.c: Include relocatable.h.
8021	(main): Relocate LOCALEDIR value.
8022	* xgettext.c: Include relocatable.h.
8023	(main): Relocate LOCALEDIR value.
8024	* read-java.c: Include relocatable.h.
8025	(msgdomain_read_java): Relocate GETTEXTJEXEDIR value.
8026	* read-tcl.c: Include relocatable.h.
8027	(msgdomain_read_tcl): Relocate GETTEXTDATADIR value.
8028	* hostname.c: Include relocatable.h.
8029	(main): Relocate LOCALEDIR value. Update copyright year.
8030	* urlget.c: Include relocatable.h.
8031	(main): Relocate LOCALEDIR value. Update copyright year.
8032	(fetch): Relocate GETTEXTJEXEDIR value.
8033	* user-email.in: Relocate $libdir.
8034	* Makefile.am (aliaspath): New variable.
8035	(DEFS): Define LOCALE_ALIAS_PATH.
8036	(msginit_SOURCES): Add .../localealias.c.
8037	(msginit_LDADD): Remove .../localealias.lo.
8038	(msgcmp_CFLAGS, msgfmt_CFLAGS, msgmerge_CFLAGS, msgunfmt_CFLAGS,
8039	xgettext_CFLAGS, msgattrib_CFLAGS, msgcat_CFLAGS, msgcomm_CFLAGS,
8040	msgconv_CFLAGS, msgen_CFLAGS, msgexec_CFLAGS, msgfilter_CFLAGS,
8041	msggrep_CFLAGS, msginit_CFLAGS, msguniq_CFLAGS, hostname_CFLAGS,
8042	urlget_CFLAGS): New variables.
8043	(msgcmp_LDFLAGS, msgfmt_LDFLAGS, msgmerge_LDFLAGS, msgunfmt_LDFLAGS,
8044	xgettext_LDFLAGS, msgattrib_LDFLAGS, msgcat_LDFLAGS, msgcomm_LDFLAGS,
8045	msgconv_LDFLAGS, msgen_LDFLAGS, msgexec_LDFLAGS, msgfilter_LDFLAGS,
8046	msggrep_LDFLAGS, msginit_LDFLAGS, msguniq_LDFLAGS, hostname_LDFLAGS,
8047	urlget_LDFLAGS): New variables.
8048	(install-exec-java-yes): Don't ignore INSTALL_PROGRAM_ENV.
8049	(RELOCATABLE_LIBRARY_PATH, RELOCATABLE_SRC_DIR, RELOCATABLE_BUILD_DIR,
8050	RELOCATABLE_CONFIG_H_DIR): New variables.
8051
80522003-03-13  Bruno Haible  <bruno@clisp.org>
8053
8054	* msggrep.c (main): On Solaris, prefer /usr/xpg4/bin/grep to
8055	/usr/bin/grep. Needed for Solaris 2.8 and 2.9.
8056	Reported by Sven Utcke <utcke@informatik.uni-hamburg.de>.
8057
80582003-03-03  Bruno Haible  <bruno@clisp.org>
8059
8060	* msgen.c (usage): Don't say that the entries are marked fuzzy.
8061	Reported by Karl Eichwalder <ke@suse.de>.
8062
80632003-02-23  Bruno Haible  <bruno@clisp.org>
8064
8065	Improve error messages for invalid format strings.
8066	* format-invalid.h: New file.
8067	* format.h (struct formatstring_parser): Add invalid_reason argument
8068	to 'parse' field.
8069	* format-awk.c: Include c-ctype.h, xerror.h, format-invalid.h.
8070	(format_parse): Add invalid_reason argument.
8071	* format-c.c: Include c-ctype.h, xerror.h, format-invalid.h.
8072	(INVALID_C99_MACRO): New macro.
8073	(format_parse): Add invalid_reason argument.
8074	(get_c99_format_directives): Update.
8075	* format-elisp.c: Include c-ctype.h, xerror.h, format-invalid.h.
8076	(format_parse): Add invalid_reason argument.
8077	* format-java.c: Include xerror.h, format-invalid.h.
8078	(message_format_parse, choice_format_parse, format_parse): Add
8079	invalid_reason argument.
8080	(choice_format_parse): Return false if a choice contains an empty
8081	number part.
8082	* format-librep.c: Include c-ctype.h, xerror.h, format-invalid.h.
8083	(format_parse): Add invalid_reason argument.
8084	* format-lisp.c: Include xerror.h, format-invalid.h.
8085	(check_params, nocheck_params): Add directives, invalid_reason
8086	arguments.
8087	(parse_upto, format_parse): Add invalid_reason argument.
8088	* format-pascal.c: Include xerror.h, format-invalid.h.
8089	(format_parse): Add invalid_reason argument.
8090	* format-php.c: Include c-ctype.h, xerror.h, format-invalid.h.
8091	(format_parse): Add invalid_reason argument.
8092	* format-python.c: Include c-ctype.h, xerror.h, format-invalid.h.
8093	(INVALID_MIXES_NAMED_UNNAMED): New macro.
8094	(format_parse): Add invalid_reason argument.
8095	* format-tcl.c: Include c-ctype.h, xerror.h, format-invalid.h.
8096	(format_parse): Add invalid_reason argument.
8097	* format-ycp.c: Include c-ctype.h, xerror.h, format-invalid.h.
8098	(format_parse): Add invalid_reason argument.
8099	* msgfmt.c (check_pair): Output invalid_reason returned for msgstr.
8100	* msgmerge.c (msgfmt_check_pair_fails): Update.
8101	* xgettext.c (remember_a_message, remember_a_message_plural): Update.
8102	* Makefile.am (FORMAT_SOURCE): Add format-invalid.h.
8103
81042003-02-22  Bruno Haible  <bruno@clisp.org>
8105
8106	* x-python.c (init_keywords): Add u*gettext variants and plural
8107	handling functions added in Python 2.3.
8108
81092003-02-22  Bruno Haible  <bruno@clisp.org>
8110
8111	* Makefile.am (installdirs): Remove dependency, redundant with
8112	automake >= 1.6.
8113
81142003-02-20  Bruno Haible  <bruno@clisp.org>
8115
8116	* Makefile.am (libgettextpo_la_DEPENDENCIES): New variable.
8117	Reported by Jim Meyering <jim@meyering.net>.
8118
81192003-02-19  Bruno Haible  <bruno@clisp.org>
8120
8121	* Makefile.am (xgettext_LDADD): Mention $(LIBUNINAME) before
8122	libgettextsrc.la, not after it. Needed avoid link error on OSF/1 4.0:
8123	libtool produces a link command line that contains "-lc" where a
8124	shared library was used, and on OSF/1 4.0 "-lc" must not be used
8125	before objects that use integer division.
8126
81272003-02-18  Bruno Haible  <bruno@clisp.org>
8128
8129	* message.c (msgdomain_list_free): Uncomment this function.
8130	* Makefile.am (libgettextpo_la_LDFLAGS): Add ../lib/libgettextlib.la.
8131	Needed for Solaris 2.7.
8132
81332003-02-16  Bruno Haible  <bruno@clisp.org>
8134
8135	* msgmerge.c (message_merge): Add support for Report-Msgid-Bugs-To
8136	field.
8137	* xgettext.c (msgid_bugs_address): New variable.
8138	(long_options): Add option --msgid-bugs-address.
8139	(main): Handle option --msgid-bugs-address.
8140	(usage): Document option --msgid-bugs-address.
8141	(construct_header): Add 'Report-Msgid-Bugs-To:' field. Warn if
8142	msgid_bugs_address is empty.
8143
81442003-02-15  Bruno Haible  <bruno@clisp.org>
8145
8146	* user-email.in: Add support for GNOME evolution, OpenOffice and
8147	StarOffice with nonstandard installation directory.
8148
81492003-02-15  Bruno Haible  <bruno@clisp.org>
8150
8151	* msgattrib.c (main): Update year in --version output.
8152	* msgcat.c (main): Likewise.
8153	* msgcmp.c (main): Likewise.
8154	* msgcomm.c (main): Likewise.
8155	* msgconv.c (main): Likewise.
8156	* msgen.c (main): Likewise.
8157	* msgexec.c (main): Likewise.
8158	* msgfilter.c (main): Likewise.
8159	* msgfmt.c (main): Likewise.
8160	* msgunfmt.c (main): Likewise.
8161	* msguniq.c (main): Likewise.
8162	* xgettext.c (main): Likewise.
8163
81642003-02-12  Bruno Haible  <bruno@clisp.org>
8165
8166	Big restructuring.
8167	* gettext.c: Remove file.
8168	* ngettext.c: Remove file.
8169	* Makefile.am (bin_PROGRAMS): Remove gettext, ngettext.
8170	(EXTRA_DIST): Add ChangeLog.0.
8171	(pkgdatadir): Define using 'gettext' instead of @PACKAGE@.
8172	(pkglibdir): Likewise.
8173	(INCLUDES): Refer to intl in gettext-runtime directory.
8174	(gettext_SOURCES, ngettext_SOURCES, gettext_LDADD, ngettext_LDADD):
8175	Remove variables.
8176	(install-exec-local, installdirs-local, uninstall-local,
8177	install-exec-java-yes, installdirs-java-yes, uninstall-java-yes): Use
8178	$(pkglibdir) instead of $(libdir)/$(PACKAGE).
8179	* plural.c: Update for changed directory structure.
8180	* user-email.in: Use 'gettext' instead of @PACKAGE@.
8181
8182
8183See ChangeLog.0 for earlier changes.
8184