char *__PHYSFS_platformGetUserDir(void) { char *retval = __PHYSFS_platformCopyEnvironmentVariable("HOME"); if (retval == NULL) retval = getUserDirByUID(); return(retval); } /* __PHYSFS_platformGetUserDir */
char *__PHYSFS_platformCalcUserDir(void) { char *retval = NULL; char *envr = getenv("HOME"); /* if the environment variable was set, make sure it's really a dir. */ if (envr != NULL) { struct stat statbuf; if ((stat(envr, &statbuf) != -1) && (S_ISDIR(statbuf.st_mode))) { const size_t envrlen = strlen(envr); const size_t add_dirsep = (envr[envrlen-1] != '/') ? 1 : 0; retval = allocator.Malloc(envrlen + 1 + add_dirsep); if (retval) { strcpy(retval, envr); if (add_dirsep) { retval[envrlen] = '/'; retval[envrlen+1] = '\0'; } /* if */ } /* if */ } /* if */ } /* if */ if (retval == NULL) retval = getUserDirByUID(); return retval; } /* __PHYSFS_platformCalcUserDir */
char *__PHYSFS_platformGetUserDir(void) { char *retval = __PHYSFS_platformCopyEnvironmentVariable("HOME"); /* if the environment variable was set, make sure it's really a dir. */ if (retval != NULL) { struct stat statbuf; if ((stat(retval, &statbuf) == -1) || (S_ISDIR(statbuf.st_mode) == 0)) { allocator.Free(retval); retval = NULL; } /* if */ } /* if */ if (retval == NULL) retval = getUserDirByUID(); return(retval); } /* __PHYSFS_platformGetUserDir */