+2015-10-06 Daiki Ueno <ueno@gnu.org>
+
+ * msgfmt.c (msgfmt_desktop_bulk): Distinguish the number of errors
+ and the exit status.
+ * write-desktop.c (msgdomain_write_desktop_bulk): Don't
+ immediately exit when fwriteerror() returns error.
+
2015-10-06 Daiki Ueno <ueno@gnu.org>
msgfmt: Refactor --desktop handling
(msgfmt_operand_list_append): New function.
(msgfmt_operand_list_add_directory): New function.
(msgfmt_desktop_bulk): Rewrite using msgfmt_operand_list_ty.
+
* msgfmt.h (msgfmt_operand_ty)
(msgfmt_operand_list_ty): New type.
* write-desktop.c (msgdomain_write_desktop_bulk):
}
static int
-msgfmt_operand_list_add_directory (msgfmt_operand_list_ty *operands,
- const char *directory)
+msgfmt_operand_list_add_from_directory (msgfmt_operand_list_ty *operands,
+ const char *directory)
{
string_list_ty languages;
void *saved_dir_list;
const char *file_name)
{
msgfmt_operand_list_ty operands;
- int retval;
+ int nerrors, status;
msgfmt_operand_list_init (&operands);
/* Read all .po files. */
- retval = msgfmt_operand_list_add_directory (&operands, directory);
- if (retval > 0)
+ nerrors = msgfmt_operand_list_add_from_directory (&operands, directory);
+ if (nerrors > 0)
{
msgfmt_operand_list_destroy (&operands);
- return retval;
+ return 1;
}
/* Write the messages into .desktop file. */
- retval = msgdomain_write_desktop_bulk (&operands,
+ status = msgdomain_write_desktop_bulk (&operands,
template_file_name,
keywords,
file_name);
msgfmt_operand_list_destroy (&operands);
- return retval;
+ return status;
}
if (msgfmt_reader->output_file == NULL)
{
desktop_reader_free (reader);
- error (EXIT_SUCCESS,
- errno, _("error while opening \"%s\" for writing"),
+ error (0, errno, _("error while opening \"%s\" for writing"),
file_name);
return 1;
}
if (template_file == NULL)
{
desktop_reader_free (reader);
- error (EXIT_SUCCESS,
- errno, _("error while opening \"%s\" for reading"),
+ error (0, errno, _("error while opening \"%s\" for reading"),
template_file_name);
return 1;
}
/* Make sure nothing went wrong. */
if (fwriteerror (msgfmt_reader->output_file))
- error (EXIT_FAILURE, errno, _("error while writing \"%s\" file"),
- file_name);
+ {
+ error (0, errno, _("error while writing \"%s\" file"),
+ file_name);
+ return 1;
+ }
desktop_reader_free (reader);