diff options
author | Karel Zak <kzak@redhat.com> | 2007-10-03 14:15:03 -0700 |
---|---|---|
committer | Karel Zak <kzak@redhat.com> | 2007-10-11 13:19:55 +0200 |
commit | 642035150ec8fcb76244cf8475c5efdc7541760d (patch) | |
tree | 0a40ff376bc9cf04f6556c42454a2f39c9422951 /text-utils | |
parent | 830d6af09972a79ae7a6786afcb567d9d2cd5d24 (diff) | |
download | util-linux-old-642035150ec8fcb76244cf8475c5efdc7541760d.tar.gz |
tailf: clean up gcc warnings & fix use of errno
Fix strict gcc warnings in tailf that come from using:
("-Wall -Wp,-D_FORTIFY_SOURCE=2")
tailf.c:111: warning: ignoring return value of 'fwrite', declared with attribute warn_unused_result
Also, tailf uses perror() for error reporting, but it inserts
an fprintf call first, so perror() is actually reporting the
result of the fprintf() call, not the failing call; change
the code to print the message by using strerror() instead.
Builds cleanly on x86_32 and x86_64.
Signed-off-by: Randy Dunlap <randy.dunlap@oracle.com>
Signed-off-by: Karel Zak <kzak@redhat.com>
Diffstat (limited to 'text-utils')
-rw-r--r-- | text-utils/tailf.c | 20 |
1 files changed, 13 insertions, 7 deletions
diff --git a/text-utils/tailf.c b/text-utils/tailf.c index e10243f9..5b1d1a4e 100644 --- a/text-utils/tailf.c +++ b/text-utils/tailf.c @@ -30,6 +30,8 @@ #include <stdlib.h> #include <unistd.h> #include <malloc.h> +#include <errno.h> +#include <string.h> #include <sys/stat.h> #include "nls.h" @@ -50,8 +52,8 @@ static void tailf(const char *filename, int lines) int i; if (!(str = fopen(filename, "r"))) { - fprintf(stderr, _("Cannot open \"%s\" for read\n"), filename); - perror(""); + fprintf(stderr, _("Cannot open \"%s\" for read: %s\n"), + filename, strerror(errno)); exit(1); } @@ -83,7 +85,7 @@ int main(int argc, char **argv) size_t osize, nsize; FILE *str; const char *filename; - int count; + int count, wcount; setlocale(LC_ALL, ""); bindtextdomain(PACKAGE, LOCALEDIR); @@ -102,13 +104,17 @@ int main(int argc, char **argv) nsize = filesize(filename); if (nsize != osize) { if (!(str = fopen(filename, "r"))) { - fprintf(stderr, _("Cannot open \"%s\" for read\n"), filename); - perror(argv[0]); + fprintf(stderr, _("Cannot open \"%s\" for read: %s\n"), + filename, strerror(errno)); exit(1); } if (!fseek(str, osize, SEEK_SET)) - while ((count = fread(buffer, 1, sizeof(buffer), str)) > 0) - fwrite(buffer, 1, count, stdout); + while ((count = fread(buffer, 1, sizeof(buffer), str)) > 0) { + wcount = fwrite(buffer, 1, count, stdout); + if (wcount != count) + fprintf (stderr, _("Incomplete write to \"%s\" (written %d, expected %d)\n"), + filename, wcount, count); + } fflush(stdout); fclose(str); osize = nsize; |