+bool read_tempfile_and_close(int fd, std::string *contents)
+{
+ bool ok = read_tempfile(fd, contents);
+
+ int ret;
+ do {
+ ret = close(fd); // Implicitly deletes the file.
+ } while (ret == -1 && errno == EINTR);
+
+ if (ret == -1) {
+ log_perror("close");
+ // Can still continue.
+ }
+
+ return ok;
+}
+