Imported Upstream version 0.18.3.2
[platform/upstream/gettext.git] / gettext-tools / src / ChangeLog.0
1 2003-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
10 2003-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
18 2003-01-23  Bruno Haible  <bruno@clisp.org>
19
20         * po-gram.h: Don't include <sys/types.h>.
21
22 2003-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
29 2003-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
36 2003-01-23  Bruno Haible  <bruno@clisp.org>
37
38         * format-c.c (get_c99_format_directives): Free the allocated
39         descriptor after use.
40
41 2003-01-18  Bruno Haible  <bruno@clisp.org>
42
43         * FILES: Update.
44
45 2003-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
54 2003-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
70 2003-01-12  Bruno Haible  <bruno@clisp.org>
71
72         * Makefile.am: Make use of += for variables.
73
74 2003-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
79 2003-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
85 2003-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
90 2002-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
100 2002-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
106 2002-11-14  Bruno Haible  <bruno@clisp.org>
107
108         * x-php.c (phase3_getc): Initialize variable last_was_qmark.
109
110 2002-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
414 2002-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
454 2002-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
464 2002-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
470 2002-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
481 2002-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
492 2002-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
511 2002-08-17  Bruno Haible  <bruno@clisp.org>
512
513         * urlget.c (fetch): Also try invoking the 'curl' program.
514
515 2002-08-06  Bruno Haible  <bruno@clisp.org>
516
517         * gettext-0.11.5 released.
518
519 2002-08-02  Bruno Haible  <bruno@clisp.org>
520
521         * read-mo.c (get_sysdep_string): Make the error message easier to
522         translate.
523
524 2002-07-25  Bruno Haible  <bruno@clisp.org>
525
526         * gettext-0.11.4 released.
527
528 2002-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
564 2002-07-20  Andreas Schwab  <schwab@suse.de>
565
566         * plural-eval.c: Include <signal.h> if !INTDIV0_RAISES_SIGFPE.
567
568 2002-07-17  Bruno Haible  <bruno@clisp.org>
569
570         * gettext-0.11.3 released.
571
572 2002-07-17  Bruno Haible  <bruno@clisp.org>
573
574         * dir-list.c: Include stdlib.h.
575
576 2002-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
591 2002-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
596 2002-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
603 2002-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
608 2002-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
613 2002-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
619 2002-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
627 2002-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
644 2002-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
650 2002-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
656 2002-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
661 2002-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
667 2002-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
672 2002-04-24  Bruno Haible  <bruno@clisp.org>
673
674         * gettext-0.11.2 released.
675
676 2002-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
697 2002-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
702 2002-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
708 2002-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
715 2002-04-04  Bruno Haible  <bruno@clisp.org>
716
717         * msginit.c (find_pot): Add dummy return, to avoid gcc warning.
718
719 2002-03-12  Bruno Haible  <bruno@clisp.org>
720
721         * gettext-0.11.1 released.
722
723 2002-03-10  Bruno Haible  <bruno@clisp.org>
724
725         * x-python.c (phase7_getuc): Change type of buf to 'unsigned char[]'.
726
727 2002-03-07  Bruno Haible  <bruno@clisp.org>
728
729         * Makefile.am (msginit_LDADD): Use @INTL_LIBTOOL_SUFFIX_PREFIX@o
730         instead of $(OBJEXT).
731
732 2002-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
737 2002-03-05  Bruno Haible  <bruno@clisp.org>
738
739         * xgettext.c (usage): Mention languages Python, awk, Tcl, RST, Glade.
740
741 2002-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
785 2002-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
790 2002-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
797 2002-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
808 2002-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
813 2002-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
825 2002-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
844 2002-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
858 2002-02-03  Bruno Haible  <bruno@clisp.org>
859
860         * msgfmt.c (check_header_entry): Terminate the error strings with
861         newlines.
862
863 2002-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
874 2002-02-03  Bruno Haible  <bruno@clisp.org>
875
876         * xgettext.c (finalize_header): New function.
877         (main): Call it.
878
879 2002-02-03  Bruno Haible  <bruno@clisp.org>
880
881         * msginit.c (fill_header): Also replace "PACKAGE" in the comment.
882
883 2002-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
888 2002-01-31  Bruno Haible  <bruno@clisp.org>
889
890         * gettext-0.11 released.
891
892 2002-01-31  Bruno Haible  <bruno@clisp.org>
893
894         * plural-eval.h: Include eval-plural.h instead of plural-eval.c.
895
896 2002-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
901 2002-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
908 2002-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
914 2002-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
922 2002-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
930 2002-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
937 2002-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
943 2002-01-21  Bruno Haible  <bruno@clisp.org>
944
945         * msggrep.c (main): On SunOS4, don't pass option "-q" to grep.
946
947 2002-01-19  Bruno Haible  <bruno@clisp.org>
948
949         * msgfmt.c (check_header_entry): Emit error messages including the
950         file name.
951
952 2002-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
958 2002-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
963 2002-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
968 2002-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
988 2002-01-11  Bruno Haible  <bruno@clisp.org>
989
990         * write-po.c: Include po-charset.h.
991
992 2002-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
997 2002-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
1006 2002-01-09  Bruno Haible  <bruno@clisp.org>
1007
1008         * x-java.l (strip_ending_spaces): Fix logic.
1009
1010 2002-01-09  Tommy Johansson  <tommy.johansson@kanalen.org>
1011
1012         * x-java.l: Avoid endless loop when encountering unterminated string.
1013
1014 2002-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
1034 2002-01-06  Bruno Haible  <bruno@clisp.org>
1035
1036         * x-librep.c (read_object): Fix handling of #[ and #(.
1037
1038 2002-01-06  Bruno Haible  <bruno@clisp.org>
1039
1040         * x-lisp.c (read_object): Treat ',.' like ',@'.
1041
1042 2002-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
1062 2002-01-05  Bruno Haible  <bruno@clisp.org>
1063
1064         * gettext.c: TESTS version is now separate.
1065
1066 2002-01-05  Bruno Haible  <bruno@clisp.org>
1067
1068         * x-java.l (extract_java): Avoid "uninitialized variable" warnings.
1069         Free a temporary string.
1070
1071 2002-01-05  Bruno Haible  <bruno@clisp.org>
1072
1073         * Makefile.am (libgettextsrc_la_LDFLAGS): Add -lc. Needed on AIX.
1074
1075 2002-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
1081 2001-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
1087 2001-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
1150 2001-12-21  Bruno Haible  <bruno@clisp.org>
1151
1152         * format-lisp.c: Include minmax.h.
1153
1154 2001-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
1203 2001-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
1211 2001-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
1225 2001-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
1236 2001-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
1242 2001-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
1261 2001-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
1266 2001-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
1272 2001-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
1288 2001-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
1297 2001-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
1308 2001-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
1317 2001-12-09  Bruno Haible  <bruno@clisp.org>
1318
1319         * x-c.c: Reorder.
1320
1321 2001-12-08  Bruno Haible  <bruno@clisp.org>
1322
1323         * msgattrib.c (process_message_list): Never make the header entry
1324         obsolete.
1325
1326 2001-12-08  Bruno Haible  <bruno@clisp.org>
1327
1328         * msgfilter.c (main): Fix getopt_long string: -i takes an argument.
1329
1330 2001-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
1335 2001-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
1343 2001-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
1350 2001-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
1366 2001-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
1371 2001-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
1377 2001-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
1384 2001-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
1392 2001-11-29  Bruno Haible  <bruno@clisp.org>
1393
1394         * plural-eval.c: Include config.h and plural-exp.h.
1395
1396 2001-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
1405 2001-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
1411 2001-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
1425 2001-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
1432 2001-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
1440 2001-11-24  Bruno Haible  <bruno@clisp.org>
1441
1442         * msgexec.c (process_message): Really process each plural form once.
1443
1444 2001-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
1456 2001-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
1462 2001-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
1469 2001-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
1502 2001-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
1512 2001-11-17  Bruno Haible  <haible@clisp.cons.org>
1513
1514         * msgfmt.c (format_directive_message): Finish 2001-08-30 patch.
1515
1516 2001-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
1524 2001-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
1530 2001-11-17  Bruno Haible  <haible@clisp.cons.org>
1531
1532         * message.h (NFORMATS): Fix misapplied patch.
1533
1534 2001-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
1542 2001-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
1547 2001-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
1555 2001-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
1564 2001-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
1572 2001-11-03  Bruno Haible  <haible@clisp.cons.org>
1573
1574         * xgettext.c (line_comment): Remove variable, so default value is
1575         always 1.
1576
1577 2001-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
1583 2001-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
1590 2001-11-01  Bruno Haible  <haible@clisp.cons.org>
1591
1592         * msgfmt.c (check_plural_eval): Fix #if mistake.
1593
1594 2001-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
1604 2001-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
1616 2001-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
1628 2001-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
1634 2001-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
1652 2001-10-21  Bruno Haible  <haible@clisp.cons.org>
1653
1654         * Makefile.am (LDADD): Replace libnlsut.a with libgettextlib.la.
1655         (*_LDADD): Likewise.
1656
1657 2001-10-26  Bruno Haible  <haible@clisp.cons.org>
1658
1659         * x-c.h (EXTENSIONS_C): Add ".hxx".
1660
1661 2001-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
1667 2001-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
1676 2001-10-21  Bruno Haible  <haible@clisp.cons.org>
1677
1678         * msgexec.c [BeOS]: Fix #ifdef conditional.
1679
1680 2001-10-21  Bruno Haible  <haible@clisp.cons.org>
1681
1682         * read-java.c (execute_and_read_po_output): Return false, not 0.
1683
1684 2001-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
1698 2001-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
1704 2001-10-09  Bruno Haible  <haible@clisp.cons.org>
1705
1706         * write-po.c (putc): Define as putc_unlocked if available.
1707
1708 2001-10-09  Bruno Haible  <haible@clisp.cons.org>
1709
1710         * po-lex.c (getc): Define as getc_unlocked if available.
1711
1712 2001-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
1724 2001-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
1735 2001-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
1745 2001-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
1755 2001-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
1762 2001-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
1768 2001-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
1777 2001-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
1782 2001-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
1790 2001-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
1805 2001-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
1815 2001-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
1831 2001-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
1838 2001-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
1843 2001-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
1861 2001-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
1877 2001-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
1890 2001-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
1900 2001-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
1912 2001-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
1934 2001-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
1939 2001-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
1947 2001-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
1981 2001-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
1987 2001-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
2013 2001-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
2019 2001-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
2024 2001-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
2038 2001-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
2059 2001-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
2065 2001-09-19  Tommy Johansson  <tommy.johansson@kanalen.org>
2066
2067         * x-java.l (is_keyword): Swap arguments of do_compare.
2068
2069 2001-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
2086 2001-09-16  Bruno Haible  <haible@clisp.cons.org>
2087
2088         * Makefile.am (noinst_HEADERS): Add x-java.h.
2089
2090 2001-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
2098 2001-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
2103 2001-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
2108 2001-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
2119 2001-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
2125 2001-09-02  Bruno Haible  <haible@clisp.cons.org>
2126
2127         * format-lisp.c (gcd): Remove function. Include "gcd.h" instead.
2128
2129 2001-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
2136 2001-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
2149 2001-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
2160 2001-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
2180 2001-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
2201 2001-09-01  Bruno Haible  <haible@clisp.cons.org>
2202
2203         * write-po.c (msgdomain_list_print): Before fclose, check for ferror.
2204
2205 2001-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
2211 2001-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
2231 2001-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
2299 2001-08-12  Bruno Haible  <haible@clisp.cons.org>
2300
2301         * pos.h: Include <stddef.h>.
2302
2303 2001-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
2320 2001-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
2326 2001-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
2332 2001-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
2372 2001-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
2426 2001-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
2444 2001-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
2451 2001-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
2469 2001-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
2474 2001-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
2497 2001-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
2524 2001-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
2532 2001-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
2553 2001-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
2559 2001-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
2568 2001-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
2573 2001-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
2582 2001-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
2590 2001-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
2596 2001-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
2602 2001-07-05  Bruno Haible  <haible@clisp.cons.org>
2603
2604         * msgcomm.c (is_message_selected): Keep the header entry.
2605
2606 2001-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
2642 2001-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
2761 2001-06-25  Bruno Haible  <haible@clisp.cons.org>
2762
2763         * msggrep.c (usage): Explain the pattern syntax.
2764
2765 2001-06-18  Karl Eichwalder  <ke@suse.de>
2766
2767         * msgcomm.c (long_options): Add '--unique' option as documented
2768         within --help output.
2769
2770 2001-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
2775 2001-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
2780 2001-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
2792 2001-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
2824 2001-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
2931 2001-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
2938 2001-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
2953 2001-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
2958 2001-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
2970 2001-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
2984 2001-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
2989 2001-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
2998 2001-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
3039 2001-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
3057 2001-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
3076 2001-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
3088 2001-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
3103 2001-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
3126 2001-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
3149 2001-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
3159 2001-09-13  Bruno Haible  <haible@clisp.cons.org>
3160
3161         * gettext-0.10.40 released.
3162
3163 2001-07-24  Bruno Haible  <haible@clisp.cons.org>
3164
3165         * gettext-0.10.39 released.
3166
3167 2001-05-23  Bruno Haible  <haible@clisp.cons.org>
3168
3169         * gettext-0.10.38 released.
3170
3171 2001-05-23  Bruno Haible  <haible@clisp.cons.org>
3172
3173         * write-po.c (wrap): Avoid broken EUC-KR conversion in glibc-2.1.
3174
3175 2001-05-21  Bruno Haible  <haible@clisp.cons.org>
3176
3177         * xgettext.c (construct_header): Replace 8-bit with 8bit.
3178
3179 2001-04-19  Bruno Haible  <haible@clisp.cons.org>
3180
3181         * gettext-0.10.37 released.
3182
3183 2001-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
3190 2001-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
3198 2001-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
3203 2001-04-04  Bruno Haible  <haible@clisp.cons.org>
3204
3205         * write-po.c (wrap): Prohibit line breaks inside backslash escape
3206         sequences.
3207
3208 2001-03-29  Bruno Haible  <haible@clisp.cons.org>
3209
3210         * gettext-0.10.36 released.
3211
3212 2001-03-27  Bruno Haible  <haible@clisp.cons.org>
3213
3214         * po.c (po_callback_message): Change message again.
3215
3216 2001-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
3222 2001-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
3228 2001-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
3235 2001-03-22  Bruno Haible  <haible@clisp.cons.org>
3236
3237         * xgettext.c (construct_header): Replace ENCODING with 8-bit.
3238
3239 2001-03-20  Bruno Haible  <haible@clisp.cons.org>
3240
3241         * po.c (po_callback_message): Change message, refer to GNU libiconv.
3242
3243 2001-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
3252 2001-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
3258 2001-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
3263 2001-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
3268 2001-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
3274 2001-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
3293 2001-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
3300 2001-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
3311 2001-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
3336 2001-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
3358 2001-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
3396 2001-03-03  Bruno Haible  <haible@clisp.cons.org>
3397
3398         * msgcmp.c (compare): Internationalize error message.
3399
3400 2001-02-10  Bruno Haible  <haible@clisp.cons.org>
3401
3402         * msgunfmt.c (main): Accept -e and -E options.
3403
3404 2001-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
3409 2001-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
3415 2001-01-20  Bruno Haible  <haible@clisp.cons.org>
3416
3417         * msgcomm.c (main): Options '-<' and '->' want an argument.
3418
3419 2001-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
3428 2001-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
3440 2001-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
3458 2001-01-06  Bruno Haible  <haible@clisp.cons.org>
3459
3460         * Makefile.am (datadir): Assume DATADIRNAME = share.
3461
3462 2001-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
3470 2001-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
3479 2001-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
3549 2000-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
3555 2000-12-31  Bruno Haible  <haible@clisp.cons.org>
3556
3557         * msgunfmt.c (read_mo_file): Recognize "/dev/stdin", not "/dev/stdout".
3558
3559 2000-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
3619 2000-12-30  Bruno Haible  <haible@clisp.cons.org>
3620
3621         * xgettext.c (scanner_c, scanner_cxx): Remove declarations.
3622
3623 2000-12-30  Bruno Haible  <haible@clisp.cons.org>
3624
3625         * msgfmt.c (write_table): Pass additional argument &id_len to
3626         iterate_table.
3627
3628 2000-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
3644 2000-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
3649 2000-08-23  Ulrich Drepper  <drepper@redhat.com>
3650
3651         * po-lex.c (control_sequence): Unget character which ended \x..
3652         sequence.
3653
3654 2000-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
3664 1998-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
3696 2000-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
3736 1998-05-15  Ulrich Drepper  <drepper@cygnus.com>
3737
3738         * po-lex.c (control_sequence): Replace illegal with invalid.
3739
3740 1998-05-01 08:47  Ulrich Drepper  <drepper@cygnus.com>
3741
3742         * gettext-0.10.35 released.
3743
3744 1998-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
3766 1998-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
3771 1998-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
3778 1998-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 losing 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
3790 1998-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
3801 1997-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
3806 1997-08-18 13:47  Philippe De Muyter  <phdm@info.ucl.ac.be>
3807
3808         * msgcomm.c (sys/types.h): File included.
3809
3810 1997-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
3819 1997-08-01 15:48  Ulrich Drepper  <drepper@cygnus.com>
3820
3821         * Makefile.am (AUTOMAKE_OPTIONS): Require version 1.2.
3822
3823 1997-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
3833 1997-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
3845 1997-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
3851 Mon 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
3887 Wed Dec  4 01:58:10 1996  Ulrich Drepper  <drepper@cygnus.com>
3888
3889         * Makefile.am (LDADD): Change for use of libtool.
3890
3891 Tue 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
3906 Sat 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
3915 Thu Sep 12 21:40:48 1996  Andreas Schwab  <schwab@issan.informatik.uni-dortmund.de>
3916
3917         * msgfmt.c (check_pair): Fix error messages.
3918
3919 Sat 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
3928 Sat 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
3933 Mon 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
3939 Sat 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
3944 Fri Jul 12 12:38:49 1996  Ulrich Drepper  <drepper@cygnus.com>
3945
3946         * xgettext.c (main): Remove `v' from short option list.
3947
3948 Sat 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
3953 Sat Jul  6 11:15:43 1996  Jim Meyering  <meyering@na-net.ornl.gov>
3954
3955         * msgfmt.c (check_pair): Correct English in Message.
3956
3957 Fri 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
3971 Wed 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
3976 Sat 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
3980 Tue 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
3994 Mon 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
3998 Thu 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
4006 Wed 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
4033 Tue 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
4045 Tue 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
4054 Mon 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
4083 Sat 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
4088 Wed 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
4099 Tue 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
4104 Fri 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
4130 Fri 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
4145 Thu 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
4160 Thu 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
4166 Tue 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
4189 Tue 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
4201 Tue 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
4206 Tue Apr  2 03:25:56 1996  François Pinard  <pinard@iro.umontreal.ca>
4207
4208         * msgunfmt.c (usage): Remove Tab character from message.
4209
4210 Tue 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
4215 Tue 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
4222 Mon 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
4245 Sun 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
4250 Thu 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
4256 Thu 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
4265 Thu Mar 28 16:52:56 1996  Marcus Daniels  <marcus@sysc.pdx.edu>
4266
4267         * Makefile.in (MSGFMT_OBJ): Add message.o.
4268
4269 Wed 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
4274 Tue 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
4318 Mon 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
4338 Mon 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
4389 Sun 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
4411 Sun 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
4433 Sat 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
4444 Thu 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
4454 Thu 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
4458 Fri 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
4472 Fri 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
4508 Wed 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
4513 Mon 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
4524 Sun 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
4529 Sat 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
4533 Tue 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
4538 Sat 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
4545 Fri 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
4551 Wed 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
4556 Wed Dec  6 18:05:11 1995  Ulrich Drepper  <drepper@myware>
4557
4558         * msgmerge.c (main): Sort options in getopt loop.
4559
4560 Mon Dec  4 15:37:22 1995  Ulrich Drepper  <drepper@myware>
4561
4562         * msgmerge.c: (main): Remove unused variable `exit_status'.
4563
4564 Sun 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
4588 Mon 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
4602 Thu 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
4632 Sun 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
4643 Sat 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
4650 Sat 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
4683 Fri Nov 10 10:01:37 1995  Ulrich Drepper  <drepper@myware>
4684
4685         * Makefile.in (PROGRAMS): Add new programs msgmerge and msgunfmt.
4686
4687 Thu 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
4700 Wed Nov  8 23:31:34 1995  Ulrich Drepper  <drepper@myware>
4701
4702         * xgettext.c: Implement -D and -f option.
4703
4704 Tue 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
4715 Sun Nov  5 23:59:03 1995  Ulrich Drepper  <drepper@myware>
4716
4717         * Makefile.in (INSTALL_PROGRAM): Do not specify mode.
4718
4719 Sun 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
4724 Sun Nov  5 19:39:56 1995  Ulrich Drepper  <drepper@myware>
4725
4726         * Makefile.in (dist-gettext): Make synonym for dist.
4727
4728 Sun 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
4740 Sun 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
4748 Fri 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
4752 Thu Nov  2 22:55:44 1995  Ulrich Drepper  <drepper@myware>
4753
4754         * Makefile.in (dist): Also remove msgcmp.
4755
4756 Tue 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
4771 Mon 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
4783 Sun 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
4789 Sat 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
4802 Wed 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
4812 Tue 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
4829 Mon 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
4839 Sat 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
4846 Thu 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
4860 Wed 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
4879 Mon 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
4928 Sun 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
4967 Wed Aug 23 21:13:11 1995  Ulrich Drepper  <drepper@myware>
4968
4969         * tupdate.in: Don't print comment in front of obsolete entries.
4970
4971 Tue 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
4976 Sat 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
4981 Sat 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
4989 Fri 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
5005 Mon Aug 14 23:50:48 1995  Ulrich Drepper  <drepper@myware>
5006
5007         * Makefile.in (install-src): New no-op goal.
5008
5009 Thu 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
5013 Wed 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
5031 Fri 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
5049 Thu 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
5055 Wed 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
5061 Tue 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
5070 Mon 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
5076 Sun 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
5081 Tue Jul 25 00:15:01 1995  Ulrich Drepper  <drepper@myware>
5082
5083         * msgfmt.c (process_po_file): Correct problem with empty lines.
5084
5085 Sun 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
5090 Wed 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
5102 Tue 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
5108 Tue 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
5119 Sat 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
5132 Thu 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
5152 Thu Jul 13 01:39:47 1995  Ulrich Drepper  <drepper@myware>
5153
5154         * Makefile.in (check): New no-op goal.
5155
5156 Wed 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
5166 Tue 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
5187 Tue 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
5204 Tue Jul  4 00:39:58 1995  Ulrich Drepper  <drepper@myware>
5205
5206         * xgettext.c: Don't write "Version:" field for msgid "".
5207
5208 Mon 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
5238 Sun 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
5243 Sun 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.