(<quotearg.h>): New include.

(append_file):
Don't assume that gettext preserves errno.
Quote arbitrary strings in diagnostics.
Check for close error.
This commit is contained in:
Paul Eggert
1999-12-13 05:11:05 +00:00
parent c6720c5a8b
commit a78ab36e1e

View File

@@ -21,6 +21,7 @@
they're on raw tape or something like that, it'll probably lose... */
#include "system.h"
#include <quotearg.h>
#include "common.h"
/* FIXME: This module should not directly handle the following variable,
@@ -50,12 +51,12 @@ append_file (char *path)
if (handle < 0)
{
ERROR ((0, errno, _("Cannot open file %s"), path));
open_error (path);
return;
}
if (fstat (handle, &stat_data) != 0)
ERROR ((0, errno, "%s", path));
stat_error (path);
else
{
off_t bytes_left = stat_data.st_size;
@@ -77,14 +78,18 @@ append_file (char *path)
status = safe_read (handle, start->buffer, buffer_size);
if (status < 0)
FATAL_ERROR ((0, errno,
_("Read error at byte %s reading %lu bytes in file %s"),
STRINGIFY_BIGINT (stat_data.st_size - bytes_left,
buf),
(unsigned long) buffer_size, path));
{
int e = errno;
FATAL_ERROR ((0, e,
_("Read error at byte %s reading %lu bytes in file %s"),
STRINGIFY_BIGINT (stat_data.st_size - bytes_left,
buf),
(unsigned long) buffer_size, quote (path)));
}
if (status == 0)
FATAL_ERROR ((0, 0, _("%s: File shrunk by %s bytes, (yark!)"),
path, STRINGIFY_BIGINT (bytes_left, buf)));
quotearg_colon (path),
STRINGIFY_BIGINT (bytes_left, buf)));
bytes_left -= status;
@@ -92,7 +97,8 @@ append_file (char *path)
}
}
close (handle);
if (close (handle) != 0)
close_error (path);
}
/*-----------------------------------------------------------------------.