X-Git-Url: https://git.artsoft.org/?a=blobdiff_plain;f=src%2Flibgame%2Fmisc.c;h=8bc69396cb464a0ad20b666dbced14501277c85e;hb=61b7a6573a37f9df0710579ad11cc9474aa6f0fc;hp=8fe3200d3c4a28b22675eeccd81a9fc00f7450da;hpb=2d603d06ca862f3ca0721b66f62da188faf866c4;p=rocksndiamonds.git diff --git a/src/libgame/misc.c b/src/libgame/misc.c index 8fe3200d..8bc69396 100644 --- a/src/libgame/misc.c +++ b/src/libgame/misc.c @@ -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) {