aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorLucas De Marchi <lucas.demarchi@profusion.mobi>2012-06-15 22:14:00 -0300
committerLucas De Marchi <lucas.demarchi@profusion.mobi>2012-06-15 22:14:00 -0300
commit3f376cd87742246f00fe552596975a00ec5d60b1 (patch)
tree36295c3010aeb03916e21563c8efd070db9be3a1
parentb7d830bcc8c1334c97701a23afec4d7a51c0151f (diff)
downloadkmod-3f376cd87742246f00fe552596975a00ec5d60b1.tar.gz
depmod: use ferror and fclose to check for error
Thanks to hpa for point this out.
-rw-r--r--tools/depmod.c13
1 files changed, 6 insertions, 7 deletions
diff --git a/tools/depmod.c b/tools/depmod.c
index 790cc76..834bb05 100644
--- a/tools/depmod.c
+++ b/tools/depmod.c
@@ -2236,8 +2236,7 @@ static int depmod_output(struct depmod *depmod, FILE *out)
for (itr = depfiles; itr->name != NULL; itr++) {
FILE *fp = out;
char tmp[NAME_MAX] = "";
- int r;
- long eof;
+ int r, ferr;
if (fp == NULL) {
int flags = O_CREAT | O_TRUNC | O_WRONLY;
@@ -2263,8 +2262,8 @@ static int depmod_output(struct depmod *depmod, FILE *out)
if (fp == out)
continue;
- eof = ftell(fp);
- fclose(fp);
+ ferr = ferror(fp) | fclose(fp);
+
if (r < 0) {
if (unlinkat(dfd, tmp, 0) != 0)
ERR("unlinkat(%s, %s): %m\n", dname, tmp);
@@ -2283,10 +2282,10 @@ static int depmod_output(struct depmod *depmod, FILE *out)
break;
}
- if (eof == EOF) {
+ if (ferr) {
err = -ENOSPC;
- ERR("Could not create index: output truncated: %s\n",
- strerror(-err));
+ ERR("Could not create index '%s'. Output is truncated: %s\n",
+ itr->name, strerror(-err));
break;
}
}