__PHYSFS_platformGetUserDir() checks some win32 standard environment variables,
now. Added some headers so that most of this compiles with Cygwin, too.
This commit is contained in:
parent
8d4a037896
commit
950e518270
|
@ -12,7 +12,8 @@
|
|||
|
||||
#include <windows.h>
|
||||
#include <stdio.h>
|
||||
|
||||
#include <stdlib.h>
|
||||
#include <ctype.h>
|
||||
|
||||
#define __PHYSICSFS_INTERNAL__
|
||||
#include "physfs_internal.h"
|
||||
|
@ -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 */
|
||||
|
||||
|
||||
|
|
Loading…
Reference in New Issue