+ return -1;
+ }
+
+ oldmask = umask(0644);
+ destination_fd = mkstemp(template);
+ umask(oldmask);
+ if (destination_fd < 0) {
+ pb_log("%s: unable to create temp file, %m\n", __func__);
+ fclose(source_handle);
+ return -1;
+ }
+ destination_handle = fdopen(destination_fd, "w");
+ if (!destination_handle) {
+ pb_log("%s: unable to open destination file, %m\n", __func__);
+ fclose(source_handle);
+ close(destination_fd);