12006-11-27  Bruno Haible  <bruno@clisp.org>
2
3	* gettext-0.16.1 released.
4
52006-10-26  Bruno Haible  <bruno@clisp.org>
6
7	* gettext-0.16 released.
8
92006-10-24  Bruno Haible  <bruno@clisp.org>
10
11	* Makefile.am (AM_CPPFLAGS): Add also $(top_srcdir). Needed so that
12	woe32dll/export.h is found while compiling gettextsrc-exports.c in a
13	VPATH build.
14	Reported by Charles Wilson <cygwin@cwilson.fastmail.fm>.
15
162006-10-24  Bruno Haible  <bruno@clisp.org>
17
18	* msgmerge.c (struct definitions_ty): Remove semicolon after
19	gl_lock_define invocation.
20
212006-10-21  Bruno Haible  <bruno@clisp.org>
22
23	* po-error.h (po_error, po_error_at_line): Use format attribute only
24	with gcc >= 3.1.
25
262006-10-21  Bruno Haible  <bruno@clisp.org>
27
28	* msgmerge.c (struct definitions_ty): Use gl_lock_define to declare
29	the findex_init_lock field.
30	(definitions_init): Use gl_lock_init to initialize it, instead of
31	memcpy hack.
32
332006-10-16  Bruno Haible  <bruno@clisp.org>
34
35	Work around automake-1.10 problem described in
36	http://lists.gnu.org/archive/html/bug-automake/2006-08/msg00025.html.
37	* Makefile.am (CXXLINK): Remove variable.
38	(msgmerge_CXXFLAGS): New variable.
39	(libgettextsrc_la_LINK, msgattrib_LINK, msgcat_LINK, msgcomm_LINK,
40	msgconv_LINK, msgen_LINK, msgfilter_LINK, msggrep_LINK, msgmerge_LINK,
41	msguniq_LINK, xgettext_LINK): New variables.
42
432006-10-18  Bruno Haible  <bruno@clisp.org>
44
45	* read-po.h (input_format_po): Mark as DLL_VARIABLE.
46	* read-properties.h (input_format_properties): Likewise.
47	* read-stringtable.h (input_format_stringtable): Likewise.
48	* write-po.h (output_format_po): Likewise.
49	* write-properties.h (output_format_properties): Likewise.
50	* write-stringtable.h (output_format_stringtable): Likewise.
51
522006-10-16  Bruno Haible  <bruno@clisp.org>
53
54	* gettext-po.h.in: Move to ../libgettextpo/.
55	* gettext-po.c: Move to ../libgettextpo/.
56	* Makefile.am (lib_LTLIBRARIES): Remove libgettextpo.la.
57	(nodist_include_HEADERS): Remove variable.
58	(libgettextpo_la_SOURCES, LTV_CURRENT, LTV_REVISION, LTV_AGE,
59	libgettextpo_la_LDFLAGS, libgettextpo_la_DEPENDENCIES,
60	libgettextpo_la_LDFLAGS): Remove variables.
61	(EXTRA_DIST, BUILT_SOURCES, CLEANFILES): Remove gettext-po.h support.
62	(gettext-po.h): Remove rule.
63
642006-10-18  Bruno Haible  <bruno@clisp.org>
65
66	* po-error.h (__attribute__, __format__, __printf__): New macros.
67	(po_error, po_error_at_line): Declare format string argument.
68	* po-lex.h (__attribute__, __format__, __printf__): New macros.
69	(po_gram_error, po_gram_error_at_line): Declare format string argument.
70
71	* msgl-cat.c (catenate_msgdomain_list): Avoid "gcc -Wshadow" warning.
72	* msgl-check.c (formatstring_error_logger): Avoid "gcc
73	-Wmissing-format-attribute" warning.
74	(check_pair): Avoid "gcc -Wshadow" warning.
75
76	* read-stringtable.c (stringtable_parse): Pass a mutable string as
77	msgstr to po_callback_message.
78	* write-po.c (msgdomain_list_print_po): Avoid "gcc -Wwrite-strings"
79	warning.
80	* xgettext.c (remember_a_message_plural): Free a temporary string
81	after use.
82
832006-10-17  Bruno Haible  <bruno@clisp.org>
84
85	* lang-table.c (language_table): Add the most important languages that
86	have an ISO 639-2 code.
87	* msginit.c (catalogname_for_locale): Likewise.
88
892006-10-15  Bruno Haible  <bruno@clisp.org>
90
91	* read-catalog-abstract.h (input_syntax_ty): Remove type.
92	(catalog_input_format): New structure type.
93	(catalog_input_format_ty): New type.
94	(catalog_reader_parse): Change type of input_syntax argument.
95	* read-catalog.h (input_syntax): Remove variable.
96	(read_catalog_stream, read_catalog_file): Add input_syntax argument.
97	* msgl-cat.h: Include read-catalog-abstract.h.
98	(catenate_msgdomain_list): Add input_syntax argument.
99	* read-po.h: New file.
100	* read-po.c: New file, extracted from read-catalog-abstract.c.
101	* msgattrib.c: Include read-po.h, read-properties.h, read-stringtable.h.
102	(main): Change handling of --properties-input, --stringtable-input
103	options. Update read_catalog_file calls.
104	* msgcat.c: Include read-po.h, read-properties.h, read-stringtable.h.
105	(main): Change handling of --properties-input, --stringtable-input
106	options. Update catenate_msgdomain_list call.
107	* msgcmp.c: Include read-po.h, read-properties.h, read-stringtable.h.
108	(main): Change handling of --properties-input, --stringtable-input
109	options. Update compare call.
110	(compare): Add input_syntax argument.
111	* msgcomm.c: Include read-po.h, read-properties.h, read-stringtable.h.
112	(main): Change handling of --properties-input, --stringtable-input
113	options. Update catenate_msgdomain_list call.
114	* msgconv.c: Include read-po.h, read-properties.h, read-stringtable.h.
115	(main): Change handling of --properties-input, --stringtable-input
116	options. Update read_catalog_file call.
117	* msgen.c: Include read-po.h, read-properties.h, read-stringtable.h.
118	(main): Change handling of --properties-input, --stringtable-input
119	options. Update read_catalog_file call.
120	* msgexec.c: Include read-po.h, read-properties.h, read-stringtable.h.
121	(main): Change handling of --properties-input, --stringtable-input
122	options. Update read_catalog_file call.
123	* msgfilter.c: Include read-po.h, read-properties.h, read-stringtable.h.
124	(main): Change handling of --properties-input, --stringtable-input
125	options. Update read_catalog_file call.
126	* msgfmt.c: Include read-po.h, read-properties.h, read-stringtable.h.
127	(main): Change handling of --properties-input, --stringtable-input
128	options. Update read_catalog_file_msgfmt call.
129	(read_catalog_file_msgfmt): Add input_syntax argument.
130	* msggrep.c: Include read-po.h, read-properties.h, read-stringtable.h.
131	(main): Change handling of --properties-input, --stringtable-input
132	options. Update read_catalog_file call.
133	* msginit.c: Include read-po.h, read-properties.h, read-stringtable.h.
134	(main): Change handling of --properties-input, --stringtable-input
135	options. Update read_catalog_file call.
136	* msgl-cat.c (catenate_msgdomain_list): Add input_syntax argument.
137	* msgmerge.c: Include read-po.h, read-properties.h, read-stringtable.h.
138	(main): Change handling of --properties-input, --stringtable-input
139	options. Update merge call.
140	(compendium): Read it in PO syntax.
141	(merge): Add input_syntax argument.
142	* msguniq.c: Include read-po.h, read-properties.h, read-stringtable.h.
143	(main): Change handling of --properties-input, --stringtable-input
144	options. Update catenate_msgdomain_list call.
145	* read-catalog-abstract.c: Don't include po-gram.h, read-properties.h,
146	read-stringtable.h.
147	(catalog_reader_parse): Change type of input_syntax argument. Invoke
148	the parser indirectly.
149	* read-catalog.c (input_syntax): Remove variable.
150	(read_catalog_stream, read_catalog_file): Add input_syntax argument.
151	* read-csharp.c: Include read-po.h.
152	(execute_and_read_po_output): Update read_catalog_stream call.
153	* read-java.c: Include read-po.h.
154	(execute_and_read_po_output): Update read_catalog_stream call.
155	* read-properties.c (properties_parse): Make static.
156	(input_format_properties): New variable.
157	* read-properties.h (properties_parse): Remove declaration.
158	(input_format_properties): New declaration.
159	* read-resources.c: Include read-po.h.
160	(execute_and_read_po_output): Update read_catalog_stream call.
161	* read-stringtable.c (stringtable_parse): Make static.
162	(input_format_stringtable): New variable.
163	* read-stringtable.h (stringtable_parse): Remove declaration.
164	(input_format_stringtable): New declaration.
165	* read-tcl.c: Include read-po.h.
166	(msgdomain_read_tcl): Update read_catalog_stream call.
167	* x-po.c: Include read-po.h, read-properties.h, read-stringtable.h.
168	(extract): Change type of input_syntax argument.
169	(extract_po, extract_properties, extract_stringtable): Update.
170	* xgettext.c: Include read-po.h.
171	(read_exclusion_file): Read it in PO syntax.
172	* gettext-po.c: Include read-po.h.
173	(po_file_read_v3, po_file_read_v2, po_file_read): Update
174	read_catalog_stream call.
175	* Makefile.am (noinst_HEADERS): Add read-po.h.
176	(COMMON_SOURCE): Add read-po.c.
177
1782006-10-15  Bruno Haible  <bruno@clisp.org>
179
180	* read-catalog-abstract.h (abstract_catalog_reader_ty): Renamed from
181	abstract_po_reader_ty.
182	(abstract_catalog_reader_class_ty): Renamed from
183	abstract_po_reader_class_ty. Update.
184	(ABSTRACT_CATALOG_READER_TY): Renamed from ABSTRACT_PO_READER_TY.
185	Update.
186	(abstract_catalog_reader_ty): Renamed from abstract_po_reader_ty.
187	Update.
188	(catalog_reader_alloc): Renamed from po_reader_alloc.
189	(catalog_reader_parse): Renamed from po_scan.
190	(catalog_reader_free): Renamed from po_reader_free.
191	* read-catalog.h: Update.
192	(default_catalog_reader_class_ty): Renamed from
193	default_po_reader_class_ty.
194	(DEFAULT_CATALOG_READER_TY): Renamed from DEFAULT_PO_READER_TY. Update.
195	(default_catalog_reader_ty): Renamed from default_po_reader_ty. Update.
196	(default_constructor, default_destructor, default_parse_brief,
197	default_parse_debrief, default_directive_domain,
198	default_directive_message, default_comment, default_comment_dot,
199	default_comment_filepos, default_comment_special, default_set_domain,
200	default_add_message): Update.
201	(default_catalog_reader_alloc): Renamed from default_po_reader_alloc.
202	Update.
203	(read_catalog_stream): Renamed from read_po.
204	(read_catalog_file): Renamed from read_po_file.
205	* open-catalog.h (open_catalog_file): Renamed from open_po_file.
206	* msgattrib.c: Update.
207	(main): Update.
208	* msgcat.c: Update.
209	* msgcmp.c: Update.
210	(compare): Update.
211	* msgcomm.c: Update.
212	* msgconv.c: Update.
213	(main): Update.
214	* msgen.c: Update.
215	(main): Update.
216	* msgexec.c: Update.
217	(main): Update.
218	* msgfilter.c: Update.
219	(main): Update.
220	* msgfmt.c: Update.
221	(read_catalog_file_msgfmt): Renamed from read_po_file_msgfmt. Update.
222	(main): Update.
223	(msgfmt_catalog_reader_ty): Renamed from msgfmt_po_reader_ty. Update.
224	(msgfmt_constructor, msgfmt_parse_debrief, msgfmt_set_domain,
225	msgfmt_add_message, msgfmt_frob_new_message, msgfmt_comment_special,
226	msgfmt_methods): Update.
227	(read_catalog_file_msgfmt): Renamed from read_po_file_msgfmt. Update.
228	* msggrep.c: Update.
229	(main): Update.
230	* msginit.c: Update.
231	(main): Update.
232	* msgl-cat.c: Update.
233	(catenate_msgdomain_list): Update.
234	* msgmerge.c: Update.
235	(compendium, merge): Update.
236	* msguniq.c: Update.
237	* open-catalog.c: Update.
238	(try_open_catalog_file): Renamed from try_open_po_file.
239	(open_catalog_file): Renamed from open_po_file. Update.
240	* po-gram-gen.y: Update.
241	* read-catalog-abstract.c: Update.
242	(callback_arg): Update.
243	(catalog_reader_alloc): Renamed from po_reader_alloc.
244	(catalog_reader_free): Renamed from po_reader_free.
245	(call_parse_brief, call_parse_debrief, call_directive_domain,
246	call_directive_message, call_comment, call_comment_dot,
247	call_comment_filepos, call_comment_special): Update.
248	(parse_start): Renamed from po_scan_start.
249	(parse_end): Renamed from po_scan_end.
250	(catalog_reader_parse): Renamed from po_scan.
251	* read-catalog.c: Update.
252	(call_set_domain, call_add_message, call_frob_new_message): Update.
253	(default_constructor, default_destructor, default_parse_brief,
254	default_parse_debrief, default_copy_comment_state,
255	default_reset_comment_state, default_directive_domain,
256	default_directive_message, default_comment, default_comment_dot,
257	default_comment_filepos, default_comment_special, default_set_domain,
258	default_add_message, default_methods): Update.
259	(default_catalog_reader_alloc): Renamed from default_po_reader_alloc.
260	(read_catalog_stream): Renamed from read_po. Update.
261	(read_catalog_file): Renamed from read_po_file. Update.
262	* read-csharp.c: Update.
263	(execute_and_read_po_output): Update.
264	* read-java.c: Update.
265	(execute_and_read_po_output): Update.
266	* read-properties.c: Update.
267	(properties_parse): Update.
268	* read-properties.h: Update.
269	(properties_parse): Update.
270	* read-resources.c: Update.
271	(execute_and_read_po_output): Update.
272	* read-stringtable.c: Update.
273	(stringtable_parse): Update.
274	* read-stringtable.h: Update.
275	(stringtable_parse): Update.
276	* read-tcl.c: Update.
277	(msgdomain_read_tcl): Update.
278	* x-po.c: Update.
279	(extract_add_message, extract_methods, extract): Update.
280	* xgettext.c: Update.
281	(exclude_directive_domain, exclude_directive_message, exclude_methods,
282	read_exclusion_file): Update.
283	* xgettext.h: Update.
284	* gettext-po.c: Update.
285	(po_file_read_v3, po_file_read_v2, po_file_read): Update.
286
287	* read-catalog-abstract.h: Renamed from read-po-abstract.h.
288	* read-catalog-abstract.c: Renamed from read-po-abstract.c.
289	* read-catalog.h: Renamed from read-po.h.
290	* read-catalog.c: Renamed from read-po.c.
291	* open-catalog.h: Renamed from open-po.h.
292	* open-catalog.c: Renamed from open-po.c.
293	* Makefile.am (noinst_HEADERS, COMMON_SOURCE, libgettextsrc_la_SOURCES):
294	Update.
295
2962006-10-15  Bruno Haible  <bruno@clisp.org>
297
298	* write-catalog.h: New file.
299	* write-catalog.c: New file, mostly extracted from write-po.c.
300	* write-po.h (message_page_width_set): Move declaration to
301	write-catalog.h.
302	(message_print_syntax_properties, message_print_syntax_stringtable):
303	Remove declarations.
304	(msgdomain_list_print): Move out to write-catalog.h, adding a
305	catalog_output_format_ty argument.
306	(msgdomain_list_sort_by_msgid, msgdomain_list_sort_by_filepos): Move
307	out to write-catalog.h.
308	(output_format_po): New declaration.
309	* write-po.c: Don't include fwriteerror.h, error-progname.h.
310	(page_width, message_page_width_set): Move out to write-catalog.c.
311	(use_syntax_properties): Remove variable.
312	(message_print_syntax_properties): Remove function.
313	(use_syntax_stringtable): Remove variable.
314	(message_print_syntax_stringtable): Remove function.
315	(wrap, message_print, message_print_obsolete, msgdomain_list_print_po):
316	Add page_width argument.
317	(msgdomain_list_print): Move out to write-catalog.c, adding a
318	catalog_output_format_ty argument.
319	(cmp_by_msgid, msgdomain_list_sort_by_msgid,
320	cmp_filepos, msgdomain_list_sort_filepos,
321	cmp_by_filepos, msgdomain_list_sort_by_filepos): Move out to
322	write-catalog.c.
323	(output_format_po): New variable.
324	* write-properties.h (msgdomain_list_print_properties): Remove
325	declaration.
326	(output_format_properties): New declaration.
327	* write-properties.c (msgdomain_list_print_properties): Make static.
328	(output_format_properties): New variable.
329	* write-stringtable.h (msgdomain_list_print_stringtable): Remove
330	declaration.
331	(output_format_stringtable): New declaration.
332	* write-stringtable.c (msgdomain_list_print_stringtable): Make static.
333	(output_format_stringtable): New variable.
334	* msgattrib.c: Include write-catalog.h, write-properties.h,
335	write-stringtable.h.
336	(main): Change handling of --properties-output, --stringtable-output
337	options. Pass the output_syntax to msgdomain_list_print.
338	* msgcat.c: Include write-catalog.h, write-properties.h,
339	write-stringtable.h.
340	(main): Change handling of --properties-output, --stringtable-output
341	options. Pass the output_syntax to msgdomain_list_print.
342	* msgcomm.c: Include write-catalog.h, write-properties.h,
343	write-stringtable.h.
344	(main): Change handling of --properties-output, --stringtable-output
345	options. Pass the output_syntax to msgdomain_list_print.
346	* msgconv.c: Include write-catalog.h, write-properties.h,
347	write-stringtable.h.
348	(main): Change handling of --properties-output, --stringtable-output
349	options. Pass the output_syntax to msgdomain_list_print.
350	* msgen.c: Include write-catalog.h, write-properties.h,
351	write-stringtable.h.
352	(main): Change handling of --properties-output, --stringtable-output
353	options. Pass the output_syntax to msgdomain_list_print.
354	* msgfilter.c: Include write-catalog.h, write-properties.h,
355	write-stringtable.h.
356	(main): Change handling of --properties-output, --stringtable-output
357	options. Pass the output_syntax to msgdomain_list_print.
358	* msggrep.c: Include write-catalog.h, write-properties.h,
359	write-stringtable.h.
360	(main): Change handling of --properties-output, --stringtable-output
361	options. Pass the output_syntax to msgdomain_list_print.
362	* msginit.c: Include write-catalog.h, write-properties.h,
363	write-stringtable.h.
364	(main): Change handling of --properties-output, --stringtable-output
365	options. Pass the output_syntax to msgdomain_list_print.
366	* msgmerge.c: Include write-catalog.h, write-properties.h,
367	write-stringtable.h.
368	(main): Change handling of --properties-output, --stringtable-output
369	options. Pass the output_syntax to msgdomain_list_print.
370	* msgunfmt.c: Include write-catalog.h, write-properties.h,
371	write-stringtable.h.
372	(main): Change handling of --properties-output, --stringtable-output
373	options. Pass the output_syntax to msgdomain_list_print.
374	* msguniq.c: Include write-catalog.h, write-properties.h,
375	write-stringtable.h.
376	(main): Change handling of --properties-output, --stringtable-output
377	options. Pass the output_syntax to msgdomain_list_print.
378	* xgettext.c: Include write-catalog.h, write-properties.h,
379	write-stringtable.h.
380	(output_syntax): Change type to catalog_output_format_ty.
381	(main): Update. Pass the output_syntax to msgdomain_list_print.
382	(finalize_header): Update.
383	* gettext-po.c: Include write-catalog.h.
384	(po_file_write): Specify PO syntax.
385	* Makefile.am (noinst_HEADERS): Add write-catalog.h.
386	(libgettextsrc_la_SOURCES): Add write.catalog.c.
387
3882006-10-05  Bruno Haible  <bruno@clisp.org>
389
390	* lang-table.c (language_table): Add Adangme, Kashubian. Fix the
391	names of Western Frisian, Marshallese, Sinhala.
392	* msginit.c (catalogname_for_locale): Add entries for Kashubian,
393	Western Frisian, South Ndebele. Change entry for Serbian from sr_CS to
394	sr_RS.
395
3962006-10-06  Bruno Haible  <bruno@clisp.org>
397
398	* write-java.c (msgdomain_write_java): Use fopen_temp, fwriteerror_temp
399	instead of fopen, fwriteerror.
400	* write-csharp.c (msgdomain_write_csharp): Likewise.
401
4022006-10-06  Bruno Haible  <bruno@clisp.org>
403
404	* Makefile.am (LTV_CURRENT, LTV_REVISION, LTV_AGE): Bump to 3:0:3.
405
4062006-10-03  Bruno Haible  <bruno@clisp.org>
407
408	* message.h (struct message_ty): New fields prev_msgctxt, prev_msgid,
409	prev_msgid_plural.
410	* message.c (message_alloc): Initialize the prev_msg* fields.
411	(message_free): Free the prev_msg* fields.
412	(message_copy): Copy the prev_msg* fields.
413	* msgl-ascii.c (is_ascii_message): Consider also the prev_msg* fields.
414	* msgl-cat.c (catenate_msgdomain_list): Copy the prev_msg* fields if
415	a message is copied, not merged.
416	* msgl-equal.c (message_equal): Consider also the prev_msg* fields.
417	* msgl-iconv.c (convert_prev_msgid): New function.
418	(iconv_message_list): Call it.
419	iconvable_prev_msgid): New function.
420	(is_message_list_iconvable): Call it.
421
422	* po-lex.c (po_lex_previous): New variable.
423	(lex_start, lex_end): Reset it.
424	(keyword_p): Test it. New return values PREV_MSGID, PREV_MSGID_PLURAL,
425	PREV_MSGCTXT.
426	(po_gram_lex): Recognize #| and #~| syntax. New return value
427	PREV_STRING.
428	* po-gram-gen.y (do_callback_message): Add prev_msgctxt, prev_msgid,
429	prev_msgid_plural arguments.
430	(free_message_intro): New macro.
431	(PREV_MSGCTXT, PREV_MSGID, PREV_MSGID_PLURAL, PREV_STRING): New tokens.
432	(prev, message_intro): New structures.
433	(po_file): Renamed from msgfmt.
434	(message): Pass prev_* fields around. Call free_message_intro.
435	(message_intro, prev): New rules.
436	(msg_intro): Renamed from message_intro.
437	(prev_msg_intro, prev_msgid_pluralform, prev_string_list): New rules.
438	* read-po-abstract.h (struct abstract_po_reader_class_ty): Add
439	prev_msgctxt, prev_msgid, prev_msgid_plural arguments to the
440	'directive_message' method.
441	(po_callback_message): Add prev_msgctxt, prev_msgid,
442	prev_msgid_plural arguments.
443	* read-po-abstract.c (call_directive_message, po_callback_message): Add
444	prev_msgctxt, prev_msgid, prev_msgid_plural arguments.
445	* read-po.h (struct default_po_reader_class_ty): Add prev_msgctxt,
446	prev_msgid, prev_msgid_plural arguments to the 'add_message' method.
447	(default_directive_message, default_add_message): Add prev_msgctxt,
448	prev_msgid, prev_msgid_plural arguments.
449	* read-po.c (call_add_message, default_directive_message,
450	default_add_message): Add prev_msgctxt, prev_msgid, prev_msgid_plural
451	arguments.
452	* read-properties.c (properties_parse): Update.
453	* read-stringtable.c (stringtable_parse): Update.
454	* xgettext.c (exclude_directive_message): Add prev_msgctxt, prev_msgid,
455	prev_msgid_plural arguments.
456	* x-po.c (extract_add_message): Add prev_msgctxt, prev_msgid,
457	prev_msgid_plural arguments.
458
459	* write-po.c (wrap): Add extra_indent argument.
460	(message_print, message_print_obsolete): Print the prev_msgctxt,
461	prev_msgid, prev_msgid_plural fields. Compute an extra_indent.
462
463	* msgmerge.c (keep_previous): New variable.
464	(long_options): Add --previous option.
465	(main): Handle it.
466	(usage): Document --previous option.
467	(message_merge): Add force_fuzzy argument. Set the new message's
468	prev_msg* fields.
469	(match_domain): Update.
470	* msgattrib.c (REMOVE_PREV): New enum item.
471	(long_options): Add --clear-previous option.
472	(main): Handle it.
473	(usage): Document --clear-previous option.
474	(process_message_list): Handle REMOVE_PREV.
475	* msgfmt.c (msgfmt_add_message): Add prev_msgctxt, prev_msgid,
476	prev_msgid_plural arguments.
477	* gettext-po.c (po_message_prev_msgctxt, po_message_set_prev_msgctxt,
478	po_message_prev_msgid, po_message_set_prev_msgid,
479	po_message_prev_msgid_plural, po_message_set_prev_msgid_plural): New
480	functions.
481
4822006-10-03  Bruno Haible  <bruno@clisp.org>
483
484	* msgmerge.c (definitions_init): Fix initialization of fresh_lock.
485
4862006-10-03  Bruno Haible  <bruno@clisp.org>
487
488	* msgcmp.c (include_fuzzies, include_untranslated): New variables.
489	(long_options): Add options --use-fuzzy, --use-untranslated.
490	(main): Handle them.
491	(usage): Document them.
492	(match_domain): Consider include_fuzzies and include_untranslated.
493
4942006-10-02  Bruno Haible  <bruno@clisp.org>
495
496	* gettext-po.h.in (LIBGETTEXTPO_VERSION): Bump version number.
497	* Makefile.am (LTV_CURRENT, LTV_REVISION, LTV_AGE): Bump to 2:1:2.
498
4992006-10-01  Bruno Haible  <bruno@clisp.org>
500
501	* x-perl.c (extract_balanced): Remove state argument.
502
503	* x-perl.c (extract_balanced): Remove unused variable prev_last_token.
504
505	Fix Perl parsing bug introduced between 0.14.6 and 0.15.
506	* x-perl.c (extract_balanced): Add eat_delim and comma_delim arguments.
507	Use recursion to handle the case of a keyword not followed by an
508	opening parenthesis. When a keyword is seen, set next_argparser
509	instead of modifying the argparser variable of the current recursion.
510	When seeing an opening parenthesis, distinguish the case of function
511	arguments and the case of a subexpression. Don't call collect_message
512	for unused argument positions.
513	Reported by Nicolas Fran��ois <nicolas.francois@centraliens.net>.
514
515	* x-perl.c (extract_balanced): Remove unused variable.
516
5172006-09-06  Bruno Haible  <bruno@clisp.org>
518
519	* msgl-iconv.c: Include xstriconv.h instead of iconvstring.h.
520	(convert_string, convert_msgstr, iconvable_string, iconvable_msgstr):
521	Use xmem_cd_iconv instead of iconv_string.
522	* recode-sr-latin.c: Include xstriconv.h instead of iconvstring.h.
523	(process): Use xmem_cd_iconv instead of iconv_string.
524
5252006-09-04  Bruno Haible  <bruno@clisp.org>
526
527	* Makefile.am (msginit_SOURCES): Add ../../gettext-runtime/intl/lock.c.
528	Reported by Aaron Williams <aaron_williams@net.com>.
529
5302006-08-28  Bruno Haible  <bruno@clisp.org>
531
532	* x-scheme.c (read_object): Don't call arglist_parser_remember if
533	argparser is NULL.
534	* x-elisp.c (read_object): Likewise.
535	* x-librep.c (read_object): Likewise.
536	* x-lisp.c (read_object): Likewise.
537	Reported by Kevin Ryde <user42@zip.com.au>.
538
5392006-08-16  Bruno Haible  <bruno@clisp.org>
540
541	* plural-table.c (plural_table): Put Hungarian under nplurals=2.
542	Reported by Arpad Biro <biro_arpad@yahoo.com> and
543	Gabor Kelemen <kelemeng@gnome.hu>.
544
5452006-08-16  Bruno Haible  <bruno@clisp.org>
546
547	* read-mo.c: Include stdbool.h, stdlib.h, format.h.
548	(read_mo_file): Mark messages with system-dependent segments as
549	"#, c-format" or "#, objc-format", as appropriate.
550	Reported by Egmont Koblinger <egmont@uhulinux.hu>.
551
5522006-08-07  Bruno Haible  <bruno@clisp.org>
553
554	* xgettext.c (remember_a_message): Use the position passed as argument
555	instead of a dummypos.
556	Reported by Paul Eggert <eggert@cs.ucla.edu>.
557
5582006-08-01  Bruno Haible  <bruno@clisp.org>
559
560	Fix behaviour of msgmerge when the PO file and the compendium are
561	in different encodings.
562	* msgl-iconv.h (is_message_list_iconvable): New declaration.
563	* msgl-iconv.c (iconvable_string, iconvable_string_list,
564	iconvable_msgid, iconvable_msgstr, is_message_list_iconvable): New
565	functions.
566	* msgmerge.c: Include xallocsa.h.
567	(merge): In the case that the .pot file is ASCII, not UTF-8, convert
568	the definitions and the compendia contents to a common encoding.
569	Reported by Stanislav Brabec <sbrabec@suse.cz>.
570
5712006-07-30  Bruno Haible  <bruno@clisp.org>
572
573	* Makefile.am (AM_CPPFLAGS, LDADD, libgettextsrc_la_LDFLAGS,
574	libgettextpo_la_LDFLAGS, recode_sr_latin_LDADD, RELOCATABLE_SRC_DIR,
575	RELOCATABLE_BUILD_DIR): Replace ../lib with ../gnulib-lib.
576	(JAVACOMP, CSHARPCOMP): Remove lib/ from pathname.
577
5782006-07-30  Bruno Haible  <bruno@clisp.org>
579
580	* msgl-cat.c: Include c-strstr.h instead of strstr.h.
581	(catenate_msgdomain_list): Use c_strstr instead of strstr.
582	* msgl-charset.c: Include c-strstr.h instead of strstr.h.
583	(compare_po_locale_charsets): Use c_strstr instead of strstr.
584	* msgl-check.c: Include c-strstr.h instead of strstr.h.
585	(plural_help, check_plural, check_header_entry): Use c_strstr instead
586	of strstr.
587	* msgl-iconv.c: Include c-strstr.h instead of strstr.h.
588	(iconv_message_list): Use c_strstr instead of strstr.
589	* po-charset.c: Include c-strstr.h instead of strstr.h.
590	(po_lex_charset_set): Use c_strstr instead of strstr.
591	* write-po.c: Include c-strstr.h instead of strstr.h.
592	(msgdomain_list_print_po): Use c_strstr instead of strstr.
593	* write-stringtable.c: Include c-strstr.h instead of strstr.h.
594	(write_message): Use c_strstr instead of strstr.
595	* msgcmp.c: Include c-strstr.h instead of strstr.h.
596	(compare): Use c_strstr instead of strstr.
597	* msginit.c: Include c-strstr.h instead of strstr.h.
598	(content_type): Use c_strstr instead of strstr.
599	* msgmerge.c: Include c-strstr.h instead of strstr.h.
600	(message_merge, merge): Use c_strstr instead of strstr.
601	* x-python.c: Include c-strstr.h instead of strstr.h.
602	(try_to_extract_coding): Use c_strstr instead of strstr.
603	* xgettext.c: Include c-strstr.h instead of strstr.h.
604	(remember_a_message, finalize_header): Use c_strstr instead of strstr.
605
6062006-07-23  Bruno Haible  <bruno@clisp.org>
607
608	Exploit CPUs with multiple execution units.
609	* msgmerge.c: Include lock.h.
610	(struct definitions_ty): Add 'findex_init_lock' field.
611	(definitions_init): Initialize it.
612	(definitions_init_findex): Ensure findex is initialized by the
613	first thread who attempts so.
614	(match_domain): Split the main loop into two. Parallelize the first
615	loop using OpenMP pragmas.
616	* Makefile.am (msgmerge_CFLAGS): New variable.
617	(msgmerge_LDADD): Add OPENMP_CFLAGS.
618
6192006-07-25  Bruno Haible  <bruno@clisp.org>
620
621	* Makefile.msvc: Remove file.
622	* Makefile.am (EXTRA_DIST): Remove Makefile.msvc.
623
6242006-07-25  Bruno Haible  <bruno@clisp.org>
625
626	* Makefile.vms: Remove file.
627	* Makefile.am (EXTRA_DIST): Remove Makefile.vms.
628
6292006-07-24  Bruno Haible  <bruno@clisp.org>
630
631	* Makefile.am (include_HEADERS): Remove variable.
632	(nodist_include_HEADERS): New variable.
633	Suggested by Ralf Corsepius <rc040203@freenet.de>.
634
6352006-07-21  Bruno Haible  <bruno@clisp.org>
636
637	* gettext-0.15 released.
638
6392006-07-20  Bruno Haible  <bruno@clisp.org>
640
641	* gettext-po.h.in (LIBGETTEXTPO_VERSION): Bump version number.
642
6432006-07-20  Bruno Haible  <bruno@clisp.org>
644
645	* Makefile.am (LTV_CURRENT, LTV_REVISION, LTV_AGE): Bump to 2:0:2.
646
6472006-07-14  Bruno Haible  <bruno@clisp.org>
648
649	* Makefile.am (MOSTLYCLEANFILES): New variable.
650
6512006-07-02  Bruno Haible  <bruno@clisp.org>
652
653	* write-csharp.c (msgdomain_write_csharp): Update.
654	* write-java.c (msgdomain_write_java): Update.
655
6562006-06-29  Bruno Haible  <bruno@clisp.org>
657
658	* write-csharp.c (msgdomain_write_csharp): Update.
659	* write-java.c (msgdomain_write_java): Likewise.
660
6612006-06-28  Bruno Haible  <bruno@clisp.org>
662
663	Assume <dirent.h> on all Unix platforms. Assume closedir works.
664	* msginit.c: Don't include <sys/ndir.h>, <sys/dir.h>, <ndir.h>.
665	(find_pot): Use closedir directly.
666
6672006-06-27  Bruno Haible  <bruno@clisp.org>
668
669	Assume correct S_ISDIR macro.
670	* write-csharp.c: Remove test of STAT_MACROS_BROKEN.
671	* write-java.c: Likewise.
672
6732006-04-14  Bruno Haible  <bruno@clisp.org>
674
675	Assume autoconf >= 2.60.
676	* Makefile.am (localedir): Remove variable.
677
6782006-06-21  Bruno Haible  <bruno@clisp.org>
679
680	* x-sh.c (read_word): Recognize the Bash process substitution syntax.
681
6822006-06-21  Bruno Haible  <bruno@clisp.org>
683
684	* x-sh.c (read_word): Recognize $(...) and $((...)) also inside
685	double-quoted strings. 
686	Reported by Michelle Konzack <linux4michelle@freenet.de>.
687
6882006-06-04  Bruno Haible  <bruno@clisp.org>
689
690	* msgl-check.c (check_plural_eval): Declare 'distribution' as volatile,
691	so that it is unaffected by longjmp.
692
6932006-06-04  Bruno Haible  <bruno@clisp.org>
694
695	* xgettext.c (arglist_parser_done): Cast length argument for format
696	string.
697
6982006-05-31  Bruno Haible  <bruno@clisp.org>
699
700	* x-ycp.c (phase5_pushback, phase5_pushback_length): New variables.
701	(phase5_get): Renamed from x_ycp_lex.
702	(phase5_unget): New function.
703	(phase8_get): New function.
704	(extract_parenthesized): Inside i18n construct, use phase8_get
705	instead of phase5_get.
706	Reported by Karl Eichwalder <ke@suse.de>.
707
7082006-05-22  Bruno Haible  <bruno@clisp.org>
709
710	* msgfilter.c: Include <sys/select.h> also on Minix.
711	Reported by Leonard den Ottolander <leonard@den.ottolander.nl>.
712
7132006-05-17  Bruno Haible  <bruno@clisp.org>
714
715	Cygwin portability.
716	* hostname.c (WIN32_NATIVE): Renamed from WIN32.
717
7182006-05-16  Bruno Haible  <bruno@clisp.org>
719
720	* Makefile.am (CLEANFILES): Add gettext-po.h.
721
7222006-05-16  Bruno Haible  <bruno@clisp.org>
723
724	* xgettext.c (main): Use a size_t index variable for looping over the
725	files.
726	(arglist_parser_done): Fix a format string.
727
7282006-05-16  Bruno Haible  <bruno@clisp.org>
729
730	* msgfilter.c (main): Change type of i.
731
7322006-05-15  Bruno Haible  <bruno@clisp.org>
733
734	* Makefile.am: Test flag WOE32DLL instead of CYGWINDLL.
735
7362006-05-14  Bruno Haible  <bruno@clisp.org>
737
738	* x-php.c (x_php_lex): Fix handling of here documents.
739	Reported by Ga��tan Frenoy <gaetan@frenoy.net>.
740
7412006-05-12  Bruno Haible  <bruno@clisp.org>
742
743	* write-csharp.c [MINGW]: Include <io.h>.
744	(mkdir): Define using _mkdir.
745	* write-java.c [MINGW]: Include <io.h>.
746	(mkdir): Define using _mkdir.
747
7482006-05-11  Bruno Haible  <bruno@clisp.org>
749
750	* gettext-po.h.in: Renamed from gettext-po.h.
751	* Makefile.am: Treat condition WOE32DLL like MINGW. Update file names.
752	(libgettextsrc_la_SOURCES, libgettextsrc_la_LDFLAGS): Modify for
753	Cygwin.
754	libgettextpo_la_SOURCES, libgettextpo_la_LDFLAGS): Likewise.
755	(BUILT_SOURCES): Add gettext-po.h.
756	(EXTRA_DIST): Add gettext-po.h.in.
757	(gettext-po.h): New rule.
758
7592006-05-11  Bruno Haible  <bruno@clisp.org>
760
761	* Makefile.am (format_CFLAGS): Remove variable.
762	(format.lo): Remove variable.
763	(FORMAT_SOURCE) [MINGW]: Use ../mingw/c++format.cc instead of format.c.
764
7652006-05-09  Bruno Haible  <bruno@clisp.org>
766
767	* plural-eval.h (USE_SIGINFO): Don't define on Cygwin.
768
7692006-05-02  Charles Wilson  <cygwin@cwilson.fastmail.fm>
770
771	* write-mo.h: Remove DLL_VARIABLE declarations, not needed since
772	write-mo.c is not compiled into a shared library.
773	* lang-table.h: Likewise.
774
7752006-05-02  Charles Wilson  <cygwin@cwilson.fastmail.fm>
776
777	* filters.h: Add C++ guards.
778
7792006-05-07  Bruno Haible  <bruno@clisp.org>
780
781	* x-perl.c (extract_variable): Fix syntax error introduced on
782	2005-10-03.
783
7842006-05-07  Bruno Haible  <bruno@clisp.org>
785
786	* format-awk.c: Include xvasprintf.h instead of xerror.h.
787	* format-elisp.c: Likewise.
788	* format-librep.c: Likewise.
789	* format-pascal.c: Likewise.
790	* format-php.c: Likewise.
791	* format-tcl.c: Likewise.
792
7932006-04-30  Bruno Haible  <bruno@clisp.org>
794
795	* write-java.c (msgdomain_write_java): Specify source-version 1.3 and
796	require target-version 1.1.
797
7982006-04-30  Bruno Haible  <bruno@clisp.org>
799
800	* msginit.c (main): Simplify by use of xasprintf().
801	* write-java.c: Include xvasprintf.h.
802	(msgdomain_write_java): Simplify by use of xasprintf().
803	* x-c.c: Include xvasprintf.h.
804	(phase8a_get): Simplify by use of xasprintf().
805	* xgettext.c: Don't include stpcpy.h.
806	(remember_a_message, remember_a_message_plural): Simplify by use of
807	xasprintf().
808
8092006-04-30  Bruno Haible  <bruno@clisp.org>
810
811	* msgfmt.c: Include xvasprintf.h.
812	* msginit.c: Likewise.
813	* msgl-cat.c: Likewise.
814	* msgl-charset.c: Likewise.
815	* po-xerror.c: Likewise.
816	* x-csharp.c: Likewise.
817	* x-glade.c: Likewise.
818	* x-python.c: Likewise.
819	* xgettext.c: Likewise.
820	* format-boost.c: Include xvasprintf.h instead of xerror.h.
821	* format-c.c: Likewise.
822	* format-csharp.c: Likewise.
823	* format-gcc-internal.c: Likewise.
824	* format-java.c: Likewise.
825	* format-lisp.c: Likewise.
826	* format-perl.c: Likewise.
827	* format-python.c: Likewise.
828	* format-qt.c: Likewise.
829	* format-scheme.c: Likewise.
830	* format-ycp.c: Likewise.
831	* msgexec.c: Likewise.
832	* msgl-check.c: Likewise.
833	* msgl-iconv.c: Likewise.
834	* open-po.c: Likewise.
835	* po-charset.c: Likewise.
836	* po-lex.c: Likewise.
837	* po-time.c: Likewise.
838	* read-po-abstract.c: Likewise.
839	* read-properties.c: Likewise.
840	* read-stringtable.c: Likewise.
841	* write-po.c: Likewise.
842
8432006-04-30  Bruno Haible  <bruno@clisp.org>
844
845	* msginit.c (project_id, project_id_version, get_user_email): Close
846	the FILE in case of I/O error.
847
8482006-04-30  Bruno Haible  <bruno@clisp.org>
849
850	* write-java.c (msgdomain_write_java): Don't fclose the FILE after
851	fwriteerror signalled a failure.
852	* write-csharp.c (msgdomain_write_csharp): Likewise.
853
8542006-04-23  Bruno Haible  <bruno@clisp.org>
855
856	* msgexec.c: Include <unistd.h> unconditionally.
857	* msgfilter.c: Likewise.
858	* msggrep.c: Likewise.
859	* msginit.c: Likewise.
860	* hostname.c: Likewise.
861	* urlget.c: Likewise.
862
8632006-04-17  Bruno Haible  <bruno@clisp.org>
864
865	* Makefile.am: Use $(mkdir_p) instead of $(mkinstalldirs).
866
8672006-04-09  Bruno Haible  <bruno@clisp.org>
868
869	* write-csharp.c: Include clean-temp.h. Don't include unistd.h,
870	mkdtemp.h, tmpdir.h, pathmax.h, fatal-signal.h, xallocsa.h.
871	(cleanup_list): Remove variable.
872	(cleanup): Remove function.
873	(msgdomain_write_csharp): Simplify handling of temporary directory.
874	* write-java.c: Include clean-temp.h. Don't include unistd.h,
875	mkdtemp.h, tmpdir.h, pathmax.h, fatal-signal.h.
876	(cleanup_list): Remove variable.
877	(cleanup): Remove function.
878	(msgdomain_write_java): Simplify handling of temporary directory.
879
8802006-04-03  Bruno Haible  <bruno@clisp.org>
881
882	* x-glade.c (p_XML_GetCurrentLineNumber, p_XML_GetCurrentColumnNumber):
883	Declare differently for expat >= 2.0.0.
884	(load_libexpat): Search for a differently library name for expat >=
885	2.0.0.
886	(do_extract_glade): Update.
887	Reported by Mike Frysinger <vapier@gentoo.org>.
888
8892006-04-02  Bruno Haible  <bruno@clisp.org>
890
891	* hostname.c: Include propername.h.
892	(main): Call proper_name.
893	* msgattrib.c: Include propername.h.
894	(main): Call proper_name.
895	* msgcat.c: Include propername.h.
896	(main): Call proper_name.
897	* msgcmp.c: Include propername.h.
898	(main): Call proper_name.
899	* msgcomm.c: Include propername.h.
900	(main): Call proper_name.
901	* msgconv.c: Include propername.h.
902	(main): Call proper_name.
903	* msgen.c: Include propername.h.
904	(main): Call proper_name.
905	* msgexec.c: Include propername.h.
906	(main): Call proper_name.
907	* msgfilter.c: Include propername.h.
908	(main): Call proper_name.
909	* msgfmt.c: Include propername.h.
910	(main): Call proper_name.
911	* msggrep.c: Include propername.h.
912	(main): Call proper_name.
913	* msginit.c: Include propername.h.
914	(main): Call proper_name.
915	* msgmerge.c: Include propername.h.
916	(main): Call proper_name.
917	* msgunfmt.c: Include propername.h.
918	(main): Call proper_name.
919	* msguniq.c: Include propername.h.
920	(main): Call proper_name.
921	* recode-sr-latin.c: Include propername.h.
922	(main): Call proper_name and proper_name_utf8.
923	* urlget.c: Include propername.h.
924	(main): Call proper_name.
925	* xgettext.c: Include propername.h.
926	(main): Call proper_name.
927
9282006-04-01  Bruno Haible  <bruno@clisp.org>
929
930	* xgettext.c (main): Treat --keyword= like --keyword.
931
9322006-03-28  Bruno Haible  <bruno@clisp.org>
933
934	* filters.h: New file.
935	* filter-sr-latin.c: New file, based on code from Danilo ��egan.
936	* recode-sr-latin.c: New file.
937	* msgfilter.c: Include filters.h, msgl-iconv.h, po-charset.h.
938	(filter): New variable.
939	(main): Recognize recode-sr-latin as built-in.
940	(generic_filter): New function, extracted from process_string.
941	(process_string): Call the filter.
942	* Makefile.am (bin_PROGRAMS): Add recode-sr-latin.
943	(noinst_HEADERS): Add filters.h.
944	(msgfilter_SOURCES): Add filter-sr-latin.c.
945	(recode_sr_latin_SOURCES, recode_sr_latin_LDADD,
946	recode_sr_latin_CPPFLAGS, recode_sr_latin_LDFLAGS): New variables.
947	* Makefile.msvc (PROGRAMS): Add recode-sr-latin.exe.
948	(msgfilter_OBJECTS): Add filter-sr-latin.obj.
949	(recode_sr_latin_OBJECTS): New variable.
950	(filter-sr-latin.obj, recode-sr-latin.obj): New rules.
951	(recode-sr-latin.exe): New rule.
952	(install): Also install recode-sr-latin.exe.
953	(uninstall): Also uninstall recode-sr-latin.exe.
954	* Makefile.vms (PROGRAMS): Add recode-sr-latin.exe.
955	(msgfilter_OBJECTS): Add filter-sr-latin.obj.
956	(recode_sr_latin_OBJECTS): New variable.
957	(filter-sr-latin.obj, recode-sr-latin.obj): New rules.
958	(recode-sr-latin.exe): New rule.
959	(install): Also install recode-sr-latin.exe.
960	(uninstall): Also uninstall recode-sr-latin.exe.
961
9622006-03-28  Bruno Haible  <bruno@clisp.org>
963
964	* msgl-iconv.c: Include iconvstring.h. Don't include <errno.h>.
965	(iconv_string): Remove function, moved to ../lib/.
966
9672006-03-19  Bruno Haible  <bruno@clisp.org>
968
969	* xgettext.h (struct callshape): New field 'xcomments'.
970	(struct partial_call): New field 'xcomments'.
971	* xgettext.c (split_keywordspec): Accept the ID:ARGNUM...,"XCOMMENT"
972	syntax.
973	(insert_keyword_callshape): Store the xcomments from the new shape.
974	(arglist_parser_alloc, arglist_parser_clone): Update.
975	(arglist_parser_done): After calling remember_a_message, attach the
976	specified extracted comments.
977	* x-perl.c (extract_variable): Update.
978	Suggested by Behdad Esfahbod <behdad@cs.toronto.edu>.
979
9802006-03-19  Bruno Haible  <bruno@clisp.org>
981
982	* xgettext.c (arglist_parser_done): Use error_at_line instead of error.
983
9842006-03-16  Bruno Haible  <bruno@clisp.org>
985
986	* msggrep.c (grep_task): Increment size.
987	(long_options): Add --extracted-comment option.
988	(main): Handle --extracted-comment option.
989	(no_pass, usage): Update.
990	(is_message_selected_no_invert): Implement matching on extracted
991	comments.
992	Suggested by Behdad Esfahbod <behdad@cs.toronto.edu>.
993
9942006-03-16  Bruno Haible  <bruno@clisp.org>
995
996	Handle GNOME glib context syntax.
997	* xgettext.h (struct callshape): Add fields argnum1_glib_context,
998	argnum2_glib_context.
999	(struct partial_call): Add fields argnum1_glib_context,
1000	argnum2_glib_context.
1001	* xgettext.c (split_keywordspec): Recognize suffix 'g' and set the
1002	argnum1_glib_context, argnum2_glib_context fields.
1003	(insert_keyword_callshape, arglist_parser_alloc, arglist_parser_clone):
1004	Update.
1005	(arglist_parser_done): When suffix 'g' was specified, split off the
1006	context from the msgid and/or msgid_plural.
1007	* x-perl.c (extract_variable): Update.
1008	Suggested by Danilo ��egan <danilo@gnome.org>.
1009
10102006-03-16  Bruno Haible  <bruno@clisp.org>
1011
1012	* xgettext.c (set_format_flags_from_context): Break long line.
1013
10142006-03-11  Bruno Haible  <bruno@clisp.org>
1015
1016	* message.c (fuzzy_search_goal_function): Use 'volatile double'.
1017
10182006-03-11  Bruno Haible  <bruno@clisp.org>
1019
1020	Speed up msgmerge with large compendia.
1021	* message.h (message_list_free): Add keep_messages argument.
1022	(message_list_list_free): Add keep_level argument.
1023	(fuzzy_search_goal_function): New declaration.
1024	(FUZZY_THRESHOLD): New macro.
1025	* message.c (message_list_free): Add keep_messages argument.
1026	(fuzzy_search_goal_function): New function, extracted from
1027	message_list_search_fuzzy_inner.
1028	(message_list_search_fuzzy_inner): Use it.
1029	(message_list_search_fuzzy): Use symbolic value FUZZY_THRESHOLD.
1030	(message_list_list_free): Comment in. Add keep_level argument.
1031	(message_list_list_search_fuzzy): Comment out. Use symbolic value
1032	FUZZY_THRESHOLD.
1033	(msgdomain_free): Update.
1034	(msgdomain_list_search_fuzzy): Use symbolic value FUZZY_THRESHOLD.
1035	* po-charset.h: Include stddef.h.
1036	(character_iterator_t): New type.
1037	(po_charset_character_iterator): New declaration.
1038	* po-charset.c (char_iterator, euc_character_iterator,
1039	euc_jp_character_iterator, euc_tw_character_iterator,
1040	big5_character_iterator, big5hkscs_character_iterator,
1041	gbk_character_iterator, gb18030_character_iterator,
1042	shift_jis_character_iterator, johab_character_iterator,
1043	utf8_character_iterator, po_charset_character_iterator): New functions.
1044	* msgl-fsearch.h: New file.
1045	* msgl-fsearch.c: New file.
1046	* msgmerge.c: Include po-charset.h, msgl-fsearch.h.
1047	(compendium_filenames): New variable.
1048	(compendium): Also put the filename into compendium_filenames.
1049	(definitions_ty): New structure type.
1050	(definitions_init, definitions_init_findex, definitions_current_list,
1051	definitions_set_current_list, definitions_search,
1052	definitions_search_fuzzy, definitions_destroy): New functions.
1053	(match_domain): Change type of 'definitions' argument.
1054	(merge): Also convert the compendium to UTF-8. Use definitions_init,
1055	definitions_set_current_list, definitions_destroy.
1056	* msgfmt.c (main): Update.
1057	* Makefile.am (noinst_HEADERS): Add msgl-fsearch.h.
1058	(msgmerge_SOURCES): Add msgl-fsearch.c.
1059	(msgmerge_LDADD): Link with MSGMERGE_LIBM.
1060	* Makefile.msvc (msgmerge_OBJECTS): Add msgl-fsearch.obj.
1061	(msgl-fsearch.obj): New rule.
1062	* Makefile.vms (msgmerge_OBJECTS): Add msgl-fsearch.obj.
1063	(msgl-fsearch.obj): New rule.
1064	Reported by Clytie Siddall <clytie@riverland.net.au>.
1065
10662006-03-09  Bruno Haible  <bruno@clisp.org>
1067
1068	* Makefile.am (CXXLINK) [!mingw]: Overwrite automake's value. Fixes
1069	unintended dependency on libstdc++ introduced on 2005-07-05.
1070
10712005-10-09  Bruno Haible  <bruno@clisp.org>
1072
1073	* lang-table.h: New file.
1074	* lang-table.c: New file, extracted from msginit.c.
1075	* msginit.c: Include lang-table.h.
1076	(englishname_of_language): Use language_table.
1077	* Makefile.am (noinst_HEADERS): Add lang-table.h.
1078	(msginit_SOURCES): Add lang-table.c.
1079	* Makefile.msvc (MSGINIT_OBJECTS): Add lang-table.obj.
1080	(lang-table.obj): New rule.
1081	* Makefile.vms (MSGINIT_OBJECTS): Add lang-table.obj.
1082	(lang-table.obj): New rule.
1083
10842006-02-12  Bruno Haible  <bruno@clisp.org>
1085
1086	* message.h (format_type): New enum value 'format_boost'.
1087	(NFORMATS): Increment.
1088	* message.c (format_language): Add format_boost entry.
1089	(format_language_pretty): Likewise.
1090	* format.h (formatstring_boost): New declaration.
1091	* format-boost.c: New file, based on format-c.c.
1092	* format.c (formatstring_parsers): Add formatstring_boost.
1093	* x-c.c (init_flag_table_c): Also register flags for boost-format.
1094	* xgettext.c (flag_table_cxx_qt, flag_table_cxx_boost): New variables.
1095	(recognize_format_boost): New variable.
1096	(main): Handle --boost option.
1097	(usage): Document --boost option.
1098	(xgettext_record_flag): Also fill flag_table_cxx_qt,
1099	flag_table_cxx_boost.
1100	(remember_a_message, remember_a_message_plural): In the heuristics,
1101	don't mark a string as c-format that is already known to be a qt-format
1102	or boost-format.
1103	(language_to_extractor): Use a flag_table_cxx_qt or
1104	flag_table_cxx_boost that is different from flag_table_c.
1105	* Makefile.am (FORMAT_SOURCE): Add format-boost.c.
1106	* Makefile.msvc (OBJECTS): Add format-boost.obj.
1107	(format-boost.obj): New rule.
1108	* Makefile.vms (OBJECTS): Add format-boost.obj.
1109	(format-boost.obj): New rule.
1110	* FILES: Update.
1111
11122006-02-12  Bruno Haible  <bruno@clisp.org>
1113
1114	* xgettext.c (xgettext_record_flag): When asked to set "qt-format",
1115	really set "qt-format", not "c-format". Fixes bug introduced on
1116	2003-10-19.
1117
11182006-02-12  Bruno Haible  <bruno@clisp.org>
1119
1120	Reduce the number of false positives produced by the c-format guessing
1121	heuristics.
1122	* format.h (struct formatstring_parser): Add 'is_unlikely_intentional'
1123	field.
1124	* format-awk.c (formatstring_awk): Update.
1125	* format-c.c (struct spec): Add 'unlikely_unintentional' field.
1126	(format_parse): Set unlikely_unintentional to true when encountering
1127	a "%...%" directive other than "%%".
1128	(format_is_unlikely_intentional): New function.
1129	(formatstring_c, formatstring_objc): Use it.
1130	* format-csharp.c (formatstring_csharp): Update.
1131	* format-elisp.c (formatstring_elisp): Update.
1132	* format-gcc-internal.c (formatstring_gcc_internal): Update.
1133	* format-java.c (formatstring_java): Update.
1134	* format-librep.c (formatstring_librep): Update.
1135	* format-lisp.c (formatstring_lisp): Update.
1136	* format-pascal.c (formatstring_pascal): Update.
1137	* format-perl.c (formatstring_perl): Update.
1138	* format-perl-brace.c (formatstring_perl_brace): Update.
1139	* format-php.c (format_php): Update.
1140	* format-python.c (formatstring_python): Update.
1141	* format-qt.c (formatstring_qt): Update.
1142	* format-scheme.c (formatstring_scheme): Update
1143	* format-sh.c (formatstring_sh): Update.
1144	* format-tcl.c (formatstring_tcl): Update.
1145	* format-ycp.c (formatstring_ycp, formatstring_smalltalk): Update.
1146	* xgettext.c (remember_a_message, remember_a_message_plural): Don't
1147	mark the message as c-format if the validity as c-format looks
1148	unintentional.
1149
11502006-02-12  Bruno Haible  <bruno@clisp.org>
1151
1152	* msgattrib.c (main): Update year in --version output.
1153	* msgcat.c (main): Likewise.
1154	* msgcmp.c (main): Likewise.
1155	* msgcomm.c (main): Likewise.
1156	* msgconv.c (main): Likewise.
1157	* msgen.c (main): Likewise.
1158	* msgexec.c (main): Likewise.
1159	* msgfilter.c (main): Likewise.
1160	* msgfmt.c (main): Likewise.
1161	* msggrep.c (main): Likewise.
1162	* msginit.c (main): Likewise.
1163	* msgmerge.c (main): Likewise.
1164	* msgunfmt.c (main): Likewise.
1165	* msguniq.c (main): Likewise.
1166	* xgettext.c (main): Likewise.
1167
11682006-01-25  Bruno Haible  <bruno@clisp.org>
1169
1170	* x-php.c (x_php_lex): Treat byte values >= 127 like alphabetic.
1171	Reported by Hagen Fritsch <itooktheredpill@gmx.de>.
1172
11732005-12-25  Bruno Haible  <bruno@clisp.org>
1174
1175	Tell Python developers to use named arguments in format strings.
1176	* format.h (get_python_format_unnamed_arg_count): New declaration.
1177	* format-python.c (get_python_format_unnamed_arg_count): New function.
1178	* xgettext.c (warn_format_string): New function.
1179	(remember_a_message, remember_a_message_plural): Call it.
1180	Suggested by Martin von L��wis.
1181
11822005-12-07  Bruno Haible  <bruno@clisp.org>
1183
1184	* msgl-iconv.c (iconv_message_list): Fix syntax error.
1185	Reported by Dave Patton <dpatton@confluence.org>.
1186
11872005-12-04  Bruno Haible  <bruno@clisp.org>
1188
1189	* Makefile.am (CSHARPCOMPFLAGS): Use value set by csharpcomp.m4.
1190
11912005-11-29  Colin Watson  <cjwatson@ubuntu.com>
1192
1193	* msggrep.c (invert_match): New variable.
1194	(long_options): Add --invert-match option.
1195	(main): Handle --invert-match option.
1196	(usage): Document --invert-match option.
1197	(is_message_selected_no_invert): New function, extracted from
1198	is_message_selected.
1199	(is_message_selected): Call it. Handle match inversion.
1200
12012005-11-01  Bruno Haible  <bruno@clisp.org>
1202
1203	* write-csharp.c (write_csharp_code): Add culture_name argument.
1204	Emit an AssemblyCulture note for it.
1205	(msgdomain_write_csharp): Update.
1206	Suggested by Pepa <cerna.zelva@seznam.cz>.
1207
12082005-10-09  Bruno Haible  <bruno@clisp.org>
1209
1210	* plural-eval.h: New file.
1211	* plural-eval.c: Include plural-eval.h.
1212	(sigfpe_exit, sigfpe_code, sigfpe_handler, install_sigfpe_handler,
1213	uninstall_sigfpe_handler): New definitions, moved here from
1214	msgl-check.c.
1215	* msgl-check.c: Include plural.eval.h.
1216	(sigjmp_buf, sigsetjmp, siglongjmp, USE_SIGINFO): Move to plural-eval.h.
1217	(sigfpe_exit, sigfpe_code, sigfpe_handler, install_sigfpe_handler,
1218	uninstall_sigfpe_handler): Move to plural-eval.c.
1219	* Makefile.am (noinst_HEADERS): Add plural-eval.h.
1220
12212005-10-09  Bruno Haible  <bruno@clisp.org>
1222
1223	* msgl-check.c: Include c-ctype.h instead of ctype.h.
1224	(check_plural): Use c_isspace instead of isspace.
1225	* x-librep.c: Include c-ctype.h instead of ctype.h.
1226	(read_token): Use c_isxdigit instead of isxdigit.
1227	* x-rst.c: Include c-ctype.h instead of ctype.h.
1228	(extract_rst): Use c_isdigit instead of isdigit.
1229	* x-ycp.c: Don't include ctype.h.
1230
12312005-10-09  Bruno Haible  <bruno@clisp.org>
1232
1233	* plural-exp.c: Renamed from plural.c.
1234	* Makefile.am (libgettextsrc_la_SOURCES): Update.
1235
12362005-10-18  Bruno Haible  <bruno@clisp.org>
1237
1238	Disambiguate overloaded function calls according to argument count.
1239	* xgettext.h (struct callshape): Add field 'argtotal'.
1240	(struct partial_call): Likewise.
1241	(arglist_parser_done): Add argnum argument.
1242	* xgettext.c (split_keywordspec): Recognize NNt syntax and fill
1243	argtotal.
1244	(insert_keyword_callshape, arglist_parser_alloc, arglist_parser_clone):
1245	Update.
1246	(arglist_parser_decidedp): Compare also the argtotal if given.
1247	(arglist_parser_done): Add argnum argument.
1248	* x-awk.c (extract_parenthesized): Pass arg count to
1249	arglist_parser_done.
1250	* x-c.c (extract_parenthesized): Likewise.
1251	* x-csharp.c (extract_parenthesized): Likewise.
1252	* x-elisp.c (read_object): Likewise.
1253	* x-java.c (extract_parenthesized): Likewise.
1254	* x-librep.c (read_object): Likewise.
1255	* x-lisp.c (read_object): Likewise.
1256	* x-perl.c (extract_variable): Update.
1257	(extract_balanced): Pass arg count to arglist_parser_done.
1258	* x-php.c (extract_parenthesized): Likewise.
1259	* x-python.c (extract_parenthesized): Likewise.
1260	* x-scheme.c (read_object): Likewise.
1261	* x-sh.c (read_command): Likewise.
1262	* x-tcl.c (read_command): Likewise.
1263	Stimulated by a patch from
1264	Chusslove Illich (������������ ��������) <caslav.ilic@gmx.net>.
1265
12662005-10-09  Bruno Haible  <bruno@clisp.org>
1267
1268	* msginit.c (catalogname_for_locale, language_of_locale): Drop support
1269	of CEN locale name syntax.
1270
12712005-10-05  Bruno Haible  <bruno@clisp.org>
1272
1273	* format.h (check_msgid_msgstr_format): Add plural_distribution
1274	argument.
1275	* format.c (check_msgid_msgstr_format): Add plural_distribution
1276	argument. Use it for index dependent strictness.
1277	* msgl-check.h (check_message): Add plural_distribution argument.
1278	* msgl-check.c: Include xalloc.h.
1279	(check_plural_eval): Create a plural_distribution array as additional
1280	output parameter.
1281	(check_plural): Return plural_distribution array as additional output
1282	parameter.
1283	(check_pair, check_message): Add plural_distribution argument.
1284	(check_message_list): Pass the plural_distribution from check_plural
1285	to check_message.
1286	* gettext-po.c (po_message_check_format): Update.
1287
12882005-10-04  Bruno Haible  <bruno@clisp.org>
1289
1290	Combine all msgfmt checks in a single place.
1291	* format.h (check_msgid_msgstr_format): Change return type to int.
1292	* format.c (check_msgid_msgstr_format): Return the number of errors.
1293	* msgl-check.h (check_plural): Remove declaration.
1294	* msgl-check.c (check_plural): Make static. Return the number of
1295	errors.
1296	(check_pair): Return the number of errors.
1297	(check_message_list): Likewise.
1298	* msgfmt.c (main): Perform the message checks here, after all files
1299	were read. Call check_message_list instead of check_plural and
1300	check_message. Emit statistics of fatal errors.
1301	(msgfmt_frob_new_message): Don't call check_message here.
1302
13032005-10-04  Bruno Haible  <bruno@clisp.org>
1304
1305	* msgl-check.h (check_message_list): New declaration.
1306	* msgl-check.c (check_message_list): New function.
1307	* gettext-po.c (po_file_check_all, po_message_check_all): Call
1308	check_message_list instead of check_message and check_plural.
1309
13102005-10-04  Bruno Haible  <bruno@clisp.org>
1311
1312	Fix handling of obsolete messages.
1313	* msgl-check.c (check_plural): Ignore obsolete messages.
1314	* gettext-po.c (po_file_check_all, po_message_check_all,
1315	po_message_check_format): Likewise.
1316
13172005-10-04  Bruno Haible  <bruno@clisp.org>
1318
1319	* msgl-check.h (check_message): Remove msgstr_pos argument.
1320	* msgl-check.c (check_pair, check_message): Remove msgstr_pos argument.
1321	* msgfmt.c (msgfmt_frob_new_message): Update.
1322	* gettext-po.c (po_file_check_all, po_message_check_all,
1323	po_message_check_format): Update.
1324
13252005-10-03  Bruno Haible  <bruno@clisp.org>
1326
1327	Add support for contexts in xgettext.
1328	* xgettext.h: Include stdbool.h.
1329	(struct callshape): New structure type.
1330	(split_keywordspec): Return a struct callshape, not two integers,
1331	by reference.
1332	(struct callshapes): New structure type.
1333	(insert_keyword_callshape): New declaration.
1334	(remember_a_message): Add msgctxt argument.
1335	(struct partial_call): New structure type.
1336	(struct arglist_parser): New structure type.
1337	(arglist_parser_alloc, arglist_parser_clone, arglist_parser_remember,
1338	arglist_parser_decidedp, arglist_parser_done): New declarations.
1339	* xgettext.c (split_keywordspec): Return a struct callshape, not two
1340	integers, by reference. Handle the notation Nc for a context argument.
1341	(insert_keyword_callshape): New function.
1342	(remember_a_message): Add msgctxt argument. Free both strings when
1343	the message is excluded.
1344	(arglist_parser_alloc, arglist_parser_clone, arglist_parser_remember,
1345	arglist_parser_decidedp, arglist_parser_done): New functions.
1346	* x-awk.c (x_awk_keyword): Use callshape API: split_keywordspec,
1347	insert_keyword_callshape.
1348	(extract_parenthesized): Replace commas_to_skip, plural_commas
1349	arguments with a single argparser argument. Use arglist_parser_* API.
1350	(extract_awk): Update.
1351	* x-c.c (add_keyword): Use callshape API: split_keywordspec,
1352	insert_keyword_callshape.
1353	(init_keywords): Register the new functions [d[c]][n]pgettext.
1354	(init_flag_table_c, init_flag_table_objc): Likewise.
1355	(struct xgettext_token_ty): Replace argnum1, argnum2 with a callshapes
1356	pointer.
1357	(x_c_lex): Update.
1358	(extract_parenthesized): Replace commas_to_skip, plural_commas
1359	arguments with a single argparser argument. Use arglist_parser_* API.
1360	(extract_whole_file): Update.
1361	* x-csharp.c (x_csharp_keyword): Use callshape API: split_keywordspec,
1362	insert_keyword_callshape.
1363	(extract_parenthesized): Replace commas_to_skip, plural_commas
1364	arguments with a single argparser argument. Use arglist_parser_* API.
1365	(extract_csharp): Update.
1366	* x-elisp.c (x_elisp_keyword): Use callshape API: split_keywordspec,
1367	insert_keyword_callshape.
1368	(read_object): Use arglist_parser_* API.
1369	* x-glade.c (start_element_handler, end_element_handler): Update.
1370	* x-java.c (x_java_keyword): Use callshape API: split_keywordspec,
1371	insert_keyword_callshape.
1372	(extract_parenthesized): Replace commas_to_skip, plural_commas
1373	arguments with a single argparser argument. Use arglist_parser_* API.
1374	(extract_java): Update.
1375	* x-librep.c (x_librep_keyword): Use callshape API: split_keywordspec,
1376	insert_keyword_callshape.
1377	(read_object): Use arglist_parser_* API.
1378	* x-lisp.c (x_lisp_keyword): Use callshape API: split_keywordspec,
1379	insert_keyword_callshape.
1380	(read_object): Use arglist_parser_* API.
1381	* x-perl.c (x_perl_keyword): Use callshape API: split_keywordspec,
1382	insert_keyword_callshape.
1383	(extract_balanced): Replace arg_sg, arg_pl arguments with arg,
1384	argparser arguments. Use arglist_parser_* API.
1385	(extract_variable, interpolate_keywords, extract_perl): Update.
1386	* x-php.c (x_php_keyword): Use callshape API: split_keywordspec,
1387	insert_keyword_callshape.
1388	(extract_parenthesized): Replace commas_to_skip, plural_commas
1389	arguments with a single argparser argument. Use arglist_parser_* API.
1390	(extract_php): Update.
1391	* x-python.c (x_python_keyword): Use callshape API: split_keywordspec,
1392	insert_keyword_callshape.
1393	(extract_parenthesized): Replace commas_to_skip, plural_commas
1394	arguments with a single argparser argument. Use arglist_parser_* API.
1395	(extract_python): Update.
1396	* x-rst.c (extract_rst): Update.
1397	* x-scheme.c (x_scheme_keyword): Use callshape API: split_keywordspec,
1398	insert_keyword_callshape.
1399	(read_object): Use arglist_parser_* API.
1400	* x-sh.c (x_sh_keyword): Use callshape API: split_keywordspec,
1401	insert_keyword_callshape.
1402	(read_word): Update.
1403	(read_command): Use arglist_parser_* API.
1404	* x-smalltalk.c (extract_smalltalk): Update.
1405	* x-tcl.c (x_tcl_keyword): Use callshape API: split_keywordspec,
1406	insert_keyword_callshape.
1407	(read_command): Use arglist_parser_* API.
1408	* x-ycp.c (extract_parenthesized): Update.
1409
14102005-10-03  Bruno Haible  <bruno@clisp.org>
1411
1412	* xgettext.h (savable_comment_to_xgettext_comment): Remove
1413	declaration.
1414	(remember_a_message, remember_a_message_plural): Add a comment
1415	argument.
1416	* xgettext.c (savable_comment_to_xgettext_comment): Make static.
1417	(remember_a_message): Add comment argument. Call
1418	savable_comment_to_xgettext_comment and savable_comment_reset at the
1419	end.
1420	(remember_a_message_plural): Add comment argument. Call
1421	savable_comment_to_xgettext_comment and xgettext_comment_reset,
1422	savable_comment_reset at the end.
1423	* x-awk.c (extract_parenthesized): Pass comment to remember_a_message.
1424	* x-c.c (extract_parenthesized): Likewise.
1425	* x-csharp.c (extract_parenthesized): Likewise.
1426	* x-elisp.c (read_object): Likewise.
1427	* x-glade.c (start_element_handler, end_element_handler): Likewise.
1428	* x-java.c (extract_parenthesized): Likewise.
1429	* x-librep.c (read_object): Likewise.
1430	* x-lisp.c (read_object): Likewise.
1431	* x-perl.c (extract_variable, interpolate_keywords, extract_balanced):
1432	Likewise.
1433	* x-php.c (extract_parenthesized): Likewise.
1434	* x-python.c (extract_parenthesized): Likewise.
1435	* x-scheme.c (read_object): Likewise.
1436	* x-sh.c (read_word, read_command): Likewise.
1437	* x-smalltalk.c (extract_smalltalk): Likewise.
1438	* x-tcl.c (read_command): Likewise.
1439	* x-ycp.c (extract_parenthesized): Likewise.
1440	* x-rst.c (extract_rst): Update.
1441
14422005-10-03  Bruno Haible  <bruno@clisp.org>
1443
1444	* xgettext.h (xgettext_comment_add, xgettext_comment,
1445	xgettext_comment_reset): Remove declarations.
1446	* xgettext.c (xgettext_comment_add, xgettext_comment,
1447	xgettext_comment_reset): Make static.
1448
14492005-10-03  Bruno Haible  <bruno@clisp.org>
1450
1451	Use savable_comment_* API instead of xgettext_comment_* API.
1452	* x-awk.c (phase2_getc): Call savable_comment_add instead of
1453	xgettext_comment_add.
1454	(x_awk_lex): Call savable_comment_reset instead of
1455	xgettext_comment_reset.
1456	(extract_parenthesized): Call savable_comment_to_xgettext_comment and
1457	savable_comment_reset around remember_a_message.
1458	* x-elisp.c (comment_line_end): Call savable_comment_add instead of
1459	xgettext_comment_add.
1460	(read_object): Call savable_comment_reset instead of
1461	xgettext_comment_reset. Call savable_comment_to_xgettext_comment and
1462	savable_comment_reset around remember_a_message.
1463	* x-glade.c (start_element_handler, end_element_handler): Call
1464	savable_comment_to_xgettext_comment and savable_comment_reset around
1465	remember_a_message. Call savable_comment_reset instead of
1466	xgettext_comment_reset.
1467	(comment_handler): Call savable_comment_add instead of
1468	xgettext_comment_add.
1469	* x-librep.c (comment_line_end): Call savable_comment_add instead of
1470	xgettext_comment_add.
1471	(read_object): Call savable_comment_reset instead of
1472	xgettext_comment_reset. Call savable_comment_to_xgettext_comment and
1473	savable_comment_reset around remember_a_message.
1474	* x-lisp.c (comment_line_end): Call savable_comment_add instead of
1475	xgettext_comment_add.
1476	(read_object): Call savable_comment_reset instead of
1477	xgettext_comment_reset. Call savable_comment_to_xgettext_comment and
1478	savable_comment_reset around remember_a_message.
1479	* x-perl.c (phase2_getc): Call savable_comment_add instead of
1480	xgettext_comment_add.
1481	(extract_variable, interpolate_keywords): Call
1482	savable_comment_to_xgettext_comment and savable_comment_reset around
1483	remember_a_message.
1484	(x_perl_prelex): Call savable_comment_reset instead of
1485	xgettext_comment_reset.
1486	(extract_balanced): Call savable_comment_to_xgettext_comment and
1487	savable_comment_reset around remember_a_message.
1488	* x-php.c (comment_line_end): Call savable_comment_add instead of
1489	xgettext_comment_add.
1490	(x_php_lex): Call savable_comment_reset instead of
1491	xgettext_comment_reset.
1492	(extract_parenthesized): Call savable_comment_to_xgettext_comment and
1493	savable_comment_reset around remember_a_message.
1494	* x-scheme.c (comment_line_end): Call savable_comment_add instead of
1495	xgettext_comment_add.
1496	(read_object): Call savable_comment_reset instead of
1497	xgettext_comment_reset. Call savable_comment_to_xgettext_comment and
1498	savable_comment_reset around remember_a_message.
1499	* x-sh.c (comment_line_end): Call savable_comment_add instead of
1500	xgettext_comment_add.
1501	(read_word): Call savable_comment_reset instead of
1502	xgettext_comment_reset. Call savable_comment_to_xgettext_comment and
1503	savable_comment_reset around remember_a_message.
1504	(read_command): Call savable_comment_to_xgettext_comment and
1505	savable_comment_reset around remember_a_message.
1506	* x-smalltalk.c (comment_line_end): Call savable_comment_add instead of
1507	xgettext_comment_add.
1508	(phase2_get): Call savable_comment_reset instead of
1509	xgettext_comment_reset.
1510	(extract_smalltalk): Call savable_comment_to_xgettext_comment and
1511	savable_comment_reset around remember_a_message.
1512	* x-tcl.c (comment_line_end): Call savable_comment_add instead of
1513	xgettext_comment_add.
1514	(read_word): Call savable_comment_reset instead of
1515	xgettext_comment_reset.
1516	(read_command): Call savable_comment_to_xgettext_comment and
1517	savable_comment_reset around remember_a_message.
1518	* x-ycp.c (phase2_getc): Call savable_comment_add instead of
1519	xgettext_comment_add.
1520	(x_ycp_lex): Call savable_comment_reset instead of
1521	xgettext_comment_reset.
1522	(extract_parenthesized): Call savable_comment_to_xgettext_comment and
1523	savable_comment_reset around remember_a_message.
1524
15252005-10-03  Bruno Haible  <bruno@clisp.org>
1526
1527	* message.c (message_list_hash_insert_entry): Update.
1528
15292005-10-03  Bruno Haible  <bruno@clisp.org>
1530
1531	* message.c (message_list_alloc, message_list_free,
1532	message_list_hash_insert_entry, message_list_remove_if_not,
1533	message_list_msgids_changed, message_list_search): Update.
1534	* write-qt.c (write_qm): Update.
1535	* xgettext.c (flag_context_list_table_lookup,
1536	flag_context_list_table_insert): Update.
1537	* x-awk.c (x_awk_keyword, extract_parenthesized): Update.
1538	* x-c.c (add_keyword, x_c_lex): Update.
1539	* x-csharp.c (x_csharp_keyword, extract_parenthesized: Update.
1540	* x-elisp.c (x_elisp_keyword, read_object): Update.
1541	* x-glade.c (x_glade_keyword, start_element_handler): Update.
1542	* x-java.c (x_java_keyword, extract_parenthesized): Update.
1543	* x-librep.c (x_librep_keyword, read_object): Update.
1544	* x-lisp.c (x_lisp_keyword, read_object): Update.
1545	* x-perl.c (x_perl_keyword, extract_variable, interpolate_keywords,
1546	extract_balanced): Update.
1547	* x-php.c (x_php_keyword, extract_parenthesized): Update.
1548	* x-python.c (x_python_keyword, extract_parenthesized): Update.
1549	* x-scheme.c (x_scheme_keyword, read_object): Update.
1550	* x-sh.c (x_sh_keyword, read_command): Update.
1551	* x-tcl.c (x_tcl_keyword, read_command): Update.
1552
15532005-10-01  Bruno Haible  <bruno@clisp.org>
1554
1555	Support for context dependent translations in PO files.
1556	* message.h (MSGCTXT_SEPARATOR): New macro.
1557	(struct message_ty): Add 'msgctxt' field.
1558	(message_alloc): Add msgctxt argument.
1559	(is_header): New macro.
1560	(message_list_search, message_list_search_fuzzy,
1561	message_list_list_search, message_list_list_search_fuzzy,
1562	msgdomain_list_search, msgdomain_list_search_fuzzy): Add msgctxt
1563	argument.
1564	* message.c: Include xallocsa.h.
1565	(message_alloc): Add msgctxt argument.
1566	(message_copy): Update.
1567	(message_list_hash_insert_entry): New function.
1568	(message_list_append, message_list_prepend, message_list_insert_at,
1569	message_list_msgids_changed): Use it.
1570	(message_list_search): Add msgctxt argument.
1571	(message_list_search_fuzzy_inner): Likewise.
1572	(message_list_search_fuzzy): Likewise.
1573	(message_list_list_search): Likewise.
1574	(message_list_list_search_fuzzy): Likewise.
1575	* msgl-ascii.c (is_ascii_message): Also test the msgctxt.
1576	* write-po.c (message_print): Warn if some msgctxt has non-ASCII
1577	characters. Write out the msgctxt.
1578	(message_print_obsolete): Likewise.
1579	(msgdomain_list_print_po): Use is_header macro.
1580	(msgdomain_list_print): Likewise. Bail out if contexts are present and
1581	cannot be stored in the given output format.
1582	* write-properties.c (write_message): Use is_header macro.
1583	* po-lex.c: Include message.h.
1584	(keyword_p): Also recognize 'msgctxt'.
1585	(po_gram_lex): Bail out if a string contains the EOT character.
1586	* read-po-abstract.h (struct abstract_po_reader_class_ty): Add msgctxt
1587	argument to directive_message function pointer.
1588	(po_callback_message): Add msgctxt argument.
1589	* read-po-abstract.c (call_directive_message, po_callback_message): Add
1590	msgctxt argument.
1591	* po-gram-gen.y (do_callback_message): Add msgctxt argument. Use
1592	is_header macro.
1593	(MSGCTXT): New token type.
1594	(message_intro, MSGCTXT): Declare return types.
1595	(message): Use message_intro instead of just MSGID.
1596	(message_intro): New nonterminal reduction rules.
1597	* read-properties.c (properties_parse): Update.
1598	* read-stringtable.c (stringtable_parse): Update.
1599	* read-po.h (struct default_po_reader_class_ty): Add msgctxt argument
1600	to add_message field.
1601	(default_directive_message, default_add_message): Likewise.
1602	* read-po.c (call_add_message, default_directive_message,
1603	default_add_message): Add msgctxt argument.
1604	* msgl-iconv.c (convert_msgid): Also convert the msgctxt.
1605	(iconv_message_list): Use is_header macro. Test also the msgctxt for
1606	non-ASCII-ness.
1607	* msgl-cat.c (is_message_selected, is_message_needed): Use is_header
1608	macro.
1609	(catenate_msgdomain_list): Likewise. Update.
1610	* msgl-equal.c (message_equal): Likewise. Also compare the msgctxt.
1611	* msgcmp.c (is_message_selected): Use is_header macro.
1612	(match_domain): Update.
1613	(compare): Use is_header macro.
1614	* msgmerge.c (message_merge, match_domain): Use is_header macro.
1615	Update.
1616	(merge): Update.
1617	* msgattrib.c (is_message_selected): Use is_header macro.
1618	(process_message_list): Likewise. Update.
1619	* msgl-charset.c (compare_po_locale_charsets): Use is_header macro.
1620	* msgexec.c (process_string): Also set or unset MSGEXEC_MSGCTXT
1621	variable.
1622	* msgfilter.c (process_message): Use is_header macro.
1623	* msggrep.c (grep_task): Increase size from 3 to 4.
1624	(long_options): Add --msgctxt option.
1625	(main): Accept -J/--msgctxt option. Update grep_pass numbers.
1626	(no_pass): Update.
1627	(usage): Mention -J option.
1628	(is_message_selected): Use is_header macro. Perform a new grep pass on
1629	the msgctxt.
1630	* msginit.c (fill_header): Use is_header macro. Update.
1631	(update_msgstr_plurals): Update.
1632	* read-mo.c (read_mo_file): Split msgid into msgctxt and msgid. Update.
1633	* read-tcl.c (msgdomain_read_tcl): Use is_header macro.
1634	* msgl-check.c (check_plural): Update.
1635	(check_message): Use is_header macro.
1636	* write-mo.c (write_table): Write msgid with msgctxt, instead of just
1637	the msgid.
1638	* write-java.c: Include xerror.h.
1639	(write_java_code): Update.
1640	(msgdomain_write_java): Give error if some entries have a context.
1641	* write-csharp.c: Include xerror.h.
1642	(write_csharp_code): Update.
1643	(msgdomain_write_csharp): Give error if some entries have a context.
1644	* write-resources.c (msgdomain_write_csharp_resources): Bail out if
1645	contexts are present and cannot be stored in the given output format.
1646	* write-tcl.c (write_msg): Use is_header macro.
1647	(msgdomain_write_tcl): Bail out if contexts are present and cannot be
1648	stored in the given output format.
1649	* write-qt.c: Include hash.h.
1650	(write_qm): Use is_header macro. Write out msgctxt if present. Write
1651	a contexts section if appropriate.
1652	* msgfmt.c (msgfmt_add_message): Add msgctxt argument.
1653	(msgfmt_frob_new_message): Use is_header macro.
1654	* xgettext.c (exclude_directive_message): Add msgctxt argument.
1655	(remember_a_message, construct_header, finalize_header): Update.
1656	* x-po.c (extract_add_message): Add msgctxt argument. Update.
1657	(extract): Update.
1658	* gettext-po.h (po_message_msgctxt, po_message_set_msgctxt): New
1659	declarations.
1660	* gettext-po.c (po_file_domain_header): Use is_header macro.
1661	(po_message_create): Update.
1662	(po_message_msgctxt, po_message_set_msgctxt): New functions.
1663	(po_message_check_all): Use is_header macro.
1664
16652005-10-01  Bruno Haible  <bruno@clisp.org>
1666
1667	Avoid a crash when msgcat or msgconv is asked to convert a non-ASCII
1668	msgid.
1669	* msgl-iconv.h (iconv_message_list): Change return type to boolean.
1670	* msgl-iconv.c (iconv_message_list): Likewise. Return true if some
1671	msgids change.
1672	* msgl-cat.c (catenate_msgdomain_list): Exit with an error message if
1673	the msgids change through charset conversion.
1674
16752005-10-04  Bruno Haible  <bruno@clisp.org>
1676
1677	* format.c: Include stdbool.h.
1678	(check_msgid_msgstr_format): Enable strict checking also when
1679	msgid_plural is present but nplurals = 1.
1680	Reported by Farzaneh Sarafraz <farzaneh@farsiweb.info>.
1681
16822005-10-01  Bruno Haible  <bruno@clisp.org>
1683
1684	Change msgattrib to no longer remove extracted comments and file
1685	positions when marking messages obsolete.
1686	* msgmerge.c (merge): When marking a message obsolete, remove the
1687	extracted comments and file positions.
1688	* write-po.c (message_print_obsolete): Also print the extracted
1689	comments and file positions.
1690
16912005-09-25  Bruno Haible  <bruno@clisp.org>
1692
1693	Support for Python source encodings (PEP 0263).
1694	* x-python.c: Include progname.h, basename.h, xerror.h, strstr.h,
1695	c-ctype.h, utf8-ucs4.h.
1696	(phase1_pushback): Reduce size.
1697	(UEOF): New macro.
1698	(phase2_pushback, phase2_pushback_length): New variables.
1699	(phase2_getc, phase2_ungetc): New functions.
1700	(struct unicode_string_buffer): New structure type.
1701	(init_unicode_string_buffer, unicode_string_buffer_append_unicode_grow,
1702	unicode_string_buffer_append_unicode, unicode_string_buffer_result,
1703	free_unicode_string_buffer): New functions.
1704	(comment_buffer): New variable.
1705	(buffer, bufmax, buflen): Remove variables.
1706	(comment_start, comment_add, comment_line_end): Rewritten.
1707	(comment_at_start): New function.
1708	(xgettext_current_file_source_encoding): New variable.
1709	(xgettext_current_file_source_iconv): New variable.
1710	(set_current_file_source_encoding, try_to_extract_coding): New
1711	functions.
1712	(continuation_or_nonblank_line): New variable.
1713	(phase3_getc): Renamed from phase2_getc. Use phase2_getc instead of
1714	phase1_getc. Return a Unicode character. Call try_to_extract_coding
1715	when seeing a comment among the first two lines.
1716	(phase3_ungetc): Renamed from phase2_ungetc. Use phase2_ungetc instead
1717	of phase1_ungetc.
1718	(UNICODE, IS_UNICODE, UNICODE_VALUE): New macros.
1719	(struct mixed_string_buffer): New structure type.
1720	(init_mixed_string_buffer, mixed_string_buffer_append_byte,
1721	mixed_string_buffer_append_unicode_grow,
1722	mixed_string_buffer_append_unicode,
1723	mixed_string_buffer_flush_utf16_surr,
1724	mixed_string_buffer_flush_curr_buffer, mixed_string_buffer_append,
1725	mixed_string_buffer_result, free_mixed_string_buffer): New functions.
1726	(phase7_getuc): Use phase2_getc instead of phase1_getc. Return a
1727	Unicode character except for \ooo and \xnn.
1728	(phase5_get): Operate on the level of Unicode characters instead of
1729	at the level of bytes. Use a mixed_string_buffer to accumulate a
1730	string literal.
1731	(extract_parenthesized): Set xgettext_current_source_encoding to UTF-8
1732	while passing UTF-8 strings to the xgettext main code.
1733	(extract_python): Initialize xgettext_current_file_source_encoding and
1734	xgettext_current_source_encoding.
1735
17362005-09-25  Bruno Haible  <bruno@clisp.org>
1737
1738	* x-csharp.c (phase2_getc): Fix mis-use of iconv() when the source
1739	encoding is neither ASCII nor UTF-8.
1740
17412005-09-20  Bruno Haible  <bruno@clisp.org>
1742
1743	* msgattrib.c (main): Invoke bindtextdomain for bison-runtime.
1744	* msgcat.c (main): Likewise.
1745	* msgcmp.c (main): Likewise.
1746	* msgcomm.c (main): Likewise.
1747	* msgconv.c (main): Likewise.
1748	* msgen.c (main): Likewise.
1749	* msgexec.c (main): Likewise.
1750	* msgfilter.c (main): Likewise.
1751	* msggrep.c (main): Likewise.
1752	* msginit.c (main): Likewise.
1753	* msgmerge.c (main): Likewise.
1754	* msgunfmt.c (main): Likewise.
1755	* msguniq.c (main): Likewise.
1756	* xgettext.c (main): Likewise.
1757	* Makefile.am (DEFS): Also define BISON_LOCALEDIR.
1758
17592005-09-17  Bruno Haible  <bruno@clisp.org>
1760
1761	* msgl-check.h: New file.
1762	* msgl-check.c: New file, mostly extracted from msgfmt.c.
1763	* Makefile.am (noinst_HEADERS): Add msgl-check.h.
1764	(libgettextsrc_la_SOURCES): Add msgl-check.c, plural-eval.c.
1765	(msgfmt_SOURCES): Remove plural-eval.c.
1766	* format.c (check_msgid_msgstr_format): Add const to argument type.
1767	* format.h (check_msgid_msgstr_format): Add const to argument type.
1768	* gettext-po.c: Include msgl-check.h.
1769	(po_file_check_all, po_message_check_all): New functions.
1770	(po_xerror_logger): Remove function.
1771	(po_message_check_format): Use new check_message function.
1772	* gettext-po.h (po_file_check_all, po_message_check_all): New
1773	declarations.
1774	* msgfmt.c: Include msgl-check.h instead of setjmp.h, signal.h,
1775	stdarg.h, po-xerror.h, format.h, plural-exp.h, plural-table.h,
1776	strstr.h.
1777	(SIZEOF, sigjmp_buf, sigsetjmp, siglongjmp, USE_SIGINFO,
1778	sigfpe_exit, sigfpe_code, sigfpe_handler, install_sigfpe_handler,
1779	uninstall_sigfpe_handler, check_plural_eval, plural_help, check_plural,
1780	curr_mp, curr_msgid_pos, formatstring_error_logger, check_pair,
1781	check_header_entry): Move definitions to msgl-check.c.
1782	(main): Update.
1783	(msgfmt_frob_new_message): Call check_message instead of
1784	check_header_entry and check_pair.
1785
17862005-09-17  Bruno Haible  <bruno@clisp.org>
1787
1788	Use new error handlers in libgettextpo.
1789	* gettext-po.h (PO_SEVERITY_WARNING, PO_SEVERITY_ERROR,
1790	PO_SEVERITY_FATAL_ERROR): New macros.
1791	(po_xerror_handler): New structure type.
1792	(po_xerror_handler_t): New type.
1793	(po_file_read): Change signature; version 3.
1794	(po_file_write): Change signature; version 2.
1795	(po_message_check_format): Change signature; version 2.
1796	* gettext-po.c: Include po-xerror.h.
1797	(po_file_read): New implementation. Renamed old implementation to
1798	po_file_read_v2.
1799	(po_file_write): New implementation. Keep old implementation.
1800	(po_xerror_logger): New function.
1801	(po_message_check_format): New implementation. Keep old implementation.
1802
18032005-09-17  Bruno Haible  <bruno@clisp.org>
1804
1805	* msgfmt.c (check_plural): Fix broken determination of max_nplurals.
1806
18072005-09-17  Bruno Haible  <bruno@clisp.org>
1808
1809	New, higher-level error message output primitives.
1810	* po-xerror.h: New file.
1811	* po-xerror.c: New file.
1812	* open-po.c: Include xerror.h, po-xerror.h, not error.h.
1813	(open_po_file): Use po_xerror instead of error.
1814	* po-charset.c: Include po-xerror.h, not po-error.h.
1815	(po_lex_charset_set): Use po_xerror instead of po_multiline_warning.
1816	* po-lex.c: Include xerror.h, po-error.h, po-xerror.h.
1817	(po_gram_error, po_gram_error_at_line): Use po_xerror instead of
1818	po_error or po_error_at_line. Don't decrement error_message_count;
1819	let the caller do this instead.
1820	(mbfile_getc, lex_getc): Use po_xerror instead of po_error.
1821	* po-lex.h: Don't include po-error.h.
1822	(po_gram_error, po_gram_error_at_line): Remove optimized macros.
1823	* read-po-abstract.c: Include xerror.h, po-xerror.h.
1824	(po_scan): Use po_xerror instead of po_error.
1825	* read-po.c: Include po-xerror.h.
1826	(default_add_message): Use po_xerror2 instead of po_gram_error_at_line
1827	pair.
1828	* read-properties.c: Include xerror.h, po-xerror.h, not exit.h.
1829	(phase1_getc, phase4_getuc): Use po_xerror instead of error.
1830	* read-stringtable.c: Include xerror.h, po-xerror.h, not exit.h.
1831	(phase1_getc, read_string, stringtable_parse): Use po_xerror instead of
1832	error.
1833	* write-po.c: Include po-xerror.h, not exit.h, po-error.h.
1834	(wrap): Pass the entire message as argument. Use po_xerror instead of
1835	po_error.
1836	(message_print, message_print_obsolete): Update. Use po_xerror instead
1837	of po_multiline_warning.
1838	(msgdomain_list_print): Use po_xerror instead of po_error or
1839	po_error_at_line.
1840	* msgl-iconv.h (struct conversion_context): Add 'message' field.
1841	* msgl-iconv.c: Include xerror.h, po-xerror.h, not error.h, exit.h.
1842	(conversion_error): Use po_xerror instead of error.
1843	(iconv_message_list): Likewise. Set the entire message in the
1844	conversion context before calling convert_*.
1845	(iconv_msgdomain_list): Use po_xerror instead of error.
1846	* xgettext.c (from_current_source_encoding): Set context.message.
1847	* msgfmt.c: Include po-xerror.h.
1848	(check_plural_eval): Pass the entire header as argument. Use po_xerror
1849	instead of error_at_line.
1850	(plural_help): New function, extracted from check_plural.
1851	(check_plural): Change type of local variables has_plural, min_pos,
1852	max_pos. Use po_xerror2 instead of error_at_line pairs. Use po_xerror
1853	instead of error_at_line.
1854	(curr_mp): New variable.
1855	(formatstring_error_logger): Use po_xerror instead of vfprintf.
1856	(check_pair): Take the entire message as argument. Use po_xerror
1857	instead of error_at_line. Set curr_mp before calling
1858	check_msgid_msgstr_format.
1859	(check_header_entry): Take the entire header message as argument. Use
1860	po_xerror instead of multiline_error.
1861	(msgfmt_frob_new_message): Update.
1862	* msgcmp.c (match_domain): Decrement error_message_count between two
1863	error messages that belong together.
1864	* msgmerge.c (match_domain): Decrement error_message_count between two
1865	error messages that belong together.
1866	* Makefile.am (noinst_HEADERS): Add po-xerror.h.
1867	(COMMON_SOURCE): Add po-xerror.c.
1868
18692005-09-16  Bruno Haible  <bruno@clisp.org>
1870
1871	* gettext-po.c (po_file_read): Set gram_max_allowed_errors to a large
1872	integer, so that po_gram_error doesn't cause the program to exit().
1873
18742005-09-14  Bruno Haible  <bruno@clisp.org>
1875
1876	* x-csharp.c: Include xerror.h.
1877
18782005-09-11  Bruno Haible  <bruno@clisp.org>
1879
1880	* user-email.sh.in: Add support for Mozilla Thunderbird and GNOME
1881	Evolution 2. Improve mutt support.
1882
18832005-08-26  Bruno Haible  <bruno@clisp.org>
1884
1885	* plural-table.c (plural_table): Add an entry about Romanian.
1886	Explanations by Eddy Petri��or <eddy.petrisor@gmail.com>.
1887
18882005-08-23  Bruno Haible  <bruno@clisp.org>
1889
1890	* write-mo.h (byteswap): New variable.
1891	* write-mo.c: Include byteswap.h.
1892	(byteswap): New variable.
1893	(BSWAP32): New macro.
1894	(write_table): If requested, byteswap all 32-bit values before writing
1895	them out.
1896	* msgfmt.c (long_options): Add --endianness.
1897	(main): Accept --endianness argument and set byteswap.
1898
18992005-08-08  Bruno Haible  <bruno@clisp.org>
1900
1901	* msginit.c (catalogname_for_locale): Add support for Old English,
1902	Hyam, Jju, Tyap, Maithili, Nahuatl, Low Saxon, Northern Sotho, P��ez,
1903	Tetum, Zapotec.
1904	(englishname_of_language): Add support for Old English, Hyam, Jju,
1905	Tyap, Kagoma, Maithili, Mayan, Nahuatl, Low Saxon, Northern Sotho,
1906	P��ez, Tetum, Zapotec.
1907
19082005-05-21  Bruno Haible  <bruno@clisp.org>
1909
1910	New undocumented option, used by glocale PO files.
1911	* msgfmt.c (include_fuzzies): Renamed from include_all.
1912	(include_untranslated): New variable.
1913	(long_options): Add --use-untranslated.
1914	(main): Handle --use-untranslated.
1915	(msgfmt_frob_new_message): Test include_untranslated.
1916	(msgfmt_comment_special): Update.
1917
19182005-07-26  Bruno Haible  <bruno@clisp.org>
1919
1920	* user-email.sh.in (datarootdir): New variable.
1921
19222005-07-26  Bruno Haible  <bruno@clisp.org>
1923
1924	Fix compilation error on systems without iconv().
1925	* xgettext.c (convert_string): Remove fallback macro definition.
1926	(from_current_source_encoding) [!HAVE_ICONV]: Just abort here.
1927
19282005-07-17  Bruno Haible  <bruno@clisp.org>
1929
1930	* po-lex.c (mb_width): Remove gcc warnings on platform with unsigned
1931	'char' type (e.g. Linux/PowerPC).
1932	Reported by Jeff Rizzo <riz@netbsd.org>.
1933
19342005-07-05  Bruno Haible  <bruno@clisp.org>
1935
1936	* Makefile.am (msgmerge_SOURCES, xgettext_SOURCES, msgattrib_SOURCES,
1937	msgcat_SOURCES, msgcomm_SOURCES, msgconv_SOURCES, msgen_SOURCES,
1938	msgfilter_SOURCES, msggrep_SOURCES, msguniq_SOURCES): On mingw, use
1939	C++ source code.
1940	(libgettextsrc_la_LDFLAGS, libgettextpo_la_LDFLAGS): Use LTNOUNDEF.
1941	(format_CFLAGS): New variable.
1942	(format.lo): New rule.
1943	(msg*_CFLAGS, xgettext_CFLAGS): Remove variables.
1944	(msg*_CPPFLAGS, xgettext_CPPFLAGS): New variables.
1945
19462005-05-27  Bruno Haible  <bruno@clisp.org>
1947
1948	* write-po.c (wrap): Output \a and \v as an escape sequence, like
1949	\b, \f, \r.
1950	Suggested by Asgeir Frimannsson <asgeirf@redhat.com>.
1951
19522005-05-05  Bruno Haible  <bruno@clisp.org>
1953
1954	* Makefile.am (msgfmt_SOURCES): Add hash-string.c.
1955	* Makefile.msvc (msgfmt_OBJECTS): Add hash-string.obj.
1956	(hash-string.obj): New rule.
1957	* Makefile.vms (msgfmt_OBJECTS): Add hash-string.obj.
1958	(hash-string.obj): New rule.
1959
19602005-05-01  Bruno Haible  <bruno@clisp.org>
1961
1962	* x-sh.c (open_singlequote_terminator): New variable.
1963	(saw_opening_singlequote): Set it.
1964	(phase2_getc): Handle the case of open_singlequote_terminator == '"'.
1965	(read_word): Likewise. Treat i18n quotes like single quotes with
1966	terminator '"'.
1967	Reported by Jakub Bogusz <qboosh@pld-linux.org>.
1968
19692005-05-01  Bruno Haible  <bruno@clisp.org>
1970
1971	Improved error message.
1972	* msgl-iconv.h (struct conversion_context): New type.
1973	(convert_string): Add context argument.
1974	* msgl-iconv.c (conversion_error): New function.
1975	(convert_string, convert_string_list, convert_msgid, convert_msgstr):
1976	Add context argument.
1977	(iconv_message_list): Construct context for them.
1978	* xgettext.c (convert_string): Add context argument.
1979	(from_current_source_encoding): Construct context for convert_string.
1980	Reported by Hans Ulrich Niedermann <debian@n-dimensional.de>.
1981
19822005-04-18  Bruno Haible  <bruno@clisp.org>
1983
1984	* po-lex.h (po_gram_error, po_gram_error_at_line): Test for
1985	__APPLE_CC__ > 1. Needed because gcc-4.0 defines __APPLE_CC__ and
1986	implements __VA_ARGS__ correctly.
1987	* po-lex.c (po_gram_error, po_gram_error_at_line): Likewise.
1988	* read-stringtable.c (phase2_getc): Optimize UTF-8 code. Avoids
1989	gcc-4.0 warnings.
1990
19912006-06-21  Bruno Haible  <bruno@clisp.org>
1992
1993	* gettext-0.14.6 released.
1994
19952006-06-21  Bruno Haible  <bruno@clisp.org>
1996
1997	* Makefile.am (CLEANFILES): Add msgfmt.net.exe.mdb,
1998	msgunfmt.net.exe.mdb.
1999
20002006-06-21  Bruno Haible  <bruno@clisp.org>
2001
2002	* gettext-po.h (LIBGETTEXTPO_VERSION): Bump version number.
2003
20042006-06-20  Bruno Haible  <bruno@clisp.org>
2005
2006	* format-gcc-internal.c (struct unnumbered_arg): Remove type.
2007	(struct numbered_arg): New type.
2008	(struct spec): Use it.
2009	(isdigit): New macro.
2010	(numbered_arg_compare): New function.
2011	(format_parse, format_free, format_check, format_print): Update to
2012	GCC 4.1 internal format strings.
2013	Reported by G��ran Uddeborg <goeran@uddeborg.se>.
2014
20152005-05-23  Bruno Haible  <bruno@clisp.org>
2016
2017	* gettext-0.14.5 released.
2018
20192005-05-23  Bruno Haible  <bruno@clisp.org>
2020
2021	* gettext-po.h (LIBGETTEXTPO_VERSION): Bump version number.
2022
20232005-05-21  Bruno Haible  <bruno@clisp.org>
2024
2025	* format-gcc-internal.c: Update for GCC 4.0.
2026	(FAT_POINTER, FAT_SIZE_LONGLONG, FAT_SIZE_WIDE, FAT_SIZE_MASK): New
2027	enum items.
2028	(FAT_*): Update.
2029	(struct spec): Add uses_err_no field.
2030	(format_parse): Initialize uses_err_no field. Handle %q flag. Handle
2031	'll', 'w' size specifiers. Handle %<, %>, %', %m, %p, %J directives.
2032	(format_check): Also check that the use of err_no is the same.
2033	Based on a patch by Jakub Jelinek <jakub@redhat.com>.
2034
20352005-04-11  Bruno Haible  <bruno@clisp.org>
2036
2037	* gettext-0.14.4 released.
2038
20392005-04-11  Bruno Haible  <bruno@clisp.org>
2040
2041	* gettext-po.h (LIBGETTEXTPO_VERSION): Bump version number.
2042
20432005-03-14  Bruno Haible  <bruno@clisp.org>
2044
2045	* gettext-0.14.3 released.
2046
20472005-03-08  Bruno Haible  <bruno@clisp.org>
2048
2049	* gettext-po.h (LIBGETTEXTPO_VERSION): Bump version number.
2050
20512005-02-26  Bruno Haible  <bruno@clisp.org>
2052
2053	* format-scheme.c (format_arg_type): Add FAT_COMPLEX. Remove
2054	FAT_FUNCTION.
2055	(make_intersected_element): Simplify also the intersection with
2056	FAT_COMPLEX.
2057	(make_union_element): Simplify also the union with FAT_COMPLEX.
2058	(IIC): New array.
2059	(nocheck_params): Remove function.
2060	(parse_upto): Remove handling of ~W, ~<, ~>.
2061	Implement non-CL handling of ~C, ~I, ~_, ~/, ~T.
2062	Implement handling of ~Y, ~!, ~Q, ~K.
2063
20642005-02-26  Bruno Haible  <bruno@clisp.org>
2065
2066	* format-scheme.c (parse_upto): Remove support for ~!.
2067	Reported by Kevin Ryde <user42@zip.com.au>.
2068
20692005-02-24  Bruno Haible  <bruno@clisp.org>
2070
2071	* gettext-0.14.2 released.
2072
20732005-02-12  Bruno Haible  <bruno@clisp.org>
2074
2075	* Makefile.msvc (gettextpo.lib): Link with intl.lib as well.
2076
20772005-02-12  Bruno Haible  <bruno@clisp.org>
2078
2079	* Makefile.msvc (msginit_OBJECTS): Add plural-count.obj.
2080	* Makefile.vms (msginit_OBJECTS): Add plural-count.obj.
2081
20822005-02-10  Bruno Haible  <bruno@clisp.org>
2083
2084	* gettext-po.h (po_header_set_field): New declaration.
2085	* gettext-po.c (po_header_set_field): New function.
2086	Suggested by Ross Golder <ross@golder.org>.
2087
20882005-02-10  Bruno Haible  <bruno@clisp.org>
2089
2090	* gettext-po.h (LIBGETTEXTPO_VERSION): New macro.
2091	(libgettextpo_version): New declaration.
2092	* gettext-po.c (libgettextpo_version): New variable.
2093
20942005-02-10  Bruno Haible  <bruno@clisp.org>
2095
2096	* gettext-po.h (po_message_remove_filepos, po_message_add_filepos): New
2097	declarations.
2098	* gettext-po.c (po_message_remove_filepos, po_message_add_filepos): New
2099	functions.
2100	Suggested by Asgeir Frimannsson <asgeirf@redhat.com>.
2101
21022005-02-10  Bruno Haible  <bruno@clisp.org>
2103
2104	* gettext-po.h (po_message_set_extracted_comments): New declaration.
2105	* gettext-po.c (po_message_set_extracted_comments): New function.
2106	Suggested by Asgeir Frimannsson <asgeirf@redhat.com>.
2107
21082005-02-08  Bruno Haible  <bruno@clisp.org>
2109
2110	* msginit.c (get_user_email): Cast _() to 'char *', to avoid compiler
2111	warning.
2112
21132005-02-07  Bruno Haible  <bruno@clisp.org>
2114
2115	Make the tools work in the tr_TR locale.
2116	* po-charset.c: Include c-strcase.h instead of strcase.h.
2117	(po_charset_canonicalize): Use c_strcasecmp.
2118	* msgcmp.c: Include c-strcase.h instead of strcase.h.
2119	(compare): Use c_strncasecmp.
2120	* msginit.c: Include c-strcase.h instead of strcase.h.
2121	(content_type): Use c_strcasecmp.
2122	* msgmerge.c: Include c-strcase.h instead of strcase.h.
2123	(message_merge, merge): Use c_strncasecmp.
2124	* xgettext.c: Include c-strcase.h instead of strcase.h.
2125	(language_to_extractor): Use c_strcasecmp.
2126	Reported by Recai Okta�� <roktas@omu.edu.tr>.
2127
21282005-02-07  Bruno Haible  <bruno@clisp.org>
2129
2130	* project-id: Use LC_ALL=C to protect range expression against
2131	Estonian locale.
2132
21332005-02-06  Bruno Haible  <bruno@clisp.org>
2134
2135	Leave #: lines with unknown syntax alone instead of turning them into
2136	plain comments.
2137	* po-hash.h: Remove file.
2138	* po-hash-gen.y: Remove file.
2139	* read-po-abstract.c: Don't include po-hash.h.
2140	(po_parse_comment_filepos, po_parse_comment_solaris_filepos): New
2141	functions.
2142	(po_callback_comment_dispatcher): Call them instead of the old
2143	po_parse_comment_filepos.
2144	* read-stringtable.c: Don't include po-hash.h.
2145	* Makefile.am (noinst_HEADERS): Remove po-hash.h, po-hash-gen.h.
2146	(COMMON_SOURCE): Remove po-hash-gen.y.
2147	(BUILT_SOURCES): Remove po-hash-gen.c, po-hash-gen.h.
2148	* Makefile.msvc (OBJECTS): Remove po-hash-gen.obj.
2149	(po-hash-gen.obj): Remove rule.
2150	* Makefile.vms (OBJECTS): Remove po-hash-gen.obj.
2151	(po-hash-gen.obj): Remove rule.
2152	* FILES: Update.
2153	Reported by David Fraser <davidf@sjsoft.com>.
2154
21552005-02-04  Bruno Haible  <bruno@clisp.org>
2156
2157	* plural-table.c (plural_table): Add an entry about Vietnamese.
2158	Explanations by Clytie Siddall <clytie@riverland.net.au>.
2159
21602005-01-29  Bruno Haible  <bruno@clisp.org>
2161
2162	* Makefile.am (msgcmp_LDADD, msgfmt_LDADD, msgmerge_LDADD,
2163	msgunfmt_LDADD, xgettext_LDADD, msgattrib_LDADD, msgcat_LDADD,
2164	msgcomm_LDADD, msgconv_LDADD, msgen_LDADD, msgexec_LDADD,
2165	msgfilter_LDADD, msggrep_LDADD, msguniq_LDADD): Add INTL_MACOSX_LIBS.
2166
21672005-01-27  Bruno Haible  <bruno@clisp.org>
2168
2169	* msgfmt.c (formatstring_error_logger): Cast the fprrintf argument,
2170	to make it work on big-endian 64-bit machines.
2171
21722005-01-16  Bruno Haible  <bruno@clisp.org>
2173
2174	Support for Scheme.
2175	* message.h (format_type): New enum value 'format_scheme'.
2176	(NFORMATS): Increment.
2177	* message.c (format_language): Add format_scheme entry.
2178	(format_language_pretty): Likewise.
2179	* format.h (formatstring_scheme): New declaration.
2180	* format-scheme.c: New file, based on format-lisp.c.
2181	* format.c (formatstring_parsers): Add formatstring_scheme.
2182	* x-scheme.h: New file.
2183	* x-scheme.c: New file.
2184	* xgettext.c: Include x-scheme.h.
2185	(flag_table_scheme): New variable.
2186	(main): Invoke init_flag_table_scheme, x_scheme_extract_all,
2187	x_scheme_keyword.
2188	(usage): Mention Scheme source language.
2189	(xgettext_record_flag): Handle format_scheme.
2190	(language_to_extractor): Add Scheme rule.
2191	(extension_to_language): Add Scheme rule.
2192	* Makefile.am (noinst_HEADERS): Add x-scheme.h.
2193	(FORMAT_SOURCE): Add format-scheme.c.
2194	(xgettext_SOURCES): Add x-scheme.c.
2195	* Makefile.msvc (OBJECTS): Add format-scheme.obj.
2196	(xgettext_OBJECTS): Add x-scheme.obj.
2197	(format-scheme.obj, x-scheme.obj): New rules.
2198	* Makefile.vms (OBJECTS): Add format-scheme.obj.
2199	(xgettext_OBJECTS): Add x-scheme.obj.
2200	(format-scheme.obj, x-scheme.obj): New rules.
2201	* FILES: Update.
2202
22032005-01-08  Bruno Haible  <bruno@clisp.org>
2204
2205	* msggrep.c (grep_args, grep_path, grep_argv): Remove variables.
2206	(struct grep_task): New type.
2207	(grep_task): New variable.
2208	(main): Initialize grep_task instead of grep_args. Change processing
2209	of options 'E', 'F' to set a matcher, of 'e', 'f' to append to the
2210	pattern string, and of 'i' to set a boolean. Compile the patterns.
2211	(is_string_selected): Execute a compiled pattern instead of calling
2212	the grep program.
2213	(is_message_selected): Update.
2214	* Makefile.am (AM_CPPFLAGS): Add -I option for libgrep.
2215	(LIBGREP): New variable.
2216	(msggrep_LDADD): Add $(LIBGREP).
2217	* Makefile.msvc (INCLUDES): Add libgrep directory.
2218	(msggrep.exe): Link with libgrep.
2219	* Makefile.vms (INCLUDES): Add libgrep directory.
2220	(msggrep.exe): Link with libgrep.
2221
22222005-01-09  Bruno Haible  <bruno@clisp.org>
2223
2224	* msgl-ascii.h (is_ascii_msgdomain_list): New declaration.
2225	* msgl-ascii.c (is_ascii_msgdomain_list): New function.
2226	* x-po.c (header_charset): New variable.
2227	(extract_add_message): When seeing the header entry, store the charset
2228	in header_charset.
2229	(extract): Store the value of header_charset in the new constructed
2230	header entry.
2231	* xgettext.c (main): Convert the existing PO file to UTF-8 if it was
2232	not entirely ASCII.
2233	Reported by J��rg Schilling <schilling@fokus.fraunhofer.de>.
2234
22352005-01-08  Bruno Haible  <bruno@clisp.org>
2236
2237	* msggrep.c (usage): Explain COMMENT-PATTERN syntax as well.
2238
22392005-01-06  Bruno Haible  <bruno@clisp.org>
2240
2241	* x-tcl.c (read_word): Ignore non-space whitespace at the beginning.
2242	Reported by William J Poser <wjposer@ldc.upenn.edu>.
2243
22442005-01-06  Bruno Haible  <bruno@clisp.org>
2245
2246	* write-csharp.c (msgdomain_write_csharp): Don't call fclose after
2247	fwriteerror.
2248	* write-java.c (msgdomain_write_java): Likewise.
2249	* write-mo.c (msgdomain_write_mo): Likewise.
2250	* write-po.c (msgdomain_list_print): Likewise.
2251	* write-qt.c (msgdomain_write_qt): Likewise.
2252	* write-resources.c (execute_writing_input): Likewise.
2253	* write-tcl.c (msgdomain_write_tcl): Likewise.
2254
22552005-01-05  Bruno Haible  <bruno@clisp.org>
2256
2257	* msgattrib.c (main): Update year in --version output.
2258	* msgcat.c (main): Likewise.
2259	* msgcmp.c (main): Likewise.
2260	* msgcomm.c (main): Likewise.
2261	* msgconv.c (main): Likewise.
2262	* msgen.c (main): Likewise.
2263	* msgexec.c (main): Likewise.
2264	* msgfilter.c (main): Likewise.
2265	* msgfmt.c (main): Likewise.
2266	* msggrep.c (main): Likewise.
2267	* msginit.c (main): Likewise.
2268	* msgmerge.c (main): Likewise.
2269	* msgunfmt.c (main): Likewise.
2270	* msguniq.c (main): Likewise.
2271	* xgettext.c (main): Likewise.
2272
22732005-01-07  Bruno Haible  <bruno@clisp.org>
2274
2275	* gettext-po.c (po_file_read): Interpret "-" and "/dev/stdin" as
2276	denoting stdin.
2277	Suggested by Asgeir Frimannsson <asgeirf@redhat.com>.
2278
22792004-11-29  Bruno Haible  <bruno@clisp.org>
2280
2281	* Makefile.am (libgettextpo_la_LDFLAGS): Add @LTLIBINTL@ @LTLIBICONV@.
2282	Reported by Sam Steingold <sds@gnu.org>.
2283
22842004-10-01  Guido Flohr  <guido@imperia.net>
2285
2286	* x-perl.c (x_perl_prelex): Recognize function names starting with '-'.
2287	Reported by Ryan Anderson <ryan@autoweb.net>.
2288
22892004-09-16  Bruno Haible  <bruno@clisp.org>
2290
2291	* format.h (formatstring_error_logger_t): Modify decl for GCC <= 3.0.
2292	Reported by Jens A. Tkotz <jens@peino.de>.
2293
22942004-09-11  Bruno Haible  <bruno@clisp.org>
2295
2296	* Makefile.am (msginit_SOURCES): Add plural-count.c.
2297	* msginit.c (update_msgstr_plurals): New function.
2298	(main): Call it.
2299	* msgmerge.c (match_domain): Provide the appropriate number of plural
2300	forms for messages that don't occur in the Def.po file.
2301	Reported by Jens A. Tkotz <jens@peino.de>.
2302
23032004-09-06  Bruno Haible  <bruno@clisp.org>
2304
2305	* format.h (formatstring_error_logger_t): New type.
2306	(struct formatstring_parser): Change calling convention of 'check'
2307	method.
2308	(check_msgid_msgstr_format): New declaration.
2309	* format-awk.c (format_check): Use error_logger argument instead of
2310	noisy and error_at_line.
2311	* format-c.c (format_check): Likewise.
2312	* format-csharp.c (format_check): Likewise.
2313	* format-elisp.c (format_check): Likewise.
2314	* format-gcc-internal.c (format_check): Likewise.
2315	* format-java.c (format_check): Likewise.
2316	* format-librep.c (format_check): Likewise.
2317	* format-lisp.c (format_check): Likewise.
2318	* format-pascal.c (format_check): Likewise.
2319	* format-perl.c (format_check): Likewise.
2320	* format-perl-brace.c (format_check): Likewise.
2321	* format-php.c (format_check): Likewise.
2322	* format-python.c (format_check): Likewise.
2323	* format-qt.c (format_check): Likewise.
2324	* format-sh.c (format_check): Likewise.
2325	* format-tcl.c (format_check): Likewise.
2326	* format-ycp.c (format_check): Likewise.
2327	* format.c (check_msgid_msgstr_format): New function, extracted from
2328	msgfmt.c.
2329	* msgfmt.c (curr_msgid_pos): New variable.
2330	(formatstring_error_logger): New function.
2331	(check_pair): Use check_msgid_msgstr_format, formatstring_error_logger.
2332	* msgmerge.c (msgfmt_check_pair_fails): Update.
2333	* gettext-po.h (po_message_check_format): New declaration.
2334	* gettext-po.c (po_error_logger, po_message_check_format): New
2335	functions.
2336
23372004-09-05  Bruno Haible  <bruno@clisp.org>
2338
2339	* po-error.h: New file.
2340	* po-error.c: New file.
2341	* po-charset.c: Include po-error.h.
2342	(po_lex_charset_set): Use po_multiline_warning instead of
2343	multiline_warning.
2344	* po-lex.h: Include po-error.h.
2345	(po_gram_error): Use po_error instead of error.
2346	(po_gram_error_at_line): Use po_error_at_line instead of error_at_line.
2347	* po-lex.c (po_gram_error): Use po_error instead of error.
2348	(po_gram_error_at_line): Use po_error_at_line instead of error_at_line.
2349	(mbfile_getc, lex_getc): Use po_error instead of error.
2350	* read-po-abstract.c (po_scan): Likewise.
2351	* write-po.c: Include po-error.h instead of error.h.
2352	(wrap): Use po_error instead of error.
2353	(message_print, message_print_obsolete): Use po_multiline_warning
2354	instead of multiline_warning.
2355	(msgdomain_list_print): Use po_error instead of error, po_error_at_line
2356	instead of error_at_line.
2357	* str-list.h (string_list_join): New declaration.
2358	* str-list.c (string_list_join): New function.
2359	* message.h (message_list_insert_at): New declaration.
2360	* message.c (message_list_insert_at): New function.
2361	* gettext-po.h (po_filepos_t): New type.
2362	(struct po_error_handler, po_error_handler_t): New types.
2363	(po_file_create): New declaration.
2364	(po_file_read): Add handler argument.
2365	(po_file_write, po_message_insert, po_message_create,
2366	po_message_set_msgid, po_message_set_msgid_plural,
2367	po_message_set_msgstr, po_message_set_msgstr_plural,
2368	po_message_comments, po_message_set_comments,
2369	po_message_extracted_comments, po_message_filepos,
2370	po_message_set_obsolete, po_message_set_fuzzy, po_message_set_format,
2371	po_filepos_file, po_filepos_start_line): New declarations.
2372	* gettext-po.c (po_file_create): New function.
2373	(po_file_read): Add handler argument. Keep an old version for backward
2374	compatibility.
2375	(po_file_write): New function.
2376	(po_message_iterator): Store more information, to make
2377	po_message_insert possible.
2378	(po_message_iterator_free): Update.
2379	(po_next_message): Don't crash if iterator->mlp is NULL.
2380	(po_message_insert): New function.
2381	(po_message_create): New function.
2382	(po_message_set_msgid, po_message_set_msgid_plural,
2383	po_message_set_msgstr, po_message_set_msgstr_plural,
2384	po_message_comments, po_message_set_comments,
2385	po_message_extracted_comments, po_message_filepos,
2386	po_message_set_obsolete, po_message_set_fuzzy, po_message_set_format,
2387	po_filepos_file, po_filepos_start_line): New functions.
2388	* Makefile.am (noinst_HEADERS): Add po-error.h.
2389	(COMMON_SOURCE): Add po-error.c.
2390	* Makefile.msvc (OBJECTS): Add po-error.obj.
2391	(po-error.obj): New rule.
2392	* Makefile.vms (OBJECTS): Add po-error.obj.
2393	(po-error.obj): New rule.
2394	* FILES: Update.
2395
23962004-09-03  Bruno Haible  <bruno@clisp.org>
2397
2398	* Makefile.am (msginit_LDADD): Use the INTL_MACOSX_LDFLAGS.
2399
24002004-08-30  Bruno Haible  <bruno@clisp.org>
2401
2402	* plural-table.c (plural_table): Czech is now like Slovak.
2403	Reported by Stepan Kasal <kasal@ucw.cz>.
2404
24052004-06-23  Bruno Haible  <bruno@clisp.org>
2406
2407	* x-c.c (phase1_getc): Fix phase0_getc invocation.
2408	Reported by Matt Dreezer <matthew.dreezer@edl.uk.eds.com>.
2409
24102004-05-14  Bruno Haible  <bruno@clisp.org>
2411
2412	* format-java.c (message_format_parse): Fix argument of freesa() calls.
2413
24142004-03-19  Bruno Haible  <bruno@clisp.org>
2415
2416	* Makefile.am (install-exec-clean): Don't remove libgettextsrc.a on
2417	AIX.
2418	Reported by Kouichi Hashikawa <z01a7ksy@cs.ecip.tohoku.ac.jp>.
2419
24202004-03-14  Bruno Haible  <bruno@clisp.org>
2421
2422	* format-lisp.c (parse_upto): Add integer restriction for the dispatch
2423	argument in ~[...~].
2424
24252004-03-02  Bruno Haible  <bruno@clisp.org>
2426
2427	* read-csharp.c (msgdomain_read_csharp): Extend the lang -> frobbedlang
2428	mapping so as to support Serbian and Uzbek locales.
2429	* write-csharp.c (msgdomain_write_csharp): Likewise.
2430	Reported by Jorn Baayen <jbaayen@dds.nl>.
2431
24322004-02-27  Bruno Haible  <bruno@clisp.org>
2433
2434	* plural-table.c (plural_table): Add an entry about Serbian.
2435	Reported by Danilo Segan <danilo@gnome.org>.
2436
24372004-01-29  Bruno Haible  <bruno@clisp.org>
2438
2439	* gettext-0.14.1 released.
2440
24412004-01-28  Bruno Haible  <bruno@clisp.org>
2442
2443	* gettext-0.14 released.
2444
24452004-01-18  Bruno Haible  <bruno@clisp.org>
2446
2447	* msginit.c (catalogname_for_locale): Add entries for Akan, Avaric,
2448	Bambara, Cree, Divehi (Maldivian), ��w��, Igbo, Kongo, Kanuri, Ganda,
2449	Luba-Katanga, Ojibwa, Venda.
2450	(englishname_of_language): Likewise, and also for Fulah (Fulfulde).
2451
24522004-01-09  Bruno Haible  <bruno@clisp.org>
2453
2454	* format.h (struct formatstring_parser): Add 'translated' argument to
2455	parse function.
2456	(get_sysdep_c_format_directives): Renamed from
2457	get_c99_format_directives. Add 'translated' argument. Change meaning
2458	of endpos in returned array.
2459	* format-c.c (struct spec): Rename field c99_directives to
2460	sysdep_directives, and c99_directives_count to sysdep_directives_count.
2461	(format_parse): Add 'translated' argument. Handle 'I' flag. Store the
2462	pointer past the '>' character instead of the pointer to the '>'.
2463	(format_c_parse, format_objc_parse): Add 'translated' argument.
2464	(get_sysdep_c_format_directives): Renamed from
2465	get_c99_format_directives. Add 'translated' argument.
2466	* format-awk.c (format_parse): Add 'translated' argument.
2467	* format-csharp.c (format_parse): Likewise.
2468	* format-elisp.c (format_parse): Likewise.
2469	* format-gcc-internal.c (format_parse): Likewise.
2470	* format-java.c (format_parse): Likewise.
2471	* format-librep.c (format_parse): Likewise.
2472	* format-lisp.c (format_parse): Likewise.
2473	* format-pascal.c (format_parse): Likewise.
2474	* format-perl-brace.c (format_parse): Likewise.
2475	* format-perl.c (format_parse): Likewise.
2476	* format-php.c (format_parse): Likewise.
2477	* format-python.c (format_parse): Likewise.
2478	* format-qt.c (format_parse): Likewise.
2479	* format-sh.c (format_parse): Likewise.
2480	* format-tcl.c (format_parse): Likewise.
2481	* format-ycp.c (format_parse): Likewise.
2482	* msgfmt.c (check_pair): Update.
2483	* msgmerge.c (msgfmt_check_pair_fails): Likewise.
2484	* read-mo.c (get_sysdep_string): Don't add '<'...'>' around segments
2485	of length 1.
2486	(read_mo_file): Treat major revision 1 like major revision 0.
2487	* write-mo.c (write_table): Update. Use major revision 1 if "I" occurs
2488	among the sysdep segments.
2489	* xgettext.c (set_format_flags_from_context, remember_a_message,
2490	remember_a_message_plural): Update.
2491
24922004-01-14  Bruno Haible  <bruno@clisp.org>
2493
2494	* msginit.c (fill_header): Avoid a NULL pointer access when the header
2495	has no comment attached to it.
2496	Reported by Josep Puigdemont <baldrick@terra.es>.
2497
24982004-01-09  Bruno Haible  <bruno@clisp.org>
2499
2500	* msgattrib.c (main): Update year in --version output.
2501	* msgcat.c (main): Likewise.
2502	* msgcmp.c (main): Likewise.
2503	* msgcomm.c (main): Likewise.
2504	* msgconv.c (main): Likewise.
2505	* msgen.c (main): Likewise.
2506	* msgexec.c (main): Likewise.
2507	* msgfilter.c (main): Likewise.
2508	* msgfmt.c (main): Likewise.
2509	* msggrep.c (main): Likewise.
2510	* msginit.c (main): Likewise.
2511	* msgmerge.c (main): Likewise.
2512	* msgunfmt.c (main): Likewise.
2513	* msguniq.c (main): Likewise.
2514	* xgettext.c (main): Likewise.
2515
25162003-12-29  Bruno Haible  <bruno@clisp.org>
2517
2518	* xgettext.h: Include stdlib.h, str-list.h.
2519	(struct refcounted_string_list_ty): New type.
2520	(add_reference, drop_reference): New functions.
2521	(savable_comment, savable_comment_add, savable_comment_reset,
2522	savable_comment_to_xgettext_comment): New declarations.
2523	* xgettext.c (savable_comment): New variable.
2524	(savable_comment_add, savable_comment_reset,
2525	savable_comment_to_xgettext_comment): New functions.
2526	* x-java.c (struct refcounted_string_list_ty, comment, add_reference,
2527	drop_reference, x_java_comment_add, x_java_comment_reset,
2528	x_java_comment_to_xgettext_comment): Remove. Use replacement from
2529	xgettext.{h,c} instead.
2530	* x-csharp.c (struct refcounted_string_list_ty, comment, add_reference,
2531	drop_reference, x_csharp_comment_add, x_csharp_comment_reset,
2532	x_csharp_comment_to_xgettext_comment): Remove. Use replacement from
2533	xgettext.{h,c} instead.
2534	* x-c.c (comment_line_end): Call savable_comment_add instead of
2535	xgettext_comment_add.
2536	(struct token_ty): Add 'comment' field.
2537	(free_token): Free it.
2538	(phase5_get): Initialize token's 'comment' field.
2539	(phase6_get): Call savable_comment_reset instead of
2540	xgettext_comment_reset.
2541	(phase8a_get): Initialize token's 'comment' field.
2542	(phase8b_get): Call savable_comment_reset instead of
2543	xgettext_comment_reset.
2544	(phase8c_get): In @"...", use the comment of the first token, not of
2545	the second.
2546	(struct xgettext_token_ty): Add 'comment' field.
2547	(x_c_lex): Deal with the token's comment.
2548	(extract_parenthesized): Call savable_comment_to_xgettext_comment and
2549	savable_comment_reset. Free the token's comment field.
2550	* x-python.c (comment_line_end): Call savable_comment_add instead of
2551	xgettext_comment_add.
2552	(struct token_ty): Add 'comment' field.
2553	(phase5_get): Call savable_comment_reset instead of
2554	xgettext_comment_reset. Initialize token's 'comment' field.
2555	(extract_parenthesized): Call savable_comment_to_xgettext_comment and
2556	savable_comment_reset. Free the token's comment field.
2557
25582003-12-28  Bruno Haible  <bruno@clisp.org>
2559
2560	* read-mo.h (read_mo_file): Change 'fn' into 'filename'.
2561	* read-mo.c (read_mo_file): Likewise.
2562
25632003-12-28  Bruno Haible  <bruno@clisp.org>
2564
2565	* write-resources.h: New file.
2566	* write-resources.c: New file.
2567	* msgfmt.cs: New file.
2568	* msgfmt.c: Include write-resources.h.
2569	(csharp_resources_mode): New variable.
2570	(long_options): Add --csharp-resources.
2571	(main): Handle --csharp-resources. More generic code for detection of
2572	contradicting modes. Invoke msgdomain_write_csharp_resources.
2573	(usage): Document --csharp-resources option.
2574	(msgfmt_set_domain): Update.
2575	* read-resources.h: New file.
2576	* read-resources.c: New file.
2577	* msgunfmt.cs (DumpResource): Add a constructor that dumps a .resources
2578	file.
2579	(Main): Invoke it when only one argument is given.
2580	* msgunfmt.c: Include read-resources.h.
2581	(csharp_resources_mode): New variable.
2582	(long_options): Add --csharp-resources.
2583	(main): Handle --csharp-resources. More generic code for detection of
2584	contradicting modes. Invoke read_one_file instead of read_mo_file.
2585	(usage): Document --csharp-resources option.
2586	(read_one_file): New function.
2587	* Makefile.am (noinst_HEADERS): Add read-resources.h and
2588	write-resources.h.
2589	(msgfmt_SOURCES): Add write-resources.c.
2590	(msgunfmt_SOURCES): Add read-resources.c.
2591	(EXTRA_DIST): Add msgfmt.cs.
2592	(CLEANFILES): Add msgfmt.net.exe.
2593	(msgfmt.net.exe): New rule.
2594	(all-csharp-yes): Depend on it.
2595	(install-exec-csharp-yes): Also install msgfmt.net.exe.
2596	(uninstall-csharp-yes): Also uninstall msgfmt.net.exe.
2597	* Makefile.msvc (msgfmt_OBJECTS): Add write-resources.obj.
2598	(msgunfmt_OBJECTS): Add read-resources.obj.
2599	(write-resources.obj, read-resources.obj): New rules.
2600	* Makefile.vms (msgfmt_OBJECTS): Add write-resources.obj.
2601	(msgunfmt_OBJECTS): Add read-resources.obj.
2602	(write-resources.obj, read-resources.obj): New rules.
2603	* FILES: Update.
2604
26052003-12-26  Bruno Haible  <bruno@clisp.org>
2606
2607	Support for C#.
2608	* write-csharp.h: New file.
2609	* write-csharp.c: New file.
2610	* msgfmt.c: Include write-csharp.h.
2611	(csharp_mode, csharp_resource_name, csharp_locale_name,
2612	csharp_base_directory): New variables.
2613	(long_options): Add option --csharp.
2614	(main): Handle option --csharp. Initialize csharp_resource_name,
2615	csharp_locale_name, csharp_base_directory. Perform checks for C# mode.
2616	Invoke msgdomain_write_csharp.
2617	(usage): Document --csharp option and C# mode.
2618	(msgfmt_set_domain): Ignore in C# mode.
2619	* read-csharp.h: New file.
2620	* read-csharp.c: New file.
2621	* msgunfmt.cs: New file.
2622	* msgunfmt.c: Include read-csharp.h.
2623	(csharp_mode, csharp_resource_name, csharp_locale_name,
2624	csharp_base_directory): New variables.
2625	(long_options): Add option --csharp.
2626	(main): Handle option --csharp. Initialize csharp_resource_name,
2627	csharp_locale_name, csharp_base_directory. Perform checks for C# mode.
2628	Invoke msgdomain_read_csharp.
2629	(usage): Document --csharp option and C# mode.
2630	* Makefile.am (noinst_HEADERS): Add read-csharp.h, write-csharp.h.
2631	(CSHARPCOMP, CSHARPCOMPFLAGS): New variables.
2632	(msgfmt_SOURCES): Add write-csharp.c.
2633	(msgunfmt_SOURCES): Add read-csharp.c.
2634	(EXTRA_DIST): Add msgunfmt.cs.
2635	(CLEANFILES): Add msgunfmt.net.exe.
2636	(all-csharp-yes, all-csharp-no): New rules.
2637	(all-local): Depend on them.
2638	(msgunfmt.net.exe): New rule.
2639	(install-exec-csharp-yes, install-exec-csharp-no): New rules.
2640	(install-exec-local): Depend on them.
2641	(installdirs-csharp): New rule.
2642	(installdirs-local): Depend on it.
2643	(uninstall-csharp-yes, uninstall-csharp-no): New rules.
2644	(uninstall-local): Depend on it.
2645	* Makefile.msvc (msgfmt_OBJECTS): Add write-csharp.obj.
2646	(msgunfmt_OBJECTS): Add read-csharp.obj.
2647	(write-csharp.obj, read-csharp.obj): New rules.
2648	* Makefile.vms (msgfmt_OBJECTS): Add write-csharp.obj.
2649	(msgunfmt_OBJECTS): Add read-csharp.obj.
2650	(write-csharp.obj, read-csharp.obj): New rules.
2651	* FILES: Update.
2652
26532003-12-26  Bruno Haible  <bruno@clisp.org>
2654
2655	* read-java.c (msgdomain_read_java): Relocate also the GETTEXTJAR
2656	value.
2657	* urlget.c (fetch): Likewise.
2658
26592003-12-26  Bruno Haible  <bruno@clisp.org>
2660
2661	* write-java.c (write_java_code): Emit a static method
2662	'get_msgid_plural_table' instead of a static field 'plural'.
2663	* gnu/gettext/DumpResource.java (DumpResource.dump): Exploit a
2664	'get_msgid_plural_table' method if it exists.
2665
26662003-12-14  Bruno Haible  <bruno@clisp.org>
2667
2668	* message.h (format_type): New enum value 'format_csharp'.
2669	(NFORMATS): Increment.
2670	* message.c (format_language): Add format_csharp entry.
2671	(format_language_pretty): Likewise.
2672	* format.h (formatstring_csharp): New declaration.
2673	* format-csharp.c: New file.
2674	* format.c (formatstring_parsers): Add formatstring_csharp.
2675	* x-csharp.h: New file.
2676	* x-csharp.c: New file.
2677	* xgettext.c: Include x-csharp.h.
2678	(flag_table_csharp): New variable.
2679	(main): Invoke init_flag_table_csharp, x_csharp_extract_all,
2680	x_csharp_keyword.
2681	(usage): Mention C# source language.
2682	(xgettext_record_flag): Handle format_csharp.
2683	(language_to_extractor): Add C# rule.
2684	(extension_to_language): Add C# rule.
2685	* Makefile.am (noinst_HEADERS): Add x-csharp.h.
2686	(FORMAT_SOURCE): Add format-csharp.c.
2687	(xgettext_SOURCES): Add x-csharp.c.
2688	* Makefile.msvc (OBJECTS): Add format-csharp.obj.
2689	(xgettext_OBJECTS): Add x-csharp.obj.
2690	(format-csharp.obj, x-csharp.obj): New rules.
2691	* Makefile.vms (OBJECTS): Add format-csharp.obj.
2692	(xgettext_OBJECTS): Add x-csharp.obj.
2693	(format-csharp.obj, x-csharp.obj): New rules.
2694	* FILES: Update.
2695
26962003-12-28  Bruno Haible  <bruno@clisp.org>
2697
2698	* msgexec.c (process_string): Pass ignore_sigpipe = false.
2699	* msgfilter.c (process_string): Likewise.
2700	* msggrep.c (is_string_selected): Likewise.
2701	* msginit.c (project_id, project_id_version, get_user_email,
2702	language_team_address): Likewise.
2703	* read-java.c (execute_and_read_po_output): Likewise.
2704	* read-tcl.c (msgdomain_read_tcl): Likewise.
2705	* urlget.c (execute_it): Pass ignore_sigpipe = true.
2706	(fetch): Pass ignore_sigpipe = true when fetching the file, = false
2707	otherwise.
2708
27092003-12-14  Bruno Haible  <bruno@clisp.org>
2710
2711	* x-c.c (SIZEOF): New macro.
2712	(phase1_ungetc): Verify that the pushback buffer's size is sufficient.
2713	(phase2_ungetc): Likewise.
2714	(phase3_ungetc): Likewise.
2715	(phase5_unget): Likewise.
2716	(phase6_unget): Likewise.
2717	* x-java.c (SIZEOF): New macro.
2718	(phase1_ungetc): Verify that the pushback buffer's size is sufficient.
2719	(phase2_ungetc): Likewise.
2720	(phase3_ungetc): Likewise.
2721	(phase5_unget): Likewise.
2722	(phase6_unget): Likewise.
2723	* x-php.c (SIZEOF): New macro.
2724	(phase1_ungetc): Verify that the pushback buffer's size is sufficient.
2725	(phase2_ungetc): Likewise.
2726	(phase3_ungetc): Likewise.
2727	* x-python.c (SIZEOF): New macro.
2728	(phase1_ungetc): Verify that the pushback buffer's size is sufficient.
2729	(phase5_unget): Likewise.
2730	* x-sh.c (SIZEOF): New macro.
2731	(phase1_ungetc): Verify that the pushback buffer's size is sufficient.
2732	(phase2_ungetc): Likewise.
2733	* x-smalltalk.c (SIZEOF): New macro.
2734	(phase2_unget): Verify that the pushback buffer's size is sufficient.
2735	* x-tcl.c (SIZEOF): New macro.
2736	(phase1_ungetc): Verify that the pushback buffer's size is sufficient.
2737	(phase2_ungetc): Likewise.
2738	* x-ycp.c (SIZEOF): New macro.
2739	(phase2_unget): Verify that the pushback buffer's size is sufficient.
2740
27412003-12-14  Bruno Haible  <bruno@clisp.org>
2742
2743	* x-c.c (phase1_pushback): Reduce size to 2.
2744	(phase2_pushback): Reduce size to 1.
2745	(phase3_pushback): Reduce size to 2.
2746	(phase5_pushback): Reduce size to 1.
2747	(phase6_pushback): Reduce size to 2.
2748	* x-java.c (phase2_pushback): Reduce size to 1.
2749	(phase3_pushback): Reduce size to 2.
2750	(phase5_pushback): Reduce size to 3.
2751	(phase6_pushback): Reduce size to 2.
2752	* x-php.c (phase1_pushback): Reduce size to 2.
2753	* x-python.c (max): New macro.
2754	(phase1_pushback): Reduce size to UNINAME_MAX + 3.
2755	(phase5_pushback): Reduce size to 1.
2756	* x-sh.c (phase1_pushback): Reduce size to 1.
2757	(phase2_pushback): Reduce size to 2.
2758	* x-smalltalk.c (phase2_pushback): Reduce size to 1.
2759	* x-tcl.c (phase1_pushback): Reduce size to 1.
2760	(phase2_pushback): Reduce size to 2.
2761
27622003-12-12  Bruno Haible  <bruno@clisp.org>
2763
2764	Assume automake-1.8.
2765	* Makefile.am (install-exec-local): Renamed from install-exec-am.
2766
27672003-11-30  Bruno Haible  <bruno@clisp.org>
2768
2769	* format-java.c: Include xallocsa.h.
2770	(message_format_parse): Use xallocsa instead of alloca.
2771	(choice_format_parse): Likewise.
2772	* msgl-cat.c: Include xallocsa.h.
2773	(catenate_msgdomain_list): Use xallocsa instead of alloca.
2774	* msgl-charset.c: Include xallocsa.h.
2775	(compare_po_locale_charsets): Use xallocsa instead of alloca.
2776	* msgl-iconv.c: Include xallocsa.h.
2777	(iconv_message_list): Use xallocsa instead of alloca.
2778	* po-charset.c: Include xallocsa.h.
2779	(po_lex_charset_set): Use xallocsa instead of alloca.
2780	* read-tcl.c: Include xallocsa.h.
2781	(msgdomain_read_tcl): Use xallocsa instead of alloca.
2782	* write-java.c: Include xallocsa.h.
2783	(compute_hashsize, msgdomain_write_java): Use xallocsa instead of
2784	alloca.
2785	* write-mo.c: Include xallocsa.h.
2786	(write_table): Use xallocsa instead of alloca.
2787	* write-po.c: Include xallocsa.h.
2788	(msgdomain_list_print_po): Use xallocsa instead of alloca.
2789	* write-tcl.c: Include xallocsa.h.
2790	(msgdomain_write_tcl): Use xallocsa instead of alloca.
2791	* msggrep.c: Include xallocsa.h.
2792	(is_message_selected): Use xallocsa instead of alloca.
2793	* msginit.c: Include xallocsa.h.
2794	(subst_string): Use xallocsa instead of alloca.
2795	* msgmerge.c: Include obstack.h.
2796	(obstack_chunk_alloc, obstack_chunk_free): New macros.
2797	(message_merge): Use obstack_alloc instead of alloca.
2798	* xgettext.c: Include xallocsa.h.
2799	(flag_context_list_table_insert): Use xallocsa instead of alloca.
2800
28012003-12-17  Bruno Haible  <bruno@clisp.org>
2802
2803	* gettext-0.13.1 released.
2804
28052003-12-14  Bruno Haible  <bruno@clisp.org>
2806
2807	* x-sh.c (phase2_getc): Call phase1_ungetc instead of phase2_ungetc:
2808	The next phase2_getc invocation must return QUOTED('"'), not '"'.
2809
28102003-12-14  Bruno Haible  <bruno@clisp.org>
2811
2812	* x-c.c (phase7_getc): Remove dead code.
2813	* x-java.c (accumulate_escaped): More precise error message.
2814
28152003-12-02  Bruno Haible  <bruno@clisp.org>
2816
2817	* msginit.c (catalogname_for_locale): Treat sr_CS like sr_YU.
2818
28192003-11-30  Bruno Haible  <bruno@clisp.org>
2820
2821	* gettext-0.13 released.
2822
28232003-11-28  Bruno Haible  <bruno@clisp.org>
2824
2825	* xgettext.c (set_format_flags_from_context): Add casts, to make it
2826	compile in C++ mode.
2827
28282003-11-22  Bruno Haible  <bruno@clisp.org>
2829
2830	* x-c.c (phase4_getc): Skip leading whitespace in C++ style comments
2831	as well.
2832	* x-sh.c (read_word): Skip leading whitespace in comments.
2833	* x-lisp.c (read_object): Skip leading whitespace in single-line
2834	comments as well.
2835	* x-elisp.c (read_object): Skip leading whitespace in comments.
2836	* x-librep.c (read_object): Skip leading whitespace in single-line
2837	comments as well.
2838	* x-java.c (phase4_getc): Skip leading whitespace in C++ style comments
2839	as well.
2840	* x-awk.c (phase2_getc): Skip leading whitespace in comments.
2841	* x-ycp.c (phase2_getc): Skip leading whitespace in single-line
2842	comments as well.
2843	* x-tcl.c (read_command): Skip leading whitespace in comments.
2844
28452003-11-24  Bruno Haible  <bruno@clisp.org>
2846
2847	* format-lisp.c (check_params): Use ngettext for one of the messages.
2848	Reported by Rafa�� Maszkowski <rzm@icm.edu.pl>.
2849
28502003-11-15  Bruno Haible  <bruno@clisp.org>
2851
2852	* Makefile.am (AM_CPPFLAGS): Renamed from INCLUDES.
2853
28542003-11-09  Bruno Haible  <bruno@clisp.org>
2855
2856	* msginit.c (main): Drop the blank line in --no-translator mode.
2857
28582003-11-07  Bruno Haible  <bruno@clisp.org>
2859
2860	* xgettext.c (remember_a_message): Omit the programmer comments of a
2861	duplicated msgid only if they are redundant.
2862	Reported by Christian Neumair <chris@gnome-de.org>.
2863
28642003-11-05  Bruno Haible  <bruno@clisp.org>
2865
2866	* user-email.sh.in: Renamed from user-email.in. Internationalize, use
2867	localedir and gettext.
2868	* FILES: Update.
2869
28702003-10-23  Bruno Haible  <bruno@clisp.org>
2871
2872	* read-stringtable.c (read_string, stringtable_parse): Cast
2873	gram_pos.line_number to 'unsigned long'.
2874	* x-sh.c (read_word): Case line_number to 'unsigned long'.
2875
28762003-10-21  Bruno Haible  <bruno@clisp.org>
2877
2878	* message.h (message_list_msgids_changed): New declaration.
2879	* message.c (message_list_msgids_changed): New function.
2880	* msgl-iconv.c (iconv_message_list): Update the message list's hash
2881	table if it happens to contain non-ASCII msgids.
2882
28832003-10-19  Bruno Haible  <bruno@clisp.org>
2884
2885	* message.h (format_type): New enum value 'format_qt'.
2886	(NFORMATS): Increment.
2887	* message.c (format_language): Add format_qt entry.
2888	(format_language_pretty): Likewise.
2889	* format.h (formatstring_qt): New declaration.
2890	* format-qt.c: New file.
2891	* format.c (formatstring_parsers): Add formatstring_qt.
2892	* xgettext.c (recognize_format_qt): New variable.
2893	(long_options): Add option "--qt".
2894	(main): Handle --qt option. Determine the extractor only after option
2895	processing is complete.
2896	(usage): Document --qt option.
2897	(xgettext_record_flag): Handle format_qt.
2898	(language_to_extractor): For C++, return a different extractor when
2899	--qt was specified.
2900	* write-qt.h: New file.
2901	* write-qt.c: New file.
2902	* msgfmt.c: Include write-qt.h.
2903	(qt_mode): New variable.
2904	(long_options): Add option "--qt".
2905	(main): Handle --qt option. More checks for contradicting options.
2906	Call msgdomain_write_qt.
2907	(usage): Mention Qt mode.
2908	(format_directive_domain): Ignore domain directive if in Qt mode.
2909	* Makefile.am (noinst_HEADERS): Add write-qt.h.
2910	(FORMAT_SOURCE): Add format-qt.c.
2911	(msgfmt_SOURCES): Add write-qt.c.
2912	* Makefile.msvc (OBJECTS): Add format-qt.obj.
2913	(msgfmt_OBJECTS): Add write-qt.obj.
2914	(format-qt.obj, write-qt.obj): New rules.
2915	* Makefile.vms (OBJECTS): Add format-qt.obj.
2916	(msgfmt_OBJECTS): Add write-qt.obj.
2917	(format-qt.obj, write-qt.obj): New rules.
2918	* FILES: Update.
2919
29202003-10-14  Bruno Haible  <bruno@clisp.org>
2921
2922	Fix compilation errors in C++ mode.
2923	* msgfilter.c (process_string): Cast the xrealloc expression.
2924	* xgettext.c (language_to_extractor, extension_to_language): Move the
2925	typedef after the struct definition.
2926
29272003-10-13  Bruno Haible  <bruno@clisp.org>
2928
2929	Support CR/LF line terminators in C sources even on Unix.
2930	* x-c.c (phase0_getc, phase0_ungetc): New functions.
2931	(phase1_getc): Use them instead of calling getc/ungetc directly.
2932	Reported by Christoph Thielecke <u15119@hs-harz.de>.
2933
29342003-10-13  Bruno Haible  <bruno@clisp.org>
2935
2936	Support and recognize Objective C specific format strings.
2937	* message.h (enum format_type): New item format_objc.
2938	(NFORMATS): Increment.
2939	* message.c (format_language): Add an entry for format_objc.
2940	(format_language_pretty): Likewise.
2941	* format.h (formatstring_objc): New declaration.
2942	* format-c.c (enum format_arg_type): New item FAT_OBJC_OBJECT.
2943	(format_parse): Add objc_extensions argument. Handle %@ in ObjC mode.
2944	(format_c_parse, format_objc_parse): New functions.
2945	(formatstring_c): Use format_c_parse instead of format_parse.
2946	(formatstring_objc): New variable.
2947	(get_c99_format_directives): Update.
2948	* format.c (formatstring_parsers): Add an entry for format_objc.
2949	* write-mo.c (write_table): Look for system dependent strings also in
2950	ObjectiveC format strings.
2951	* x-c.h (SCANNERS_C): Use separate flag_table for ObjectiveC.
2952	(x_objc_keyword, init_flag_table_objc): New declarations.
2953	(x_c_any_keywords): Remove declaration.
2954	* x-c.c (c_keywords): Renamed from keywords.
2955	(objc_keywords): New variable.
2956	(add_keyword): Renamed from x_c_keyword. Add keywords table argument.
2957	(x_c_keyword, x_objc_keyword): New functions.
2958	(x_c_any_keywords): Remove function.
2959	(init_keywords): Also initialize ObjectiveC keyword table.
2960	(init_flag_table_objc): New function.
2961	(enum token_type_ty): New item token_type_colon.
2962	(phase5_get): Recognize colon.
2963	(enum xgettext_token_type_ty): New item xgettext_token_type_colon.
2964	(x_c_lex): Use keywords table depending on objc_extensions. Handle
2965	colon.
2966	(extract_parenthesized): Change the context_iter and inner_context
2967	after a keyword/symbol followed by a colon was seen.
2968	* xgettext.c (flag_table_objc): New variable.
2969	(main): Invoke init_flag_table_objc, x_objc_keyword. Watch out for
2970	keywords arguments, instead of calling x_c_any_keywords().
2971	(flag_context_list_table_insert): New function, extracted from
2972	xgettext_record_flag.
2973	(xgettext_record_flag): Call it. For format_c, insert the flags also
2974	in the flag_table_objc. Handle format_objc.
2975	(remember_a_message): Don't add a heuristic c-format flag to an entry
2976	that already carries objc-format.
2977	(remember_a_message_plural): Likewise.
2978
29792003-10-18  Bruno Haible  <bruno@clisp.org>
2980
2981	Support for GNUstep .strings format.
2982	* read-stringtable.h: New file.
2983	* read-stringtable.c: New file.
2984	* read-po-abstract.h (enum input_syntax_ty): New item
2985	syntax_stringtable.
2986	(po_callback_comment_dispatcher): Renamed from po_callback_comment.
2987	(po_callback_comment, po_callback_comment_special): New declarations.
2988	* read-po-abstract.c: Include read-stringtable.h.
2989	(po_scan): Add support for syntax_stringtable.
2990	(po_callback_comment_dispatcher): Renamed from po_callback_comment.
2991	(po_callback_comment, po_callback_comment_dot): New functions.
2992	(po_callback_comment_special): New function.
2993	* read-po.c (read_po): Set mdlp->encoding for syntax_stringtable too.
2994	* po-gram-gen.y: Update po_callback_comment_dispatcher call.
2995	* read-properties.c (properties_parse): Likewise.
2996	* write-stringtable.h: New file.
2997	* write-stringtable.c: New file.
2998	* write-po.h (make_format_description_string, significant_format_p):
2999	New declarations.
3000	(message_print_syntax_stringtable): New declaration.
3001	* write-po.c: Include write-stringtable.h.
3002	(make_format_description_string, significant_format_p): Make
3003	non-static.
3004	(use_syntax_stringtable): New variable.
3005	(message_print_syntax_stringtable): New function.
3006	(msgdomain_list_print): Add check for plural forms for
3007	syntax_stringtable too. Add support for writing the .strings format.
3008	* msgattrib.c (long_options): Add --stringtable-input/output.
3009	(main): Handle them.
3010	(usage): Document options --stringtable-input/output.
3011	* msgcat.c (long_options): Add --stringtable-input/output.
3012	(main): Handle them. If option --stringtable-output is used, convert to
3013	UTF-8 and ignore the to_code.
3014	(usage): Document options --stringtable-input/output.
3015	* msgcmp.c (long_options): Add --stringtable-input.
3016	(main): Handle it.
3017	(usage): Document option --stringtable-input.
3018	* msgcomm.c (long_options): Add --stringtable-input/output.
3019	(main): Handle them.
3020	(usage): Document options --stringtable-input/output.
3021	* msgconv.c (long_options): Add --stringtable-input/output.
3022	(main): Handle them. If option --stringtable-output is used, ignore the
3023	to_code.
3024	(usage): Document options --stringtable-input/output.
3025	* msgen.c (long_options): Add --stringtable-input/output.
3026	(main): Handle them.
3027	(usage): Document options --stringtable-input/output.
3028	* msgexec.c: Include limits.h.
3029	(long_options): Add --stringtable-input.
3030	(main): Handle it.
3031	(usage): Document option --stringtable-input.
3032	* msgfilter.c (long_options): Add --stringtable-input/output.
3033	(main): Handle them.
3034	(usage): Document options --stringtable-input/output.
3035	* msgfmt.c (long_options): Add --stringtable-input.
3036	(main): Handle it.
3037	(usage): Document option --stringtable-input.
3038	* msggrep.c (long_options): Add --stringtable-input/output.
3039	(main): Handle them.
3040	(usage): Document options --stringtable-input/output.
3041	* msginit.c (long_options): Add --stringtable-input/output.
3042	(main): Handle them.
3043	(usage): Document options --stringtable-input/output.
3044	* msgmerge.c (long_options): Add --stringtable-input/output.
3045	(main): Handle them. In update mode, --stringtable-input implies
3046	--stringtable-output.
3047	(usage): Document options --stringtable-input/output.
3048	* msgunfmt.c (long_options): Add --stringtable-output.
3049	(main): Handle it.
3050	(usage): Document option --stringtable-output.
3051	* msguniq.c (long_options): Add --stringtable-input/output.
3052	(main): Handle them.
3053	(usage): Document options --stringtable-input/output.
3054	* x-stringtable.h: New file.
3055	* x-po.c: Include x-stringtable.h.
3056	(extract_stringtable): New function.
3057	* xgettext.c: Include x-stringtable.h.
3058	(long_options): Add --stringtable-output.
3059	(main): Handle it.
3060	(usage): Document options -L NXStringTable and --stringtable-output.
3061	(finalize_header): If --stringtable-output was given, set the charset.
3062	(language_to_extractor): Add support for .strings format.
3063	(extension_to_language): Likewise.
3064	* Makefile.am (noinst_HEADERS): Add read-stringtable.h,
3065	write-stringtable.h, x-stringtable.h.
3066	(COMMON_SOURCE): Add read-stringtable.c.
3067	(libgettextsrc_la_SOURCES): Add write-stringtable.c.
3068	* Makefile.msvc (OBJECTS): Add read-stringtable.obj,
3069	write-stringtable.obj.
3070	(read-stringtable.obj, write-stringtable.obj): New rules.
3071	* Makefile.vms (OBJECTS): Add read-stringtable.obj,
3072	write-stringtable.obj.
3073	(read-stringtable.obj, write-stringtable.obj): New rules.
3074	* FILES: Update.
3075
30762003-10-21  Bruno Haible  <bruno@clisp.org>
3077
3078	* hostname.c (xgethostname): Add support for native Woe32 API.
3079
30802003-10-21  Bruno Haible  <bruno@clisp.org>
3081
3082	* message.c (message_list_search): Avoid casting a pointer to a local
3083	variable; it violated strict aliasing.
3084
30852003-10-21  Bruno Haible  <bruno@clisp.org>
3086
3087	* write-java.c (mkdir): Redefine on mingw.
3088
30892003-10-12  Bruno Haible  <bruno@clisp.org>
3090
3091	Improved ObjectiveC support.
3092	* x-c.h (extract_objc): New declaration.
3093	(SCANNERS_C): For ObjectiveC, use extract_objc.
3094	* x-c.c (objc_extensions): New variable.
3095	(enum token_type_ty): New item token_type_objc_special.
3096	(phase5_get): Recognize '@' for ObjectiveC.
3097	(phase8b_get, phase8b_unget): New functions. Handle
3098	token_type_white_space and token_type_eoln here instead of in x_c_lex.
3099	(phase8c_get, phase8c_unget): New functions.
3100	(phase8_get): Rely on phase8c, not phase8a. No more need to care about
3101	token_type_white_space and token_type_eoln.
3102	(x_c_lex): Drop handling of token_type_white_space and token_type_eoln.
3103	(extract_whole_file): Renamed from extract_c.
3104	(extract_c, extract_objc): New functions.
3105
31062003-10-20  Bruno Haible  <bruno@clisp.org>
3107
3108	* x-java.c (phase3_getc): Fix typo: Use phase2_ungetc, not phase2_getc.
3109
31102003-10-20  Bruno Haible  <bruno@clisp.org>
3111
3112	Portability to AIX with cc.
3113	* xgettext.h (struct flag_context_ty): Define the bitfields of type
3114	'unsigned int'.
3115
31162003-10-20  Bruno Haible  <bruno@clisp.org>
3117
3118	Portability to Solaris with cc.
3119	* x-java.c (string_buffer_append): Avoid aggregate initializer
3120	containing non-constant expressions.
3121	* xgettext.c (flag_context_list_iterator): Likewise.
3122	(language_to_extractor): Likewise.
3123
31242003-10-11  Bruno Haible  <bruno@clisp.org>
3125
3126	* xgettext.c (main): Drop suffix ".in" from input file name, if
3127	present, before looking at the file extension.
3128
31292003-10-09  Bruno Haible  <bruno@clisp.org>
3130
3131	* format-awk.c: Include xalloc.h instead of xmalloc.h.
3132	* format-c.c: Likewise.
3133	* format-elisp.c: Likewise.
3134	* format-gcc-internal.c: Likewise.
3135	* format-java.c: Likewise.
3136	* format-librep.c: Likewise.
3137	* format-lisp.c: Likewise.
3138	* format-pascal.c: Likewise.
3139	* format-perl.c: Likewise.
3140	* format-perl-brace.c: Likewise.
3141	* format-php.c: Likewise.
3142	* format-python.c: Likewise.
3143	* format-sh.c: Likewise.
3144	* format-tcl.c: Likewise.
3145	* format-ycp.c: Likewise.
3146	* gettext-po.c: Likewise.
3147	* hostname.c: Likewise.
3148	* message.c: Likewise.
3149	* msgexec.c: Likewise.
3150	* msgfilter.c: Likewise.
3151	* msgfmt.c: Likewise.
3152	* msggrep.c: Likewise.
3153	* msginit.c: Likewise.
3154	* msgl-cat.c: Likewise.
3155	* msgl-english.c: Likewise.
3156	* msgl-iconv.c: Likewise.
3157	* msgmerge.c: Likewise.
3158	* open-po.c: Likewise.
3159	* po-gram-gen.y: Likewise.
3160	* po-hash-gen.y: Likewise.
3161	* po-lex.c: Likewise.
3162	* read-mo.c: Likewise.
3163	* read-po-abstract.c: Likewise.
3164	* read-po.c: Likewise.
3165	* read-properties.c: Likewise.
3166	* str-list.c: Likewise.
3167	* write-java.c: Likewise.
3168	* write-mo.c: Likewise.
3169	* write-po.c: Likewise.
3170	* write-properties.c: Likewise.
3171	* write-tcl.c: Likewise.
3172	* x-awk.c: Likewise.
3173	* x-c.c: Likewise.
3174	* x-elisp.c: Likewise.
3175	* x-glade.c: Likewise.
3176	* x-java.c: Likewise.
3177	* x-librep.c: Likewise.
3178	* x-lisp.c: Likewise.
3179	* x-perl.c: Likewise.
3180	* x-php.c: Likewise.
3181	* x-po.c: Likewise.
3182	* x-python.c: Likewise.
3183	* x-rst.c: Likewise.
3184	* x-sh.c: Likewise.
3185	* x-smalltalk.c: Likewise.
3186	* x-tcl.c: Likewise.
3187	* x-ycp.c: Likewise.
3188	* xgettext.c: Likewise.
3189
31902003-10-07  Bruno Haible  <bruno@clisp.org>
3191
3192	More reliable subprocess cleanup.
3193	* msgexec.c (process_string): Pass slave_process = true to
3194	create_pipe_out() and wait_subprocess().
3195	* msgfilter.c (process_string): Pass slave_process = true to
3196	create_pipe_bidi() and wait_subprocess().
3197	* msggrep.c (is_string_selected): Pass slave_process = true to
3198	create_pipe_out() and wait_subprocess().
3199	* msginit.c (project_id, project_id_version, get_user_email,
3200	language_team_address): Pass slave_process = true to create_pipe_in()
3201	and wait_subprocess().
3202	* read-java.c (execute_and_read_po_output): Likewise.
3203	* read-tcl.c (msgdomain_read_tcl): Likewise.
3204	* urlget.c (execute_it, fetch): Pass slave_process = true to execute().
3205
32062003-10-05  Bruno Haible  <bruno@clisp.org>
3207
3208	* write-java.c: Include fatal-signal.h, not signal.h.
3209	(uninstall_handlers): Remove function.
3210	(cleanup): Remove signal argument. Don't execute the signal's default
3211	action; leave that to the caller.
3212	(install_handlers, init_signal_set, block, unblock): Remove functions.
3213	(msgdomain_write_java): Invoke at_fatal_signal instead of
3214	install_handlers/uninstall_handlers. Invoke [un]block_fatal_signals
3215	instead of [un]block.
3216
32172003-10-05  Bruno Haible  <bruno@clisp.org>
3218
3219	* xgettext.c (substring_match): Remove variable.
3220	(long_options): Remove --keyword-substring option.
3221	(main): Remove handling of --keyword-substring option.
3222
32232003-10-05  Bruno Haible  <bruno@clisp.org>
3224
3225	* message.h (enum is_format): New item yes_according_to_context.
3226	* message.c (possible_format_p): Handle also yes_according_to_context.
3227	* write-po.c (make_format_description_string): Likewise.
3228
3229	* xgettext.h (struct flag_context_ty): New type.
3230	(null_context, passthrough_context): New declarations.
3231	(inherited_context): New declaration.
3232	(struct flag_context_list_ty): New type.
3233	(struct flag_context_list_iterator_ty): New type.
3234	(null_context_list_iterator, passthrough_context_list_iterator): New
3235	declarations.
3236	(flag_context_list_iterator): New declaration.
3237	(flag_context_list_iterator_advance): New declaration.
3238	(flag_context_list_table_ty): New type.
3239	(flag_context_list_table_lookup): New declaration.
3240	(xgettext_record_flag): New declaration.
3241	(remember_a_message, remember_a_message_plural): Add context argument.
3242	* xgettext.c: Include alloca.h.
3243	(flag_table_c, flag_table_gcc_internal, flag_table_sh,
3244	flag_table_python, flag_table_lisp, flag_table_elisp,
3245	flag_table_librep, flag_table_java, flag_table_awk, flag_table_ycp,
3246	flag_table_tcl, flag_table_perl, flag_table_php): New variables.
3247	(long_options): Add option --flag.
3248	(extractor_func): Add argument flag_table.
3249	(struct extractor_ty): New type.
3250	(main): Use type 'extractor_ty' instead of 'extractor_func'.
3251	Invoke init_flag_table_c(), init_flag_table_gcc_internal(),
3252	init_flag_table_sh(), init_flag_table_python(), init_flag_table_lisp(),
3253	init_flag_table_elisp(), init_flag_table_librep(),
3254	init_flag_table_java(), init_flag_table_awk(), init_flag_table_ycp(),
3255	init_flag_table_tcl(), init_flag_table_perl(), init_flag_table_php().
3256	Implement option --flag.
3257	(usage): Rename a section to "Language specific options". Document
3258	the languages to which --extract-all, --keyword, --trigraphs are
3259	applicable. Document option --flag.
3260	(null_context): New variable.
3261	(passthrough_context): New variable.
3262	(inherited_context): New function.
3263	(null_context_list_iterator): New variable.
3264	(passthrough_context_circular_list, passthrough_context_list_iterator):
3265	New variables.
3266	(flag_context_list_iterator): New function.
3267	(flag_context_list_iterator_advance): New function.
3268	(flag_context_list_table_lookup): New function.
3269	(xgettext_record_flag): New function.
3270	(extract_from_file): Change argument type to 'extractor_ty' instead of
3271	'extractor_func'. Set current_formatstring_parser{1,2} before invoking
3272	the extractor.
3273	(set_format_flags_from_context): New function.
3274	(remember_a_message): Add context argument. Set some *-format flag if
3275	the context specifies it.
3276	(remember_a_message_plural): Likewise.
3277	(language_to_extractor): Change return type to 'extractor_ty' instead
3278	of 'extractor_func'.
3279
3280	* x-awk.h (SCANNERS_AWK): Refer to flag_table_awk.
3281	(extract_awk): Add argument flag_table.
3282	(init_flag_table_awk): New declaration.
3283	* x-awk.c (init_flag_table_awk): New function.
3284	(enum token_type_ty): New enum item token_type_semicolon.
3285	(x_awk_lex): Recognize semicolon.
3286	(flag_context_list_table): New variable.
3287	(extract_parenthesized): Add arguments outer_context, context_iter.
3288	Implement context handling depending on symbol before '('. Also
3289	recognize argument lists that start without '(', but only up to the
3290	next semicolon.
3291	(extract_awk): Add argument flag_table. Initialize
3292	flag_context_list_table.
3293
3294	* x-c.h (SCANNERS_C): Refer to flag_table_c, flag_table_gcc_internal.
3295	(extract_c): Add argument flag_table.
3296	(init_flag_table_c): New declaration.
3297	(init_flag_table_gcc_internal): New declaration.
3298	* x-c.c (init_flag_table_c): New function.
3299	(init_flag_table_gcc_internal): New function.
3300	(enum xgettext_token_type_ty): New item xgettext_token_type_other.
3301	(x_c_lex): For token_type_name, put the string into the resulting
3302	token instead of freeing it. Return token type
3303	xgettext_token_type_other instead of xgettext_token_type_symbol in
3304	some cases.
3305	(flag_context_list_table): New variable.
3306	(extract_parenthesized): Add arguments outer_context, context_iter.
3307	Implement context handling depending on symbol before '('.
3308	(extract_c): Add argument flag_table. Initialize
3309	flag_context_list_table.
3310
3311	* x-elisp.h (SCANNERS_ELISP): Refer to flag_table_elisp.
3312	(extract_elisp): Add argument flag_table.
3313	(init_flag_table_elisp): New declaration.
3314	* x-elisp.c (init_flag_table_elisp): New function.
3315	(flag_context_list_table): New variable.
3316	(read_object): Add argument outer_context. Implement context handling
3317	depending on first symbol after '('.
3318	(extract_elisp): Add argument flag_table. Initialize
3319	flag_context_list_table.
3320
3321	* x-glade.h (SCANNERS_GLADE): Update.
3322	(extract_glade): Add argument flag_table.
3323	* x-glade.c (start_element_handler, end_element_handler): Pass null
3324	context to remember_a_message.
3325	(extract_glade): Add argument flag_table.
3326
3327	* x-java.h (SCANNERS_JAVA): Refer to flag_table_java.
3328	(extract_java): Add argument flag_table.
3329	(init_flag_table_java): New declaration.
3330	* x-java.c (init_flag_table_java): New function.
3331	(flag_context_list_table): New variable.
3332	(extract_parenthesized): Add arguments outer_context, context_iter.
3333	Implement context handling depending on symbol before '('.
3334	(extract_java): Add argument flag_table. Initialize
3335	flag_context_list_table.
3336
3337	* x-librep.h (SCANNERS_ELISP): Refer to flag_table_librep.
3338	(extract_librep): Add argument flag_table.
3339	(init_flag_table_librep): New declaration.
3340	* x-librep.c (init_flag_table_librep): New function.
3341	(flag_context_list_table): New variable.
3342	(read_object): Add argument outer_context. Implement context handling
3343	depending on first symbol after '('.
3344	(extract_librep): Add argument flag_table. Initialize
3345	flag_context_list_table.
3346
3347	* x-lisp.h (SCANNERS_LISP): Refer to flag_table_lisp.
3348	(extract_lisp): Add argument flag_table.
3349	(init_flag_table_lisp): New declaration.
3350	* x-lisp.c (init_flag_table_lisp): New function.
3351	(flag_context_list_table): New variable.
3352	(read_object): Add argument outer_context. Implement context handling
3353	depending on first symbol after '('.
3354	(extract_lisp): Add argument flag_table. Initialize
3355	flag_context_list_table.
3356
3357	* x-perl.h (SCANNERS_PERL): Refer to flag_table_perl.
3358	(extract_perl): Add argument flag_table.
3359	(init_flag_table_perl): New declaration.
3360	* x-perl.c (init_flag_table_java): New function.
3361	(flag_context_list_table): New variable.
3362	(extract_variable): Update. Implement context handling depending on
3363	symbol before '{'...'}'.
3364	(interpolate_keywords): Implement context handling depending on symbol
3365	before '->' or '{'...'}'.
3366	(extract_balanced): Add arguments outer_context, context_iter.
3367	Implement context handling depending on symbol before '('. Also
3368	recognize argument lists that start without '('.
3369	(extract_perl): Add argument flag_table. Initialize
3370	flag_context_list_table.
3371
3372	* x-php.h (SCANNERS_PHP): Refer to flag_table_php.
3373	(extract_php): Add argument flag_table.
3374	(init_flag_table_php): New declaration.
3375	* x-php.c (init_flag_table_php): New function.
3376	(flag_context_list_table): New variable.
3377	(extract_parenthesized): Add arguments outer_context, context_iter.
3378	Implement context handling depending on symbol before '('.
3379	(extract_php): Add argument flag_table. Initialize
3380	flag_context_list_table.
3381
3382	* x-po.h (SCANNERS_PO): Update.
3383	(extract_po): Add argument flag_table.
3384	* x-properties.h (SCANNERS_PROPERTIES): Update.
3385	(extract_properties): Add argument flag_table.
3386	* x-po.c (extract_po): Add argument flag_table.
3387	(extract_properties): Add argument flag_table.
3388
3389	* x-python.h (SCANNERS_PYTHON): Refer to flag_table_python.
3390	(extract_python): Add argument flag_table.
3391	(init_flag_table_python): New declaration.
3392	* x-python.c (init_flag_table_python): New function.
3393	(flag_context_list_table): New variable.
3394	(extract_parenthesized): Add arguments outer_context, context_iter.
3395	Implement context handling depending on symbol before '('.
3396	(extract_python): Add argument flag_table. Initialize
3397	flag_context_list_table.
3398
3399	* x-rst.h (SCANNERS_RST): Update.
3400	(extract_rst): Add argument flag_table.
3401	* x-rst.c (extract_rst): Add argument flag_table.
3402
3403	* x-sh.h (SCANNERS_SH): Refer to flag_table_sh.
3404	(extract_sh): Add argument flag_table.
3405	(init_flag_table_sh): New declaration.
3406	* x-sh.c (init_flag_table_sh): New function.
3407	(flag_context_list_table): New variable.
3408	(read_word): Add context argument.
3409	(read_command): Add outer_context argument. Implement context handling
3410	depending on first symbol of command.
3411	(read_command_list): Add outer_context argument.
3412	(extract_sh): Add argument flag_table. Initialize
3413	flag_context_list_table.
3414
3415	* x-smalltalk.h (SCANNERS_SMALLTALK): Update.
3416	(extract_smalltalk): Add argument flag_table.
3417	* x-smalltalk.c (extract_smalltalk): Add argument flag_table.
3418
3419	* x-tcl.h (SCANNERS_TCL): Refer to flag_table_tcl.
3420	(extract_tcl): Add argument flag_table.
3421	(init_flag_table_tcl): New declaration.
3422	* x-tcl.c (init_flag_table_tcl): New function.
3423	(flag_context_list_table): New variable.
3424	(accumulate_word): Add context argument.
3425	(read_word): Add context argument.
3426	(read_command): Add outer_context argument. Implement context handling
3427	depending on first symbol of command.
3428	(read_command_list): Add outer_context argument.
3429	(extract_tcl): Add argument flag_table. Initialize
3430	flag_context_list_table.
3431
3432	* x-ycp.h (SCANNERS_YCP): Refer to flag_table_ycp.
3433	(extract_ycp): Add argument flag_table.
3434	(init_flag_table_ycp): New declaration.
3435	* x-ycp.c (init_flag_table_ycp): New function.
3436	(flag_context_list_table): New variable.
3437	(extract_parenthesized): New function, split off from extract_ycp.
3438	Implement context handling depending on symbol before '('.
3439	(extract_ycp): Add argument flag_table. Initialize
3440	flag_context_list_table. Call extract_parenthesized to do the work.
3441
3442	* po-lex.c (mbfile_getc, control_sequence): Remove explicit marking of
3443	strings as c-format, now done by xgettext.
3444
34452003-09-23  Bruno Haible  <bruno@clisp.org>
3446
3447	* x-awk.c (extract_parenthesized): Remove optimization of the
3448	extract_all case.
3449	* x-c.c (extract_parenthesized): Likewise.
3450	* x-elisp.c (read_object): Likewise.
3451	* x-librep.c (read_object): Likewise.
3452	* x-lisp.c (read_object): Likewise.
3453	* x-perl.c (x_perl_prelex, extract_balanced): Likewise.
3454	* x-php.c (extract_parenthesized): Likewise.
3455	* x-python.c (extract_parenthesized): Likewise.
3456	* x-sh.c (read_command): Likewise.
3457
34582003-10-08  Bruno Haible  <bruno@clisp.org>
3459
3460	* msgmerge.c (main): Make option -N work.
3461	Reported by Liu Garfield <jackliu9999@hotmail.com>.
3462
34632003-10-04  Bruno Haible  <bruno@clisp.org>
3464
3465	New Java backend.
3466	* x-java.c: New file.
3467	* x-java.l: Remove file.
3468	* Makefile.am (xgettext_SOURCES): Add x-java.c, remove x-java.l.
3469	(x-java.c): Remove rule.
3470	* FILES: Update.
3471
34722003-09-22  Bruno Haible  <bruno@clisp.org>
3473
3474	* x-glade.c (start_element_handler): Implement extract_all behaviour.
3475
34762003-10-04  Bruno Haible  <bruno@clisp.org>
3477
3478	* x-glade.c (do_extract_glade): Initialize stack_depth.
3479	* x-perl.c (extract_perl): Initialize linesize and linepos.
3480
3481	* x-python.c (phase2_getc): Set last_comment_line.
3482	(phase5_get): Set last_non_comment_line.
3483
34842003-10-04  Bruno Haible  <bruno@clisp.org>
3485
3486	* x-glade.c: Don't include msgl-ascii.h and msgl-iconv.h.
3487	* x-python.c: Likewise.
3488	* x-tcl.c: Likewise.
3489
34902003-10-06  Guido Flohr  <guido@imperia.net>
3491            Bruno Haible  <bruno@clisp.org>
3492
3493	* x-perl.c (enum symbol_type_ty): New enum.
3494	(struct token_ty): Rename field string_type to sub_type and change its
3495	type to 'int'.
3496	(extract_quotelike_pass3, interpolate_keywords): Update.
3497	(x_perl_prelex): Set sub_type also for symbol tokens.
3498	(x_perl_lex): Special handling of prototype argument lists.
3499	Reported by Crispin Flowerday <cflowerday@zeus.com>.
3500
35012003-09-22  Bruno Haible  <bruno@clisp.org>
3502
3503	* x-sh.c (read_word): Warn about $"...".
3504
35052003-09-18  Bruno Haible  <bruno@clisp.org>
3506
3507	* gettext-po.h (po_file_domain_header, po_header_field,
3508	po_message_is_obsolete, po_message_is_fuzzy, po_message_is_format): New
3509	declarations.
3510	* gettext-po.c (po_file_domain_header, po_header_field,
3511	po_message_is_obsolete, po_message_is_fuzzy, po_message_is_format): New
3512	functions.
3513	* Makefile.am (LTV_CURRENT, LTV_REVISION, LTV_AGE): Bump to 1:0:1.
3514
35152003-09-14  Bruno Haible  <bruno@clisp.org>
3516
3517	* plural-count.c: Include plural-count.h.
3518	* x-po.c: Include x-properties.h.
3519	* x-java.l (append_strings): Change argument type to 'const char *'.
3520
35212003-09-14  Bruno Haible  <bruno@clisp.org>
3522
3523	* msgfmt.c (check_plural_eval): Mark some strings as c-format.
3524	(msgfmt_add_message): Make static.
3525	* po-lex.c (mbfile_getc, control_sequence): Mark some strings as
3526	c-format.
3527
35282003-09-18  Bruno Haible  <bruno@clisp.org>
3529
3530	* FILES: Update.
3531
35322003-09-14  Bruno Haible  <bruno@clisp.org>
3533
3534	More reliable checking for read errors.
3535	* po-lex.c (mbfile_getc): Diagnose read errors also in the middle of
3536	multibyte characters.
3537	(lex_getc): Diagnose read errors also right after backslash.
3538	* x-rst.c (extract_rst): Diagnose read errors also inside ConstName
3539	and immediately after #.
3540
35412003-09-14  Bruno Haible  <bruno@clisp.org>
3542
3543	* write-mo.c: Include fwriterror.h.
3544	(msgdomain_write_mo): Use fwriteerror, to get right errno value in
3545	error message about write error.
3546	* write-po.c: Include fwriterror.h.
3547	(msgdomain_list_print): Use fwriteerror, to get right errno value in
3548	error message about write error.
3549	* write-java.c: Include fwriterror.h.
3550	(msgdomain_write_java): Use fwriteerror, to get right errno value in
3551	error message about write error.
3552	* write-tcl.c: Include fwriterror.h.
3553	(msgdomain_write_tcl): Use fwriteerror, to get right errno value in
3554	error message about write error.
3555
35562003-09-18  Bruno Haible  <bruno@clisp.org>
3557
3558	* xgettext.c (from_current_source_encoding): Use multiline_error,
3559	for a prettier error message.
3560
3561	* x-perl.c (extract_quotelike_pass1): Store counter_delim instead of
3562	EOF as delimiter, to avoid error during from_current_source_encoding.
3563	Reported by Crispin Flowerday <cflowerday@zeus.com>.
3564
35652003-09-13  Bruno Haible  <bruno@clisp.org>
3566
3567	* format-sh.c (INVALID_SHELL_SYNTAX,
3568	INVALID_CONTEXT_DEPENDENT_VARIABLE): New macros.
3569	(format_parse): Reject constructs like ${variable-default} and $?.
3570
35712003-09-13  Bruno Haible  <bruno@clisp.org>
3572
3573	Fix behaviour of "<program> --help > /dev/full".
3574	* hostname.c: Include closeout.h.
3575	(main): Register close_stdout for execution at program exit.
3576	* msgattrib.c: Include closeout.h.
3577	(main): Register close_stdout for execution at program exit.
3578	* msgcat.c: Include closeout.h.
3579	(main): Register close_stdout for execution at program exit.
3580	* msgcmp.c: Include closeout.h.
3581	(main): Register close_stdout for execution at program exit.
3582	* msgcomm.c: Include closeout.h.
3583	(main): Register close_stdout for execution at program exit.
3584	* msgconv.c: Include closeout.h.
3585	(main): Register close_stdout for execution at program exit.
3586	* msgen.c: Include closeout.h.
3587	(main): Register close_stdout for execution at program exit.
3588	* msgexec.c: Include closeout.h.
3589	(main): Register close_stdout for execution at program exit.
3590	* msgfilter.c: Include closeout.h.
3591	(main): Register close_stdout for execution at program exit.
3592	* msgfmt.c: Include closeout.h.
3593	(main): Register close_stdout for execution at program exit.
3594	* msggrep.c: Include closeout.h.
3595	(main): Register close_stdout for execution at program exit.
3596	* msginit.c: Include closeout.h.
3597	(main): Register close_stdout for execution at program exit.
3598	* msgmerge.c: Include closeout.h.
3599	(main): Register close_stdout for execution at program exit.
3600	* msgunfmt.c: Include closeout.h.
3601	(main): Register close_stdout for execution at program exit.
3602	* msguniq.c: Include closeout.h.
3603	(main): Register close_stdout for execution at program exit.
3604	* urlget.c: Include closeout.h.
3605	(main): Register close_stdout for execution at program exit.
3606	* xgettext.c: Include closeout.h.
3607	(main): Register close_stdout for execution at program exit.
3608	* write-po.c (msgdomain_list_print): Don't fclose (stdout) here.
3609
36102003-09-11  Bruno Haible  <bruno@clisp.org>
3611
3612	* po-lex.c (mbfile_getc): Handle unexpected return value of
3613	u8_mbtouc(). Reported by Jochen Hein <jochen@jochen.org>.
3614
36152003-09-09  Bruno Haible  <bruno@clisp.org>
3616
3617	* read-properties.c (phase4_getuc): Cast line_number to 'unsigned long'
3618	before outputting it.
3619
36202003-09-09  Bruno Haible  <bruno@clisp.org>
3621
3622	* po-lex.c: Test HAVE_DECL_GETC_UNLOCKED instead of HAVE_GETC_UNLOCKED.
3623	* write-po.c: Test HAVE_DECL_PUTC_UNLOCKED instead of
3624	HAVE_PUTC_UNLOCKED.
3625
36262003-09-09  Guido Flohr  <guido@imperia.net>
3627
3628	* x-perl.c (extract_quotelike_pass3): Change \l handling to no longer
3629	eat up non-uppercase characters; likewise for \u. Also make \l and \u
3630	work on characters written using hex or octal escape sequence. Fix \Q
3631	handling. With option --extract-all, avoid "invalid variable
3632	interpolation" warnings.
3633	(x_perl_prelex): With option --extract-all, keep variables inside
3634	double-quoted strings untouched.
3635
36362003-09-03  Bruno Haible  <bruno@clisp.org>
3637
3638	* x-sh.h: New file.
3639	* x-sh.c: New file.
3640	* xgettext.c: Include x-sh.h.
3641	(main): Call x_sh_extract_all, x_sh_keyword.
3642	(usage): Mention Shell language.
3643	(language_to_extractor): Add Shell rule.
3644	(extension_to_language): Add Shell rule.
3645	* Makefile.am (noinst_HEADERS): Add x-sh.h.
3646	(xgettext_SOURCES): Add x-sh.c.
3647	* Makefile.msvc (xgettext_OBJECTS): Add x-sh.obj.
3648	(x-sh.obj): New rule.
3649	* Makefile.vms (xgettext_OBJECTS): Add x-sh.obj.
3650	(x-sh.obj): New rule.
3651
36522003-08-31  Bruno Haible  <bruno@clisp.org>
3653
3654	* format-sh.c: New file.
3655	* message.h (format_sh): New enum value.
3656	(NFORMATS): Increment.
3657	* format.h (formatstring_sh): New declaration.
3658	* format.c (formatstring_parsers): Add entry for sh.
3659	* message.c (format_language, format_language_pretty): Likewise.
3660	* Makefile.am (FORMAT_SOURCE): Add format-sh.c.
3661	* Makefile.msvc (OBJECTS): Add format-sh.obj.
3662	(format-sh.obj): New rule.
3663	* Makefile.vms (OBJECTS): Add format-sh.obj.
3664	(format-sh.obj): New rule.
3665
36662003-08-31  Bruno Haible  <bruno@clisp.org>
3667
3668	* format-gcc-internal.c (isdigit): Remove unused macro.
3669	* format-perl-brace.c (isdigit): Likewise.
3670
36712003-09-01  Guido Flohr  <guido@imperia.net>
3672
3673	* x-perl.c (extract_balanced): Access the global last_token.
3674	Initialize last_token and prefer_division_over_regexp here. 
3675	(extract_perl): Not here.
3676
36772003-08-29  Bruno Haible  <bruno@clisp.org>
3678
3679	* x-perl.c: Include getline.h.
3680
36812003-08-24  Bruno Haible  <bruno@clisp.org>
3682
3683	* Makefile.msvc (format.obj, msgmerge.obj, xgettext.obj, msgattrib.obj,
3684	msgcat.obj, msgcomm.obj, msgconv.obj, msgen.obj, msgfilter.obj,
3685	msggrep.obj, msguniq.obj): Compile these in C++ mode. This works around
3686	the "non-constant initializer" error that we get for addresses of
3687	variables in DLLs in C mode.
3688
36892003-08-24  Bruno Haible  <bruno@clisp.org>
3690
3691	* msgfilter.c (process_message): Cast xrealloc() result.
3692
36932003-08-24  Bruno Haible  <bruno@clisp.org>
3694
3695	* msgfilter.c: On Windows, include <io.h> instead of <unistd.h>.
3696	* msggrep.c: Likewise.
3697
36982003-08-24  Bruno Haible  <bruno@clisp.org>
3699
3700	* plural-count.h: New file.
3701	* plural-count.c: New file, extracted from msgmerge.c.
3702	* msgmerge.c: Include plural-count.h instead of plural-exp.h.
3703	(match_domain): Use function get_plural_count().
3704	* Makefile.am (noinst_HEADERS): Add plural-count.h.
3705	(msgmerge_SOURCES): Add plural-count.c.
3706	* Makefile.msvc (msgmerge_OBJECTS): Add plural-count.obj.
3707	(plural-count.obj): New rule.
3708	* Makefile.vms (msgmerge_OBJECTS): Add plural-count.obj.
3709	(plural-count.obj): New rule.
3710
37112003-08-24  Bruno Haible  <bruno@clisp.org>
3712
3713	Support for building DLLs on Windows.
3714	* format.h (formatstring_c, formatstring_python, formatstring_lisp,
3715	formatstring_elisp, formatstring_librep, formatstring_smalltalk,
3716	formatstring_java, formatstring_awk, formatstring_pascal,
3717	formatstring_ycp, formatstring_tcl, formatstring_perl,
3718	formatstring_perl_brace, formatstring_php, formatstring_gcc_internal,
3719	formatstring_parsers): Add DLL_VARIABLE attribute.
3720	* message.h (format_language, format_language_pretty): Likewise.
3721	* msgl-cat.h (more_than, less_than, use_first, msgcomm_mode,
3722	omit_header): Likewise.
3723	* plural-table.h (plural_table, plural_table_size): Likewise.
3724	* po-charset.h (po_charset_ascii, po_charset_utf8, po_lex_charset,
3725	po_lex_iconv, po_lex_weird_cjk): Likewise.
3726	* po-lex.h (gram_pos, gram_pos_column, gram_max_allowed_errors,
3727	pass_obsolete_entries): Likewise.
3728	* read-po.h (line_comment, allow_duplicates, input_syntax): Likewise.
3729	* write-mo.h (alignment, no_hash_table): Likewise.
3730	* Makefile.am (po-gram-gen2.h): Likewise.
3731
37322003-08-24  Bruno Haible  <bruno@clisp.org>
3733
3734	* Makefile.msvc (gettext-po.obj, gettextpo.lib, gettextpo.res): New
3735	rules.
3736	(all): Depend on gettextpo.lib.
3737	(install, installdirs, uninstall): Install/uninstall gettext-po.h,
3738	gettextpo.dll and gettextpo.lib.
3739	* Makefile.vms (gettext-po.obj, gettextpo.olb): New rules.
3740	(all): Depend on gettextpo.olb.
3741	(install, installdirs, uninstall): Install/uninstall gettext-po.h,
3742	gettextpo.olb.
3743
37442003-08-24  Bruno Haible  <bruno@clisp.org>
3745
3746	* dir-list.h: Make this file includable in C++ mode: add extern "C".
3747	* file-list.h: Likewise.
3748	* format.h: Likewise.
3749	* message.h: Likewise.
3750	* msgl-ascii.h: Likewise.
3751	* msgl-cat.h: Likewise.
3752	* msgl-charset.h: Likewise.
3753	* msgl-english.h: Likewise.
3754	* msgl-equal.h: Likewise.
3755	* msgl-iconv.h: Likewise.
3756	* open-po.h: Likewise.
3757	* po-charset.h: Likewise.
3758	* po-lex.h: Likewise.
3759	* po-time.h: Likewise.
3760	* read-po-abstract.h: Likewise.
3761	* str-list.h: Likewise.
3762	* write-po.h: Likewise.
3763	* xgettext.h: Likewise.
3764	* read-po.h: Likewise.
3765	(this): Redefine to a different symbol.
3766	* xgettext.c: Add extern "C" around all "x-*.h" includes.
3767
37682003-08-22  Bruno Haible  <bruno@clisp.org>
3769
3770	* format-awk.c: Include error-progname.h instead of progname.h.
3771	* format-c.c: Likewise.
3772	* format-elisp.c: Likewise.
3773	* format-gcc-internal.c: Likewise.
3774	* format-java.c: Likewise.
3775	* format-librep.c: Likewise.
3776	* format-lisp.c: Likewise.
3777	* format-pascal.c: Likewise.
3778	* format-perl.c: Likewise.
3779	* format-perl-brace.c: Likewise.
3780	* format-php.c: Likewise.
3781	* format-python.c: Likewise.
3782	* format-tcl.c: Likewise.
3783	* format-ycp.c: Likewise.
3784	* po-lex.h: Likewise.
3785	* read-properties.c: Likewise.
3786	* write-po.c: Likewise.
3787	* x-awk.c: Likewise.
3788	* x-c.c: Likewise.
3789	* x-perl.c: Likewise.
3790	* x-python.c: Likewise.
3791	* x-rst.c: Likewise.
3792	* hostname.c: Include error-progname.h.
3793	* msgattrib.c: Likewise.
3794	* msgcat.c: Likewise.
3795	* msgcmp.c: Likewise.
3796	* msgcomm.c: Likewise.
3797	* msgconv.c: Likewise.
3798	* msgen.c: Likewise.
3799	* msgexec.c: Likewise.
3800	* msgfilter.c: Likewise.
3801	* msgfmt.c: Likewise.
3802	* msggrep.c: Likewise.
3803	* msginit.c: Likewise.
3804	* msgmerge.c: Likewise.
3805	* msgunfmt.c: Likewise.
3806	* msguniq.c: Likewise.
3807	* urlget.c: Likewise.
3808	* xgettext.c: Likewise.
3809	* po-lex.c: Include error-progname.h and pos.h.
3810
38112003-08-15  Bruno Haible  <bruno@clisp.org>
3812
3813	* msginit.c (catalogname_for_locale): Add entries for Aragonese,
3814	Haitian, Sichuan Yi, Limburgish.
3815	(englishname_of_language): Likewise.
3816
38172003-08-08  Bruno Haible  <bruno@clisp.org>
3818
3819	* format-gcc-internal.c: New file.
3820	* message.h (format_gcc_internal): New enum value.
3821	(NFORMATS): Increment.
3822	* format.h (formatstring_gcc_internal): New declaration.
3823	* format.c (formatstring_parsers): Add entry for gcc_internal.
3824	* message.c (format_language, format_language_pretty): Likewise.
3825	* x-c.h (SCANNERS_C): Add an entry for GCC-source.
3826	* xgettext.c (usage): Mention GCC-source language.
3827	* Makefile.am (FORMAT_SOURCE): Add format-gcc-internal.c.
3828	* Makefile.msvc (OBJECTS): Add format-gcc-internal.obj.
3829	(format-gcc-internal.obj): New rule.
3830	* Makefile.vms (OBJECTS): Add format-gcc-internal.obj.
3831	(format-gcc-internal.obj): New rule.
3832
38332003-08-04  Bruno Haible  <bruno@clisp.org>
3834
3835	* x-perl.c (extract_quotelike_pass3): Fix \x handling.
3836	Reported by Guido Flohr.
3837
38382003-07-05  Bruno Haible  <bruno@clisp.org>
3839
3840	* format-perl-brace.c: Renamed from format-perl-bracket.c. Recognize
3841	braces instead of brackets.
3842	* format.h (formatstring_perl_brace): Renamed from
3843	formatstring_perl_bracket.
3844	* format.c (formatstring_parsers): Add formatstring_perl_brace, remove
3845	formatstring_perl_bracket.
3846	* message.h (enum format_type): Add format_perl_brace, remove
3847	format_perl_bracket.
3848	* message.c (format_language, format_language_pretty): Update.
3849	* x-perl.h (SCANNERS_PERL): Update.
3850	* Makefile.am (FORMAT_SOURCE): Add format-perl-brace.c, remove
3851	format-perl-bracket.c.
3852	* Makefile.msvc (OBJECTS): Add format-perl-brace.obj, remove
3853	format-perl-bracket.obj.
3854	(format-perl-brace.obj): Renamed from format-perl-bracket.obj.
3855	* Makefile.vms (OBJECTS): Add format-perl-brace.obj, remove
3856	format-perl-bracket.obj.
3857	(format-perl-brace.obj): Renamed from format-perl-bracket.obj.
3858
38592003-07-03  Bruno Haible  <bruno@clisp.org>
3860
3861	Support for PHP >= 4.2.0.
3862	* x-php.c (init_keywords): Add ngettext, dngettext, dcngettext to the
3863	built-in keywords.
3864	Reported by A. Sopicki <a.sopicki@gmx.de>.
3865
38662003-06-27  Bruno Haible  <bruno@clisp.org>
3867
3868	* xgettext.h (from_current_source_encoding): New declaraction.
3869	* xgettext.c (from_current_source_encoding): New function.
3870	(CONVERT_STRING): Use it.
3871	* x-perl.c: Include po-charset.h.
3872	(get_here_document): Convert each line to UTF-8.
3873	(phase2_getc): Convert each comment to UTF-8. Tell xgettext_comment_add
3874	to not convert it.
3875	(extract_quotelike_pass1_utf8): New function.
3876	(extract_quotelike): Use extract_quotelike_pass1_utf8.
3877	(extract_triple_quotelike): Likewise.
3878	(extract_variable): Tell remember_a_message to not convert the string.
3879	(interpolate_keywords): Likewise.
3880	(extract_balanced): Tell remember_a_message, remember_a_message_plural
3881	to not convert the string.
3882
38832003-06-23  Guido Flohr  <guido@imperia.net>
3884
3885	* x-perl.c (extract_quotelike_pass3): Fix handling of doubled
3886	backslashes in single-quoted strings.
3887
38882003-06-23  Bruno Haible  <bruno@clisp.org>
3889
3890	* format-perl-bracket.c (format_check): Allow additional bracketed
3891	items in the msgstr.
3892
38932003-06-22  Bruno Haible  <bruno@clisp.org>
3894
3895	* write-properties.c: Don't include exit.h and gettext.h.
3896
38972003-06-22  Bruno Haible  <bruno@clisp.org>
3898
3899	* x-php.c (phase3_ungetc): Comment out unused function.
3900
39012003-06-21  Bruno Haible  <bruno@clisp.org>
3902
3903	* format-perl.c: Complete rewrite.
3904	* format-perl-bracket.c: New file.
3905	* message.h (format_perl_bracket): New enum value.
3906	(NFORMATS): Increment.
3907	* format.h (formatstring_perl_bracket): New declaration.
3908	* format.c (formatstring_parsers): Add entry for perl_bracket.
3909	* message.c (format_language, format_language_pretty): Likewise.
3910	* x-perl.h (SCANNERS_PERL): Use formatstring_perl and
3911	formatstring_perl_bracket.
3912	* Makefile.am (FORMAT_SOURCE): Add format-perl-bracket.c.
3913	* Makefile.msvc (OBJECTS): Add format-perl.obj,format-perl-bracket.obj.
3914	(xgettext_OBJECTS): Add x-perl.obj.
3915	(format-perl.obj, format-perl-bracket.obj, x-perl.obj): New rules.
3916	* Makefile.vms (OBJECTS): Add format-perl.obj, format-perl-bracket.obj.
3917	(xgettext_OBJECTS): Add x-perl.obj.
3918	(format-perl.obj, format-perl-bracket.obj, x-perl.obj): New rules.
3919
3920	* x-perl.c (extract_quotelike_pass3): Don't give an invalid
3921	interpolation error for a backslashed dollar sign.
3922
39232003-06-21  Bruno Haible  <bruno@clisp.org>
3924
3925	* x-perl.c (extract_quotelike_pass3): Fix handling of double backslash.
3926
39272003-06-19  Bruno Haible  <bruno@clisp.org>
3928
3929	* x-perl.c (enum string_type_ty): Remove trailing comma.
3930	(interpolate_keywords::enum parser_state): Likewise.
3931	(extract_quotelike_pass3): Cast first argument of u8_uctomb().
3932
39332003-06-15  Bruno Haible  <bruno@clisp.org>
3934
3935	* x-awk.c: Reorder definitions.
3936	* x-c.c: Reorder definitions.
3937	* x-perl.c: Reorder definitions.
3938	* x-php.c: Reorder definitions.
3939	* x-python.c: Reorder definitions.
3940	* x-smalltalk.c: Reorder definitions.
3941	* x-ycp.c: Reorder definitions.
3942
39432003-06-15  Bruno Haible  <bruno@clisp.org>
3944
3945	* x-perl.c (struct stack_entry): Remove type.
3946	(struct stack): Remove type.
3947	(struct token_stack_ty): New type.
3948	(token_stack): Change type to 'struct token_stack_ty'.
3949	(token_stack_dump): Renamed from stack_dump. Update.
3950	(token_stack_push): Renamed from stack_unshift. Rewritten.
3951	(token_stack_pop): Renamed from stack_shift. Rewritten.
3952	(token_stack_peek): Renamed from stack_head. Rewritten.
3953	(token_stack_free): Renamed from stack_free. Rewritten.
3954	(x_perl_lex, x_perl_unlex, extract_perl): Update.
3955
39562003-06-15  Bruno Haible  <bruno@clisp.org>
3957
3958	* x-perl.c (DEBUG_MEMORY): Remove macro.
3959	(remember_a_message_debug, remember_a_message_plural_debug,
3960	xmalloc_debug, xrealloc_debug, xrealloc_static_debug, xstrdup_debug,
3961	free_debug): Remove functions.
3962	(xrealloc_static): Remove macro. Use xrealloc instead.
3963
39642003-06-15  Bruno Haible  <bruno@clisp.org>
3965
3966	* x-awk.c (phase2_getc, x_awk_lex): Increase bufmax proportionally.
3967	* x-c.c (comment_add, comment_line_end, phase5_get, phase6_get):
3968	Likewise.
3969	* x-elisp.c (comment_add, comment_line_end): Likewise.
3970	* x-librep.c (comment_add, comment_line_end): Likewise.
3971	* x-lisp.c (comment_add, comment_line_end): Likewise.
3972	* x-php.c (comment_add, comment_line_end, x_php_lex): Likewise.
3973	* x-python.c (comment_add, comment_line_end, phase5_get): Likewise.
3974	* x-rst.c (extract_rst): Likewise.
3975	* x-smalltalk.c (comment_add, comment_line_end, phase2_get): Likewise.
3976	* x-tcl.c (comment_add, comment_line_end): Likewise.
3977	* x-ycp.c (phase2_getc, x_ycp_lex): Likewise.
3978
39792003-06-15  Bruno Haible  <bruno@clisp.org>
3980
3981	* xgettext.c (current_formatstring_parser1,
3982	current_formatstring_parser2): New variables, replacing
3983	current_formatstring_parser.
3984	(remember_a_message, remember_a_message_plural): Try both
3985	formatstring parsers.
3986	(language_to_extractor): Allow two formatstring parsers per language,
3987	not just one.
3988	* x-perl.h (SCANNERS_PERL): Add formatstring_c as secondary format
3989	string parser.
3990	* x-awk.h (SCANNERS_AWK): Update.
3991	* x-c.h (SCANNERS_C): Update.
3992	* x-elisp.h (SCANNERS_ELISP): Update.
3993	* x-glade.h (SCANNERS_GLADE): Update.
3994	* x-java.h (SCANNERS_JAVA): Update.
3995	* x-librep.h (SCANNERS_LIBREP): Update.
3996	* x-lisp.h (SCANNERS_LISP): Update.
3997	* x-php.h (SCANNERS_PHP): Update.
3998	* x-po.h (SCANNERS_PO): Update.
3999	* x-properties.h (SCANNERS_PROPERTIES): Update.
4000	* x-python.h (SCANNERS_PYTHON): Update.
4001	* x-rst.h (SCANNERS_RST): Update.
4002	* x-smalltalk.h (SCANNERS_SMALLTALK): Update.
4003	* x-tcl.h (SCANNERS_TCL): Update.
4004	* x-ycp.h (SCANNERS_YCP): Update.
4005
40062003-06-15  Bruno Haible  <bruno@clisp.org>
4007
4008	* x-perl.c (case_whitespace): New macro.
4009	(is_whitespace): New function.
4010	(interpolate_keywords): Add lineno argument. Track newlines to update
4011	lineno while processing the string. Use is_whitespace.
4012	(extract_triple_quotelike): Update. Use is_whitespace.
4013	(extract_variable): Simplify: add final NUL byte only when done. Use
4014	is_whitespace.
4015	(x_perl_prelex): Use is_whitespace. After reading a here document, use
4016	line_number+1, not line_number. Fix buffer overrun in <<XYZ handling.
4017	(collect_message): Use is_whitespace.
4018	(extract_balanced): Call free_token at the end of the loop, not at the
4019	beginning.
4020
40212003-06-14  Bruno Haible  <bruno@clisp.org>
4022
4023	* x-perl.c (enum token_type_ty): Reorder, so as to simplify the
4024	function free_token().
4025	(struct token_ty): Fix comments.
4026	(token2string): Add const.
4027	(token_stack): Make static.
4028	(*_debug, stack_dump): Remove all fflushs.
4029	(linebuf, linesize, linepos, linebuf_size, last_token, here_eaten,
4030	end_of_file): Make static.
4031	(last_string, last_string_finished): Remove unused variables.
4032	(phase1_getc, get_here_document, skip_pod): Test getline() result
4033	for being < 0, not == EOF.
4034	(phase1_ungetc): Signal internal error through abort(), not exit().
4035	(get_here_document): Tweak. Increase bufmax proportionally.
4036	(phase2_getc): Increase bufmax proportionally.
4037	(prefer_division_over_regexp): Fix comment.
4038	(extract_hex, extract_oct): Add const. Simplify.
4039	(extract_quotelike): Add a safety check.
4040	(extract_quotelike_pass1): Increase bufmax proportionally. Fix
4041	insufficient memory allocation at "bufpos + len >= bufmax".
4042	(extract_quotelike_pass3): Increase bufmax proportionally. Make crs
4043	const. After \x{ABC} position crs after the closing brace. Simplify \c
4044	code. Reduce memory allocation when \N{ABC} is seen. Fix bug in \l and
4045	\u. Fix error message when $ or @ is seen.
4046	(extract_variable): Increase bufmax proportionally.
4047	(interpolate_keywords): Likewise. Convert c's value to unsigned char.
4048	(x_perl_prelex): Increase bufmax proportionally. Compute 4th argument
4049	to extract_triple_quotelike completely.
4050	(extract_perl): Initialize token_stack correctly.
4051
40522003-06-13  Bruno Haible  <bruno@clisp.org>
4053
4054	* msgexec.c (process_string): Pass null_stderr=false.
4055	* msgfilter.c (process_string): Likewise.
4056	* msggrep.c (is_string_selected): Likewise.
4057	* read-java.c (execute_and_read_po_output): Likewise.
4058	* read-tcl.c (msgdomain_read_tcl): Likewise.
4059	* msginit.c (project_id, project_id_version, get_user_email,
4060	language_team_address): Return a default value if the subprocess
4061	fails, instead of exiting.
4062
40632003-06-12  Bruno Haible  <bruno@clisp.org>
4064
4065	* Makefile.am (noinst_HEADERS): Add x-perl.h.
4066	(FORMAT_SOURCE): Add format-perl.c.
4067	(xgettext_SOURCES): Add x-perl.c.
4068	* message.h (enum format_type): Mention perl between tcl and php.
4069	* message.c (format_language, format_language_pretty): Likewise.
4070	* format.h (formatstring_perl): Likewise.
4071	* format.c (formatstring_parsers): Likewise.
4072	* format-perl.c: Use GNU coding style. Prefer xmalloc over xcalloc.
4073	* x-perl.h: Assume ANSI C.
4074	* x-perl.c: Assume ANSI C. Use GNU coding style. Prefer xmalloc over
4075	xcalloc.
4076	(token_buf): Remove unused variable.
4077	(xcalloc_debug, stack_push, stack_pop): Remove unused functions.
4078	* xgettext.c: Mention perl between tcl and php.
4079
40802003-06-11  Guido Flohr  <guido@imperia.net>
4081
4082	* message.h (enum format_type): New enum value 'format_perl'.
4083	(NFORMATS): Increment.
4084	* message.c (format_language, format_language_pretty): Add entry
4085	for perl.
4086	* format.h (formatstring_perl): New declaration.
4087	* format-perl.c: New file.
4088	* format.c (formatstring_parsers): Add entry for perl.
4089	* x-perl.h: New file.
4090	* x-perl.c: New file.
4091	* xgettext.c: Include x-perl.h.
4092	(main): Call x_perl_extract_all, x_perl_keyword.
4093	(usage): Mention Perl language.
4094	(language_to_extractor): Add Perl rule.
4095	(extension_to_language): Add Perl rule.
4096
40972003-06-08  Bruno Haible  <bruno@clisp.org>
4098
4099	* Makefile.vms (LDADD): Take options from .opt files.
4100	(libiconv.opt): New rule.
4101	(msgcmp.exe, msgfmt.exe, msgmerge.exe, msgunfmt.exe, xgettext.exe,
4102	msgattrib.exe, msgcat.exe, msgcomm.exe, msgconv.exe, msgen.exe,
4103	msgexec.exe, msgfilter.exe, msggrep.exe, msginit.exe, msguniq.exe):
4104	Depend on it.
4105	* plural-eval.c: Include "eval-plural.h" without a path, rely on the
4106	Makefile's -I options instead.
4107	* read-properties.c (conv_from_java): Change type of q to
4108	'unsigned char *'.
4109	Reported by Jouk Jansen <joukj@hrem.stm.tudelft.nl>.
4110
41112003-05-27  Bruno Haible  <bruno@clisp.org>
4112
4113	* plural-table.c (plural_table): Correct entry for Slovak.
4114	Reported by Marcel Telka <marcel@telka.sk>.
4115
41162003-05-24  Bruno Haible  <bruno@clisp.org>
4117
4118	* x-glade.h (EXTENSIONS_GLADE): Also recognize the .glade2 extension.
4119	* x-glade.c (start_element_handler): Also extract strings according to
4120	Glade 2 conventions.
4121
41222003-05-22  Bruno Haible  <bruno@clisp.org>
4123
4124	* gettext-0.12.1 released.
4125
41262003-05-21  Bruno Haible  <bruno@clisp.org>
4127
4128	* msggrep.c (main) [Solaris]: Fix syntax error.
4129	Reported by Valery Beaud <valery.beaud@art.alcatel.fr>.
4130
41312003-05-21  Bruno Haible  <bruno@clisp.org>
4132
4133	* xgettext.c (output_syntax): New variable.
4134	(main): Set it.
4135	(finalize_header): If --properties-output was given, set the charset.
4136
41372003-05-18  Bruno Haible  <bruno@clisp.org>
4138
4139	* Makefile.msvc (DEBUGFLAGS): New variable.
4140	(gettextsrc.lib): Use it.
4141	(msgcmp.exe, msgfmt.exe, msgmerge.exe, msgunfmt.exe, xgettext.exe,
4142	msgattrib.exe, msgcat.exe, msgcomm.exe, msgconv.exe, msgen.exe,
4143	msgexec.exe, msgfilter.exe, msggrep.exe, msginit.exe, msguniq.exe):
4144	Use it, and MFLAGS too.
4145
41462003-05-17  Bruno Haible  <bruno@clisp.org>
4147
4148	* gettext-0.12 released.
4149
41502003-05-17  Bruno Haible  <bruno@clisp.org>
4151
4152	* Makefile.msvc (msgcmp.exe, msgfmt.exe, msgmerge.exe, msgunfmt.exe,
4153	msgattrib.exe, msgcat.exe, msgcomm.exe, msgconv.exe, msgen.exe,
4154	msgexec.exe, msgfilter.exe, msggrep.exe, msginit.exe, msguniq.exe):
4155	Link with iconv.lib, needed by intl.lib.
4156
41572003-05-12  Bruno Haible  <bruno@clisp.org>
4158
4159	* msginit.c (F_OK): Provide a fallback value.
4160	Reported by Perry Rapp.
4161
41622003-05-10  Bruno Haible  <bruno@clisp.org>
4163
4164	* msgl-iconv.c (iconv_string): Don't return -1 just because the string
4165	is longer than 4 KB.
4166	Reported by Denis Barbier <barbier@linuxfr.org>.
4167
41682003-05-04  Bruno Haible  <bruno@clisp.org>
4169
4170	* po-lex.h (po_gram_error): Don't use ISO C 99 feature on DEC C.
4171	* po-lex.c (po_gram_error): LIkewise.
4172
41732003-05-03  Bruno Haible  <bruno@clisp.org>
4174
4175	* msgfilter.c: Include <sys/select.h> also on EMX.
4176	Reported by Andreas Buening <andreas.buening@nexgo.de>.
4177
41782003-04-26  Bruno Haible  <bruno@clisp.org>
4179
4180	* message.h (msgdomain_list_ty): Add field 'encoding'.
4181	* message.c (msgdomain_list_alloc): Initialize it.
4182	* read-properties.h: New file.
4183	* read-properties.c: New file.
4184	* read-po-abstract.h (abstract_po_reader_class_ty): In
4185	directive_message field, add force_fuzzy argument.
4186	(po_scan_start, po_scan_end): Remove declarations.
4187	(input_syntax_ty): New type.
4188	(po_callback_message): Add force_fuzzy argument.
4189	* read-po-abstract.c (call_directive_message, po_callback_message):
4190	Add force_fuzzy argument.
4191	(po_scan_start, po_scan_end): Make static.
4192	(po_scan): Add support for syntax_properties. Move
4193	error_message_count handling to here.
4194	(po_callback_message): Move po_lex_charset_set invocation away.
4195	* read-po.h (default_po_reader_class_ty): In add_message field, add
4196	force_fuzzy argument.
4197	(default_directive_message, default_add_message): Add force_fuzzy
4198	argument.
4199	(inout_syntax): New declaration.
4200	* read-po.c (call_add_message): Add force_fuzzy argument.
4201	(default_directive_message, default_add_message): Likewise.
4202	(input_syntax): New variable.
4203	(read_po): Pass input_syntax to po_scan(). Set mdlp->encoding if
4204	possible.
4205	* po-gram-gen.y: Pass force_fuzzy = false.
4206	(do_callback_message): New function. Move po_lex_charset_set
4207	invocation to here.
4208	* po-lex.c (lex_end): Move error_message_count handling away.
4209	* write-properties.h: New file.
4210	* write-properties.c: New file.
4211	* write-po.h (message_print_syntax_properties): New declaration.
4212	* write-po.c (use_syntax_properties): New variable.
4213	(message_print_syntax_properties): New function.
4214	(msgdomain_list_print_po): New function, extracted from
4215	msgdomain_list_print.
4216	(msgdomain_list_print): Add check for plural forms. Add support for
4217	writing the .properties format.
4218	(extract_po): Renamed from extract. 
4219	* write-java.h (msgdomain_write_java): Add canon_encoding argument.
4220	* write-java.c (msgdomain_write_java): Likewise.
4221	* write-tcl.h (msgdomain_write_tcl): Likewise.
4222	* write-tcl.c (msgdomain_write_tcl): Likewise.
4223	* msgl-cat.c (catenate_msgdomain_list): Use mdlp->encoding if there
4224	is no header entry. Set total_mdlp->encoding if possible.
4225	* msgl-iconv.c (iconv_msgdomain_list): Use mdlp->encoding if there
4226	is no header entry. Set mdlp->encoding.
4227	* msgattrib.c (long_options): Add --properties-input/output.
4228	(main): Handle them.
4229	(usage): Document options -P and -p.
4230	* msgcat.c (long_options): Add --properties-input/output.
4231	(main): Handle them. If option -p is used, convert to UTF-8 and
4232	ignore the to_code.
4233	(usage): Document options -P and -p.
4234	* msgcomm.c (long_options): Add --properties-input/output.
4235	(main): Handle them.
4236	(usage): Document options -P and -p.
4237	* msgconv.c (long_options): Add --properties-input/output.
4238	(main): Handle them. If option -p is used, ignore the to_code.
4239	(usage): Document options -P and -p.
4240	* msgen.c (long_options): Add --properties-input/output.
4241	(main): Handle them.
4242	(usage): Document options -P and -p.
4243	* msgfilter.c (long_options): Add --properties-input/output.
4244	(main): Handle them.
4245	(usage): Document options -P and -p.
4246	* msggrep.c (long_options): Add --properties-input/output.
4247	(main): Handle them.
4248	(usage): Document options -P and -p.
4249	* msginit.c (long_options): Add --properties-input/output.
4250	(main): Handle them.
4251	(usage): Document options -P and -p.
4252	* msgmerge.c (long_options): Add --properties-input/output.
4253	(main): Handle them. In update mode, --properties-input implies
4254	--properties-output.
4255	(usage): Document options -P and -p.
4256	(merge): Set result->encoding if possible.
4257	* msguniq.c (long_options): Add --properties-input/output.
4258	(main): Handle them.
4259	(usage): Document options -P and -p.
4260	* msgcmp.c (long_options): Add --properties-input.
4261	(main): Handle it.
4262	(usage): Document option -P.
4263	* msgexec.c (long_options): Add --properties-input.
4264	(main): Handle it.
4265	(usage): Document option -P.
4266	* msgfmt.c (long_options): Add --properties-input.
4267	(main): Handle it. Pass the known canon_encoding to
4268	msgdomain_write_java and msgdomain_write_tcl.
4269	(usage): Document option -P.
4270	(msgfmt_add_message): Add force_fuzzy argument.
4271	(read_po_file_msgfmt): Pass input_syntax to po_scan().
4272	* msgunfmt.c (long_options): Add --properties-output.
4273	(main): Handle it.
4274	(usage): Document option -p.
4275	* x-properties.h: New file.
4276	* x-po.c (extract_add_message): Add force_fuzzy argument.
4277	(extract): Renamed from extract_po. Pass input_syntax to po_scan().
4278	(extract_po): New function.
4279	(extract_properties): New function.
4280	* xgettext.h: Include read-po.h.
4281	* xgettext.c (long_options): Add --properties-output.
4282	(main): Handle it.
4283	(usage): Document options -L JavaProperties and --properties-output.
4284	(exclude_directive_message): Add force_fuzzy argument.
4285	(read_exclusion_file): Pass input_syntax to po_scan().
4286	(table): Add support for .properties format.
4287	* Makefile.am (noinst_HEADERS): Add read-properties.h,
4288	write-properties.h, x-properties.h.
4289	(COMMON_SOURCE): Add read-properties.c.
4290	(libgettextsrc_la_SOURCES): Add write-properties.c.
4291	* Makefile.msvc (OBJECTS): Add read-properties.obj,
4292	write-properties.obj.
4293	(read-properties.obj, write-properties.obj): New rules.
4294	* Makefile.vms (OBJECTS): Add read-properties.obj,
4295	write-properties.obj.
4296	(read-properties.obj, write-properties.obj): New rules.
4297	* FILES: Update.
4298
42992003-04-21  Bruno Haible  <bruno@clisp.org>
4300
4301	* read-po-abstract.h (po_scan_file): Remove declaration.
4302	* read-po-abstract.c (po_scan_file): Remove function.
4303	* read-po.c (read_po_file): Call read_po.
4304	* msgfmt.c (read_po_file_msgfmt): Call open_po_file. Invoke po_scan
4305	instead of po_scan_file.
4306	* xgettext.c (read_exclusion_file): Call open_po_file. Invoke po_scan
4307	instead of po_scan_file.
4308
43092003-04-20  Bruno Haible  <bruno@clisp.org>
4310
4311	* open-po.h (open_po_file): Add argument 'exit_on_error'.
4312	* open-po.c (try_open_po_file): Renamed from open_po_file.
4313	(open_po_file): New function.
4314	* po-lex.h (lex_end): Change return type to void.
4315	(lex_open, lex_close): Remove declarations.
4316	* po-lex.c (lex_end): Change return type to void.
4317	(lex_open, lex_close): Remove functions.
4318	* read-po-abstract.c (po_scan_file): Inline lex_open and lex_close.
4319	Reuse po_scan code.
4320
43212003-04-14  Bruno Haible  <bruno@clisp.org>
4322
4323	* hostname.c (usage): Split strings: use one string per option
4324	description.
4325	* msgattrib.c (usage): Likewise.
4326	* msgcat.c (usage): Likewise.
4327	* msgcmp.c (usage): Likewise.
4328	* msgcomm.c (usage): Likewise.
4329	* msgconv.c (usage): Likewise.
4330	* msgen.c (usage): Likewise.
4331	* msgexec.c (usage): Likewise.
4332	* msgfilter.c (usage): Likewise.
4333	* msgfmt.c (usage): Likewise.
4334	* msggrep.c (usage): Likewise.
4335	* msginit.c (usage): Likewise.
4336	* msgmerge.c (usage): Likewise.
4337	* msgunfmt.c (usage): Likewise.
4338	* msguniq.c (usage): Likewise.
4339	* urlget.c (usage): Likewise.
4340	* xgettext.c (usage): Likewise.
4341
43422003-04-13  Bruno Haible  <bruno@clisp.org>
4343
4344	Unify three PO file parsers.
4345	* read-po-abstract.h: Renamed from po.h.
4346	(abstract_po_reader_class_ty): Renamed from po_method_ty.
4347	(abstract_po_reader_ty): Renamed from po_ty.
4348	(ABSTRACT_PO_READER_TY): Renamed from PO_BASE_TY.
4349	(po_reader_alloc): Renamed from po_alloc.
4350	(po_reader_free): Renamed from po_free.
4351	* read-po-abstract.c: Renamed from po.c.
4352	(po_reader_alloc): Renamed from po_alloc.
4353	(po_reader_free): Renamed from po_free.
4354	(call_parse_brief): Renamed from po_parse_brief.
4355	(call_parse_debrief): Renamed from po_parse_debrief.
4356	(call_directive_domain): Renamed from po_directive_domain.
4357	(call_directive_message): Renamed from po_directive_message.
4358	(call_comment): Renamed from po_comment.
4359	(call_comment_dot): Renamed from po_comment_dot.
4360	(call_comment_filepos): Renamed from po_comment_filepos.
4361	(call_comment_special): Renamed from po_comment_special.
4362	* read-po.h: Include read-po-abstract.h.
4363	(default_po_reader_class_ty, default_po_reader_ty): New types.
4364	(ABSTRACT_PO_READER_TY): New macro.
4365	(default_constructor, default_destructor, default_parse_brief,
4366	default_parse_debrief, default_directive_domain,
4367	default_directive_message, default_comment, default_comment_dot,
4368	default_comment_filepos, default_comment_special, default_set_domain,
4369	default_add_message): New declarations.
4370	(default_po_reader_alloc): New declaration.
4371	* read-po.c (default_po_reader_ty): Renamed from readall_class_ty.
4372	Add fields handle_comments, handle_filepos_comments,
4373	allow_domain_directives, allow_duplicates,
4374	allow_duplicates_if_same_msgstr.
4375	(call_set_domain, call_add_message, call_frob_new_message): New
4376	functions.
4377	(default_constructor): Renamed from readall_constructor. Don't set
4378	this->mdlp and this->mlp.
4379	(default_destructor): Renamed from readall_destructor.
4380	(default_parse_brief): Renamed from readall_parse_brief.
4381	(default_parse_debrief): New function.
4382	(default_copy_comment_state, default_reset_comment_state): New
4383	functions.
4384	(default_directive_domain): Renamed from readall_directive_domain.
4385	Call set_domain method.
4386	(default_directive_message): Renamed from readall_directive_message.
4387	Call add_message method.
4388	(default_comment): Renamed from readall_comment.
4389	(default_comment_dot): Renamed from readall_comment_dot.
4390	(default_comment_filepos): Renamed from readall_comment_filepos.
4391	(default_comment_special): Renamed from readall_comment_special.
4392	(default_set_domain, default_add_message): New functions.
4393	(default_methods): Renamed from readall_methods.
4394	(default_po_reader_alloc): New function.
4395	(read_po, read_po_file): Update.
4396	* msgfmt.c: Include read-po.h instead of po.h.
4397	(msgfmt_po_reader_ty): Renamed from msgfmt_class_ty. Inherit
4398	from default_po_reader_ty.
4399	(main): Drop po_lex_pass_comments call, done by default_parse_brief.
4400	(msgfmt_constructor): Renamed from format_constructor. Call superclass
4401	function.
4402	(msgfmt_parse_debrief): Renamed from format_debrief. Call superclass
4403	function.
4404	(format_directive_domain): Remove function.
4405	(msgfmt_set_domain): New function.
4406	(format_directive_message): Remove function.
4407	(msgfmt_add_message, msgfmt_frob_new_message): New functions.
4408	(msgfmt_comment_special): Renamed from format_comment_special.
4409	(msgfmt_methods): Renamed from format_methods.
4410	(read_po_file_msgfmt): Renamed from read_po_file.
4411	* x-po.c: Include read-po.h instead of po.h.
4412	(extract_class_ty, extract_constructor, extract_directive_domain,
4413	extract_directive_message, extract_parse_brief, extract_comment,
4414	extract_comment_dot, extract_comment_filepos, extract_comment_special):
4415	Remove functions.
4416	(extract_add_message): New function.
4417	(extract_methods): Update.
4418	(extract_po): Update.
4419	* xgettext.c: Include read-po-abstract.h instead of po.h.
4420	(exclude_directive_domain, exclude_directive_message, exclude_methods,
4421	read_exclusion_file): Update.
4422	* msgcmp.c: Don't include po.h.
4423	* msgmerge.c: Likewise.
4424	* po-gram-gen.y: Include read-po-abstract.h instead of po.h.
4425	* po-hash-gen.y: Likewise.
4426	(po_parse_comment_filepos): Renamed from po_hash.
4427	* po-hash.h (po_parse_comment_filepos): Renamed from po_hash.
4428	* Makefile.am (noinst_HEADERS): Remove po.h, add read-po-abstract.h.
4429	(COMMON_SOURCE): Remove po.c, add read-po-abstract.c.
4430	* Makefile.msvc (OBJECTS): Remove po.obj, add read-po-abstract.obj.
4431	(read-po-abstract.obj): Renamed from po.obj.
4432	* Makefile.vms (OBJECTS): Remove po.obj, add read-po-abstract.obj.
4433	(read-po-abstract.obj): Renamed from po.obj.
4434
44352003-04-13  Bruno Haible  <bruno@clisp.org>
4436
4437	* read-po.c (readall_directive_message): Separate accumulation and
4438	reset.
4439	* x-po.c (extract_directive_message): Likewise.
4440
44412003-04-13  Bruno Haible  <bruno@clisp.org>
4442
4443	* write-po.h (message_print_comment, message_print_comment_dot,
4444	message_print_comment_filepos, message_print_comment_flags): New
4445	declarations.
4446	* write-po.c: Reorder functions.
4447	(message_print_comment, message_print_comment_dot,
4448	message_print_comment_filepos, message_print_comment_flags): New
4449	functions, extracted from message_print.
4450	(message_print): Use them.
4451	(message_print_obsolete): Use message_print_comment.
4452
44532003-04-22  Bruno Haible  <bruno@clisp.org>
4454
4455	* plural-table.c (plural_table): Add an entry about Faroese.
4456	Reported by Jacob Sparre Andersen <sparre@crs4.it>.
4457
44582003-04-13  Bruno Haible  <bruno@clisp.org>
4459
4460	* po.h (po_scan_start, po_scan_end): New declarations.
4461	* po.c: Reorder functions.
4462	(po_scan_start, po_scan_end): New functions.
4463	(po_scan, po_scan_file): Use them.
4464
44652003-04-12  Bruno Haible  <bruno@clisp.org>
4466
4467	* Makefile.vms: New variables ABIFLAGS, DEFS. Avoid rules with no
4468	lines. Don't use the force target. Correct wildcard syntax.
4469	Suggested by Jouk Jansen <joukj@hrem.stm.tudelft.nl>.
4470
44712003-04-13  Bruno Haible  <bruno@clisp.org>
4472
4473	* xgettext.c (construct_header): Remove spurious comma.
4474
44752003-03-30  Bruno Haible  <bruno@clisp.org>
4476
4477	* Makefile.vms: New file.
4478	* Makefile.am (EXTRA_DIST): Add Makefile.vms.
4479	(x-java.c): Prepend a few VMS specific lines.
4480	* po-lex.c (mbfile_getc): Change element type of scatchbuf to
4481	'unsigned char'.
4482	* write-java.c (string_hashcode, write_java_string): Cast argument of
4483	u8_mbtouc.
4484	* write-tcl.c (write_tcl_string): Likewise.
4485	* x-python.c (phase7_getuc): Cast argument of unicode_name_character.
4486	* msgfilter.c (write): #undef before redefining it. Needed for VMS.
4487	(select): Likewise.
4488
44892003-03-30  Bruno Haible  <bruno@clisp.org>
4490
4491	* Makefile.am (noinst_HEADERS): Add po-gram-gen2.h.
4492	(BUILT_SOURCES): Add po-gram-gen2.h.
4493	(DISTCLEANFILES): Remove po-gram-gen2.h.
4494	(po-gram-gen2.h): Simplify rule.
4495
44962003-03-17  Bruno Haible  <bruno@clisp.org>
4497
4498	Native Woe32/MSVC support.
4499	* Makefile.msvc: New file.
4500	* Makefile.am (EXTRA_DIST): Add it.
4501	* msgfilter.c: Include <sys/time.h> only if it exists.
4502	(process_string): Mark as NYI on Woe32.
4503	* msgfmt.c (sigjmp_buf, sigsetjmp, siglongjmp): Provide fallback
4504	definitions for Woe32.
4505	* msginit.c: Include <fcntl.h>, for F_OK. Include <pwd.h> only if it
4506	exists.
4507	(get_user_pwd, get_user_fullname): Adapt for when <pwd.h> is missing.
4508	(project_id, project_id_version, get_user_email,
4509	language_team_address): Use DEV_NULL instead of "/dev/null".
4510	* msggrep.c (is_string_selected): Likewise.
4511	* read-java.c (execute_and_read_po_output): Likewise.
4512	* read-tcl.c (msgdomain_read_tcl): Likewise.
4513	* write-mo.c: Include <sys/param.h> only if it exists.
4514
45152003-03-28  Bruno Haible  <bruno@clisp.org>
4516
4517	* msgmerge.c (main): Use copy_file_preserving instead of copy_file.
4518
45192003-03-16  Bruno Haible  <bruno@clisp.org>
4520
4521	* str-list.h (string_list_join): Comment out.
4522	* str-list.c (string_list_join): Comment out.
4523
45242003-03-10  Bruno Haible  <bruno@clisp.org>
4525
4526	* msggrep.c (no_pass): Mention option -C.
4527	(usage): Document option -C completely.
4528	Reported by Martin Quinson <Martin.Quinson@tuxfamily.org>.
4529
45302003-02-28  Bruno Haible  <bruno@clisp.org>
4531
4532	Support for relocatable installation.
4533	* msgattrib.c: Include relocatable.h.
4534	(main): Relocate LOCALEDIR value.
4535	* msgcat.c: Include relocatable.h.
4536	(main): Relocate LOCALEDIR value.
4537	* msgcmp.c: Include relocatable.h.
4538	(main): Relocate LOCALEDIR value.
4539	* msgcomm.c: Include relocatable.h.
4540	(main): Relocate LOCALEDIR value.
4541	* msgconv.c: Include relocatable.h.
4542	(main): Relocate LOCALEDIR value.
4543	* msgen.c: Include relocatable.h.
4544	(main): Relocate LOCALEDIR value.
4545	* msgexec.c: Include relocatable.h.
4546	(main): Relocate LOCALEDIR value.
4547	* msgfilter.c: Include relocatable.h.
4548	(main): Relocate LOCALEDIR value.
4549	* msgfmt.c: Include relocatable.h.
4550	(main): Relocate LOCALEDIR value.
4551	* msggrep.c: Include relocatable.h.
4552	(main): Relocate LOCALEDIR value.
4553	* msginit.c: Include relocatable.h.
4554	(main): Relocate LOCALEDIR value.
4555	(project_id, project_id_version, get_user_email): Relocate LIBDIR
4556	value.
4557	(language_team_address): Relocate LIBDIR and PROJECTSDIR values.
4558	* msgmerge.c: Include relocatable.h.
4559	(main): Relocate LOCALEDIR value.
4560	* msgunfmt.c: Include relocatable.h.
4561	(main): Relocate LOCALEDIR value.
4562	* msguniq.c: Include relocatable.h.
4563	(main): Relocate LOCALEDIR value.
4564	* xgettext.c: Include relocatable.h.
4565	(main): Relocate LOCALEDIR value.
4566	* read-java.c: Include relocatable.h.
4567	(msgdomain_read_java): Relocate GETTEXTJEXEDIR value.
4568	* read-tcl.c: Include relocatable.h.
4569	(msgdomain_read_tcl): Relocate GETTEXTDATADIR value.
4570	* hostname.c: Include relocatable.h.
4571	(main): Relocate LOCALEDIR value. Update copyright year.
4572	* urlget.c: Include relocatable.h.
4573	(main): Relocate LOCALEDIR value. Update copyright year.
4574	(fetch): Relocate GETTEXTJEXEDIR value.
4575	* user-email.in: Relocate $libdir.
4576	* Makefile.am (aliaspath): New variable.
4577	(DEFS): Define LOCALE_ALIAS_PATH.
4578	(msginit_SOURCES): Add .../localealias.c.
4579	(msginit_LDADD): Remove .../localealias.lo.
4580	(msgcmp_CFLAGS, msgfmt_CFLAGS, msgmerge_CFLAGS, msgunfmt_CFLAGS,
4581	xgettext_CFLAGS, msgattrib_CFLAGS, msgcat_CFLAGS, msgcomm_CFLAGS,
4582	msgconv_CFLAGS, msgen_CFLAGS, msgexec_CFLAGS, msgfilter_CFLAGS,
4583	msggrep_CFLAGS, msginit_CFLAGS, msguniq_CFLAGS, hostname_CFLAGS,
4584	urlget_CFLAGS): New variables.
4585	(msgcmp_LDFLAGS, msgfmt_LDFLAGS, msgmerge_LDFLAGS, msgunfmt_LDFLAGS,
4586	xgettext_LDFLAGS, msgattrib_LDFLAGS, msgcat_LDFLAGS, msgcomm_LDFLAGS,
4587	msgconv_LDFLAGS, msgen_LDFLAGS, msgexec_LDFLAGS, msgfilter_LDFLAGS,
4588	msggrep_LDFLAGS, msginit_LDFLAGS, msguniq_LDFLAGS, hostname_LDFLAGS,
4589	urlget_LDFLAGS): New variables.
4590	(install-exec-java-yes): Don't ignore INSTALL_PROGRAM_ENV.
4591	(RELOCATABLE_LIBRARY_PATH, RELOCATABLE_SRC_DIR, RELOCATABLE_BUILD_DIR,
4592	RELOCATABLE_CONFIG_H_DIR): New variables.
4593
45942003-03-13  Bruno Haible  <bruno@clisp.org>
4595
4596	* msggrep.c (main): On Solaris, prefer /usr/xpg4/bin/grep to
4597	/usr/bin/grep. Needed for Solaris 2.8 and 2.9.
4598	Reported by Sven Utcke <utcke@informatik.uni-hamburg.de>.
4599
46002003-03-03  Bruno Haible  <bruno@clisp.org>
4601
4602	* msgen.c (usage): Don't say that the entries are marked fuzzy.
4603	Reported by Karl Eichwalder <ke@suse.de>.
4604
46052003-02-23  Bruno Haible  <bruno@clisp.org>
4606
4607	Improve error messages for invalid format strings.
4608	* format-invalid.h: New file.
4609	* format.h (struct formatstring_parser): Add invalid_reason argument
4610	to 'parse' field.
4611	* format-awk.c: Include c-ctype.h, xerror.h, format-invalid.h.
4612	(format_parse): Add invalid_reason argument.
4613	* format-c.c: Include c-ctype.h, xerror.h, format-invalid.h.
4614	(INVALID_C99_MACRO): New macro.
4615	(format_parse): Add invalid_reason argument.
4616	(get_c99_format_directives): Update.
4617	* format-elisp.c: Include c-ctype.h, xerror.h, format-invalid.h.
4618	(format_parse): Add invalid_reason argument.
4619	* format-java.c: Include xerror.h, format-invalid.h.
4620	(message_format_parse, choice_format_parse, format_parse): Add
4621	invalid_reason argument.
4622	(choice_format_parse): Return false if a choice contains an empty
4623	number part.
4624	* format-librep.c: Include c-ctype.h, xerror.h, format-invalid.h.
4625	(format_parse): Add invalid_reason argument.
4626	* format-lisp.c: Include xerror.h, format-invalid.h.
4627	(check_params, nocheck_params): Add directives, invalid_reason
4628	arguments.
4629	(parse_upto, format_parse): Add invalid_reason argument.
4630	* format-pascal.c: Include xerror.h, format-invalid.h.
4631	(format_parse): Add invalid_reason argument.
4632	* format-php.c: Include c-ctype.h, xerror.h, format-invalid.h.
4633	(format_parse): Add invalid_reason argument.
4634	* format-python.c: Include c-ctype.h, xerror.h, format-invalid.h.
4635	(INVALID_MIXES_NAMED_UNNAMED): New macro.
4636	(format_parse): Add invalid_reason argument.
4637	* format-tcl.c: Include c-ctype.h, xerror.h, format-invalid.h.
4638	(format_parse): Add invalid_reason argument.
4639	* format-ycp.c: Include c-ctype.h, xerror.h, format-invalid.h.
4640	(format_parse): Add invalid_reason argument.
4641	* msgfmt.c (check_pair): Output invalid_reason returned for msgstr.
4642	* msgmerge.c (msgfmt_check_pair_fails): Update.
4643	* xgettext.c (remember_a_message, remember_a_message_plural): Update.
4644	* Makefile.am (FORMAT_SOURCE): Add format-invalid.h.
4645
46462003-02-22  Bruno Haible  <bruno@clisp.org>
4647
4648	* x-python.c (init_keywords): Add u*gettext variants and plural
4649	handling functions added in Python 2.3.
4650
46512003-02-22  Bruno Haible  <bruno@clisp.org>
4652
4653	* Makefile.am (installdirs): Remove dependency, redundant with
4654	automake >= 1.6.
4655
46562003-02-20  Bruno Haible  <bruno@clisp.org>
4657
4658	* Makefile.am (libgettextpo_la_DEPENDENCIES): New variable.
4659	Reported by Jim Meyering <jim@meyering.net>.
4660
46612003-02-19  Bruno Haible  <bruno@clisp.org>
4662
4663	* Makefile.am (xgettext_LDADD): Mention $(LIBUNINAME) before
4664	libgettextsrc.la, not after it. Needed avoid link error on OSF/1 4.0:
4665	libtool produces a link command line that contains "-lc" where a
4666	shared library was used, and on OSF/1 4.0 "-lc" must not be used
4667	before objects that use integer division.
4668
46692003-02-18  Bruno Haible  <bruno@clisp.org>
4670
4671	* message.c (msgdomain_list_free): Uncomment this function.
4672	* Makefile.am (libgettextpo_la_LDFLAGS): Add ../lib/libgettextlib.la.
4673	Needed for Solaris 2.7.
4674
46752003-02-16  Bruno Haible  <bruno@clisp.org>
4676
4677	* msgmerge.c (message_merge): Add support for Report-Msgid-Bugs-To
4678	field.
4679	* xgettext.c (msgid_bugs_address): New variable.
4680	(long_options): Add option --msgid-bugs-address.
4681	(main): Handle option --msgid-bugs-address.
4682	(usage): Document option --msgid-bugs-address.
4683	(construct_header): Add 'Report-Msgid-Bugs-To:' field. Warn if
4684	msgid_bugs_address is empty.
4685
46862003-02-15  Bruno Haible  <bruno@clisp.org>
4687
4688	* user-email.in: Add support for GNOME evolution, OpenOffice and
4689	StarOffice with nonstandard installation directory.
4690
46912003-02-15  Bruno Haible  <bruno@clisp.org>
4692
4693	* msgattrib.c (main): Update year in --version output.
4694	* msgcat.c (main): Likewise.
4695	* msgcmp.c (main): Likewise.
4696	* msgcomm.c (main): Likewise.
4697	* msgconv.c (main): Likewise.
4698	* msgen.c (main): Likewise.
4699	* msgexec.c (main): Likewise.
4700	* msgfilter.c (main): Likewise.
4701	* msgfmt.c (main): Likewise.
4702	* msgunfmt.c (main): Likewise.
4703	* msguniq.c (main): Likewise.
4704	* xgettext.c (main): Likewise.
4705
47062003-02-12  Bruno Haible  <bruno@clisp.org>
4707
4708	Big restructuring.
4709	* gettext.c: Remove file.
4710	* ngettext.c: Remove file.
4711	* Makefile.am (bin_PROGRAMS): Remove gettext, ngettext.
4712	(EXTRA_DIST): Add ChangeLog.0.
4713	(pkgdatadir): Define using 'gettext' instead of @PACKAGE@.
4714	(pkglibdir): Likewise.
4715	(INCLUDES): Refer to intl in gettext-runtime directory.
4716	(gettext_SOURCES, ngettext_SOURCES, gettext_LDADD, ngettext_LDADD):
4717	Remove variables.
4718	(install-exec-local, installdirs-local, uninstall-local,
4719	install-exec-java-yes, installdirs-java-yes, uninstall-java-yes): Use
4720	$(pkglibdir) instead of $(libdir)/$(PACKAGE).
4721	* plural.c: Update for changed directory structure.
4722	* user-email.in: Use 'gettext' instead of @PACKAGE@.
4723
4724
4725See ChangeLog.0 for earlier changes.
4726