Sync usage with man page.
[netbsd-mini2440.git] / gnu / dist / gettext / gettext-tools / src / ChangeLog
blob1710b89fd629d69b3ea875fb079ecdf4b6d530b1
1 2005-04-11  Bruno Haible  <bruno@clisp.org>
3         * gettext-0.14.4 released.
5 2005-04-11  Bruno Haible  <bruno@clisp.org>
7         * gettext-po.h (LIBGETTEXTPO_VERSION): Bump version number.
9 2005-03-14  Bruno Haible  <bruno@clisp.org>
11         * gettext-0.14.3 released.
13 2005-03-08  Bruno Haible  <bruno@clisp.org>
15         * gettext-po.h (LIBGETTEXTPO_VERSION): Bump version number.
17 2005-02-26  Bruno Haible  <bruno@clisp.org>
19         * format-scheme.c (format_arg_type): Add FAT_COMPLEX. Remove
20         FAT_FUNCTION.
21         (make_intersected_element): Simplify also the intersection with
22         FAT_COMPLEX.
23         (make_union_element): Simplify also the union with FAT_COMPLEX.
24         (IIC): New array.
25         (nocheck_params): Remove function.
26         (parse_upto): Remove handling of ~W, ~<, ~>.
27         Implement non-CL handling of ~C, ~I, ~_, ~/, ~T.
28         Implement handling of ~Y, ~!, ~Q, ~K.
30 2005-02-26  Bruno Haible  <bruno@clisp.org>
32         * format-scheme.c (parse_upto): Remove support for ~!.
33         Reported by Kevin Ryde <user42@zip.com.au>.
35 2005-02-24  Bruno Haible  <bruno@clisp.org>
37         * gettext-0.14.2 released.
39 2005-02-12  Bruno Haible  <bruno@clisp.org>
41         * Makefile.msvc (gettextpo.lib): Link with intl.lib as well.
43 2005-02-12  Bruno Haible  <bruno@clisp.org>
45         * Makefile.msvc (msginit_OBJECTS): Add plural-count.obj.
46         * Makefile.vms (msginit_OBJECTS): Add plural-count.obj.
48 2005-02-10  Bruno Haible  <bruno@clisp.org>
50         * gettext-po.h (po_header_set_field): New declaration.
51         * gettext-po.c (po_header_set_field): New function.
52         Suggested by Ross Golder <ross@golder.org>.
54 2005-02-10  Bruno Haible  <bruno@clisp.org>
56         * gettext-po.h (LIBGETTEXTPO_VERSION): New macro.
57         (libgettextpo_version): New declaration.
58         * gettext-po.c (libgettextpo_version): New variable.
60 2005-02-10  Bruno Haible  <bruno@clisp.org>
62         * gettext-po.h (po_message_remove_filepos, po_message_add_filepos): New
63         declarations.
64         * gettext-po.c (po_message_remove_filepos, po_message_add_filepos): New
65         functions.
66         Suggested by Asgeir Frimannsson <asgeirf@redhat.com>.
68 2005-02-10  Bruno Haible  <bruno@clisp.org>
70         * gettext-po.h (po_message_set_extracted_comments): New declaration.
71         * gettext-po.c (po_message_set_extracted_comments): New function.
72         Suggested by Asgeir Frimannsson <asgeirf@redhat.com>.
74 2005-02-08  Bruno Haible  <bruno@clisp.org>
76         * msginit.c (get_user_email): Cast _() to 'char *', to avoid compiler
77         warning.
79 2005-02-07  Bruno Haible  <bruno@clisp.org>
81         Make the tools work in the tr_TR locale.
82         * po-charset.c: Include c-strcase.h instead of strcase.h.
83         (po_charset_canonicalize): Use c_strcasecmp.
84         * msgcmp.c: Include c-strcase.h instead of strcase.h.
85         (compare): Use c_strncasecmp.
86         * msginit.c: Include c-strcase.h instead of strcase.h.
87         (content_type): Use c_strcasecmp.
88         * msgmerge.c: Include c-strcase.h instead of strcase.h.
89         (message_merge, merge): Use c_strncasecmp.
90         * xgettext.c: Include c-strcase.h instead of strcase.h.
91         (language_to_extractor): Use c_strcasecmp.
92         Reported by Recai Oktaş <roktas@omu.edu.tr>.
94 2005-02-07  Bruno Haible  <bruno@clisp.org>
96         * project-id: Use LC_ALL=C to protect range expression against
97         Estonian locale.
99 2005-02-06  Bruno Haible  <bruno@clisp.org>
101         Leave #: lines with unknown syntax alone instead of turning them into
102         plain comments.
103         * po-hash.h: Remove file.
104         * po-hash-gen.y: Remove file.
105         * read-po-abstract.c: Don't include po-hash.h.
106         (po_parse_comment_filepos, po_parse_comment_solaris_filepos): New
107         functions.
108         (po_callback_comment_dispatcher): Call them instead of the old
109         po_parse_comment_filepos.
110         * read-stringtable.c: Don't include po-hash.h.
111         * Makefile.am (noinst_HEADERS): Remove po-hash.h, po-hash-gen.h.
112         (COMMON_SOURCE): Remove po-hash-gen.y.
113         (BUILT_SOURCES): Remove po-hash-gen.c, po-hash-gen.h.
114         * Makefile.msvc (OBJECTS): Remove po-hash-gen.obj.
115         (po-hash-gen.obj): Remove rule.
116         * Makefile.vms (OBJECTS): Remove po-hash-gen.obj.
117         (po-hash-gen.obj): Remove rule.
118         * FILES: Update.
119         Reported by David Fraser <davidf@sjsoft.com>.
121 2005-02-04  Bruno Haible  <bruno@clisp.org>
123         * plural-table.c (plural_table): Add an entry about Vietnamese.
124         Explanations by Clytie Siddall <clytie@riverland.net.au>.
126 2005-01-29  Bruno Haible  <bruno@clisp.org>
128         * Makefile.am (msgcmp_LDADD, msgfmt_LDADD, msgmerge_LDADD,
129         msgunfmt_LDADD, xgettext_LDADD, msgattrib_LDADD, msgcat_LDADD,
130         msgcomm_LDADD, msgconv_LDADD, msgen_LDADD, msgexec_LDADD,
131         msgfilter_LDADD, msggrep_LDADD, msguniq_LDADD): Add INTL_MACOSX_LIBS.
133 2005-01-27  Bruno Haible  <bruno@clisp.org>
135         * msgfmt.c (formatstring_error_logger): Cast the fprrintf argument,
136         to make it work on big-endian 64-bit machines.
138 2005-01-16  Bruno Haible  <bruno@clisp.org>
140         Support for Scheme.
141         * message.h (format_type): New enum value 'format_scheme'.
142         (NFORMATS): Increment.
143         * message.c (format_language): Add format_scheme entry.
144         (format_language_pretty): Likewise.
145         * format.h (formatstring_scheme): New declaration.
146         * format-scheme.c: New file, based on format-lisp.c.
147         * format.c (formatstring_parsers): Add formatstring_scheme.
148         * x-scheme.h: New file.
149         * x-scheme.c: New file.
150         * xgettext.c: Include x-scheme.h.
151         (flag_table_scheme): New variable.
152         (main): Invoke init_flag_table_scheme, x_scheme_extract_all,
153         x_scheme_keyword.
154         (usage): Mention Scheme source language.
155         (xgettext_record_flag): Handle format_scheme.
156         (language_to_extractor): Add Scheme rule.
157         (extension_to_language): Add Scheme rule.
158         * Makefile.am (noinst_HEADERS): Add x-scheme.h.
159         (FORMAT_SOURCE): Add format-scheme.c.
160         (xgettext_SOURCES): Add x-scheme.c.
161         * Makefile.msvc (OBJECTS): Add format-scheme.obj.
162         (xgettext_OBJECTS): Add x-scheme.obj.
163         (format-scheme.obj, x-scheme.obj): New rules.
164         * Makefile.vms (OBJECTS): Add format-scheme.obj.
165         (xgettext_OBJECTS): Add x-scheme.obj.
166         (format-scheme.obj, x-scheme.obj): New rules.
167         * FILES: Update.
169 2005-01-08  Bruno Haible  <bruno@clisp.org>
171         * msggrep.c (grep_args, grep_path, grep_argv): Remove variables.
172         (struct grep_task): New type.
173         (grep_task): New variable.
174         (main): Initialize grep_task instead of grep_args. Change processing
175         of options 'E', 'F' to set a matcher, of 'e', 'f' to append to the
176         pattern string, and of 'i' to set a boolean. Compile the patterns.
177         (is_string_selected): Execute a compiled pattern instead of calling
178         the grep program.
179         (is_message_selected): Update.
180         * Makefile.am (AM_CPPFLAGS): Add -I option for libgrep.
181         (LIBGREP): New variable.
182         (msggrep_LDADD): Add $(LIBGREP).
183         * Makefile.msvc (INCLUDES): Add libgrep directory.
184         (msggrep.exe): Link with libgrep.
185         * Makefile.vms (INCLUDES): Add libgrep directory.
186         (msggrep.exe): Link with libgrep.
188 2005-01-09  Bruno Haible  <bruno@clisp.org>
190         * msgl-ascii.h (is_ascii_msgdomain_list): New declaration.
191         * msgl-ascii.c (is_ascii_msgdomain_list): New function.
192         * x-po.c (header_charset): New variable.
193         (extract_add_message): When seeing the header entry, store the charset
194         in header_charset.
195         (extract): Store the value of header_charset in the new constructed
196         header entry.
197         * xgettext.c (main): Convert the existing PO file to UTF-8 if it was
198         not entirely ASCII.
199         Reported by Jörg Schilling <schilling@fokus.fraunhofer.de>.
201 2005-01-08  Bruno Haible  <bruno@clisp.org>
203         * msggrep.c (usage): Explain COMMENT-PATTERN syntax as well.
205 2005-01-06  Bruno Haible  <bruno@clisp.org>
207         * x-tcl.c (read_word): Ignore non-space whitespace at the beginning.
208         Reported by William J Poser <wjposer@ldc.upenn.edu>.
210 2005-01-06  Bruno Haible  <bruno@clisp.org>
212         * write-csharp.c (msgdomain_write_csharp): Don't call fclose after
213         fwriteerror.
214         * write-java.c (msgdomain_write_java): Likewise.
215         * write-mo.c (msgdomain_write_mo): Likewise.
216         * write-po.c (msgdomain_list_print): Likewise.
217         * write-qt.c (msgdomain_write_qt): Likewise.
218         * write-resources.c (execute_writing_input): Likewise.
219         * write-tcl.c (msgdomain_write_tcl): Likewise.
221 2005-01-05  Bruno Haible  <bruno@clisp.org>
223         * msgattrib.c (main): Update year in --version output.
224         * msgcat.c (main): Likewise.
225         * msgcmp.c (main): Likewise.
226         * msgcomm.c (main): Likewise.
227         * msgconv.c (main): Likewise.
228         * msgen.c (main): Likewise.
229         * msgexec.c (main): Likewise.
230         * msgfilter.c (main): Likewise.
231         * msgfmt.c (main): Likewise.
232         * msggrep.c (main): Likewise.
233         * msginit.c (main): Likewise.
234         * msgmerge.c (main): Likewise.
235         * msgunfmt.c (main): Likewise.
236         * msguniq.c (main): Likewise.
237         * xgettext.c (main): Likewise.
239 2005-01-07  Bruno Haible  <bruno@clisp.org>
241         * gettext-po.c (po_file_read): Interpret "-" and "/dev/stdin" as
242         denoting stdin.
243         Suggested by Asgeir Frimannsson <asgeirf@redhat.com>.
245 2004-11-29  Bruno Haible  <bruno@clisp.org>
247         * Makefile.am (libgettextpo_la_LDFLAGS): Add @LTLIBINTL@ @LTLIBICONV@.
248         Reported by Sam Steingold <sds@gnu.org>.
250 2004-10-01  Guido Flohr  <guido@imperia.net>
252         * x-perl.c (x_perl_prelex): Recognize function names starting with '-'.
253         Reported by Ryan Anderson <ryan@autoweb.net>.
255 2004-09-16  Bruno Haible  <bruno@clisp.org>
257         * format.h (formatstring_error_logger_t): Modify decl for GCC <= 3.0.
258         Reported by Jens A. Tkotz <jens@peino.de>.
260 2004-09-11  Bruno Haible  <bruno@clisp.org>
262         * Makefile.am (msginit_SOURCES): Add plural-count.c.
263         * msginit.c (update_msgstr_plurals): New function.
264         (main): Call it.
265         * msgmerge.c (match_domain): Provide the appropriate number of plural
266         forms for messages that don't occur in the Def.po file.
267         Reported by Jens A. Tkotz <jens@peino.de>.
269 2004-09-06  Bruno Haible  <bruno@clisp.org>
271         * format.h (formatstring_error_logger_t): New type.
272         (struct formatstring_parser): Change calling convention of 'check'
273         method.
274         (check_msgid_msgstr_format): New declaration.
275         * format-awk.c (format_check): Use error_logger argument instead of
276         noisy and error_at_line.
277         * format-c.c (format_check): Likewise.
278         * format-csharp.c (format_check): Likewise.
279         * format-elisp.c (format_check): Likewise.
280         * format-gcc-internal.c (format_check): Likewise.
281         * format-java.c (format_check): Likewise.
282         * format-librep.c (format_check): Likewise.
283         * format-lisp.c (format_check): Likewise.
284         * format-pascal.c (format_check): Likewise.
285         * format-perl.c (format_check): Likewise.
286         * format-perl-brace.c (format_check): Likewise.
287         * format-php.c (format_check): Likewise.
288         * format-python.c (format_check): Likewise.
289         * format-qt.c (format_check): Likewise.
290         * format-sh.c (format_check): Likewise.
291         * format-tcl.c (format_check): Likewise.
292         * format-ycp.c (format_check): Likewise.
293         * format.c (check_msgid_msgstr_format): New function, extracted from
294         msgfmt.c.
295         * msgfmt.c (curr_msgid_pos): New variable.
296         (formatstring_error_logger): New function.
297         (check_pair): Use check_msgid_msgstr_format, formatstring_error_logger.
298         * msgmerge.c (msgfmt_check_pair_fails): Update.
299         * gettext-po.h (po_message_check_format): New declaration.
300         * gettext-po.c (po_error_logger, po_message_check_format): New
301         functions.
303 2004-09-05  Bruno Haible  <bruno@clisp.org>
305         * po-error.h: New file.
306         * po-error.c: New file.
307         * po-charset.c: Include po-error.h.
308         (po_lex_charset_set): Use po_multiline_warning instead of
309         multiline_warning.
310         * po-lex.h: Include po-error.h.
311         (po_gram_error): Use po_error instead of error.
312         (po_gram_error_at_line): Use po_error_at_line instead of error_at_line.
313         * po-lex.c (po_gram_error): Use po_error instead of error.
314         (po_gram_error_at_line): Use po_error_at_line instead of error_at_line.
315         (mbfile_getc, lex_getc): Use po_error instead of error.
316         * read-po-abstract.c (po_scan): Likewise.
317         * write-po.c: Include po-error.h instead of error.h.
318         (wrap): Use po_error instead of error.
319         (message_print, message_print_obsolete): Use po_multiline_warning
320         instead of multiline_warning.
321         (msgdomain_list_print): Use po_error instead of error, po_error_at_line
322         instead of error_at_line.
323         * str-list.h (string_list_join): New declaration.
324         * str-list.c (string_list_join): New function.
325         * message.h (message_list_insert_at): New declaration.
326         * message.c (message_list_insert_at): New function.
327         * gettext-po.h (po_filepos_t): New type.
328         (struct po_error_handler, po_error_handler_t): New types.
329         (po_file_create): New declaration.
330         (po_file_read): Add handler argument.
331         (po_file_write, po_message_insert, po_message_create,
332         po_message_set_msgid, po_message_set_msgid_plural,
333         po_message_set_msgstr, po_message_set_msgstr_plural,
334         po_message_comments, po_message_set_comments,
335         po_message_extracted_comments, po_message_filepos,
336         po_message_set_obsolete, po_message_set_fuzzy, po_message_set_format,
337         po_filepos_file, po_filepos_start_line): New declarations.
338         * gettext-po.c (po_file_create): New function.
339         (po_file_read): Add handler argument. Keep an old version for backward
340         compatibility.
341         (po_file_write): New function.
342         (po_message_iterator): Store more information, to make
343         po_message_insert possible.
344         (po_message_iterator_free): Update.
345         (po_next_message): Don't crash if iterator->mlp is NULL.
346         (po_message_insert): New function.
347         (po_message_create): New function.
348         (po_message_set_msgid, po_message_set_msgid_plural,
349         po_message_set_msgstr, po_message_set_msgstr_plural,
350         po_message_comments, po_message_set_comments,
351         po_message_extracted_comments, po_message_filepos,
352         po_message_set_obsolete, po_message_set_fuzzy, po_message_set_format,
353         po_filepos_file, po_filepos_start_line): New functions.
354         * Makefile.am (noinst_HEADERS): Add po-error.h.
355         (COMMON_SOURCE): Add po-error.c.
356         * Makefile.msvc (OBJECTS): Add po-error.obj.
357         (po-error.obj): New rule.
358         * Makefile.vms (OBJECTS): Add po-error.obj.
359         (po-error.obj): New rule.
360         * FILES: Update.
362 2004-09-03  Bruno Haible  <bruno@clisp.org>
364         * Makefile.am (msginit_LDADD): Use the INTL_MACOSX_LDFLAGS.
366 2004-08-30  Bruno Haible  <bruno@clisp.org>
368         * plural-table.c (plural_table): Czech is now like Slovak.
369         Reported by Stepan Kasal <kasal@ucw.cz>.
371 2004-06-23  Bruno Haible  <bruno@clisp.org>
373         * x-c.c (phase1_getc): Fix phase0_getc invocation.
374         Reported by Matt Dreezer <matthew.dreezer@edl.uk.eds.com>.
376 2004-05-14  Bruno Haible  <bruno@clisp.org>
378         * format-java.c (message_format_parse): Fix argument of freesa() calls.
380 2004-03-19  Bruno Haible  <bruno@clisp.org>
382         * Makefile.am (install-exec-clean): Don't remove libgettextsrc.a on
383         AIX.
384         Reported by Kouichi Hashikawa <z01a7ksy@cs.ecip.tohoku.ac.jp>.
386 2004-03-14  Bruno Haible  <bruno@clisp.org>
388         * format-lisp.c (parse_upto): Add integer restriction for the dispatch
389         argument in ~[...~].
391 2004-03-02  Bruno Haible  <bruno@clisp.org>
393         * read-csharp.c (msgdomain_read_csharp): Extend the lang -> frobbedlang
394         mapping so as to support Serbian and Uzbek locales.
395         * write-csharp.c (msgdomain_write_csharp): Likewise.
396         Reported by Jorn Baayen <jbaayen@dds.nl>.
398 2004-02-27  Bruno Haible  <bruno@clisp.org>
400         * plural-table.c (plural_table): Add an entry about Serbian.
401         Reported by Danilo Segan <danilo@gnome.org>.
403 2004-01-29  Bruno Haible  <bruno@clisp.org>
405         * gettext-0.14.1 released.
407 2004-01-28  Bruno Haible  <bruno@clisp.org>
409         * gettext-0.14 released.
411 2004-01-18  Bruno Haible  <bruno@clisp.org>
413         * msginit.c (catalogname_for_locale): Add entries for Akan, Avaric,
414         Bambara, Cree, Divehi (Maldivian), Éwé, Igbo, Kongo, Kanuri, Ganda,
415         Luba-Katanga, Ojibwa, Venda.
416         (englishname_of_language): Likewise, and also for Fulah (Fulfulde).
418 2004-01-09  Bruno Haible  <bruno@clisp.org>
420         * format.h (struct formatstring_parser): Add 'translated' argument to
421         parse function.
422         (get_sysdep_c_format_directives): Renamed from
423         get_c99_format_directives. Add 'translated' argument. Change meaning
424         of endpos in returned array.
425         * format-c.c (struct spec): Rename field c99_directives to
426         sysdep_directives, and c99_directives_count to sysdep_directives_count.
427         (format_parse): Add 'translated' argument. Handle 'I' flag. Store the
428         pointer past the '>' character instead of the pointer to the '>'.
429         (format_c_parse, format_objc_parse): Add 'translated' argument.
430         (get_sysdep_c_format_directives): Renamed from
431         get_c99_format_directives. Add 'translated' argument.
432         * format-awk.c (format_parse): Add 'translated' argument.
433         * format-csharp.c (format_parse): Likewise.
434         * format-elisp.c (format_parse): Likewise.
435         * format-gcc-internal.c (format_parse): Likewise.
436         * format-java.c (format_parse): Likewise.
437         * format-librep.c (format_parse): Likewise.
438         * format-lisp.c (format_parse): Likewise.
439         * format-pascal.c (format_parse): Likewise.
440         * format-perl-brace.c (format_parse): Likewise.
441         * format-perl.c (format_parse): Likewise.
442         * format-php.c (format_parse): Likewise.
443         * format-python.c (format_parse): Likewise.
444         * format-qt.c (format_parse): Likewise.
445         * format-sh.c (format_parse): Likewise.
446         * format-tcl.c (format_parse): Likewise.
447         * format-ycp.c (format_parse): Likewise.
448         * msgfmt.c (check_pair): Update.
449         * msgmerge.c (msgfmt_check_pair_fails): Likewise.
450         * read-mo.c (get_sysdep_string): Don't add '<'...'>' around segments
451         of length 1.
452         (read_mo_file): Treat major revision 1 like major revision 0.
453         * write-mo.c (write_table): Update. Use major revision 1 if "I" occurs
454         among the sysdep segments.
455         * xgettext.c (set_format_flags_from_context, remember_a_message,
456         remember_a_message_plural): Update.
458 2004-01-14  Bruno Haible  <bruno@clisp.org>
460         * msginit.c (fill_header): Avoid a NULL pointer access when the header
461         has no comment attached to it.
462         Reported by Josep Puigdemont <baldrick@terra.es>.
464 2004-01-09  Bruno Haible  <bruno@clisp.org>
466         * msgattrib.c (main): Update year in --version output.
467         * msgcat.c (main): Likewise.
468         * msgcmp.c (main): Likewise.
469         * msgcomm.c (main): Likewise.
470         * msgconv.c (main): Likewise.
471         * msgen.c (main): Likewise.
472         * msgexec.c (main): Likewise.
473         * msgfilter.c (main): Likewise.
474         * msgfmt.c (main): Likewise.
475         * msggrep.c (main): Likewise.
476         * msginit.c (main): Likewise.
477         * msgmerge.c (main): Likewise.
478         * msgunfmt.c (main): Likewise.
479         * msguniq.c (main): Likewise.
480         * xgettext.c (main): Likewise.
482 2003-12-29  Bruno Haible  <bruno@clisp.org>
484         * xgettext.h: Include stdlib.h, str-list.h.
485         (struct refcounted_string_list_ty): New type.
486         (add_reference, drop_reference): New functions.
487         (savable_comment, savable_comment_add, savable_comment_reset,
488         savable_comment_to_xgettext_comment): New declarations.
489         * xgettext.c (savable_comment): New variable.
490         (savable_comment_add, savable_comment_reset,
491         savable_comment_to_xgettext_comment): New functions.
492         * x-java.c (struct refcounted_string_list_ty, comment, add_reference,
493         drop_reference, x_java_comment_add, x_java_comment_reset,
494         x_java_comment_to_xgettext_comment): Remove. Use replacement from
495         xgettext.{h,c} instead.
496         * x-csharp.c (struct refcounted_string_list_ty, comment, add_reference,
497         drop_reference, x_csharp_comment_add, x_csharp_comment_reset,
498         x_csharp_comment_to_xgettext_comment): Remove. Use replacement from
499         xgettext.{h,c} instead.
500         * x-c.c (comment_line_end): Call savable_comment_add instead of
501         xgettext_comment_add.
502         (struct token_ty): Add 'comment' field.
503         (free_token): Free it.
504         (phase5_get): Initialize token's 'comment' field.
505         (phase6_get): Call savable_comment_reset instead of
506         xgettext_comment_reset.
507         (phase8a_get): Initialize token's 'comment' field.
508         (phase8b_get): Call savable_comment_reset instead of
509         xgettext_comment_reset.
510         (phase8c_get): In @"...", use the comment of the first token, not of
511         the second.
512         (struct xgettext_token_ty): Add 'comment' field.
513         (x_c_lex): Deal with the token's comment.
514         (extract_parenthesized): Call savable_comment_to_xgettext_comment and
515         savable_comment_reset. Free the token's comment field.
516         * x-python.c (comment_line_end): Call savable_comment_add instead of
517         xgettext_comment_add.
518         (struct token_ty): Add 'comment' field.
519         (phase5_get): Call savable_comment_reset instead of
520         xgettext_comment_reset. Initialize token's 'comment' field.
521         (extract_parenthesized): Call savable_comment_to_xgettext_comment and
522         savable_comment_reset. Free the token's comment field.
524 2003-12-28  Bruno Haible  <bruno@clisp.org>
526         * read-mo.h (read_mo_file): Change 'fn' into 'filename'.
527         * read-mo.c (read_mo_file): Likewise.
529 2003-12-28  Bruno Haible  <bruno@clisp.org>
531         * write-resources.h: New file.
532         * write-resources.c: New file.
533         * msgfmt.cs: New file.
534         * msgfmt.c: Include write-resources.h.
535         (csharp_resources_mode): New variable.
536         (long_options): Add --csharp-resources.
537         (main): Handle --csharp-resources. More generic code for detection of
538         contradicting modes. Invoke msgdomain_write_csharp_resources.
539         (usage): Document --csharp-resources option.
540         (msgfmt_set_domain): Update.
541         * read-resources.h: New file.
542         * read-resources.c: New file.
543         * msgunfmt.cs (DumpResource): Add a constructor that dumps a .resources
544         file.
545         (Main): Invoke it when only one argument is given.
546         * msgunfmt.c: Include read-resources.h.
547         (csharp_resources_mode): New variable.
548         (long_options): Add --csharp-resources.
549         (main): Handle --csharp-resources. More generic code for detection of
550         contradicting modes. Invoke read_one_file instead of read_mo_file.
551         (usage): Document --csharp-resources option.
552         (read_one_file): New function.
553         * Makefile.am (noinst_HEADERS): Add read-resources.h and
554         write-resources.h.
555         (msgfmt_SOURCES): Add write-resources.c.
556         (msgunfmt_SOURCES): Add read-resources.c.
557         (EXTRA_DIST): Add msgfmt.cs.
558         (CLEANFILES): Add msgfmt.net.exe.
559         (msgfmt.net.exe): New rule.
560         (all-csharp-yes): Depend on it.
561         (install-exec-csharp-yes): Also install msgfmt.net.exe.
562         (uninstall-csharp-yes): Also uninstall msgfmt.net.exe.
563         * Makefile.msvc (msgfmt_OBJECTS): Add write-resources.obj.
564         (msgunfmt_OBJECTS): Add read-resources.obj.
565         (write-resources.obj, read-resources.obj): New rules.
566         * Makefile.vms (msgfmt_OBJECTS): Add write-resources.obj.
567         (msgunfmt_OBJECTS): Add read-resources.obj.
568         (write-resources.obj, read-resources.obj): New rules.
569         * FILES: Update.
571 2003-12-26  Bruno Haible  <bruno@clisp.org>
573         Support for C#.
574         * write-csharp.h: New file.
575         * write-csharp.c: New file.
576         * msgfmt.c: Include write-csharp.h.
577         (csharp_mode, csharp_resource_name, csharp_locale_name,
578         csharp_base_directory): New variables.
579         (long_options): Add option --csharp.
580         (main): Handle option --csharp. Initialize csharp_resource_name,
581         csharp_locale_name, csharp_base_directory. Perform checks for C# mode.
582         Invoke msgdomain_write_csharp.
583         (usage): Document --csharp option and C# mode.
584         (msgfmt_set_domain): Ignore in C# mode.
585         * read-csharp.h: New file.
586         * read-csharp.c: New file.
587         * msgunfmt.cs: New file.
588         * msgunfmt.c: Include read-csharp.h.
589         (csharp_mode, csharp_resource_name, csharp_locale_name,
590         csharp_base_directory): New variables.
591         (long_options): Add option --csharp.
592         (main): Handle option --csharp. Initialize csharp_resource_name,
593         csharp_locale_name, csharp_base_directory. Perform checks for C# mode.
594         Invoke msgdomain_read_csharp.
595         (usage): Document --csharp option and C# mode.
596         * Makefile.am (noinst_HEADERS): Add read-csharp.h, write-csharp.h.
597         (CSHARPCOMP, CSHARPCOMPFLAGS): New variables.
598         (msgfmt_SOURCES): Add write-csharp.c.
599         (msgunfmt_SOURCES): Add read-csharp.c.
600         (EXTRA_DIST): Add msgunfmt.cs.
601         (CLEANFILES): Add msgunfmt.net.exe.
602         (all-csharp-yes, all-csharp-no): New rules.
603         (all-local): Depend on them.
604         (msgunfmt.net.exe): New rule.
605         (install-exec-csharp-yes, install-exec-csharp-no): New rules.
606         (install-exec-local): Depend on them.
607         (installdirs-csharp): New rule.
608         (installdirs-local): Depend on it.
609         (uninstall-csharp-yes, uninstall-csharp-no): New rules.
610         (uninstall-local): Depend on it.
611         * Makefile.msvc (msgfmt_OBJECTS): Add write-csharp.obj.
612         (msgunfmt_OBJECTS): Add read-csharp.obj.
613         (write-csharp.obj, read-csharp.obj): New rules.
614         * Makefile.vms (msgfmt_OBJECTS): Add write-csharp.obj.
615         (msgunfmt_OBJECTS): Add read-csharp.obj.
616         (write-csharp.obj, read-csharp.obj): New rules.
617         * FILES: Update.
619 2003-12-26  Bruno Haible  <bruno@clisp.org>
621         * read-java.c (msgdomain_read_java): Relocate also the GETTEXTJAR
622         value.
623         * urlget.c (fetch): Likewise.
625 2003-12-26  Bruno Haible  <bruno@clisp.org>
627         * write-java.c (write_java_code): Emit a static method
628         'get_msgid_plural_table' instead of a static field 'plural'.
629         * gnu/gettext/DumpResource.java (DumpResource.dump): Exploit a
630         'get_msgid_plural_table' method if it exists.
632 2003-12-14  Bruno Haible  <bruno@clisp.org>
634         * message.h (format_type): New enum value 'format_csharp'.
635         (NFORMATS): Increment.
636         * message.c (format_language): Add format_csharp entry.
637         (format_language_pretty): Likewise.
638         * format.h (formatstring_csharp): New declaration.
639         * format-csharp.c: New file.
640         * format.c (formatstring_parsers): Add formatstring_csharp.
641         * x-csharp.h: New file.
642         * x-csharp.c: New file.
643         * xgettext.c: Include x-csharp.h.
644         (flag_table_csharp): New variable.
645         (main): Invoke init_flag_table_csharp, x_csharp_extract_all,
646         x_csharp_keyword.
647         (usage): Mention C# source language.
648         (xgettext_record_flag): Handle format_csharp.
649         (language_to_extractor): Add C# rule.
650         (extension_to_language): Add C# rule.
651         * Makefile.am (noinst_HEADERS): Add x-csharp.h.
652         (FORMAT_SOURCE): Add format-csharp.c.
653         (xgettext_SOURCES): Add x-csharp.c.
654         * Makefile.msvc (OBJECTS): Add format-csharp.obj.
655         (xgettext_OBJECTS): Add x-csharp.obj.
656         (format-csharp.obj, x-csharp.obj): New rules.
657         * Makefile.vms (OBJECTS): Add format-csharp.obj.
658         (xgettext_OBJECTS): Add x-csharp.obj.
659         (format-csharp.obj, x-csharp.obj): New rules.
660         * FILES: Update.
662 2003-12-28  Bruno Haible  <bruno@clisp.org>
664         * msgexec.c (process_string): Pass ignore_sigpipe = false.
665         * msgfilter.c (process_string): Likewise.
666         * msggrep.c (is_string_selected): Likewise.
667         * msginit.c (project_id, project_id_version, get_user_email,
668         language_team_address): Likewise.
669         * read-java.c (execute_and_read_po_output): Likewise.
670         * read-tcl.c (msgdomain_read_tcl): Likewise.
671         * urlget.c (execute_it): Pass ignore_sigpipe = true.
672         (fetch): Pass ignore_sigpipe = true when fetching the file, = false
673         otherwise.
675 2003-12-14  Bruno Haible  <bruno@clisp.org>
677         * x-c.c (SIZEOF): New macro.
678         (phase1_ungetc): Verify that the pushback buffer's size is sufficient.
679         (phase2_ungetc): Likewise.
680         (phase3_ungetc): Likewise.
681         (phase5_unget): Likewise.
682         (phase6_unget): Likewise.
683         * x-java.c (SIZEOF): New macro.
684         (phase1_ungetc): Verify that the pushback buffer's size is sufficient.
685         (phase2_ungetc): Likewise.
686         (phase3_ungetc): Likewise.
687         (phase5_unget): Likewise.
688         (phase6_unget): Likewise.
689         * x-php.c (SIZEOF): New macro.
690         (phase1_ungetc): Verify that the pushback buffer's size is sufficient.
691         (phase2_ungetc): Likewise.
692         (phase3_ungetc): Likewise.
693         * x-python.c (SIZEOF): New macro.
694         (phase1_ungetc): Verify that the pushback buffer's size is sufficient.
695         (phase5_unget): Likewise.
696         * x-sh.c (SIZEOF): New macro.
697         (phase1_ungetc): Verify that the pushback buffer's size is sufficient.
698         (phase2_ungetc): Likewise.
699         * x-smalltalk.c (SIZEOF): New macro.
700         (phase2_unget): Verify that the pushback buffer's size is sufficient.
701         * x-tcl.c (SIZEOF): New macro.
702         (phase1_ungetc): Verify that the pushback buffer's size is sufficient.
703         (phase2_ungetc): Likewise.
704         * x-ycp.c (SIZEOF): New macro.
705         (phase2_unget): Verify that the pushback buffer's size is sufficient.
707 2003-12-14  Bruno Haible  <bruno@clisp.org>
709         * x-c.c (phase1_pushback): Reduce size to 2.
710         (phase2_pushback): Reduce size to 1.
711         (phase3_pushback): Reduce size to 2.
712         (phase5_pushback): Reduce size to 1.
713         (phase6_pushback): Reduce size to 2.
714         * x-java.c (phase2_pushback): Reduce size to 1.
715         (phase3_pushback): Reduce size to 2.
716         (phase5_pushback): Reduce size to 3.
717         (phase6_pushback): Reduce size to 2.
718         * x-php.c (phase1_pushback): Reduce size to 2.
719         * x-python.c (max): New macro.
720         (phase1_pushback): Reduce size to UNINAME_MAX + 3.
721         (phase5_pushback): Reduce size to 1.
722         * x-sh.c (phase1_pushback): Reduce size to 1.
723         (phase2_pushback): Reduce size to 2.
724         * x-smalltalk.c (phase2_pushback): Reduce size to 1.
725         * x-tcl.c (phase1_pushback): Reduce size to 1.
726         (phase2_pushback): Reduce size to 2.
728 2003-12-12  Bruno Haible  <bruno@clisp.org>
730         Assume automake-1.8.
731         * Makefile.am (install-exec-local): Renamed from install-exec-am.
733 2003-11-30  Bruno Haible  <bruno@clisp.org>
735         * format-java.c: Include xallocsa.h.
736         (message_format_parse): Use xallocsa instead of alloca.
737         (choice_format_parse): Likewise.
738         * msgl-cat.c: Include xallocsa.h.
739         (catenate_msgdomain_list): Use xallocsa instead of alloca.
740         * msgl-charset.c: Include xallocsa.h.
741         (compare_po_locale_charsets): Use xallocsa instead of alloca.
742         * msgl-iconv.c: Include xallocsa.h.
743         (iconv_message_list): Use xallocsa instead of alloca.
744         * po-charset.c: Include xallocsa.h.
745         (po_lex_charset_set): Use xallocsa instead of alloca.
746         * read-tcl.c: Include xallocsa.h.
747         (msgdomain_read_tcl): Use xallocsa instead of alloca.
748         * write-java.c: Include xallocsa.h.
749         (compute_hashsize, msgdomain_write_java): Use xallocsa instead of
750         alloca.
751         * write-mo.c: Include xallocsa.h.
752         (write_table): Use xallocsa instead of alloca.
753         * write-po.c: Include xallocsa.h.
754         (msgdomain_list_print_po): Use xallocsa instead of alloca.
755         * write-tcl.c: Include xallocsa.h.
756         (msgdomain_write_tcl): Use xallocsa instead of alloca.
757         * msggrep.c: Include xallocsa.h.
758         (is_message_selected): Use xallocsa instead of alloca.
759         * msginit.c: Include xallocsa.h.
760         (subst_string): Use xallocsa instead of alloca.
761         * msgmerge.c: Include obstack.h.
762         (obstack_chunk_alloc, obstack_chunk_free): New macros.
763         (message_merge): Use obstack_alloc instead of alloca.
764         * xgettext.c: Include xallocsa.h.
765         (flag_context_list_table_insert): Use xallocsa instead of alloca.
767 2003-12-17  Bruno Haible  <bruno@clisp.org>
769         * gettext-0.13.1 released.
771 2003-12-14  Bruno Haible  <bruno@clisp.org>
773         * x-sh.c (phase2_getc): Call phase1_ungetc instead of phase2_ungetc:
774         The next phase2_getc invocation must return QUOTED('"'), not '"'.
776 2003-12-14  Bruno Haible  <bruno@clisp.org>
778         * x-c.c (phase7_getc): Remove dead code.
779         * x-java.c (accumulate_escaped): More precise error message.
781 2003-12-02  Bruno Haible  <bruno@clisp.org>
783         * msginit.c (catalogname_for_locale): Treat sr_CS like sr_YU.
785 2003-11-30  Bruno Haible  <bruno@clisp.org>
787         * gettext-0.13 released.
789 2003-11-28  Bruno Haible  <bruno@clisp.org>
791         * xgettext.c (set_format_flags_from_context): Add casts, to make it
792         compile in C++ mode.
794 2003-11-22  Bruno Haible  <bruno@clisp.org>
796         * x-c.c (phase4_getc): Skip leading whitespace in C++ style comments
797         as well.
798         * x-sh.c (read_word): Skip leading whitespace in comments.
799         * x-lisp.c (read_object): Skip leading whitespace in single-line
800         comments as well.
801         * x-elisp.c (read_object): Skip leading whitespace in comments.
802         * x-librep.c (read_object): Skip leading whitespace in single-line
803         comments as well.
804         * x-java.c (phase4_getc): Skip leading whitespace in C++ style comments
805         as well.
806         * x-awk.c (phase2_getc): Skip leading whitespace in comments.
807         * x-ycp.c (phase2_getc): Skip leading whitespace in single-line
808         comments as well.
809         * x-tcl.c (read_command): Skip leading whitespace in comments.
811 2003-11-24  Bruno Haible  <bruno@clisp.org>
813         * format-lisp.c (check_params): Use ngettext for one of the messages.
814         Reported by Rafał Maszkowski <rzm@icm.edu.pl>.
816 2003-11-15  Bruno Haible  <bruno@clisp.org>
818         * Makefile.am (AM_CPPFLAGS): Renamed from INCLUDES.
820 2003-11-09  Bruno Haible  <bruno@clisp.org>
822         * msginit.c (main): Drop the blank line in --no-translator mode.
824 2003-11-07  Bruno Haible  <bruno@clisp.org>
826         * xgettext.c (remember_a_message): Omit the programmer comments of a
827         duplicated msgid only if they are redundant.
828         Reported by Christian Neumair <chris@gnome-de.org>.
830 2003-11-05  Bruno Haible  <bruno@clisp.org>
832         * user-email.sh.in: Renamed from user-email.in. Internationalize, use
833         localedir and gettext.
834         * FILES: Update.
836 2003-10-23  Bruno Haible  <bruno@clisp.org>
838         * read-stringtable.c (read_string, stringtable_parse): Cast
839         gram_pos.line_number to 'unsigned long'.
840         * x-sh.c (read_word): Case line_number to 'unsigned long'.
842 2003-10-21  Bruno Haible  <bruno@clisp.org>
844         * message.h (message_list_msgids_changed): New declaration.
845         * message.c (message_list_msgids_changed): New function.
846         * msgl-iconv.c (iconv_message_list): Update the message list's hash
847         table if it happens to contain non-ASCII msgids.
849 2003-10-19  Bruno Haible  <bruno@clisp.org>
851         * message.h (format_type): New enum value 'format_qt'.
852         (NFORMATS): Increment.
853         * message.c (format_language): Add format_qt entry.
854         (format_language_pretty): Likewise.
855         * format.h (formatstring_qt): New declaration.
856         * format-qt.c: New file.
857         * format.c (formatstring_parsers): Add formatstring_qt.
858         * xgettext.c (recognize_format_qt): New variable.
859         (long_options): Add option "--qt".
860         (main): Handle --qt option. Determine the extractor only after option
861         processing is complete.
862         (usage): Document --qt option.
863         (xgettext_record_flag): Handle format_qt.
864         (language_to_extractor): For C++, return a different extractor when
865         --qt was specified.
866         * write-qt.h: New file.
867         * write-qt.c: New file.
868         * msgfmt.c: Include write-qt.h.
869         (qt_mode): New variable.
870         (long_options): Add option "--qt".
871         (main): Handle --qt option. More checks for contradicting options.
872         Call msgdomain_write_qt.
873         (usage): Mention Qt mode.
874         (format_directive_domain): Ignore domain directive if in Qt mode.
875         * Makefile.am (noinst_HEADERS): Add write-qt.h.
876         (FORMAT_SOURCE): Add format-qt.c.
877         (msgfmt_SOURCES): Add write-qt.c.
878         * Makefile.msvc (OBJECTS): Add format-qt.obj.
879         (msgfmt_OBJECTS): Add write-qt.obj.
880         (format-qt.obj, write-qt.obj): New rules.
881         * Makefile.vms (OBJECTS): Add format-qt.obj.
882         (msgfmt_OBJECTS): Add write-qt.obj.
883         (format-qt.obj, write-qt.obj): New rules.
884         * FILES: Update.
886 2003-10-14  Bruno Haible  <bruno@clisp.org>
888         Fix compilation errors in C++ mode.
889         * msgfilter.c (process_string): Cast the xrealloc expression.
890         * xgettext.c (language_to_extractor, extension_to_language): Move the
891         typedef after the struct definition.
893 2003-10-13  Bruno Haible  <bruno@clisp.org>
895         Support CR/LF line terminators in C sources even on Unix.
896         * x-c.c (phase0_getc, phase0_ungetc): New functions.
897         (phase1_getc): Use them instead of calling getc/ungetc directly.
898         Reported by Christoph Thielecke <u15119@hs-harz.de>.
900 2003-10-13  Bruno Haible  <bruno@clisp.org>
902         Support and recognize Objective C specific format strings.
903         * message.h (enum format_type): New item format_objc.
904         (NFORMATS): Increment.
905         * message.c (format_language): Add an entry for format_objc.
906         (format_language_pretty): Likewise.
907         * format.h (formatstring_objc): New declaration.
908         * format-c.c (enum format_arg_type): New item FAT_OBJC_OBJECT.
909         (format_parse): Add objc_extensions argument. Handle %@ in ObjC mode.
910         (format_c_parse, format_objc_parse): New functions.
911         (formatstring_c): Use format_c_parse instead of format_parse.
912         (formatstring_objc): New variable.
913         (get_c99_format_directives): Update.
914         * format.c (formatstring_parsers): Add an entry for format_objc.
915         * write-mo.c (write_table): Look for system dependent strings also in
916         ObjectiveC format strings.
917         * x-c.h (SCANNERS_C): Use separate flag_table for ObjectiveC.
918         (x_objc_keyword, init_flag_table_objc): New declarations.
919         (x_c_any_keywords): Remove declaration.
920         * x-c.c (c_keywords): Renamed from keywords.
921         (objc_keywords): New variable.
922         (add_keyword): Renamed from x_c_keyword. Add keywords table argument.
923         (x_c_keyword, x_objc_keyword): New functions.
924         (x_c_any_keywords): Remove function.
925         (init_keywords): Also initialize ObjectiveC keyword table.
926         (init_flag_table_objc): New function.
927         (enum token_type_ty): New item token_type_colon.
928         (phase5_get): Recognize colon.
929         (enum xgettext_token_type_ty): New item xgettext_token_type_colon.
930         (x_c_lex): Use keywords table depending on objc_extensions. Handle
931         colon.
932         (extract_parenthesized): Change the context_iter and inner_context
933         after a keyword/symbol followed by a colon was seen.
934         * xgettext.c (flag_table_objc): New variable.
935         (main): Invoke init_flag_table_objc, x_objc_keyword. Watch out for
936         keywords arguments, instead of calling x_c_any_keywords().
937         (flag_context_list_table_insert): New function, extracted from
938         xgettext_record_flag.
939         (xgettext_record_flag): Call it. For format_c, insert the flags also
940         in the flag_table_objc. Handle format_objc.
941         (remember_a_message): Don't add a heuristic c-format flag to an entry
942         that already carries objc-format.
943         (remember_a_message_plural): Likewise.
945 2003-10-18  Bruno Haible  <bruno@clisp.org>
947         Support for GNUstep .strings format.
948         * read-stringtable.h: New file.
949         * read-stringtable.c: New file.
950         * read-po-abstract.h (enum input_syntax_ty): New item
951         syntax_stringtable.
952         (po_callback_comment_dispatcher): Renamed from po_callback_comment.
953         (po_callback_comment, po_callback_comment_special): New declarations.
954         * read-po-abstract.c: Include read-stringtable.h.
955         (po_scan): Add support for syntax_stringtable.
956         (po_callback_comment_dispatcher): Renamed from po_callback_comment.
957         (po_callback_comment, po_callback_comment_dot): New functions.
958         (po_callback_comment_special): New function.
959         * read-po.c (read_po): Set mdlp->encoding for syntax_stringtable too.
960         * po-gram-gen.y: Update po_callback_comment_dispatcher call.
961         * read-properties.c (properties_parse): Likewise.
962         * write-stringtable.h: New file.
963         * write-stringtable.c: New file.
964         * write-po.h (make_format_description_string, significant_format_p):
965         New declarations.
966         (message_print_syntax_stringtable): New declaration.
967         * write-po.c: Include write-stringtable.h.
968         (make_format_description_string, significant_format_p): Make
969         non-static.
970         (use_syntax_stringtable): New variable.
971         (message_print_syntax_stringtable): New function.
972         (msgdomain_list_print): Add check for plural forms for
973         syntax_stringtable too. Add support for writing the .strings format.
974         * msgattrib.c (long_options): Add --stringtable-input/output.
975         (main): Handle them.
976         (usage): Document options --stringtable-input/output.
977         * msgcat.c (long_options): Add --stringtable-input/output.
978         (main): Handle them. If option --stringtable-output is used, convert to
979         UTF-8 and ignore the to_code.
980         (usage): Document options --stringtable-input/output.
981         * msgcmp.c (long_options): Add --stringtable-input.
982         (main): Handle it.
983         (usage): Document option --stringtable-input.
984         * msgcomm.c (long_options): Add --stringtable-input/output.
985         (main): Handle them.
986         (usage): Document options --stringtable-input/output.
987         * msgconv.c (long_options): Add --stringtable-input/output.
988         (main): Handle them. If option --stringtable-output is used, ignore the
989         to_code.
990         (usage): Document options --stringtable-input/output.
991         * msgen.c (long_options): Add --stringtable-input/output.
992         (main): Handle them.
993         (usage): Document options --stringtable-input/output.
994         * msgexec.c: Include limits.h.
995         (long_options): Add --stringtable-input.
996         (main): Handle it.
997         (usage): Document option --stringtable-input.
998         * msgfilter.c (long_options): Add --stringtable-input/output.
999         (main): Handle them.
1000         (usage): Document options --stringtable-input/output.
1001         * msgfmt.c (long_options): Add --stringtable-input.
1002         (main): Handle it.
1003         (usage): Document option --stringtable-input.
1004         * msggrep.c (long_options): Add --stringtable-input/output.
1005         (main): Handle them.
1006         (usage): Document options --stringtable-input/output.
1007         * msginit.c (long_options): Add --stringtable-input/output.
1008         (main): Handle them.
1009         (usage): Document options --stringtable-input/output.
1010         * msgmerge.c (long_options): Add --stringtable-input/output.
1011         (main): Handle them. In update mode, --stringtable-input implies
1012         --stringtable-output.
1013         (usage): Document options --stringtable-input/output.
1014         * msgunfmt.c (long_options): Add --stringtable-output.
1015         (main): Handle it.
1016         (usage): Document option --stringtable-output.
1017         * msguniq.c (long_options): Add --stringtable-input/output.
1018         (main): Handle them.
1019         (usage): Document options --stringtable-input/output.
1020         * x-stringtable.h: New file.
1021         * x-po.c: Include x-stringtable.h.
1022         (extract_stringtable): New function.
1023         * xgettext.c: Include x-stringtable.h.
1024         (long_options): Add --stringtable-output.
1025         (main): Handle it.
1026         (usage): Document options -L NXStringTable and --stringtable-output.
1027         (finalize_header): If --stringtable-output was given, set the charset.
1028         (language_to_extractor): Add support for .strings format.
1029         (extension_to_language): Likewise.
1030         * Makefile.am (noinst_HEADERS): Add read-stringtable.h,
1031         write-stringtable.h, x-stringtable.h.
1032         (COMMON_SOURCE): Add read-stringtable.c.
1033         (libgettextsrc_la_SOURCES): Add write-stringtable.c.
1034         * Makefile.msvc (OBJECTS): Add read-stringtable.obj,
1035         write-stringtable.obj.
1036         (read-stringtable.obj, write-stringtable.obj): New rules.
1037         * Makefile.vms (OBJECTS): Add read-stringtable.obj,
1038         write-stringtable.obj.
1039         (read-stringtable.obj, write-stringtable.obj): New rules.
1040         * FILES: Update.
1042 2003-10-21  Bruno Haible  <bruno@clisp.org>
1044         * hostname.c (xgethostname): Add support for native Woe32 API.
1046 2003-10-21  Bruno Haible  <bruno@clisp.org>
1048         * message.c (message_list_search): Avoid casting a pointer to a local
1049         variable; it violated strict aliasing.
1051 2003-10-21  Bruno Haible  <bruno@clisp.org>
1053         * write-java.c (mkdir): Redefine on mingw.
1055 2003-10-12  Bruno Haible  <bruno@clisp.org>
1057         Improved ObjectiveC support.
1058         * x-c.h (extract_objc): New declaration.
1059         (SCANNERS_C): For ObjectiveC, use extract_objc.
1060         * x-c.c (objc_extensions): New variable.
1061         (enum token_type_ty): New item token_type_objc_special.
1062         (phase5_get): Recognize '@' for ObjectiveC.
1063         (phase8b_get, phase8b_unget): New functions. Handle
1064         token_type_white_space and token_type_eoln here instead of in x_c_lex.
1065         (phase8c_get, phase8c_unget): New functions.
1066         (phase8_get): Rely on phase8c, not phase8a. No more need to care about
1067         token_type_white_space and token_type_eoln.
1068         (x_c_lex): Drop handling of token_type_white_space and token_type_eoln.
1069         (extract_whole_file): Renamed from extract_c.
1070         (extract_c, extract_objc): New functions.
1072 2003-10-20  Bruno Haible  <bruno@clisp.org>
1074         * x-java.c (phase3_getc): Fix typo: Use phase2_ungetc, not phase2_getc.
1076 2003-10-20  Bruno Haible  <bruno@clisp.org>
1078         Portability to AIX with cc.
1079         * xgettext.h (struct flag_context_ty): Define the bitfields of type
1080         'unsigned int'.
1082 2003-10-20  Bruno Haible  <bruno@clisp.org>
1084         Portability to Solaris with cc.
1085         * x-java.c (string_buffer_append): Avoid aggregate initializer
1086         containing non-constant expressions.
1087         * xgettext.c (flag_context_list_iterator): Likewise.
1088         (language_to_extractor): Likewise.
1090 2003-10-11  Bruno Haible  <bruno@clisp.org>
1092         * xgettext.c (main): Drop suffix ".in" from input file name, if
1093         present, before looking at the file extension.
1095 2003-10-09  Bruno Haible  <bruno@clisp.org>
1097         * format-awk.c: Include xalloc.h instead of xmalloc.h.
1098         * format-c.c: Likewise.
1099         * format-elisp.c: Likewise.
1100         * format-gcc-internal.c: Likewise.
1101         * format-java.c: Likewise.
1102         * format-librep.c: Likewise.
1103         * format-lisp.c: Likewise.
1104         * format-pascal.c: Likewise.
1105         * format-perl.c: Likewise.
1106         * format-perl-brace.c: Likewise.
1107         * format-php.c: Likewise.
1108         * format-python.c: Likewise.
1109         * format-sh.c: Likewise.
1110         * format-tcl.c: Likewise.
1111         * format-ycp.c: Likewise.
1112         * gettext-po.c: Likewise.
1113         * hostname.c: Likewise.
1114         * message.c: Likewise.
1115         * msgexec.c: Likewise.
1116         * msgfilter.c: Likewise.
1117         * msgfmt.c: Likewise.
1118         * msggrep.c: Likewise.
1119         * msginit.c: Likewise.
1120         * msgl-cat.c: Likewise.
1121         * msgl-english.c: Likewise.
1122         * msgl-iconv.c: Likewise.
1123         * msgmerge.c: Likewise.
1124         * open-po.c: Likewise.
1125         * po-gram-gen.y: Likewise.
1126         * po-hash-gen.y: Likewise.
1127         * po-lex.c: Likewise.
1128         * read-mo.c: Likewise.
1129         * read-po-abstract.c: Likewise.
1130         * read-po.c: Likewise.
1131         * read-properties.c: Likewise.
1132         * str-list.c: Likewise.
1133         * write-java.c: Likewise.
1134         * write-mo.c: Likewise.
1135         * write-po.c: Likewise.
1136         * write-properties.c: Likewise.
1137         * write-tcl.c: Likewise.
1138         * x-awk.c: Likewise.
1139         * x-c.c: Likewise.
1140         * x-elisp.c: Likewise.
1141         * x-glade.c: Likewise.
1142         * x-java.c: Likewise.
1143         * x-librep.c: Likewise.
1144         * x-lisp.c: Likewise.
1145         * x-perl.c: Likewise.
1146         * x-php.c: Likewise.
1147         * x-po.c: Likewise.
1148         * x-python.c: Likewise.
1149         * x-rst.c: Likewise.
1150         * x-sh.c: Likewise.
1151         * x-smalltalk.c: Likewise.
1152         * x-tcl.c: Likewise.
1153         * x-ycp.c: Likewise.
1154         * xgettext.c: Likewise.
1156 2003-10-07  Bruno Haible  <bruno@clisp.org>
1158         More reliable subprocess cleanup.
1159         * msgexec.c (process_string): Pass slave_process = true to
1160         create_pipe_out() and wait_subprocess().
1161         * msgfilter.c (process_string): Pass slave_process = true to
1162         create_pipe_bidi() and wait_subprocess().
1163         * msggrep.c (is_string_selected): Pass slave_process = true to
1164         create_pipe_out() and wait_subprocess().
1165         * msginit.c (project_id, project_id_version, get_user_email,
1166         language_team_address): Pass slave_process = true to create_pipe_in()
1167         and wait_subprocess().
1168         * read-java.c (execute_and_read_po_output): Likewise.
1169         * read-tcl.c (msgdomain_read_tcl): Likewise.
1170         * urlget.c (execute_it, fetch): Pass slave_process = true to execute().
1172 2003-10-05  Bruno Haible  <bruno@clisp.org>
1174         * write-java.c: Include fatal-signal.h, not signal.h.
1175         (uninstall_handlers): Remove function.
1176         (cleanup): Remove signal argument. Don't execute the signal's default
1177         action; leave that to the caller.
1178         (install_handlers, init_signal_set, block, unblock): Remove functions.
1179         (msgdomain_write_java): Invoke at_fatal_signal instead of
1180         install_handlers/uninstall_handlers. Invoke [un]block_fatal_signals
1181         instead of [un]block.
1183 2003-10-05  Bruno Haible  <bruno@clisp.org>
1185         * xgettext.c (substring_match): Remove variable.
1186         (long_options): Remove --keyword-substring option.
1187         (main): Remove handling of --keyword-substring option.
1189 2003-10-05  Bruno Haible  <bruno@clisp.org>
1191         * message.h (enum is_format): New item yes_according_to_context.
1192         * message.c (possible_format_p): Handle also yes_according_to_context.
1193         * write-po.c (make_format_description_string): Likewise.
1195         * xgettext.h (struct flag_context_ty): New type.
1196         (null_context, passthrough_context): New declarations.
1197         (inherited_context): New declaration.
1198         (struct flag_context_list_ty): New type.
1199         (struct flag_context_list_iterator_ty): New type.
1200         (null_context_list_iterator, passthrough_context_list_iterator): New
1201         declarations.
1202         (flag_context_list_iterator): New declaration.
1203         (flag_context_list_iterator_advance): New declaration.
1204         (flag_context_list_table_ty): New type.
1205         (flag_context_list_table_lookup): New declaration.
1206         (xgettext_record_flag): New declaration.
1207         (remember_a_message, remember_a_message_plural): Add context argument.
1208         * xgettext.c: Include alloca.h.
1209         (flag_table_c, flag_table_gcc_internal, flag_table_sh,
1210         flag_table_python, flag_table_lisp, flag_table_elisp,
1211         flag_table_librep, flag_table_java, flag_table_awk, flag_table_ycp,
1212         flag_table_tcl, flag_table_perl, flag_table_php): New variables.
1213         (long_options): Add option --flag.
1214         (extractor_func): Add argument flag_table.
1215         (struct extractor_ty): New type.
1216         (main): Use type 'extractor_ty' instead of 'extractor_func'.
1217         Invoke init_flag_table_c(), init_flag_table_gcc_internal(),
1218         init_flag_table_sh(), init_flag_table_python(), init_flag_table_lisp(),
1219         init_flag_table_elisp(), init_flag_table_librep(),
1220         init_flag_table_java(), init_flag_table_awk(), init_flag_table_ycp(),
1221         init_flag_table_tcl(), init_flag_table_perl(), init_flag_table_php().
1222         Implement option --flag.
1223         (usage): Rename a section to "Language specific options". Document
1224         the languages to which --extract-all, --keyword, --trigraphs are
1225         applicable. Document option --flag.
1226         (null_context): New variable.
1227         (passthrough_context): New variable.
1228         (inherited_context): New function.
1229         (null_context_list_iterator): New variable.
1230         (passthrough_context_circular_list, passthrough_context_list_iterator):
1231         New variables.
1232         (flag_context_list_iterator): New function.
1233         (flag_context_list_iterator_advance): New function.
1234         (flag_context_list_table_lookup): New function.
1235         (xgettext_record_flag): New function.
1236         (extract_from_file): Change argument type to 'extractor_ty' instead of
1237         'extractor_func'. Set current_formatstring_parser{1,2} before invoking
1238         the extractor.
1239         (set_format_flags_from_context): New function.
1240         (remember_a_message): Add context argument. Set some *-format flag if
1241         the context specifies it.
1242         (remember_a_message_plural): Likewise.
1243         (language_to_extractor): Change return type to 'extractor_ty' instead
1244         of 'extractor_func'.
1246         * x-awk.h (SCANNERS_AWK): Refer to flag_table_awk.
1247         (extract_awk): Add argument flag_table.
1248         (init_flag_table_awk): New declaration.
1249         * x-awk.c (init_flag_table_awk): New function.
1250         (enum token_type_ty): New enum item token_type_semicolon.
1251         (x_awk_lex): Recognize semicolon.
1252         (flag_context_list_table): New variable.
1253         (extract_parenthesized): Add arguments outer_context, context_iter.
1254         Implement context handling depending on symbol before '('. Also
1255         recognize argument lists that start without '(', but only up to the
1256         next semicolon.
1257         (extract_awk): Add argument flag_table. Initialize
1258         flag_context_list_table.
1260         * x-c.h (SCANNERS_C): Refer to flag_table_c, flag_table_gcc_internal.
1261         (extract_c): Add argument flag_table.
1262         (init_flag_table_c): New declaration.
1263         (init_flag_table_gcc_internal): New declaration.
1264         * x-c.c (init_flag_table_c): New function.
1265         (init_flag_table_gcc_internal): New function.
1266         (enum xgettext_token_type_ty): New item xgettext_token_type_other.
1267         (x_c_lex): For token_type_name, put the string into the resulting
1268         token instead of freeing it. Return token type
1269         xgettext_token_type_other instead of xgettext_token_type_symbol in
1270         some cases.
1271         (flag_context_list_table): New variable.
1272         (extract_parenthesized): Add arguments outer_context, context_iter.
1273         Implement context handling depending on symbol before '('.
1274         (extract_c): Add argument flag_table. Initialize
1275         flag_context_list_table.
1277         * x-elisp.h (SCANNERS_ELISP): Refer to flag_table_elisp.
1278         (extract_elisp): Add argument flag_table.
1279         (init_flag_table_elisp): New declaration.
1280         * x-elisp.c (init_flag_table_elisp): New function.
1281         (flag_context_list_table): New variable.
1282         (read_object): Add argument outer_context. Implement context handling
1283         depending on first symbol after '('.
1284         (extract_elisp): Add argument flag_table. Initialize
1285         flag_context_list_table.
1287         * x-glade.h (SCANNERS_GLADE): Update.
1288         (extract_glade): Add argument flag_table.
1289         * x-glade.c (start_element_handler, end_element_handler): Pass null
1290         context to remember_a_message.
1291         (extract_glade): Add argument flag_table.
1293         * x-java.h (SCANNERS_JAVA): Refer to flag_table_java.
1294         (extract_java): Add argument flag_table.
1295         (init_flag_table_java): New declaration.
1296         * x-java.c (init_flag_table_java): New function.
1297         (flag_context_list_table): New variable.
1298         (extract_parenthesized): Add arguments outer_context, context_iter.
1299         Implement context handling depending on symbol before '('.
1300         (extract_java): Add argument flag_table. Initialize
1301         flag_context_list_table.
1303         * x-librep.h (SCANNERS_ELISP): Refer to flag_table_librep.
1304         (extract_librep): Add argument flag_table.
1305         (init_flag_table_librep): New declaration.
1306         * x-librep.c (init_flag_table_librep): New function.
1307         (flag_context_list_table): New variable.
1308         (read_object): Add argument outer_context. Implement context handling
1309         depending on first symbol after '('.
1310         (extract_librep): Add argument flag_table. Initialize
1311         flag_context_list_table.
1313         * x-lisp.h (SCANNERS_LISP): Refer to flag_table_lisp.
1314         (extract_lisp): Add argument flag_table.
1315         (init_flag_table_lisp): New declaration.
1316         * x-lisp.c (init_flag_table_lisp): New function.
1317         (flag_context_list_table): New variable.
1318         (read_object): Add argument outer_context. Implement context handling
1319         depending on first symbol after '('.
1320         (extract_lisp): Add argument flag_table. Initialize
1321         flag_context_list_table.
1323         * x-perl.h (SCANNERS_PERL): Refer to flag_table_perl.
1324         (extract_perl): Add argument flag_table.
1325         (init_flag_table_perl): New declaration.
1326         * x-perl.c (init_flag_table_java): New function.
1327         (flag_context_list_table): New variable.
1328         (extract_variable): Update. Implement context handling depending on
1329         symbol before '{'...'}'.
1330         (interpolate_keywords): Implement context handling depending on symbol
1331         before '->' or '{'...'}'.
1332         (extract_balanced): Add arguments outer_context, context_iter.
1333         Implement context handling depending on symbol before '('. Also
1334         recognize argument lists that start without '('.
1335         (extract_perl): Add argument flag_table. Initialize
1336         flag_context_list_table.
1338         * x-php.h (SCANNERS_PHP): Refer to flag_table_php.
1339         (extract_php): Add argument flag_table.
1340         (init_flag_table_php): New declaration.
1341         * x-php.c (init_flag_table_php): New function.
1342         (flag_context_list_table): New variable.
1343         (extract_parenthesized): Add arguments outer_context, context_iter.
1344         Implement context handling depending on symbol before '('.
1345         (extract_php): Add argument flag_table. Initialize
1346         flag_context_list_table.
1348         * x-po.h (SCANNERS_PO): Update.
1349         (extract_po): Add argument flag_table.
1350         * x-properties.h (SCANNERS_PROPERTIES): Update.
1351         (extract_properties): Add argument flag_table.
1352         * x-po.c (extract_po): Add argument flag_table.
1353         (extract_properties): Add argument flag_table.
1355         * x-python.h (SCANNERS_PYTHON): Refer to flag_table_python.
1356         (extract_python): Add argument flag_table.
1357         (init_flag_table_python): New declaration.
1358         * x-python.c (init_flag_table_python): New function.
1359         (flag_context_list_table): New variable.
1360         (extract_parenthesized): Add arguments outer_context, context_iter.
1361         Implement context handling depending on symbol before '('.
1362         (extract_python): Add argument flag_table. Initialize
1363         flag_context_list_table.
1365         * x-rst.h (SCANNERS_RST): Update.
1366         (extract_rst): Add argument flag_table.
1367         * x-rst.c (extract_rst): Add argument flag_table.
1369         * x-sh.h (SCANNERS_SH): Refer to flag_table_sh.
1370         (extract_sh): Add argument flag_table.
1371         (init_flag_table_sh): New declaration.
1372         * x-sh.c (init_flag_table_sh): New function.
1373         (flag_context_list_table): New variable.
1374         (read_word): Add context argument.
1375         (read_command): Add outer_context argument. Implement context handling
1376         depending on first symbol of command.
1377         (read_command_list): Add outer_context argument.
1378         (extract_sh): Add argument flag_table. Initialize
1379         flag_context_list_table.
1381         * x-smalltalk.h (SCANNERS_SMALLTALK): Update.
1382         (extract_smalltalk): Add argument flag_table.
1383         * x-smalltalk.c (extract_smalltalk): Add argument flag_table.
1385         * x-tcl.h (SCANNERS_TCL): Refer to flag_table_tcl.
1386         (extract_tcl): Add argument flag_table.
1387         (init_flag_table_tcl): New declaration.
1388         * x-tcl.c (init_flag_table_tcl): New function.
1389         (flag_context_list_table): New variable.
1390         (accumulate_word): Add context argument.
1391         (read_word): Add context argument.
1392         (read_command): Add outer_context argument. Implement context handling
1393         depending on first symbol of command.
1394         (read_command_list): Add outer_context argument.
1395         (extract_tcl): Add argument flag_table. Initialize
1396         flag_context_list_table.
1398         * x-ycp.h (SCANNERS_YCP): Refer to flag_table_ycp.
1399         (extract_ycp): Add argument flag_table.
1400         (init_flag_table_ycp): New declaration.
1401         * x-ycp.c (init_flag_table_ycp): New function.
1402         (flag_context_list_table): New variable.
1403         (extract_parenthesized): New function, split off from extract_ycp.
1404         Implement context handling depending on symbol before '('.
1405         (extract_ycp): Add argument flag_table. Initialize
1406         flag_context_list_table. Call extract_parenthesized to do the work.
1408         * po-lex.c (mbfile_getc, control_sequence): Remove explicit marking of
1409         strings as c-format, now done by xgettext.
1411 2003-09-23  Bruno Haible  <bruno@clisp.org>
1413         * x-awk.c (extract_parenthesized): Remove optimization of the
1414         extract_all case.
1415         * x-c.c (extract_parenthesized): Likewise.
1416         * x-elisp.c (read_object): Likewise.
1417         * x-librep.c (read_object): Likewise.
1418         * x-lisp.c (read_object): Likewise.
1419         * x-perl.c (x_perl_prelex, extract_balanced): Likewise.
1420         * x-php.c (extract_parenthesized): Likewise.
1421         * x-python.c (extract_parenthesized): Likewise.
1422         * x-sh.c (read_command): Likewise.
1424 2003-10-08  Bruno Haible  <bruno@clisp.org>
1426         * msgmerge.c (main): Make option -N work.
1427         Reported by Liu Garfield <jackliu9999@hotmail.com>.
1429 2003-10-04  Bruno Haible  <bruno@clisp.org>
1431         New Java backend.
1432         * x-java.c: New file.
1433         * x-java.l: Remove file.
1434         * Makefile.am (xgettext_SOURCES): Add x-java.c, remove x-java.l.
1435         (x-java.c): Remove rule.
1436         * FILES: Update.
1438 2003-09-22  Bruno Haible  <bruno@clisp.org>
1440         * x-glade.c (start_element_handler): Implement extract_all behaviour.
1442 2003-10-04  Bruno Haible  <bruno@clisp.org>
1444         * x-glade.c (do_extract_glade): Initialize stack_depth.
1445         * x-perl.c (extract_perl): Initialize linesize and linepos.
1447         * x-python.c (phase2_getc): Set last_comment_line.
1448         (phase5_get): Set last_non_comment_line.
1450 2003-10-04  Bruno Haible  <bruno@clisp.org>
1452         * x-glade.c: Don't include msgl-ascii.h and msgl-iconv.h.
1453         * x-python.c: Likewise.
1454         * x-tcl.c: Likewise.
1456 2003-10-06  Guido Flohr  <guido@imperia.net>
1457             Bruno Haible  <bruno@clisp.org>
1459         * x-perl.c (enum symbol_type_ty): New enum.
1460         (struct token_ty): Rename field string_type to sub_type and change its
1461         type to 'int'.
1462         (extract_quotelike_pass3, interpolate_keywords): Update.
1463         (x_perl_prelex): Set sub_type also for symbol tokens.
1464         (x_perl_lex): Special handling of prototype argument lists.
1465         Reported by Crispin Flowerday <cflowerday@zeus.com>.
1467 2003-09-22  Bruno Haible  <bruno@clisp.org>
1469         * x-sh.c (read_word): Warn about $"...".
1471 2003-09-18  Bruno Haible  <bruno@clisp.org>
1473         * gettext-po.h (po_file_domain_header, po_header_field,
1474         po_message_is_obsolete, po_message_is_fuzzy, po_message_is_format): New
1475         declarations.
1476         * gettext-po.c (po_file_domain_header, po_header_field,
1477         po_message_is_obsolete, po_message_is_fuzzy, po_message_is_format): New
1478         functions.
1479         * Makefile.am (LTV_CURRENT, LTV_REVISION, LTV_AGE): Bump to 1:0:1.
1481 2003-09-14  Bruno Haible  <bruno@clisp.org>
1483         * plural-count.c: Include plural-count.h.
1484         * x-po.c: Include x-properties.h.
1485         * x-java.l (append_strings): Change argument type to 'const char *'.
1487 2003-09-14  Bruno Haible  <bruno@clisp.org>
1489         * msgfmt.c (check_plural_eval): Mark some strings as c-format.
1490         (msgfmt_add_message): Make static.
1491         * po-lex.c (mbfile_getc, control_sequence): Mark some strings as
1492         c-format.
1494 2003-09-18  Bruno Haible  <bruno@clisp.org>
1496         * FILES: Update.
1498 2003-09-14  Bruno Haible  <bruno@clisp.org>
1500         More reliable checking for read errors.
1501         * po-lex.c (mbfile_getc): Diagnose read errors also in the middle of
1502         multibyte characters.
1503         (lex_getc): Diagnose read errors also right after backslash.
1504         * x-rst.c (extract_rst): Diagnose read errors also inside ConstName
1505         and immediately after #.
1507 2003-09-14  Bruno Haible  <bruno@clisp.org>
1509         * write-mo.c: Include fwriterror.h.
1510         (msgdomain_write_mo): Use fwriteerror, to get right errno value in
1511         error message about write error.
1512         * write-po.c: Include fwriterror.h.
1513         (msgdomain_list_print): Use fwriteerror, to get right errno value in
1514         error message about write error.
1515         * write-java.c: Include fwriterror.h.
1516         (msgdomain_write_java): Use fwriteerror, to get right errno value in
1517         error message about write error.
1518         * write-tcl.c: Include fwriterror.h.
1519         (msgdomain_write_tcl): Use fwriteerror, to get right errno value in
1520         error message about write error.
1522 2003-09-18  Bruno Haible  <bruno@clisp.org>
1524         * xgettext.c (from_current_source_encoding): Use multiline_error,
1525         for a prettier error message.
1527         * x-perl.c (extract_quotelike_pass1): Store counter_delim instead of
1528         EOF as delimiter, to avoid error during from_current_source_encoding.
1529         Reported by Crispin Flowerday <cflowerday@zeus.com>.
1531 2003-09-13  Bruno Haible  <bruno@clisp.org>
1533         * format-sh.c (INVALID_SHELL_SYNTAX,
1534         INVALID_CONTEXT_DEPENDENT_VARIABLE): New macros.
1535         (format_parse): Reject constructs like ${variable-default} and $?.
1537 2003-09-13  Bruno Haible  <bruno@clisp.org>
1539         Fix behaviour of "<program> --help > /dev/full".
1540         * hostname.c: Include closeout.h.
1541         (main): Register close_stdout for execution at program exit.
1542         * msgattrib.c: Include closeout.h.
1543         (main): Register close_stdout for execution at program exit.
1544         * msgcat.c: Include closeout.h.
1545         (main): Register close_stdout for execution at program exit.
1546         * msgcmp.c: Include closeout.h.
1547         (main): Register close_stdout for execution at program exit.
1548         * msgcomm.c: Include closeout.h.
1549         (main): Register close_stdout for execution at program exit.
1550         * msgconv.c: Include closeout.h.
1551         (main): Register close_stdout for execution at program exit.
1552         * msgen.c: Include closeout.h.
1553         (main): Register close_stdout for execution at program exit.
1554         * msgexec.c: Include closeout.h.
1555         (main): Register close_stdout for execution at program exit.
1556         * msgfilter.c: Include closeout.h.
1557         (main): Register close_stdout for execution at program exit.
1558         * msgfmt.c: Include closeout.h.
1559         (main): Register close_stdout for execution at program exit.
1560         * msggrep.c: Include closeout.h.
1561         (main): Register close_stdout for execution at program exit.
1562         * msginit.c: Include closeout.h.
1563         (main): Register close_stdout for execution at program exit.
1564         * msgmerge.c: Include closeout.h.
1565         (main): Register close_stdout for execution at program exit.
1566         * msgunfmt.c: Include closeout.h.
1567         (main): Register close_stdout for execution at program exit.
1568         * msguniq.c: Include closeout.h.
1569         (main): Register close_stdout for execution at program exit.
1570         * urlget.c: Include closeout.h.
1571         (main): Register close_stdout for execution at program exit.
1572         * xgettext.c: Include closeout.h.
1573         (main): Register close_stdout for execution at program exit.
1574         * write-po.c (msgdomain_list_print): Don't fclose (stdout) here.
1576 2003-09-11  Bruno Haible  <bruno@clisp.org>
1578         * po-lex.c (mbfile_getc): Handle unexpected return value of
1579         u8_mbtouc(). Reported by Jochen Hein <jochen@jochen.org>.
1581 2003-09-09  Bruno Haible  <bruno@clisp.org>
1583         * read-properties.c (phase4_getuc): Cast line_number to 'unsigned long'
1584         before outputting it.
1586 2003-09-09  Bruno Haible  <bruno@clisp.org>
1588         * po-lex.c: Test HAVE_DECL_GETC_UNLOCKED instead of HAVE_GETC_UNLOCKED.
1589         * write-po.c: Test HAVE_DECL_PUTC_UNLOCKED instead of
1590         HAVE_PUTC_UNLOCKED.
1592 2003-09-09  Guido Flohr  <guido@imperia.net>
1594         * x-perl.c (extract_quotelike_pass3): Change \l handling to no longer
1595         eat up non-uppercase characters; likewise for \u. Also make \l and \u
1596         work on characters written using hex or octal escape sequence. Fix \Q
1597         handling. With option --extract-all, avoid "invalid variable
1598         interpolation" warnings.
1599         (x_perl_prelex): With option --extract-all, keep variables inside
1600         double-quoted strings untouched.
1602 2003-09-03  Bruno Haible  <bruno@clisp.org>
1604         * x-sh.h: New file.
1605         * x-sh.c: New file.
1606         * xgettext.c: Include x-sh.h.
1607         (main): Call x_sh_extract_all, x_sh_keyword.
1608         (usage): Mention Shell language.
1609         (language_to_extractor): Add Shell rule.
1610         (extension_to_language): Add Shell rule.
1611         * Makefile.am (noinst_HEADERS): Add x-sh.h.
1612         (xgettext_SOURCES): Add x-sh.c.
1613         * Makefile.msvc (xgettext_OBJECTS): Add x-sh.obj.
1614         (x-sh.obj): New rule.
1615         * Makefile.vms (xgettext_OBJECTS): Add x-sh.obj.
1616         (x-sh.obj): New rule.
1618 2003-08-31  Bruno Haible  <bruno@clisp.org>
1620         * format-sh.c: New file.
1621         * message.h (format_sh): New enum value.
1622         (NFORMATS): Increment.
1623         * format.h (formatstring_sh): New declaration.
1624         * format.c (formatstring_parsers): Add entry for sh.
1625         * message.c (format_language, format_language_pretty): Likewise.
1626         * Makefile.am (FORMAT_SOURCE): Add format-sh.c.
1627         * Makefile.msvc (OBJECTS): Add format-sh.obj.
1628         (format-sh.obj): New rule.
1629         * Makefile.vms (OBJECTS): Add format-sh.obj.
1630         (format-sh.obj): New rule.
1632 2003-08-31  Bruno Haible  <bruno@clisp.org>
1634         * format-gcc-internal.c (isdigit): Remove unused macro.
1635         * format-perl-brace.c (isdigit): Likewise.
1637 2003-09-01  Guido Flohr  <guido@imperia.net>
1639         * x-perl.c (extract_balanced): Access the global last_token.
1640         Initialize last_token and prefer_division_over_regexp here. 
1641         (extract_perl): Not here.
1643 2003-08-29  Bruno Haible  <bruno@clisp.org>
1645         * x-perl.c: Include getline.h.
1647 2003-08-24  Bruno Haible  <bruno@clisp.org>
1649         * Makefile.msvc (format.obj, msgmerge.obj, xgettext.obj, msgattrib.obj,
1650         msgcat.obj, msgcomm.obj, msgconv.obj, msgen.obj, msgfilter.obj,
1651         msggrep.obj, msguniq.obj): Compile these in C++ mode. This works around
1652         the "non-constant initializer" error that we get for addresses of
1653         variables in DLLs in C mode.
1655 2003-08-24  Bruno Haible  <bruno@clisp.org>
1657         * msgfilter.c (process_message): Cast xrealloc() result.
1659 2003-08-24  Bruno Haible  <bruno@clisp.org>
1661         * msgfilter.c: On Windows, include <io.h> instead of <unistd.h>.
1662         * msggrep.c: Likewise.
1664 2003-08-24  Bruno Haible  <bruno@clisp.org>
1666         * plural-count.h: New file.
1667         * plural-count.c: New file, extracted from msgmerge.c.
1668         * msgmerge.c: Include plural-count.h instead of plural-exp.h.
1669         (match_domain): Use function get_plural_count().
1670         * Makefile.am (noinst_HEADERS): Add plural-count.h.
1671         (msgmerge_SOURCES): Add plural-count.c.
1672         * Makefile.msvc (msgmerge_OBJECTS): Add plural-count.obj.
1673         (plural-count.obj): New rule.
1674         * Makefile.vms (msgmerge_OBJECTS): Add plural-count.obj.
1675         (plural-count.obj): New rule.
1677 2003-08-24  Bruno Haible  <bruno@clisp.org>
1679         Support for building DLLs on Windows.
1680         * format.h (formatstring_c, formatstring_python, formatstring_lisp,
1681         formatstring_elisp, formatstring_librep, formatstring_smalltalk,
1682         formatstring_java, formatstring_awk, formatstring_pascal,
1683         formatstring_ycp, formatstring_tcl, formatstring_perl,
1684         formatstring_perl_brace, formatstring_php, formatstring_gcc_internal,
1685         formatstring_parsers): Add DLL_VARIABLE attribute.
1686         * message.h (format_language, format_language_pretty): Likewise.
1687         * msgl-cat.h (more_than, less_than, use_first, msgcomm_mode,
1688         omit_header): Likewise.
1689         * plural-table.h (plural_table, plural_table_size): Likewise.
1690         * po-charset.h (po_charset_ascii, po_charset_utf8, po_lex_charset,
1691         po_lex_iconv, po_lex_weird_cjk): Likewise.
1692         * po-lex.h (gram_pos, gram_pos_column, gram_max_allowed_errors,
1693         pass_obsolete_entries): Likewise.
1694         * read-po.h (line_comment, allow_duplicates, input_syntax): Likewise.
1695         * write-mo.h (alignment, no_hash_table): Likewise.
1696         * Makefile.am (po-gram-gen2.h): Likewise.
1698 2003-08-24  Bruno Haible  <bruno@clisp.org>
1700         * Makefile.msvc (gettext-po.obj, gettextpo.lib, gettextpo.res): New
1701         rules.
1702         (all): Depend on gettextpo.lib.
1703         (install, installdirs, uninstall): Install/uninstall gettext-po.h,
1704         gettextpo.dll and gettextpo.lib.
1705         * Makefile.vms (gettext-po.obj, gettextpo.olb): New rules.
1706         (all): Depend on gettextpo.olb.
1707         (install, installdirs, uninstall): Install/uninstall gettext-po.h,
1708         gettextpo.olb.
1710 2003-08-24  Bruno Haible  <bruno@clisp.org>
1712         * dir-list.h: Make this file includable in C++ mode: add extern "C".
1713         * file-list.h: Likewise.
1714         * format.h: Likewise.
1715         * message.h: Likewise.
1716         * msgl-ascii.h: Likewise.
1717         * msgl-cat.h: Likewise.
1718         * msgl-charset.h: Likewise.
1719         * msgl-english.h: Likewise.
1720         * msgl-equal.h: Likewise.
1721         * msgl-iconv.h: Likewise.
1722         * open-po.h: Likewise.
1723         * po-charset.h: Likewise.
1724         * po-lex.h: Likewise.
1725         * po-time.h: Likewise.
1726         * read-po-abstract.h: Likewise.
1727         * str-list.h: Likewise.
1728         * write-po.h: Likewise.
1729         * xgettext.h: Likewise.
1730         * read-po.h: Likewise.
1731         (this): Redefine to a different symbol.
1732         * xgettext.c: Add extern "C" around all "x-*.h" includes.
1734 2003-08-22  Bruno Haible  <bruno@clisp.org>
1736         * format-awk.c: Include error-progname.h instead of progname.h.
1737         * format-c.c: Likewise.
1738         * format-elisp.c: Likewise.
1739         * format-gcc-internal.c: Likewise.
1740         * format-java.c: Likewise.
1741         * format-librep.c: Likewise.
1742         * format-lisp.c: Likewise.
1743         * format-pascal.c: Likewise.
1744         * format-perl.c: Likewise.
1745         * format-perl-brace.c: Likewise.
1746         * format-php.c: Likewise.
1747         * format-python.c: Likewise.
1748         * format-tcl.c: Likewise.
1749         * format-ycp.c: Likewise.
1750         * po-lex.h: Likewise.
1751         * read-properties.c: Likewise.
1752         * write-po.c: Likewise.
1753         * x-awk.c: Likewise.
1754         * x-c.c: Likewise.
1755         * x-perl.c: Likewise.
1756         * x-python.c: Likewise.
1757         * x-rst.c: Likewise.
1758         * hostname.c: Include error-progname.h.
1759         * msgattrib.c: Likewise.
1760         * msgcat.c: Likewise.
1761         * msgcmp.c: Likewise.
1762         * msgcomm.c: Likewise.
1763         * msgconv.c: Likewise.
1764         * msgen.c: Likewise.
1765         * msgexec.c: Likewise.
1766         * msgfilter.c: Likewise.
1767         * msgfmt.c: Likewise.
1768         * msggrep.c: Likewise.
1769         * msginit.c: Likewise.
1770         * msgmerge.c: Likewise.
1771         * msgunfmt.c: Likewise.
1772         * msguniq.c: Likewise.
1773         * urlget.c: Likewise.
1774         * xgettext.c: Likewise.
1775         * po-lex.c: Include error-progname.h and pos.h.
1777 2003-08-15  Bruno Haible  <bruno@clisp.org>
1779         * msginit.c (catalogname_for_locale): Add entries for Aragonese,
1780         Haitian, Sichuan Yi, Limburgish.
1781         (englishname_of_language): Likewise.
1783 2003-08-08  Bruno Haible  <bruno@clisp.org>
1785         * format-gcc-internal.c: New file.
1786         * message.h (format_gcc_internal): New enum value.
1787         (NFORMATS): Increment.
1788         * format.h (formatstring_gcc_internal): New declaration.
1789         * format.c (formatstring_parsers): Add entry for gcc_internal.
1790         * message.c (format_language, format_language_pretty): Likewise.
1791         * x-c.h (SCANNERS_C): Add an entry for GCC-source.
1792         * xgettext.c (usage): Mention GCC-source language.
1793         * Makefile.am (FORMAT_SOURCE): Add format-gcc-internal.c.
1794         * Makefile.msvc (OBJECTS): Add format-gcc-internal.obj.
1795         (format-gcc-internal.obj): New rule.
1796         * Makefile.vms (OBJECTS): Add format-gcc-internal.obj.
1797         (format-gcc-internal.obj): New rule.
1799 2003-08-04  Bruno Haible  <bruno@clisp.org>
1801         * x-perl.c (extract_quotelike_pass3): Fix \x handling.
1802         Reported by Guido Flohr.
1804 2003-07-05  Bruno Haible  <bruno@clisp.org>
1806         * format-perl-brace.c: Renamed from format-perl-bracket.c. Recognize
1807         braces instead of brackets.
1808         * format.h (formatstring_perl_brace): Renamed from
1809         formatstring_perl_bracket.
1810         * format.c (formatstring_parsers): Add formatstring_perl_brace, remove
1811         formatstring_perl_bracket.
1812         * message.h (enum format_type): Add format_perl_brace, remove
1813         format_perl_bracket.
1814         * message.c (format_language, format_language_pretty): Update.
1815         * x-perl.h (SCANNERS_PERL): Update.
1816         * Makefile.am (FORMAT_SOURCE): Add format-perl-brace.c, remove
1817         format-perl-bracket.c.
1818         * Makefile.msvc (OBJECTS): Add format-perl-brace.obj, remove
1819         format-perl-bracket.obj.
1820         (format-perl-brace.obj): Renamed from format-perl-bracket.obj.
1821         * Makefile.vms (OBJECTS): Add format-perl-brace.obj, remove
1822         format-perl-bracket.obj.
1823         (format-perl-brace.obj): Renamed from format-perl-bracket.obj.
1825 2003-07-03  Bruno Haible  <bruno@clisp.org>
1827         Support for PHP >= 4.2.0.
1828         * x-php.c (init_keywords): Add ngettext, dngettext, dcngettext to the
1829         built-in keywords.
1830         Reported by A. Sopicki <a.sopicki@gmx.de>.
1832 2003-06-27  Bruno Haible  <bruno@clisp.org>
1834         * xgettext.h (from_current_source_encoding): New declaraction.
1835         * xgettext.c (from_current_source_encoding): New function.
1836         (CONVERT_STRING): Use it.
1837         * x-perl.c: Include po-charset.h.
1838         (get_here_document): Convert each line to UTF-8.
1839         (phase2_getc): Convert each comment to UTF-8. Tell xgettext_comment_add
1840         to not convert it.
1841         (extract_quotelike_pass1_utf8): New function.
1842         (extract_quotelike): Use extract_quotelike_pass1_utf8.
1843         (extract_triple_quotelike): Likewise.
1844         (extract_variable): Tell remember_a_message to not convert the string.
1845         (interpolate_keywords): Likewise.
1846         (extract_balanced): Tell remember_a_message, remember_a_message_plural
1847         to not convert the string.
1849 2003-06-23  Guido Flohr  <guido@imperia.net>
1851         * x-perl.c (extract_quotelike_pass3): Fix handling of doubled
1852         backslashes in single-quoted strings.
1854 2003-06-23  Bruno Haible  <bruno@clisp.org>
1856         * format-perl-bracket.c (format_check): Allow additional bracketed
1857         items in the msgstr.
1859 2003-06-22  Bruno Haible  <bruno@clisp.org>
1861         * write-properties.c: Don't include exit.h and gettext.h.
1863 2003-06-22  Bruno Haible  <bruno@clisp.org>
1865         * x-php.c (phase3_ungetc): Comment out unused function.
1867 2003-06-21  Bruno Haible  <bruno@clisp.org>
1869         * format-perl.c: Complete rewrite.
1870         * format-perl-bracket.c: New file.
1871         * message.h (format_perl_bracket): New enum value.
1872         (NFORMATS): Increment.
1873         * format.h (formatstring_perl_bracket): New declaration.
1874         * format.c (formatstring_parsers): Add entry for perl_bracket.
1875         * message.c (format_language, format_language_pretty): Likewise.
1876         * x-perl.h (SCANNERS_PERL): Use formatstring_perl and
1877         formatstring_perl_bracket.
1878         * Makefile.am (FORMAT_SOURCE): Add format-perl-bracket.c.
1879         * Makefile.msvc (OBJECTS): Add format-perl.obj,format-perl-bracket.obj.
1880         (xgettext_OBJECTS): Add x-perl.obj.
1881         (format-perl.obj, format-perl-bracket.obj, x-perl.obj): New rules.
1882         * Makefile.vms (OBJECTS): Add format-perl.obj, format-perl-bracket.obj.
1883         (xgettext_OBJECTS): Add x-perl.obj.
1884         (format-perl.obj, format-perl-bracket.obj, x-perl.obj): New rules.
1886         * x-perl.c (extract_quotelike_pass3): Don't give an invalid
1887         interpolation error for a backslashed dollar sign.
1889 2003-06-21  Bruno Haible  <bruno@clisp.org>
1891         * x-perl.c (extract_quotelike_pass3): Fix handling of double backslash.
1893 2003-06-19  Bruno Haible  <bruno@clisp.org>
1895         * x-perl.c (enum string_type_ty): Remove trailing comma.
1896         (interpolate_keywords::enum parser_state): Likewise.
1897         (extract_quotelike_pass3): Cast first argument of u8_uctomb().
1899 2003-06-15  Bruno Haible  <bruno@clisp.org>
1901         * x-awk.c: Reorder definitions.
1902         * x-c.c: Reorder definitions.
1903         * x-perl.c: Reorder definitions.
1904         * x-php.c: Reorder definitions.
1905         * x-python.c: Reorder definitions.
1906         * x-smalltalk.c: Reorder definitions.
1907         * x-ycp.c: Reorder definitions.
1909 2003-06-15  Bruno Haible  <bruno@clisp.org>
1911         * x-perl.c (struct stack_entry): Remove type.
1912         (struct stack): Remove type.
1913         (struct token_stack_ty): New type.
1914         (token_stack): Change type to 'struct token_stack_ty'.
1915         (token_stack_dump): Renamed from stack_dump. Update.
1916         (token_stack_push): Renamed from stack_unshift. Rewritten.
1917         (token_stack_pop): Renamed from stack_shift. Rewritten.
1918         (token_stack_peek): Renamed from stack_head. Rewritten.
1919         (token_stack_free): Renamed from stack_free. Rewritten.
1920         (x_perl_lex, x_perl_unlex, extract_perl): Update.
1922 2003-06-15  Bruno Haible  <bruno@clisp.org>
1924         * x-perl.c (DEBUG_MEMORY): Remove macro.
1925         (remember_a_message_debug, remember_a_message_plural_debug,
1926         xmalloc_debug, xrealloc_debug, xrealloc_static_debug, xstrdup_debug,
1927         free_debug): Remove functions.
1928         (xrealloc_static): Remove macro. Use xrealloc instead.
1930 2003-06-15  Bruno Haible  <bruno@clisp.org>
1932         * x-awk.c (phase2_getc, x_awk_lex): Increase bufmax proportionally.
1933         * x-c.c (comment_add, comment_line_end, phase5_get, phase6_get):
1934         Likewise.
1935         * x-elisp.c (comment_add, comment_line_end): Likewise.
1936         * x-librep.c (comment_add, comment_line_end): Likewise.
1937         * x-lisp.c (comment_add, comment_line_end): Likewise.
1938         * x-php.c (comment_add, comment_line_end, x_php_lex): Likewise.
1939         * x-python.c (comment_add, comment_line_end, phase5_get): Likewise.
1940         * x-rst.c (extract_rst): Likewise.
1941         * x-smalltalk.c (comment_add, comment_line_end, phase2_get): Likewise.
1942         * x-tcl.c (comment_add, comment_line_end): Likewise.
1943         * x-ycp.c (phase2_getc, x_ycp_lex): Likewise.
1945 2003-06-15  Bruno Haible  <bruno@clisp.org>
1947         * xgettext.c (current_formatstring_parser1,
1948         current_formatstring_parser2): New variables, replacing
1949         current_formatstring_parser.
1950         (remember_a_message, remember_a_message_plural): Try both
1951         formatstring parsers.
1952         (language_to_extractor): Allow two formatstring parsers per language,
1953         not just one.
1954         * x-perl.h (SCANNERS_PERL): Add formatstring_c as secondary format
1955         string parser.
1956         * x-awk.h (SCANNERS_AWK): Update.
1957         * x-c.h (SCANNERS_C): Update.
1958         * x-elisp.h (SCANNERS_ELISP): Update.
1959         * x-glade.h (SCANNERS_GLADE): Update.
1960         * x-java.h (SCANNERS_JAVA): Update.
1961         * x-librep.h (SCANNERS_LIBREP): Update.
1962         * x-lisp.h (SCANNERS_LISP): Update.
1963         * x-php.h (SCANNERS_PHP): Update.
1964         * x-po.h (SCANNERS_PO): Update.
1965         * x-properties.h (SCANNERS_PROPERTIES): Update.
1966         * x-python.h (SCANNERS_PYTHON): Update.
1967         * x-rst.h (SCANNERS_RST): Update.
1968         * x-smalltalk.h (SCANNERS_SMALLTALK): Update.
1969         * x-tcl.h (SCANNERS_TCL): Update.
1970         * x-ycp.h (SCANNERS_YCP): Update.
1972 2003-06-15  Bruno Haible  <bruno@clisp.org>
1974         * x-perl.c (case_whitespace): New macro.
1975         (is_whitespace): New function.
1976         (interpolate_keywords): Add lineno argument. Track newlines to update
1977         lineno while processing the string. Use is_whitespace.
1978         (extract_triple_quotelike): Update. Use is_whitespace.
1979         (extract_variable): Simplify: add final NUL byte only when done. Use
1980         is_whitespace.
1981         (x_perl_prelex): Use is_whitespace. After reading a here document, use
1982         line_number+1, not line_number. Fix buffer overrun in <<XYZ handling.
1983         (collect_message): Use is_whitespace.
1984         (extract_balanced): Call free_token at the end of the loop, not at the
1985         beginning.
1987 2003-06-14  Bruno Haible  <bruno@clisp.org>
1989         * x-perl.c (enum token_type_ty): Reorder, so as to simplify the
1990         function free_token().
1991         (struct token_ty): Fix comments.
1992         (token2string): Add const.
1993         (token_stack): Make static.
1994         (*_debug, stack_dump): Remove all fflushs.
1995         (linebuf, linesize, linepos, linebuf_size, last_token, here_eaten,
1996         end_of_file): Make static.
1997         (last_string, last_string_finished): Remove unused variables.
1998         (phase1_getc, get_here_document, skip_pod): Test getline() result
1999         for being < 0, not == EOF.
2000         (phase1_ungetc): Signal internal error through abort(), not exit().
2001         (get_here_document): Tweak. Increase bufmax proportionally.
2002         (phase2_getc): Increase bufmax proportionally.
2003         (prefer_division_over_regexp): Fix comment.
2004         (extract_hex, extract_oct): Add const. Simplify.
2005         (extract_quotelike): Add a safety check.
2006         (extract_quotelike_pass1): Increase bufmax proportionally. Fix
2007         insufficient memory allocation at "bufpos + len >= bufmax".
2008         (extract_quotelike_pass3): Increase bufmax proportionally. Make crs
2009         const. After \x{ABC} position crs after the closing brace. Simplify \c
2010         code. Reduce memory allocation when \N{ABC} is seen. Fix bug in \l and
2011         \u. Fix error message when $ or @ is seen.
2012         (extract_variable): Increase bufmax proportionally.
2013         (interpolate_keywords): Likewise. Convert c's value to unsigned char.
2014         (x_perl_prelex): Increase bufmax proportionally. Compute 4th argument
2015         to extract_triple_quotelike completely.
2016         (extract_perl): Initialize token_stack correctly.
2018 2003-06-13  Bruno Haible  <bruno@clisp.org>
2020         * msgexec.c (process_string): Pass null_stderr=false.
2021         * msgfilter.c (process_string): Likewise.
2022         * msggrep.c (is_string_selected): Likewise.
2023         * read-java.c (execute_and_read_po_output): Likewise.
2024         * read-tcl.c (msgdomain_read_tcl): Likewise.
2025         * msginit.c (project_id, project_id_version, get_user_email,
2026         language_team_address): Return a default value if the subprocess
2027         fails, instead of exiting.
2029 2003-06-12  Bruno Haible  <bruno@clisp.org>
2031         * Makefile.am (noinst_HEADERS): Add x-perl.h.
2032         (FORMAT_SOURCE): Add format-perl.c.
2033         (xgettext_SOURCES): Add x-perl.c.
2034         * message.h (enum format_type): Mention perl between tcl and php.
2035         * message.c (format_language, format_language_pretty): Likewise.
2036         * format.h (formatstring_perl): Likewise.
2037         * format.c (formatstring_parsers): Likewise.
2038         * format-perl.c: Use GNU coding style. Prefer xmalloc over xcalloc.
2039         * x-perl.h: Assume ANSI C.
2040         * x-perl.c: Assume ANSI C. Use GNU coding style. Prefer xmalloc over
2041         xcalloc.
2042         (token_buf): Remove unused variable.
2043         (xcalloc_debug, stack_push, stack_pop): Remove unused functions.
2044         * xgettext.c: Mention perl between tcl and php.
2046 2003-06-11  Guido Flohr  <guido@imperia.net>
2048         * message.h (enum format_type): New enum value 'format_perl'.
2049         (NFORMATS): Increment.
2050         * message.c (format_language, format_language_pretty): Add entry
2051         for perl.
2052         * format.h (formatstring_perl): New declaration.
2053         * format-perl.c: New file.
2054         * format.c (formatstring_parsers): Add entry for perl.
2055         * x-perl.h: New file.
2056         * x-perl.c: New file.
2057         * xgettext.c: Include x-perl.h.
2058         (main): Call x_perl_extract_all, x_perl_keyword.
2059         (usage): Mention Perl language.
2060         (language_to_extractor): Add Perl rule.
2061         (extension_to_language): Add Perl rule.
2063 2003-06-08  Bruno Haible  <bruno@clisp.org>
2065         * Makefile.vms (LDADD): Take options from .opt files.
2066         (libiconv.opt): New rule.
2067         (msgcmp.exe, msgfmt.exe, msgmerge.exe, msgunfmt.exe, xgettext.exe,
2068         msgattrib.exe, msgcat.exe, msgcomm.exe, msgconv.exe, msgen.exe,
2069         msgexec.exe, msgfilter.exe, msggrep.exe, msginit.exe, msguniq.exe):
2070         Depend on it.
2071         * plural-eval.c: Include "eval-plural.h" without a path, rely on the
2072         Makefile's -I options instead.
2073         * read-properties.c (conv_from_java): Change type of q to
2074         'unsigned char *'.
2075         Reported by Jouk Jansen <joukj@hrem.stm.tudelft.nl>.
2077 2003-05-27  Bruno Haible  <bruno@clisp.org>
2079         * plural-table.c (plural_table): Correct entry for Slovak.
2080         Reported by Marcel Telka <marcel@telka.sk>.
2082 2003-05-24  Bruno Haible  <bruno@clisp.org>
2084         * x-glade.h (EXTENSIONS_GLADE): Also recognize the .glade2 extension.
2085         * x-glade.c (start_element_handler): Also extract strings according to
2086         Glade 2 conventions.
2088 2003-05-22  Bruno Haible  <bruno@clisp.org>
2090         * gettext-0.12.1 released.
2092 2003-05-21  Bruno Haible  <bruno@clisp.org>
2094         * msggrep.c (main) [Solaris]: Fix syntax error.
2095         Reported by Valery Beaud <valery.beaud@art.alcatel.fr>.
2097 2003-05-21  Bruno Haible  <bruno@clisp.org>
2099         * xgettext.c (output_syntax): New variable.
2100         (main): Set it.
2101         (finalize_header): If --properties-output was given, set the charset.
2103 2003-05-18  Bruno Haible  <bruno@clisp.org>
2105         * Makefile.msvc (DEBUGFLAGS): New variable.
2106         (gettextsrc.lib): Use it.
2107         (msgcmp.exe, msgfmt.exe, msgmerge.exe, msgunfmt.exe, xgettext.exe,
2108         msgattrib.exe, msgcat.exe, msgcomm.exe, msgconv.exe, msgen.exe,
2109         msgexec.exe, msgfilter.exe, msggrep.exe, msginit.exe, msguniq.exe):
2110         Use it, and MFLAGS too.
2112 2003-05-17  Bruno Haible  <bruno@clisp.org>
2114         * gettext-0.12 released.
2116 2003-05-17  Bruno Haible  <bruno@clisp.org>
2118         * Makefile.msvc (msgcmp.exe, msgfmt.exe, msgmerge.exe, msgunfmt.exe,
2119         msgattrib.exe, msgcat.exe, msgcomm.exe, msgconv.exe, msgen.exe,
2120         msgexec.exe, msgfilter.exe, msggrep.exe, msginit.exe, msguniq.exe):
2121         Link with iconv.lib, needed by intl.lib.
2123 2003-05-12  Bruno Haible  <bruno@clisp.org>
2125         * msginit.c (F_OK): Provide a fallback value.
2126         Reported by Perry Rapp.
2128 2003-05-10  Bruno Haible  <bruno@clisp.org>
2130         * msgl-iconv.c (iconv_string): Don't return -1 just because the string
2131         is longer than 4 KB.
2132         Reported by Denis Barbier <barbier@linuxfr.org>.
2134 2003-05-04  Bruno Haible  <bruno@clisp.org>
2136         * po-lex.h (po_gram_error): Don't use ISO C 99 feature on DEC C.
2137         * po-lex.c (po_gram_error): LIkewise.
2139 2003-05-03  Bruno Haible  <bruno@clisp.org>
2141         * msgfilter.c: Include <sys/select.h> also on EMX.
2142         Reported by Andreas Buening <andreas.buening@nexgo.de>.
2144 2003-04-26  Bruno Haible  <bruno@clisp.org>
2146         * message.h (msgdomain_list_ty): Add field 'encoding'.
2147         * message.c (msgdomain_list_alloc): Initialize it.
2148         * read-properties.h: New file.
2149         * read-properties.c: New file.
2150         * read-po-abstract.h (abstract_po_reader_class_ty): In
2151         directive_message field, add force_fuzzy argument.
2152         (po_scan_start, po_scan_end): Remove declarations.
2153         (input_syntax_ty): New type.
2154         (po_callback_message): Add force_fuzzy argument.
2155         * read-po-abstract.c (call_directive_message, po_callback_message):
2156         Add force_fuzzy argument.
2157         (po_scan_start, po_scan_end): Make static.
2158         (po_scan): Add support for syntax_properties. Move
2159         error_message_count handling to here.
2160         (po_callback_message): Move po_lex_charset_set invocation away.
2161         * read-po.h (default_po_reader_class_ty): In add_message field, add
2162         force_fuzzy argument.
2163         (default_directive_message, default_add_message): Add force_fuzzy
2164         argument.
2165         (inout_syntax): New declaration.
2166         * read-po.c (call_add_message): Add force_fuzzy argument.
2167         (default_directive_message, default_add_message): Likewise.
2168         (input_syntax): New variable.
2169         (read_po): Pass input_syntax to po_scan(). Set mdlp->encoding if
2170         possible.
2171         * po-gram-gen.y: Pass force_fuzzy = false.
2172         (do_callback_message): New function. Move po_lex_charset_set
2173         invocation to here.
2174         * po-lex.c (lex_end): Move error_message_count handling away.
2175         * write-properties.h: New file.
2176         * write-properties.c: New file.
2177         * write-po.h (message_print_syntax_properties): New declaration.
2178         * write-po.c (use_syntax_properties): New variable.
2179         (message_print_syntax_properties): New function.
2180         (msgdomain_list_print_po): New function, extracted from
2181         msgdomain_list_print.
2182         (msgdomain_list_print): Add check for plural forms. Add support for
2183         writing the .properties format.
2184         (extract_po): Renamed from extract. 
2185         * write-java.h (msgdomain_write_java): Add canon_encoding argument.
2186         * write-java.c (msgdomain_write_java): Likewise.
2187         * write-tcl.h (msgdomain_write_tcl): Likewise.
2188         * write-tcl.c (msgdomain_write_tcl): Likewise.
2189         * msgl-cat.c (catenate_msgdomain_list): Use mdlp->encoding if there
2190         is no header entry. Set total_mdlp->encoding if possible.
2191         * msgl-iconv.c (iconv_msgdomain_list): Use mdlp->encoding if there
2192         is no header entry. Set mdlp->encoding.
2193         * msgattrib.c (long_options): Add --properties-input/output.
2194         (main): Handle them.
2195         (usage): Document options -P and -p.
2196         * msgcat.c (long_options): Add --properties-input/output.
2197         (main): Handle them. If option -p is used, convert to UTF-8 and
2198         ignore the to_code.
2199         (usage): Document options -P and -p.
2200         * msgcomm.c (long_options): Add --properties-input/output.
2201         (main): Handle them.
2202         (usage): Document options -P and -p.
2203         * msgconv.c (long_options): Add --properties-input/output.
2204         (main): Handle them. If option -p is used, ignore the to_code.
2205         (usage): Document options -P and -p.
2206         * msgen.c (long_options): Add --properties-input/output.
2207         (main): Handle them.
2208         (usage): Document options -P and -p.
2209         * msgfilter.c (long_options): Add --properties-input/output.
2210         (main): Handle them.
2211         (usage): Document options -P and -p.
2212         * msggrep.c (long_options): Add --properties-input/output.
2213         (main): Handle them.
2214         (usage): Document options -P and -p.
2215         * msginit.c (long_options): Add --properties-input/output.
2216         (main): Handle them.
2217         (usage): Document options -P and -p.
2218         * msgmerge.c (long_options): Add --properties-input/output.
2219         (main): Handle them. In update mode, --properties-input implies
2220         --properties-output.
2221         (usage): Document options -P and -p.
2222         (merge): Set result->encoding if possible.
2223         * msguniq.c (long_options): Add --properties-input/output.
2224         (main): Handle them.
2225         (usage): Document options -P and -p.
2226         * msgcmp.c (long_options): Add --properties-input.
2227         (main): Handle it.
2228         (usage): Document option -P.
2229         * msgexec.c (long_options): Add --properties-input.
2230         (main): Handle it.
2231         (usage): Document option -P.
2232         * msgfmt.c (long_options): Add --properties-input.
2233         (main): Handle it. Pass the known canon_encoding to
2234         msgdomain_write_java and msgdomain_write_tcl.
2235         (usage): Document option -P.
2236         (msgfmt_add_message): Add force_fuzzy argument.
2237         (read_po_file_msgfmt): Pass input_syntax to po_scan().
2238         * msgunfmt.c (long_options): Add --properties-output.
2239         (main): Handle it.
2240         (usage): Document option -p.
2241         * x-properties.h: New file.
2242         * x-po.c (extract_add_message): Add force_fuzzy argument.
2243         (extract): Renamed from extract_po. Pass input_syntax to po_scan().
2244         (extract_po): New function.
2245         (extract_properties): New function.
2246         * xgettext.h: Include read-po.h.
2247         * xgettext.c (long_options): Add --properties-output.
2248         (main): Handle it.
2249         (usage): Document options -L JavaProperties and --properties-output.
2250         (exclude_directive_message): Add force_fuzzy argument.
2251         (read_exclusion_file): Pass input_syntax to po_scan().
2252         (table): Add support for .properties format.
2253         * Makefile.am (noinst_HEADERS): Add read-properties.h,
2254         write-properties.h, x-properties.h.
2255         (COMMON_SOURCE): Add read-properties.c.
2256         (libgettextsrc_la_SOURCES): Add write-properties.c.
2257         * Makefile.msvc (OBJECTS): Add read-properties.obj,
2258         write-properties.obj.
2259         (read-properties.obj, write-properties.obj): New rules.
2260         * Makefile.vms (OBJECTS): Add read-properties.obj,
2261         write-properties.obj.
2262         (read-properties.obj, write-properties.obj): New rules.
2263         * FILES: Update.
2265 2003-04-21  Bruno Haible  <bruno@clisp.org>
2267         * read-po-abstract.h (po_scan_file): Remove declaration.
2268         * read-po-abstract.c (po_scan_file): Remove function.
2269         * read-po.c (read_po_file): Call read_po.
2270         * msgfmt.c (read_po_file_msgfmt): Call open_po_file. Invoke po_scan
2271         instead of po_scan_file.
2272         * xgettext.c (read_exclusion_file): Call open_po_file. Invoke po_scan
2273         instead of po_scan_file.
2275 2003-04-20  Bruno Haible  <bruno@clisp.org>
2277         * open-po.h (open_po_file): Add argument 'exit_on_error'.
2278         * open-po.c (try_open_po_file): Renamed from open_po_file.
2279         (open_po_file): New function.
2280         * po-lex.h (lex_end): Change return type to void.
2281         (lex_open, lex_close): Remove declarations.
2282         * po-lex.c (lex_end): Change return type to void.
2283         (lex_open, lex_close): Remove functions.
2284         * read-po-abstract.c (po_scan_file): Inline lex_open and lex_close.
2285         Reuse po_scan code.
2287 2003-04-14  Bruno Haible  <bruno@clisp.org>
2289         * hostname.c (usage): Split strings: use one string per option
2290         description.
2291         * msgattrib.c (usage): Likewise.
2292         * msgcat.c (usage): Likewise.
2293         * msgcmp.c (usage): Likewise.
2294         * msgcomm.c (usage): Likewise.
2295         * msgconv.c (usage): Likewise.
2296         * msgen.c (usage): Likewise.
2297         * msgexec.c (usage): Likewise.
2298         * msgfilter.c (usage): Likewise.
2299         * msgfmt.c (usage): Likewise.
2300         * msggrep.c (usage): Likewise.
2301         * msginit.c (usage): Likewise.
2302         * msgmerge.c (usage): Likewise.
2303         * msgunfmt.c (usage): Likewise.
2304         * msguniq.c (usage): Likewise.
2305         * urlget.c (usage): Likewise.
2306         * xgettext.c (usage): Likewise.
2308 2003-04-13  Bruno Haible  <bruno@clisp.org>
2310         Unify three PO file parsers.
2311         * read-po-abstract.h: Renamed from po.h.
2312         (abstract_po_reader_class_ty): Renamed from po_method_ty.
2313         (abstract_po_reader_ty): Renamed from po_ty.
2314         (ABSTRACT_PO_READER_TY): Renamed from PO_BASE_TY.
2315         (po_reader_alloc): Renamed from po_alloc.
2316         (po_reader_free): Renamed from po_free.
2317         * read-po-abstract.c: Renamed from po.c.
2318         (po_reader_alloc): Renamed from po_alloc.
2319         (po_reader_free): Renamed from po_free.
2320         (call_parse_brief): Renamed from po_parse_brief.
2321         (call_parse_debrief): Renamed from po_parse_debrief.
2322         (call_directive_domain): Renamed from po_directive_domain.
2323         (call_directive_message): Renamed from po_directive_message.
2324         (call_comment): Renamed from po_comment.
2325         (call_comment_dot): Renamed from po_comment_dot.
2326         (call_comment_filepos): Renamed from po_comment_filepos.
2327         (call_comment_special): Renamed from po_comment_special.
2328         * read-po.h: Include read-po-abstract.h.
2329         (default_po_reader_class_ty, default_po_reader_ty): New types.
2330         (ABSTRACT_PO_READER_TY): New macro.
2331         (default_constructor, default_destructor, default_parse_brief,
2332         default_parse_debrief, default_directive_domain,
2333         default_directive_message, default_comment, default_comment_dot,
2334         default_comment_filepos, default_comment_special, default_set_domain,
2335         default_add_message): New declarations.
2336         (default_po_reader_alloc): New declaration.
2337         * read-po.c (default_po_reader_ty): Renamed from readall_class_ty.
2338         Add fields handle_comments, handle_filepos_comments,
2339         allow_domain_directives, allow_duplicates,
2340         allow_duplicates_if_same_msgstr.
2341         (call_set_domain, call_add_message, call_frob_new_message): New
2342         functions.
2343         (default_constructor): Renamed from readall_constructor. Don't set
2344         this->mdlp and this->mlp.
2345         (default_destructor): Renamed from readall_destructor.
2346         (default_parse_brief): Renamed from readall_parse_brief.
2347         (default_parse_debrief): New function.
2348         (default_copy_comment_state, default_reset_comment_state): New
2349         functions.
2350         (default_directive_domain): Renamed from readall_directive_domain.
2351         Call set_domain method.
2352         (default_directive_message): Renamed from readall_directive_message.
2353         Call add_message method.
2354         (default_comment): Renamed from readall_comment.
2355         (default_comment_dot): Renamed from readall_comment_dot.
2356         (default_comment_filepos): Renamed from readall_comment_filepos.
2357         (default_comment_special): Renamed from readall_comment_special.
2358         (default_set_domain, default_add_message): New functions.
2359         (default_methods): Renamed from readall_methods.
2360         (default_po_reader_alloc): New function.
2361         (read_po, read_po_file): Update.
2362         * msgfmt.c: Include read-po.h instead of po.h.
2363         (msgfmt_po_reader_ty): Renamed from msgfmt_class_ty. Inherit
2364         from default_po_reader_ty.
2365         (main): Drop po_lex_pass_comments call, done by default_parse_brief.
2366         (msgfmt_constructor): Renamed from format_constructor. Call superclass
2367         function.
2368         (msgfmt_parse_debrief): Renamed from format_debrief. Call superclass
2369         function.
2370         (format_directive_domain): Remove function.
2371         (msgfmt_set_domain): New function.
2372         (format_directive_message): Remove function.
2373         (msgfmt_add_message, msgfmt_frob_new_message): New functions.
2374         (msgfmt_comment_special): Renamed from format_comment_special.
2375         (msgfmt_methods): Renamed from format_methods.
2376         (read_po_file_msgfmt): Renamed from read_po_file.
2377         * x-po.c: Include read-po.h instead of po.h.
2378         (extract_class_ty, extract_constructor, extract_directive_domain,
2379         extract_directive_message, extract_parse_brief, extract_comment,
2380         extract_comment_dot, extract_comment_filepos, extract_comment_special):
2381         Remove functions.
2382         (extract_add_message): New function.
2383         (extract_methods): Update.
2384         (extract_po): Update.
2385         * xgettext.c: Include read-po-abstract.h instead of po.h.
2386         (exclude_directive_domain, exclude_directive_message, exclude_methods,
2387         read_exclusion_file): Update.
2388         * msgcmp.c: Don't include po.h.
2389         * msgmerge.c: Likewise.
2390         * po-gram-gen.y: Include read-po-abstract.h instead of po.h.
2391         * po-hash-gen.y: Likewise.
2392         (po_parse_comment_filepos): Renamed from po_hash.
2393         * po-hash.h (po_parse_comment_filepos): Renamed from po_hash.
2394         * Makefile.am (noinst_HEADERS): Remove po.h, add read-po-abstract.h.
2395         (COMMON_SOURCE): Remove po.c, add read-po-abstract.c.
2396         * Makefile.msvc (OBJECTS): Remove po.obj, add read-po-abstract.obj.
2397         (read-po-abstract.obj): Renamed from po.obj.
2398         * Makefile.vms (OBJECTS): Remove po.obj, add read-po-abstract.obj.
2399         (read-po-abstract.obj): Renamed from po.obj.
2401 2003-04-13  Bruno Haible  <bruno@clisp.org>
2403         * read-po.c (readall_directive_message): Separate accumulation and
2404         reset.
2405         * x-po.c (extract_directive_message): Likewise.
2407 2003-04-13  Bruno Haible  <bruno@clisp.org>
2409         * write-po.h (message_print_comment, message_print_comment_dot,
2410         message_print_comment_filepos, message_print_comment_flags): New
2411         declarations.
2412         * write-po.c: Reorder functions.
2413         (message_print_comment, message_print_comment_dot,
2414         message_print_comment_filepos, message_print_comment_flags): New
2415         functions, extracted from message_print.
2416         (message_print): Use them.
2417         (message_print_obsolete): Use message_print_comment.
2419 2003-04-22  Bruno Haible  <bruno@clisp.org>
2421         * plural-table.c (plural_table): Add an entry about Faroese.
2422         Reported by Jacob Sparre Andersen <sparre@crs4.it>.
2424 2003-04-13  Bruno Haible  <bruno@clisp.org>
2426         * po.h (po_scan_start, po_scan_end): New declarations.
2427         * po.c: Reorder functions.
2428         (po_scan_start, po_scan_end): New functions.
2429         (po_scan, po_scan_file): Use them.
2431 2003-04-12  Bruno Haible  <bruno@clisp.org>
2433         * Makefile.vms: New variables ABIFLAGS, DEFS. Avoid rules with no
2434         lines. Don't use the force target. Correct wildcard syntax.
2435         Suggested by Jouk Jansen <joukj@hrem.stm.tudelft.nl>.
2437 2003-04-13  Bruno Haible  <bruno@clisp.org>
2439         * xgettext.c (construct_header): Remove spurious comma.
2441 2003-03-30  Bruno Haible  <bruno@clisp.org>
2443         * Makefile.vms: New file.
2444         * Makefile.am (EXTRA_DIST): Add Makefile.vms.
2445         (x-java.c): Prepend a few VMS specific lines.
2446         * po-lex.c (mbfile_getc): Change element type of scatchbuf to
2447         'unsigned char'.
2448         * write-java.c (string_hashcode, write_java_string): Cast argument of
2449         u8_mbtouc.
2450         * write-tcl.c (write_tcl_string): Likewise.
2451         * x-python.c (phase7_getuc): Cast argument of unicode_name_character.
2452         * msgfilter.c (write): #undef before redefining it. Needed for VMS.
2453         (select): Likewise.
2455 2003-03-30  Bruno Haible  <bruno@clisp.org>
2457         * Makefile.am (noinst_HEADERS): Add po-gram-gen2.h.
2458         (BUILT_SOURCES): Add po-gram-gen2.h.
2459         (DISTCLEANFILES): Remove po-gram-gen2.h.
2460         (po-gram-gen2.h): Simplify rule.
2462 2003-03-17  Bruno Haible  <bruno@clisp.org>
2464         Native Woe32/MSVC support.
2465         * Makefile.msvc: New file.
2466         * Makefile.am (EXTRA_DIST): Add it.
2467         * msgfilter.c: Include <sys/time.h> only if it exists.
2468         (process_string): Mark as NYI on Woe32.
2469         * msgfmt.c (sigjmp_buf, sigsetjmp, siglongjmp): Provide fallback
2470         definitions for Woe32.
2471         * msginit.c: Include <fcntl.h>, for F_OK. Include <pwd.h> only if it
2472         exists.
2473         (get_user_pwd, get_user_fullname): Adapt for when <pwd.h> is missing.
2474         (project_id, project_id_version, get_user_email,
2475         language_team_address): Use DEV_NULL instead of "/dev/null".
2476         * msggrep.c (is_string_selected): Likewise.
2477         * read-java.c (execute_and_read_po_output): Likewise.
2478         * read-tcl.c (msgdomain_read_tcl): Likewise.
2479         * write-mo.c: Include <sys/param.h> only if it exists.
2481 2003-03-28  Bruno Haible  <bruno@clisp.org>
2483         * msgmerge.c (main): Use copy_file_preserving instead of copy_file.
2485 2003-03-16  Bruno Haible  <bruno@clisp.org>
2487         * str-list.h (string_list_join): Comment out.
2488         * str-list.c (string_list_join): Comment out.
2490 2003-03-10  Bruno Haible  <bruno@clisp.org>
2492         * msggrep.c (no_pass): Mention option -C.
2493         (usage): Document option -C completely.
2494         Reported by Martin Quinson <Martin.Quinson@tuxfamily.org>.
2496 2003-02-28  Bruno Haible  <bruno@clisp.org>
2498         Support for relocatable installation.
2499         * msgattrib.c: Include relocatable.h.
2500         (main): Relocate LOCALEDIR value.
2501         * msgcat.c: Include relocatable.h.
2502         (main): Relocate LOCALEDIR value.
2503         * msgcmp.c: Include relocatable.h.
2504         (main): Relocate LOCALEDIR value.
2505         * msgcomm.c: Include relocatable.h.
2506         (main): Relocate LOCALEDIR value.
2507         * msgconv.c: Include relocatable.h.
2508         (main): Relocate LOCALEDIR value.
2509         * msgen.c: Include relocatable.h.
2510         (main): Relocate LOCALEDIR value.
2511         * msgexec.c: Include relocatable.h.
2512         (main): Relocate LOCALEDIR value.
2513         * msgfilter.c: Include relocatable.h.
2514         (main): Relocate LOCALEDIR value.
2515         * msgfmt.c: Include relocatable.h.
2516         (main): Relocate LOCALEDIR value.
2517         * msggrep.c: Include relocatable.h.
2518         (main): Relocate LOCALEDIR value.
2519         * msginit.c: Include relocatable.h.
2520         (main): Relocate LOCALEDIR value.
2521         (project_id, project_id_version, get_user_email): Relocate LIBDIR
2522         value.
2523         (language_team_address): Relocate LIBDIR and PROJECTSDIR values.
2524         * msgmerge.c: Include relocatable.h.
2525         (main): Relocate LOCALEDIR value.
2526         * msgunfmt.c: Include relocatable.h.
2527         (main): Relocate LOCALEDIR value.
2528         * msguniq.c: Include relocatable.h.
2529         (main): Relocate LOCALEDIR value.
2530         * xgettext.c: Include relocatable.h.
2531         (main): Relocate LOCALEDIR value.
2532         * read-java.c: Include relocatable.h.
2533         (msgdomain_read_java): Relocate GETTEXTJEXEDIR value.
2534         * read-tcl.c: Include relocatable.h.
2535         (msgdomain_read_tcl): Relocate GETTEXTDATADIR value.
2536         * hostname.c: Include relocatable.h.
2537         (main): Relocate LOCALEDIR value. Update copyright year.
2538         * urlget.c: Include relocatable.h.
2539         (main): Relocate LOCALEDIR value. Update copyright year.
2540         (fetch): Relocate GETTEXTJEXEDIR value.
2541         * user-email.in: Relocate $libdir.
2542         * Makefile.am (aliaspath): New variable.
2543         (DEFS): Define LOCALE_ALIAS_PATH.
2544         (msginit_SOURCES): Add .../localealias.c.
2545         (msginit_LDADD): Remove .../localealias.lo.
2546         (msgcmp_CFLAGS, msgfmt_CFLAGS, msgmerge_CFLAGS, msgunfmt_CFLAGS,
2547         xgettext_CFLAGS, msgattrib_CFLAGS, msgcat_CFLAGS, msgcomm_CFLAGS,
2548         msgconv_CFLAGS, msgen_CFLAGS, msgexec_CFLAGS, msgfilter_CFLAGS,
2549         msggrep_CFLAGS, msginit_CFLAGS, msguniq_CFLAGS, hostname_CFLAGS,
2550         urlget_CFLAGS): New variables.
2551         (msgcmp_LDFLAGS, msgfmt_LDFLAGS, msgmerge_LDFLAGS, msgunfmt_LDFLAGS,
2552         xgettext_LDFLAGS, msgattrib_LDFLAGS, msgcat_LDFLAGS, msgcomm_LDFLAGS,
2553         msgconv_LDFLAGS, msgen_LDFLAGS, msgexec_LDFLAGS, msgfilter_LDFLAGS,
2554         msggrep_LDFLAGS, msginit_LDFLAGS, msguniq_LDFLAGS, hostname_LDFLAGS,
2555         urlget_LDFLAGS): New variables.
2556         (install-exec-java-yes): Don't ignore INSTALL_PROGRAM_ENV.
2557         (RELOCATABLE_LIBRARY_PATH, RELOCATABLE_SRC_DIR, RELOCATABLE_BUILD_DIR,
2558         RELOCATABLE_CONFIG_H_DIR): New variables.
2560 2003-03-13  Bruno Haible  <bruno@clisp.org>
2562         * msggrep.c (main): On Solaris, prefer /usr/xpg4/bin/grep to
2563         /usr/bin/grep. Needed for Solaris 2.8 and 2.9.
2564         Reported by Sven Utcke <utcke@informatik.uni-hamburg.de>.
2566 2003-03-03  Bruno Haible  <bruno@clisp.org>
2568         * msgen.c (usage): Don't say that the entries are marked fuzzy.
2569         Reported by Karl Eichwalder <ke@suse.de>.
2571 2003-02-23  Bruno Haible  <bruno@clisp.org>
2573         Improve error messages for invalid format strings.
2574         * format-invalid.h: New file.
2575         * format.h (struct formatstring_parser): Add invalid_reason argument
2576         to 'parse' field.
2577         * format-awk.c: Include c-ctype.h, xerror.h, format-invalid.h.
2578         (format_parse): Add invalid_reason argument.
2579         * format-c.c: Include c-ctype.h, xerror.h, format-invalid.h.
2580         (INVALID_C99_MACRO): New macro.
2581         (format_parse): Add invalid_reason argument.
2582         (get_c99_format_directives): Update.
2583         * format-elisp.c: Include c-ctype.h, xerror.h, format-invalid.h.
2584         (format_parse): Add invalid_reason argument.
2585         * format-java.c: Include xerror.h, format-invalid.h.
2586         (message_format_parse, choice_format_parse, format_parse): Add
2587         invalid_reason argument.
2588         (choice_format_parse): Return false if a choice contains an empty
2589         number part.
2590         * format-librep.c: Include c-ctype.h, xerror.h, format-invalid.h.
2591         (format_parse): Add invalid_reason argument.
2592         * format-lisp.c: Include xerror.h, format-invalid.h.
2593         (check_params, nocheck_params): Add directives, invalid_reason
2594         arguments.
2595         (parse_upto, format_parse): Add invalid_reason argument.
2596         * format-pascal.c: Include xerror.h, format-invalid.h.
2597         (format_parse): Add invalid_reason argument.
2598         * format-php.c: Include c-ctype.h, xerror.h, format-invalid.h.
2599         (format_parse): Add invalid_reason argument.
2600         * format-python.c: Include c-ctype.h, xerror.h, format-invalid.h.
2601         (INVALID_MIXES_NAMED_UNNAMED): New macro.
2602         (format_parse): Add invalid_reason argument.
2603         * format-tcl.c: Include c-ctype.h, xerror.h, format-invalid.h.
2604         (format_parse): Add invalid_reason argument.
2605         * format-ycp.c: Include c-ctype.h, xerror.h, format-invalid.h.
2606         (format_parse): Add invalid_reason argument.
2607         * msgfmt.c (check_pair): Output invalid_reason returned for msgstr.
2608         * msgmerge.c (msgfmt_check_pair_fails): Update.
2609         * xgettext.c (remember_a_message, remember_a_message_plural): Update.
2610         * Makefile.am (FORMAT_SOURCE): Add format-invalid.h.
2612 2003-02-22  Bruno Haible  <bruno@clisp.org>
2614         * x-python.c (init_keywords): Add u*gettext variants and plural
2615         handling functions added in Python 2.3.
2617 2003-02-22  Bruno Haible  <bruno@clisp.org>
2619         * Makefile.am (installdirs): Remove dependency, redundant with
2620         automake >= 1.6.
2622 2003-02-20  Bruno Haible  <bruno@clisp.org>
2624         * Makefile.am (libgettextpo_la_DEPENDENCIES): New variable.
2625         Reported by Jim Meyering <jim@meyering.net>.
2627 2003-02-19  Bruno Haible  <bruno@clisp.org>
2629         * Makefile.am (xgettext_LDADD): Mention $(LIBUNINAME) before
2630         libgettextsrc.la, not after it. Needed avoid link error on OSF/1 4.0:
2631         libtool produces a link command line that contains "-lc" where a
2632         shared library was used, and on OSF/1 4.0 "-lc" must not be used
2633         before objects that use integer division.
2635 2003-02-18  Bruno Haible  <bruno@clisp.org>
2637         * message.c (msgdomain_list_free): Uncomment this function.
2638         * Makefile.am (libgettextpo_la_LDFLAGS): Add ../lib/libgettextlib.la.
2639         Needed for Solaris 2.7.
2641 2003-02-16  Bruno Haible  <bruno@clisp.org>
2643         * msgmerge.c (message_merge): Add support for Report-Msgid-Bugs-To
2644         field.
2645         * xgettext.c (msgid_bugs_address): New variable.
2646         (long_options): Add option --msgid-bugs-address.
2647         (main): Handle option --msgid-bugs-address.
2648         (usage): Document option --msgid-bugs-address.
2649         (construct_header): Add 'Report-Msgid-Bugs-To:' field. Warn if
2650         msgid_bugs_address is empty.
2652 2003-02-15  Bruno Haible  <bruno@clisp.org>
2654         * user-email.in: Add support for GNOME evolution, OpenOffice and
2655         StarOffice with nonstandard installation directory.
2657 2003-02-15  Bruno Haible  <bruno@clisp.org>
2659         * msgattrib.c (main): Update year in --version output.
2660         * msgcat.c (main): Likewise.
2661         * msgcmp.c (main): Likewise.
2662         * msgcomm.c (main): Likewise.
2663         * msgconv.c (main): Likewise.
2664         * msgen.c (main): Likewise.
2665         * msgexec.c (main): Likewise.
2666         * msgfilter.c (main): Likewise.
2667         * msgfmt.c (main): Likewise.
2668         * msgunfmt.c (main): Likewise.
2669         * msguniq.c (main): Likewise.
2670         * xgettext.c (main): Likewise.
2672 2003-02-12  Bruno Haible  <bruno@clisp.org>
2674         Big restructuring.
2675         * gettext.c: Remove file.
2676         * ngettext.c: Remove file.
2677         * Makefile.am (bin_PROGRAMS): Remove gettext, ngettext.
2678         (EXTRA_DIST): Add ChangeLog.0.
2679         (pkgdatadir): Define using 'gettext' instead of @PACKAGE@.
2680         (pkglibdir): Likewise.
2681         (INCLUDES): Refer to intl in gettext-runtime directory.
2682         (gettext_SOURCES, ngettext_SOURCES, gettext_LDADD, ngettext_LDADD):
2683         Remove variables.
2684         (install-exec-local, installdirs-local, uninstall-local,
2685         install-exec-java-yes, installdirs-java-yes, uninstall-java-yes): Use
2686         $(pkglibdir) instead of $(libdir)/$(PACKAGE).
2687         * plural.c: Update for changed directory structure.
2688         * user-email.in: Use 'gettext' instead of @PACKAGE@.
2691 See ChangeLog.0 for earlier changes.