rocksndiamonds-2.1.1
[rocksndiamonds.git] / src / libgame / misc.c
index 8fe3200d3c4a28b22675eeccd81a9fc00f7450da..8bc69396cb464a0ad20b666dbced14501277c85e 100644 (file)
@@ -1,7 +1,7 @@
 /***********************************************************
 * Artsoft Retro-Game Library                               *
 *----------------------------------------------------------*
-* (c) 1994-2001 Artsoft Entertainment                      *
+* (c) 1994-2002 Artsoft Entertainment                      *
 *               Holger Schemel                             *
 *               Detmolder Strasse 189                      *
 *               33604 Bielefeld                            *
@@ -306,12 +306,19 @@ char *getLoginName()
 #if defined(PLATFORM_WIN32)
   return ANONYMOUS_NAME;
 #else
-  struct passwd *pwd;
+  static char *login_name = NULL;
 
-  if ((pwd = getpwuid(getuid())) == NULL)
-    return ANONYMOUS_NAME;
-  else
-    return pwd->pw_name;
+  if (login_name == NULL)
+  {
+    struct passwd *pwd;
+
+    if ((pwd = getpwuid(getuid())) == NULL)
+      login_name = ANONYMOUS_NAME;
+    else
+      login_name = getStringCopy(pwd->pw_name);
+  }
+
+  return login_name;
 #endif
 }
 
@@ -357,16 +364,16 @@ char *getHomeDir()
 #if defined(PLATFORM_UNIX)
   static char *home_dir = NULL;
 
-  if (!home_dir)
+  if (home_dir == NULL)
   {
-    if (!(home_dir = getenv("HOME")))
+    if ((home_dir = getenv("HOME")) == NULL)
     {
       struct passwd *pwd;
 
-      if ((pwd = getpwuid(getuid())))
-       home_dir = pwd->pw_dir;
-      else
+      if ((pwd = getpwuid(getuid())) == NULL)
        home_dir = ".";
+      else
+       home_dir = getStringCopy(pwd->pw_dir);
     }
   }
 
@@ -628,7 +635,7 @@ void Error(int mode, char *format, ...)
   if (mode & ERR_WARN && !options.verbose)
     return;
 
-#if !defined(PLATFORM_UNIX)
+#if defined(PLATFORM_MSDOS)
   newline = "\r\n";
 
   if ((error = openErrorFile()) == NULL)
@@ -1258,44 +1265,27 @@ boolean FileIsArtworkType(char *basename, int type)
 
 
 /* ========================================================================= */
-/* functions only needed for non-Unix (non-command-line) systems */
+/* functions only needed for non-Unix (non-command-line) systems             */
+/* (MS-DOS only; SDL/Windows creates files "stdout.txt" and "stderr.txt")    */
 /* ========================================================================= */
 
-#if !defined(PLATFORM_UNIX)
+#if defined(PLATFORM_MSDOS)
 
-#define ERROR_FILENAME         "error.out"
+#define ERROR_FILENAME         "stderr.txt"
 
 void initErrorFile()
 {
-  char *filename;
-
-  InitUserDataDirectory();
-
-  filename = getPath2(getUserDataDir(), ERROR_FILENAME);
-  unlink(filename);
-  free(filename);
+  unlink(ERROR_FILENAME);
 }
 
 FILE *openErrorFile()
 {
-  char *filename;
-  FILE *error_file;
-
-  filename = getPath2(getUserDataDir(), ERROR_FILENAME);
-  error_file = fopen(filename, MODE_APPEND);
-  free(filename);
-
-  return error_file;
+  return fopen(ERROR_FILENAME, MODE_APPEND);
 }
 
 void dumpErrorFile()
 {
-  char *filename;
-  FILE *error_file;
-
-  filename = getPath2(getUserDataDir(), ERROR_FILENAME);
-  error_file = fopen(filename, MODE_READ);
-  free(filename);
+  FILE *error_file = fopen(ERROR_FILENAME, MODE_READ);
 
   if (error_file != NULL)
   {