diff --git a/flash.h b/flash.h
index ff4b06b..81fd61b 100644
--- a/flash.h
+++ b/flash.h
@@ -255,6 +255,9 @@
 int min(int a, int b);
 char *strcat_realloc(char *dest, const char *src);
 void tolower_string(char *str);
+#ifdef __MINGW32__
+char* strtok_r(char *str, const char *delim, char **nextp);
+#endif
 
 /* flashrom.c */
 extern const char flashrom_version[];
diff --git a/helpers.c b/helpers.c
index 63fc880..5685d29 100644
--- a/helpers.c
+++ b/helpers.c
@@ -70,3 +70,24 @@
 		*str = (char)tolower((unsigned char)*str);
 }
 
+/* FIXME: Find a better solution for MinGW. Maybe wrap strtok_s (C11) if it becomes available */
+#ifdef __MINGW32__
+char* strtok_r(char *str, const char *delim, char **nextp)
+{
+	if (str == NULL)
+		str = *nextp;
+
+	str += strspn(str, delim); /* Skip leading delimiters */
+	if (*str == '\0')
+		return NULL;
+
+	char *ret = str;
+	str += strcspn(str, delim); /* Find end of token */
+	if (*str != '\0')
+		*str++ = '\0';
+
+	*nextp = str;
+	return ret;
+}
+#endif
+
diff --git a/print.c b/print.c
index 243aa49..a522085 100644
--- a/print.c
+++ b/print.c
@@ -26,27 +26,6 @@
 #include "flash.h"
 #include "programmer.h"
 
-/* FIXME: Find a better solution for MinGW. Maybe wrap strtok_s (C11) below if it becomes available */
-#ifdef __MINGW32__
-static char* strtok_r(char *str, const char *delim, char **nextp)
-{
-	if (str == NULL)
-		str = *nextp;
-
-	str += strspn(str, delim); /* Skip leading delimiters */
-	if (*str == '\0')
-		return NULL;
-
-	char *ret = str;
-	str += strcspn(str, delim); /* Find end of token */
-	if (*str != '\0')
-		*str++ = '\0';
-
-	*nextp = str;
-	return ret;
-}
-#endif
-
 static const char *test_state_to_text(enum test_state test_state)
 {
 	switch (test_state) {
