depmod: fail if any index could not be created
authorLucas De Marchi <lucas.de.marchi@gmail.com>
Fri, 15 Jun 2012 04:08:17 +0000 (01:08 -0300)
committerLucas De Marchi <lucas.de.marchi@gmail.com>
Fri, 15 Jun 2012 05:42:39 +0000 (02:42 -0300)
tools/depmod.c

index d8dded6..d8bfc2b 100644 (file)
@@ -2266,19 +2266,25 @@ static int depmod_output(struct depmod *depmod, FILE *out)
                if (r < 0) {
                        if (unlinkat(dfd, tmp, 0) != 0)
                                ERR("unlinkat(%s, %s): %m\n", dname, tmp);
-               } else {
-                       unlinkat(dfd, itr->name, 0);
-                       if (renameat(dfd, tmp, dfd, itr->name) != 0) {
-                               err = -errno;
-                               CRIT("renameat(%s, %s, %s, %s): %m\n",
-                                    dname, tmp, dname, itr->name);
-                               break;
-                       }
+
+                       ERR("Could not write index '%s': %s\n", itr->name,
+                                                               strerror(-r));
+                       err = -errno;
+                       break;
+               }
+
+               unlinkat(dfd, itr->name, 0);
+               if (renameat(dfd, tmp, dfd, itr->name) != 0) {
+                       err = -errno;
+                       CRIT("renameat(%s, %s, %s, %s): %m\n",
+                                       dname, tmp, dname, itr->name);
+                       break;
                }
        }
 
        if (dfd >= 0)
                close(dfd);
+
        return err;
 }