Make FileWriter errors verbose.

Print the errno message whenever there's a failure in the underlying
write function.

Bug: 32943635
Test: delta_generator --payload /path/to/nonexistent/place
Change-Id: Iba2961b7b7cd523ed5e651f6025f1d8e5f5e00a2
diff --git a/payload_generator/payload_file.cc b/payload_generator/payload_file.cc
index 2f95b21..ddf6f0a 100644
--- a/payload_generator/payload_file.cc
+++ b/payload_generator/payload_file.cc
@@ -194,7 +194,7 @@
   ScopedFileWriterCloser writer_closer(&writer);
 
   // Write header
-  TEST_AND_RETURN_FALSE(writer.Write(kDeltaMagic, sizeof(kDeltaMagic)));
+  TEST_AND_RETURN_FALSE_ERRNO(writer.Write(kDeltaMagic, sizeof(kDeltaMagic)));
 
   // Write major version number
   TEST_AND_RETURN_FALSE(WriteUint64AsBigEndian(&writer, major_version_));
@@ -209,8 +209,8 @@
     // Metadata signature has the same size as payload signature, because they
     // are both the same kind of signature for the same kind of hash.
     uint32_t metadata_signature_size = htobe32(signature_blob_length);
-    TEST_AND_RETURN_FALSE(writer.Write(&metadata_signature_size,
-                                       sizeof(metadata_signature_size)));
+    TEST_AND_RETURN_FALSE_ERRNO(writer.Write(&metadata_signature_size,
+                                             sizeof(metadata_signature_size)));
     metadata_size += sizeof(metadata_signature_size);
     // Set correct size instead of big endian size.
     metadata_signature_size = signature_blob_length;
@@ -219,8 +219,8 @@
   // Write protobuf
   LOG(INFO) << "Writing final delta file protobuf... "
             << serialized_manifest.size();
-  TEST_AND_RETURN_FALSE(writer.Write(serialized_manifest.data(),
-                                     serialized_manifest.size()));
+  TEST_AND_RETURN_FALSE_ERRNO(
+      writer.Write(serialized_manifest.data(), serialized_manifest.size()));
 
   // Write metadata signature blob.
   if (major_version_ == kBrilloMajorPayloadVersion &&
@@ -233,8 +233,8 @@
         PayloadSigner::SignHashWithKeys(metadata_hash,
                                         vector<string>(1, private_key_path),
                                         &metadata_signature));
-    TEST_AND_RETURN_FALSE(writer.Write(metadata_signature.data(),
-                                       metadata_signature.size()));
+    TEST_AND_RETURN_FALSE_ERRNO(
+        writer.Write(metadata_signature.data(), metadata_signature.size()));
   }
 
   // Append the data blobs
@@ -250,7 +250,7 @@
       break;
     }
     TEST_AND_RETURN_FALSE_ERRNO(rc > 0);
-    TEST_AND_RETURN_FALSE(writer.Write(buf.data(), rc));
+    TEST_AND_RETURN_FALSE_ERRNO(writer.Write(buf.data(), rc));
   }
 
   // Write payload signature blob.
@@ -264,8 +264,8 @@
         metadata_signature_size,
         metadata_size + metadata_signature_size + manifest_.signatures_offset(),
         &signature_blob));
-    TEST_AND_RETURN_FALSE(writer.Write(signature_blob.data(),
-                                       signature_blob.size()));
+    TEST_AND_RETURN_FALSE_ERRNO(
+        writer.Write(signature_blob.data(), signature_blob.size()));
   }
 
   ReportPayloadUsage(metadata_size);
@@ -281,10 +281,12 @@
   ScopedFdCloser in_fd_closer(&in_fd);
 
   DirectFileWriter writer;
-  TEST_AND_RETURN_FALSE(
-      writer.Open(new_data_blobs_path.c_str(),
-                  O_WRONLY | O_TRUNC | O_CREAT,
-                  0644) == 0);
+  int rc = writer.Open(
+      new_data_blobs_path.c_str(), O_WRONLY | O_TRUNC | O_CREAT, 0644);
+  if (rc != 0) {
+    PLOG(ERROR) << "Error creating " << new_data_blobs_path;
+    return false;
+  }
   ScopedFileWriterCloser writer_closer(&writer);
   uint64_t out_file_size = 0;
 
@@ -301,7 +303,7 @@
       TEST_AND_RETURN_FALSE(AddOperationHash(&aop.op, buf));
 
       aop.op.set_data_offset(out_file_size);
-      TEST_AND_RETURN_FALSE(writer.Write(buf.data(), buf.size()));
+      TEST_AND_RETURN_FALSE_ERRNO(writer.Write(buf.data(), buf.size()));
       out_file_size += buf.size();
     }
   }