Skip to content

Commit

Permalink
__PHYSFS_platformGetUserDir() checks some win32 standard environment …
Browse files Browse the repository at this point in the history
…variables,

 now. Added some headers so that most of this compiles with Cygwin, too.
  • Loading branch information
icculus committed Aug 29, 2001
1 parent 8d4a037 commit 950e518
Showing 1 changed file with 42 additions and 2 deletions.
44 changes: 42 additions & 2 deletions platform/win32.c
Expand Up @@ -12,7 +12,8 @@

#include <windows.h>
#include <stdio.h>

#include <stdlib.h>
#include <ctype.h>

#define __PHYSICSFS_INTERNAL__
#include "physfs_internal.h"
Expand Down Expand Up @@ -106,9 +107,48 @@ char *__PHYSFS_platformGetUserName(void)
} /* __PHYSFS_platformGetUserName */


static char *copyEnvironmentVariable(const char *varname)
{
const char *envr = getenv(varname);
char *retval = NULL;

if (envr != NULL)
{
retval = malloc(strlen(envr) + 1);
if (retval != NULL)
strcpy(retval, envr);
} /* if */

return(retval);
} /* copyEnvironmentVariable */


char *__PHYSFS_platformGetUserDir(void)
{
return(NULL); /* no user dir on win32. */
char *home = copyEnvironmentVariable("HOME");
const char *homedrive = getenv("HOMEDRIVE");
const char *homepath = getenv("HOMEPATH");

if (home != NULL)
return(home);

if ((homedrive != NULL) && (homepath != NULL))
{
char *retval = (char *) malloc(strlen(homedrive)+strlen(homepath)+2);
if (retval != NULL)
{
strcpy(retval, homedrive);
if ((homepath[0] != '\\') &&
(homedrive[strlen(homedrive)-1] != '\\'))
{
strcat(retval, "\\");
} /* if */
strcat(retval, homepath);
return(retval);
} /* if */
} /* if */

return(NULL); /* fall through to default rules. */
} /* __PHYSFS_platformGetUserDir */


Expand Down

0 comments on commit 950e518

Please sign in to comment.