No empty .Rs/.Re
[netbsd-mini2440.git] / gnu / dist / gettext / gettext-tools / src / ChangeLog.0
blobf2605888df5cddfb8074636d00f24e2d4299e0cf
1 2003-01-31  Bruno Haible  <bruno@clisp.org>
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.
10 2003-01-24  Bruno Haible  <bruno@clisp.org>
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.
18 2003-01-23  Bruno Haible  <bruno@clisp.org>
20         * po-gram.h: Don't include <sys/types.h>.
22 2003-01-23  Bruno Haible  <bruno@clisp.org>
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.
29 2003-01-23  Bruno Haible  <bruno@clisp.org>
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>.
36 2003-01-23  Bruno Haible  <bruno@clisp.org>
38         * format-c.c (get_c99_format_directives): Free the allocated
39         descriptor after use.
41 2003-01-18  Bruno Haible  <bruno@clisp.org>
43         * FILES: Update.
45 2003-01-12  Bruno Haible  <bruno@clisp.org>
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.
54 2003-01-12  Bruno Haible  <bruno@clisp.org>
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.
70 2003-01-12  Bruno Haible  <bruno@clisp.org>
72         * Makefile.am: Make use of += for variables.
74 2003-01-12  Bruno Haible  <bruno@clisp.org>
76         * write-po.c (wrap): Add an assertion, to protect against Solaris 2.9
77         iconv() bug.
79 2003-01-10  Bruno Haible  <bruno@clisp.org>
81         * po-charset.c (po_lex_charset_set): Work around Solaris 2.9 iconv()
82         bug.
83         * write-po.c (wrap): Likewise.
85 2003-01-08  Bruno Haible  <bruno@clisp.org>
87         * project-id: Make it work with configure files that use
88         AM_INIT_AUTOMAKE from automake-1.7.2.
90 2002-12-04  Bruno Haible  <bruno@clisp.org>
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>.
100 2002-11-22  Bruno Haible  <bruno@clisp.org>
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.
106 2002-11-14  Bruno Haible  <bruno@clisp.org>
108         * x-php.c (phase3_getc): Initialize variable last_was_qmark.
110 2002-11-13  Bruno Haible  <bruno@clisp.org>
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.
414 2002-11-05  Bruno Haible  <bruno@clisp.org>
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.
454 2002-11-01  Bruno Haible  <bruno@clisp.org>
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.
464 2002-10-14  Bruno Haible  <bruno@clisp.org>
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>.
470 2002-10-03  Bruno Haible  <bruno@clisp.org>
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.
481 2002-09-09  Bruno Haible  <bruno@clisp.org>
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.
492 2002-08-18  Bruno Haible  <bruno@clisp.org>
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.
511 2002-08-17  Bruno Haible  <bruno@clisp.org>
513         * urlget.c (fetch): Also try invoking the 'curl' program.
515 2002-08-06  Bruno Haible  <bruno@clisp.org>
517         * gettext-0.11.5 released.
519 2002-08-02  Bruno Haible  <bruno@clisp.org>
521         * read-mo.c (get_sysdep_string): Make the error message easier to
522         translate.
524 2002-07-25  Bruno Haible  <bruno@clisp.org>
526         * gettext-0.11.4 released.
528 2002-07-21  Bruno Haible  <bruno@clisp.org>
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.
564 2002-07-20  Andreas Schwab  <schwab@suse.de>
566         * plural-eval.c: Include <signal.h> if !INTDIV0_RAISES_SIGFPE.
568 2002-07-17  Bruno Haible  <bruno@clisp.org>
570         * gettext-0.11.3 released.
572 2002-07-17  Bruno Haible  <bruno@clisp.org>
574         * dir-list.c: Include stdlib.h.
576 2002-07-16  Bruno Haible  <bruno@clisp.org>
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.
591 2002-07-16  Bruno Haible  <bruno@clisp.org>
593         * project-id: Make it work when the configure file was generated by
594         autoconf-2.52 with AC_INIT and AM_INIT_AUTOMAKE(...).
596 2002-06-14  Bruno Haible  <bruno@clisp.org>
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>.
603 2002-06-08  Bruno Haible  <bruno@clisp.org>
605         * user-email.in: Look at /etc/sysconfig/mail, found on SuSE Linux.
606         Suggested by Karl Eichwalder <ke@suse.de>.
608 2002-06-07  Bruno Haible  <bruno@clisp.org>
610         * user-email.in: Look at /etc/mailname, found on Debian systems.
611         Suggested by Mark W. Eichin <eichin@thok.org>.
613 2002-06-07  Bruno Haible  <bruno@clisp.org>
615         * msgfmt.c (install_sigfpe_handler): Assume the signal is always
616         SIGFPE, regardless of the platform.
617         (uninstall_sigfpe_handler): Likewise.
619 2002-05-29  Bruno Haible  <bruno@clisp.org>
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>.
627 2002-05-22  Bruno Haible  <bruno@clisp.org>
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.
644 2002-05-18  Bruno Haible  <bruno@clisp.org>
646         * Makefile.am (RM): New variable.
647         (install-exec-am): Depend on install-exec-clean.
648         (install-exec-clean): New rule.
650 2002-05-14  Bruno Haible  <bruno@clisp.org>
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>.
656 2002-05-12  Bruno Haible  <bruno@clisp.org>
658         * po-charset.c (po_charset_canonicalize): Add ISO-8859-14, KOI8-T,
659         GEORGIAN-PS to the list of allowed encodings.
661 2002-04-30  Bruno Haible  <bruno@clisp.org>
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>.
667 2002-04-28  Bruno Haible  <bruno@clisp.org>
669         * project-id: Recognize package name and version when given by a
670         two-argument AC_INIT invocation (autoconf 2.52 and newer).
672 2002-04-24  Bruno Haible  <bruno@clisp.org>
674         * gettext-0.11.2 released.
676 2002-04-23  Bruno Haible  <bruno@clisp.org>
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.
697 2002-04-19  Bruno Haible  <bruno@clisp.org>
699         * msginit.c (catalogname_for_locale): Add wa_BE. Change Javanese from
700         jw to jv.
702 2002-04-15  Bruno Haible  <bruno@clisp.org>
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>.
708 2002-04-04  Bruno Haible  <bruno@clisp.org>
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>.
715 2002-04-04  Bruno Haible  <bruno@clisp.org>
717         * msginit.c (find_pot): Add dummy return, to avoid gcc warning.
719 2002-03-12  Bruno Haible  <bruno@clisp.org>
721         * gettext-0.11.1 released.
723 2002-03-10  Bruno Haible  <bruno@clisp.org>
725         * x-python.c (phase7_getuc): Change type of buf to 'unsigned char[]'.
727 2002-03-07  Bruno Haible  <bruno@clisp.org>
729         * Makefile.am (msginit_LDADD): Use @INTL_LIBTOOL_SUFFIX_PREFIX@o
730         instead of $(OBJEXT).
732 2002-03-05  Bruno Haible  <bruno@clisp.org>
734         * hostname.c (s6_addr16): Define if not defined by the system.
735         (ipv6_ntop): Use s6_addr16 instead of in6_u.u6_addr16.
737 2002-03-05  Bruno Haible  <bruno@clisp.org>
739         * xgettext.c (usage): Mention languages Python, awk, Tcl, RST, Glade.
741 2002-03-03  Bruno Haible  <bruno@clisp.org>
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.
785 2002-03-02  Bruno Haible  <bruno@clisp.org>
787         * msgfmt.c (check_pair): Don't count "&&" as an accelerator designator,
788         for consistency with Qt and KDE.
790 2002-02-24  Bruno Haible  <bruno@clisp.org>
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.
797 2002-02-21  Bruno Haible  <bruno@clisp.org>
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.
808 2002-02-09  Bruno Haible  <bruno@clisp.org>
810         * message.h (possible_format_p): Change return type to bool.
811         * message.c (possible_format_p): Likewise.
813 2002-01-14  Bruno Haible  <bruno@clisp.org>
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@.
825 2002-01-27  Bruno Haible  <bruno@clisp.org>
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.
844 2002-02-02  Bruno Haible  <bruno@clisp.org>
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).
858 2002-02-03  Bruno Haible  <bruno@clisp.org>
860         * msgfmt.c (check_header_entry): Terminate the error strings with
861         newlines.
863 2002-02-03  Bruno Haible  <bruno@clisp.org>
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.
874 2002-02-03  Bruno Haible  <bruno@clisp.org>
876         * xgettext.c (finalize_header): New function.
877         (main): Call it.
879 2002-02-03  Bruno Haible  <bruno@clisp.org>
881         * msginit.c (fill_header): Also replace "PACKAGE" in the comment.
883 2002-02-02  Bruno Haible  <bruno@clisp.org>
885         * Makefile.am (INCLUDES): Add -I../lib. Needed for builds with
886         builddir != srcdir on platforms that don't have fnmatch and stdbool.h.
888 2002-01-31  Bruno Haible  <bruno@clisp.org>
890         * gettext-0.11 released.
892 2002-01-31  Bruno Haible  <bruno@clisp.org>
894         * plural-eval.h: Include eval-plural.h instead of plural-eval.c.
896 2002-01-30  Bruno Haible  <bruno@clisp.org>
898         Make the gettext and ngettext programs independent of libgettextlib.
899         * Makefile.am (gettext_LDADD, ngettext_LDADD): New variables.
901 2002-01-27  Bruno Haible  <bruno@clisp.org>
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.
908 2002-01-27  Bruno Haible  <bruno@clisp.org>
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.
914 2002-01-27  Bruno Haible  <bruno@clisp.org>
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.
922 2002-01-27  Bruno Haible  <bruno@clisp.org>
924         * x-c.c (ALERT_CHAR): New macro.
925         (phase7_getc): Accept \a and \v as well.
927         * x-c.c (free_token): New inline function.
928         (phase6_get): Use it.
930 2002-01-27  Bruno Haible  <bruno@clisp.org>
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.
937 2002-01-24  Bruno Haible  <bruno@clisp.org>
939         * Makefile.am (LDADD): Use @LTLIBINTL@ instead of @INTLLIBS@.
940         (libgettextsrc_la_LDFLAGS): Likewise. Use @LTLIBICONV@ instead of
941         @LIBICONV@.
943 2002-01-21  Bruno Haible  <bruno@clisp.org>
945         * msggrep.c (main): On SunOS4, don't pass option "-q" to grep.
947 2002-01-19  Bruno Haible  <bruno@clisp.org>
949         * msgfmt.c (check_header_entry): Emit error messages including the
950         file name.
952 2002-01-19  Bruno Haible  <bruno@clisp.org>
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'.
958 2002-01-13  Bruno Haible  <bruno@clisp.org>
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.
963 2002-01-13  Bruno Haible  <bruno@clisp.org>
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.
968 2002-01-12  Bruno Haible  <bruno@clisp.org>
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.
988 2002-01-11  Bruno Haible  <bruno@clisp.org>
990         * write-po.c: Include po-charset.h.
992 2002-01-11  Bruno Haible  <bruno@clisp.org>
994         * msgfmt.c (install_sigfpe_handler, uninstall_sigfpe_handler): On AIX,
995         treat SIGTRAP like SIGFPE.
997 2002-01-09  Bruno Haible  <bruno@clisp.org>
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.
1006 2002-01-09  Bruno Haible  <bruno@clisp.org>
1008         * x-java.l (strip_ending_spaces): Fix logic.
1010 2002-01-09  Tommy Johansson  <tommy.johansson@kanalen.org>
1012         * x-java.l: Avoid endless loop when encountering unterminated string.
1014 2002-01-08  Bruno Haible  <bruno@clisp.org>
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.
1034 2002-01-06  Bruno Haible  <bruno@clisp.org>
1036         * x-librep.c (read_object): Fix handling of #[ and #(.
1038 2002-01-06  Bruno Haible  <bruno@clisp.org>
1040         * x-lisp.c (read_object): Treat ',.' like ',@'.
1042 2002-01-05  Bruno Haible  <bruno@clisp.org>
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.
1062 2002-01-05  Bruno Haible  <bruno@clisp.org>
1064         * gettext.c: TESTS version is now separate.
1066 2002-01-05  Bruno Haible  <bruno@clisp.org>
1068         * x-java.l (extract_java): Avoid "uninitialized variable" warnings.
1069         Free a temporary string.
1071 2002-01-05  Bruno Haible  <bruno@clisp.org>
1073         * Makefile.am (libgettextsrc_la_LDFLAGS): Add -lc. Needed on AIX.
1075 2002-01-05  Bruno Haible  <bruno@clisp.org>
1077         * x-c.c (buflen): Make static.
1078         * x-librep.c (buflen): Likewise.
1079         * x-lisp.c (buflen): Likewise.
1081 2001-12-23  Bruno Haible  <bruno@clisp.org>
1083         * msgexec.c (process_string): Use xsetenv instead of setenv.
1084         * msginit.c (canonical_locale_charset): Likewise.
1085         (get_title): Likewise.
1087 2001-12-22  Bruno Haible  <bruno@clisp.org>
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.
1150 2001-12-21  Bruno Haible  <bruno@clisp.org>
1152         * format-lisp.c: Include minmax.h.
1154 2001-12-21  Bruno Haible  <bruno@clisp.org>
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.
1203 2001-12-21  Bruno Haible  <bruno@clisp.org>
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.
1211 2001-12-20  Bruno Haible  <bruno@clisp.org>
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.
1225 2001-12-12  Bruno Haible  <bruno@clisp.org>
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.
1236 2001-12-17  Bruno Haible  <bruno@clisp.org>
1238         * msggrep.c: Include <fnmatch.h>.
1239         (filename_list_match): New function.
1240         (is_message_selected): Use it instead of string_list_member.
1242 2001-12-16  Bruno Haible  <bruno@clisp.org>
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.
1261 2001-12-15  Bruno Haible  <bruno@clisp.org>
1263         * msgfmt.c (check_plural): Use ngettext for two messages.
1264         Reported by Primoz Peterlin <primoz.peterlin@biofiz.mf.uni-lj.si>.
1266 2001-12-15  Bruno Haible  <bruno@clisp.org>
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.
1272 2001-12-15  Bruno Haible  <bruno@clisp.org>
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.
1288 2001-12-11  Bruno Haible  <bruno@clisp.org>
1290         * x-java.l (strip_ending_spaces): Fix isspace call.
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.
1297 2001-12-09  Bruno Haible  <bruno@clisp.org>
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.
1308 2001-12-09  Bruno Haible  <bruno@clisp.org>
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.
1317 2001-12-09  Bruno Haible  <bruno@clisp.org>
1319         * x-c.c: Reorder.
1321 2001-12-08  Bruno Haible  <bruno@clisp.org>
1323         * msgattrib.c (process_message_list): Never make the header entry
1324         obsolete.
1326 2001-12-08  Bruno Haible  <bruno@clisp.org>
1328         * msgfilter.c (main): Fix getopt_long string: -i takes an argument.
1330 2001-12-08  Bruno Haible  <bruno@clisp.org>
1332         * xgettext.c (remember_a_message): Don't print the line number if it
1333         is = (size_t)(-1).
1335 2001-12-08  Bruno Haible  <bruno@clisp.org>
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.
1343 2001-12-07  Bruno Haible  <bruno@clisp.org>
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.
1350 2001-12-06  Bruno Haible  <bruno@clisp.org>
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.
1366 2001-12-10  Bruno Haible  <bruno@clisp.org>
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.
1371 2001-12-01  Bruno Haible  <bruno@clisp.org>
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.
1377 2001-12-03  Tommy Johansson  <tommy.johansson@kanalen.org>
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.
1384 2001-11-30  Bruno Haible  <bruno@clisp.org>
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.
1392 2001-11-29  Bruno Haible  <bruno@clisp.org>
1394         * plural-eval.c: Include config.h and plural-exp.h.
1396 2001-11-27  Bruno Haible  <bruno@clisp.org>
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.
1405 2001-11-25  Bruno Haible  <bruno@clisp.org>
1407         * x-c.c (comment_start, comment_add, comment_line_end): New inline
1408         functions.
1409         (phase4_getc): Use them.
1411 2001-11-25  Bruno Haible  <bruno@clisp.org>
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.
1425 2001-11-25  Bruno Haible  <bruno@clisp.org>
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.
1432 2001-11-24  Bruno Haible  <bruno@clisp.org>
1434         * urlget.c (fetch): Call execute_java_class with quiet=true. If Java
1435         program failed, try wget or lynx.
1437         * read-java.c (msgdomain_read_java): Update for changed
1438         execute_java_class parameter list.
1440 2001-11-24  Bruno Haible  <bruno@clisp.org>
1442         * msgexec.c (process_message): Really process each plural form once.
1444 2001-11-17  Bruno Haible  <haible@clisp.cons.org>
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.
1456 2001-11-17  Bruno Haible  <haible@clisp.cons.org>
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().
1462 2001-11-17  Bruno Haible  <haible@clisp.cons.org>
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.
1469 2001-11-17  Bruno Haible  <haible@clisp.cons.org>
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.
1502 2001-11-17  Bruno Haible  <haible@clisp.cons.org>
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.
1512 2001-11-17  Bruno Haible  <haible@clisp.cons.org>
1514         * msgfmt.c (format_directive_message): Finish 2001-08-30 patch.
1516 2001-11-17  Bruno Haible  <haible@clisp.cons.org>
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 '&'.
1524 2001-11-17  Bruno Haible  <haible@clisp.cons.org>
1526         * msginit.c (main): Print a blank line.
1527         (get_title): Always use the English title first.
1528         (fill_header): Update accordingly.
1530 2001-11-17  Bruno Haible  <haible@clisp.cons.org>
1532         * message.h (NFORMATS): Fix misapplied patch.
1534 2001-11-11  Bruno Haible  <haible@clisp.cons.org>
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.
1542 2001-11-11  Bruno Haible  <haible@clisp.cons.org>
1544         * msgl-cat.c (catenate_msgdomain_list): Fix a typo in 2001-11-01 patch.
1545         Reported by Karl Eichwalder.
1547 2001-11-11  Bruno Haible  <haible@clisp.cons.org>
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.
1555 2001-11-08  Bruno Haible  <haible@clisp.cons.org>
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.
1564 2001-11-05  Bruno Haible  <haible@clisp.cons.org>
1566         * format-lisp.c (parse_upto): Remove 'base' argument. It is always 0.
1567         (format_parse): Update.
1569         * msgl-equal.c: Include string.h.
1570         * str-list.c: Likewise.
1572 2001-11-03  Bruno Haible  <haible@clisp.cons.org>
1574         * xgettext.c (line_comment): Remove variable, so default value is
1575         always 1.
1577 2001-11-03  Bruno Haible  <haible@clisp.cons.org>
1579         * x-c.c (extract_parenthesized): New function, extracted from
1580         extract_c.
1581         (extract_c): Call extract_parenthesized.
1583 2001-11-03  Bruno Haible  <haible@clisp.cons.org>
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.
1590 2001-11-01  Bruno Haible  <haible@clisp.cons.org>
1592         * msgfmt.c (check_plural_eval): Fix #if mistake.
1594 2001-11-01  Bruno Haible  <haible@clisp.cons.org>
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.
1604 2001-11-01  Bruno Haible  <haible@clisp.cons.org>
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.
1616 2001-10-31  Bruno Haible  <haible@clisp.cons.org>
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.
1628 2001-10-28  Bruno Haible  <haible@clisp.cons.org>
1630         * hostname.c: Include "progname.h".
1631         (program_name): Remove variable.
1632         (main): Call set_program_name instead of setting program_name.
1634 2001-10-28  Bruno Haible  <haible@clisp.cons.org>
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.
1652 2001-10-21  Bruno Haible  <haible@clisp.cons.org>
1654         * Makefile.am (LDADD): Replace libnlsut.a with libgettextlib.la.
1655         (*_LDADD): Likewise.
1657 2001-10-26  Bruno Haible  <haible@clisp.cons.org>
1659         * x-c.h (EXTENSIONS_C): Add ".hxx".
1661 2001-10-21  Bruno Haible  <haible@clisp.cons.org>
1663         * msgmerge.c (match_domain): Change type of 'processed' argument to
1664         'unsigned int *'.
1665         (merge): Change type of 'processed' to 'unsigned int'.
1667 2001-10-21  Bruno Haible  <haible@clisp.cons.org>
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.
1676 2001-10-21  Bruno Haible  <haible@clisp.cons.org>
1678         * msgexec.c [BeOS]: Fix #ifdef conditional.
1680 2001-10-21  Bruno Haible  <haible@clisp.cons.org>
1682         * read-java.c (execute_and_read_po_output): Return false, not 0.
1684 2001-10-11  Bruno Haible  <haible@clisp.cons.org>
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.
1698 2001-10-09  Bruno Haible  <haible@clisp.cons.org>
1700         * write-po.c (memcpy_small): New function.
1701         (wrap): Use it instead of memcpy. Optimize handling of escape
1702         characters.
1704 2001-10-09  Bruno Haible  <haible@clisp.cons.org>
1706         * write-po.c (putc): Define as putc_unlocked if available.
1708 2001-10-09  Bruno Haible  <haible@clisp.cons.org>
1710         * po-lex.c (getc): Define as getc_unlocked if available.
1712 2001-10-21  Bruno Haible  <haible@clisp.cons.org>
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.
1724 2001-10-21  Bruno Haible  <haible@clisp.cons.org>
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.
1735 2001-10-08  Bruno Haible  <haible@clisp.cons.org>
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.
1745 2001-10-08  Bruno Haible  <haible@clisp.cons.org>
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.
1755 2001-09-29  Bruno Haible  <haible@clisp.cons.org>
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.
1762 2001-09-29  Bruno Haible  <haible@clisp.cons.org>
1764         * hostname.c: New file.
1765         * Makefile.am (noinst_PROGRAMS, hostname_SOURCES): New variables.
1766         (install-exec-local, installdirs-local, uninstall-local): New rules.
1768 2001-10-10  Bruno Haible  <haible@clisp.cons.org>
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().
1777 2001-10-08  Bruno Haible  <haible@clisp.cons.org>
1779         * xgettext.c (remember_a_message): When the comment tag is seen,
1780         remember all remaining comment lines, not just one.
1782 2001-09-25  Bruno Haible  <haible@clisp.cons.org>
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.
1790 2001-09-22  Bruno Haible  <haible@clisp.cons.org>
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.
1805 2001-09-23  Bruno Haible  <haible@clisp.cons.org>
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.
1815 2001-10-04  Tommy Johansson  <tommy.johansson@kanalen.org>
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.
1831 2001-09-19  Bruno Haible  <haible@clisp.cons.org>
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.
1838 2001-09-19  Bruno Haible  <haible@clisp.cons.org>
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.
1843 2001-09-18  Bruno Haible  <haible@clisp.cons.org>
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.
1861 2001-09-19  Bruno Haible  <haible@clisp.cons.org>
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.
1877 2001-09-16  Bruno Haible  <haible@clisp.cons.org>
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.
1890 2001-09-20  Bruno Haible  <haible@clisp.cons.org>
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.
1900 2001-09-16  Bruno Haible  <haible@clisp.cons.org>
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.
1912 2001-09-17  Bruno Haible  <haible@clisp.cons.org>
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.
1934 2001-09-16  Bruno Haible  <haible@clisp.cons.org>
1936         * x-c.c (phase4_getc): Rename local variable 'state' to
1937         'last_was_star'.
1939 2001-09-11  Bruno Haible  <haible@clisp.cons.org>
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.
1947 2001-09-09  Bruno Haible  <haible@clisp.cons.org>
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.
1981 2001-09-24  Bruno Haible  <haible@clisp.cons.org>
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.
1987 2001-09-08  Bruno Haible  <haible@clisp.cons.org>
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.
2013 2001-09-08  Bruno Haible  <haible@clisp.cons.org>
2015         * msgexec.c (nonintr_select): Add function prototype.
2017         * xgettext.c (scan_java_file): Add function prototype.
2019 2001-09-23  Bruno Haible  <haible@clisp.cons.org>
2021         * xgettext.c (remember_a_message): Warn about empty msgid if it
2022         conflicts with construct_header().
2024 2001-09-08  Bruno Haible  <haible@clisp.cons.org>
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.
2038 2001-09-08  Bruno Haible  <haible@clisp.cons.org>
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>.
2059 2001-09-21  Tommy Johansson  <tommy.johansson@kanalen.org>
2061         * x-java.l (create_char_buf): Fix problem with empty messages.
2062         (//): Remove leading "//" from result.
2063         (x_java_keyword): Handle NULL argument.
2065 2001-09-19  Tommy Johansson  <tommy.johansson@kanalen.org>
2067         * x-java.l (is_keyword): Swap arguments of do_compare.
2069 2001-09-02  Bruno Haible  <haible@clisp.cons.org>
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.
2086 2001-09-16  Bruno Haible  <haible@clisp.cons.org>
2088         * Makefile.am (noinst_HEADERS): Add x-java.h.
2090 2001-09-14  Tommy Johansson  <tommy.johansson@kanalen.org>
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.
2098 2001-09-03  Bruno Haible  <haible@clisp.cons.org>
2100         * x-c.h (EXTENSIONS_C, SCANNERS_C): Remove extraneous commas.
2101         * x-po.h (EXTENSIONS_PO, SCANNERS_PO): Likewise.
2103 2001-09-11  Bruno Haible  <haible@clisp.cons.org>
2105         * xgettext.c: Set msgstr_prefix to "", not NULL.
2106         Reported by Martin Quinson <Martin.Quinson@ens-lyon.fr>.
2108 2001-09-10  Bruno Haible  <haible@clisp.cons.org>
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.
2119 2001-09-08  Bruno Haible  <haible@clisp.cons.org>
2121         * msgattrib.c: New file.
2122         * Makefile.am (bin_PROGRAMS): Add msgattrib.
2123         (msgattrib_SOURCES, msgattrib_LDADD): New variables.
2125 2001-09-02  Bruno Haible  <haible@clisp.cons.org>
2127         * format-lisp.c (gcd): Remove function. Include "gcd.h" instead.
2129 2001-09-03  Bruno Haible  <haible@clisp.cons.org>
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 ":".
2136 2001-09-03  Tommy Johansson  <tommy.johansson@kanalen.org>
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.
2149 2001-09-02  Bruno Haible  <haible@clisp.cons.org>
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.
2160 2001-09-02  Bruno Haible  <haible@clisp.cons.org>
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.
2180 2001-09-01  Bruno Haible  <haible@clisp.cons.org>
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.
2201 2001-09-01  Bruno Haible  <haible@clisp.cons.org>
2203         * write-po.c (msgdomain_list_print): Before fclose, check for ferror.
2205 2001-09-01  Bruno Haible  <haible@clisp.cons.org>
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.
2211 2001-08-30  Bruno Haible  <haible@clisp.cons.org>
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.
2231 2001-08-26  Bruno Haible  <haible@clisp.cons.org>
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.
2299 2001-08-12  Bruno Haible  <haible@clisp.cons.org>
2301         * pos.h: Include <stddef.h>.
2303 2001-08-12  Bruno Haible  <haible@clisp.cons.org>
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.
2313         * x-c.c (x_c_lex): Move lazy keyword initialization...
2314         (init_keywords): ... to here. New function.
2315         (extract_c): Call init_keywords.
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.
2320 2001-07-28  Bruno Haible  <haible@clisp.cons.org>
2322         * gettext.c (usage): If IN_HELP2MAN is set, output template for
2323         localedir, not its value.
2324         * ngettext.c (usage): Likewise.
2326 2001-07-28  Bruno Haible  <haible@clisp.cons.org>
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'.
2332 2001-07-28  Bruno Haible  <haible@clisp.cons.org>
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.
2372 2001-07-27  Bruno Haible  <haible@clisp.cons.org>
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.
2426 2001-07-26  Bruno Haible  <haible@clisp.cons.org>
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.
2444 2001-07-23  Bruno Haible  <haible@clisp.cons.org>
2446         * msgcomm.c: Assume <limits.h> exists.
2447         * msgexec.c: Likewise.
2448         * msggrep.c: Likewise.
2449         * write-po.c: Likewise.
2451 2001-08-02  Bruno Haible  <haible@clisp.cons.org>
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.
2469 2001-07-22  Bruno Haible  <haible@clisp.cons.org>
2471         * xgettext.c (language_to_scanner): Add language "ObjectiveC".
2472         (extension_to_language): Map extension "m" to "ObjectiveC".
2474 2001-07-22  Bruno Haible  <haible@clisp.cons.org>
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.
2497 2001-07-22  Bruno Haible  <haible@clisp.cons.org>
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.
2524 2001-07-22  Bruno Haible  <haible@clisp.cons.org>
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.
2532 2001-07-21  Bruno Haible  <haible@clisp.cons.org>
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.
2553 2001-07-21  Bruno Haible  <haible@clisp.cons.org>
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.
2559 2001-07-21  Bruno Haible  <haible@clisp.cons.org>
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.
2568 2001-07-21  Bruno Haible  <haible@clisp.cons.org>
2570         * msgcomm.c (extract_directive_message): Don't make the message fuzzy
2571         if the first occurrence wasn't fuzzy.
2573 2001-07-21  Bruno Haible  <haible@clisp.cons.org>
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.
2582 2001-07-12  Bruno Haible  <haible@clisp.cons.org>
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.
2590 2001-07-11  Bruno Haible  <haible@clisp.cons.org>
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>.
2596 2001-07-09  Bruno Haible  <haible@clisp.cons.org>
2598         * write-po.c (has_nonascii): New function.
2599         (message_print): Warn if the msgid is not fully ASCII.
2600         (message_print_obsolete): Likewise.
2602 2001-07-05  Bruno Haible  <haible@clisp.cons.org>
2604         * msgcomm.c (is_message_selected): Keep the header entry.
2606 2001-07-01  Bruno Haible  <haible@clisp.cons.org>
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.
2642 2001-06-30  Bruno Haible  <haible@clisp.cons.org>
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.
2761 2001-06-25  Bruno Haible  <haible@clisp.cons.org>
2763         * msggrep.c (usage): Explain the pattern syntax.
2765 2001-06-18  Karl Eichwalder  <ke@suse.de>
2767         * msgcomm.c (long_options): Add '--unique' option as documented
2768         within --help output.
2770 2001-06-12  Bruno Haible  <haible@clisp.cons.org>
2772         * xgettext.c (extension_to_language): Recognize "*.hh" as being C++.
2773         Reported by Felix Natter.
2775 2001-06-10  Bruno Haible  <haible@clisp.cons.org>
2777         * msgcmp.c (main): Set gram_max_allowed_errors to UINT_MAX, as in
2778         msgmerge.c.
2780 2001-06-10  Bruno Haible  <haible@clisp.cons.org>
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.
2792 2001-06-10  Bruno Haible  <haible@clisp.cons.org>
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.
2824 2001-06-10  Bruno Haible  <haible@clisp.cons.org>
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.
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.
2931 2001-06-10  Bruno Haible  <haible@clisp.cons.org>
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.
2938 2001-06-10  Bruno Haible  <haible@clisp.cons.org>
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.
2953 2001-06-01  Bruno Haible  <haible@clisp.cons.org>
2955         * Makefile.am (datadir): Remove definition.
2956         Reported by Albert Chin-A-Young <china@thewrittenword.com>.
2958 2001-05-15  Bruno Haible  <haible@clisp.cons.org>
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.
2970 2001-05-04  Bruno Haible  <haible@clisp.cons.org>
2972         * gettext.c (usage): Add description of what the program does.
2973         Separate blocks with blank lines.
2974         * ngettext.c (usage): Likewise.
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.
2984 2001-05-05  Karl Eichwalder  <ke@suse.de>
2986         * xgettext.c (read_name_from_file): Remove trailing space from line.
2987         * msgcomm.c (read_name_from_file): Likewise.
2989 2001-05-02  Bruno Haible  <haible@clisp.cons.org>
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.
2998 2001-05-01  Bruno Haible  <haible@clisp.cons.org>
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.
3039 2001-04-30  Bruno Haible  <haible@clisp.cons.org>
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.
3057 2001-05-01  Bruno Haible  <haible@clisp.cons.org>
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.
3076 2001-04-30  Bruno Haible  <haible@clisp.cons.org>
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.
3088 2001-04-29  Bruno Haible  <haible@clisp.cons.org>
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.
3103 2001-04-28  Bruno Haible  <haible@clisp.cons.org>
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.
3126 2001-04-28  Bruno Haible  <haible@clisp.cons.org>
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.
3146         * msgfmt.c: Don't include ctype.h.
3147         * msgunfmt.c: Likewise.
3149 2001-04-28  Bruno Haible  <haible@clisp.cons.org>
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.
3159 2001-09-13  Bruno Haible  <haible@clisp.cons.org>
3161         * gettext-0.10.40 released.
3163 2001-07-24  Bruno Haible  <haible@clisp.cons.org>
3165         * gettext-0.10.39 released.
3167 2001-05-23  Bruno Haible  <haible@clisp.cons.org>
3169         * gettext-0.10.38 released.
3171 2001-05-23  Bruno Haible  <haible@clisp.cons.org>
3173         * write-po.c (wrap): Avoid broken EUC-KR conversion in glibc-2.1.
3175 2001-05-21  Bruno Haible  <haible@clisp.cons.org>
3177         * xgettext.c (construct_header): Replace 8-bit with 8bit.
3179 2001-04-19  Bruno Haible  <haible@clisp.cons.org>
3181         * gettext-0.10.37 released.
3183 2001-04-18  Bruno Haible  <haible@clisp.cons.org>
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.
3190 2001-04-09  Bruno Haible  <haible@clisp.cons.org>
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.
3198 2001-04-04  Bruno Haible  <haible@clisp.cons.org>
3200         * gettext.c (program_name): Change type to 'const char *'.
3201         * ngettext.c (program_name): Likewise.
3203 2001-04-04  Bruno Haible  <haible@clisp.cons.org>
3205         * write-po.c (wrap): Prohibit line breaks inside backslash escape
3206         sequences.
3208 2001-03-29  Bruno Haible  <haible@clisp.cons.org>
3210         * gettext-0.10.36 released.
3212 2001-03-27  Bruno Haible  <haible@clisp.cons.org>
3214         * po.c (po_callback_message): Change message again.
3216 2001-03-26  Bruno Haible  <haible@clisp.cons.org>
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.
3222 2001-03-25  Bruno Haible  <haible@clisp.cons.org>
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.
3228 2001-03-23  Bruno Haible  <haible@clisp.cons.org>
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.
3235 2001-03-22  Bruno Haible  <haible@clisp.cons.org>
3237         * xgettext.c (construct_header): Replace ENCODING with 8-bit.
3239 2001-03-20  Bruno Haible  <haible@clisp.cons.org>
3241         * po.c (po_callback_message): Change message, refer to GNU libiconv.
3243 2001-03-18  Bruno Haible  <haible@clisp.cons.org>
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.
3252 2001-03-19  Bruno Haible  <haible@clisp.cons.org>
3254         * xgettext.c (extension_to_language): Recognize "*.cpp" and "*.hpp" as
3255         being C++.
3256         Patch by Dennis Bjorklund <db@zigo.dhs.org>.
3258 2001-03-11  Bruno Haible  <haible@clisp.cons.org>
3260         * gettext.c: Force inclusion of libgnuintl.h. On Solaris, <locale.h>
3261         has already included libintl.h.
3263 2001-03-11  Bruno Haible  <haible@clisp.cons.org>
3264             Karl Eichwalder  <ke@suse.de>
3266         * po.c (po_callback_message): Add comments to support translators.
3268 2001-03-11  Bruno Haible  <haible@clisp.cons.org>
3270         * po-lex.c (lex_close): Use ngettext and plural-form message.
3271         * msgcmp.c (compare): Likewise.
3272         * msgfmt.c (main): Likewise.
3274 2001-03-10  Bruno Haible  <haible@clisp.cons.org>
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.
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.
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.
3293 2001-03-09  Bruno Haible  <haible@clisp.cons.org>
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.
3300 2001-03-04  Bruno Haible  <haible@clisp.cons.org>
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.
3311 2001-03-04  Bruno Haible  <haible@clisp.cons.org>
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 $$.
3336 2001-03-03  Bruno Haible  <haible@clisp.cons.org>
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.
3358 2001-03-03  Bruno Haible  <haible@clisp.cons.org>
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.
3396 2001-03-03  Bruno Haible  <haible@clisp.cons.org>
3398         * msgcmp.c (compare): Internationalize error message.
3400 2001-02-10  Bruno Haible  <haible@clisp.cons.org>
3402         * msgunfmt.c (main): Accept -e and -E options.
3404 2001-02-04  Bruno Haible  <haible@clisp.cons.org>
3406         * msgfmt.c (main): Open the output file in binary mode.
3407         * msgunfmt.c (read_mo_file): Open the input file in binary mode.
3409 2001-01-21  Bruno Haible  <haible@clisp.cons.org>
3411         Use libtool.
3412         * Makefile.am (LDADD): Remove ../intl/libintl.$la, not needed any more.
3413         (l): Remove macro.
3415 2001-01-20  Bruno Haible  <haible@clisp.cons.org>
3417         * msgcomm.c (main): Options '-<' and '->' want an argument.
3419 2001-01-07  Bruno Haible  <haible@clisp.cons.org>
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.
3428 2001-01-07  Bruno Haible  <haible@clisp.cons.org>
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.
3440 2001-01-07  Bruno Haible  <haible@clisp.cons.org>
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.
3458 2001-01-06  Bruno Haible  <haible@clisp.cons.org>
3460         * Makefile.am (datadir): Assume DATADIRNAME = share.
3462 2001-01-06  Bruno Haible  <haible@clisp.cons.org>
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.
3470 2001-01-05  Bruno Haible  <haible@clisp.cons.org>
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'.
3479 2001-01-01  Bruno Haible  <haible@clisp.cons.org>
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.
3549 2000-12-31  Bruno Haible  <haible@clisp.cons.org>
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.
3555 2000-12-31  Bruno Haible  <haible@clisp.cons.org>
3557         * msgunfmt.c (read_mo_file): Recognize "/dev/stdin", not "/dev/stdout".
3559 2000-12-31  Bruno Haible  <haible@clisp.cons.org>
3561         * str-list.h: Fix typo. Add comments.
3562         * str-list.c: Add comments.
3564         * dir-list.h: Add comments.
3565         * dir-list.c: Likewise.
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.
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.
3578         * open-po.c (open_po_file): Merge duplicated code.
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.
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.
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.
3607         * po.h: Add comments.
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.
3614         * ylwrap: Update from automake-1.4.
3616         * FILES: New file.
3617         * Makefile.am (EXTRA_DIST): New variable.
3619 2000-12-30  Bruno Haible  <haible@clisp.cons.org>
3621         * xgettext.c (scanner_c, scanner_cxx): Remove declarations.
3623 2000-12-30  Bruno Haible  <haible@clisp.cons.org>
3625         * msgfmt.c (write_table): Pass additional argument &id_len to
3626         iterate_table.
3628 2000-09-13  Bruno Haible  <haible@clisp.cons.org>
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.
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.
3644 2000-08-23  Bruno Haible  <haible@clisp.cons.org>
3646         * po-lex.c (ALERT_CHAR): New constant macro.
3647         (control_sequence): Accept \a. Don't accept \X.
3649 2000-08-23  Ulrich Drepper  <drepper@redhat.com>
3651         * po-lex.c (control_sequence): Unget character which ended \x..
3652         sequence.
3654 2000-07-28  Bruno Haible  <haible@clisp.cons.org>
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.
3664 1998-07-17  Paul Eggert  <eggert@twinsun.com>
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.
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.
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 *.
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.
3696 2000-05-06  Ulrich Drepper  <drepper@redhat.com>
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.
3711         * po-lex.c: Include "po-gram-gen2.h" instead of "po-gram.gen.h".
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.
3736 1998-05-15  Ulrich Drepper  <drepper@cygnus.com>
3738         * po-lex.c (control_sequence): Replace illegal with invalid.
3740 1998-05-01 08:47  Ulrich Drepper  <drepper@cygnus.com>
3742         * gettext-0.10.35 released.
3744 1998-04-30  Ulrich Drepper  <drepper@cygnus.com>
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.
3766 1998-04-30  Ulrich Drepper  <drepper@cygnus.com>
3768         * msgfmt.c: Fix typo in --help text.
3769         Reported by Jan.Djarv@mbox200.swipnet.se.
3771 1998-04-03 01:18 1998  Philippe De Muyter  <phdm@macqel.be>
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.
3778 1998-04-29  Ulrich Drepper  <drepper@cygnus.com>
3780         * message.c: Use unsigned char for various local variables.
3781         * xgettext.c (comment_tag): Define as unsigned char *.
3782         For loosing Solaris systems.  Patches by Jim Meyering.
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.
3790 1998-04-27  Ulrich Drepper  <drepper@cygnus.com>
3792         * xgettext.c: Update year and bug report address.  Add little
3793         explanation in --help messages.
3794         * msgfmt.c: Likewise.
3796         * msgmerge.c: Update year and bug report address.
3797         * msgcomm.c: Likewise.
3798         * msgcmp.c: Likewise.
3799         * msgunfmt.c: Likewise.
3801 1997-08-31 22:20  Ulrich Drepper  <drepper@cygnus.com>
3803         * msgfmt.c (format_directive_message): Count fuzzy messages as
3804         fuzzy, even if they are not written to the output file.
3806 1997-08-18 13:47  Philippe De Muyter  <phdm@info.ucl.ac.be>
3808         * msgcomm.c (sys/types.h): File included.
3810 1997-08-15 12:38  Ulrich Drepper  <drepper@cygnus.com>
3812         * xgettext.c: Include <sys/param.h> to define MIN/MAX for HP/UX.
3813         Patch by Kaveh R. Ghazi <ghazi@caip.rutgers.edu>.
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>.
3819 1997-08-01 15:48  Ulrich Drepper  <drepper@cygnus.com>
3821         * Makefile.am (AUTOMAKE_OPTIONS): Require version 1.2.
3823 1997-05-07 04:21  Ulrich Drepper  <drepper@cygnus.com>
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.
3833 1997-05-01 02:33  Ulrich Drepper  <drepper@cygnus.com>
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.
3842         * msgcomm.c: Fix comment about default output (Jan Djarv).  Split
3843         help message.
3845 1997-03-31 16:09  Ulrich Drepper  <drepper@cygnus.com>
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>.
3851 Mon Mar 10 06:18:58 1997  Ulrich Drepper  <drepper@cygnus.com>
3853         * xgettext.c: Implement generic language scanner handling.
3855         * xget-lex.c (phase7_getc): Better comments.
3856         (phase5_get): Print warnings about unterminated strings and
3857         character constants.
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.
3864         * po-hash.y: Correct typo.
3866         * msgunfmt.c: Implement --force-po option.
3868         * msgmerge.c: Implement --force-po, --no-location, and
3869         --add-location options.
3871         * msgfmt.c (format_directive_message): If messages are duplicated
3872         and translations are different this is a fatal error.
3874         * msgcmp.c (compare_directive_message): Use correct format for
3875         continuation line in message.
3877         * message.h: Add prototype for message_list_delete_nth.
3879         * message.c: Add message_list_delete_nth function.
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.
3885         * msgcomm.c: New file.
3887 Wed Dec  4 01:58:10 1996  Ulrich Drepper  <drepper@cygnus.com>
3889         * Makefile.am (LDADD): Change for use of libtool.
3891 Tue Dec  3 18:08:46 1996  Ulrich Drepper  <drepper@cygnus.com>
3893         * xget-lex.c (phase7_getc): Return \n when newline is seen, not
3894         P7_NEWLINE.
3896         * xgettext.c (main): Implement --foreign-user flag.
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.
3906 Sat Sep 14 04:28:09 1996  Ulrich Drepper  <drepper@cygnus.com>
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.
3915 Thu Sep 12 21:40:48 1996  Andreas Schwab  <schwab@issan.informatik.uni-dortmund.de>
3917         * msgfmt.c (check_pair): Fix error messages.
3919 Sat Aug 31 14:05:29 1996  Ulrich Drepper  <drepper@cygnus.com>
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.
3928 Sat Aug 31 04:49:38 1996  Ulrich Drepper  <drepper@cygnus.com>
3930         * gettextp.c: Don't include <libintl.h> since this can generate
3931         conflicts.
3933 Mon Jul 15 02:21:25 1996  Ulrich Drepper  <drepper@cygnus.com>
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.
3939 Sat Jul 13 20:23:34 1996  Ulrich Drepper  <drepper@cygnus.com>
3941         * xget-lex.c (phase6_get): Reset selected comments on every
3942         preprocessor directive.
3944 Fri Jul 12 12:38:49 1996  Ulrich Drepper  <drepper@cygnus.com>
3946         * xgettext.c (main): Remove `v' from short option list.
3948 Sat Jul  6 11:22:47 1996  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
3950         * message.c (message_merge): Add some casts to (char *) in alloca
3951         calls.  Make KNOWN_FIELDS array static.
3953 Sat Jul  6 11:15:43 1996  Jim Meyering  <meyering@na-net.ornl.gov>
3955         * msgfmt.c (check_pair): Correct English in Message.
3957 Fri Jul  5 17:27:11 1996  Ulrich Drepper  <drepper@cygnus.com>
3959         * message.c (message_merge): Terminate string for UNKNOWN fields
3960         in header entry.
3962         * message.c (message_merge): Don't print POT-Revision-Date twice.
3964         * msgfmt.c: Implement --statistics.
3965         Suggested by Santiago Vila Doncel.
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.
3971 Wed Jun 19 02:42:52 1996  Ulrich Drepper  <drepper@cygnus.com>
3973         * message.c (message_merge): Implement sorting of header entry
3974         lines.
3976 Sat Jun 15 19:46:50 1996  Ulrich Drepper  <drepper@cygnus.com>
3978         * msgmerge.c (usage): Correct -w option in help string (was -W).
3980 Tue Jun 11 15:28:44 1996  Ulrich Drepper  <drepper@cygnus.com>
3982         * xget-lex.c, xget-lex.h (xgettext_lex_comment): Change parameter
3983         type to size_t.
3985         * po-lex.h, po-lex.c (gram_max_allowed_errors): Change type to
3986         size_t.
3988         * message.c, message.h (message_page_width_set): Change parameter
3989         type to size_t.
3991         * Makefile.am (AUTOMAKE_OPTIONS): Add variable.  Must be defined
3992         in all subdirs.
3994 Mon Jun 10 02:53:52 1996  Marcus Daniels  <marcus@sysc.pdx.edu>
3996         * dir-list.c: Include system.h in order to get size_t and NULL.
3998 Thu Jun  6 01:59:31 1996  Ulrich Drepper  <drepper@cygnus.com>
4000         * str-list.h: Include <stddef.h> to get size_t defined.
4001         Reported by Philippe Defert.
4003         * Makefile.am (LDADD): Remove `@INTLLIBS@ ../lib/libnlsut.a
4004         @LIBS@'.  This is not necessary anymore.
4006 Wed Jun  5 00:00:08 1996  Ulrich Drepper  <drepper@cygnus.com>
4008         * xgettext.c, msgunfmt.c (usage): Correct --page-width to --width
4009         in usage string.
4011         * open-po.c (open_po_file): Implement search path for PO files.
4013         * xget-lex.c (xgettext_lex_open): Implement search path for PO
4014         files.  Patch by Peter Miller.
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.
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.
4024         * message.c (wrap): Implement no-wrap special comment.  If given
4025         no wrapping is performed.
4027         * gettextp.c, msgcmp.c, msgfmt.c, msgmerge.c, msgunfmt.c,
4028         xgettext.c: Add `no-wrap' comments at usage message strings.
4030         * msgcmp.c: Implement --directory to specify search path for .po
4031         files.  Patch by Peter Miller.
4033 Tue Jun  4 23:57:59 1996  Ulrich Drepper  <drepper@cygnus.com>
4035         * msgfmt.c: Implement --width option to specify width for which
4036         line wrapping is done.  Patch by Peter Miller.
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.
4042         * msgunfmt.c: Implement --width option to specify width for which
4043         line wrapping is done.  Patch by Peter Miller.
4045 Tue Jun  4 00:12:25 1996  Ulrich Drepper  <drepper@cygnus.com>
4047         * po-hash.y: Add new clause where in GNU style format the name is
4048         `file'.
4050         * Makefile.am (noinst_HEADERS): Add dir-list.h.
4051         (msgcmp_SOURCES, msgfmt_SOURCES, msgmerge_SOURCES, xgettext_SOURCES):
4052         Add dir-list.c
4054 Mon Jun  3 00:43:07 1996  Ulrich Drepper  <drepper@cygnus.com>
4056         * message.h: Add new parameter for message_list_print.
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.
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.
4066         * message.c (make_c_format_description_string): Take additional
4067         parameter DEBUG.  If nonzero, distinguish between c-format and
4068         possible-c-format.
4070         * message.c (message_print_obsolete): Copy precious translator
4071         comment to output file.  Reported by Santiago Vila Doncel.
4073         * dir-list.c: Include file now is called dir-list.h, not
4074         dir_list.h.
4076         * message.c: Include <limits.h>.
4078         * Makefile.am (EXTRA_DIST): Add variable to distribute po-gram.y
4079         and po-hash.y.
4081         * Makefile.am (msgfmt_SOURCES): Fix typo: msgfmt.o -> msgfmt.c.
4083 Sat Jun  1 04:33:48 1996  Ulrich Drepper  <drepper@cygnus.com>
4085         * Makefile.in: Remove support for tupdate.  msgmerge is stable
4086         now.
4088 Wed Apr 10 01:20:49 1996  Ulrich Drepper  <drepper@myware>
4090         * message.c (message_print_obsolete): Don't print
4091         c-format/no-c-format flags for obsolete entries.
4093         * xgettext.c (construct_header): Change DIST to ZONE in header
4094         entry template.
4096         * message.c (message_merge): Insert POT-Creation-Date field before
4097         PO-Revision-Date.
4099 Tue Apr  9 17:13:34 1996  Ulrich Drepper  <drepper@myware>
4101         * xgettext.c (construct_header): Move POT-Creation-Date line
4102         before PO-Revision-Date line.
4104 Fri Apr  5 12:07:19 1996  Ulrich Drepper  <drepper@myware>
4106         * msgmerge.c: Implement --quiet option to prevent dots printed as
4107         progress report.
4108         (merge): Don't print dots if `quiet'.
4110         * msgmerge.c (merge): Nicer statistics message.
4112         * message.c (message_merge): Update POT-Creation-Date field in
4113         header entry from contents in reference file.
4115         * msgfmt.c (format_directive_message): Better test for unchanged
4116         fields in header entry.
4118         * xgettext.c (difftm): Is back.
4119         (construct_header): Print distance to GMT in POT file time stamp.
4121         * xgettext.c (construct_header): Print leading comment and fuzzy
4122         flag.
4124         * message.c (message_print): Allow translator comment to fill more
4125         than one line.
4127         * xgettext.c (construct_header): Introduce POT-Creation-Date
4128         field.
4130 Fri Apr  5 03:05:07 1996  Ulrich Drepper  <drepper@myware>
4132         * msgmerge.c (merge): Rename empty in missing.  There might be
4133         more empty messages which are not missed.
4135         * msgmerge.c (merge): Terminate `.' line if no verbose output is
4136         selected.
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.
4145 Thu Apr  4 11:59:20 1996  Ulrich Drepper  <drepper@myware>
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.
4151         * message.c (message_list_search_fuzzy): Initialize mp before
4152         using it.
4154         * message.c (message_print): Normalize printed messages even more.
4155         Don't print fuzzy flag is msgstr is empty.
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.
4160 Thu Apr  4 01:57:37 1996  Ulrich Drepper  <drepper@myware>
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.
4166 Tue Apr  2 16:19:42 1996  Ulrich Drepper  <drepper@myware>
4168         * xgettext.c (main): Add "warning" to message about unknown input
4169         file type.
4171         * Makefile.in (all-gettext): New goal.  Same as all.
4173         * xgettext.c (usage): Rearange help strings.  One of them was too
4174         long for some dumb catgets programs.  Reported by Marcus Daniels.
4176         * msgfmt.c (format_directive_message): Check for standard header
4177         entry fields.
4179         * xgettext.c (construct_header): MIME-VERSION should be written
4180         MIME-Version.
4182         * msgmerge.c (main): Don't recognize -f option anymore.  This is
4183         the default now.
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.
4189 Tue Apr  2 11:12:15 1996  Ulrich Drepper  <drepper@myware>
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.
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.
4201 Tue Apr  2 03:27:34 1996  Ulrich Drepper  <drepper@myware>
4203         * msgunfmt.c (main): Removed -S option.  People should think twice
4204         before using this and so are forced to use the long version.
4206 Tue Apr  2 03:25:56 1996  François Pinard  <pinard@iro.umontreal.ca>
4208         * msgunfmt.c (usage): Remove Tab character from message.
4210 Tue Apr  2 03:15:16 1996  Marcus Daniels  <marcus@sysc.pdx.edu>
4212         * message.c (significant_c_format_p): If is_c_format is `no' this
4213         is significant.
4215 Tue Apr  2 03:12:24 1996  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
4217         * po.c (po_comment_filepos): Make definition static as declaration
4218         was before.
4220         * msgunfmt.c (usage): Add missing \n to help string.
4222 Mon Apr  1 02:37:45 1996  Ulrich Drepper  <drepper@myware>
4224         * xgettext.c (main): When recognizing file type, default to C
4225         instead of regarding it as an error.  Suggested by Marcus Daniels.
4227         * po.c (po_callback_comment): For now recognize #! also as special
4228         comment.
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.
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.
4238         * po-lex.h (po-gram_error, gram_error_with_loc): Use
4239         error_message_count instead of gram_nerrors.
4241         * xgettext.c: Remove verbose option and variable.
4242         (test_whether_c_format): Don't return `possible' is string
4243         contains no format specifier.
4245 Sun Mar 31 23:23:40 1996  Ulrich Drepper  <drepper@myware>
4247         * xget-lex.c (xgettext_lex): Fix typo.  Reported by François
4248         Pinard.
4250 Thu Mar 28 19:01:22 1996  Ulrich Drepper  <drepper@myware>
4252         * po.c (po_callback_comment): Correct handling of special
4253         comments.  Give whole comment to callback function instead of
4254         tokenized form.
4256 Thu Mar 28 18:37:49 1996  Ulrich Drepper  <drepper@myware>
4258         * xgettext.c (remember_a_message): Always look through comments
4259         because we have to look for c-format comments.
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.
4265 Thu Mar 28 16:52:56 1996  Marcus Daniels  <marcus@sysc.pdx.edu>
4267         * Makefile.in (MSGFMT_OBJ): Add message.o.
4269 Wed Mar 27 03:16:01 1996  Ulrich Drepper  <drepper@myware>
4271         * xget-lex.c (xgettext_lex): Correct implementation of comments
4272         grouped with messages.
4274 Tue Mar 26 21:23:54 1996  Ulrich Drepper  <drepper@myware>
4276         * po.c (po_callback_comment): Remove unused variable string.
4277         Include <ctype.h> because isspace is used.
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.
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.
4288         * po-lex.h: Add prototype for po_lex_pass_obsolete_entries.
4290         * po-lex.c (po_gram_lex): Implement handling of comments for
4291         obsolete entries (#~).
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.
4296         * po-lex.c (po_gram_lex): Small optimization in string collection.
4298         * message.c (message_print_obsolete): Obsolete messages are now
4299         preceded by #~ on each line.
4301         * xgettext.c (remember_a_message): Fix bug with dereferencing
4302         dangling pointer.  This caused xgettext test 1 to fail.
4304         * xgettext.c (construct_header): Update format for file header.
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.
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.
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.
4318 Mon Mar 25 04:25:42 1996  Ulrich Drepper  <drepper@myware>
4320         * message.c, message.h (message_list_print): Parameter filename is
4321         const.
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.
4329         So we break for now after reaching 2 * PAGE_WIDTH instead of
4330         PAGE_WIDTH.
4332         * message.c (message_list_print): Print blank line before trailing
4333         comments.
4335         * message.c (message_print_obsolete): Don't print anything for
4336         obsolete entries with empty msgstr.
4338 Mon Mar 25 03:34:44 1996  Ulrich Drepper  <drepper@myware>
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.
4344         * msgfmt.c (format_directive_domain): Only check for correct
4345         format string elements is special comment contains c-format.
4347         * msgfmt.c: Use sizeof instead of strlen to determine length of
4348         constant string.
4350         * xgettext.c: Implement generation of c-format special comments.
4352         * msgunfmt.c (main): Call message_list_print with additional
4353         argument set to NULL.
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.
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.
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.
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.
4389 Sun Mar 24 17:35:26 1996  Ulrich Drepper  <drepper@myware>
4391         * xgettext.c (usage): Option --output-suffix does not exist
4392         anymore.
4394         * msgmerge.c (usage): --strict does not have short form -S.
4396         * message.h (message_ty): New field `obsolete'.
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 `# '.
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.
4406         * Makefile.in ($(PROGRAMS)): Add generated libraries as
4407         dependencies for programs.
4409         * Makefile.in (PROGRAMS): Remove msgjoin.
4411 Sun Mar 24 01:03:32 1996  Ulrich Drepper  <drepper@myware>
4413         * xgettext.c (extract_comment_filepos): Only add line comment if
4414         requested by -n option.
4416         * po.c (po_callback_comment): Short by one bug in special comment
4417         entry copying.
4419         * po.c (po_callback_comment): Handle special comments.  Separate
4420         them into a list of comma separate entries.
4422         * message.c (message_print): Format of lines containing fuzzy
4423         comments et.al. is now `#, xxx'.
4425         * Makefile.in: msgjoin program is not anymore generated.
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.
4433 Sat Mar 23 01:50:00 1996  Ulrich Drepper  <drepper@myware>
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.
4441         * xgettext.c (scan_c_file): Extract all string if `extract-all'
4442         option is given.  Reported by Roland McGrath.
4444 Thu Mar 14 14:55:20 1996  Ulrich Drepper  <drepper@myware>
4446         * msgfmt.c (format_comment_special): Be prepared that special
4447         comment contains more than one entry, separated by commas.
4449         * message.c (message_print): Special comments are now written in a
4450         line, separated by commas.
4452         * msgmerge.c (merge): Replace `INEXACT' with `fuzzy'.
4454 Thu Mar 14 11:50:48 1996  Marcus Daniels  <marcus@sysc.pdx.edu>
4456         * po-hash.h (po_hash): Change __P to PARAMS in prototype.
4458 Fri Mar  1 13:35:01 1996  Ulrich Drepper  <drepper@myware>
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.
4463         * po-lex.h (po_gram_error): Don't write source file name in fatal
4464         message.
4465         (po_gram_error_with_loc): Ditto.
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.
4472 Fri Mar  1 00:30:49 1996  Ulrich Drepper  <drepper@myware>
4474         * po-lex.h: Use PARAMS instead of __P in header declarations.
4476         * msgcmp.c (compare_methods): Set new field comment_special to
4477         NULL.
4479         * msgjoin.c (join_methods): Set new field comment_special to NULL.
4481         * xgettext.c (exclude_methods): Set new field comment_special to
4482         NULL.
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.
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.
4496         * msgmerge.c (usage): Add --force in help message.
4497         (merge_methods): Set special comment callback to NULL.
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.
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.
4508 Wed Feb 14 01:56:14 1996  Ulrich Drepper  <drepper@myware>
4510         * xgettext.c (main): Remove option --output-suffix.  When default
4511         domain name is "-" write to stdout.
4513 Mon Feb 12 02:20:09 1996  Ulrich Drepper  <drepper@myware>
4515         * xgettext.c (main): Implement --output-suffix parameter to
4516         determine alternative form of suffix for output file.
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.
4524 Sun Jan 21 17:24:56 1996  Ulrich Drepper  <drepper@myware>
4526         * Makefile.in (install-exec): Include empty else case for case
4527         when Perl is not available.  Reported by John David Anglin.
4529 Sat Dec 23 12:41:43 1995  Jun Young  <bangjy@nownuri.nowcom.co.kr>
4531         * gettextp.c (usage): Short option for version info is -V.
4533 Tue Dec 19 22:10:12 1995  Ulrich Drepper  <drepper@myware>
4535         * Makefile.in (Makefile, tupdate): Explicitly use $(SHELL) for
4536         running shell scripts.
4538 Sat Dec  9 17:06:11 1995  Ulrich Drepper  <drepper@myware>
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.
4545 Fri Dec  8 01:38:40 1995  Ulrich Drepper  <drepper@myware>
4547         * Makefile.in (PROGRAMS): Add definitions for new msgjoin program.
4549         * msgjoin.c: Initial revision.
4551 Wed Dec  6 18:43:14 1995  Ulrich Drepper  <drepper@myware>
4553         * open-po.c (open_po_file): Recognize /dev/stdin as name for
4554         stdin.  Recognize .pot as valid extension.
4556 Wed Dec  6 18:05:11 1995  Ulrich Drepper  <drepper@myware>
4558         * msgmerge.c (main): Sort options in getopt loop.
4560 Mon Dec  4 15:37:22 1995  Ulrich Drepper  <drepper@myware>
4562         * msgmerge.c: (main): Remove unused variable `exit_status'.
4564 Sun Dec  3 02:51:31 1995  Ulrich Drepper  <drepper@myware>
4566         * xget-lex.h: [xgettext_token_type_ty]: We now have two keyword
4567         types and also the comma is important.
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`.
4576         * xget-lex.c (phase5_get): Recognize ','.
4577         (xgettext_lex): Pass ',' on caller.
4578         Return different value for keywords `dgetetxt' and `dcgettext`.
4580         * xget-lex.c (xgettext_lex): `gettext_noop' is an default keyword.
4582         * msgunfmt.c (usage):
4583         Message should not contain TABs.  Reported by François Pinard.
4585         * msgunfmt.c (usage):
4586         Correct typo: Uniforun -> Uniforum.  Reported by François Pinard.
4588 Mon Nov 20 21:12:52 1995  Ulrich Drepper  <drepper@myware>
4590         * po-lex.c, message.c: Some more pretty printing.
4592         * message.c (wrap): Don't support '\a' and '\v'.
4594         * xget-lex.c (phase7_getc): Don't support '\v'.
4596         * po-lex.c (control_sequence): Don't support '\v'.
4598         * gettextp.c (expand_escape): Don't support \a and \v.
4600         * msgcmp.c (compare): Really define static.
4602 Thu Nov 16 22:42:33 1995  Ulrich Drepper  <drepper@myware>
4604         * msgmerge.c (merge): Remove additional parameter in in prototype.
4606         * xgettext.c: Reomved unused type definition.  Patch by Peter Miller.
4608         * xget-lex.c: Correct some comments and better implementation of
4609         -k option.  Patch by Peter Miller.
4611         * po.h: Fix typos.  By Peter Miller.
4613         * po-lex.c (po_gram_lex): Prevent accumulation of #! comments.
4615         * po-gram.y (comments): Remove unused rule.
4617         * msgmerge.c: Implement new options sort-by-file and sort-output.
4618         Patches by Peter Miller.
4620         * msgcmp.c (domain): Remove unused global variable.
4621         (domain_directive): Remove unused function.
4623         * message.h: Fix comment for MESSAGE_DOMAIN_DEFAULT definition.
4625         * message.c (message_print): Correct typo.
4626         Clarify comments about ANSI escape sequences.
4627         Patches by Peter Miller.
4629         * Makefile.in (DISTFILES): Remove $(COMSRCS).
4630         (MSGFMT_OBJ): Correct indentation.  Patches by Peter Miller.
4632 Sun Nov 12 12:52:29 1995  Ulrich Drepper  <drepper@myware>
4634         * xgettext.c (line, string, comment): Remove unused global variables.
4635         (read_name_from_file): Remove unused variable `cp'.
4637         * msgmerge.c (merge): Add missing return statement.
4639         * msgfmt.c (check_pair): Correctly pair comparisons.
4641         * msgcmp.c (domain_list, mlp): Remove unused global variables.
4643 Sat Nov 11 21:39:17 1995  Ulrich Drepper  <drepper@myware>
4645         * message.c (message_list_print):
4646         Prevent output if we have no (real) entry.
4648         * xgettext.c (remember_a_message): Implement exclude file handling.
4650 Sat Nov 11 17:38:05 1995  Ulrich Drepper  <drepper@myware>
4652         * msgunfmt.c: Fix message.
4654         * xgettext.c: Use string handling from str-list and .po file
4655         handling use xget-lex et.al.
4657         * xget-lex.h, xget-lex.c, str-list.h, str-list.c, po.h:
4658         Initial revision.
4660         * po-lex.h: Allow variable upper limit of errors.
4661         New prototypes.
4663         * po-lex.c: Allow variable upper limit of errors.
4664         Make comment's text available to the caller.
4666         * po.c, po-hash.y, po-hash.h: Initial revision.
4668         * po-gram.y: Add handling of comments.
4670         * po-gram.h: Remove all but one declaration.
4672         * msgunfmt.c, msgmerge.c: Initial revision.
4674         * msgfmt.c: Adopt for new interface to parser.
4676         * msgcmp.c: Move lot's of general code to other files.
4678         * message.h, message.c:
4679         Extended functionality for Peter Miller's pseudo-OO programming.
4681         * Makefile.in: Rewrite after adding rules for new programs.
4683 Fri Nov 10 10:01:37 1995  Ulrich Drepper  <drepper@myware>
4685         * Makefile.in (PROGRAMS): Add new programs msgmerge and msgunfmt.
4687 Thu Nov  9 01:29:46 1995  Ulrich Drepper  <drepper@myware>
4689         * gettextp.c (usage): Split message in two parts.
4691         * xgettext.c (usage): Split message in three parts.
4693         * xgettext.c (main):
4694         Print warning if --files-from option and file names on command
4695         line are given.
4697         * xgettext.c (long_options):
4698         Mixed up `default-domain' and `directory' values.
4700 Wed Nov  8 23:31:34 1995  Ulrich Drepper  <drepper@myware>
4702         * xgettext.c: Implement -D and -f option.
4704 Tue Nov  7 13:44:44 1995  Ulrich Drepper  <drepper@myware>
4706         * Makefile.in (LIBS): One @LIBS@ must be @INTLLIBS@.
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.
4712         * Makefile.in (install-exec): Use `test -n' instead of
4713         `test XXX != ""'.  Proposed by François Pinard.
4715 Sun Nov  5 23:59:03 1995  Ulrich Drepper  <drepper@myware>
4717         * Makefile.in (INSTALL_PROGRAM): Do not specify mode.
4719 Sun Nov  5 21:13:57 1995  Ulrich Drepper  <drepper@myware>
4721         * xgettext.c, msgfmt.c:
4722         Comments describing what has to be done should start with FIXME.
4724 Sun Nov  5 19:39:56 1995  Ulrich Drepper  <drepper@myware>
4726         * Makefile.in (dist-gettext): Make synonym for dist.
4728 Sun Nov  5 18:11:15 1995  Ulrich Drepper  <drepper@myware>
4730         * po-lex.h (gram_error, gram_error_with_loc):
4731         Don't define macros when !__STDC__
4732         even when using gcc.
4734         * po-lex.c (gram_error, gram_error_with_loc):
4735         Compile if !__STDC__ even if using gcc.
4737         * Makefile.in (po-gram.gen.c po-gram.gen.h):
4738         Remove file prior of generation.
4740 Sun Nov  5 11:39:21 1995  Ulrich Drepper  <drepper@myware>
4742         * Makefile.in (dist): Suppress error message when ln failed.
4743         Get files from $(srcdir) explicitly.
4745         * xgettext.c (process_c_source):
4746         Make gettext_noop the forth builtin marker.
4748 Fri Nov  3 00:57:52 1995  Ulrich Drepper  <drepper@myware>
4750         * msgfmt.c (main): Don't free fname when no suffix was added.
4752 Thu Nov  2 22:55:44 1995  Ulrich Drepper  <drepper@myware>
4754         * Makefile.in (dist): Also remove msgcmp.
4756 Tue Oct 31 22:27:52 1995  Ulrich Drepper  <drepper@myware>
4758         * msgfmt.c: New option --strict: Only if this is given the .mo
4759         file ending is forced.
4761         * msgfmt.c (message_directive):
4762         Call error_with_loc with correct parameters.
4764         * msgfmt.c (message_directive):
4765         Ignores empty message does not count as fatal error.
4767         * Makefile.in (po-gram.gen.c):
4768         Add g suffix to make multiple substitution in one
4769         line possible.
4771 Mon Oct 30 22:35:41 1995  Ulrich Drepper  <drepper@myware>
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.
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.
4783 Sun Oct 29 10:49:59 1995  Ulrich Drepper  <drepper@myware>
4785         * Makefile.in (INSTALL_SCRIPT): New variable.
4786         (install-exec): Install tupdate using INSTALL_SCRIPT to prevent error
4787         when using strip flag.
4789 Sat Oct 28 14:39:33 1995  Ulrich Drepper  <drepper@myware>
4791         * po-gram.h: Include <sys/types.h>.
4793         * xgettext.c (main):
4794         Honour -n option even if --omit-header is given.  By Peter Miller.
4796         * msgcmp.c (check_domain_coverage):
4797         No double space in message.  By Peter Miller.
4799         * msgcmp.c (grammar):
4800         Close input file after coverage check.  Patch by Peter Miller.
4802 Wed Sep 27 20:27:26 1995  Ulrich Drepper  <drepper@myware>
4804         * msgcmp.c:
4805         Don't try to include <string.h>.  This is done in "system.h".
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`.
4812 Tue Sep 26 10:03:29 1995  Ulrich Drepper  <drepper@myware>
4814         * po-gram.h (yyparse): Add redefinition to gram_parse.
4816         * Makefile.in (YFLAGS):
4817         Don't use -p option.  Stupid old yaccs do not know it.
4819         * po-lex.c: Include po-gram.h to get redefinitions of yy* symbols.
4821         * po-gram.h (yylex, yylval, yyerror):
4822         Redefine these symbols to gram_* because the
4823         yacc is now called without -p option.
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.
4829 Mon Sep 25 22:35:55 1995  Ulrich Drepper  <drepper@myware>
4831         * msgfmt.c (add_mo_suffix): Fix typo.
4833         * po-lex.h: Include <sys/types.h>.
4834         (lex_open): Argument is now `const char *'.
4836         * msgfmt.c (add_mo_suffix):
4837         Allow .gmo suffix.  Great idea by Marcus Daniels.
4839 Sat Sep 23 08:20:54 1995  Ulrich Drepper  <drepper@myware>
4841         * po-gram.y, po-lex.c: Include error.h.
4843         * open-po.c (open_po_file):
4844         Remove unused variables `path_dir' and `open_po_file'.
4846 Thu Sep 21 15:30:36 1995  Ulrich Drepper  <drepper@myware>
4848         * Makefile.in (LIBS):
4849         using libnlsut.a twice is not necessary anymore.  libintl.a is
4850         selfcontained.
4852         * gettextp.c (main):
4853         Use dcgettext__ and bindtextdomain__ instead of __dcgettext
4854         and __bindtextdomain.
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.
4860 Wed Sep 20 09:16:57 1995  Ulrich Drepper  <drepper@myware>
4862         * Makefile.in (xgettext): No also link po-gram.gen.o and po-lex.o.
4864         * po-lex.c: Pretty print comments.
4865         Do some CSE in computation of hex value.
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.
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.
4879 Mon Sep 18 21:23:55 1995  Ulrich Drepper  <drepper@myware>
4881         * msgfmt.c (add_mo_suffix): Really check for not .mo suffix.
4883         * xgettext.c (write_out_domain):
4884         Write file names in #: lines to file, not stdout.
4886         * po-gram.y (grammar):
4887         Remove function.  This allows sharing this file in different
4888         programs.
4890         * domain.h (msg_domain): Member DOMAIN_NAME is now const.
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.
4898         * message.h, message.c: Initial revision
4900         * msgfmt.c (grammar): Close comment so that function is seen.
4901         (message_directive): MSGID and MSGSTR are not const.
4903         * msgcmp.c: Initial revision
4905         * po-gram.h (message_directive):
4906         MSGID and MSGSTR argument are not const.
4908         * po-gram.h (grammar): Remove prototype.  Is now locally defined.
4910         * po-lex.h (gram_error, gram_error_with_loc):
4911         Protect the instructions by do while (0).
4913         * msgfmt.c (grammar):
4914         Define function here.  This allows sharing the grammar file
4915         with the msgcmp program.
4917         * msgfmt.c (domain_directive): Free memory of NAME if not needed.
4918         (new_domain): Do not duplicate filename, use it as it is.
4920         * msgfmt.c (message_directive):
4921         Free parameter string memory here if necessary.
4922         Was done in po-gram.y before.
4924         * po-gram.h: Remove comment after closing #endif.
4926         * po-gram.h (grammar): Name parameter in prototype.
4928 Sun Sep 17 23:29:30 1995  Ulrich Drepper  <drepper@myware>
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.
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.
4938         * open-po.c (open_po_file): Remove unused `use_path' parameter.
4940         * Makefile.in (HEADERS): Add po-gram.h and po-lex.h.
4942         * po-gram.h, po-lex.h: Initial revision
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.
4951         * po-lex.c, po-gram.y: Initial revision
4953         * xgettext.c: Remove input path handling.
4954         Adapt for new hashing functions return values.
4956         * msgfmt.c:
4957         Rewrite .po file handling.  Use Peter Millers .po file Yacc grammar.
4959         * open-po.c: Remove handling of input path.
4961         * xgettext.c (write_out_domain):
4962         Split #: lines each 80 columns.  Based on a patch by
4963         Peter Miller.
4965         * Makefile.in: hash.[ch] moved from src/ to lib/ subdirectory.
4967 Wed Aug 23 21:13:11 1995  Ulrich Drepper  <drepper@myware>
4969         * tupdate.in: Don't print comment in front of obsolete entries.
4971 Tue Aug 22 22:16:31 1995  Ulrich Drepper  <drepper@myware>
4973         * Makefile.in (AR, RANLIB): Remove definition.  Not needed here.
4974         Reported by François Pinard.
4976 Sat Aug 19 17:38:22 1995  Ulrich Drepper  <drepper@myware>
4978         * Makefile.in (install-src):
4979         Make behave like install.  I.e. really install the catalogs.
4981 Sat Aug 19 00:57:07 1995  Ulrich Drepper  <drepper@myware>
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).
4989 Fri Aug 18 13:02:04 1995  Ulrich Drepper  <drepper@myware>
4991         * Makefile.in (PROGRAMS): Add tupdate.
4992         (tupdate): New rule.  Rebuild tupdate if tupdate.in or
4993         ../config.status changed.
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).
5002         * gettextp.c (usage): Better help message.
5003         (usage): Add -s description to help screen.
5005 Mon Aug 14 23:50:48 1995  Ulrich Drepper  <drepper@myware>
5007         * Makefile.in (install-src): New no-op goal.
5009 Thu Aug 10 11:26:45 1995  Ulrich Drepper  <drepper@myware>
5011         * tupdate.in: Don't print two " in front of commented out msgstrs.
5013 Wed Aug  9 09:10:30 1995  Ulrich Drepper  <drepper@myware>
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.
5024         * msgfmt.c (write_table):
5025         Third argument to `iterate_table' is now a `const' pointer.
5027         * hash.h (iterate_table): Third arguemtn is `const' pointer.
5029         * xgettext.c (struct id_str): Make fields `const' pointers.
5031 Fri Aug  4 22:45:39 1995  Ulrich Drepper  <drepper@myware>
5033         * msgfmt.c (main): Fix typo: me -> we.
5035         * msgfmt.c (output_file_open): Remove this unused variable.
5036         Reported by Jim Meyering.
5038         * Makefile.in (dist): Remove `copying instead' message.
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.
5049 Thu Aug  3 18:25:37 1995  Ulrich Drepper  <drepper@myware>
5051         * msgfmt.c (usage):
5052         Fix typo: anormalies -> anomalies.
5053         Reported by Karl Anders O/ygard.
5055 Wed Aug  2 18:51:08 1995  Ulrich Drepper  <drepper@myware>
5057         * Makefile.in (ID, TAGS): Do not use $^.
5059         * xgettext.c (write-header): Add `Content-Type' field.
5061 Tue Aug  1 20:07:58 1995  Ulrich Drepper  <drepper@myware>
5063         * Makefile.in (distclean): Remove ID file.
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.
5070 Mon Jul 31 20:57:48 1995  Ulrich Drepper  <drepper@myware>
5072         * msgfmt.c (process_po_file):
5073         Quote msgstr in message "empty `msgstr' entry ignored".
5074         Report by Karl Anders O/ygard.
5076 Sun Jul 30 12:14:29 1995  Ulrich Drepper  <drepper@myware>
5078         * Makefile.in (LIBS): Always use ../intl/libintl.a.
5079         (all): Always depend on ../intl/libintl.a.
5081 Tue Jul 25 00:15:01 1995  Ulrich Drepper  <drepper@myware>
5083         * msgfmt.c (process_po_file): Correct problem with empty lines.
5085 Sun Jul 23 22:47:56 1995  Ulrich Drepper  <drepper@myware>
5087         * msgfmt.c (process_po_file):
5088         Give a message when a sole msgid is found at the end of file.
5090 Wed Jul 19 01:52:13 1995  Ulrich Drepper  <drepper@myware>
5092         * Makefile.in (PROGRAMS): Always compile all three programs.
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.
5102 Tue Jul 18 23:57:16 1995  Ulrich Drepper  <drepper@myware>
5104         * xgettext.c (add_id_str):
5105         `free(msgstr)' can fail on system not allowing free(0).
5106         Reported by Francesco Potorti`.
5108 Tue Jul 18 19:43:41 1995  Ulrich Drepper  <drepper@myware>
5110         * xgettext.c (getpwuid):
5111         Define prototype if !defined _POSIX_VERSION.
5113         * hash.c: Don't include malloc.h and string.h because it will be
5114         done in system.h.
5116         * msgfmt.c: Don't include malloc.h because it will be done in
5117         system.h.
5119 Sat Jul 15 00:45:31 1995  Ulrich Drepper  <drepper@myware>
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.
5125         * Makefile.in (DISTFILES):
5126         Due shorted file names now distribute tupdate.in.
5127         (install, clean): Handle tupdate, not tupdate.perl.
5129         * tupdate.in: Rename tupdate.perl.in to tupdate.in to fit in 14
5130         character file systems.
5132 Thu Jul 13 22:21:22 1995  Ulrich Drepper  <drepper@myware>
5134         * Makefile.in (install): Test whether Perl was found before
5135         installing.
5137         * tupdate.perl.in: Make die message more GNU-like.
5139         * gettextp.c (usage):
5140         Protect prototypes with __P and use K&R form for parameters.
5142         * xgettext.c (main):
5143         Don't use 100u; poor K&R compilers need (unsigned) 100.
5145         * open-po.c (xstrdup): Protect prototype with __P.
5147         * msgfmt.c (usage, new_domain, process_po_file, compare_id,
5148         write_table, check_pair): Protect prototypes with __P.
5150         * hash.c (xmalloc): Protect prototype with __P.
5152 Thu Jul 13 01:39:47 1995  Ulrich Drepper  <drepper@myware>
5154         * Makefile.in (check): New no-op goal.
5156 Wed Jul 12 10:40:54 1995  Ulrich Drepper  <drepper@myware>
5158         * tupdate.perl.in: Implement --help and --version options
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.
5166 Tue Jul 11 22:57:54 1995  Ulrich Drepper  <drepper@myware>
5168         * xgettext.c (usage): Split help string because it breaks 1024
5169         byte limit.
5171         * Makefile.in (install-exec): Install tupdate.
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.
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.
5185         * Makefile.in (DISTFILES,distclean): tupdate.perl is now found here.
5187 Tue Jul 11 01:31:03 1995  Ulrich Drepper  <drepper@myware>
5189         * Makefile.in: msgfmt.o depends on ../lib/printf.h.
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!).
5195         * open-po.c: Protect inclusion of string.h and stdlib.h.
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.
5204 Tue Jul  4 00:39:58 1995  Ulrich Drepper  <drepper@myware>
5206         * xgettext.c: Don't write "Version:" field for msgid "".
5208 Mon Jul  3 23:02:04 1995  Ulrich Drepper  <drepper@myware>
5210         * xgettext.c, msgfmt.c: Better comment.
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.
5222         * hash.c: Include malloc.c and protect string.h inclusion.
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.
5229         * open-po.c: Include system.h for EXIT_FAILURE.
5231         * msgfmt.c: Fix typo in !__STDC__ path.
5232         (process_po_file): Change for new .po file format.
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.
5238 Sun Jul  2 21:31:00 1995  Ulrich Drepper  <drepper@myware>
5240         * gettextp.c: gettextp.c (usage): Fix typo in help message.
5241         Reported by François Pinard.
5243 Sun Jul  2 02:12:41 1995  Ulrich Drepper  <drepper@myware>
5245         * First official release.  This directory contains the
5246         source code for the programs specified in the Uniforum proposal
5247         for internationalization.