depmod: use ferror and fclose to check for error
Thanks to hpa for point this out.
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 @@
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 @@
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 @@
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;
}
}