We can use fclose directly in std::unique_ptr.

It turns out the standard explicitly states that if the pointer is
null, the deleter function won't be called. So it doesn't matter that
fclose(3) doesn't accept null.

Change-Id: I10e6e0d62209ec03ac60e673edd46f32ba279a04
diff --git a/uncrypt/uncrypt.cpp b/uncrypt/uncrypt.cpp
index 6db4382..4956cc2 100644
--- a/uncrypt/uncrypt.cpp
+++ b/uncrypt/uncrypt.cpp
@@ -186,8 +186,7 @@
         ALOGE("failed to open %s\n", map_file);
         return -1;
     }
-    FILE* mapf = fdopen(mapfd, "w");
-    unique_file mapf_holder(mapf);
+    std::unique_ptr<FILE, int(*)(FILE*)> mapf(fdopen(mapfd, "w"), fclose);
 
     // Make sure we can write to the status_file.
     if (!android::base::WriteStringToFd("0\n", status_fd)) {
@@ -212,7 +211,8 @@
     ranges[0] = -1;
     ranges[1] = -1;
 
-    fprintf(mapf, "%s\n%lld %lu\n", blk_dev, (long long)sb.st_size, (unsigned long)sb.st_blksize);
+    fprintf(mapf.get(), "%s\n%lld %lu\n",
+            blk_dev, (long long)sb.st_size, (unsigned long)sb.st_blksize);
 
     unsigned char* buffers[WINDOW_SIZE];
     if (encrypted) {
@@ -309,9 +309,9 @@
         ++head_block;
     }
 
-    fprintf(mapf, "%d\n", range_used);
+    fprintf(mapf.get(), "%d\n", range_used);
     for (int i = 0; i < range_used; ++i) {
-        fprintf(mapf, "%d %d\n", ranges[i*2], ranges[i*2+1]);
+        fprintf(mapf.get(), "%d %d\n", ranges[i*2], ranges[i*2+1]);
     }
 
     if (fsync(mapfd) == -1) {