Add more debugging to installd

If a command to installd fails, it would be nice to know exactly why.
Log failures and the errno associated with the failures.

Change-Id: Ia3122675f243037c556d3a49d06da7e03b8c59f6
diff --git a/cmds/installd/commands.c b/cmds/installd/commands.c
index b8ba3f6..2e87394 100644
--- a/cmds/installd/commands.c
+++ b/cmds/installd/commands.c
@@ -24,7 +24,6 @@
     if ((uid < AID_SYSTEM) || (gid < AID_SYSTEM)) {
         LOGE("invalid uid/gid: %d %d\n", uid, gid);
         return -1;
-        
     }
 
     if (encrypted_fs_flag == USE_UNENCRYPTED_FS) {
@@ -143,6 +142,7 @@
     if (statfs(PKG_DIR_PREFIX, &sfs) == 0) {
         return sfs.f_bavail * sfs.f_bsize;
     } else {
+        LOGE("Couldn't statfs " PKG_DIR_PREFIX ": %s\n", strerror(errno));
         return -1;
     }
 }
@@ -171,7 +171,7 @@
     /* First try encrypted dir */
     d = opendir(PKG_SEC_DIR_PREFIX);
     if (d == NULL) {
-        LOGE("cannot open %s\n", PKG_SEC_DIR_PREFIX);
+        LOGE("cannot open %s: %s\n", PKG_SEC_DIR_PREFIX, strerror(errno));
     } else {
         dfd = dirfd(d);
 
@@ -203,7 +203,7 @@
     /* Next try unencrypted dir... */
     d = opendir(PKG_DIR_PREFIX);
     if (d == NULL) {
-        LOGE("cannot open %s\n", PKG_DIR_PREFIX);
+        LOGE("cannot open %s: %s\n", PKG_DIR_PREFIX, strerror(errno));
         return -1;
     }
     dfd = dirfd(d);
@@ -279,6 +279,7 @@
 
     LOGI("move %s -> %s\n", src_dex, dst_dex);
     if (rename(src_dex, dst_dex) < 0) {
+        LOGE("Couldn't move %s: %s\n", src_dex, strerror(errno));
         return -1;
     } else {
         return 0;
@@ -294,6 +295,7 @@
 
     LOGI("unlink %s\n", dex_path);
     if (unlink(dex_path) < 0) {
+        LOGE("Couldn't unlink %s: %s\n", dex_path, strerror(errno));
         return -1;
     } else {
         return 0;
diff --git a/cmds/installd/utils.c b/cmds/installd/utils.c
index 555c19e..a5e4b5a 100644
--- a/cmds/installd/utils.c
+++ b/cmds/installd/utils.c
@@ -98,11 +98,13 @@
 
             subfd = openat(dfd, name, O_RDONLY | O_DIRECTORY);
             if (subfd < 0) {
+                LOGE("Couldn't openat %s: %s\n", name, strerror(errno));
                 result = -1;
                 continue;
             }
             subdir = fdopendir(subfd);
             if (subdir == NULL) {
+                LOGE("Couldn't fdopendir %s: %s\n", name, strerror(errno));
                 close(subfd);
                 result = -1;
                 continue;
@@ -112,10 +114,12 @@
             }
             closedir(subdir);
             if (unlinkat(dfd, name, AT_REMOVEDIR) < 0) {
+                LOGE("Couldn't unlinkat %s: %s\n", name, strerror(errno));
                 result = -1;
             }
         } else {
             if (unlinkat(dfd, name, 0) < 0) {
+                LOGE("Couldn't unlinkat %s: %s\n", name, strerror(errno));
                 result = -1;
             }
         }
@@ -133,12 +137,14 @@
 
     d = opendir(pathname);
     if (d == NULL) {
+        LOGE("Couldn't opendir %s: %s\n", pathname, strerror(errno));
         return -errno;
     }
     res = _delete_dir_contents(d, ignore);
     closedir(d);
     if (also_delete_dir) {
         if (rmdir(pathname)) {
+            LOGE("Couldn't rmdir %s: %s\n", pathname, strerror(errno));
             res = -1;
         }
     }
@@ -152,10 +158,12 @@
 
     fd = openat(dfd, name, O_RDONLY | O_DIRECTORY);
     if (fd < 0) {
+        LOGE("Couldn't openat %s: %s\n", name, strerror(errno));
         return -1;
     }
     d = fdopendir(fd);
     if (d == NULL) {
+        LOGE("Couldn't fdopendir %s: %s\n", name, strerror(errno));
         close(fd);
         return -1;
     }