Hi,

this is a patch to fix this issue. No logfile will be created by default anymore. If you use the new option "-logfile" a file called log.txt will be created. If you use the new option like "-logfile name-of-file.log" a file called name-of-file.log will be created.

  Thorsten
diff -ur openuniverse-1.0beta3.1+dfsg/src/cmdline.cpp openuniverse-1.0beta3.1+dfsg.work/src/cmdline.cpp
--- openuniverse-1.0beta3.1+dfsg/src/cmdline.cpp	2009-01-08 13:13:27.000000000 +0100
+++ openuniverse-1.0beta3.1+dfsg.work/src/cmdline.cpp	2009-01-10 18:44:15.000000000 +0100
@@ -26,7 +26,6 @@
 void ParseCmdLine(int n, char **s)
 {
 	int i = 1, err = 0;
-
 	while ((i < n) && (!err)) {
 		err = 0;
 		if (!strcmp(s[i], "-bench")) {
@@ -39,18 +38,48 @@
 #ifdef HAVE_GLUI
 			fullscreeninGUI = 1;
 #endif
-			if (s[i + 1][0] != '-') {
-				strcpy(game_string, s[i + 1]);
-				i++;
+			if (i+1==n) {
+				/* no parameter left */
+ 			}
+			else {
+  				/* optional parameter available */
+				if (s[i + 1][0] != '-') {
+					strcpy(game_string, s[i + 1]);
+					i++;
+				}
 			}
 			i++;
 			continue;
 		}
+		#define DEF_LOGFILE_NAME  "log.txt"
+		if (!strcmp(s[i], "-logfile")) {
+			if (i+1==n) {
+				/* no parameter for logfile, use default  */
+				logfileName=(char*)malloc(strlen(DEF_LOGFILE_NAME));
+				strcpy(logfileName, DEF_LOGFILE_NAME);
+			}
+			else {
+				/* still a parameter left */
+				if (s[i + 1][0] != '-') {
+ 					logfileName=(char*)malloc(strlen(s[i+1]));
+					strcpy(logfileName, s[i + 1]);
+					i++;
+				}
+				else {
+					/* use default logfileName */
+ 					logfileName=(char*)malloc(strlen(DEF_LOGFILE_NAME));
+					strcpy(logfileName, DEF_LOGFILE_NAME);
+				}
+					
+                        }
+			i++;
+			continue;
+		}
 		err = 1;
 	};
 	if (err) {
 		error("Valid command line options:\n");
-		error("\n openuniverse [-bench] [-fullscreen [mode_string]] \n\n");
+		error("\n openuniverse [-bench] [-fullscreen [mode_string]] [-logfile [filename]]\n\n");
 		shutdown(1);
 	}
 }
diff -ur openuniverse-1.0beta3.1+dfsg/src/ou.cpp openuniverse-1.0beta3.1+dfsg.work/src/ou.cpp
--- openuniverse-1.0beta3.1+dfsg/src/ou.cpp	2000-06-04 23:29:29.000000000 +0200
+++ openuniverse-1.0beta3.1+dfsg.work/src/ou.cpp	2009-01-10 18:53:23.000000000 +0100
@@ -54,6 +54,7 @@
 TexFont *txf = NULL;
 int fonttype = TEXFONT, glyphheight, glyphwidth;
 FILE *logfile = NULL;
+char *logfileName = NULL;
 int totaltexsize = 0;
 
 void CheckError(void)
@@ -521,13 +522,18 @@
 int main(int argc, char *argv[])
 {
 
-	logfile = fopen("log.txt", "wt");
+	ParseCmdLine(argc, argv);
+        if (logfileName!=NULL) {
+          /* we need a logfile so open it */
+	  logfile = fopen(logfileName, "wt");
+        }
 	LOG("Initializing GLUT", glutInit(&argc, argv));
 	LOG("Initializing display mode",
 		glutInitDisplayMode(GLUT_RGB | GLUT_DOUBLE | GLUT_DEPTH));
 	LOG("Initializing window", glutInitWindowSize(width, height));
 	glutInitWindowPosition(0, 0);
-	LOG("Parsing command line", ParseCmdLine(argc, argv));
+//parsing moved to the beginning to make variable logfilenames possible
+//	LOG("Parsing command line", ParseCmdLine(argc, argv));
 	if (fullscreen) {
 #ifdef WIN32
 		glutGameModeString(game_string);
diff -ur openuniverse-1.0beta3.1+dfsg/src/ou.h openuniverse-1.0beta3.1+dfsg.work/src/ou.h
--- openuniverse-1.0beta3.1+dfsg/src/ou.h	2009-01-08 13:13:27.000000000 +0100
+++ openuniverse-1.0beta3.1+dfsg.work/src/ou.h	2009-01-08 19:37:24.000000000 +0100
@@ -119,6 +119,7 @@
 extern TexFont *txf;
 extern int fonttype, glyphheight, glyphwidth;
 extern FILE *logfile;
+extern char *logfileName;
 extern int hasPointEXT, numevents, currevent, eventrecord;
 extern double eventrecordstart;
 extern double eventstartcampos[3], eventstartcameye[3], eventstartcamup[3];
diff -ur openuniverse-1.0beta3.1+dfsg/src/util.cpp openuniverse-1.0beta3.1+dfsg.work/src/util.cpp
--- openuniverse-1.0beta3.1+dfsg/src/util.cpp	2000-06-04 21:35:23.000000000 +0200
+++ openuniverse-1.0beta3.1+dfsg.work/src/util.cpp	2009-01-08 20:04:00.000000000 +0100
@@ -568,7 +568,9 @@
 
 void shutdown(int status)
 {
-	fclose(logfile);
-	exit(status);
+	if (logfile) {
+		fclose(logfile);
+		exit(status);
+	}
 }
 

Reply via email to