diff --git a/src/sdl/i_main.c b/src/sdl/i_main.c
index 029febc059a10e8458de222eccce1180927e1a52..32cc16208a3e15b3d79d7110eee8faad79f4b358 100644
--- a/src/sdl/i_main.c
+++ b/src/sdl/i_main.c
@@ -133,15 +133,19 @@ int main(int argc, char **argv)
 	{
 		time_t my_time;
 		struct tm * timeinfo;
-		char buf[26];
+		const char *format;
 
 		logdir = D_Home();
 
 		my_time = time(NULL);
 		timeinfo = localtime(&my_time);
 
-		strftime(buf, 26, "%Y-%m-%d %H-%M-%S", timeinfo);
-		strcpy(logfile, va("log-%s.txt", buf));
+		if (M_CheckParm("-logfile") && M_IsNextParm())
+			format = M_GetNextParm();
+		else
+			format = "log-%Y-%m-%d %H-%M-%S.txt";
+
+		strftime(logfile, sizeof logfile, format, timeinfo);
 
 #ifdef DEFAULTDIR
 		if (logdir)