diff --git a/flashrom.c b/flashrom.c
index 453ae6d..4a8ab63 100644
--- a/flashrom.c
+++ b/flashrom.c
@@ -22,10 +22,6 @@
 #include <stdbool.h>
 #include <stdio.h>
 #include <sys/types.h>
-#ifndef __LIBPAYLOAD__
-#include <fcntl.h>
-#include <sys/stat.h>
-#endif
 #include <string.h>
 #include <unistd.h>
 #include <stdlib.h>
@@ -863,58 +859,6 @@
 	return chip - flashchips;
 }
 
-int write_buf_to_file(const unsigned char *buf, unsigned long size, const char *filename)
-{
-#ifdef __LIBPAYLOAD__
-	msg_gerr("Error: No file I/O support in libpayload\n");
-	return 1;
-#else
-	FILE *image;
-	int ret = 0;
-
-	if (!filename) {
-		msg_gerr("No filename specified.\n");
-		return 1;
-	}
-	if ((image = fopen(filename, "wb")) == NULL) {
-		msg_gerr("Error: opening file \"%s\" failed: %s\n", filename, strerror(errno));
-		return 1;
-	}
-
-	unsigned long numbytes = fwrite(buf, 1, size, image);
-	if (numbytes != size) {
-		msg_gerr("Error: file %s could not be written completely.\n", filename);
-		ret = 1;
-		goto out;
-	}
-	if (fflush(image)) {
-		msg_gerr("Error: flushing file \"%s\" failed: %s\n", filename, strerror(errno));
-		ret = 1;
-	}
-	// Try to fsync() only regular files and if that function is available at all (e.g. not on MinGW).
-#if defined(_POSIX_FSYNC) && (_POSIX_FSYNC != -1)
-	struct stat image_stat;
-	if (fstat(fileno(image), &image_stat) != 0) {
-		msg_gerr("Error: getting metadata of file \"%s\" failed: %s\n", filename, strerror(errno));
-		ret = 1;
-		goto out;
-	}
-	if (S_ISREG(image_stat.st_mode)) {
-		if (fsync(fileno(image))) {
-			msg_gerr("Error: fsyncing file \"%s\" failed: %s\n", filename, strerror(errno));
-			ret = 1;
-		}
-	}
-#endif
-out:
-	if (fclose(image)) {
-		msg_gerr("Error: closing file \"%s\" failed: %s\n", filename, strerror(errno));
-		ret = 1;
-	}
-	return ret;
-#endif
-}
-
 /* Even if an error is found, the function will keep going and check the rest. */
 static int selfcheck_eraseblocks(const struct flashchip *chip)
 {
diff --git a/helpers_fileio.c b/helpers_fileio.c
index 3b809c6..e3a4993 100644
--- a/helpers_fileio.c
+++ b/helpers_fileio.c
@@ -21,6 +21,7 @@
 #include <errno.h>
 
 #ifndef __LIBPAYLOAD__
+#include <fcntl.h>
 #include <sys/stat.h>
 #endif
 
@@ -69,3 +70,55 @@
 	return ret;
 #endif
 }
+
+int write_buf_to_file(const unsigned char *buf, unsigned long size, const char *filename)
+{
+#ifdef __LIBPAYLOAD__
+	msg_gerr("Error: No file I/O support in libpayload\n");
+	return 1;
+#else
+	FILE *image;
+	int ret = 0;
+
+	if (!filename) {
+		msg_gerr("No filename specified.\n");
+		return 1;
+	}
+	if ((image = fopen(filename, "wb")) == NULL) {
+		msg_gerr("Error: opening file \"%s\" failed: %s\n", filename, strerror(errno));
+		return 1;
+	}
+
+	unsigned long numbytes = fwrite(buf, 1, size, image);
+	if (numbytes != size) {
+		msg_gerr("Error: file %s could not be written completely.\n", filename);
+		ret = 1;
+		goto out;
+	}
+	if (fflush(image)) {
+		msg_gerr("Error: flushing file \"%s\" failed: %s\n", filename, strerror(errno));
+		ret = 1;
+	}
+	// Try to fsync() only regular files and if that function is available at all (e.g. not on MinGW).
+#if defined(_POSIX_FSYNC) && (_POSIX_FSYNC != -1)
+	struct stat image_stat;
+	if (fstat(fileno(image), &image_stat) != 0) {
+		msg_gerr("Error: getting metadata of file \"%s\" failed: %s\n", filename, strerror(errno));
+		ret = 1;
+		goto out;
+	}
+	if (S_ISREG(image_stat.st_mode)) {
+		if (fsync(fileno(image))) {
+			msg_gerr("Error: fsyncing file \"%s\" failed: %s\n", filename, strerror(errno));
+			ret = 1;
+		}
+	}
+#endif
+out:
+	if (fclose(image)) {
+		msg_gerr("Error: closing file \"%s\" failed: %s\n", filename, strerror(errno));
+		ret = 1;
+	}
+	return ret;
+#endif
+}
