12003-01-31  Bruno Haible  <bruno@clisp.org>
2
3	* gettext-po.h: New file.
4	* gettext-po.c: New file.
5	* Makefile.am (lib_LTLIBRARIES): Add libgettextpo.la.
6	(include_HEADERS): New variable.
7	(libgettextpo_la_SOURCES, libgettextpo_la_LDFLAGS): New variables.
8	(LTV_CURRENT, LTV_REVISION, LTV_AGE): New variables.
9
102003-01-24  Bruno Haible  <bruno@clisp.org>
11
12	* msgattrib.c (long_options): Add --only-file and --ignore-file.
13	(main): Handle options --only-file and --ignore-file.
14	(usage): Document options --only-file and --ignore-file.
15	(process_message_list): Add arguments only_mdlp, ignore_mdlp.
16	(process_msgdomain_list): Likewise.
17
182003-01-23  Bruno Haible  <bruno@clisp.org>
19
20	* po-gram.h: Don't include <sys/types.h>.
21
222003-01-23  Bruno Haible  <bruno@clisp.org>
23
24	* msgmerge.c (use_fuzzy_matching): New variable.
25	(long_options): Add option -N/--no-fuzzy-matching.
26	(main, match_domain): Implement it.
27	(usage): Document it.
28
292003-01-23  Bruno Haible  <bruno@clisp.org>
30
31	* write-mo.c (write_table): Use xmalloc/free instead of alloca/freea
32	for most allocations. Needed for platforms with a small stack, such
33	as Woe32 with a default stack size of 1.2 MB.
34	Reported by Xiong Jiang <jxiong@offtopic.org>.
35
362003-01-23  Bruno Haible  <bruno@clisp.org>
37
38	* format-c.c (get_c99_format_directives): Free the allocated
39	descriptor after use.
40
412003-01-18  Bruno Haible  <bruno@clisp.org>
42
43	* FILES: Update.
44
452003-01-12  Bruno Haible  <bruno@clisp.org>
46
47	* msgconv.c: Include localcharset.h.
48	(locale_charset): Remove declaration.
49	* msginit.c: Include localcharset.h.
50	(locale_charset): Remove declaration.
51	* msgl-charset.c: Include localcharset.h.
52	(locale_charset): Remove declaration.
53
542003-01-12  Bruno Haible  <bruno@clisp.org>
55
56	* format-java.c: Include alloca.h instead of liballoca.h.
57	* msggrep.c: Likewise.
58	* msginit.c: Likewise.
59	* msgl-cat.c: Likewise.
60	* msgl-charset.c: Likewise.
61	* msgl-iconv.c: Likewise.
62	* msgmerge.c: Likewise.
63	* po-charset.c: Likewise.
64	* read-tcl.c: Likewise.
65	* write-java.c: Likewise.
66	* write-mo.c: Likewise.
67	* write-po.c: Likewise.
68	* write-tcl.c: Likewise.
69
702003-01-12  Bruno Haible  <bruno@clisp.org>
71
72	* Makefile.am: Make use of += for variables.
73
742003-01-12  Bruno Haible  <bruno@clisp.org>
75
76	* write-po.c (wrap): Add an assertion, to protect against Solaris 2.9
77	iconv() bug.
78
792003-01-10  Bruno Haible  <bruno@clisp.org>
80
81	* po-charset.c (po_lex_charset_set): Work around Solaris 2.9 iconv()
82	bug.
83	* write-po.c (wrap): Likewise.
84
852003-01-08  Bruno Haible  <bruno@clisp.org>
86
87	* project-id: Make it work with configure files that use
88	AM_INIT_AUTOMAKE from automake-1.7.2.
89
902002-12-04  Bruno Haible  <bruno@clisp.org>
91
92	Fix handling of references to filenames starting with a digit.
93	* po-hash-gen.y (last_was_colon): New variable.
94	(yylex): Update it for each token. Recognize numbers only immediately
95	after a colon.
96	(po_hash): Move function. Initialize last_was_colon.
97	Reported by Yanko Kaneti <yaneti@declera.com> and
98	Jordi Mallach <jordi@sindominio.net>.
99
1002002-11-22  Bruno Haible  <bruno@clisp.org>
101
102	* msgexec.c (process_string): Change test of full_write return value.
103	* msggrep.c (is_string_selected): Likewise.
104	* urlget.c (cat_file): Likewise.
105
1062002-11-14  Bruno Haible  <bruno@clisp.org>
107
108	* x-php.c (phase3_getc): Initialize variable last_was_qmark.
109
1102002-11-13  Bruno Haible  <bruno@clisp.org>
111
112	Assume ANSI C.
113	* dir-list.h (dir_list_append, dir_list_nth, dir_list_save_reset,
114	dir_list_restore): Use ANSI C function declarations.
115	* dir-list.c (dir_list_append, dir_list_nth, dir_list_restore):
116	Likewise.
117	* file-list.h (read_names_from_file): Likewise.
118	* file-list.c (read_names_from_file): Likewise.
119	* format.h (struct formatstring_parser, get_c99_format_directives):
120	Likewise.
121	* format-awk.c (numbered_arg_compare, format_parse, format_free,
122	format_get_number_of_directives, format_check, format_print): Likewise.
123	* format-c.c (numbered_arg_compare, format_parse, format_free,
124	format_get_number_of_directives, format_check,
125	get_c99_format_directives, format_print): Likewise.
126	* format-elisp.c (numbered_arg_compare, format_parse, format_free,
127	format_get_number_of_directives, format_check, format_print): Likewise.
128	* format-java.c (message_format_parse, date_format_parse,
129	number_format_parse, choice_format_parse, numbered_arg_compare,
130	format_parse, format_free, format_get_number_of_directives,
131	format_check, format_print): Likewise.
132	* format-librep.c (numbered_arg_compare, format_parse, format_free,
133	format_get_number_of_directives, format_check, format_print): Likewise.
134	* format-lisp.c (verify_element, verify_list, free_element, free_list,
135	copy_element, copy_list, equal_element, equal_list,
136	ensure_initial_alloc, grow_initial_alloc, ensure_repeated_alloc,
137	grow_repeated_alloc, normalize_outermost_list, normalize_list,
138	is_empty_list, unfold_loop, rotate_loop, initial_splitelement,
139	initial_unshare, shift_list, make_intersected_element,
140	append_repeated_to_initial, backtrack_in_initial,
141	make_intersected_list, make_intersection_with_empty_list,
142	intersection, make_union_element, make_union_list,
143	make_union_with_empty_list, union, is_required,
144	add_required_constraint, add_end_constraint, add_type_constraint,
145	add_listtype_constraint, add_req_type_constraint,
146	add_req_listtype_constraint, make_repeated_list_of_lists,
147	make_repeated_list, check_params, nocheck_params, parse_upto,
148	format_parse, format_free, format_get_number_of_directives,
149	format_check, print_element, print_list, format_print): Likewise.
150	* format-pascal.c (numbered_arg_compare, format_parse, format_free,
151	format_get_number_of_directives, format_check, format_print): Likewise.
152	* format-php.c (numbered_arg_compare, format_parse, format_free,
153	format_get_number_of_directives, format_check, format_print): Likewise.
154	* format-python.c (named_arg_compare, format_parse, format_free,
155	format_get_number_of_directives, format_check, format_print): Likewise.
156	* format-tcl.c (numbered_arg_compare, format_parse, format_free,
157	format_get_number_of_directives, format_check, format_print): Likewise.
158	* format-ycp.c (format_parse, format_free,
159	format_get_number_of_directives, format_check, format_print): Likewise.
160	* gettext.c (main, usage, expand_escape): Likewise.
161	* hostname.c (main, usage): Likewise.
162	* message.h (possible_format_p, message_alloc, message_free,
163	message_comment_append, message_comment_dot_append,
164	message_comment_filepos, message_copy, message_list_alloc,
165	message_list_free, message_list_append, message_list_prepend,
166	message_list_delete_nth, message_predicate_ty,
167	message_list_remove_if_not, message_list_search,
168	message_list_search_fuzzy, message_list_list_alloc,
169	message_list_list_free, message_list_list_append,
170	message_list_list_append_list, message_list_list_search,
171	message_list_list_search_fuzzy, msgdomain_alloc, msgdomain_free,
172	msgdomain_list_alloc, msgdomain_list_free, msgdomain_list_append,
173	msgdomain_list_append_list, msgdomain_list_sublist,
174	msgdomain_list_search, msgdomain_list_search_fuzzy): Likewise.
175	* message.c (possible_format_p, message_alloc, message_free,
176	message_comment_append, message_comment_dot_append,
177	message_comment_filepos, message_copy, message_list_alloc,
178	message_list_free, message_list_append, message_list_prepend,
179	message_list_delete_nth, message_list_remove_if_not,
180	message_list_search, message_list_search_fuzzy_inner,
181	message_list_search_fuzzy, message_list_list_free,
182	message_list_list_append, message_list_list_append_list,
183	message_list_list_search, message_list_list_search_fuzzy,
184	msgdomain_alloc, msgdomain_free, msgdomain_list_alloc,
185	msgdomain_list_free, msgdomain_list_append,
186	msgdomain_list_append_list, msgdomain_list_sublist,
187	msgdomain_list_search, msgdomain_list_search_fuzzy): Likewise.
188	* msgattrib.c (main, usage, is_message_selected, process_message_list,
189	process_msgdomain_list): Likewise.
190	* msgcat.c (main, usage): Likewise.
191	* msgcmp.c (main, usage, is_message_selected, remove_obsoletes,
192	match_domain, compare): Likewise.
193	* msgcomm.c (main, usage): Likewise.
194	* msgconv.c (locale_charset, main, usage): Likewise.
195	* msgen.c (main, usage): Likewise.
196	* msgexec.c (main, usage, nonintr_close, process_string,
197	process_message, process_message_list, process_msgdomain_list):
198	Likewise.
199	* msgfilter.c (main, usage, nonintr_close, nonintr_read, nonintr_write,
200	nonintr_select, process_string, process_message, process_message_list,
201	process_msgdomain_list): Likewise.
202	* msgfmt.c (main, usage, add_mo_suffix, new_domain, is_nonobsolete,
203	sigfpe_handler, check_plural_eval, check_plural, check_pair,
204	check_header_entry, format_constructor, format_debrief,
205	format_directive_domain, format_directive_message,
206	format_comment_special, read_po_file): Likewise.
207	* msggrep.c (main, no_pass, usage, filename_list_match, nonintr_close,
208	is_string_selected, is_message_selected, process_message_list,
209	process_msgdomain_list): Likewise.
210	* msginit.c (locale_charset, _nl_locale_name, _nl_expand_alias, main,
211	usage, catalogname_for_locale, language_of_locale, po_revision_date,
212	content_type, fields, get_field, put_field, subst_string,
213	subst_string_list, fill_header): Likewise.
214	* msgl-ascii.h (is_ascii_string, is_ascii_string_list,
215	is_ascii_message, is_ascii_message_list): Likewise.
216	* msgl-ascii.c (is_ascii_string, is_ascii_string_list,
217	is_ascii_message, is_ascii_message_list): Likewise.
218	* msgl-cat.h (catenate_msgdomain_list): Likewise.
219	* msgl-cat.c (is_message_selected, is_message_needed,
220	is_message_first_needed, catenate_msgdomain_list): Likewise.
221	* msgl-charset.h (compare_po_locale_charsets): Likewise.
222	* msgl-charset.c (locale_charset, compare_po_locale_charsets):
223	Likewise.
224	* msgl-english.h (msgdomain_list_english): Likewise.
225	* msgl-english.c (msgdomain_list_english): Likewise.
226	* msgl-equal.h (string_list_equal, message_equal, message_list_equal,
227	msgdomain_list_equal): Likewise.
228	* msgl-equal.c (msgstr_equal, msgstr_equal_ignoring_potcdate,
229	pos_equal, string_list_equal, message_equal, message_list_equal,
230	msgdomain_equal, msgdomain_list_equal): Likewise.
231	* msgl-iconv.h (convert_string, iconv_message_list,
232	iconv_msgdomain_list): Likewise.
233	* msgl-iconv.c (iconv_string, convert_string, convert_string_list,
234	convert_msgid, convert_msgstr, iconv_message_list,
235	iconv_msgdomain_list): Likewise.
236	* msgmerge.c (main, usage, compendium, msgfmt_check_pair_fails,
237	message_merge, match_domain, merge): Likewise.
238	* msgunfmt.c (main, usage): Likewise.
239	* msguniq.c (main, usage): Likewise.
240	* ngettext.c (main, usage, expand_escape): Likewise.
241	* open-po.h (open_po_file): Likewise.
242	* open-po.c (open_po_file): Likewise.
243	* po-charset.h (po_charset_canonicalize, po_charset_ascii_compatible,
244	po_is_charset_weird, po_is_charset_weird_cjk, po_lex_charset_init,
245	po_lex_charset_set, po_lex_charset_close): Likewise.
246	* po-charset.c (po_charset_canonicalize, po_charset_ascii_compatible,
247	po_is_charset_weird, po_is_charset_weird_cjk, po_lex_charset_set):
248	Likewise.
249	* po-gram.h (po_gram_parse): Likewise.
250	* po-hash-gen.y (yyerror, yylex, po_hash): Likewise.
251	* po-hash.h (po_hash): Likewise.
252	* po-lex.h (lex_start, lex_end, lex_open, lex_close, po_gram_lex,
253	po_lex_pass_comments, po_lex_pass_obsolete_entries, po_gram_error,
254	po_gram_error_at_line): Likewise.
255	* po-lex.c: Include <stdarg.h> instead of libstdarg.h.
256	(ALERT_CHAR): Remove macro.
257	(po_gram_error, po_gram_error_at_line): Use ANSI C function
258	declarations. Use va_start instead of VA_START.
259	(memcpy_small, mb_iseof, mb_ptr, mb_len, mb_iseq, mb_isnul, mb_cmp,
260	mb_equal, mb_isascii, mb_width, mb_putc, mb_setascii, mb_copy,
261	mbfile_init, mbfile_getc, mbfile_ungetc, lex_start, lex_open,
262	lex_getc, lex_ungetc, keyword_p, po_lex_pass_comments,
263	po_lex_pass_obsolete_entries): Use ANSI C function declarations.
264	* po-time.h (po_strftime): Likewise.
265	* po-time.c (difftm, po_strftime): Likewise.
266	* po.h (struct po_method_ty, po_alloc, po_scan, po_scan_file, po_free,
267	po_callback_domain, po_callback_message, po_callback_comment,
268	po_callback_comment_dot, po_callback_comment_filepos,
269	po_parse_comment_special): Likewise.
270	* po.c (po_alloc, po_free, po_parse_brief, po_parse_debrief, po_scan,
271	po_scan_file, po_directive_domain, po_callback_domain,
272	po_directive_message, po_callback_message, po_comment_special,
273	po_comment, po_comment_dot, po_callback_comment, po_comment_filepos,
274	po_callback_comment_filepos, po_parse_comment_special): Likewise.
275	* read-java.h (msgdomain_read_java): Likewise.
276	* read-java.c (execute_and_read_po_output, msgdomain_read_java):
277	Likewise.
278	* read-mo.h (read_mo_file): Likewise.
279	* read-mo.c (read_binary_mo_file, get_uint32, get_string,
280	get_sysdep_string, read_mo_file): Likewise.
281	* read-po.h (read_po, read_po_file): Likewise.
282	* read-po.c (readall_constructor, readall_destructor,
283	readall_directive_domain, readall_directive_message,
284	readall_parse_brief, readall_comment, readall_comment_dot,
285	readall_comment_special, readall_comment_filepos, read_po,
286	read_po_file): Likewise.
287	* read-tcl.h (msgdomain_read_tcl): Likewise.
288	* read-tcl.c (msgdomain_read_tcl): Likewise.
289	* str-list.h (string_list_init, string_list_alloc, string_list_append,
290	string_list_append_unique, string_list_destroy, string_list_free,
291	string_list_concat, string_list_concat_destroy, string_list_join,
292	string_list_member): Likewise.
293	* str-list.c (string_list_init, string_list_append,
294	string_list_append_unique, string_list_destroy, string_list_free,
295	string_list_concat, string_list_concat_destroy, string_list_join,
296	string_list_member): Likewise.
297	* urlget.c (main, usage, cat_file, execute_it, fetch): Likewise.
298	* write-java.h (msgdomain_write_java): Likewise.
299	* write-java.c (check_resource_name, string_hashcode,
300	compute_hashsize, compare_index, compute_table_items,
301	write_java_string, write_java_msgstr, write_lookup_code,
302	is_expression_boolean, write_java_expression, write_java_code,
303	cleanup, msgdomain_write_java): Likewise.
304	* write-mo.h (msgdomain_write_mo): Likewise.
305	* write-mo.c (compare_id, write_table, msgdomain_write_mo): Likewise.
306	* write-po.h (message_page_width_set, message_page_width_ignore,
307	message_print_style_indent, message_print_style_uniforum,
308	message_print_style_escape, msgdomain_list_print,
309	msgdomain_list_sort_by_msgid, msgdomain_list_sort_by_filepos):
310	Likewise.
311	* write-po.c (message_page_width_set, message_print_style_escape,
312	make_format_description_string, significant_format_p,
313	has_significant_format_p, make_c_width_description_string,
314	memcpy_small, wrap, print_blank_line, message_print,
315	message_print_obsolete, msgdomain_list_print, cmp_by_msgid,
316	msgdomain_list_sort_by_msgid, cmp_filepos,
317	msgdomain_list_sort_filepos, cmp_by_filepos,
318	msgdomain_list_sort_by_filepos): Likewise.
319	* write-tcl.h (msgdomain_write_tcl): Likewise.
320	* write-tcl.c (write_tcl_string, write_msg, msgdomain_write_tcl):
321	Likewise.
322	* x-awk.h (extract_awk, x_awk_keyword, x_awk_extract_all): Likewise.
323	* x-awk.c (ALERT_CHAR): Remove macro.
324	(x_awk_keyword, phase1_ungetc, phase2_ungetc, free_token, x_awk_lex,
325	extract_parenthesized, extract_awk): Use ANSI C function declarations.
326	* x-c.h (extract_c, x_c_extract_all, x_c_keyword, x_c_any_keywords,
327	x_c_trigraphs): Likewise.
328	* x-c.c (ALERT_CHAR): Remove macro.
329	(x_c_keyword, phase1_ungetc, phase2_ungetc, phase3_ungetc,
330	comment_add, comment_line_end, phase4_ungetc, phase7_ungetc,
331	free_token, phase5_get, phaseX_get, phase6_get, phase6_unget,
332	is_inttypes_macro, phase8a_get, phase8a_unget, phase8_get, x_c_lex,
333	extract_parenthesized, extract_c): Use ANSI C function declarations.
334	* x-elisp.h (extract_elisp, x_elisp_extract_all, x_elisp_keyword):
335	Likewise.
336	* x-elisp.c (ALERT_CHAR): Remove macro.
337	(x_elisp_keyword, do_ungetc, init_token, free_token, grow_token,
338	is_integer, is_float, read_token, comment_add, comment_line_end,
339	free_object, string_of_object, do_getc_escaped, read_object,
340	extract_elisp): Use ANSI C function declarations.
341	* x-glade.h (extract_glade, x_glade_extract_all, x_glade_keyword):
342	Likewise.
343	* x-glade.c (x_glade_keyword, XML_StartElementHandler,
344	XML_EndElementHandler, XML_CharacterDataHandler, XML_CommentHandler,
345	p_XML_ParserCreate, p_XML_SetElementHandler,
346	p_XML_SetCharacterDataHandler, p_XML_SetCommentHandler, p_XML_Parse,
347	p_XML_GetErrorCode, p_XML_GetCurrentLineNumber,
348	p_XML_GetCurrentColumnNumber, p_XML_ParserFree, p_XML_ErrorString,
349	ensure_stack_size, start_element_handler, end_element_handler,
350	character_data_handler, comment_handler, do_extract_glade,
351	extract_glade): Likewise.
352	* x-java.h (extract_java, x_java_keyword, x_java_extract_all):
353	Likewise.
354	* x-java.l (append_char_buf, get_string, destroy_charbuf,
355	update_line_no, strip_ending_spaces, append_strings, isplus, isdot,
356	translate_esc, object_list_destroy, get_num_objects, get_object,
357	add_object, alloc_keyword, tailcmp, do_compare, is_keyword,
358	x_java_keyword, extract_java): Likewise.
359	* x-librep.h (extract_librep, x_librep_extract_all, x_librep_keyword):
360	Likewise.
361	* x-librep.c (ALERT_CHAR): Remove macro.
362	(x_librep_keyword, do_ungetc, init_token, free_token, grow_token,
363	read_token, comment_add, comment_line_end, free_object,
364	string_of_object, do_getc_escaped, read_object, extract_librep): Use
365	ANSI C function declarations.
366	* x-lisp.h (extract_lisp, x_lisp_extract_all, x_lisp_keyword):
367	Likewise.
368	* x-lisp.c (x_lisp_keyword, do_ungetc, syntax_code_of,
369	read_char_syntax, attribute_of, init_token, free_token, grow_token,
370	read_token, has_a_dot, all_a_number, a_letter_to_digit, has_a_digit,
371	has_adjacent_letters, is_potential_number, is_number, upcase_token,
372	downcase_token, case_convert_token, comment_add, comment_line_end,
373	free_object, string_of_object, read_object, extract_lisp): Likewise.
374	* x-php.h (extract_php, x_php_keyword, x_php_extract_all): Likewise.
375	* x-php.c (x_php_keyword, phase1_ungetc, phase2_ungetc, comment_add,
376	comment_line_end, phase3_ungetc, free_token, x_php_lex,
377	extract_parenthesized, extract_php): Likewise.
378	* x-po.h (extract_po): Likewise.
379	* x-po.c (extract_constructor, extract_directive_domain,
380	extract_directive_message, extract_parse_brief, extract_comment,
381	extract_comment_dot, extract_comment_filepos, extract_comment_special,
382	extract_po): Likewise.
383	* x-python.h (extract_python, x_python_keyword, x_python_extract_all):
384	Likewise.
385	* x-python.c (ALERT_CHAR): Remove macro.
386	(x_python_keyword, phase1_ungetc, comment_add, phase2_ungetc,
387	phase7_getuc, phase5_get, phase5_unget, x_python_lex,
388	extract_parenthesized, extract_python): Use ANSI C function
389	declarations.
390	* x-rst.h (extract_rst): Likewise.
391	* x-rst.c (extract_rst): Likewise.
392	* x-smalltalk.h (extract_smalltalk): Likewise.
393	* x-smalltalk.c (phase1_ungetc, comment_add, phase2_get, phase2_unget,
394	x_smalltalk_lex, extract_smalltalk): Likewise.
395	* x-tcl.h (extract_tcl, x_tcl_extract_all, x_tcl_keyword): Likewise.
396	* x-tcl.c (ALERT_CHAR): Remove macro.
397	(x_tcl_keyword, do_ungetc, phase1_ungetc, phase2_pop, phase2_ungetc,
398	init_token, free_token, grow_token, comment_add, free_word,
399	string_of_word, accumulate_word, read_word, read_command,
400	read_command_list, extract_tcl): Use ANSI C function declarations.
401	* x-ycp.h (extract_ycp): Likewise.
402	* x-ycp.c (phase1_ungetc, phase2_ungetc, x_ycp_lex, extract_ycp):
403	Likewise.
404	* xgettext.h (split_keywordspec, xgettext_comment_add,
405	xgettext_comment, xgettext_comment_reset, remember_a_message,
406	remember_a_message_plural): Likewise.
407	* xgettext.c (extractor_func, main, usage, exclude_directive_domain,
408	exclude_directive_message, read_exclusion_file, split_keywordspec,
409	xgettext_comment_add, xgettext_comment, xgettext_open,
410	extract_from_file, remember_a_message, remember_a_message_plural,
411	finalize_header, language_to_extractor, extension_to_language):
412	Likewise.
413
4142002-11-05  Bruno Haible  <bruno@clisp.org>
415
416	Allow non-ASCII msgids in POT files.
417	* po-charset.h (po_charset_utf8): New declaration.
418	* po-charset.c (utf8, po_charset_utf8): New variables.
419	(po_charset_canonicalize): Use po_charset_utf8.
420	* msgl-iconv.h: Include iconv.h.
421	(convert_string): New declaration.
422	* msgl-iconv.c (convert_string): Export function.
423	(convert_msgid): New function.
424	(iconv_message_list): Call it.
425	* xgettext.h: Include iconv.h.
426	(xgettext_global_source_encoding, xgettext_global_source_iconv,
427	xgettext_current_source_encoding, xgettext_current_source_iconv): New
428	declarations.
429	* xgettext.c (xgettext_global_source_encoding,
430	xgettext_global_source_iconv, xgettext_current_source_encoding,
431	xgettext_current_source_iconv): New variables.
432	(long_options): New option --from-code.
433	(main): Initialize xgettext_global_source_encoding. Handle option
434	--from-code. Initialize and destroy xgettext_global_source_iconv.
435	(usage): Document option --from-code.
436	(extract_from_file): Set xgettext_current_source_encoding and
437	xgettext_current_source_iconv.
438	(CONVERT_STRING): New macro.
439	(remember_a_message, remember_a_message_plural): Call CONVERT_STRING.
440	(finalize_header): Set the charset in the header here.
441	* x-glade.c (do_extract_glade): Set xgettext_current_source_encoding.
442	Don't set the result's header charset; this is now done in xgettext.c.
443	* x-python.c (extract_python): Likewise.
444	* x-tcl.c (extract_tcl): Likewise.
445	* write-po.c (message_print, message_print_obsolete): Don't warn about
446	non-ASCII msgids if the file's encoding is UTF-8.
447	* msginit.c (content_type): Add header argument. Use charset UTF-8
448	if that was already the POT file's encoding.
449	(fields): Update.
450	* msgmerge.c (merge): If the POT file was in UTF-8, convert the
451	definitions to UTF-8.
452	* msgcmp.c (compare): Likewise.
453
4542002-11-01  Bruno Haible  <bruno@clisp.org>
455
456	* msgcmp.c: Include read-po.h.
457	(is_message_selected, remove_obsoletes): New functions.
458	(grammar, compare_constructor, compare_destructor,
459	compare_directive_domain, compare_directive_message): Remove functions.
460	(compare_class_ty): Remove type.
461	(compare_methods): Remove variable.
462	(compare): Use read_po_file instead.
463
4642002-10-14  Bruno Haible  <bruno@clisp.org>
465
466	* project-id: When testing for "GNU $package", ignore libtool, because
467	libtool.m4 calls a package "GNU $package" even if it is not GNU.
468	Reported by Andrew Suffield <asuffield@debian.org>.
469
4702002-10-03  Bruno Haible  <bruno@clisp.org>
471
472	* msgl-equal.h (message_equal, message_list_equal,
473	msgdomain_list_equal): Add 'ignore_potcdate' argument.
474	* msgl-equal-c (msgstr_equal, msgstr_equal_ignoring_potcdate): New
475	functions.
476	(message_equal, message_list_equal, msgdomain_equal,
477	msgdomain_list_equal): Add 'ignore_potcdate' argument.
478	* msgmerge.c (main): Call msgdomain_list_equal with ignore_potcdate =
479	true.
480
4812002-09-09  Bruno Haible  <bruno@clisp.org>
482
483	* x-smalltalk.h: New file.
484	* x-smalltalk.c: New file.
485	* xgettext.c: Include x-smalltalk.h.
486	(usage): Mention Smalltalk language.
487	(language_to_extractor): Add Smalltalk support.
488	(extension_to_language): Likewise.
489	* Makefile.am (noinst_HEADERS): Add x-smalltalk.h.
490	(xgettext_SOURCES): Add x-smalltalk.c.
491
4922002-08-18  Bruno Haible  <bruno@clisp.org>
493
494	* message.h (enum format_type): New enum value 'format_php'.
495	(NFORMATS): Increment.
496	* message.c (format_language, format_language_pretty): Add entry
497	for php.
498	* format.h (formatstring_php): New declaration.
499	* format-php.c: New file.
500	* format.c (formatstring_parsers): Add entry for php.
501	* x-php.h: New file.
502	* x-php.c: New file.
503	* xgettext.c: Include x-php.c.
504	(main): Call x_php_extract_all, x_php_keyword.
505	(language_to_scanner): Add PHP rule.
506	(extension_to_language): Add PHP rule.
507	* Makefile.am (noinst_HEADERS): Add x-php.h.
508	(FORMAT_SOURCE): Add format-php.c.
509	(xgettext_SOURCES): Add x-php.c.
510
5112002-08-17  Bruno Haible  <bruno@clisp.org>
512
513	* urlget.c (fetch): Also try invoking the 'curl' program.
514
5152002-08-06  Bruno Haible  <bruno@clisp.org>
516
517	* gettext-0.11.5 released.
518
5192002-08-02  Bruno Haible  <bruno@clisp.org>
520
521	* read-mo.c (get_sysdep_string): Make the error message easier to
522	translate.
523
5242002-07-25  Bruno Haible  <bruno@clisp.org>
525
526	* gettext-0.11.4 released.
527
5282002-07-21  Bruno Haible  <bruno@clisp.org>
529
530	* format.h (struct interval): New type.
531	(get_c99_format_directives): New declaration.
532	* format-c.c (FAT_SIZE_8_T, FAT_SIZE_16_T, FAT_SIZE_32_T,
533	FAT_SIZE_64_T, FAT_SIZE_LEAST8_T, FAT_SIZE_LEAST16_T,
534	FAT_SIZE_LEAST32_T, FAT_SIZE_LEAST64_T, FAT_SIZE_FAST8_T,
535	FAT_SIZE_FAST16_T, FAT_SIZE_FAST32_T, FAT_SIZE_FAST64_T,
536	FAT_SIZE_INTPTR_T): New enum values.
537	(FAT_SIZE_MASK): Update.
538	(struct spec): New fields c99_directives_count, c99_directives.
539	(format_parse): Recognize C 99 <inttypes.h> macros. Set the new
540	fields c99_directives_count, c99_directives in the result.
541	(get_c99_format_directives): New function.
542	(format_print): Update.
543	* x-c.c (is_inttypes_macro, phase8a_get, phase8a_unget): New functions.
544	(phase8_get): Use phase8a_get instead of phase6_get.
545	* write-mo.c: Include format.h, xmalloc.h.
546	(freea): New macro.
547	(struct pre_string): New type.
548	(struct pre_message): Renamed from struct id_str_pair.
549	(compare_id): Update.
550	(struct pre_sysdep_segment): New type.
551	(struct pre_segment_pair): New type.
552	(struct pre_sysdep_string): New type.
553	(struct pre_sysdep_message): New type.
554	(write_table): Rewritten.
555	* read-mo.c (endian): Remove variable.
556	(read32, seek32, string32): Remove functions.
557	(struct binary_mo_file): New type.
558	(read_binary_mo_file, get_uint32, get_string, get_sysdep_string): New
559	functions.
560	(read_mo_file): Reworked to work in-memory, without fseek/lseek calls.
561	* msgfmt.c (format_directive_message): Copy the is_format array.
562	Needed by write-mo.c.
563
5642002-07-20  Andreas Schwab  <schwab@suse.de>
565
566	* plural-eval.c: Include <signal.h> if !INTDIV0_RAISES_SIGFPE.
567
5682002-07-17  Bruno Haible  <bruno@clisp.org>
569
570	* gettext-0.11.3 released.
571
5722002-07-17  Bruno Haible  <bruno@clisp.org>
573
574	* dir-list.c: Include stdlib.h.
575
5762002-07-16  Bruno Haible  <bruno@clisp.org>
577
578	* read-java.c (msgdomain_read_java): Pass $GETTEXTJEXEDIR to
579	execute_java_class.
580	* urlget.c (fetch): Likewise.
581	* Makefile.am (DEFS): Define USEJEXE and GETTEXTJEXEDIR.
582	(GCJ, GCJFLAGS, USEJEXE): New variables.
583	(all-java*): Renamed to take into account BUILDJAVAEXE.
584	(install-data-java*): Likewise.
585	(installdirs-java*): Likewise.
586	(uninstall-java*): Likewise.
587	(install-exec-*): New rules.
588	(gnu.gettext.DumpResource, gnu.gettext.GetURL): New rules.
589	(CLEANFILES): Add them.
590
5912002-07-16  Bruno Haible  <bruno@clisp.org>
592
593	* project-id: Make it work when the configure file was generated by
594	autoconf-2.52 with AC_INIT and AM_INIT_AUTOMAKE(...).
595
5962002-06-14  Bruno Haible  <bruno@clisp.org>
597
598	* po-lex.c (mbfile_getc): Handle the case where iconv converts
599	some character and returns -1 at once; this can happen immediately
600	after an invalid multibyte sequence.
601	Reported by Andrew V. Samoilov <kai@cmail.ru>.
602
6032002-06-08  Bruno Haible  <bruno@clisp.org>
604
605	* user-email.in: Look at /etc/sysconfig/mail, found on SuSE Linux.
606	Suggested by Karl Eichwalder <ke@suse.de>.
607
6082002-06-07  Bruno Haible  <bruno@clisp.org>
609
610	* user-email.in: Look at /etc/mailname, found on Debian systems.
611	Suggested by Mark W. Eichin <eichin@thok.org>.
612
6132002-06-07  Bruno Haible  <bruno@clisp.org>
614
615	* msgfmt.c (install_sigfpe_handler): Assume the signal is always
616	SIGFPE, regardless of the platform.
617	(uninstall_sigfpe_handler): Likewise.
618
6192002-05-29  Bruno Haible  <bruno@clisp.org>
620
621	* dir-list.h (dir_list_save_reset, dir_list_restore): New declarations.
622	* dir-list.c (dir_list_save_reset, dir_list_restore): New functions.
623	* xgettext.c (main): Temporarily reset the dir_list while opening
624	reading the contents of the output file.
625	Reported by Mark Eichin <eichin@thok.org>.
626
6272002-05-22  Bruno Haible  <bruno@clisp.org>
628
629	* msgl-iconv.h (iconv_message_list): Add from_filename argument.
630	(iconv_msgdomain_list): Likewise.
631	* msgl-iconv.c (iconv_message_list): Add from_filename argument.
632	Don't give an error for POT files containing charset=CHARSET.
633	(iconv_msgdomain_list): Add from_filename argument.
634	* msgl-cat.c (catenate_msgdomain_list): Don't give an error for
635	POT files containing charset=CHARSET. Pass input file name to
636	iconv_message_list.
637	* msgconv.c (main): Pass input file name to iconv_msgdomain_list.
638	* write-java.c (msgdomain_write_java): Update.
639	* write-tcl.c (msgdomain_write_tcl): Update.
640	* x-glade.c (do_extract_glade): Update.
641	* x-python.c (extract_python): Update.
642	* x-tcl.c (extract_tcl): Update.
643
6442002-05-18  Bruno Haible  <bruno@clisp.org>
645
646	* Makefile.am (RM): New variable.
647	(install-exec-am): Depend on install-exec-clean.
648	(install-exec-clean): New rule.
649
6502002-05-14  Bruno Haible  <bruno@clisp.org>
651
652	* write-po.c (wrap): Canonicalize the charset. Handle the case when
653	po_charset_canonicalize returns NULL.
654	Reported by Jan-Marek Glogowski <glogow@stud.fbi.fh-darmstadt.de>.
655
6562002-05-12  Bruno Haible  <bruno@clisp.org>
657
658	* po-charset.c (po_charset_canonicalize): Add ISO-8859-14, KOI8-T,
659	GEORGIAN-PS to the list of allowed encodings.
660
6612002-04-30  Bruno Haible  <bruno@clisp.org>
662
663	* hostname.c (ipv6_ntop): Provide a fallback definition for systems
664	that define s6_addr but no s6_addr16 element of 'struct in6_addr'.
665	Reported by Perry Rapp <PRapp@smartronix.com>.
666
6672002-04-28  Bruno Haible  <bruno@clisp.org>
668
669	* project-id: Recognize package name and version when given by a
670	two-argument AC_INIT invocation (autoconf 2.52 and newer).
671
6722002-04-24  Bruno Haible  <bruno@clisp.org>
673
674	* gettext-0.11.2 released.
675
6762002-04-23  Bruno Haible  <bruno@clisp.org>
677
678	* write-po.h (message_page_width_ignore): New declaration.
679	* write-po.c (wrap_strings): New variable.
680	(message_page_width_ignore): New function.
681	(wrap): Ignore the do_wrap argument if wrap_strings is false.
682	* msgattrib.c (long_options): Add --no-wrap option.
683	(main): Handle option --no-wrap.
684	(usage): Document option --no-wrap.
685	* msgcat.c: Likewise.
686	* msgcomm.c: Likewise.
687	* msgconv.c: Likewise.
688	* msgen.c: Likewise.
689	* msgfilter.c: Likewise.
690	* msggrep.c: Likewise.
691	* msginit.c: Likewise.
692	* msgmerge.c: Likewise.
693	* msgunfmt.c: Likewise.
694	* msguniq.c: Likewise.
695	* xgettext.c: Likewise.
696
6972002-04-19  Bruno Haible  <bruno@clisp.org>
698
699	* msginit.c (catalogname_for_locale): Add wa_BE. Change Javanese from
700	jw to jv.
701
7022002-04-15  Bruno Haible  <bruno@clisp.org>
703
704	* po-lex.h (po_gram_error): Treat Apple's version of GCC like non-GCC.
705	* po-lex.c (po_gram_error): Likewise.
706	Reported by Richard S. Blake <blakers@presence-group.com>.
707
7082002-04-04  Bruno Haible  <bruno@clisp.org>
709
710	* po-lex.h (po_gram_error): Use __VA_ARGS__ + 0 instead of __VA_ARGS__.
711	(po_gram_error_at_line): LIkewise.
712	Fixes syntax error when __VA_ARGS__ is empty.
713	Reported by Trond Eivind Glomsr��d <teg@redhat.com>.
714
7152002-04-04  Bruno Haible  <bruno@clisp.org>
716
717	* msginit.c (find_pot): Add dummy return, to avoid gcc warning.
718
7192002-03-12  Bruno Haible  <bruno@clisp.org>
720
721	* gettext-0.11.1 released.
722
7232002-03-10  Bruno Haible  <bruno@clisp.org>
724
725	* x-python.c (phase7_getuc): Change type of buf to 'unsigned char[]'.
726
7272002-03-07  Bruno Haible  <bruno@clisp.org>
728
729	* Makefile.am (msginit_LDADD): Use @INTL_LIBTOOL_SUFFIX_PREFIX@o
730	instead of $(OBJEXT).
731
7322002-03-05  Bruno Haible  <bruno@clisp.org>
733
734	* hostname.c (s6_addr16): Define if not defined by the system.
735	(ipv6_ntop): Use s6_addr16 instead of in6_u.u6_addr16.
736
7372002-03-05  Bruno Haible  <bruno@clisp.org>
738
739	* xgettext.c (usage): Mention languages Python, awk, Tcl, RST, Glade.
740
7412002-03-03  Bruno Haible  <bruno@clisp.org>
742
743	* message.h (format_type): New enum value 'format_tcl'.
744	(NFORMATS): Increment.
745	* message.c (format_language): Add format_tcl entry.
746	(format_language_pretty): Likewise.
747	* format.h (formatstring_tcl): New declaration.
748	* format-tcl.c: New file.
749	* format.c (formatstring_parsers): Add formatstring_tcl.
750	* x-tcl.h: New file.
751	* x-tcl.c: New file.
752	* xgettext.c: Include x-tcl.h.
753	(main): Call x_tcl_extract_all, x_tcl_keyword.
754	(language_to_scanner): Add Tcl rule.
755	(extension_to_language): Add Tcl rule.
756	* write-tcl.h: New file.
757	* write-tcl.c: New file.
758	* msgfmt.c: Include write-tcl.h.
759	(tcl_mode, tcl_locale_name, tcl_base_directory): New variables.
760	(long_options): Add option "--tcl".
761	(main): Handle --tcl option. Set tcl_mode, tcl_locale_name,
762	tcl_base_directory. More checks for contradicting options. Call
763	msgdomain_write_tcl.
764	(usage): Mention Tcl mode.
765	(format_directive_domain): Ignore domain directive if in Tcl mode.
766	* read-tcl.h: New file.
767	* read-tcl.c: New file.
768	* msgunfmt.c: Include read-tcl.h.
769	(tcl_mode, tcl_locale_name, tcl_base_directory): New variables.
770	(long_options): Add option "--tcl".
771	(main): Handle --tcl and -d options. Set tcl_mode, tcl_locale_name,
772	tcl_base_directory. More checks for contradicting options. Call
773	msgdomain_read_tcl.
774	(usage): Mention Tcl mode.
775	* msgunfmt.tcl: New file.
776	* Makefile.am (noinst_HEADERS): Add read-tcl.h, write-tcl.h, x-tcl.h.
777	(EXTRA_DIST): Add msgunfmt.tcl.
778	(DEFS): Add -DGETTEXTDATADIR.
779	(FORMAT_SOURCE): Add format-tcl.c.
780	(msgfmt_SOURCES): Add write-tcl.c.
781	(msgunfmt_SOURCES): Add read-tcl.c.
782	(xgettext_SOURCES): Add x-tcl.c.
783	(install-tcl, installdirs-tcl, uninstall-tcl): New targets.
784
7852002-03-02  Bruno Haible  <bruno@clisp.org>
786
787	* msgfmt.c (check_pair): Don't count "&&" as an accelerator designator,
788	for consistency with Qt and KDE.
789
7902002-02-24  Bruno Haible  <bruno@clisp.org>
791
792	* po-lex.c: Include libstdarg.h.
793	(VA_START, va_alist, va_dcl): Remove macros.
794	(po_gram_error): Modernize varargs handling. Fix memory leak.
795	(po_gram_error_at_line): Likewise.
796
7972002-02-21  Bruno Haible  <bruno@clisp.org>
798
799	* msggrep.c: Include liballoca.h.
800	(grep_args): Add a third one.
801	(grep_argv): Likewise.
802	(long_options): Add --comment option.
803	(main): Handle option --comment/-C.
804	(usage): Document option -C.
805	(is_message_selected): If option -C is given, concatenate the
806	translator comments and run a third grep pass on the result.
807
8082002-02-09  Bruno Haible  <bruno@clisp.org>
809
810	* message.h (possible_format_p): Change return type to bool.
811	* message.c (possible_format_p): Likewise.
812
8132002-01-14  Bruno Haible  <bruno@clisp.org>
814
815	* x-glade.h: New file.
816	* x-glade.c: New file.
817	* xgettext.c: Include x-glade.h.
818	(main): Call x_glade_extract_all, x_glade_keyword.
819	(language_to_scanner): Add glade rule.
820	(extension_to_language): Add glade rule.
821	* Makefile.am (noinst_HEADERS): Add x-glade.h.
822	(xgettext_SOURCES): Add x-glade.c.
823	(xgettext_LDADD): Add @LTLIBEXPAT@.
824
8252002-01-27  Bruno Haible  <bruno@clisp.org>
826
827	* message.h (format_type): New enum value 'format_awk'.
828	(NFORMATS): Increment.
829	* message.c (format_language): Add format_awk entry.
830	(format_language_pretty): Likewise.
831	* format.h (formatstring_awk): New declaration.
832	* format-awk.c: New file.
833	* format.c (formatstring_parsers): Add formatstring_awk.
834	* x-awk.h: New file.
835	* x-awk.c: New file.
836	* xgettext.c: Include x-awk.h.
837	(main): Call x_awk_extract_all, x_awk_keyword.
838	(language_to_scanner): Add awk rule.
839	(extension_to_language): Add awk rule.
840	* Makefile.am (noinst_HEADERS): Add x-awk.h.
841	(FORMAT_SOURCE): Add format-awk.c.
842	(xgettext_SOURCES): Add x-awk.c.
843
8442002-02-02  Bruno Haible  <bruno@clisp.org>
845
846	* x-python.h: New file.
847	* x-python.c: New file.
848	* xgettext.c: Include x-python.h.
849	(main): Call x_python_extract_all, x_python_keyword.
850	(language_to_scanner): Add Python rule.
851	(extension_to_language): Add Python rule.
852	* Makefile.am (noinst_HEADERS): Add x-python.h.
853	(INCLUDES): Add -I$(top_srcdir)/libuniname.
854	(LIBUNINAME): New variable.
855	(xgettext_SOURCES): Add x-python.c.
856	(xgettext_LDADD): Add $(LIBUNINAME).
857
8582002-02-03  Bruno Haible  <bruno@clisp.org>
859
860	* msgfmt.c (check_header_entry): Terminate the error strings with
861	newlines.
862
8632002-02-03  Bruno Haible  <bruno@clisp.org>
864
865	* plural-table.h: New file.
866	* plural-table.c: New file.
867	* msginit.c: Include plural-table.h.
868	(plural_forms): Use plural_table.
869	* msgfmt.c: Include plural-table.h.
870	(check_plural): Print a recommendation about the right plural formula.
871	* Makefile.am (noinst_HEADERS): Add plural-table.h.
872	(libgettextsrc_la_SOURCES): Add plural-table.c.
873
8742002-02-03  Bruno Haible  <bruno@clisp.org>
875
876	* xgettext.c (finalize_header): New function.
877	(main): Call it.
878
8792002-02-03  Bruno Haible  <bruno@clisp.org>
880
881	* msginit.c (fill_header): Also replace "PACKAGE" in the comment.
882
8832002-02-02  Bruno Haible  <bruno@clisp.org>
884
885	* Makefile.am (INCLUDES): Add -I../lib. Needed for builds with
886	builddir != srcdir on platforms that don't have fnmatch and stdbool.h.
887
8882002-01-31  Bruno Haible  <bruno@clisp.org>
889
890	* gettext-0.11 released.
891
8922002-01-31  Bruno Haible  <bruno@clisp.org>
893
894	* plural-eval.h: Include eval-plural.h instead of plural-eval.c.
895
8962002-01-30  Bruno Haible  <bruno@clisp.org>
897
898	Make the gettext and ngettext programs independent of libgettextlib.
899	* Makefile.am (gettext_LDADD, ngettext_LDADD): New variables.
900
9012002-01-27  Bruno Haible  <bruno@clisp.org>
902
903	* x-ycp.c (enum token_type_ty): New enum value token_type_symbol.
904	(x_ycp_lex): Assign a value to tp->string if and only if the type is
905	token_type_string_literal or token_type_symbol.
906	(extract_ycp): Simplify cleanup.
907
9082002-01-27  Bruno Haible  <bruno@clisp.org>
909
910	* x-java.l (extract_java): Don't create a plural message if the
911	function can take two string argument but actually has only one
912	string argument.
913
9142002-01-27  Bruno Haible  <bruno@clisp.org>
915
916	* x-lisp.c (extract_lisp): Free memory allocated in toplevel_object.
917	* x-elisp.c (string_of_object): Use memcpy.
918	(extract_elisp): Free memory allocated in toplevel_object.
919	* x-librep.c (string_of_object): Use memcpy.
920	(extract_librep): Free memory allocated in toplevel_object.
921
9222002-01-27  Bruno Haible  <bruno@clisp.org>
923
924	* x-c.c (ALERT_CHAR): New macro.
925	(phase7_getc): Accept \a and \v as well.
926
927	* x-c.c (free_token): New inline function.
928	(phase6_get): Use it.
929
9302002-01-27  Bruno Haible  <bruno@clisp.org>
931
932	* format-elisp.c (format_check): Don't use Java syntax for format
933	argument number in error message.
934	* format-librep.c (format_check): Likewise.
935	* format-pascal.c (format_check): Likewise.
936
9372002-01-24  Bruno Haible  <bruno@clisp.org>
938
939	* Makefile.am (LDADD): Use @LTLIBINTL@ instead of @INTLLIBS@.
940	(libgettextsrc_la_LDFLAGS): Likewise. Use @LTLIBICONV@ instead of
941	@LIBICONV@.
942
9432002-01-21  Bruno Haible  <bruno@clisp.org>
944
945	* msggrep.c (main): On SunOS4, don't pass option "-q" to grep.
946
9472002-01-19  Bruno Haible  <bruno@clisp.org>
948
949	* msgfmt.c (check_header_entry): Emit error messages including the
950	file name.
951
9522002-01-19  Bruno Haible  <bruno@clisp.org>
953
954	* open-po.c (open_po_file): Use 'size_t' instead of 'int'.
955	* x-java.l (translate_esc): Likewise.
956	* read-mo.c (read_mo_file): Use 'unsigned int' instead of 'int'.
957
9582002-01-13  Bruno Haible  <bruno@clisp.org>
959
960	* msgl-iconv.c (iconv_message_list): Don't complain by a nonportable
961	encoding name if it has been overridden by an argument canon_from_code.
962
9632002-01-13  Bruno Haible  <bruno@clisp.org>
964
965	* msgl-ascii.c (is_ascii_message): Don't consider a message as being
966	ASCII if its msgid or msgid_plural is not ASCII.
967
9682002-01-12  Bruno Haible  <bruno@clisp.org>
969
970	* gettext.c (main): Update year in --version output.
971	* ngettext.c (main): Likewise.
972	* msgattrib.c (main): Likewise.
973	* msgcat.c (main): Likewise.
974	* msgcmp.c (main): Likewise.
975	* msgcomm.c (main): Likewise.
976	* msgconv.c (main): Likewise.
977	* msgen.c (main): Likewise.
978	* msgexec.c (main): Likewise.
979	* msgfilter.c (main): Likewise.
980	* msgfmt.c (main): Likewise.
981	* msggrep.c (main): Likewise.
982	* msginit.c (main): Likewise.
983	* msgmerge.c (main): Likewise.
984	* msgunfmt.c (main): Likewise.
985	* msguniq.c (main): Likewise.
986	* xgettext.c (main): Likewise.
987
9882002-01-11  Bruno Haible  <bruno@clisp.org>
989
990	* write-po.c: Include po-charset.h.
991
9922002-01-11  Bruno Haible  <bruno@clisp.org>
993
994	* msgfmt.c (install_sigfpe_handler, uninstall_sigfpe_handler): On AIX,
995	treat SIGTRAP like SIGFPE.
996
9972002-01-09  Bruno Haible  <bruno@clisp.org>
998
999	* msgfmt.c (USE_SIGINFO): New macro.
1000	(sigfpe_code, sigfpe_handler, install_sigfpe_handler,
1001	uninstall_sigfpe_handler, check_plural_eval): Use USE_SIGINFO instead
1002	of HAVE_SIGINFO.
1003	(install_sigfpe_handler, uninstall_sigfpe_handler): On Irix, treat
1004	SIGTRAP like SIGFPE.
1005
10062002-01-09  Bruno Haible  <bruno@clisp.org>
1007
1008	* x-java.l (strip_ending_spaces): Fix logic.
1009
10102002-01-09  Tommy Johansson  <tommy.johansson@kanalen.org>
1011
1012	* x-java.l: Avoid endless loop when encountering unterminated string.
1013
10142002-01-08  Bruno Haible  <bruno@clisp.org>
1015
1016	* message.h (format_type): New enum value 'format_elisp'.
1017	(NFORMATS): Increment.
1018	* message.c (format_language): Add format_elisp entry.
1019	(format_language_pretty): Likewise.
1020	* format.h (formatstring_elisp): New declaration.
1021	* format-elisp.c: New file.
1022	* format.c (formatstring_parsers): Add formatstring_elisp.
1023	* x-elisp.h: New file.
1024	* x-elisp.c: New file.
1025	* xgettext.c: Include x-elisp.h.
1026	(main): Call x_elisp_extract_all, x_elisp_keyword.
1027	(usage): Mention the languages Lisp, EmacsLisp, librep.
1028	(language_to_scanner): Add elisp rule.
1029	(extension_to_language): Add elisp rule.
1030	* Makefile.am (noinst_HEADERS): Add x-elisp.h.
1031	(FORMAT_SOURCE): Add format-elisp.c.
1032	(xgettext_SOURCES): Add x-elisp.c.
1033
10342002-01-06  Bruno Haible  <bruno@clisp.org>
1035
1036	* x-librep.c (read_object): Fix handling of #[ and #(.
1037
10382002-01-06  Bruno Haible  <bruno@clisp.org>
1039
1040	* x-lisp.c (read_object): Treat ',.' like ',@'.
1041
10422002-01-05  Bruno Haible  <bruno@clisp.org>
1043
1044	Make "msgmerge --update" work better on CJK files even if iconv() is
1045	not available.
1046	* po-charset.h (po_is_charset_weird): New declaration.
1047	(po_is_charset_weird_cjk): Likewise..
1048	(po_lex_weird_cjk): New variable declaration.
1049	* po-charset.c (po_is_charset_weird): New function, extracted from
1050	po_lex_charset_set.
1051	(po_is_charset_weird_cjk): New function.
1052	(po_lex_weird_cjk): New variable.
1053	(po_lex_charset_init): Initialize po_lex_weird_cjk.
1054	(po_lex_charset_set): Call po_is_charset_weird and
1055	po_is_charset_weird_cjk. Set po_lex_weird_cjk.
1056	(po_lex_charset_close): Reset po_lex_weird_cjk.
1057	* po-lex.c (mbfile_getc): If po_lex_weird_cjk is set, possibly return
1058	a double byte instead of single byte.
1059	* write-po.c (wrap): Call po_is_charset_weird_cjk. If it returns true,
1060	group double bytes where possible.
1061
10622002-01-05  Bruno Haible  <bruno@clisp.org>
1063
1064	* gettext.c: TESTS version is now separate.
1065
10662002-01-05  Bruno Haible  <bruno@clisp.org>
1067
1068	* x-java.l (extract_java): Avoid "uninitialized variable" warnings.
1069	Free a temporary string.
1070
10712002-01-05  Bruno Haible  <bruno@clisp.org>
1072
1073	* Makefile.am (libgettextsrc_la_LDFLAGS): Add -lc. Needed on AIX.
1074
10752002-01-05  Bruno Haible  <bruno@clisp.org>
1076
1077	* x-c.c (buflen): Make static.
1078	* x-librep.c (buflen): Likewise.
1079	* x-lisp.c (buflen): Likewise.
1080
10812001-12-23  Bruno Haible  <bruno@clisp.org>
1082
1083	* msgexec.c (process_string): Use xsetenv instead of setenv.
1084	* msginit.c (canonical_locale_charset): Likewise.
1085	(get_title): Likewise.
1086
10872001-12-22  Bruno Haible  <bruno@clisp.org>
1088
1089	* dir-list.c: Include <stddef.h> instead of <stdlib.h>.
1090	* xgettext.h: Likewise.
1091	* file-list.c: Include exit.h instead of system.h.
1092	* gettext.c: Likewise.
1093	* hostname.c: Likewise.
1094	* msgattrib.c: Likewise.
1095	* msgcat.c: Likewise.
1096	* msgcomm.c: Likewise.
1097	* msgconv.c: Likewise.
1098	* msgexec.c: Likewise.
1099	* msgunfmt.c: Likewise.
1100	* msguniq.c: Likewise.
1101	* ngettext.c: Likewise.
1102	* read-java.c: Likewise.
1103	* x-ycp.c: Likewise.
1104	* msgcmp.c: Include exit.h instead of system.h. Don't include
1105	str-list.h.
1106	* msgfilter.c: Likewise.
1107	* msgen.c: Include exit.h instead of system.h. Don't include xmalloc.h.
1108	* msgfmt.c: Include exit.h, stpcpy.h instead of system.h. Don't
1109	include <errno.h>, getline.h.
1110	* msggrep.c: Include exit.h instead of system.h. Don't include
1111	<fcntl.h>.
1112	* msginit.c: Include liballoca.h, <limits.h>, exit.h, pathname.h
1113	instead of system.h.
1114	* msgl-cat.c: Include liballoca.h, exit.h instead of system.h.
1115	Include <stddef.h> instead of <stdlib.h>.
1116	* msgl-charset.c: Likewise.
1117	* msgl-iconv.c: Include liballoca.h, exit.h instead of system.h.
1118	* write-po.c: Likewise.
1119	* msgmerge.c: Include liballoca.h, exit.h, strcase.h, stpcpy.h,
1120	stpncpy.h instead of system.h.
1121	* format-java.c: Include liballoca.h instead of system.h.
1122	* format-lisp.c: Don't include system.h.
1123	* open-po.c: Include pathname.h, xmalloc.h instead of system.h.
1124	Don't include <sys/types.h>, error.h.
1125	* po-charset.c: Include liballoca.h, string.h, strcase.h instead of
1126	system.h. Don't include error.h. Include progname.h.
1127	(program_name): Remove declaration.
1128	* po-gram-gen.y: Include <string.h>.
1129	* po-hash-gen.y: Include <string.h>.
1130	* po-lex.c: Include exit.h instead of system.h. Don't include
1131	<sys/types.h>.
1132	* read-mo.c: Include binary-io.h, exit.h instead of system.h.
1133	Include <stddef.h> instead of <stdlib.h>.
1134	* urlget.c: Include <unistd.h>, binary-io.h, exit.h instead of
1135	system.h.
1136	(O_BINARY): Remove fallback definition.
1137	* write-java.c: Include liballoca.h, pathname.h instead of system.h.
1138	* write-mo.c: Include liballoca.h, binary-io.h, exit.h instead of
1139	system.h. Don't include msgfmt.h.
1140	* x-c.c: Include exit.h instead of system.h. Don't include <ctype.h>.
1141	* x-librep.c: Include exit.h instead of system.h. Include hash.h.
1142	* x-lisp.c: Likewise.
1143	* x-rst.c: Include exit.h instead of system.h. Include <stddef.h>
1144	instead of <stdlib.h>.
1145	* xgettext.c: Include <string.h>, exit.h, pathname.h, strcase.h,
1146	stpcpy.h instead of system.h. Include str-list.h. Don't include
1147	<sys/param.h>, <pwd.h>, <sys/types.h>, <unistd.h>, getline.h.
1148	(getpwuid): Remove declaration.
1149
11502001-12-21  Bruno Haible  <bruno@clisp.org>
1151
1152	* format-lisp.c: Include minmax.h.
1153
11542001-12-21  Bruno Haible  <bruno@clisp.org>
1155
1156	* file-list.c: Include gettext.h instead of libgettext.h.
1157	* format-c.c: Likewise.
1158	* format-java.c: Likewise.
1159	* format-librep.c: Likewise.
1160	* format-lisp.c: Likewise.
1161	* format-pascal.c: Likewise.
1162	* format-python.c: Likewise.
1163	* format-ycp.c: Likewise.
1164	* gettext.c: Likewise.
1165	* hostname.c: Likewise.
1166	* msgattrib.c: Likewise.
1167	* msgcat.c: Likewise.
1168	* msgcmp.c: Likewise.
1169	* msgcomm.c: Likewise.
1170	* msgconv.c: Likewise.
1171	* msgen.c: Likewise.
1172	* msgexec.c: Likewise.
1173	* msgfilter.c: Likewise.
1174	* msgfmt.c: Likewise.
1175	* msggrep.c: Likewise.
1176	* msginit.c: Likewise.
1177	* msgl-cat.c: Likewise.
1178	* msgl-charset.c: Likewise.
1179	* msgl-iconv.c: Likewise.
1180	* msgmerge.c: Likewise.
1181	* msgunfmt.c: Likewise.
1182	* msguniq.c: Likewise.
1183	* ngettext.c: Likewise.
1184	* open-po.c: Likewise.
1185	* po-charset.c: Likewise.
1186	* po-gram-gen.y: Likewise.
1187	* po-lex.c: Likewise.
1188	* read-java.c: Likewise.
1189	* read-mo.c: Likewise.
1190	* read-po.c: Likewise.
1191	* urlget.c: Likewise.
1192	* write-java.c: Likewise.
1193	* write-mo.c: Likewise.
1194	* write-po.c: Likewise.
1195	* x-c.c: Likewise.
1196	* x-librep.c: Likewise.
1197	* x-lisp.c: Likewise.
1198	* x-po.c: Likewise.
1199	* x-rst.c: Likewise.
1200	* x-ycp.c: Likewise.
1201	* xgettext.c: Likewise.
1202
12032001-12-21  Bruno Haible  <bruno@clisp.org>
1204
1205	* message.h (message_merge): Remove declaration.
1206	* message.c (msgfmt_check_pair_fails, message_merge): Move to
1207	msgmerge.c.
1208	* msgmerge.c (msgfmt_check_pair_fails, message_merge): Moved to here
1209	from message.c.
1210
12112001-12-20  Bruno Haible  <bruno@clisp.org>
1212
1213	* format-java.c: Include system.h.
1214	* format-lisp.c (parse_upto): Fix prototype. char promotes to int.
1215	* po-lex.c (mb_iseq, mb_setascii): Likewise.
1216	* po-hash-gen.y: alloca fix for AIX 3.
1217	* x-lisp.c (syntax_code_of, read_char_syntax, attribute_of, is_number):
1218	Move prototypes, to avoid compilation errors on AIX 3.
1219	(syntax_code_of, attribute_of): Fix prototype. unsigned char promotes
1220	to int.
1221	* x-java.l (TOKEN_TYPE): Remove trailing comma in enum.
1222	(PARSER_STATE): Likewise.
1223	* msgfilter.c: Include <sys/select.h> on AIX.
1224
12252001-12-12  Bruno Haible  <bruno@clisp.org>
1226
1227	* xgettext.c: Include <limits.h>.
1228	(copyright_holder): New variable.
1229	(foreign_user): Remove variable.
1230	(long_options): Add --copyright-holder option.
1231	(main): Implement --copyright-holder option.
1232	(usage): Document --copyright-holder option.
1233	(construct_header): Use the copyright_holder variable. If it is
1234	empty, add a "public domain" comment.
1235
12362001-12-17  Bruno Haible  <bruno@clisp.org>
1237
1238	* msggrep.c: Include <fnmatch.h>.
1239	(filename_list_match): New function.
1240	(is_message_selected): Use it instead of string_list_member.
1241
12422001-12-16  Bruno Haible  <bruno@clisp.org>
1243
1244	* message.h (format_type): New enum value 'format_librep'.
1245	(NFORMATS): Increment.
1246	* message.c (format_language): Add format_librep entry.
1247	(format_language_pretty): Likewise.
1248	* format.h (formatstring_librep): New declaration.
1249	* format-librep.c: New file.
1250	* format.c (formatstring_parsers): Add formatstring_librep.
1251	* x-librep.h: New file.
1252	* x-librep.c: New file.
1253	* xgettext.c: Include x-librep.h.
1254	(main): Call x_librep_extract_all, x_librep_keyword.
1255	(language_to_scanner): Add librep rule.
1256	(extension_to_language): Add librep rule.
1257	* Makefile.am (noinst_HEADERS): Add x-librep.h.
1258	(FORMAT_SOURCE): Add format-librep.c.
1259	(xgettext_SOURCES): Add x-librep.c.
1260
12612001-12-15  Bruno Haible  <bruno@clisp.org>
1262
1263	* msgfmt.c (check_plural): Use ngettext for two messages.
1264	Reported by Primoz Peterlin <primoz.peterlin@biofiz.mf.uni-lj.si>.
1265
12662001-12-15  Bruno Haible  <bruno@clisp.org>
1267
1268	* xgettext.c (remember_a_message_plural): Mark the message as xx-format
1269	if the English plural form has xx format syntax and the singular form
1270	may or may not have xx format syntax.
1271
12722001-12-15  Bruno Haible  <bruno@clisp.org>
1273
1274	* format.h (struct formatstring_parser): Add 'equality' and
1275	'pretty_msgstr' arguments to 'check' field.
1276	* format-c.c (format_check): Add 'equality' and 'pretty_msgstr'
1277	arguments.
1278	* format-java.c (format_check): Likewise.
1279	* format-lisp.c (format_check): Likewise.
1280	* format-pascal.c (format_check): Likewise.
1281	* format-python.c (format_check): Likewise.
1282	* format-ycp.c (format_check): Likewise.
1283	* msgfmt.c (check_pair): Check messages with plural forms as well.
1284	* message.c (msgfmt_check_pair_fails): Add msgid_plural, msgstr_len
1285	arguments. Check messages with plural forms as well.
1286	(message_merge): Check messages with plural forms as well.
1287
12882001-12-11  Bruno Haible  <bruno@clisp.org>
1289
1290	* x-java.l (strip_ending_spaces): Fix isspace call.
1291
1292	* xgettext.h (xgettext_omit_header): Renamed from omit_header.
1293	* xgettext.c (xgettext_omit_header): Likewise.
1294	(long_options, main, remember_a_message): Update.
1295	* x-po.c (extract_directive_message): Update.
1296
12972001-12-09  Bruno Haible  <bruno@clisp.org>
1298
1299	* x-lisp.h: New file.
1300	* x-lisp.c: New file.
1301	* xgettext.c: Include x-lisp.h.
1302	(main): Call x_lisp_extract_all, x_lisp_keyword.
1303	(language_to_scanner): Add Lisp rule. Remove preliminary Lisp rule.
1304	(extension_to_language): Add Lisp rule.
1305	* Makefile.am (noinst_HEADERS): Add x-lisp.h.
1306	(xgettext_SOURCES): Add x-lisp.c.
1307
13082001-12-09  Bruno Haible  <bruno@clisp.org>
1309
1310	* xgettext.h (split_keywordspec): New declaration.
1311	* xgettext.c (split_keywordspec): New function.
1312	* x-c.c (x_c_keyword): Use split_keywordspec.
1313	* x-java.l (extract_keyword, extract_msgid_arg,
1314	extract_msgid_plural_arg): Remove functions.
1315	(x_java_keyword): Use split_keywordspec.
1316
13172001-12-09  Bruno Haible  <bruno@clisp.org>
1318
1319	* x-c.c: Reorder.
1320
13212001-12-08  Bruno Haible  <bruno@clisp.org>
1322
1323	* msgattrib.c (process_message_list): Never make the header entry
1324	obsolete.
1325
13262001-12-08  Bruno Haible  <bruno@clisp.org>
1327
1328	* msgfilter.c (main): Fix getopt_long string: -i takes an argument.
1329
13302001-12-08  Bruno Haible  <bruno@clisp.org>
1331
1332	* xgettext.c (remember_a_message): Don't print the line number if it
1333	is = (size_t)(-1).
1334
13352001-12-08  Bruno Haible  <bruno@clisp.org>
1336
1337	* msgfilter.c: Renamed from msgexec.c.
1338	* msgexec.c: New file.
1339	* Makefile.am (bin_PROGRAMS): Add msgfilter.
1340	(msgfilter_SOURCES): New variable.
1341	(msgfilter_LDADD): New variable.
1342
13432001-12-07  Bruno Haible  <bruno@clisp.org>
1344
1345	* msgexec.c (keep_header): New variable.
1346	(long_options): New option --keep-header.
1347	(usage): Document option --keep-header.
1348	(process_message): Implement --keep-header.
1349
13502001-12-06  Bruno Haible  <bruno@clisp.org>
1351
1352	* format.h (struct formatstring_parser): Add 'noisy' argument to
1353	'check' field.
1354	* format-c.c (format_check): Add 'noisy' argument.
1355	* format-java.c (format_check): Likewise.
1356	* format-lisp.c (format_check): Likewise.
1357	* format-pascal.c (format_check): Likewise.
1358	* format-python.c (format_check): Likewise.
1359	* format-ycp.c (format_check): Likewise.
1360	* msgfmt.c (check_pair): Pass noisy=true.
1361	* message.c: Include format.h.
1362	(msgfmt_check_pair_fails): New function.
1363	(message_merge): Set fuzzy flag when adding a -format specifier that
1364	needs the translator's attention.
1365
13662001-12-10  Bruno Haible  <bruno@clisp.org>
1367
1368	* x-java.l (tailcmp): If s1 ends with s2, it must be either equal to
1369	s2 or have a dot right before s2.
1370
13712001-12-01  Bruno Haible  <bruno@clisp.org>
1372
1373	* msginit.c (project_id): Make it possible to specify the location
1374	of the project-id script through an environment variable.
1375	(project_id_version): Likewise.
1376
13772001-12-03  Tommy Johansson  <tommy.johansson@kanalen.org>
1378
1379	* x-java.l (tailcmp): New function.
1380	(do_compare): Use it instead of strcmp.
1381	(extract_java): After seeing an invocation, don't set the state to
1382	STATE_NONE.
1383
13842001-11-30  Bruno Haible  <bruno@clisp.org>
1385
1386	* message.c (message_merge): Determine whether postprocessing is
1387	needed.
1388	* msgmerge.c (match_domain): Postprocess some problematic cases.
1389	* Makefile.am (libgettextsrc_la_SOURCES): Add plural.c.
1390	(msgfmt_SOURCES): Remove plural.c.
1391
13922001-11-29  Bruno Haible  <bruno@clisp.org>
1393
1394	* plural-eval.c: Include config.h and plural-exp.h.
1395
13962001-11-27  Bruno Haible  <bruno@clisp.org>
1397
1398	* msgfmt.c (struct msgfmt_class_ty): New field
1399	'has_nonfuzzy_header_entry'.
1400	(format_constructor): Initialize it.
1401	(format_debrief): Give a warning if the header entry exists but is
1402	fuzzy.
1403	(format_directive_message): Update has_nonfuzzy_header_entry.
1404
14052001-11-25  Bruno Haible  <bruno@clisp.org>
1406
1407	* x-c.c (comment_start, comment_add, comment_line_end): New inline
1408	functions.
1409	(phase4_getc): Use them.
1410
14112001-11-25  Bruno Haible  <bruno@clisp.org>
1412
1413	* msginit.c (no_translator): New variable.
1414	(long_options): Add option --no-translator.
1415	(main): Handle option --no-translator.
1416	(usage): Document option --no-translator.
1417	(po_revision_date): Add header argument. Return POT's creation date
1418	if no_translator.
1419	(last_translator): Return a dummy string if no_translator.
1420	(language_team): Likewise.
1421	(fields): Allow getter with 0 or 1 argument.
1422	(get_field): New function.
1423	(fill_header): Call getter with 0 or 1 argument.
1424
14252001-11-25  Bruno Haible  <bruno@clisp.org>
1426
1427	* msginit.c (canonical_locale_charset): Return the charset of 'locale'
1428	if available.
1429	(get_title): Return a correct value even if 'locale' is a nonexistent
1430	locale.
1431
14322001-11-24  Bruno Haible  <bruno@clisp.org>
1433
1434	* urlget.c (fetch): Call execute_java_class with quiet=true. If Java
1435	program failed, try wget or lynx.
1436
1437	* read-java.c (msgdomain_read_java): Update for changed
1438	execute_java_class parameter list.
1439
14402001-11-24  Bruno Haible  <bruno@clisp.org>
1441
1442	* msgexec.c (process_message): Really process each plural form once.
1443
14442001-11-17  Bruno Haible  <haible@clisp.cons.org>
1445
1446	* msgfmt.c (is_nonobsolete): New function.
1447	(main): Remove obsolete messages after reading all input files.
1448	(check_header_entry): New function, extracted from
1449	format_directive_message.
1450	(format_directive_message): Perform duplicate checking also on
1451	obsolete, untranslated and fuzzy messages, like msgmerge and the
1452	other tools do. Put also obsolete, untranslated and fuzzy messages
1453	on the result list, but mark them obsolete.
1454	(read_po_file): Call po_lex_pass_obsolete_entries.
1455
14562001-11-17  Bruno Haible  <haible@clisp.cons.org>
1457
1458	* po.c (po_callback_message): Ignore obsolete header entries, for
1459	consistency with msgdomain_list_print(), compare_po_locale_charsets(),
1460	iconv_message_list(), catenate_msgdomain_list().
1461
14622001-11-17  Bruno Haible  <haible@clisp.cons.org>
1463
1464	* msgfmt.c (struct msg_domain): Remove symbol_tab field.
1465	(main, new_domain): Update.
1466	(format_directive_message): Use message_list_search instead of
1467	explicit hash table calls.
1468
14692001-11-17  Bruno Haible  <haible@clisp.cons.org>
1470
1471	* message.h: Include hash.h.
1472	(message_list_ty): Add use_hashtable, htable fields.
1473	(message_list_alloc): Add 'use_hashtable' argument.
1474	(msgdomain_alloc): Likewise.
1475	(msgdomain_list_ty): Add use_hashtable field.
1476	(msgdomain_list_alloc): Add 'use_hashtable' argument.
1477	* message.c: Include hash.h.
1478	(message_list_alloc): Add 'use_hashtable' argument.
1479	(message_list_free): Delete the hash table if present.
1480	(message_list_append): If a hash table is in use, verify no duplicates.
1481	(message_list_prepend): Likewise.
1482	(message_list_remove_if_not): Remove hash table after removal.
1483	(message_list_search): Use hash table if present.
1484	(msgdomain_alloc): Add 'use_hashtable' argument.
1485	(msgdomain_list_alloc): Add 'use_hashtable' argument.
1486	(msgdomain_list_sublist): Use 'use_hashtable'.
1487	* msgcmp.c (compare): Update.
1488	(compare_constructor): Allocate a message list with hash table.
1489	* msgfmt.c (new_domain): Allocate a message list with hash table.
1490	Remove impossible error message.
1491	* msgl-cat.c (catenate_msgdomain_list): Allocate message lists with
1492	hash table.
1493	* msgmerge.c (merge): Update.
1494	* msgunfmt.c (main): Update.
1495	* read-po.c (readall_constructor): Allocate a message list with hash
1496	table if and only if duplicates will lead to an error message.
1497	* xgettext.c (main): Allocate a message list with hash table, to
1498	speed up insertion.
1499	(exclude_directive_message): Allocate a message list with hash table,
1500	to speed up exclusion test.
1501
15022001-11-17  Bruno Haible  <haible@clisp.cons.org>
1503
1504	* message.h (msgdomain_list_sublist): Change last argument to bool.
1505	* message.c (msgdomain_list_sublist): Likewise.
1506	* msgcmp.c (compare): Update msgdomain_list_sublist calls.
1507	(compare_constructor, compare_directive_message): Likewise.
1508	* msgl-cat.c (catenate_msgdomain_list): Likewise.
1509	* msgmerge.c (merge): Likewise.
1510	* read-po.c (readall_constructor, readall_directive_message): Likewise.
1511
15122001-11-17  Bruno Haible  <haible@clisp.cons.org>
1513
1514	* msgfmt.c (format_directive_message): Finish 2001-08-30 patch.
1515
15162001-11-17  Bruno Haible  <haible@clisp.cons.org>
1517
1518	* msgfmt.c (accelerator_char): New variable.
1519	(long_options): --check-accelerators has optional argument.
1520	(main): Store --check-accelerators value in accelerator_char.
1521	(usage): --check-accelerators has optional argument.
1522	(check_pair): Use accelerator_char instead of hardwired '&'.
1523
15242001-11-17  Bruno Haible  <haible@clisp.cons.org>
1525
1526	* msginit.c (main): Print a blank line.
1527	(get_title): Always use the English title first.
1528	(fill_header): Update accordingly.
1529
15302001-11-17  Bruno Haible  <haible@clisp.cons.org>
1531
1532	* message.h (NFORMATS): Fix misapplied patch.
1533
15342001-11-11  Bruno Haible  <haible@clisp.cons.org>
1535
1536	* msgfmt.c (check_accelerators): New variable.
1537	(long_options): Add --check-accelerators.
1538	(main): Handle --check-accelerators.
1539	(usage): Document --check-accelerators option.
1540	(check_pair): Implement check_accelerators handling.
1541
15422001-11-11  Bruno Haible  <haible@clisp.cons.org>
1543
1544	* msgl-cat.c (catenate_msgdomain_list): Fix a typo in 2001-11-01 patch.
1545	Reported by Karl Eichwalder.
1546
15472001-11-11  Bruno Haible  <haible@clisp.cons.org>
1548
1549	* msginit.c (verbose): Remove variable.
1550	(long_options): Remove --verbose.
1551	(main): Remove --verbose option handling.
1552	(usage): Remove --verbose documentation.
1553	(language_team_address): Don't pass a verbose option to the subprocess.
1554
15552001-11-08  Bruno Haible  <haible@clisp.cons.org>
1556
1557	* message.h: New enum value format_smalltalk.
1558	* message.c (format_language): Add value for format_smalltalk.
1559	(format_language_pretty): Likewise.
1560	* format.h (formatstring_smalltalk): New declaration.
1561	* format-ycp.c (formatstring_smalltalk): New variable.
1562	* format.c (formatstring_parsers): Add value for format_smalltalk.
1563
15642001-11-05  Bruno Haible  <haible@clisp.cons.org>
1565
1566	* format-lisp.c (parse_upto): Remove 'base' argument. It is always 0.
1567	(format_parse): Update.
1568
1569	* msgl-equal.c: Include string.h.
1570	* str-list.c: Likewise.
1571
15722001-11-03  Bruno Haible  <haible@clisp.cons.org>
1573
1574	* xgettext.c (line_comment): Remove variable, so default value is
1575	always 1.
1576
15772001-11-03  Bruno Haible  <haible@clisp.cons.org>
1578
1579	* x-c.c (extract_parenthesized): New function, extracted from
1580	extract_c.
1581	(extract_c): Call extract_parenthesized.
1582
15832001-11-03  Bruno Haible  <haible@clisp.cons.org>
1584
1585	Add YCP plural form support.
1586	* x-ycp.c (enum token_type_ty): New value token_type_comma.
1587	(x_ycp_lex): Recognize comma.
1588	(extract_ycp): Also recognize the _("singular","plural" pattern.
1589
15902001-11-01  Bruno Haible  <haible@clisp.cons.org>
1591
1592	* msgfmt.c (check_plural_eval): Fix #if mistake.
1593
15942001-11-01  Bruno Haible  <haible@clisp.cons.org>
1595
1596	* msgl-iconv.h (iconv_message_list): Add argument 'canon_from_code'.
1597	* msgl-iconv.c (iconv_message_list): Add argument 'canon_from_code'.
1598	(iconv_msgdomain_list): Update.
1599	* write-java.c (msgdomain_write_java): Update.
1600	* msgl-cat.c (catenate_msgdomain_list): Pass the canon_charsets[n][k]
1601	to iconv_message_list; the header entry that contained the charset
1602	specification may already have been removed from the message list.
1603
16042001-11-01  Bruno Haible  <haible@clisp.cons.org>
1605
1606	* msgl-equal.h (string_list_equal): New declaration.
1607	* msgl-equal.c (string_list_equal): Export function.
1608	* message.h (struct altstr): New fields 'comment', 'comment_dot'.
1609	* msgl-cat.c: Include msgl-equal.h.
1610	(catenate_msgdomain_list): If all alternative comments are equal,
1611	use one copy of them, instead of concatenating them. Likewise for dot
1612	comments.
1613	* Makefile.am (libgettextsrc_la_SOURCES): Add msgl-equal.c.
1614	(msgmerge_SOURCES): Remove msgl-equal.c.
1615
16162001-10-31  Bruno Haible  <haible@clisp.cons.org>
1617
1618	* Makefile.am (noinst_HEADERS): Add read-java.h, write-java.h,
1619	format.h, msgunfmt.h.
1620	(EXTRA_DIST): Add project-id, gnu/gettext/*.java.
1621	* message.h (NFORMATS): Define via #define, not via an enum value.
1622	* format.h (struct formatstring_parser): Use PARAMS.
1623	* format-c.c (FAT_SIZE_MASK): Remove extraneous backslashes.
1624	* po-charset.c (po_lex_charset_set): Fix syntax error.
1625	* write-java.c (write_java_string): Drop hexdigit[] size.
1626	* x-java.l (add_object): Remove C++ style comment.
1627
16282001-10-28  Bruno Haible  <haible@clisp.cons.org>
1629
1630	* hostname.c: Include "progname.h".
1631	(program_name): Remove variable.
1632	(main): Call set_program_name instead of setting program_name.
1633
16342001-10-28  Bruno Haible  <haible@clisp.cons.org>
1635
1636	Create a libgettextsrc shared library.
1637	* Makefile.am (lib_LTLIBRARIES): New variable.
1638	(libgettextsrc_la_SOURCES): New variable.
1639	(msgcmp_SOURCES, msgfmt_SOURCES, msgmerge_SOURCES, msgunfmt_SOURCES,
1640	xgettext_SOURCES, msgattrib_SOURCES, msgcat_SOURCES, msgcomm_SOURCES,
1641	msgconv_SOURCES, msgen_SOURCES, msgexec_SOURCES, msggrep_SOURCES,
1642	msginit_SOURCES, msguniq_SOURCES): Remove source files listed in
1643	libgettextsrc_la_SOURCES.
1644	(libgettextsrc_la_LDFLAGS): New variable.
1645	(msgcmp_LDADD, msgfmt_LDADD, msgmerge_LDADD, msgunfmt_LDADD,
1646	xgettext_LDADD, msgattrib_LDADD, msgcat_LDADD, msgcomm_LDADD,
1647	msgconv_LDADD, msgen_LDADD, msgexec_LDADD, msggrep_LDADD,
1648	msginit_LDADD, msguniq_LDADD): Add libgettextsrc.la. Remove all
1649	dependencies already listed in libgettextsrc_la_LDFLAGS.
1650	(po-lex.lo): Depend on po-gram-gen2.h.
1651
16522001-10-21  Bruno Haible  <haible@clisp.cons.org>
1653
1654	* Makefile.am (LDADD): Replace libnlsut.a with libgettextlib.la.
1655	(*_LDADD): Likewise.
1656
16572001-10-26  Bruno Haible  <haible@clisp.cons.org>
1658
1659	* x-c.h (EXTENSIONS_C): Add ".hxx".
1660
16612001-10-21  Bruno Haible  <haible@clisp.cons.org>
1662
1663	* msgmerge.c (match_domain): Change type of 'processed' argument to
1664	'unsigned int *'.
1665	(merge): Change type of 'processed' to 'unsigned int'.
1666
16672001-10-21  Bruno Haible  <haible@clisp.cons.org>
1668
1669	Avoid warnings on platforms where size_t is larger than int.
1670	* msgfmt.c (check_pair): Use an 'unsigned int' variable instead of
1671	'size_t', to avoid warnings.
1672	* po-lex.h (po_gram_error): Cast line number to 'unsigned long'.
1673	* po-lex.c (po_gram_error): Likewise.
1674	* x-c.c (extract_c): Likewise.
1675
16762001-10-21  Bruno Haible  <haible@clisp.cons.org>
1677
1678	* msgexec.c [BeOS]: Fix #ifdef conditional.
1679
16802001-10-21  Bruno Haible  <haible@clisp.cons.org>
1681
1682	* read-java.c (execute_and_read_po_output): Return false, not 0.
1683
16842001-10-11  Bruno Haible  <haible@clisp.cons.org>
1685
1686	* msgattrib.c (usage): Fix: --sort-output doesn't deal with duplicates.
1687	* msgcat.c (usage): Likewise.
1688	* msgcomm.c (usage): Likewise.
1689	* msgconv.c (usage): Likewise.
1690	* msgen.c (usage): Likewise.
1691	* msgexec.c (usage): Likewise.
1692	* msggrep.c (usage): Likewise.
1693	* msgmerge.c (usage): Likewise.
1694	* msgunfmt.c (usage): Likewise.
1695	* msguniq.c (usage): Likewise.
1696	* xgettext.c (usage): Likewise.
1697
16982001-10-09  Bruno Haible  <haible@clisp.cons.org>
1699
1700	* write-po.c (memcpy_small): New function.
1701	(wrap): Use it instead of memcpy. Optimize handling of escape
1702	characters.
1703
17042001-10-09  Bruno Haible  <haible@clisp.cons.org>
1705
1706	* write-po.c (putc): Define as putc_unlocked if available.
1707
17082001-10-09  Bruno Haible  <haible@clisp.cons.org>
1709
1710	* po-lex.c (getc): Define as getc_unlocked if available.
1711
17122001-10-21  Bruno Haible  <haible@clisp.cons.org>
1713
1714	* msginit.c: New file.
1715	* project-id: New file.
1716	* Makefile.am (bin_PROGRAMS): Add msginit.
1717	(projectsdir): New variable.
1718	(DEFS): Add -DLIBDIR and -DPROJECTSDIR.
1719	(msginit_SOURCES): New variable.
1720	(msginit_LDADD): New variable.
1721	(install-exec-local): Also install project-id.
1722	(uninstall-local): Also uninstall project-id.
1723
17242001-10-21  Bruno Haible  <haible@clisp.cons.org>
1725
1726	* gnu/gettext/GetURL.java: New file.
1727	* urlget.c: New file.
1728	* Makefile.am (noinst_PROGRAMS): Add urlget.
1729	(urlget_SOURCES): New variable.
1730	(install-exec-local): Also install urlget.
1731	(uninstall-local): Also uninstall urlget.
1732	(gnu/gettext/GetURL.class): New rule.
1733	(gettext.jar): Also include gnu/gettext/GetURL*.class.
1734
17352001-10-08  Bruno Haible  <haible@clisp.cons.org>
1736
1737	* msgl-english.h: New file.
1738	* msgl-english.c: New file, extracted from msgen.c.
1739	* msgen.c: Include msgl-english.h.
1740	(english): Move to msgl-english.c.
1741	(main): Update accordingly.
1742	* Makefile.am (noinst_HEADERS): Add msgl-english.h.
1743	(msgen_SOURCES): Add msgl-english.c.
1744
17452001-10-08  Bruno Haible  <haible@clisp.cons.org>
1746
1747	* po-time.h: New file.
1748	* po-time.c: New file, extracted from xgettext.c.
1749	* xgettext.c: Include po-time.h.
1750	(difftm): Move to po-time.c.
1751	(construct_header): Move some code to po-time.c. Call po_strftime.
1752	* Makefile.am (noinst_HEADERS): Add po-time.h.
1753	(xgettext_SOURCES): Add po-time.c.
1754
17552001-09-29  Bruno Haible  <haible@clisp.cons.org>
1756
1757	* user-email.in: New file.
1758	* Makefile.am (install-exec-local): Install user-email.
1759	(uninstall-local): Uninstall user-email.
1760	(DISTCLEANFILES): Add user-email.
1761
17622001-09-29  Bruno Haible  <haible@clisp.cons.org>
1763
1764	* hostname.c: New file.
1765	* Makefile.am (noinst_PROGRAMS, hostname_SOURCES): New variables.
1766	(install-exec-local, installdirs-local, uninstall-local): New rules.
1767
17682001-10-10  Bruno Haible  <haible@clisp.cons.org>
1769
1770	* msgexec.c (process_string): Update for changed create_pipe_bidi(),
1771	wait_subprocess().
1772	* msggrep.c (is_string_selected): Update for changed create_pipe_out(),
1773	wait_subprocess().
1774	* read-java.c (execute_and_read_po_output): Update for changed
1775	create_pipe_in(), wait_subprocess().
1776
17772001-10-08  Bruno Haible  <haible@clisp.cons.org>
1778
1779	* xgettext.c (remember_a_message): When the comment tag is seen,
1780	remember all remaining comment lines, not just one.
1781
17822001-09-25  Bruno Haible  <haible@clisp.cons.org>
1783
1784	Upgrade to automake-1.5.
1785	* Makefile.am (AUTOMAKE_OPTIONS): Add 'no-dependencies'.
1786	(COMMON_SOURCE): Renamed from COMMON_SOURCES.
1787	(FORMAT_SOURCE): Renamed from FORMAT_SOURCES.
1788	* ylwrap: Remove file.
1789
17902001-09-22  Bruno Haible  <haible@clisp.cons.org>
1791
1792	* xgettext.c (extractor_func): New typedef.
1793	(scanner_fp): Remove typedef.
1794	(main): Use extractor_func and call it via extract_from_file.
1795	(extract_from_file): New function.
1796	(scan_c_file, scan_po_file, scan_java_file, scan_ycp_file,
1797	scan_rst_file): Remove functions.
1798	(language_to_extractor): Renamed from language_to_scanner.
1799	* x-c.h (SCANNERS_C): Use extract_c instead of scan_c_file.
1800	* x-java.h (SCANNERS_JAVA): Use extract_java instead of scan_java_file.
1801	* x-po.h (SCANNERS_PO): Use extract_po instead of scan_po_file.
1802	* x-rst.h (SCANNERS_RST): Use extract_rst instead of scan_rst_file.
1803	* x-ycp.h (SCANNERS_YCP): Use extract_ycp instead of scan_ycp_file.
1804
18052001-09-23  Bruno Haible  <haible@clisp.cons.org>
1806
1807	* plural-eval.c: New file.
1808	* msgfmt.c: Include plural-exp.h.
1809	(sigfpe_exit, sigfpe_code): New variables.
1810	(sigfpe_handler, install_sigfpe_handler, uninstall_sigfpe_handler,
1811	check_plural_eval, check_plural): New functions.
1812	(main): Call it if --check-header is enabled.
1813	* Makefile.am (msgfmt_SOURCES): Add plural-eval.c.
1814
18152001-10-04  Tommy Johansson  <tommy.johansson@kanalen.org>
1816
1817	* x-java.l (object_list): New type.
1818	(INITIAL_OBJECT_LIST_SIZE, OBJECT_LIST_GROWTH): New macros.
1819	(java_keyword): New type.
1820	(strip_ending_spaces): New function.
1821	(object_list_alloc, object_list_destroy, get_num_objects, get_object,
1822	add_object, alloc_keyword): New functions.
1823	(java_keywords): Change type.
1824	(extract_keyword, extract_msgid_arg, extract_msgid_plural_arg): New
1825	functions.
1826	(is_keyword): Change return type.
1827	(x_java_keyword): Update.
1828	(extract_java): Count arguments, and support plural keywords like
1829	ngettext.
1830
18312001-09-19  Bruno Haible  <haible@clisp.cons.org>
1832
1833	* xgettext.h (omit_header): New declaration.
1834	* xgettext.c (omit_header): Make global.
1835	* x-po.c (extract_directive_message): Don't throw the header entry
1836	away if omit_header is true.
1837
18382001-09-19  Bruno Haible  <haible@clisp.cons.org>
1839
1840	* write-po.c (msgdomain_list_print): Treat charset=CHARSET as if it
1841	were absent, i.e. like ASCII, not like an unknown 8-bit encoding.
1842
18432001-09-18  Bruno Haible  <haible@clisp.cons.org>
1844
1845	* msgl-equal.h: New file.
1846	* msgl-equal.c: New file.
1847	* msgmerge.c: Include msgl-equal.h, backupfile.h, copy-file.h.
1848	(update_mode, version_control_string, backup_suffix_string): New
1849	variables.
1850	(long_options): Add --backup, --suffix, --update.
1851	(main): Accept options --backup, --suffix, -U/--update. If in update
1852	mode, compare old and new message lists, backup the def.po file, and
1853	overwrite the def.po file.
1854	(usage): Document --backup, --suffix, -U/--update.
1855	(DOT_FREQUENCY): Renamed from DOT_FREQUENCE.
1856	(merge): Also return def.po message list. Don't share messages between
1857	def and result; copy instead.
1858	* Makefile.am (noinst_HEADERS): Add msgl-equal.h.
1859	(msgmerge_SOURCES): Add msgl-equal.c.
1860
18612001-09-19  Bruno Haible  <haible@clisp.cons.org>
1862
1863	* po-hash-gen.y (number): Change type from 'int' to 'size_t'.
1864	(filepos): Accept strings without line number.
1865	(yylex): Change n from 'int' to 'size_t'.
1866	* po.h (po_method_ty): In field comment_filepos, change line's type
1867	from 'int' to 'size_t'.
1868	(po_callback_comment_filepos): Change line's type from 'int' to
1869	'size_t'.
1870	* read-po.c (readall_comment_filepos): Likewise.
1871	* x-po.c (extract_comment_filepos): Likewise.
1872	* po.c (po_comment_filepos): Likewise.
1873	(po_callback_comment_filepos): Likewise.
1874	(po_callback_comment): Reduce the possibility that po_hash succeeds
1875	if the comment is not a Sun file position comment.
1876
18772001-09-16  Bruno Haible  <haible@clisp.cons.org>
1878
1879	* x-rst.h: New file.
1880	* x-rst.c: New file.
1881	* xgettext.c: Include x-rst.h.
1882	(scan_rst_file): New function.
1883	(language_to_scanner): Add RST rule.
1884	(extension_to_language): Add RST rule.
1885	* write-po.c (message_print): Don't print the line number if it is
1886	= (size_t)(-1).
1887	* Makefile.am (noinst_HEADERS): Add x-rst.h.
1888	(xgettext_SOURCES): Add x-rst.c.
1889
18902001-09-20  Bruno Haible  <haible@clisp.cons.org>
1891
1892	* format-pascal.c: New file.
1893	* format.h (formatstring_pascal): New declaration.
1894	* message.h (enum format_type): Add format_pascal.
1895	* message.c (format_language): Add format_pascal entry.
1896	(format_language_pretty): Likewise.
1897	* format.c (formatstring_parsers): Add formatstring_pascal.
1898	* Makefile.am (FORMAT_SOURCES): Add format-pascal.c.
1899
19002001-09-16  Bruno Haible  <haible@clisp.cons.org>
1901
1902	* x-ycp.h: New file.
1903	* x-ycp.c: New file.
1904	* xgettext.c: Include x-ycp.h.
1905	(usage): Mention YCP.
1906	(scan_ycp_file): New function.
1907	(language_to_scanner): Add YCP rule. Remove preliminary YCP rule.
1908	(extension_to_language): Add YCP rule.
1909	* Makefile.am (noinst_HEADERS): Add x-ycp.h.
1910	(xgettext_SOURCES): Add x-ycp.c.
1911
19122001-09-17  Bruno Haible  <haible@clisp.cons.org>
1913
1914	* gettext.c: Include basename.h.
1915	* ngettext.c: Likewise.
1916	* msgattrib.c: Likewise.
1917	* msgcat.c: Likewise.
1918	* msgcmp.c: Likewise.
1919	* msgcomm.c: Likewise.
1920	* msgconv.c: Likewise.
1921	* msgen.c: Likewise.
1922	* msgexec.c: Likewise.
1923	* msgfmt.c: Likewise.
1924	* msggrep.c: Likewise.
1925	* msgl-cat.c: Likewise.
1926	* msgl-charset.c: Likewise.
1927	* msgl-iconv.c: Likewise.
1928	* msgmerge.c: Likewise.
1929	* msgunfmt.c: Likewise.
1930	* msguniq.c: Likewise.
1931	* xgettext.c: Likewise.
1932	* po-charset.c: Include <stdlib.h> and basename.h.
1933
19342001-09-16  Bruno Haible  <haible@clisp.cons.org>
1935
1936	* x-c.c (phase4_getc): Rename local variable 'state' to
1937	'last_was_star'.
1938
19392001-09-11  Bruno Haible  <haible@clisp.cons.org>
1940
1941	* Makefile.am (COMMON_SOURCES, FORMAT_SOURCES): New variables.
1942	(msgcmp_SOURCES, msgfmt_SOURCES, msgmerge_SOURCES, msgunfmt_SOURCES,
1943	xgettext_SOURCES, msgattrib_SOURCES, msgcat_SOURCES, msgcomm_SOURCES,
1944	msgconv_SOURCES, msgen_SOURCES, msgexec_SOURCES, msggrep_SOURCES,
1945	msguniq_SOURCES): Simplify.
1946
19472001-09-09  Bruno Haible  <haible@clisp.cons.org>
1948
1949	* file-list.c: Include system.h.
1950	* format-c.c: Include xmalloc.h instead of system.h.
1951	* format-ycp.c: Likewise.
1952	* read-po.c: Likewise.
1953	* x-po.c: Likewise.
1954	* format-java.c: Include xmalloc.h.
1955	* format-lisp.c: Likewise.
1956	* format-python.c: Likewise.
1957	* gettext.c: Likewise.
1958	* msgen.c: Likewise.
1959	* msgexec.c: Likewise.
1960	* msggrep.c: Likewise.
1961	* ngettext.c: Likewise.
1962	* po-lex.c: Likewise.
1963	* read-mo.c: Likewise.
1964	* x-c.c: Likewise.
1965	* message.c: Include xmalloc.h and strstr.h.
1966	* msgfmt.c: Likewise.
1967	* write-po.c: Likewise.
1968	* msgl-cat.c: Include string.h, xmalloc.h and strstr.h.
1969	* msgl-iconv.c: Likewise.
1970	* msgl-charset.c: Include strstr.h.
1971	* po-charset.c: Likewise.
1972	* po-gram-gen.y: Include stdlib.h, xmalloc.h instead of system.h.
1973	* po-hash-gen.y: Likewise.
1974	* str-list.c: Likewise.
1975	* po.c: Include string.h, xmalloc.h instead of system.h.
1976	* write-java.c: Include string.h, xmalloc.h.
1977	* x-java.l: Include stdlib.h, xmalloc.h, strstr.h instead of system.h.
1978	* xgettext.c: Include xmalloc.h, strstr.h, xerror.h.
1979	(main, construct_header): Use xasprintf instead of asprintf.
1980
19812001-09-24  Bruno Haible  <haible@clisp.cons.org>
1982
1983	* po-lex.c (mb_iseq): Compare the byte sequence, not the Unicode
1984	equivalent. This is necessary for non-ASCII-compatible encodings like
1985	SHIFT_JIS.
1986
19872001-09-08  Bruno Haible  <haible@clisp.cons.org>
1988
1989	* msgunfmt.h: New file.
1990	* msgunfmt.c (verbose): New variable.
1991	(java_mode, java_resource_name, java_locale_name): New variables.
1992	(long_options): Add --java, --locale, --resource, --verbose.
1993	(main): Recognize new options -j, -l, -r, -v. Handle java mode
1994	differently.
1995	(usage): Document --java, --resource, --locale, --verbose.
1996	* read-java.h: New file.
1997	* read-java.c: New file.
1998	* read-po.h (read_po): New declaration.
1999	* read-po.c (read_po): New function.
2000	* gnu/gettext/DumpResource.java: New file.
2001	* Makefile.am (jardir): New variable.
2002	(DEFS): Define GETTEXTJAR, for read-java.c.
2003	(JAR): New variable.
2004	(JAVACOMP): New variable.
2005	(msgunfmt_SOURCES): Add open-po.c, po-gram-gen.y, po-hash-gen.y,
2006	po-charset.c, po-lex.c, po.c, read-po.c, dir-list.c, read-java.c.
2007	(all-local, all-java-no, all-java-yes, gnu/gettext/DumpResource.class,
2008	gettext.jar, install-data-local, install-java-no, install-java-yes,
2009	installdirs-local, installdirs-java-no, installdirs-java-yes,
2010	uninstall-local, uninstall-java-no, uninstall-java-yes): New rules.
2011	(CLEANFILES): New variable.
2012
20132001-09-08  Bruno Haible  <haible@clisp.cons.org>
2014
2015	* msgexec.c (nonintr_select): Add function prototype.
2016
2017	* xgettext.c (scan_java_file): Add function prototype.
2018
20192001-09-23  Bruno Haible  <haible@clisp.cons.org>
2020
2021	* xgettext.c (remember_a_message): Warn about empty msgid if it
2022	conflicts with construct_header().
2023
20242001-09-08  Bruno Haible  <haible@clisp.cons.org>
2025
2026	* msgcat.c (main): Move the option checking after the handling of
2027	--version and --help, but before opening of any file.
2028	* msgcomm.c (main): Move the option checking after the handling of
2029	--version and --help.
2030	* msguniq.c (main): Likewise.
2031	* xgettext.c (main): Likewise.
2032	* msgconv.c (main): Additional option checking for --sort-by-file.
2033	* msgen.c (main): Likewise.
2034	* msgexec.c (main): Likewise.
2035	* msggrep.c (main): Likewise.
2036	* msgmerge.c (main): Likewise.
2037
20382001-09-08  Bruno Haible  <haible@clisp.cons.org>
2039
2040	* dir-list.c: Include specification header before all other headers.
2041	* file-list.c: Likewise.
2042	* message.c: Likewise.
2043	* msgl-cat.c: Likewise.
2044	* msgl-charset.c: Likewise.
2045	* msgl-iconv.c: Likewise.
2046	* open-po.c: Likewise.
2047	* po.c: Likewise.
2048	* po-gram-gen.y: Likewise.
2049	* po-hash-gen.y: Likewise.
2050	* po-lex.c: Likewise.
2051	* read-po.c: Likewise.
2052	* str-list.c: Likewise.
2053	* write-mo.c: Likewise.
2054	* write-po.c: Likewise.
2055	* msgfmt.h: Don't include message.h.
2056	* open-po.h: Include <stdio.h>, for FILE.
2057	* write-mo.h: Include message.h and <stddef.h>.
2058
20592001-09-21  Tommy Johansson  <tommy.johansson@kanalen.org>
2060
2061	* x-java.l (create_char_buf): Fix problem with empty messages.
2062	(//): Remove leading "//" from result.
2063	(x_java_keyword): Handle NULL argument.
2064
20652001-09-19  Tommy Johansson  <tommy.johansson@kanalen.org>
2066
2067	* x-java.l (is_keyword): Swap arguments of do_compare.
2068
20692001-09-02  Bruno Haible  <haible@clisp.cons.org>
2070
2071	* write-java.h: New file.
2072	* write-java.c: New file.
2073	* plural.c: New file.
2074	* msgfmt.c: Include write-java.h.
2075	(java_mode, assume_java2, java_resource_name, java_locale_name,
2076	java_class_directory): New variables.
2077	(long_options): Add --java, --java2, --locale, --resource.
2078	(main): Add command line option -d, -j, -l, -r. Handle them and
2079	--java2. Forbid some options depending on whether --java was given
2080	or not. In java_mode, call msgdomain_write_java.
2081	(usage): Update.
2082	(format_directive_domain): In java_mode, ignore domain directives.
2083	* Makefile.am (msgfmt_SOURCES): Add write-java.c, msgl-ascii.c,
2084	msgl-iconv.c, plural.c.
2085
20862001-09-16  Bruno Haible  <haible@clisp.cons.org>
2087
2088	* Makefile.am (noinst_HEADERS): Add x-java.h.
2089
20902001-09-14  Tommy Johansson  <tommy.johansson@kanalen.org>
2091
2092	* x-java.h (x_java_extract_all): New declaration.
2093	* x-java.l (extract_all_strings): New variable.
2094	(x_java_extract_all): New function.
2095	(extract_java): Test extract_all_strings.
2096	* xgettext.c (main): Call x_java_extract_all.
2097
20982001-09-03  Bruno Haible  <haible@clisp.cons.org>
2099
2100	* x-c.h (EXTENSIONS_C, SCANNERS_C): Remove extraneous commas.
2101	* x-po.h (EXTENSIONS_PO, SCANNERS_PO): Likewise.
2102
21032001-09-11  Bruno Haible  <haible@clisp.cons.org>
2104
2105	* xgettext.c: Set msgstr_prefix to "", not NULL.
2106	Reported by Martin Quinson <Martin.Quinson@ens-lyon.fr>.
2107
21082001-09-10  Bruno Haible  <haible@clisp.cons.org>
2109
2110	* msgattrib.c (main): Call set_program_name instead of assigning
2111	program_name directly.
2112	* msgcat.c (main): Likewise.
2113	* msgconv.c (main): Likewise.
2114	* msgen.c (main): Likewise.
2115	* msgexec.c (main): Likewise.
2116	* msggrep.c (main): Likewise.
2117	* msguniq.c (main): Likewise.
2118
21192001-09-08  Bruno Haible  <haible@clisp.cons.org>
2120
2121	* msgattrib.c: New file.
2122	* Makefile.am (bin_PROGRAMS): Add msgattrib.
2123	(msgattrib_SOURCES, msgattrib_LDADD): New variables.
2124
21252001-09-02  Bruno Haible  <haible@clisp.cons.org>
2126
2127	* format-lisp.c (gcd): Remove function. Include "gcd.h" instead.
2128
21292001-09-03  Bruno Haible  <haible@clisp.cons.org>
2130
2131	* xgettext.c (usage): Mention ObjectiveC and Java.
2132	* xgettext.h (substring_match): New declaration.
2133	* Makefile.am (x-java.c): New rule. Automake's .l.c rules doesn't
2134	work if $(LEX) is defined to ":".
2135
21362001-09-03  Tommy Johansson  <tommy.johansson@kanalen.org>
2137
2138	* x-java.h: New file.
2139	* x-java.l: New file.
2140	* xgettext.c: Include x-java.h.
2141	(substring_match): New variable.
2142	(long_options): Add --keyword-substring.
2143	(main): For -k, also call x_java_keyword. Treat --keyword-substring.
2144	(scan_java_file): New function.
2145	(language_to_scanner): Add Java rule. Remove preliminary Java rule.
2146	(extension_to_language): Add Java rule.
2147	* Makefile.am (xgettext_SOURCES): Add x-java.l.
2148
21492001-09-02  Bruno Haible  <haible@clisp.cons.org>
2150
2151	* read-mo.h: New file.
2152	* read-mo.c: New file, extracted from msgunfmt.c.
2153	(read_mo_file): Require non-null message list argument. Return void.
2154	* msgunfmt.c (endian, read32, seek32, string32, read_mo_file): Move to
2155	read-mo.c.
2156	(main): Pass a fresh list, not NULL, to read_mo_file.
2157	* Makefile.am (noinst_HEADERS): Add read-mo.h.
2158	(msgunfmt_SOURCES): Add read-mo.c.
2159
21602001-09-02  Bruno Haible  <haible@clisp.cons.org>
2161
2162	* msgfmt.h (struct hashtable_entry): Remove type.
2163	(verbose): New declaration.
2164	* msgfmt.c (msg_domain): Add a message list field.
2165	(verbose): Make non-static.
2166	(main): Pass the message list, not the hash table, to
2167	msgdomain_write_mo. Free the message list when done.
2168	(new_domain): Initialize the message list to empty.
2169	(format_directive_message): Change type of entry to 'message_ty *'.
2170	Store msgid in it.
2171	* write-mo.h: Don't include hash.h.
2172	(msgdomain_write_mo): Change argument type from hash table to message
2173	list.
2174	* write-mo.c (id_str_pair): Add const.
2175	(write_table): Change argument type from hash table to message list.
2176	Use 'message_ty' instead of 'struct hashtable_entry'.
2177	(msgdomain_write_mo): Change argument type from hash table to message
2178	list.
2179
21802001-09-01  Bruno Haible  <haible@clisp.cons.org>
2181
2182	* msgfmt.h: New file, extracted from msgfmt.c.
2183	* write-mo.h: New file, extracted from msgfmt.c.
2184	* write-mo.c: New file, extracted from msgfmt.c.
2185	(write_table): Don't call delete_hash here.
2186	(msgdomain_write_mo): Add check against writing on full disk.
2187	* msgfmt.c (struct id_str_pair): Move to write-mo.c.
2188	(struct hashtable_entry): Move to msgfmt.h.
2189	(alignment): Move to write-mo.h and write-mo.c.
2190	(no_hash_table): Likewise. Change type to boolean.
2191	(long_options): Don't take &no_hash_table.
2192	(roundup): Move to write-mo.c.
2193	(main): Set no_hash_table here. Call msgdomain_write_mo and
2194	delete_hash.
2195	(compare_id): Move to write-mo.c.
2196	(write_table): Likewise.
2197	(read_po_file): Renamed from grammar.
2198	* Makefile.am (noinst_HEADERS): Add msgfmt.h, write-mo.h.
2199	(msgfmt_SOURCES): Add write-mo.c.
2200
22012001-09-01  Bruno Haible  <haible@clisp.cons.org>
2202
2203	* write-po.c (msgdomain_list_print): Before fclose, check for ferror.
2204
22052001-09-01  Bruno Haible  <haible@clisp.cons.org>
2206
2207	* message.c (message_list_list_search): If the first match has an
2208	empty translation but there is later in the list a non-empty
2209	translation, return the latter one.  This fixes the msgmerge-8 test.
2210
22112001-08-30  Bruno Haible  <haible@clisp.cons.org>
2212
2213	Reorganize msgfmt checking options.
2214	* msgfmt.c: Include limits.h.
2215	(verbose): Renamed from verbose_level.
2216	(check_format_strings): Renamed from do_check.
2217	(check_header, check_domain, check_compatibility): New variables.
2218	(long_options): Add --check-domain, --check-format, --check-header,
2219	--check-compatibility.
2220	(main): Recognize options -C, --check-compatibility, --check-domain,
2221	--check-format, --check-header. Option -c implies the last three.
2222	(usage): Update.
2223	(format_debrief): Test check_header, not verbose_level.
2224	(format_directive_domain): Test check_domain, not verbose_level.
2225	(format_directive_message): Test check_compatibility and check_header,
2226	not verbose_level. Always perform the check for duplicates.
2227	(format_comment_special): Test check_compatibility, not verbose_level.
2228	(check_pair): Error if check_compatibility is true an msgid_plural is
2229	used.
2230
22312001-08-26  Bruno Haible  <haible@clisp.cons.org>
2232
2233	* format.h: New file.
2234	* format-c.c: New file.
2235	* format-java.c: New file.
2236	* format-lisp.c: New file.
2237	* format-python.c: New file.
2238	* format-ycp.c: New file.
2239	* format.c: New file.
2240	* Makefile.am (msgfmt_SOURCES): Add format.c, format-c.c,
2241	format-java.c, format-lisp.c, format-python.c, format-ycp.c.
2242	(xgettext_SOURCES): Likewise.
2243	* message.h (enum format_type): New type.
2244	(format_language, format_language_pretty): New declarations.
2245	(parse_c_format_description_string): Remove declaration.
2246	(possible_format_p): Renamed from possible_c_format_p.
2247	(struct message_ty): Change field 'is_c_format' to an array and
2248	rename it to 'is_format'.
2249	* message.c (parse_c_format_description_string): Remove function.
2250	(format_language): New array.
2251	(format_language_pretty): New array.
2252	(possible_format_p): Renamed from possible_c_format_p.
2253	(parse_c_width_description_string): Remove function.
2254	(message_alloc): Update for is_format array.
2255	(message_copy): Likewise.
2256	(message_merge): Likewise.
2257	* po.h (po_parse_comment_special): New declaration.
2258	* po.c (po_parse_comment_special): New function.
2259	* msgl-cat.c (catenate_msgdomain_list): Update for is_format array.
2260	* read-po.c (struct readall_class_ty): Change field 'is_c_format' to
2261	an array and rename it to 'is_format'.
2262	(readall_constructor): Update for is_format array.
2263	(readall_directive_message): Likewise.
2264	(readall_comment_special): Call po_parse_comment_special instead of
2265	parse_c_format_description_string and parse_c_width_description_string.
2266	* write-po.c (make_format_description_string): Renamed from
2267	make_c_format_description_string. Add a language argument. Remove the
2268	impossible and undecided cases.
2269	(significant_format_p): Renamed from significant_c_format_p.
2270	(has_significant_format_p): New function.
2271	(message_print): Update for is_format array.
2272	* msgfmt.c: Include format.h instead of printf.h.
2273	(struct msgfmt_class_ty): Change field 'is_c_format' to an array and
2274	rename it to 'is_format'.
2275	(format_constructor): Update for is_format array.
2276	(format_directive_message): Likewise.
2277	(format_comment_special): Call po_parse_comment_special instead of
2278	parse_c_format_description_string and parse_c_width_description_string.
2279	(check_pair): Change is_format argument to an array. Call language
2280	dependent format string checking routines.
2281	* x-po.c (struct extract_class_ty): Change field 'is_c_format' to
2282	an array and rename it to 'is_format'.
2283	(extract_constructor): Update for is_format array.
2284	(extract_directive_message): Likewise.
2285	(extract_comment_special): Call po_parse_comment_special instead of
2286	parse_c_format_description_string and parse_c_width_description_string.
2287	* x-c.h (SCANNERS_C): Refer to formatstring_c.
2288	* x-po.h (SCANNERS_PO): Add NULL formatstring reference.
2289	* xgettext.c: Include format.h instead of printf-parse.h.
2290	(test_whether_c_format): Remove function.
2291	(current_formatstring_parser): New variable.
2292	(remember_a_message): Update for is_format array. Call
2293	po_parse_comment_special instead of parse_c_format_description_string
2294	and parse_c_width_description_string. Decide whether format string
2295	depending on current_formatstring_parser.
2296	(language_to_scanner): Also set current_formatstring_parser. Add
2297	dummy table entries for Python, Lisp, Java, YCP.
2298
22992001-08-12  Bruno Haible  <haible@clisp.cons.org>
2300
2301	* pos.h: Include <stddef.h>.
2302
23032001-08-12  Bruno Haible  <haible@clisp.cons.org>
2304
2305	* x-c.c (real_file_name): Renamed from file_name.
2306	(last_comment_line, last_non_comment_line, newline_count): Don't
2307	initialize statically.
2308	(phase1_getc): Update.
2309	(x_c_lex): Don't reset last_comment_line, last_non_comment_line,
2310	newline_count upon EOF.
2311	(extract_c): Reset them here. Update.
2312
2313	* x-c.c (x_c_lex): Move lazy keyword initialization...
2314	(init_keywords): ... to here. New function.
2315	(extract_c): Call init_keywords.
2316
2317	* x-c.c (x_c_lex): Look up token without NUL in hash table.
2318	(x_c_keyword): Store keywords without NUL in hash table.
2319
23202001-07-28  Bruno Haible  <haible@clisp.cons.org>
2321
2322	* gettext.c (usage): If IN_HELP2MAN is set, output template for
2323	localedir, not its value.
2324	* ngettext.c (usage): Likewise.
2325
23262001-07-28  Bruno Haible  <haible@clisp.cons.org>
2327
2328	* po-lex.c: Include c-ctype.h instead of <ctype.h>.
2329	(control_sequence): Use C locale character classifications.
2330	* xgettext.c (main): Cast isspace argument to 'unsigned char'.
2331
23322001-07-28  Bruno Haible  <haible@clisp.cons.org>
2333
2334	* po-lex.h (lex_start, lex_end): New declarations.
2335	* po-lex.c (lex_start): New function.
2336	(lex_end): New function.
2337	(lex_open): Call lex_start.
2338	(lex_close): Call lex_end.
2339	* open-po.h (open_po_file): Nop.
2340	* open-po.c (open_po_file): Small optimization.
2341	* po.h (po_scan): New declaration.
2342	(po_scan_file): Renamed from po_scan.
2343	* po.c (po_scan): New function.
2344	(po_scan_file): Renamed from po_scan.
2345	* msgcmp.c (grammar): Update po_scan_file call.
2346	* msgfmt.c (grammar): Likewise.
2347	* read-po.c (read_po_file): Likewise.
2348	* x-po.h: New file.
2349	* x-po.c: New file.
2350	(extract_class_ty, extract_constructor, extract_directive_domain,
2351	extract_directive_message, extract_parse_brief, extract_comment,
2352	extract_comment_dot, extract_comment_filepos, extract_comment_special,
2353	extract_methods): Moved here from xgettext.c.
2354	(extract_po): New function, extracted from read_po_file.
2355	* xgettext.h (line_comment, exclude): New declarations.
2356	* xgettext.c: Include x-po.h.
2357	(line_comment): Make non-static.
2358	(exclude): Likewise.
2359	(main): Update scan_po_file call.
2360	(read_exclusion_file): Update po_scan_file call.
2361	(extract_class_ty, extract_constructor, extract_directive_domain,
2362	extract_directive_message, extract_parse_brief, extract_comment,
2363	extract_comment_dot, extract_comment_filepos, extract_comment_special,
2364	extract_methods): Move to x-po.c.
2365	(scan_po_file): Renamed from read_po_file. Call xgettext_open and
2366	extract_po.
2367	(language_to_scanner): Use SCANNERS_PO.
2368	(extension_to_language): Use EXTENSIONS_PO.
2369	* Makefile.am (noinst_HEADERS): Add x-po.h.
2370	(xgettext_SOURCES): Add x-po.c.
2371
23722001-07-27  Bruno Haible  <haible@clisp.cons.org>
2373
2374	* x-c.h: New file.
2375	* x-c.c: New file.
2376	(xgettext_token_type_ty, xgettext_token_ty): Moved here from
2377	xget-lex.h. In xgettext_token_ty, unify line_number and file_name into
2378	lex_pos_ty.
2379	(token_type_ty, token_ty): Moved here from xget-lex.c.
2380	(extract_all): Moved here from xgettext.c.
2381	(keywords, default_keywords, trigraphs, file_name, logical_file_name,
2382	line_number, fp, last_comment_line, last_non_comment_line,
2383	newline_count): Moved here from xget-lex.c.
2384	(phase1_pushback, phase1_pushback_length, phase1_getc, phase1_ungetc,
2385	phase2_pushback, phase2_pushback_length, phase2_getc, phase2_ungetc,
2386	phase3_pushback, phase3_pushback_length, phase3_getc, phase3_ungetc,
2387	phase4_getc, phase4_ungetc, phase7_getc, phase7_ungetc,
2388	phase5_pushback, phase5_pushback_length, phase5_get, phase5_unget,
2389	phaseX_get, phase6_pushback, phase6_pushback_length, phase6_get,
2390	phase6_unget, phase8_get): Moved here from xget-lex.c. Use
2391	xgettext_comment_add instead of accessing 'comment'. Don't free
2392	logical_file_name; it is still used as file_name of messages in mdlp.
2393	(x_c_lex): Moved here from xget-lex.c, renamed from xgettext_lex.
2394	(extract_c): Moved here from xgettext.c, renamed from scan_c_file.
2395	Change arguments from filename to FILE * and two filenames. Don't call
2396	xgettext_lex_open and xgettext_lex_close.
2397	(x_c_extract_all): New function.
2398	(x_c_keyword): Moved here from xget-lex.c, renamed from
2399	xgettext_lex_keyword.
2400	(x_c_any_keywords): Moved here from xget-lex.c, renamed from
2401	xgettext_any_keywords.
2402	(x_c_trigraphs): Moved here from xget-lex.c, renamed from
2403	xgettext_lex_trigraphs.
2404	* xgettext.h: New file.
2405	* xgettext.c (extract_all): Move to x-c.c.
2406	(comment): Moved here from xget-lex.c.
2407	(xgettext_comment_add): New function.
2408	(xgettext_comment): Moved here from xget-lex.c, renamed from
2409	xgettext_lex_comment.
2410	(xgettext_comment_reset): Moved here from xget-lex.c, renamed from
2411	xgettext_lex_comment_reset.
2412	(xgettext_open): New function, mostly taken from xgettext_lex_open
2413	in xget-lex.c.
2414	(remember_a_message): Make non-static. Replace xgettext_token_ty arg
2415	with lex_pos_ty argument.
2416	(remember_a_message_plural): Likewise.
2417	(scan_c_file): Moved the body to x-c.c:extract_c.
2418	(language_to_scanner): Use SCANNERS_C.
2419	(extension_to_language): Use EXTENSIONS_C.
2420	* xget-lex.h: Remove file.
2421	* xget-lex.c: Remove file.
2422	* Makefile.am (noinst_HEADERS): Remove xget-lex.h. Add xgettext.h and
2423	x-c.h.
2424	(xgettext_SOURCES): Remove xget-lex.c. Add x-c.c.
2425
24262001-07-26  Bruno Haible  <haible@clisp.cons.org>
2427
2428	* file-list.h: New file.
2429	* file-list.c: New file, extracted from msgcomm.c.
2430	* msgcat.c: Include file-list.h.
2431	(main): Call read_names_from_file instead of read_name_from_file.
2432	(read_name_from_file): Remove function.
2433	* msgcomm.c: Include file-list.h.
2434	(main): Call read_names_from_file instead of read_name_from_file.
2435	(read_name_from_file): Remove function.
2436	* xgettext.c: Include file-list.h.
2437	(main): Call read_names_from_file instead of read_name_from_file.
2438	(read_name_from_file): Remove function.
2439	* Makefile.am (noinst_HEADERS): Add file-list.h.
2440	(xgettext_SOURCES): Add file-list.c.
2441	(msgcat_SOURCES): Likewise.
2442	(msgcomm_SOURCES): Likewise.
2443
24442001-07-23  Bruno Haible  <haible@clisp.cons.org>
2445
2446	* msgcomm.c: Assume <limits.h> exists.
2447	* msgexec.c: Likewise.
2448	* msggrep.c: Likewise.
2449	* write-po.c: Likewise.
2450
24512001-08-02  Bruno Haible  <haible@clisp.cons.org>
2452
2453	* gettext.c (usage): Change bug report address to
2454	<bug-gnu-gettext@gnu.org>.
2455	* ngettext.c (usage): Likewise.
2456	* msgcat.c (usage): Likewise.
2457	* msgcmp.c (usage): Likewise.
2458	* msgcomm.c (usage): Likewise.
2459	* msgconv.c (usage): Likewise.
2460	* msgen.c (usage): Likewise.
2461	* msgexec.c (usage): Likewise.
2462	* msgfmt.c (usage): Likewise.
2463	* msggrep.c (usage): Likewise.
2464	* msgmerge.c (usage): Likewise.
2465	* msgunfmt.c (usage): Likewise.
2466	* msguniq.c (usage): Likewise.
2467	* xgettext.c (usage): Likewise.
2468
24692001-07-22  Bruno Haible  <haible@clisp.cons.org>
2470
2471	* xgettext.c (language_to_scanner): Add language "ObjectiveC".
2472	(extension_to_language): Map extension "m" to "ObjectiveC".
2473
24742001-07-22  Bruno Haible  <haible@clisp.cons.org>
2475
2476	Make msgcomm work with multidomain input and different encodings.
2477	* msgl-cat.h (msgcomm_mode, omit_header): New declarations.
2478	* msgl-cat.c (msgcomm_mode, omit_header): New variables.
2479	(is_message_selected): Different behaviour if omit_header is true.
2480	(is_message_needed): Different behaviour if msgcomm_mode is true.
2481	(catenate_msgdomain_list): Likewise.
2482	* msgcomm.c: Don't include <sys/types.h>, <unistd.h>, po.h. Include
2483	read-po.h, msgl-cat.h instead.
2484	(line_comment, omit_header, more_than, less_than): Remove variables.
2485	(to_code): New variable.
2486	(long_options): New option --to-code.
2487	(main): New option -t/--to-code. Don't take the address of omit_header.
2488	Call catenate_msgdomain_list instead of read_po_file and
2489	is_message_selected.
2490	(is_message_selected, extract_constructor, extract_directive_domain,
2491	extract_directive_message, extract_parse_brief, extract_comment,
2492	extract_comment_dot, extract_comment_filepos, extract_comment_special,
2493	read_po_file): Remove functions.
2494	* Makefile.am (msgcomm_SOURCES): Add read-po.c, msgl-iconv.c,
2495	msgl-cat.c.
2496
24972001-07-22  Bruno Haible  <haible@clisp.cons.org>
2498
2499	* msgl-ascii.h: New file.
2500	* msgl-ascii.c: New file.
2501	* po-charset.h (po_charset_ascii, po_charset_ascii_compatible): New
2502	declarations.
2503	* po-charset.c (po_charset_ascii): New variable.
2504	(po_charset_ascii_compatible): New function.
2505	* write-po.c (has_nonascii): Remove function.
2506	(message_print, message_print_obsolete): Use is_ascii_string instead.
2507	* msgl-iconv.c (iconv_message_list): Don't complain about missing
2508	header entry with charset if all messages are ASCII.
2509	* msgl-cat.c (catenate_msgdomain_list): Don't complain about missing
2510	header entry with charset if all messages are ASCII. Better choice of
2511	canon_to_code: when combining ASCII and an ASCII compatible encoding,
2512	choose the latter, not UTF-8. Avoid performing trivial conversions.
2513	* Makefile.am (noinst_HEADERS): Add msgl-ascii.h.
2514	(msgmerge_SOURCES): Add msgl-ascii.c.
2515	(msgunfmt_SOURCES): Likewise.
2516	(msgcat_SOURCES): Likewise.
2517	(msgcomm_SOURCES): Likewise.
2518	(msgconv_SOURCES): Likewise.
2519	(msgen_SOURCES): Likewise.
2520	(msgexec_SOURCES): Likewise.
2521	(msggrep_SOURCES): Likewise.
2522	(msguniq_SOURCES): Likewise.
2523
25242001-07-22  Bruno Haible  <haible@clisp.cons.org>
2525
2526	* msgl-cat.h: Include <stdbool.h>.
2527	* po.h: Likewise.
2528	* read-po.h: Likewise.
2529	* write-po.h: Likewise.
2530	* xget-lex.h: Likewise.
2531
25322001-07-21  Bruno Haible  <haible@clisp.cons.org>
2533
2534	* msgl-cat.h: New file.
2535	* msgl-cat.c: New file, extracted from msgcat.c.
2536	* msgcat.c (more_than, less_than): Move to msgl-cat.c.
2537	(use_first): Likewise. Change type to bool.
2538	(long_options): Don't take the address of use_first.
2539	(main): Initialize more_than, less_than, use_first explicitly.
2540	Add --use-first handling.
2541	(is_message_selected, is_message_needed, is_message_first_needed,
2542	catenate_msgdomain_list): Move to msgl-cat.c.
2543	* read-po.h (allow_duplicates): New declaration.
2544	* read-po.c (allow_duplicates): New variable.
2545	(readall_directive_message): If allow_duplicates is true, don't search
2546	for the message ID, just append the message.
2547	* msguniq.c: New file.
2548	* Makefile.am (bin_PROGRAMS): Add msguniq.
2549	(noinst_HEADERS): Add msgl-cat.h.
2550	(msgcat_SOURCES): Add msgl-cat.c.
2551	(msguniq_SOURCES, msguniq_LDADD): New variables.
2552
25532001-07-21  Bruno Haible  <haible@clisp.cons.org>
2554
2555	* msgcat.c (usage): The default value for more-than is 0 here.
2556	(is_message_selected): Always keep the header entry. Needed when
2557	option --unique is used.
2558
25592001-07-21  Bruno Haible  <haible@clisp.cons.org>
2560
2561	* message.h (struct message_ty): Add fields 'alternative_count',
2562	'alternative'.
2563	* msgcat.c (catenate_msgdomain_list): is_c_format defaults to
2564	undecided, not to no. If all alternative translations of a message
2565	are the same, keep the first translation instead of mentioning them
2566	all, and don't make the message fuzzy.
2567
25682001-07-21  Bruno Haible  <haible@clisp.cons.org>
2569
2570	* msgcomm.c (extract_directive_message): Don't make the message fuzzy
2571	if the first occurrence wasn't fuzzy.
2572
25732001-07-21  Bruno Haible  <haible@clisp.cons.org>
2574
2575	* message.c (message_comment_filepos): Don't keep the filepos[] array
2576	sorted.
2577	* write-po.c (cmp_by_msgid): Renamed from msgid_cmp.
2578	(cmp_filepos, msgdomain_list_sort_filepos): New functions.
2579	(cmp_by_filepos): Renamed from filepos_cmp.
2580	(msgdomain_list_sort_by_filepos): Call msgdomain_list_sort_filepos.
2581
25822001-07-12  Bruno Haible  <haible@clisp.cons.org>
2583
2584	* msgexec.c: New file.
2585	* msgsed.c: Remove file.
2586	* Makefile.am (bin_PROGRAMS): Replace msgsed with msgexec.
2587	(msgexec_SOURCES, msgexec_LDADD): New variables.
2588	(msgsed_SOURCES, msgsed_LDADD): Remove variables.
2589
25902001-07-11  Bruno Haible  <haible@clisp.cons.org>
2591
2592	* xgettext.c (test_whether_c_format): When encountering an
2593	unterminated % format specifier, return 'impossible'.
2594	Reported by Gaute B Strokkenes <gs234@cam.ac.uk>.
2595
25962001-07-09  Bruno Haible  <haible@clisp.cons.org>
2597
2598	* write-po.c (has_nonascii): New function.
2599	(message_print): Warn if the msgid is not fully ASCII.
2600	(message_print_obsolete): Likewise.
2601
26022001-07-05  Bruno Haible  <haible@clisp.cons.org>
2603
2604	* msgcomm.c (is_message_selected): Keep the header entry.
2605
26062001-07-01  Bruno Haible  <haible@clisp.cons.org>
2607
2608	* po-charset.h (po_lex_charset): New declaration.
2609	* po-charset.c (po_lex_charset): Export variable.
2610	* po-lex.h: Include xerror.h.
2611	(gram_pos_column): New declaration.
2612	(po_gram_error): Also output current column number.
2613	(po_gram_error_at_line): Work around ## problem in gcc.
2614	* po-lex.c: Include linebreak.h and utf8-ucs4.h.
2615	(gram_pos_column): New variable.
2616	(po_gram_error): Also output current column number.
2617	(MBCHAR_BUF_SIZE): New macro.
2618	(struct mbchar, mbchar_t): New types.
2619	(memcpy_small, mb_iseof, mb_ptr, mb_len, mb_iseq, mb_isnul, mb_cmp,
2620	mb_equal, mb_isascii): New functions.
2621	(MB_UNPRINTABLE_WIDTH): New macro.
2622	(mb_width, mb_putc, mb_setascii, mb_copy): New functions.
2623	(NPUSHBACK): New macro.
2624	(struct mbfile, mbfile_t): New types.
2625	(signal_eilseq): New variable.
2626	(mbfile_init, mbfile_getc, mbfile_ungetc): New functions.
2627	(mbf): New variable.
2628	(fp): Remove variable.
2629	(lex_open): Initialize mbf, gram_pos_column, signal_eilseq.
2630	(lex_close): Reset mbf, gram_pos_column, signal_eilseq.
2631	(lex_getc): Return a multibyte character. Update gram_pos_column.
2632	(lex_ungetc): Take a multibyte character. Update gram_pos_column.
2633	(keyword_p): Use po_gram_error_at_line instead of po_gram_error.
2634	No column number needed here.
2635	(control_sequence): Read multibyte characters instead of bytes.
2636	(po_gram_lex): Likewise.
2637	* xgettext.c (exclude_directive_domain): Use po_gram_error_at_line
2638	instead of po_gram_error. No column number needed here.
2639	(extract_directive_domain): Likewise.
2640	* msgcomm.c (extract_directive_domain): Likewise.
2641
26422001-06-30  Bruno Haible  <haible@clisp.cons.org>
2643
2644	* message.h: Include stdbool.h.
2645	(message_ty): Change type of fields 'is_fuzzy', 'obsolete' to bool.
2646	(message_predicate_ty): Change return type to bool.
2647	* message.c (message_alloc): Update.
2648	* msgcat.c (is_message_selected): Change return type to bool.
2649	(is_message_needed): Likewise.
2650	(is_message_first_needed): Likewise.
2651	(main): Use bool.
2652	(catenate_msgdomain_list): Update. Use yes/no for is_c_format and
2653	do_wrap.
2654	* msgcmp.c (multi_domain_mode): Change type to bool.
2655	(compare_directive_message): Change 'obsolete' argument type to bool.
2656	(main): Use bool.
2657	* msgcomm.c (is_message_selected): Change return type to bool.
2658	(extract_directive_message): Change 'obsolete' argument type to bool.
2659	(main): Use bool.
2660	(struct extract_class_ty): Change type of field 'is_fuzzy' to bool.
2661	Change type of field 'filepos_count' to size_t.
2662	(extract_constructor): Update.
2663	(extract_parse_brief): Update.
2664	(extract_comment_special): Update.
2665	(read_po_file): Update.
2666	* msgconv.c (main): Use bool.
2667	* msgen.c (main): Use bool.
2668	* msgfmt.c (struct msgfmt_class_ty): Change type of fields 'is_fuzzy',
2669	'has_header_entry' to bool.
2670	(include_all): Change type to bool.
2671	(do_check): Likewise.
2672	(long_options): Update.
2673	(format_directive_message): Change 'obsolete' argument type to bool.
2674	(main): Use bool.
2675	(format_constructor): Update.
2676	(format_debrief): Update.
2677	(format_comment_special): Update.
2678	(check_pair): Update.
2679	* msggrep.c (is_string_selected): Change return type to bool.
2680	(is_message_selected): Likewise.
2681	(main): Use bool.
2682	* msgl-charset.c (compare_po_locale_charsets): Use bool.
2683	* msgl-iconv.c (iconv_message_list): Update.
2684	* msgmerge.c (quiet): Change type to bool.
2685	(multi_domain_mode): Likewise.
2686	(main): Use bool.
2687	(match_domain): Update.
2688	(merge): Update.
2689	* msgsed.c (main): Use bool.
2690	* msgunfmt.c (main): Use bool.
2691	* po-gram-gen.y (string, stringlist, number, pos, rhs): Change type of
2692	'obsolete' field to bool.
2693	* po-lex.h: Include stdbool.h.
2694	(pass_obsolete_entries): Change type to bool.
2695	(po_lex_pass_comments): Change argument type to bool.
2696	(po_lex_pass_obsolete_entries): Likewise.
2697	(po_gram_error): Update.
2698	(po_gram_error_at_line): Update.
2699	* po-lex.c (po_lex_obsolete): Change type to bool.
2700	(pass_comments): Likewise.
2701	(pass_obsolete_entries): Likewise.
2702	(lex_open): Update.
2703	(lex_close): Update.
2704	(po_gram_error): Update.
2705	(po_gram_error_at_line): Update.
2706	(po_gram_lex): Update.
2707	(po_lex_pass_comments): Change argument type to bool.
2708	(po_lex_pass_obsolete_entries): Likewise.
2709	* po.h (struct po_method_ty): Change 'obsolete' argument type of
2710	directive_message to bool.
2711	(po_callback_message): Change 'obsolete' argument type to bool.
2712	* po.c (po_directive_message): Change 'obsolete' argument type to bool.
2713	(po_callback_message): Likewise.
2714	* read-po.c (struct readall_class_ty): Change type of field 'is_fuzzy'
2715	to bool.
2716	(readall_directive_message): Change 'obsolete' argument type to bool.
2717	(readall_constructor): Update.
2718	(readall_parse_brief): Update.
2719	(readall_comment_special): Update.
2720	(read_po_file): Update.
2721	* str-list.h: Include stdbool.h.
2722	(string_list_member): Change return type to bool.
2723	* str-list.c (string_list_member): Change return type to bool.
2724	* write-po.h (message_print_style_escape, msgdomain_list_print): Change
2725	argument type to bool.
2726	* write-po.c (make_c_format_description_string) Change argument type
2727	to bool.
2728	(message_print): Likewise.
2729	(message_print_obsolete): Likewise.
2730	(indent): Change type to bool.
2731	(uniforum): Likewise.
2732	(escape): Likewise.
2733	(message_print_style_indent): Update.
2734	(message_print_style_uniforum): Update.
2735	(message_print_style_escape): Change argument type to bool.
2736	(wrap): Update.
2737	(msgdomain_list_print): Change argument type to bool.
2738	* xget-lex.h (xgettext_any_keywords): Change return type to bool.
2739	* xget-lex.c (trigraphs): Change type to bool.
2740	(default_keywords): Likewise.
2741	(phase5_get): Use NULL not 0. Update.
2742	(phaseX_get): Use bool.
2743	(xgettext_lex): Update.
2744	(xgettext_lex_keyword): Update.
2745	(xgettext_any_keywords): Change return type to bool.
2746	(xgettext_lex_trigraphs): Update.
2747	* xgettext.c (add_all_comments): Change type to bool.
2748	(extract_all): Likewise.
2749	(long_options): Update.
2750	(exclude_directive_message): Change 'obsolete' argument type to bool.
2751	(extract_directive_message): Likewise.
2752	(main): Use bool.
2753	(scan_c_file): Update.
2754	(struct extract_class_ty): Change type of field 'is_fuzzy' to bool.
2755	Change type of field 'filepos_count' to size_t.
2756	(extract_constructor): Update.
2757	(extract_parse_brief): Update.
2758	(extract_comment_special): Update.
2759	(construct_header): Update.
2760
27612001-06-25  Bruno Haible  <haible@clisp.cons.org>
2762
2763	* msggrep.c (usage): Explain the pattern syntax.
2764
27652001-06-18  Karl Eichwalder  <ke@suse.de>
2766
2767	* msgcomm.c (long_options): Add '--unique' option as documented
2768	within --help output.
2769
27702001-06-12  Bruno Haible  <haible@clisp.cons.org>
2771
2772	* xgettext.c (extension_to_language): Recognize "*.hh" as being C++.
2773	Reported by Felix Natter.
2774
27752001-06-10  Bruno Haible  <haible@clisp.cons.org>
2776
2777	* msgcmp.c (main): Set gram_max_allowed_errors to UINT_MAX, as in
2778	msgmerge.c.
2779
27802001-06-10  Bruno Haible  <haible@clisp.cons.org>
2781
2782	* message.c (message_alloc): Cast xmalloc return value.
2783	(message_list_alloc): Likewise.
2784	(message_list_list_alloc): Likewise.
2785	(msgdomain_alloc): Likewise.
2786	(msgdomain_list_alloc): Likewise.
2787	* msgunfmt.c (string32): Likewise.
2788	* po.c (po_alloc): Likewise.
2789	* str-list.c (string_list_concat): Likewise.
2790	(string_list_join): Likewise.
2791
27922001-06-10  Bruno Haible  <haible@clisp.cons.org>
2793
2794	* message.h (message_ty): New field 'tmp'.
2795	(message_predicate_ty): New type.
2796	(message_list_remove_if_not): New declaration.
2797	* message.c (message_list_delete_nth): Comment out.
2798	(message_list_remove_if_not): New function.
2799	* msgl-charset.h: New file.
2800	* msgl-charset.c: New file.
2801	* msgl-iconv.h: New file.
2802	* msgl-iconv.c: New file.
2803	* msgcat.c: New file.
2804	* msgconv.c: New file.
2805	* msgen.c: New file.
2806	* msggrep.c: New file.
2807	* msgsed.c: New file.
2808	* msgcomm.c (default_domain, output_dir): Remove variables.
2809	(long_options): Remove --default-domain and --output-dir. Add
2810	--output-file.
2811	(main): Don't accept -a, -C, -d, -k, -l, -L, -m, -M, -p, -T, -x.
2812	Use output_file instead of complexly computed file_name.
2813	Use O(n) loop instead of O(n^2) loop for removing messages.
2814	(usage): Don't document --default-domain and --output-dir.
2815	(is_message_selected): New function.
2816	* Makefile.am (bin_PROGRAMS): Add msgcat, msgconv, msgen, msggrep,
2817	msgsed.
2818	(noinst_HEADERS): Add msgl-charset.h, msgl-iconv.h.
2819	(msgcat_SOURCES, msgconv_SOURCES, msgen_SOURCES, msggrep_SOURCES,
2820	msgsed_SOURCES): New variables.
2821	(msgcat_LDADD, msgconv_LDADD, msgen_LDADD, msggrep_LDADD,
2822	msgsed_LDADD): New variables.
2823
28242001-06-10  Bruno Haible  <haible@clisp.cons.org>
2825
2826	* message.h (struct message_variant_ty): Remove type.
2827	(struct message_ty): Remove variant_count, variant fields. Add
2828	msgstr, msgstr_len, pos fields.
2829	(message_alloc): Add msgstr, msgstr_len, pp arguments.
2830	(message_variant_search, message_variant_append): Remove declarations.
2831	(msgdomain_ty): New type.
2832	(msgdomain_alloc, msgdomain_free): New declarations.
2833	(msgdomain_list_ty): New type.
2834	(msgdomain_list_alloc, msgdomain_list_free, msgdomain_list_append,
2835	msgdomain_list_append_list, msgdomain_list_sublist,
2836	msgdomain_list_search, msgdomain_list_search_fuzzy): New declarations.
2837	* message.c (message_alloc): Add msgstr, msgstr_len, pp arguments.
2838	(message_free): Update.
2839	(message_variant_search): Remove function.
2840	(message_variant_append): Remove function.
2841	(message_copy): Update.
2842	(message_merge): Update.
2843	(message_list_alloc): Use NULL, not 0.
2844	(message_list_search): Likewise.
2845	(message_list_search_fuzzy_inner): Update.
2846	(message_list_list_alloc): Use NULL, not 0.
2847	(message_list_list_search): Likewise.
2848	(message_list_list_free): Comment out.
2849	(msgdomain_alloc, msgdomain_free, msgdomain_list_alloc,
2850	msgdomain_list_append, msgdomain_list_sublist): New functions.
2851	* read-po.h (read_po_file): Change return type to
2852	'msgdomain_list_ty *'.
2853	* read-po.c (readall_class_ty): Remove field domain_list, add field
2854	mdlp.
2855	(readall_constructor): Update.
2856	(readall_destructor): Likewise.
2857	(readall_directive_message): Likewise.
2858	(readall_parse_debrief): Remove function.
2859	(readall_methods): Use NULL instead of readall_parse_debrief.
2860	(read_po_file): Change return type to 'msgdomain_list_ty *'.
2861	* write-po.h (message_list_print, message_list_sort_by_msgid,
2862	message_list_sort_by_filepos): Remove declarations.
2863	(msgdomain_list_print, msgdomain_list_sort_by_msgid,
2864	msgdomain_list_sort_by_filepos): New declarations.
2865	* write-po.c (message_print): Remove domain argument. Update. Assume
2866	'first' is true.
2867	(message_print_obsolete): Likewise.
2868	(msgdomain_list_print): Renamed from message_list_print. Change type
2869	of first argument.
2870	(msgdomain_list_sort_by_msgid): Renamed from
2871	message_list_sort_by_msgid. Change type of argument.
2872	(msgdomain_list_sort_by_filepos): Renamed from
2873	message_list_sort_by_filepos. Change type of argument.
2874	* msgcmp.c (compare_class_ty): Remove field domain_list, add field
2875	mdlp.
2876	(multi_domain_mode): New variable.
2877	(long_options): Add --multi-domain.
2878	(main): Accept -m/--multi-domain.
2879	(usage): Explain --multi-domain.
2880	(match_domain): New function, extracted from 'compare'.
2881	(compare): Update. Handle multi_domain_mode. Change argument types to
2882	'const char *'.
2883	(compare_constructor): Update.
2884	(compare_destructor): Likewise.
2885	(compare_directive_message): Likewise.
2886	(compare_parse_debrief): Remove function.
2887	(compare_methods): Use NULL instead of compare_parse_debrief.
2888	(grammar): Change argument type to 'const char *' and return type to
2889	'msgdomain_list_ty *'.
2890	* msgcomm.c (main): Update.
2891	(extract_directive_message): Update.
2892	* msgmerge.c (multi_domain_mode): New variable.
2893	(long_options): Add --multi-domain.
2894	(struct statistics): New type.
2895	(main): Accept -m/--multi-domain. Update.
2896	(usage): Explain --multi-domain.
2897	(compendium): Update.
2898	(match_domain): New function, extracted from 'merge'.
2899	(merge): Update. Handle multi_domain_mode.
2900	* msgunfmt.c (main): Update.
2901	(read_mo_file): Update.
2902	* xgettext.c (main): Update.
2903	(exclude_directive_message): Update.
2904	(remember_a_message): Likewise.
2905	(remember_a_message_plural): Likewise.
2906	(scan_c_file): Change argument type to 'msgdomain_list_ty *'.
2907	(extract_directive_message): Update.
2908	(read_po_file): Change argument type to 'msgdomain_list_ty *'.
2909	(construct_header): Update.
2910
2911	* dir-list.h: Don't use reserved identifiers in prototypes.
2912	* gettext.c: Likewise.
2913	* message.c: Likewise.
2914	* msgcmp.c: Likewise.
2915	* msgcomm.c: Likewise.
2916	* msgfmt.c: Likewise.
2917	* msgunfmt.c: Likewise.
2918	* ngettext.c: Likewise.
2919	* open-po.h: Likewise.
2920	* po-hash.h: Likewise.
2921	* po-lex.h: Likewise.
2922	* po-lex.c: Likewise.
2923	* po.h: Likewise.
2924	* po.c: Likewise.
2925	* str-list.h: Likewise.
2926	* write-po.c: Likewise.
2927	* xget-lex.h: Likewise.
2928	* xget-lex.c: Likewise.
2929	* xgettext.c: Likewise.
2930
29312001-06-10  Bruno Haible  <haible@clisp.cons.org>
2932
2933	* message.h (message_list_prepend): New declaration.
2934	* message.c (message_list_prepend): New function.
2935	* msgmerge.c (merge): Add a header entry to the ref list if it has
2936	none.
2937
29382001-06-10  Bruno Haible  <haible@clisp.cons.org>
2939
2940	* msgfmt.c: Change the --strict option to not apply to domain
2941	directives, only to the output filename argument.
2942	(struct msg_domain): Add file_name field.
2943	(domain_list): Renamed from domain.
2944	(new_domain): Add file_name argument.
2945	(main): Pass file name to new_domain(). Use file_name passed to
2946	new_domain() in fopen call; don't free it.
2947	(new_domain): New argument 'file_name'.
2948	(format_directive_domain): Always ensure ".mo" suffix, independently
2949	of --strict.
2950	(format_directive_message): Likewise.
2951	(add_mo_suffix): Don't call xstrdup.
2952
29532001-06-01  Bruno Haible  <haible@clisp.cons.org>
2954
2955	* Makefile.am (datadir): Remove definition.
2956	Reported by Albert Chin-A-Young <china@thewrittenword.com>.
2957
29582001-05-15  Bruno Haible  <haible@clisp.cons.org>
2959
2960	* msgcmp.c (main): Call set_program_name instead of assigning
2961	program_name directly.
2962	* msgcomm.c (main): Likewise.
2963	* msgfmt.c (main): Likewise.
2964	* msgmerge.c (main): Likewise.
2965	* msgunfmt.c (main): Likewise.
2966	* xgettext.c (main): Likewise.
2967	* gettext.c (main): Remove "lt-" prefix from program_name.
2968	* ngettext.c (main): Likewise.
2969
29702001-05-04  Bruno Haible  <haible@clisp.cons.org>
2971
2972	* gettext.c (usage): Add description of what the program does.
2973	Separate blocks with blank lines.
2974	* ngettext.c (usage): Likewise.
2975
2976	* msgcmp.c (usage): Add a blank line after the first usage line.
2977	Hardwire the blank line output.
2978	* msgcomm.c (usage): Likewise.
2979	* msgfmt.c (usage): Likewise.
2980	* msgmerge.c (usage): Likewise.
2981	* msgunfmt.c (usage): Likewise.
2982	* xgettext.c (usage): Likewise.
2983
29842001-05-05  Karl Eichwalder  <ke@suse.de>
2985
2986	* xgettext.c (read_name_from_file): Remove trailing space from line.
2987	* msgcomm.c (read_name_from_file): Likewise.
2988
29892001-05-02  Bruno Haible  <haible@clisp.cons.org>
2990
2991	* po-charset.c: Don't include stdio.h, stdlib.h, mbswidth.h. Include
2992	xerror.h instead.
2993	(multiline_warning): Move to xerror.c.
2994	(po_lex_charset_set): Use xasprintf instead of asprintf.
2995	* msgfmt.c: Include xerror.h.
2996	(format_debrief): Use multiline_error for the error message.
2997
29982001-05-01  Bruno Haible  <haible@clisp.cons.org>
2999
3000	Prefix most error messages with the program name, except those
3001	starting with "filename:lineno:".
3002	* po-lex.h: Include progname.h.
3003	(po_gram_error): Set error_with_progname = 0 during error_at_line()
3004	call.
3005	(po_gram_error_at_line): Likewise.
3006	* po-lex.c (po_gram_error): Likewise.
3007	(po_gram_error_at_line): Likewise.
3008	* msgcmp.c: Include progname.h.
3009	(program_name): Remove variable.
3010	(error_print): Remove function.
3011	(main): Initialize error_print_progname with maybe_print_progname.
3012	* msgcomm.c: Include progname.h.
3013	(program_name): Remove variable.
3014	(error_print): Remove function.
3015	(main): Initialize error_print_progname with maybe_print_progname.
3016	* msgfmt.c: Include progname.h.
3017	(program_name): Remove variable.
3018	(error_print): Remove function.
3019	(main): Initialize error_print_progname with maybe_print_progname.
3020	(format_directive_message): Set error_with_progname = 0 during
3021	error_at_line() call.
3022	(check_pair): Likewise.
3023	* msgmerge.c: Include progname.h.
3024	(program_name): Remove variable.
3025	(error_print): Remove function.
3026	(main): Initialize error_print_progname with maybe_print_progname.
3027	* msgunfmt.c: Include progname.h.
3028	(program_name): Remove variable.
3029	(error_print): Remove function.
3030	(main): Initialize error_print_progname with maybe_print_progname.
3031	* xget-lex.c: Include progname.h.
3032	(phase5_get): Set error_with_progname = 0 during error() call.
3033	* xgettext.c: Include progname.h.
3034	(program_name): Remove variable.
3035	(error_print): Remove function.
3036	(main): Initialize error_print_progname with maybe_print_progname.
3037	(scan_c_file): Set error_with_progname = 0 during error() call.
3038
30392001-04-30  Bruno Haible  <haible@clisp.cons.org>
3040
3041	Save the messages' obsoleteness status in the 'message_ty'.
3042	* po.h (struct po_method_ty): Add 'obsolete' argument to
3043	directive_message method.
3044	(po_callback_message): Add 'obsolete' argument.
3045	* po.c (po_directive_message): Add 'obsolete' argument. Pass it to
3046	method->directive_message.
3047	(po_callback_message): Add 'obsolete' argument.
3048	* po-gram-gen.y (message): Pass 'obsolete' argument to
3049	po_callback_message.
3050	* msgcmp.c (compare_directive_message): Add 'obsolete' argument.
3051	* msgcomm.c (extract_directive_message): Likewise.
3052	* msgfmt.c (format_directive_message): Likewise.
3053	* xgettext.c (exclude_directive_message, extract_directive_message):
3054	Likewise.
3055	* read-po.c (readall_directive_message): Likewise. Set mp->obsolete.
3056
30572001-05-01  Bruno Haible  <haible@clisp.cons.org>
3058
3059	Reduce running time for very long msgstrs from O(n^2) to O(n) where
3060	n is the number of string pieces.
3061	* str-list.h (string_list_init, string_list_destroy,
3062	string_list_concat, string_list_concat_destroy): New declarations.
3063	* str-list.c (string_list_init, string_list_destroy,
3064	string_list_concat, string_list_concat_destroy): New functions.
3065	* po-gram-gen.y Include str-list.h.
3066	(%union): Add new alternative of type string_list_ty.
3067	(string_list): Change type to stringlist.
3068	(message): Use string_list_concat_destroy to convert a stringlist to
3069	a single string. Use string_list_destroy instead of free.
3070	(msgid_pluralform): Likewise.
3071	(pluralform): Likewise.
3072	(string_list): Return a stringlist. Don't concatenate the strings one
3073	by one.
3074	* po-lex.c: Include str-list.h.
3075
30762001-04-30  Bruno Haible  <haible@clisp.cons.org>
3077
3078	* message.h (message_alloc): Add const to prototype.
3079	* message.c (message_alloc): Add const to argument type.
3080	* msgcmp.c (compare_class_ty): Add const to 'domain' field.
3081	* msgcomm.c (default_domain): Add const.
3082	(main): Add const to 'file_name' variable.
3083	* xgettext.c (default_domain): Add const.
3084	(msgstr_prefix): Likewise.
3085	(msgstr_suffix): Likewise.
3086	(main): Add const to 'file_name' variable.
3087
30882001-04-29  Bruno Haible  <haible@clisp.cons.org>
3089
3090	* read-po.h: New file.
3091	* read-po.c: New file, extracted from msgmerge.c.
3092	* msgmerge.c: Don't include string.h. Include read-po.h instead.
3093	(merge_class_ty, line_comment, merge_constructor, merge_destructor,
3094	merge_directive_domain, merge_directive_message, merge_parse_brief,
3095	merge_parse_debrief, merge_comment, merge_comment_dot,
3096	merge_comment_special, merge_comment_filepos, grammar): Move out to
3097	read-po.c.
3098	(compendium, merge): Call read_po_file() instead of grammar().
3099	* Makefile.am (noinst_HEADERS): Add read-po.h.
3100	(msgmerge_SOURCES): Add read-po.c.
3101	* FILES: Update.
3102
31032001-04-28  Bruno Haible  <haible@clisp.cons.org>
3104
3105	* msgcmp.c (usage): Restructure usage message. Talk about ref.pot, not
3106	ref.po.
3107	* msgcomm.c (long_options): Remove --add-comments, --join-existing
3108	options.
3109	(main): Rename local variables sort_output, sort_by_file to
3110	sort_by_msgid, sort_by_filepos. Remove -c and -j options.
3111	(usage): Restructure usage message. INPUTFILE is not mandatory. Remove
3112	--trigraphs option.
3113	* msgfmt.c (usage): Restructure usage message.
3114	* msgmerge.c (main): Signal error if both --sort-output and
3115	--sort-by-file were given.
3116	(usage): Restructure usage message. Talk about ref.pot, not ref.po.
3117	Document --sort-output, --sort-by-file, --quiet.
3118	* msgunfmt.c (long_options): Add --sort-output.
3119	(main): Recognize -s/--sort-output option, and sort the message list
3120	when it is given.
3121	(usage): Restructure usage message.
3122	* xgettext.c (main): Rename local variables sort_output, sort_by_file
3123	to sort_by_msgid, sort_by_filepos.
3124	(usage): Restructure usage message.
3125
31262001-04-28  Bruno Haible  <haible@clisp.cons.org>
3127
3128	* po-charset.h: New file.
3129	* po-charset.c: New file, extracted from po.c. Don't warn about wrong
3130	or missing charset if it's a POT file.
3131	* po-lex.h (iconv.h, po_lex_iconv): Move to po-charset.h.
3132	(po_lex_charset): Remove declaration.
3133	* po-lex.c: Include po-charset.h.
3134	(po_lex_charset, po_lex_iconv): Move to po-charset.c.
3135	(lex_open): Call po_lex_charset_init.
3136	(lex_close): Call po_lex_charset_close.
3137	* po.c: Don't include ctype.h, stdio.h, mbswidth.h, libgettext.h.
3138	Include po-charset.h instead.
3139	(program_name, _, SIZEOF, multiline_warning): Move to po-charset.c.
3140	(po_callback_message): Move charset handling to po-charset.c.
3141	* Makefile.am (noinst_HEADERS): Add po-charset.h.
3142	(msgcmp_SOURCES, msgfmt_SOURCES, msgmerge_SOURCES, xgettext_SOURCES,
3143	msgcomm_SOURCES): Add po-charset.c.
3144	* FILES: Update.
3145
3146	* msgfmt.c: Don't include ctype.h.
3147	* msgunfmt.c: Likewise.
3148
31492001-04-28  Bruno Haible  <haible@clisp.cons.org>
3150
3151	* po.h (PO_BASE_TY): Remove next_is_fuzzy field.
3152	* po.c (po_alloc): Don't reset next_is_fuzzy.
3153	(po_callback_message): Ignore fuzziness of the header entry. Don't
3154	reset next_is_fuzzy.
3155	(po_callback_comment): Don't set next_is_fuzzy.
3156	* msgfmt.c (format_directive_message): Ignore fuzziness of the header
3157	entry. Count fuzzy untranslated entries as untranslated.
3158
31592001-09-13  Bruno Haible  <haible@clisp.cons.org>
3160
3161	* gettext-0.10.40 released.
3162
31632001-07-24  Bruno Haible  <haible@clisp.cons.org>
3164
3165	* gettext-0.10.39 released.
3166
31672001-05-23  Bruno Haible  <haible@clisp.cons.org>
3168
3169	* gettext-0.10.38 released.
3170
31712001-05-23  Bruno Haible  <haible@clisp.cons.org>
3172
3173	* write-po.c (wrap): Avoid broken EUC-KR conversion in glibc-2.1.
3174
31752001-05-21  Bruno Haible  <haible@clisp.cons.org>
3176
3177	* xgettext.c (construct_header): Replace 8-bit with 8bit.
3178
31792001-04-19  Bruno Haible  <haible@clisp.cons.org>
3180
3181	* gettext-0.10.37 released.
3182
31832001-04-18  Bruno Haible  <haible@clisp.cons.org>
3184
3185	* po.c (po_callback_message): Don't call iconv_open when the
3186	OLD_PO_FILE_INPUT environment variable is set.
3187	* write-po.c (wrap): Don't call iconv_open when the OLD_PO_FILE_OUTPUT
3188	environment variable is set.
3189
31902001-04-09  Bruno Haible  <haible@clisp.cons.org>
3191
3192	* po.c: Include mbswidth.h.
3193	(program_name): New declaration.
3194	(multiline_warning): New function.
3195	(po_callback_message): Change messages again. Call multiline_warning
3196	instead of error.
3197
31982001-04-04  Bruno Haible  <haible@clisp.cons.org>
3199
3200	* gettext.c (program_name): Change type to 'const char *'.
3201	* ngettext.c (program_name): Likewise.
3202
32032001-04-04  Bruno Haible  <haible@clisp.cons.org>
3204
3205	* write-po.c (wrap): Prohibit line breaks inside backslash escape
3206	sequences.
3207
32082001-03-29  Bruno Haible  <haible@clisp.cons.org>
3209
3210	* gettext-0.10.36 released.
3211
32122001-03-27  Bruno Haible  <haible@clisp.cons.org>
3213
3214	* po.c (po_callback_message): Change message again.
3215
32162001-03-26  Bruno Haible  <haible@clisp.cons.org>
3217
3218	* xgettext.c (test_whether_c_format): Recognize '%%' as valid.
3219	* msgfmt.c (check_pair): In error message, count format
3220	specifications starting from 1, not 0.
3221
32222001-03-25  Bruno Haible  <haible@clisp.cons.org>
3223
3224	* xgettext.c (warn_id_len): Remove unused variable.
3225	(main): Don't set it. 'l' option becomes a nop.
3226	(usage): Remove mention of --string-limits/-l.
3227
32282001-03-23  Bruno Haible  <haible@clisp.cons.org>
3229
3230	* msgcomm.c (main): Don't give an error message if there are "too few"
3231	messages in the input files. Do sanity checking before reading the
3232	input files. Make --add-location the default, even if --omit-header
3233	is specified.
3234
32352001-03-22  Bruno Haible  <haible@clisp.cons.org>
3236
3237	* xgettext.c (construct_header): Replace ENCODING with 8-bit.
3238
32392001-03-20  Bruno Haible  <haible@clisp.cons.org>
3240
3241	* po.c (po_callback_message): Change message, refer to GNU libiconv.
3242
32432001-03-18  Bruno Haible  <haible@clisp.cons.org>
3244
3245	* gettext.c [TESTS]: When testing, set HAVE_SETLOCALE.
3246	(main): Expand escape sequences also if no domain is given. Don't need
3247	to call bindtextdomain if there are no string arguments.
3248	* ngettext.c: New file.
3249	* Makefile.am (bin_PROGRAMS): Add ngettext.
3250	(ngettext_SOURCES): New variable.
3251
32522001-03-19  Bruno Haible  <haible@clisp.cons.org>
3253
3254	* xgettext.c (extension_to_language): Recognize "*.cpp" and "*.hpp" as
3255	being C++.
3256	Patch by Dennis Bjorklund <db@zigo.dhs.org>.
3257
32582001-03-11  Bruno Haible  <haible@clisp.cons.org>
3259
3260	* gettext.c: Force inclusion of libgnuintl.h. On Solaris, <locale.h>
3261	has already included libintl.h.
3262
32632001-03-11  Bruno Haible  <haible@clisp.cons.org>
3264            Karl Eichwalder  <ke@suse.de>
3265
3266	* po.c (po_callback_message): Add comments to support translators.
3267
32682001-03-11  Bruno Haible  <haible@clisp.cons.org>
3269
3270	* po-lex.c (lex_close): Use ngettext and plural-form message.
3271	* msgcmp.c (compare): Likewise.
3272	* msgfmt.c (main): Likewise.
3273
32742001-03-10  Bruno Haible  <haible@clisp.cons.org>
3275
3276	* po.c (po_callback_message): Cast %*s argument from size_t to int.
3277	* msgfmt.c (format_debrief): Likewise.
3278	(check_pair): Cast format string argument from size_t to long.
3279	* msgmerge.c (merge): Likewise.
3280
3281	* gettext.c (main): Update copyright year.
3282	* msgcmp.c (main): Likewise.
3283	* msgcomm.c (main): Likewise.
3284	* msgfmt.c (main): Likewise.
3285	* msgmerge.c (main): Likewise.
3286	* msgunfmt.c (main): Likewise.
3287	* xgettext.c (main): Likewise.
3288
3289	* po.c (po_callback_message): Also warn if no iconv is present and
3290	the charset is a CJK encoding requiring iconv. Also avoid broken
3291	EUC-KR conversion in glibc-2.1.
3292
32932001-03-09  Bruno Haible  <haible@clisp.cons.org>
3294
3295	Fix output of strings in CJK encodings.
3296	* write-po.c: Include iconv.h.
3297	(wrap): While preparing a line, use iconv to avoid treating the second
3298	byte of a multi-byte character as an ASCII character.
3299
33002001-03-04  Bruno Haible  <haible@clisp.cons.org>
3301
3302	* msgcomm.c (main): Use IS_ABSOLUTE_PATH and concatenated_pathname.
3303	Fixes an incorrectly computed memory allocation.
3304	* xgettext.c (main): Likewise.
3305	* open-po.c (open_po_file): Use IS_ABSOLUTE_PATH and
3306	concatenated_pathname.
3307	* xget-lex.c (xgettext_lex_open): Likewise.
3308	* msgfmt.c (main): Use SET_BINARY instead of setmode.
3309	* msgunfmt.c (read_mo_file): Likewise.
3310
33112001-03-04  Bruno Haible  <haible@clisp.cons.org>
3312
3313	Check syntax of obsolete entries of PO files, not only in msgmerge.
3314	* po-lex.h (pass_obsolete_entries): New declaration.
3315	(msgstr_def): Remove pos field.
3316	* po-lex.c (po_lex_obsolete): New variable.
3317	(pass_obsolete_entries): Make non-static.
3318	(lex_open): Initialize po_lex_obsolete.
3319	(lex_close): Reset po_lex_obsolete.
3320	(po_gram_lex): Don't look at pass_obsolete_entries. Instead, set
3321	po_lex_obsolete to 1 when "#~" is seen. Reset po_lex_obsolete when
3322	a newline is seen. Before returning, fill the 'pos' and 'obsolete'
3323	fields of any token.
3324	* po-gram.gen.y (check_obsolete): New macro.
3325	(union): Add a 'pos' and 'obsolete' field for any symbol type.
3326	(NAME): Assign to type <string>.
3327	(DOMAIN, MSGID, MSGID_PLURAL, MSGSTR, '[', ']'): Assign to type <pos>.
3328	(msgid, msgstr): Remove.
3329	(message, msgid_pluralform, pluralform_list, pluralform, string_list):
3330	Signal an error if the 'obsolete' field is not the same across the
3331	entire token sequence of the rule.
3332	(message): Deal with pass_obsolete_entries here.
3333	(msgid_pluralform, pluralform_list, pluralform, string_list): Fill the
3334	'pos' and 'obsolete' fields of $$.
3335
33362001-03-03  Bruno Haible  <haible@clisp.cons.org>
3337
3338	Fix parsing of strings in CJK encodings.
3339	* po.h (PO_BASE_TY): New field next_is_fuzzy.
3340	* po-lex.h: Include iconv.h.
3341	(po_lex_charset, po_lex_iconv): New declarations.
3342	* po.c (SIZEOF): New macro.
3343	(po_alloc): Initialize next_is_fuzzy.
3344	(po_callback_message): Add check of charset in header entry.
3345	Set po_lex_charset and po_lex_iconv.
3346	After calling po_directive_message, reset next_is_fuzzy.
3347	(po_callback_comment): Set next_is_fuzzy.
3348	* msgfmt.c (format_directive_message): Remove check of charset in
3349	header entry, now done in po.c.
3350	* po-lex.c (po_lex_charset, po_lex_iconv): New variables.
3351	(lex_open): Initialize them.
3352	(lex_close): Reset them.
3353	(po_gram_lex): While parsing a string, use 'po_lex_iconv' to avoid
3354	treating the second byte of a multi-byte character as an ASCII
3355	character.
3356	* Makefile.am (msgcmp_LDADD, msgfmt_LDADD): New variables.
3357
33582001-03-03  Bruno Haible  <haible@clisp.cons.org>
3359
3360	* write-po.h: New file, pieces of message.h.
3361	* message.h (message_page_width_set, message_print_style_indent,
3362	message_print_style_uniforum, message_print_style_escape,
3363	message_list_print, message_list_sort_by_msgid,
3364	message_list_sort_by_filepos): Move to write-po.h.
3365	* write-po.c: New file, pieces of message.c.
3366	(wrap): Add charset argument. Rewritten to use mbs_width_linebreaks().
3367	Use c_isprint() instead of isprint().
3368	(message_print): Add charset argument. Insert a space after '#' even
3369	if the comment line's first character is a tab.
3370	(message_print_obsolete): Likewise.
3371	(message_list_print): Don't change locales. Extract the charset name
3372	from the header entry.
3373	(msgid_cmp, filepos_cmp): Always use strcmp, never use strcoll.
3374	(message_list_sort_by_msgid, message_list_sort_by_filepos): Don't
3375	change locales.
3376	* message.c (indent, uniforum, escape, page_width,
3377	make_c_format_description_string, significant_c_format_p,
3378	make_c_width_description_string, message_print_style_indent,
3379	message_print_style_uniforum, message_print_style_escape, wrap,
3380	print_blank_line, message_print, message_print_obsolete,
3381	message_list_print, msgid_cmp, message_list_sort_by_msgid,
3382	filepos_cmp, message_list_sort_by_filepos, message_page_width_set):
3383	Move to write-po.c.
3384	* msgmerge.c: Include write-po.h.
3385	* msgunfmt.c: Likewise.
3386	* xgettext.c: Likewise.
3387	* msgcomm.c: Likewise.
3388	* Makefile.am (noinst_HEADERS): Add write-po.h.
3389	(msgmerge_SOURCES): Add write-po.c.
3390	(msgunfmt_SOURCES): Likewise.
3391	(xgettext_SOURCES): Likewise.
3392	(msgcomm_SOURCES): Likewise.
3393	(msgmerge_LDADD, msgunfmt_LDADD, xgettext_LDADD, msgcomm_LDADD): New
3394	variables.
3395
33962001-03-03  Bruno Haible  <haible@clisp.cons.org>
3397
3398	* msgcmp.c (compare): Internationalize error message.
3399
34002001-02-10  Bruno Haible  <haible@clisp.cons.org>
3401
3402	* msgunfmt.c (main): Accept -e and -E options.
3403
34042001-02-04  Bruno Haible  <haible@clisp.cons.org>
3405
3406	* msgfmt.c (main): Open the output file in binary mode.
3407	* msgunfmt.c (read_mo_file): Open the input file in binary mode.
3408
34092001-01-21  Bruno Haible  <haible@clisp.cons.org>
3410
3411	Use libtool.
3412	* Makefile.am (LDADD): Remove ../intl/libintl.$la, not needed any more.
3413	(l): Remove macro.
3414
34152001-01-20  Bruno Haible  <haible@clisp.cons.org>
3416
3417	* msgcomm.c (main): Options '-<' and '->' want an argument.
3418
34192001-01-07  Bruno Haible  <haible@clisp.cons.org>
3420
3421	* gettext.c: Renamed from gettextp.c. Use included libintl if TESTS
3422	is defined.
3423	* setlocale.c: Move to ../tests.
3424	* Makefile.am (EXTRA_PROGRAMS, all-local, CLEANFILES): Remove.
3425	(tstgettext_SOURCES): Remove.
3426	(gettext_SOURCES): Update.
3427
34282001-01-07  Bruno Haible  <haible@clisp.cons.org>
3429
3430	* msgcmp.c: Include libgettext.h instead of libintl.h, so that the
3431	configure argument --disable-nls gets respected.
3432	* msgfmt.c: Likewise.
3433	* msgmerge.c: Likewise.
3434	* msgunfmt.c: Likewise.
3435	* open-po.c: Likewise.
3436	* po-gram-gen.y: Likewise.
3437	* po-lex.c: Likewise.
3438	* xgettext.c: Likewise. Don't include gettext.h.
3439
34402001-01-07  Bruno Haible  <haible@clisp.cons.org>
3441
3442	Assume <stddef.h>, <stdlib.h>, <string.h>, <locale.h> exist.
3443	* dir-list.c: Likewise.
3444	* gettextp.c: Likewise.
3445	* message.c: Likewise.
3446	* msgcmp.c: Likewise.
3447	* msgcomm.c: Likewise.
3448	* msgfmt.c: Likewise.
3449	* msgmerge.c: Likewise.
3450	* msgunfmt.c: Likewise.
3451	* open-po.c: Likewise.
3452	* po.c: Likewise.
3453	* setlocale.c: Likewise.
3454	* str-list.h: Likewise.
3455	* xget-lex.c: Likewise.
3456	* xgettext.c: Likewise.
3457
34582001-01-06  Bruno Haible  <haible@clisp.cons.org>
3459
3460	* Makefile.am (datadir): Assume DATADIRNAME = share.
3461
34622001-01-06  Bruno Haible  <haible@clisp.cons.org>
3463
3464	* setlocale.c: New file.
3465	* Makefile.am (EXTRA_PROGRAMS): New variable.
3466	(all-local): New target.
3467	(CLEANFILES): New variable.
3468	(tstgettext_SOURCES): New variable.
3469
34702001-01-05  Bruno Haible  <haible@clisp.cons.org>
3471
3472	* Makefile.am (po-gram-gen.h): Don't use $^, not supported by the
3473	SUSV2 "make" specification.
3474	(LDADD): Add @INTLLIBS@. Needed on Solaris without
3475	--with-included-gettext.
3476	* po-lex.c (gram_max_allowed_errors): Change type to
3477	'unsigned int'.
3478
34792001-01-01  Bruno Haible  <haible@clisp.cons.org>
3480
3481	Implement plural form handling.
3482	* message.h (struct message_variant_ty): Add msgstr_len field.
3483	(struct message_ty): Add msgid_plural field.
3484	(message_alloc): Take additional msgid_plural argument.
3485	(message_variant_append): Take additional msgstr_len argument.
3486	* message.c (message_alloc): Take additional msgid_plural argument.
3487	(message_free): Free msgid_plural field.
3488	(message_variant_append): Take additional msgstr_len argument.
3489	(message_copy): Copy msgid_plural as well. Pass msgstr_len.
3490	(message_merge): Likewise.
3491	(message_print): Print plural entries using a different format.
3492	(message_print_obsolete): Likewise.
3493	* msgunfmt.c (string32): Return the string's size as well. Verify
3494	the string is NUL terminated.
3495	(read_mo_file): Split the original string into msgid and msgid_plural.
3496	Pass msgstr_len.
3497	* po-lex.h (msgstr_def): New definition, taken from msgfmt.c.
3498	* po-lex.c (keyword_p): Recognize the msgid_plural keyword.
3499	(po_gram_lex): Accept brackets as single-character tokens.
3500	* po.h (struct po_method_ty): Method 'directive_message' takes
3501	additional arguments 'msgid_plural', 'msgstr_len'.
3502	(po_callback_message): Additional arguments 'msgid_plural',
3503	'msgstr_len'.
3504	* po-hash-gen.y (yyerror): Effectively rename to po_hash_error.
3505	* po-gram-gen.y (yyerror): Effectively rename to po_gram_error,
3506	thus enabling reporting of syntax errors.
3507	(plural_counter): New variable.
3508	(%token): Add MSGID_PLURAL, '[', ']' as new tokens.
3509	(%union): Add new alternative of type 'struct msgstr_def'.
3510	(msgid_pluralform, pluralform, pluralform_list): New productions.
3511	(message): Add plural rules.
3512	* po.c (po_directive_message): Additional arguments 'msgid_plural',
3513	'msgstr_len'.
3514	(po_callback_message): Likewise.
3515	* msgfmt.c (SIZEOF): New macro.
3516	(struct id_str_pair): Add id_len, id_plural, id_plural_len, str_len
3517	fields.
3518	(struct hashtable_entry): Renamed from struct msgstr_def. Add
3519	'msgid_plural', 'msgstr_len' fields.
3520	(format_directive_message): Additional arguments 'msgid_plural',
3521	'msgstr_len'. Verify the validity of the charset field in the header.
3522	Compare msgstr using memcmp, not strcmp.
3523	(check_pair): Additional arguments 'msgid_plural', 'msgstr_len'.
3524	Apply the tests to msgid_plural and each msgstr[i] string.
3525	(format_debrief): Change error message.
3526	(write_table): Store msgid_plural and msgstr_len in msg_arr[], then
3527	output the strings including embedded NULs.
3528	* msgcmp.c (compare_directive_message): Additional arguments
3529	'msgid_plural', 'msgstr_len'.
3530	* msgcomm.c (extract_directive_message): Additional arguments
3531	'msgid_plural', 'msgstr_len'.
3532	* msgmerge.c (merge_directive_message): Additional arguments
3533	'msgid_plural', 'msgstr_len'.
3534	* xget-lex.h (struct xgettext_token_ty): Replace argnum field with
3535	argnum1, argnum2.
3536	* xget-lex.c (xgettext_lex): Add to default keywords: "ngettext:1,2",
3537	"dngettext:2,3", "dcngettext:2,3".
3538	(xgettext_lex_keyword): Accept new syntax "id:argnum1,argnum2".
3539	* xgettext.c (exclude_directive_message): Additional arguments
3540	'msgid_plural', 'msgstr_len'.
3541	(remember_a_message): Return the new message.
3542	(remember_a_message_plural): New function.
3543	(scan_c_file): Extend state machine to allow remembering msgid1 and
3544	msgid2 later.
3545	(extract_directive_message): Additional arguments 'msgid_plural',
3546	'msgstr_len'. Compare msgstr using memcmp, not strcmp.
3547	(construct_header): Update.
3548
35492000-12-31  Bruno Haible  <haible@clisp.cons.org>
3550
3551	* msgfmt.c (format_directive_message): Pass to insert_entry and
3552	find_entry the length including the terminating NUL.
3553	* xget-lex.c (xgettext_lex, xgettext_lex_keyword): Likewise.
3554
35552000-12-31  Bruno Haible  <haible@clisp.cons.org>
3556
3557	* msgunfmt.c (read_mo_file): Recognize "/dev/stdin", not "/dev/stdout".
3558
35592000-12-31  Bruno Haible  <haible@clisp.cons.org>
3560
3561	* str-list.h: Fix typo. Add comments.
3562	* str-list.c: Add comments.
3563
3564	* dir-list.h: Add comments.
3565	* dir-list.c: Likewise.
3566
3567	* domain.h: Remove file.
3568	* msgfmt.c: Incorporate it here. Don't include "domain.h".
3569	* msgunfmt.c: Don't include "domain.h".
3570	* xgettext.c: Likewise.
3571	* Makefile.am (noinst_HEADERS): Remove domain.h.
3572
3573	* open-po.h: New file.
3574	* open-po.c: Include it.
3575	* po-lex.c: Likewise.
3576	* Makefile.am (noinst_HEADERS): Add open-po.h.
3577
3578	* open-po.c (open_po_file): Merge duplicated code.
3579
3580	* po-lex.h: Add comments.
3581	(gram_max_allowed_errors): Change type to 'unsigned int'.
3582	(po_gram_error_at_line): Renamed from gram_error_at_line.
3583	(po_gram_error, po_gram_error_at_line): Use ISO C 99 macro vararg
3584	syntax if possible.
3585	* po-lex.c: Add comments. Don't include "po-gram.h".
3586	(po_gram_error_at_line): Renamed from gram_error_at_line.
3587	* msgmerge.c (main): Initialize gram_max_allowed_errors to UINT_MAX.
3588
3589	* message.h: Add comments.
3590	(enum is_wrap): New type.
3591	(parse_c_width_description_string): Change return type.
3592	(message_ty): Change type of do_wrap field.
3593	* message.c (wrap): Change type of do_wrap argument.
3594	* msgfmt.c (msgfmt_class_ty): Change type of do_wrap field.
3595	* msgmerge.c (merge_class_ty): Change type of do_wrap field.
3596	* msgcomm.c (extract_class_ty): Change types of is_c_format, do_wrap
3597	fields.
3598	* xgettext.c (extract_class_ty): Likewise.
3599	(remember_a_message): Change type of do_wrap.
3600
3601	* pos.h: New file.
3602	* po-lex.h: Include it.
3603	(struct lex_pos_ty): Remove type, now in pos.h.
3604	* message,h: Include pos.h instead of po-lex.h.
3605	* Makefile.am (noinst_HEADERS): Add pos.h.
3606
3607	* po.h: Add comments.
3608
3609	* gettextp.c (main): Use bindtextdomain instead of bindtextdomain__,
3610	and dgettext instead of dgettext__. There is no need to use the
3611	included libintl when GNU gettext or an X/Open gettext or a catgets
3612	has been found in the system's C library.
3613
3614	* ylwrap: Update from automake-1.4.
3615
3616	* FILES: New file.
3617	* Makefile.am (EXTRA_DIST): New variable.
3618
36192000-12-30  Bruno Haible  <haible@clisp.cons.org>
3620
3621	* xgettext.c (scanner_c, scanner_cxx): Remove declarations.
3622
36232000-12-30  Bruno Haible  <haible@clisp.cons.org>
3624
3625	* msgfmt.c (write_table): Pass additional argument &id_len to
3626	iterate_table.
3627
36282000-09-13  Bruno Haible  <haible@clisp.cons.org>
3629
3630	Look into #define bodies.
3631	* xget-lex.c (phaseX_get): Simplify.
3632	(phase6_get): Stop the loop when recognizing a #define directive.
3633	Based on a patch by Martin v. L��wis.
3634
3635	Accept ISO C 99 comment syntax.
3636	* xget-lex.c (cplusplus_comments: Remove variable.
3637	(phase4_getc): Always recognize // comments.
3638	(xgettext_lex_cplusplus): Remove function.
3639	* xget-lex.h (xgettext_lex_cplusplus): Remove declaration.
3640	* xgettext.c (scan_c_file): Remove is_cpp_file argument.
3641	(scanner_c, scanner_cxx): Remove functions.
3642	(language_to_scanner): Call scan_c_file directly.
3643
36442000-08-23  Bruno Haible  <haible@clisp.cons.org>
3645
3646	* po-lex.c (ALERT_CHAR): New constant macro.
3647	(control_sequence): Accept \a. Don't accept \X.
3648
36492000-08-23  Ulrich Drepper  <drepper@redhat.com>
3650
3651	* po-lex.c (control_sequence): Unget character which ended \x..
3652	sequence.
3653
36542000-07-28  Bruno Haible  <haible@clisp.cons.org>
3655
3656	* xget-lex.h (enum xgettext_token_type_ty): Rename
3657	xgettext_token_type_lp/rp to xgettext_token_type_lparen/rparen.
3658	* xget-lex.c (enum token_type_ty): Rename token_type_lp/rp to
3659	token_type_lparen/rparen.
3660	(xgettext_any_keywords): `keywords' is now a hash table.
3661	* xgettext.c (construct_header): Change two printf directives %02d
3662	to %02ld.
3663
36641998-07-17  Paul Eggert  <eggert@twinsun.com>
3665
3666	Add support for user-specified argument numbers for keywords.
3667	Extract all strings from a keyword arg, not just the first one.
3668	Handle parenthesized commas inside keyword args correctly.
3669	Warn about nested keywords.
3670
3671	* xgettext.c (scan_c_file):
3672	Warn about nested keywords, e.g. _(_("xxx")).
3673	Warn also about not-yet-implemented but allowed nesting, e.g.
3674	dcgettext(..._("xxx")..., "yyy").
3675	Get all strings in a keyword arg, not just the first one.
3676	Handle parenthesized commas inside keyword args correctly.
3677
3678	* xget-lex.h (enum xgettext_token_type_ty):
3679	Replace xgettext_token_type_keyword1 and
3680	xgettext_token_type_keyword2 with just plain
3681	xgettext_token_type_keyword; it now has argnum value.
3682	Add xgettext_token_type_rp.
3683	(struct xgettext_token_ty): Add argnum member.
3684	line_number and file_name are now also set for
3685	xgettext_token_type_keyword.
3686	(xgettext_lex_keyword): Arg is const char *.
3687
3688	* xget-lex.c: Include "hash.h".
3689	(enum token_type_ty): Add token_type_rp.
3690	(keywords): Now a hash table.
3691	(phase5_get): Return token_type_rp for ')'.
3692	(xgettext_lex, xgettext_lex_keyword): Add support for keyword argnums.
3693	(xgettext_lex): Return xgettext_token_type_rp for ')'.
3694	Report keyword argnum, line number, and file name back to caller.
3695
36962000-05-06  Ulrich Drepper  <drepper@redhat.com>
3697
3698	* Makefile.am (EXTRA_DIST): Replace po-gram.gen.h and po-hash.gen.h
3699	with po-gram-gen.h and po-hash-gen.h.
3700	(YACC): Define as @YACC@ -d.
3701	(YFLAGS): Removed.
3702	(msgcmp_SOURCES): Replace dependencies on po-gram.gen.c and
3703	po-hash.gen.c with po-gram-gen.y and po-hash-gen.y.
3704	(msgmerge_SOURCES): Likewise.
3705	(xgettext_SOURCES): Likewise.
3706	(msgcomm_SOURCES): Likewise.
3707	Add rule to built po-gram-gen2.h and make po-lex.o depend on it.
3708	Remove rules to generate po-gram.gen.c and po-hash.gen.c.
3709	Patches by Jim Meyering.
3710
3711	* po-lex.c: Include "po-gram-gen2.h" instead of "po-gram.gen.h".
3712
3713	* message.c (message_list_search_fuzzy_inner): Define static.  Take
3714	extra parameter with best weight so far.
3715	(message_list_search_fuzzy): New function.
3716	(message_list_list_alloc): New function.
3717	(message_list_list_append): New function.
3718	(message_list_list_append_list): New function.
3719	(message_list_list_search): New function.
3720	(message_list_list_search_fuzzy): New function.
3721	(message_list_list_free): New function.
3722	* message.h (message_list_list_ty): Define type.
3723	(message_list_list_alloc): Add prototype.
3724	(message_list_list_free): Likewise.
3725	(message_list_list_append): Likewise.
3726	(message_list_list_append_list): Likewise.
3727	(message_list_list_search): Likewise.
3728	(message_list_list_search_fuzzy): Likewise.
3729	* msgmerge.c: Implement --compendium/-C option.
3730	* xget-lex.c (xgettext_any_keywords): New function.
3731	* xget-lex.h (xgettext_any_keywords): Add prototype.
3732	* xgettext.c: Use xgettext_any_keywords to see whether keywords are
3733	defined.
3734	Patches by Peter Miller.
3735
37361998-05-15  Ulrich Drepper  <drepper@cygnus.com>
3737
3738	* po-lex.c (control_sequence): Replace illegal with invalid.
3739
37401998-05-01 08:47  Ulrich Drepper  <drepper@cygnus.com>
3741
3742	* gettext-0.10.35 released.
3743
37441998-04-30  Ulrich Drepper  <drepper@cygnus.com>
3745
3746	* dir-list.c: Update Peter Miller's mail address.
3747	* dir-list.h: Likewise.
3748	* message.c: Likewise.
3749	* message.h: Likewise.
3750	* msgcmp.c: Likewise.
3751	* msgcomm.c: Likewise.
3752	* msgmerge.c: Likewise.
3753	* po-gram.h: Likewise.
3754	* po-gram.y: Likewise.
3755	* po-hash.h: Likewise.
3756	* po-hash.y: Likewise.
3757	* po-lex.c: Likewise.
3758	* po-lex.h: Likewise.
3759	* po.c: Likewise.
3760	* po.h: Likewise.
3761	* str-list.c: Likewise.
3762	* str-list.h: Likewise.
3763	* xget-lex.c: Likewise.
3764	* xget-lex.h: Likewise.
3765
37661998-04-30  Ulrich Drepper  <drepper@cygnus.com>
3767
3768	* msgfmt.c: Fix typo in --help text.
3769	Reported by Jan.Djarv@mbox200.swipnet.se.
3770
37711998-04-03 01:18 1998  Philippe De Muyter  <phdm@macqel.be>
3772
3773	* str-list.h (stddef.h): Include that file only if STDC_HEADERS.
3774	Otherwise include sys/types.h and stdio.h.
3775	* msgmerge.c (string.h): Include that file if HAVE_STRING_H, not
3776	if STDC_HEADERS.
3777
37781998-04-29  Ulrich Drepper  <drepper@cygnus.com>
3779
3780	* message.c: Use unsigned char for various local variables.
3781	* xgettext.c (comment_tag): Define as unsigned char *.
3782	For loosing Solaris systems.  Patches by Jim Meyering.
3783
3784	* msgfmt.c: Use extra braces in if to shut up gcc.
3785	* po-lex.h: Don't declare function po_gram_error and
3786	gram_error_at_line if macros with the same names are defined.
3787	* Makefile.am (MAINTAINERCLEANFILES): New variable.
3788	Patches by Jim Meyering.
3789
37901998-04-27  Ulrich Drepper  <drepper@cygnus.com>
3791
3792	* xgettext.c: Update year and bug report address.  Add little
3793	explanation in --help messages.
3794	* msgfmt.c: Likewise.
3795
3796	* msgmerge.c: Update year and bug report address.
3797	* msgcomm.c: Likewise.
3798	* msgcmp.c: Likewise.
3799	* msgunfmt.c: Likewise.
3800
38011997-08-31 22:20  Ulrich Drepper  <drepper@cygnus.com>
3802
3803	* msgfmt.c (format_directive_message): Count fuzzy messages as
3804	fuzzy, even if they are not written to the output file.
3805
38061997-08-18 13:47  Philippe De Muyter  <phdm@info.ucl.ac.be>
3807
3808	* msgcomm.c (sys/types.h): File included.
3809
38101997-08-15 12:38  Ulrich Drepper  <drepper@cygnus.com>
3811
3812	* xgettext.c: Include <sys/param.h> to define MIN/MAX for HP/UX.
3813	Patch by Kaveh R. Ghazi <ghazi@caip.rutgers.edu>.
3814
3815	* msgfmt.c: Change DEFAULT_ALIGNMENT to DEFAULT_OUTPUT_ALIGNMENT
3816	to avoid clash with macro with same name in obstack.c.
3817	Reported by Akim Demaille <demaille@inf.enst.fr>.
3818
38191997-08-01 15:48  Ulrich Drepper  <drepper@cygnus.com>
3820
3821	* Makefile.am (AUTOMAKE_OPTIONS): Require version 1.2.
3822
38231997-05-07 04:21  Ulrich Drepper  <drepper@cygnus.com>
3824
3825	* msgcomm.c (main): Print author in --version message.
3826	* msgunfmt.c: Likewise.
3827	* msgcmp.c: Likewise.
3828	* msgmerge.c: Likewise.
3829	* msgfmt.c: Likewise.
3830	* xgettext.c: Likewise.
3831	* gettextp.c: Likewise.
3832
38331997-05-01 02:33  Ulrich Drepper  <drepper@cygnus.com>
3834
3835	* msgcmp.c (main): Update copyright.
3836	* msgunfmt.c (main): Likewise.
3837	* msgcomm.c (main): Likewise.
3838	* msgmerge.c (main): Likewise.
3839	* msgfmt.c (main): Likewise.
3840	* gettextp.c (main): Likewise.
3841
3842	* msgcomm.c: Fix comment about default output (Jan Djarv).  Split
3843	help message.
3844
38451997-03-31 16:09  Ulrich Drepper  <drepper@cygnus.com>
3846
3847	* msgcomm.c (usage): Use program_name as argument for print to
3848	print message, not stdout.
3849	Patch by Jan Djarv <jan.djarv@mbox200.swipnet.se>.
3850
3851Mon Mar 10 06:18:58 1997  Ulrich Drepper  <drepper@cygnus.com>
3852
3853	* xgettext.c: Implement generic language scanner handling.
3854
3855	* xget-lex.c (phase7_getc): Better comments.
3856	(phase5_get): Print warnings about unterminated strings and
3857	character constants.
3858
3859	* po-lex.c (po_gram_error): Don't count continuation lines in
3860	messages as errors.
3861	(gram_error_at_line): Likewise.
3862	* po-lex.h: Likewise for macro versions.
3863
3864	* po-hash.y: Correct typo.
3865
3866	* msgunfmt.c: Implement --force-po option.
3867
3868	* msgmerge.c: Implement --force-po, --no-location, and
3869	--add-location options.
3870
3871	* msgfmt.c (format_directive_message): If messages are duplicated
3872	and translations are different this is a fatal error.
3873
3874	* msgcmp.c (compare_directive_message): Use correct format for
3875	continuation line in message.
3876
3877	* message.h: Add prototype for message_list_delete_nth.
3878
3879	* message.c: Add message_list_delete_nth function.
3880
3881	* Makefile.am (bin_PROGRAMS): Add msgcomm.  (l): New variable.
3882	Set to `l' is using libtool.  (LDADD): Change for the needs of
3883	libtool.  (msgcomm_SOURCES): New variable.
3884
3885	* msgcomm.c: New file.
3886
3887Wed Dec  4 01:58:10 1996  Ulrich Drepper  <drepper@cygnus.com>
3888
3889	* Makefile.am (LDADD): Change for use of libtool.
3890
3891Tue Dec  3 18:08:46 1996  Ulrich Drepper  <drepper@cygnus.com>
3892
3893	* xget-lex.c (phase7_getc): Return \n when newline is seen, not
3894	P7_NEWLINE.
3895
3896	* xgettext.c (main): Implement --foreign-user flag.
3897
3898	* msgcmp.c (main): Change --version output to what is required by
3899	GNU standards.  (usage): Correct bug report address.
3900	* msgfmt.c: Likewise.
3901	* msgunfmt.c: Likewise.
3902	* msgmerge.c: Likewise.
3903	* xgettext.c: Likewise.
3904	* gettextp.c: Likewise.
3905
3906Sat Sep 14 04:28:09 1996  Ulrich Drepper  <drepper@cygnus.com>
3907
3908	* msgunfmt.c (usage): Put bug report address in separate string.
3909	* msgmerge.c (usage): Likewise.
3910	* msgcmp.c (usage): Likewise.
3911	* xgettext.c (usage): Likewise.
3912	* msgfmt.c (usage): Likewise.
3913	* gettextp.c (usage): Likewise.
3914
3915Thu Sep 12 21:40:48 1996  Andreas Schwab  <schwab@issan.informatik.uni-dortmund.de>
3916
3917	* msgfmt.c (check_pair): Fix error messages.
3918
3919Sat Aug 31 14:05:29 1996  Ulrich Drepper  <drepper@cygnus.com>
3920
3921	* msgunfmt.c (usage): Add hint about where to report bugs to.
3922	* msgmerge.c (usage): Likewise.
3923	* msgcmp.c (usage): Likewise.
3924	* xgettext.c (usage): Likewise.
3925	* msgfmt.c (usage): Likewise.
3926	* gettextp.c (usage): Likewise.
3927
3928Sat Aug 31 04:49:38 1996  Ulrich Drepper  <drepper@cygnus.com>
3929
3930	* gettextp.c: Don't include <libintl.h> since this can generate
3931	conflicts.
3932
3933Mon Jul 15 02:21:25 1996  Ulrich Drepper  <drepper@cygnus.com>
3934
3935	* msgfmt.c: Major change: msgfmt now does not write fuzzy messages
3936	out by default.  The option -f/--use-fuzzy must be used to
3937	explicitely tell to do it.
3938
3939Sat Jul 13 20:23:34 1996  Ulrich Drepper  <drepper@cygnus.com>
3940
3941	* xget-lex.c (phase6_get): Reset selected comments on every
3942	preprocessor directive.
3943
3944Fri Jul 12 12:38:49 1996  Ulrich Drepper  <drepper@cygnus.com>
3945
3946	* xgettext.c (main): Remove `v' from short option list.
3947
3948Sat Jul  6 11:22:47 1996  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
3949
3950	* message.c (message_merge): Add some casts to (char *) in alloca
3951	calls.  Make KNOWN_FIELDS array static.
3952
3953Sat Jul  6 11:15:43 1996  Jim Meyering  <meyering@na-net.ornl.gov>
3954
3955	* msgfmt.c (check_pair): Correct English in Message.
3956
3957Fri Jul  5 17:27:11 1996  Ulrich Drepper  <drepper@cygnus.com>
3958
3959	* message.c (message_merge): Terminate string for UNKNOWN fields
3960	in header entry.
3961
3962	* message.c (message_merge): Don't print POT-Revision-Date twice.
3963
3964	* msgfmt.c: Implement --statistics.
3965	Suggested by Santiago Vila Doncel.
3966
3967	* msgfmt.c: and change message checking so that tests for leading
3968	and trailing \n are always performed.
3969	Suggested by Fran��ois Pinard.
3970
3971Wed Jun 19 02:42:52 1996  Ulrich Drepper  <drepper@cygnus.com>
3972
3973	* message.c (message_merge): Implement sorting of header entry
3974	lines.
3975
3976Sat Jun 15 19:46:50 1996  Ulrich Drepper  <drepper@cygnus.com>
3977
3978	* msgmerge.c (usage): Correct -w option in help string (was -W).
3979
3980Tue Jun 11 15:28:44 1996  Ulrich Drepper  <drepper@cygnus.com>
3981
3982	* xget-lex.c, xget-lex.h (xgettext_lex_comment): Change parameter
3983	type to size_t.
3984
3985	* po-lex.h, po-lex.c (gram_max_allowed_errors): Change type to
3986	size_t.
3987
3988	* message.c, message.h (message_page_width_set): Change parameter
3989	type to size_t.
3990
3991	* Makefile.am (AUTOMAKE_OPTIONS): Add variable.  Must be defined
3992	in all subdirs.
3993
3994Mon Jun 10 02:53:52 1996  Marcus Daniels  <marcus@sysc.pdx.edu>
3995
3996	* dir-list.c: Include system.h in order to get size_t and NULL.
3997
3998Thu Jun  6 01:59:31 1996  Ulrich Drepper  <drepper@cygnus.com>
3999
4000	* str-list.h: Include <stddef.h> to get size_t defined.
4001	Reported by Philippe Defert.
4002
4003	* Makefile.am (LDADD): Remove `@INTLLIBS@ ../lib/libnlsut.a
4004	@LIBS@'.  This is not necessary anymore.
4005
4006Wed Jun  5 00:00:08 1996  Ulrich Drepper  <drepper@cygnus.com>
4007
4008	* xgettext.c, msgunfmt.c (usage): Correct --page-width to --width
4009	in usage string.
4010
4011	* open-po.c (open_po_file): Implement search path for PO files.
4012
4013	* xget-lex.c (xgettext_lex_open): Implement search path for PO
4014	files.  Patch by Peter Miller.
4015
4016	* message.h (struct message_ty): Add do_wrap member.
4017	Add prototypes for parse_c_width_description_string and
4018	message_page_width_set.
4019
4020	* xgettext.c: Implement --width option to specify width for which
4021	line wrapping is done.  Change --directory option implement search
4022	path instead of single directory.  Patch by Peter Miller.
4023
4024	* message.c (wrap): Implement no-wrap special comment.  If given
4025	no wrapping is performed.
4026
4027	* gettextp.c, msgcmp.c, msgfmt.c, msgmerge.c, msgunfmt.c,
4028	xgettext.c: Add `no-wrap' comments at usage message strings.
4029
4030	* msgcmp.c: Implement --directory to specify search path for .po
4031	files.  Patch by Peter Miller.
4032
4033Tue Jun  4 23:57:59 1996  Ulrich Drepper  <drepper@cygnus.com>
4034
4035	* msgfmt.c: Implement --width option to specify width for which
4036        line wrapping is done.  Patch by Peter Miller.
4037
4038	* msgmerge.c: Implement --width option to specify width for which
4039	line wrapping is done.  Implement --directory to specify search
4040	path for .po files.  Patch by Peter Miller.
4041
4042	* msgunfmt.c: Implement --width option to specify width for which
4043        line wrapping is done.  Patch by Peter Miller.
4044
4045Tue Jun  4 00:12:25 1996  Ulrich Drepper  <drepper@cygnus.com>
4046
4047	* po-hash.y: Add new clause where in GNU style format the name is
4048        `file'.
4049
4050	* Makefile.am (noinst_HEADERS): Add dir-list.h.
4051	(msgcmp_SOURCES, msgfmt_SOURCES, msgmerge_SOURCES, xgettext_SOURCES):
4052	Add dir-list.c
4053
4054Mon Jun  3 00:43:07 1996  Ulrich Drepper  <drepper@cygnus.com>
4055
4056	* message.h: Add new parameter for message_list_print.
4057
4058	* msgmerge.c, msgunfmt.c (main): Add new parameter to
4059	message_list_print.  Set to 0 because we don't need to know about
4060	the reasoning.
4061
4062	* xgettext.c: Implement new option --debug which determines
4063	whether a difference is made between c-format and
4064	possible-c-format.  Default is to print c-format for both cases.
4065
4066	* message.c (make_c_format_description_string): Take additional
4067	parameter DEBUG.  If nonzero, distinguish between c-format and
4068	possible-c-format.
4069
4070	* message.c (message_print_obsolete): Copy precious translator
4071	comment to output file.  Reported by Santiago Vila Doncel.
4072
4073	* dir-list.c: Include file now is called dir-list.h, not
4074        dir_list.h.
4075
4076	* message.c: Include <limits.h>.
4077
4078	* Makefile.am (EXTRA_DIST): Add variable to distribute po-gram.y
4079        and po-hash.y.
4080
4081	* Makefile.am (msgfmt_SOURCES): Fix typo: msgfmt.o -> msgfmt.c.
4082
4083Sat Jun  1 04:33:48 1996  Ulrich Drepper  <drepper@cygnus.com>
4084
4085	* Makefile.in: Remove support for tupdate.  msgmerge is stable
4086        now.
4087
4088Wed Apr 10 01:20:49 1996  Ulrich Drepper  <drepper@myware>
4089
4090	* message.c (message_print_obsolete): Don't print
4091	c-format/no-c-format flags for obsolete entries.
4092
4093	* xgettext.c (construct_header): Change DIST to ZONE in header
4094        entry template.
4095
4096	* message.c (message_merge): Insert POT-Creation-Date field before
4097        PO-Revision-Date.
4098
4099Tue Apr  9 17:13:34 1996  Ulrich Drepper  <drepper@myware>
4100
4101	* xgettext.c (construct_header): Move POT-Creation-Date line
4102	before PO-Revision-Date line.
4103
4104Fri Apr  5 12:07:19 1996  Ulrich Drepper  <drepper@myware>
4105
4106	* msgmerge.c: Implement --quiet option to prevent dots printed as
4107        progress report.
4108	(merge): Don't print dots if `quiet'.
4109
4110	* msgmerge.c (merge): Nicer statistics message.
4111
4112	* message.c (message_merge): Update POT-Creation-Date field in
4113	header entry from contents in reference file.
4114
4115	* msgfmt.c (format_directive_message): Better test for unchanged
4116	fields in header entry.
4117
4118	* xgettext.c (difftm): Is back.
4119	(construct_header): Print distance to GMT in POT file time stamp.
4120
4121	* xgettext.c (construct_header): Print leading comment and fuzzy
4122        flag.
4123
4124	* message.c (message_print): Allow translator comment to fill more
4125        than one line.
4126
4127	* xgettext.c (construct_header): Introduce POT-Creation-Date
4128        field.
4129
4130Fri Apr  5 03:05:07 1996  Ulrich Drepper  <drepper@myware>
4131
4132	* msgmerge.c (merge): Rename empty in missing.  There might be
4133	more empty messages which are not missed.
4134
4135	* msgmerge.c (merge): Terminate `.' line if no verbose output is
4136        selected.
4137
4138	* msgmerge.c (main): Implement -v option to increase verbosity
4139        level.
4140	(merge): Print `.' to signal ongoing work.
4141	Unless verbosity level > 1 don't print information about fuzzy and
4142	missing matches.  Instead print statistics at the end.
4143	Suggested by Fran��ois Pinard and Santiago Vila Doncel.
4144
4145Thu Apr  4 11:59:20 1996  Ulrich Drepper  <drepper@myware>
4146
4147	* xgettext.c (difftm): Remove unused function.
4148	(construct_header): Don't fill Last-Translator field with information
4149	about curent user but instead constant text mentioning xgettext.
4150
4151	* message.c (message_list_search_fuzzy): Initialize mp before
4152        using it.
4153
4154	* message.c (message_print): Normalize printed messages even more.
4155	Don't print fuzzy flag is msgstr is empty.
4156
4157	* message.c (message_list_search_fuzzy): Don't try to match
4158	against msgid if none if the msgstr of this message in non-empty.
4159
4160Thu Apr  4 01:57:37 1996  Ulrich Drepper  <drepper@myware>
4161
4162	* msgfmt.c (format_directive_message): When testing header entry
4163	also check whether they still contain the initial values.
4164	Suggested by Fran��ois Pinard.
4165
4166Tue Apr  2 16:19:42 1996  Ulrich Drepper  <drepper@myware>
4167
4168	* xgettext.c (main): Add "warning" to message about unknown input
4169        file type.
4170
4171	* Makefile.in (all-gettext): New goal.  Same as all.
4172
4173	* xgettext.c (usage): Rearange help strings.  One of them was too
4174	long for some dumb catgets programs.  Reported by Marcus Daniels.
4175
4176	* msgfmt.c (format_directive_message): Check for standard header
4177        entry fields.
4178
4179	* xgettext.c (construct_header): MIME-VERSION should be written
4180        MIME-Version.
4181
4182	* msgmerge.c (main): Don't recognize -f option anymore.  This is
4183        the default now.
4184
4185	* msgfmt.c (format_debrief): New function.  Warn if no header
4186        entry is found.
4187	(format_directive_message): Remember if header entry is found.
4188
4189Tue Apr  2 11:12:15 1996  Ulrich Drepper  <drepper@myware>
4190
4191	* msgfmt.c (format_constructor): New function.  Initialize
4192        is_c_format field.
4193	(format_directive_message): Clear is_c_format field for next message
4194	at the end.
4195
4196	* xgettext.c, po-lex.h, po-lex.c, po-gram.y, msgmerge.c, msgfmt.c,
4197	msgcmp.c: Use gram_error_at_line instead of gram_error_with_loc
4198	and error_at_line instead of error_with_loc.  Roland does not like
4199	my English.
4200
4201Tue Apr  2 03:27:34 1996  Ulrich Drepper  <drepper@myware>
4202
4203	* msgunfmt.c (main): Removed -S option.  People should think twice
4204	before using this and so are forced to use the long version.
4205
4206Tue Apr  2 03:25:56 1996  Fran��ois Pinard  <pinard@iro.umontreal.ca>
4207
4208	* msgunfmt.c (usage): Remove Tab character from message.
4209
4210Tue Apr  2 03:15:16 1996  Marcus Daniels  <marcus@sysc.pdx.edu>
4211
4212	* message.c (significant_c_format_p): If is_c_format is `no' this
4213        is significant.
4214
4215Tue Apr  2 03:12:24 1996  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
4216
4217	* po.c (po_comment_filepos): Make definition static as declaration
4218        was before.
4219
4220	* msgunfmt.c (usage): Add missing \n to help string.
4221
4222Mon Apr  1 02:37:45 1996  Ulrich Drepper  <drepper@myware>
4223
4224	* xgettext.c (main): When recognizing file type, default to C
4225	instead of regarding it as an error.  Suggested by Marcus Daniels.
4226
4227	* po.c (po_callback_comment): For now recognize #! also as special
4228        comment.
4229
4230	* msgmerge.c (merge): Remove --force option.  We now always write
4231	the result.  It makes no sense to reject the output because some
4232	messages are not matching.
4233
4234	* po-lex.c (po-gram_error, gram_error_with_loc): Use
4235	error_message_count instead of gram_nerrors.
4236	(gram_nerrors): Remove definition.
4237
4238	* po-lex.h (po-gram_error, gram_error_with_loc): Use
4239	error_message_count instead of gram_nerrors.
4240
4241	* xgettext.c: Remove verbose option and variable.
4242	(test_whether_c_format): Don't return `possible' is string
4243	contains no format specifier.
4244
4245Sun Mar 31 23:23:40 1996  Ulrich Drepper  <drepper@myware>
4246
4247	* xget-lex.c (xgettext_lex): Fix typo.  Reported by Fran��ois
4248        Pinard.
4249
4250Thu Mar 28 19:01:22 1996  Ulrich Drepper  <drepper@myware>
4251
4252	* po.c (po_callback_comment): Correct handling of special
4253	comments.  Give whole comment to callback function instead of
4254	tokenized form.
4255
4256Thu Mar 28 18:37:49 1996  Ulrich Drepper  <drepper@myware>
4257
4258	* xgettext.c (remember_a_message): Always look through comments
4259	because we have to look for c-format comments.
4260
4261	* message.h, msgmerge.c, xgettext.c, message.c, msgfmt.c:
4262	Implement more detailed C format string handling.  Basically coded
4263	by Marcus Daniels.
4264
4265Thu Mar 28 16:52:56 1996  Marcus Daniels  <marcus@sysc.pdx.edu>
4266
4267	* Makefile.in (MSGFMT_OBJ): Add message.o.
4268
4269Wed Mar 27 03:16:01 1996  Ulrich Drepper  <drepper@myware>
4270
4271	* xget-lex.c (xgettext_lex): Correct implementation of comments
4272        grouped with messages.
4273
4274Tue Mar 26 21:23:54 1996  Ulrich Drepper  <drepper@myware>
4275
4276	* po.c (po_callback_comment): Remove unused variable string.
4277	Include <ctype.h> because isspace is used.
4278
4279	* message.h (message_list_print): Undo change of Mon Mar 25
4280	03:34:44 1996.  Don't print trailing comment.  Remove additional
4281	argument.
4282
4283	* message.c (message_list_print): Undo change of Mon Mar 25
4284	03:34:44 1996.  Don't print trailing comment.  We now have a
4285	correct implementation of obsolete entry handling.
4286	* msgmerge.c: Ditto.
4287
4288	* po-lex.h: Add prototype for po_lex_pass_obsolete_entries.
4289
4290	* po-lex.c (po_gram_lex): Implement handling of comments for
4291        obsolete entries (#~).
4292
4293	* msgunfmt.c, xgettext.c (main): Undo change of Mon Mar 25
4294	03:34:44 1996.  Remove added argument to message_list_print again.
4295
4296	* po-lex.c (po_gram_lex): Small optimization in string collection.
4297
4298	* message.c (message_print_obsolete): Obsolete messages are now
4299	preceded by #~ on each line.
4300
4301	* xgettext.c (remember_a_message): Fix bug with dereferencing
4302	dangling pointer.  This caused xgettext test 1 to fail.
4303
4304	* xgettext.c (construct_header): Update format for file header.
4305
4306	* xgettext.c (extract_directive_message): Don't report error when
4307	message variant exists but the value is the same.  Reported by
4308	Roland McGrath.
4309
4310	* message.c (wrap): Only write characters in escape notation if
4311	explicitely wanted or if it is one of the well known escapes like
4312	\n.
4313
4314	* msgunfmt.c (main): Adopt interface to GNU coding standard.  All
4315	given files on command line are input files.  Output by default is
4316	written to standard output and can be redirected using -o.
4317
4318Mon Mar 25 04:25:42 1996  Ulrich Drepper  <drepper@myware>
4319
4320	* message.c, message.h (message_list_print): Parameter filename is
4321        const.
4322
4323	* message.c (wrap): Change line break behaviour a bit.  While it
4324	is reasonable to break long line containing #: comments
4325	immediately when reaching the the limit, this could lead to unnice
4326	results for the strings in msgid and msgstr.  The programmer
4327	usually knows why the lines are that long.
4328
4329	So we break for now after reaching 2 * PAGE_WIDTH instead of
4330        PAGE_WIDTH.
4331
4332	* message.c (message_list_print): Print blank line before trailing
4333        comments.
4334
4335	* message.c (message_print_obsolete): Don't print anything for
4336	obsolete entries with empty msgstr.
4337
4338Mon Mar 25 03:34:44 1996  Ulrich Drepper  <drepper@myware>
4339
4340	* msgunfmt.c (main): Make program by default read from stdin and
4341	by default write to stdout in the appropriate argument is not
4342	given.  Suggested by Fran��ois Pinard.
4343
4344	* msgfmt.c (format_directive_domain): Only check for correct
4345	format string elements is special comment contains c-format.
4346
4347	* msgfmt.c: Use sizeof instead of strlen to determine length of
4348	constant string.
4349
4350	* xgettext.c: Implement generation of c-format special comments.
4351
4352	* msgunfmt.c (main): Call message_list_print with additional
4353        argument set to NULL.
4354
4355	* xgettext.c (main): Call message_list_print with additional
4356        argument set to NULL;
4357	(extract_class_ty): We don't have field comment_special anymore, but
4358	instead flags fuzzy and c_format.
4359	(extract_constructor): Reset fields fuzzy and c_format.
4360	(extract_directive_message): Set flags according to special comments,
4361	not string list.
4362	(extract_comment_special): Set flags according to special comment.
4363
4364	* message.h (message_ty): We don't have field comment_special
4365	anymore.  Instead flags fuzzy and c_format.
4366	(message_comment_special_append): Remove prototype.
4367	(message_list_print): Add new argument to prototype.
4368
4369	* message.c (message_alloc): We don't have the comment_special,
4370        but fuzzy and c_format.
4371	(message_comment_special_append): Remove function.  We now have flags.
4372	(message_copy, message_merge): Copy fuzzy and c_format flag
4373	appropriately.
4374	(message_print, message_print_obsolete): Print special comment using
4375	flags, not string list.
4376	(message_list_print): Additional argument with trailing comments.
4377	Printed at the end if not NULL.
4378
4379	* msgmerge.c (merge_class_ty): New fields fuzzy and c_format for
4380        flags;
4381	(trailing_comments): New global variable for list of trailing
4382	comments in definition file.
4383	(grammar): Takes an additional argument which if NULL gets the list of
4384	trailing comments assigned to.
4385	(main): Call message_list_print with additional argument of trailing
4386	comments.
4387	(merge_comment_special): Recognize fuzzy and c-format special comment.
4388
4389Sun Mar 24 17:35:26 1996  Ulrich Drepper  <drepper@myware>
4390
4391	* xgettext.c (usage): Option --output-suffix does not exist
4392        anymore.
4393
4394	* msgmerge.c (usage): --strict does not have short form -S.
4395
4396	* message.h (message_ty): New field `obsolete'.
4397
4398	* msgmerge.c (merge): Change behaviour not not matched entries.
4399	Instead of giving a message write them out at the end of the
4400	regular output and precede each line with `# '.
4401
4402	* message.c (message_list_print): Handle obsolete entries
4403	separately by printing them at the end and preceded by `# '.
4404	(message_print_obsolete): New function to print obsolete entries.
4405
4406	* Makefile.in ($(PROGRAMS)): Add generated libraries as
4407        dependencies for programs.
4408
4409	* Makefile.in (PROGRAMS): Remove msgjoin.
4410
4411Sun Mar 24 01:03:32 1996  Ulrich Drepper  <drepper@myware>
4412
4413	* xgettext.c (extract_comment_filepos): Only add line comment if
4414        requested by -n option.
4415
4416	* po.c (po_callback_comment): Short by one bug in special comment
4417        entry copying.
4418
4419	* po.c (po_callback_comment): Handle special comments.  Separate
4420	them into a list of comma separate entries.
4421
4422	* message.c (message_print): Format of lines containing fuzzy
4423	comments et.al. is now `#, xxx'.
4424
4425	* Makefile.in: msgjoin program is not anymore generated.
4426
4427	* xgettext.c: First step to implementing general input file
4428	handling.  The program now recognizes the file type by the file
4429	name extension and uses the appropriate function.  For now two
4430	file types are recognized: C/C++ and PO.  Especially handling PO
4431	files make the msgjoin program obsolete.
4432
4433Sat Mar 23 01:50:00 1996  Ulrich Drepper  <drepper@myware>
4434
4435	* msgfmt.c (verbose): Rename to verbose_level.
4436	(main): Increment verbose_level each time -v option is given.
4437	(format_directive_domain): Print some of the diagnostic messages only
4438	if verbosity level is > 1.  Suggested by Fran��ois Pinard for a
4439	better interface to PO mode.
4440
4441	* xgettext.c (scan_c_file): Extract all string if `extract-all'
4442	option is given.  Reported by Roland McGrath.
4443
4444Thu Mar 14 14:55:20 1996  Ulrich Drepper  <drepper@myware>
4445
4446	* msgfmt.c (format_comment_special): Be prepared that special
4447	comment contains more than one entry, separated by commas.
4448
4449	* message.c (message_print): Special comments are now written in a
4450	line, separated by commas.
4451
4452	* msgmerge.c (merge): Replace `INEXACT' with `fuzzy'.
4453
4454Thu Mar 14 11:50:48 1996  Marcus Daniels  <marcus@sysc.pdx.edu>
4455
4456	* po-hash.h (po_hash): Change __P to PARAMS in prototype.
4457
4458Fri Mar  1 13:35:01 1996  Ulrich Drepper  <drepper@myware>
4459
4460	* msgfmt.c (main): Set error_one_per_line to 1 to prevent more
4461	than one error message per line.  Suggested by Fran��ois Pinard.
4462
4463	* po-lex.h (po_gram_error): Don't write source file name in fatal
4464        message.
4465	(po_gram_error_with_loc): Ditto.
4466
4467	* po-lex.c (lex_close): Don't write source file name in fatal
4468        message.
4469	(po_gram_error): Ditto.
4470	(po_gram_error_with_loc): Ditto.
4471
4472Fri Mar  1 00:30:49 1996  Ulrich Drepper  <drepper@myware>
4473
4474	* po-lex.h: Use PARAMS instead of __P in header declarations.
4475
4476	* msgcmp.c (compare_methods): Set new field comment_special to
4477        NULL.
4478
4479	* msgjoin.c (join_methods): Set new field comment_special to NULL.
4480
4481	* xgettext.c (exclude_methods): Set new field comment_special to
4482        NULL.
4483
4484	* po.h (struct po_method_ty): New field comment_special.
4485	(po_directive_domain, po_directive_message, po_parse_brief,
4486	po_parse_debrief, po_comment, po_comment_dot, po_comment_filepos):
4487	Remove prototypes.  Now are local functions.
4488
4489	* po.c (po_parse_brief, po_parse_debrief, po_directive_domain,
4490	po_directive_message, po_comment, po_comment_dot,
4491	po_comment_filepos): Declare functions as local and add
4492	prototypes.
4493	(po_comment_special): New function.
4494	(po_callback_comment): For special comments call po_comment_special.
4495
4496	* msgmerge.c (usage): Add --force in help message.
4497	(merge_methods): Set special comment callback to NULL.
4498
4499	* po-lex.c (lex_open): Don't set pass_comments to 0.  This has to
4500	be done in upper layer functions.
4501	(po_gram_lex): Also pass #! comments up.
4502
4503	* msgfmt.c (main): Make lexer pass comments up.
4504	(format_comment_special): New function.  Warns about `#! INEXACT'
4505	comments.
4506	(format_methods): Add callback for special comment.
4507
4508Wed Feb 14 01:56:14 1996  Ulrich Drepper  <drepper@myware>
4509
4510	* xgettext.c (main): Remove option --output-suffix.  When default
4511	domain name is "-" write to stdout.
4512
4513Mon Feb 12 02:20:09 1996  Ulrich Drepper  <drepper@myware>
4514
4515	* xgettext.c (main): Implement --output-suffix parameter to
4516	determine alternative form of suffix for output file.
4517
4518	* xgettext.c, msgjoin.c, msgmerge.c, msgunfmt.c (main): Add
4519        additional argument to message_list_print call: control output in
4520        case of empty PO file.
4521	* message.c (message_list_print): Implement FORCE parameter.
4522	* message.h: Change prototype.
4523
4524Sun Jan 21 17:24:56 1996  Ulrich Drepper  <drepper@myware>
4525
4526	* Makefile.in (install-exec): Include empty else case for case
4527	when Perl is not available.  Reported by John David Anglin.
4528
4529Sat Dec 23 12:41:43 1995  Jun Young  <bangjy@nownuri.nowcom.co.kr>
4530
4531	* gettextp.c (usage): Short option for version info is -V.
4532
4533Tue Dec 19 22:10:12 1995  Ulrich Drepper  <drepper@myware>
4534
4535	* Makefile.in (Makefile, tupdate): Explicitly use $(SHELL) for
4536        running shell scripts.
4537
4538Sat Dec  9 17:06:11 1995  Ulrich Drepper  <drepper@myware>
4539
4540	* xgettext.c, xget-lex.h, xget-lex.c, str-list.h, po.h, po.c,
4541	po-lex.c, po-hash.y, po-gram.h, open-po.c, msgunfmt.c, msgmerge.c,
4542	msgjoin.c, msgfmt.c, msgcmp.c, message.h, message.c, gettextp.c:
4543	Use PARAMS instead of __P.  Suggested by Roland McGrath.
4544
4545Fri Dec  8 01:38:40 1995  Ulrich Drepper  <drepper@myware>
4546
4547	* Makefile.in (PROGRAMS): Add definitions for new msgjoin program.
4548
4549	* msgjoin.c: Initial revision.
4550
4551Wed Dec  6 18:43:14 1995  Ulrich Drepper  <drepper@myware>
4552
4553	* open-po.c (open_po_file): Recognize /dev/stdin as name for
4554	stdin.  Recognize .pot as valid extension.
4555
4556Wed Dec  6 18:05:11 1995  Ulrich Drepper  <drepper@myware>
4557
4558	* msgmerge.c (main): Sort options in getopt loop.
4559
4560Mon Dec  4 15:37:22 1995  Ulrich Drepper  <drepper@myware>
4561
4562	* msgmerge.c: (main): Remove unused variable `exit_status'.
4563
4564Sun Dec  3 02:51:31 1995  Ulrich Drepper  <drepper@myware>
4565
4566	* xget-lex.h: [xgettext_token_type_ty]: We now have two keyword
4567	types and also the comma is important.
4568
4569	* xgettext.c (remember_a_message):
4570	Correct handling of -c option.  This is not a
4571	string to prepend to output.  Instead it selects single strings to
4572	include (instead of all).  Reported by Marcus Daniels.
4573	(scan_c_file): Extend state machine.  We have to retrieve the second
4574	argument for the keywords `dgettext' and `dcgetetxt`.
4575
4576	* xget-lex.c (phase5_get): Recognize ','.
4577	(xgettext_lex): Pass ',' on caller.
4578	Return different value for keywords `dgetetxt' and `dcgettext`.
4579
4580	* xget-lex.c (xgettext_lex): `gettext_noop' is an default keyword.
4581
4582	* msgunfmt.c (usage):
4583	Message should not contain TABs.  Reported by Fran��ois Pinard.
4584
4585	* msgunfmt.c (usage):
4586	Correct typo: Uniforun -> Uniforum.  Reported by Fran��ois Pinard.
4587
4588Mon Nov 20 21:12:52 1995  Ulrich Drepper  <drepper@myware>
4589
4590	* po-lex.c, message.c: Some more pretty printing.
4591
4592	* message.c (wrap): Don't support '\a' and '\v'.
4593
4594	* xget-lex.c (phase7_getc): Don't support '\v'.
4595
4596	* po-lex.c (control_sequence): Don't support '\v'.
4597
4598	* gettextp.c (expand_escape): Don't support \a and \v.
4599
4600	* msgcmp.c (compare): Really define static.
4601
4602Thu Nov 16 22:42:33 1995  Ulrich Drepper  <drepper@myware>
4603
4604	* msgmerge.c (merge): Remove additional parameter in in prototype.
4605
4606	* xgettext.c: Reomved unused type definition.  Patch by Peter Miller.
4607
4608	* xget-lex.c: Correct some comments and better implementation of
4609	-k option.  Patch by Peter Miller.
4610
4611	* po.h: Fix typos.  By Peter Miller.
4612
4613	* po-lex.c (po_gram_lex): Prevent accumulation of #! comments.
4614
4615	* po-gram.y (comments): Remove unused rule.
4616
4617	* msgmerge.c: Implement new options sort-by-file and sort-output.
4618	Patches by Peter Miller.
4619
4620	* msgcmp.c (domain): Remove unused global variable.
4621	(domain_directive): Remove unused function.
4622
4623	* message.h: Fix comment for MESSAGE_DOMAIN_DEFAULT definition.
4624
4625	* message.c (message_print): Correct typo.
4626	Clarify comments about ANSI escape sequences.
4627	Patches by Peter Miller.
4628
4629	* Makefile.in (DISTFILES): Remove $(COMSRCS).
4630	(MSGFMT_OBJ): Correct indentation.  Patches by Peter Miller.
4631
4632Sun Nov 12 12:52:29 1995  Ulrich Drepper  <drepper@myware>
4633
4634	* xgettext.c (line, string, comment): Remove unused global variables.
4635	(read_name_from_file): Remove unused variable `cp'.
4636
4637	* msgmerge.c (merge): Add missing return statement.
4638
4639	* msgfmt.c (check_pair): Correctly pair comparisons.
4640
4641	* msgcmp.c (domain_list, mlp): Remove unused global variables.
4642
4643Sat Nov 11 21:39:17 1995  Ulrich Drepper  <drepper@myware>
4644
4645	* message.c (message_list_print):
4646	Prevent output if we have no (real) entry.
4647
4648	* xgettext.c (remember_a_message): Implement exclude file handling.
4649
4650Sat Nov 11 17:38:05 1995  Ulrich Drepper  <drepper@myware>
4651
4652	* msgunfmt.c: Fix message.
4653
4654	* xgettext.c: Use string handling from str-list and .po file
4655	handling use xget-lex et.al.
4656
4657	* xget-lex.h, xget-lex.c, str-list.h, str-list.c, po.h:
4658	Initial revision.
4659
4660	* po-lex.h: Allow variable upper limit of errors.
4661	New prototypes.
4662
4663	* po-lex.c: Allow variable upper limit of errors.
4664	Make comment's text available to the caller.
4665
4666	* po.c, po-hash.y, po-hash.h: Initial revision.
4667
4668	* po-gram.y: Add handling of comments.
4669
4670	* po-gram.h: Remove all but one declaration.
4671
4672	* msgunfmt.c, msgmerge.c: Initial revision.
4673
4674	* msgfmt.c: Adopt for new interface to parser.
4675
4676	* msgcmp.c: Move lot's of general code to other files.
4677
4678	* message.h, message.c:
4679	Extended functionality for Peter Miller's pseudo-OO programming.
4680
4681	* Makefile.in: Rewrite after adding rules for new programs.
4682
4683Fri Nov 10 10:01:37 1995  Ulrich Drepper  <drepper@myware>
4684
4685	* Makefile.in (PROGRAMS): Add new programs msgmerge and msgunfmt.
4686
4687Thu Nov  9 01:29:46 1995  Ulrich Drepper  <drepper@myware>
4688
4689	* gettextp.c (usage): Split message in two parts.
4690
4691	* xgettext.c (usage): Split message in three parts.
4692
4693	* xgettext.c (main):
4694	Print warning if --files-from option and file names on command
4695	line are given.
4696
4697	* xgettext.c (long_options):
4698	Mixed up `default-domain' and `directory' values.
4699
4700Wed Nov  8 23:31:34 1995  Ulrich Drepper  <drepper@myware>
4701
4702	* xgettext.c: Implement -D and -f option.
4703
4704Tue Nov  7 13:44:44 1995  Ulrich Drepper  <drepper@myware>
4705
4706	* Makefile.in (LIBS): One @LIBS@ must be @INTLLIBS@.
4707
4708	* Makefile.in (LIBS): Correct definition.  We must be prepared to
4709	use two different libintl.a libraries.
4710	(po-gram.gen.c): Don't use $< in non-implicit rule.
4711
4712	* Makefile.in (install-exec): Use `test -n' instead of
4713	`test XXX != ""'.  Proposed by Fran��ois Pinard.
4714
4715Sun Nov  5 23:59:03 1995  Ulrich Drepper  <drepper@myware>
4716
4717	* Makefile.in (INSTALL_PROGRAM): Do not specify mode.
4718
4719Sun Nov  5 21:13:57 1995  Ulrich Drepper  <drepper@myware>
4720
4721	* xgettext.c, msgfmt.c:
4722	Comments describing what has to be done should start with FIXME.
4723
4724Sun Nov  5 19:39:56 1995  Ulrich Drepper  <drepper@myware>
4725
4726	* Makefile.in (dist-gettext): Make synonym for dist.
4727
4728Sun Nov  5 18:11:15 1995  Ulrich Drepper  <drepper@myware>
4729
4730	* po-lex.h (gram_error, gram_error_with_loc):
4731	Don't define macros when !__STDC__
4732	even when using gcc.
4733
4734	* po-lex.c (gram_error, gram_error_with_loc):
4735	Compile if !__STDC__ even if using gcc.
4736
4737	* Makefile.in (po-gram.gen.c po-gram.gen.h):
4738	Remove file prior of generation.
4739
4740Sun Nov  5 11:39:21 1995  Ulrich Drepper  <drepper@myware>
4741
4742	* Makefile.in (dist): Suppress error message when ln failed.
4743	Get files from $(srcdir) explicitly.
4744
4745	* xgettext.c (process_c_source):
4746	Make gettext_noop the forth builtin marker.
4747
4748Fri Nov  3 00:57:52 1995  Ulrich Drepper  <drepper@myware>
4749
4750	* msgfmt.c (main): Don't free fname when no suffix was added.
4751
4752Thu Nov  2 22:55:44 1995  Ulrich Drepper  <drepper@myware>
4753
4754	* Makefile.in (dist): Also remove msgcmp.
4755
4756Tue Oct 31 22:27:52 1995  Ulrich Drepper  <drepper@myware>
4757
4758	* msgfmt.c: New option --strict: Only if this is given the .mo
4759	file ending is forced.
4760
4761	* msgfmt.c (message_directive):
4762	Call error_with_loc with correct parameters.
4763
4764	* msgfmt.c (message_directive):
4765	Ignores empty message does not count as fatal error.
4766
4767	* Makefile.in (po-gram.gen.c):
4768	Add g suffix to make multiple substitution in one
4769	line possible.
4770
4771Mon Oct 30 22:35:41 1995  Ulrich Drepper  <drepper@myware>
4772
4773	* po-gram.h:
4774	Don't give defines for translation of yy* symbols.  This is not enough
4775	to be able to have more than one parser.  See src/Makefile for the way
4776	we chose.
4777
4778	* Makefile.in (po-gram.gen.c):
4779	Rewrite generated source while copying.  This is the
4780	only portable way to get more than one parser in the same program.
4781	Patch by Peter Miller.
4782
4783Sun Oct 29 10:49:59 1995  Ulrich Drepper  <drepper@myware>
4784
4785	* Makefile.in (INSTALL_SCRIPT): New variable.
4786	(install-exec): Install tupdate using INSTALL_SCRIPT to prevent error
4787	when using strip flag.
4788
4789Sat Oct 28 14:39:33 1995  Ulrich Drepper  <drepper@myware>
4790
4791	* po-gram.h: Include <sys/types.h>.
4792
4793	* xgettext.c (main):
4794	Honour -n option even if --omit-header is given.  By Peter Miller.
4795
4796	* msgcmp.c (check_domain_coverage):
4797	No double space in message.  By Peter Miller.
4798
4799	* msgcmp.c (grammar):
4800	Close input file after coverage check.  Patch by Peter Miller.
4801
4802Wed Sep 27 20:27:26 1995  Ulrich Drepper  <drepper@myware>
4803
4804	* msgcmp.c:
4805	Don't try to include <string.h>.  This is done in "system.h".
4806
4807	* po-lex.c (gram_error, gram_error_with_loc):
4808	Add argument definition for K&R style.
4809	(gram_error, gram_error_with_loc): We increase gram_nerrors,
4810	not nerrors.  Reported by Francesco Potorti`.
4811
4812Tue Sep 26 10:03:29 1995  Ulrich Drepper  <drepper@myware>
4813
4814	* po-gram.h (yyparse): Add redefinition to gram_parse.
4815
4816	* Makefile.in (YFLAGS):
4817	Don't use -p option.  Stupid old yaccs do not know it.
4818
4819	* po-lex.c: Include po-gram.h to get redefinitions of yy* symbols.
4820
4821	* po-gram.h (yylex, yylval, yyerror):
4822	Redefine these symbols to gram_* because the
4823	yacc is now called without -p option.
4824
4825	* Makefile.in (LIBS):
4826	Undid last change.  On some systems libintl.a is not
4827	completely self-contained.  alloca() is miisong e.g. on HP-UX.
4828
4829Mon Sep 25 22:35:55 1995  Ulrich Drepper  <drepper@myware>
4830
4831	* msgfmt.c (add_mo_suffix): Fix typo.
4832
4833	* po-lex.h: Include <sys/types.h>.
4834	(lex_open): Argument is now `const char *'.
4835
4836	* msgfmt.c (add_mo_suffix):
4837	Allow .gmo suffix.  Great idea by Marcus Daniels.
4838
4839Sat Sep 23 08:20:54 1995  Ulrich Drepper  <drepper@myware>
4840
4841	* po-gram.y, po-lex.c: Include error.h.
4842
4843	* open-po.c (open_po_file):
4844	Remove unused variables `path_dir' and `open_po_file'.
4845
4846Thu Sep 21 15:30:36 1995  Ulrich Drepper  <drepper@myware>
4847
4848	* Makefile.in (LIBS):
4849	using libnlsut.a twice is not necessary anymore.  libintl.a is
4850	selfcontained.
4851
4852	* gettextp.c (main):
4853	Use dcgettext__ and bindtextdomain__ instead of __dcgettext
4854	and __bindtextdomain.
4855
4856	* msgfmt.c, xgettext.c (exit_status):
4857	New variables.  Contains exit status for the case the program
4858	ends normally.  Changed when non-fatal error messages are given.
4859
4860Wed Sep 20 09:16:57 1995  Ulrich Drepper  <drepper@myware>
4861
4862	* Makefile.in (xgettext): No also link po-gram.gen.o and po-lex.o.
4863
4864	* po-lex.c: Pretty print comments.
4865	Do some CSE in computation of hex value.
4866
4867	* xgettext.c (read_po_file): Now use the generated scanner.
4868	(domain_directive, message_directive): New functions needed for
4869 	scanner.
4870	(add_id_str): Correct test for exclude files.  The messages in the
4871 	exclude table are in raw format, not C format.
4872	(write_out_domain): Check for zero messages and don't write anything in
4873	this case.
4874
4875	* po-lex.c (lex_open): Argument NAME is now const.
4876	(gram_error): Move VARARGS1 comment to right place.
4877	(control_sequence): Pretty print some comments.
4878
4879Mon Sep 18 21:23:55 1995  Ulrich Drepper  <drepper@myware>
4880
4881	* msgfmt.c (add_mo_suffix): Really check for not .mo suffix.
4882
4883	* xgettext.c (write_out_domain):
4884	Write file names in #: lines to file, not stdout.
4885
4886	* po-gram.y (grammar):
4887	Remove function.  This allows sharing this file in different
4888	programs.
4889
4890	* domain.h (msg_domain): Member DOMAIN_NAME is now const.
4891
4892	* Makefile.in (PROGRAMS): Add msgcmp.
4893	(HEADERS): Add message.h.
4894	(SOURCES): Add message.c and msgcmp.c.
4895	(OBJECTS): Add message.o and msgcmp.o.
4896	(msgcmp): Rule to construct program.
4897
4898	* message.h, message.c: Initial revision
4899
4900	* msgfmt.c (grammar): Close comment so that function is seen.
4901	(message_directive): MSGID and MSGSTR are not const.
4902
4903	* msgcmp.c: Initial revision
4904
4905	* po-gram.h (message_directive):
4906	MSGID and MSGSTR argument are not const.
4907
4908	* po-gram.h (grammar): Remove prototype.  Is now locally defined.
4909
4910	* po-lex.h (gram_error, gram_error_with_loc):
4911	Protect the instructions by do while (0).
4912
4913	* msgfmt.c (grammar):
4914	Define function here.  This allows sharing the grammar file
4915	with the msgcmp program.
4916
4917	* msgfmt.c (domain_directive): Free memory of NAME if not needed.
4918	(new_domain): Do not duplicate filename, use it as it is.
4919
4920	* msgfmt.c (message_directive):
4921	Free parameter string memory here if necessary.
4922	Was done in po-gram.y before.
4923
4924	* po-gram.h: Remove comment after closing #endif.
4925
4926	* po-gram.h (grammar): Name parameter in prototype.
4927
4928Sun Sep 17 23:29:30 1995  Ulrich Drepper  <drepper@myware>
4929
4930	* xgettext.c (read_po_file): We don't have a search path anymore,
4931 	so third argument to open_po_file is not needed anymore.  Reduce
4932 	argument list by this parameter, too.
4933
4934	* po-lex.c (lex_open):
4935	We don't have a search path anymore, so third argument to
4936	ope_po_file is not needed anymore.
4937
4938	* open-po.c (open_po_file): Remove unused `use_path' parameter.
4939
4940	* Makefile.in (HEADERS): Add po-gram.h and po-lex.h.
4941
4942	* po-gram.h, po-lex.h: Initial revision
4943
4944	* Makefile.in (YACC, YFLAGS): New program used for .po file grammar.
4945	(SOURCES): Add po-gram.y and po-lex.c.
4946	(GENHEADERS, GENSOURCES): New variables for generated headers
4947 	and sources.
4948	(OBJECTS): Add po-gram.gen.o and po-lex.o.
4949	Add rules for new files and add to dependency list for msgfmt.
4950
4951	* po-lex.c, po-gram.y: Initial revision
4952
4953	* xgettext.c: Remove input path handling.
4954	Adapt for new hashing functions return values.
4955
4956	* msgfmt.c:
4957	Rewrite .po file handling.  Use Peter Millers .po file Yacc grammar.
4958
4959	* open-po.c: Remove handling of input path.
4960
4961	* xgettext.c (write_out_domain):
4962	Split #: lines each 80 columns.  Based on a patch by
4963	Peter Miller.
4964
4965	* Makefile.in: hash.[ch] moved from src/ to lib/ subdirectory.
4966
4967Wed Aug 23 21:13:11 1995  Ulrich Drepper  <drepper@myware>
4968
4969	* tupdate.in: Don't print comment in front of obsolete entries.
4970
4971Tue Aug 22 22:16:31 1995  Ulrich Drepper  <drepper@myware>
4972
4973	* Makefile.in (AR, RANLIB): Remove definition.  Not needed here.
4974	Reported by Fran��ois Pinard.
4975
4976Sat Aug 19 17:38:22 1995  Ulrich Drepper  <drepper@myware>
4977
4978	* Makefile.in (install-src):
4979	Make behave like install.  I.e. really install the catalogs.
4980
4981Sat Aug 19 00:57:07 1995  Ulrich Drepper  <drepper@myware>
4982
4983	* Makefile.in (SCRIPTS):
4984	New variable.  Contains names of scipts to be generated and
4985	installed.  For now it is tupdate.
4986	(PROGRAMS): Remove tupdate.
4987	(all): Also depend on $(SCRIPTS).
4988
4989Fri Aug 18 13:02:04 1995  Ulrich Drepper  <drepper@myware>
4990
4991	* Makefile.in (PROGRAMS): Add tupdate.
4992	(tupdate): New rule.  Rebuild tupdate if tupdate.in or
4993 	../config.status changed.
4994
4995	* tupdate.in: Correct case where message is new: no really print msgid.
4996	Better help message by Fran��ois Pinard.
4997	Recognize #\t as comment.
4998	Print comment for now obsolete entries.
4999	Handle real comments (translator comments and tupdate generate obsolete
5000	entries).
5001
5002	* gettextp.c (usage): Better help message.
5003	(usage): Add -s description to help screen.
5004
5005Mon Aug 14 23:50:48 1995  Ulrich Drepper  <drepper@myware>
5006
5007	* Makefile.in (install-src): New no-op goal.
5008
5009Thu Aug 10 11:26:45 1995  Ulrich Drepper  <drepper@myware>
5010
5011	* tupdate.in: Don't print two " in front of commented out msgstrs.
5012
5013Wed Aug  9 09:10:30 1995  Ulrich Drepper  <drepper@myware>
5014
5015	* hash.c:
5016	Better implementation.  Rehashing is now much faster because the
5017 	hashing value stored in the `used' field is reused.
5018	(insert_entry): Split into two function.  `insert_entry_2' now does the
5019	the work while in `insert_entry' the checks are done.
5020	(lookup_2): New function.  Expects the search key to be NUL
5021 	terminated.  This is the case when the key is already in the
5022 	hash table when rehashing.
5023
5024	* msgfmt.c (write_table):
5025	Third argument to `iterate_table' is now a `const' pointer.
5026
5027	* hash.h (iterate_table): Third arguemtn is `const' pointer.
5028
5029	* xgettext.c (struct id_str): Make fields `const' pointers.
5030
5031Fri Aug  4 22:45:39 1995  Ulrich Drepper  <drepper@myware>
5032
5033	* msgfmt.c (main): Fix typo: me -> we.
5034
5035	* msgfmt.c (output_file_open): Remove this unused variable.
5036	Reported by Jim Meyering.
5037
5038	* Makefile.in (dist): Remove `copying instead' message.
5039
5040	* gettextp.c: Start to implement non-Uniforum behaviour.
5041	Implemented new mode where gettext behaves like `echo',
5042 	while translating the messages available in the specified test.
5043	New option: -d, -e, -E, also available in normal mode:
5044	-E: ignored.
5045	-e: enable expansion of some escape sequences.
5046	-d: specify text domain to use.
5047	New option: -s: enable `echo' mode.
5048
5049Thu Aug  3 18:25:37 1995  Ulrich Drepper  <drepper@myware>
5050
5051	* msgfmt.c (usage):
5052	Fix typo: anormalies -> anomalies.
5053  	Reported by Karl Anders O/ygard.
5054
5055Wed Aug  2 18:51:08 1995  Ulrich Drepper  <drepper@myware>
5056
5057	* Makefile.in (ID, TAGS): Do not use $^.
5058
5059	* xgettext.c (write-header): Add `Content-Type' field.
5060
5061Tue Aug  1 20:07:58 1995  Ulrich Drepper  <drepper@myware>
5062
5063	* Makefile.in (distclean): Remove ID file.
5064
5065	* Makefile.in (TAGS, ID): Use $^ as command argument.
5066	(TAGS): Give etags -o option t write to current directory,
5067 	not $(srcdir).
5068	(ID): Use $(srcdir) instead os $(top_srcdir)/src.
5069
5070Mon Jul 31 20:57:48 1995  Ulrich Drepper  <drepper@myware>
5071
5072	* msgfmt.c (process_po_file):
5073	Quote msgstr in message "empty `msgstr' entry ignored".
5074	Report by Karl Anders O/ygard.
5075
5076Sun Jul 30 12:14:29 1995  Ulrich Drepper  <drepper@myware>
5077
5078	* Makefile.in (LIBS): Always use ../intl/libintl.a.
5079	(all): Always depend on ../intl/libintl.a.
5080
5081Tue Jul 25 00:15:01 1995  Ulrich Drepper  <drepper@myware>
5082
5083	* msgfmt.c (process_po_file): Correct problem with empty lines.
5084
5085Sun Jul 23 22:47:56 1995  Ulrich Drepper  <drepper@myware>
5086
5087	* msgfmt.c (process_po_file):
5088	Give a message when a sole msgid is found at the end of file.
5089
5090Wed Jul 19 01:52:13 1995  Ulrich Drepper  <drepper@myware>
5091
5092	* Makefile.in (PROGRAMS): Always compile all three programs.
5093
5094	* gettextp.c: Include libgettext.h explicitly, in addition to
5095 	libintl.h.  On system having libintl.h provided by the C library
5096 	this assures to have the prototypes for the function defined in
5097 	GNU gettext library.
5098	Use __bindtextdomain and __dgettext instead of bindtextdomain and
5099 	dgettext resp.
5100	Swap arguments in bindtextdomain call.
5101
5102Tue Jul 18 23:57:16 1995  Ulrich Drepper  <drepper@myware>
5103
5104	* xgettext.c (add_id_str):
5105	`free(msgstr)' can fail on system not allowing free(0).
5106	Reported by Francesco Potorti`.
5107
5108Tue Jul 18 19:43:41 1995  Ulrich Drepper  <drepper@myware>
5109
5110	* xgettext.c (getpwuid):
5111 	Define prototype if !defined _POSIX_VERSION.
5112
5113	* hash.c: Don't include malloc.h and string.h because it will be
5114 	done in system.h.
5115
5116	* msgfmt.c: Don't include malloc.h because it will be done in
5117 	system.h.
5118
5119Sat Jul 15 00:45:31 1995  Ulrich Drepper  <drepper@myware>
5120
5121	* xgettext.c (main):
5122	Disable line_comment option when omit_header is selected.
5123	(write_out_domain): Don't write empty line if !line_comment.
5124
5125	* Makefile.in (DISTFILES):
5126	Due shorted file names now distribute tupdate.in.
5127	(install, clean): Handle tupdate, not tupdate.perl.
5128
5129	* tupdate.in: Rename tupdate.perl.in to tupdate.in to fit in 14
5130 	character file systems.
5131
5132Thu Jul 13 22:21:22 1995  Ulrich Drepper  <drepper@myware>
5133
5134	* Makefile.in (install): Test whether Perl was found before
5135 	installing.
5136
5137	* tupdate.perl.in: Make die message more GNU-like.
5138
5139	* gettextp.c (usage):
5140	Protect prototypes with __P and use K&R form for parameters.
5141
5142	* xgettext.c (main):
5143	Don't use 100u; poor K&R compilers need (unsigned) 100.
5144
5145	* open-po.c (xstrdup): Protect prototype with __P.
5146
5147	* msgfmt.c (usage, new_domain, process_po_file, compare_id,
5148 	write_table, check_pair): Protect prototypes with __P.
5149
5150	* hash.c (xmalloc): Protect prototype with __P.
5151
5152Thu Jul 13 01:39:47 1995  Ulrich Drepper  <drepper@myware>
5153
5154	* Makefile.in (check): New no-op goal.
5155
5156Wed Jul 12 10:40:54 1995  Ulrich Drepper  <drepper@myware>
5157
5158	* tupdate.perl.in: Implement --help and --version options
5159
5160	* xgettext.c: Add --string-limit option to specify limit on string
5161 	length.
5162  	Only warned when verbose mode is selected.
5163  	Add --verbose option.
5164  	Help message now correctly says --version == -V.
5165
5166Tue Jul 11 22:57:54 1995  Ulrich Drepper  <drepper@myware>
5167
5168	* xgettext.c (usage): Split help string because it breaks 1024
5169 	byte limit.
5170
5171	* Makefile.in (install-exec): Install tupdate.
5172
5173	* xgettext.c (stdlib.h): Protect inclusion by STDC_HEADERS.
5174	(assert): No assertions anymore.
5175	(HAVE_STRTOUL): strtoul is now substituted when not available.
5176	Add warning about too long strings (some systems have limits
5177 	for strings in their compiler and/or tools).  E.g. Sinix's
5178 	gencat program.
5179
5180	* msgfmt.c (printf.h): Include always
5181	(assert): No assertions anymore (all bugs are gone :-).
5182	(HAVE_STRTOUL): Not needed anymore because we substitute
5183 	strtoul if not present.
5184
5185	* Makefile.in (DISTFILES,distclean): tupdate.perl is now found here.
5186
5187Tue Jul 11 01:31:03 1995  Ulrich Drepper  <drepper@myware>
5188
5189	* Makefile.in: msgfmt.o depends on ../lib/printf.h.
5190
5191	* msgfmt.c: protect inclusion of malloc.h and stdlib.h.
5192  	Don't use GCC's `case b ... e:' feature (NeXT's gcc is
5193 	gcc-2.xx but does not understand this. Grrr!).
5194
5195	* open-po.c: Protect inclusion of string.h and stdlib.h.
5196
5197	* hash.c: Pretty print #define.
5198	(init_hash, insert_entry): Cast result of calloc.
5199	(insert_entry): Remove non-ANSI `(type *) var = ...' by
5200 	`*(type **) &var = ...'.
5201	(compute_hashval): Cast constant to unsigned long (default: int).
5202  	Has effects on 64-bit machines.
5203
5204Tue Jul  4 00:39:58 1995  Ulrich Drepper  <drepper@myware>
5205
5206	* xgettext.c: Don't write "Version:" field for msgid "".
5207
5208Mon Jul  3 23:02:04 1995  Ulrich Drepper  <drepper@myware>
5209
5210	* xgettext.c, msgfmt.c: Better comment.
5211
5212	* Makefile.in: Pretty print with Fran��ois.
5213	Fix typo in dependencies.
5214	Even more dependency corrections.
5215	Correct dependencies of open-po.c.
5216	Remove unneeded $(srcdir) from Makefile.in dependency.
5217	(LIBS): Correct for building in different directory.
5218	(INCLUDES): Correct for building in different directory.
5219	(DEFS): Rename DEF_MSG_DOM_DIR to LOCALEDIR.
5220	(INCLUDE): Don't use -I paths when not needed.
5221
5222	* hash.c: Include malloc.c and protect string.h inclusion.
5223
5224	* gettextp.c: Protect include of stdlib.h declare prototype for
5225 	getenv if not __STDC__.
5226	Include system.h for EXIT_FAILURE.
5227	(main, usage): Replace DEF_MSG_DOM_DIR by LOCALEDIR.
5228
5229	* open-po.c: Include system.h for EXIT_FAILURE.
5230
5231	* msgfmt.c: Fix typo in !__STDC__ path.
5232	(process_po_file): Change for new .po file format.
5233
5234	* xgettext.c (main): Rename DEF_MSG_DOM_DIR to LOCALEDIR.
5235	Update to new .po file format because Solaris' msgfmt can only
5236 	handle ANSI C style multi-line strings.
5237
5238Sun Jul  2 21:31:00 1995  Ulrich Drepper  <drepper@myware>
5239
5240	* gettextp.c: gettextp.c (usage): Fix typo in help message.
5241	Reported by Fran��ois Pinard.
5242
5243Sun Jul  2 02:12:41 1995  Ulrich Drepper  <drepper@myware>
5244
5245	* First official release.  This directory contains the
5246	source code for the programs specified in the Uniforum proposal
5247	for internationalization.
5248