From 0c2ffd0e668daca93feaaf7d674a0905d240ee5d Mon Sep 17 00:00:00 2001 From: Taylor Richards Date: Fri, 20 Mar 2015 16:57:09 -0400 Subject: [PATCH] create user directory structure in a better way --- include/win.h | 1 + src/cfile/cfile.cpp | 42 +++++++++++++++++++++++++++++++++++++++++- src/osapi/osapi.cpp | 34 +--------------------------------- 3 files changed, 43 insertions(+), 34 deletions(-) diff --git a/include/win.h b/include/win.h index bdb807e..d406c14 100644 --- a/include/win.h +++ b/include/win.h @@ -11,5 +11,6 @@ #define isnan _isnan #define unlink _unlink #define access _access +#define stat _stat #endif // WIN_H diff --git a/src/cfile/cfile.cpp b/src/cfile/cfile.cpp index c01ebb4..0fcf24c 100644 --- a/src/cfile/cfile.cpp +++ b/src/cfile/cfile.cpp @@ -222,9 +222,9 @@ #include #include #include +#endif #include #include -#endif #include "pstypes.h" #include "cfile.h" @@ -1541,5 +1541,45 @@ int cfile_init_paths() SDL_free(u_path); u_path = NULL; + // see if CF_TYPE_DATA exists for user and if not populate user path + // with full directory tree + char pathname[MAX_PATH_LEN]; + struct stat info; + + SDL_strlcpy(pathname, Cfile_user_dir, MAX_PATH_LEN); + SDL_strlcat(pathname, Pathtypes[CF_TYPE_DATA].path, MAX_PATH_LEN); + + if ( stat(pathname, &info) != 0 ) { + cf_create_directory(CF_TYPE_MAPS); + cf_create_directory(CF_TYPE_TEXT); + cf_create_directory(CF_TYPE_MISSIONS); + cf_create_directory(CF_TYPE_MODELS); + cf_create_directory(CF_TYPE_TABLES); + cf_create_directory(CF_TYPE_SOUNDS_8B22K); + cf_create_directory(CF_TYPE_SOUNDS_16B11K); + cf_create_directory(CF_TYPE_VOICE_BRIEFINGS); + cf_create_directory(CF_TYPE_VOICE_CMD_BRIEF); + cf_create_directory(CF_TYPE_VOICE_DEBRIEFINGS); + cf_create_directory(CF_TYPE_VOICE_PERSONAS); + cf_create_directory(CF_TYPE_VOICE_SPECIAL); + cf_create_directory(CF_TYPE_VOICE_TRAINING); + cf_create_directory(CF_TYPE_MUSIC); + cf_create_directory(CF_TYPE_MOVIES); + cf_create_directory(CF_TYPE_INTERFACE); + cf_create_directory(CF_TYPE_FONT); + cf_create_directory(CF_TYPE_EFFECTS); + cf_create_directory(CF_TYPE_HUD); + cf_create_directory(CF_TYPE_PLAYER_IMAGES_MAIN); + cf_create_directory(CF_TYPE_CACHE); + cf_create_directory(CF_TYPE_SINGLE_PLAYERS); + cf_create_directory(CF_TYPE_MULTI_PLAYERS); + cf_create_directory(CF_TYPE_MULTI_CACHE); + cf_create_directory(CF_TYPE_CONFIG); + cf_create_directory(CF_TYPE_SQUAD_IMAGES_MAIN); + cf_create_directory(CF_TYPE_DEMOS); + cf_create_directory(CF_TYPE_CBANIMS); + cf_create_directory(CF_TYPE_INTEL_ANIMS); + } + return 0; } diff --git a/src/osapi/osapi.cpp b/src/osapi/osapi.cpp index 9585187..2fff75d 100644 --- a/src/osapi/osapi.cpp +++ b/src/osapi/osapi.cpp @@ -197,39 +197,7 @@ void os_init(const char *wclass, const char *title, const char *app_name, const // set some sane config defaults os_init_registry_stuff(); - // in case an installer didn't do it, populate directory structure to - // make sure everything is usable - cf_create_directory(CF_TYPE_MAPS); - cf_create_directory(CF_TYPE_TEXT); - cf_create_directory(CF_TYPE_MISSIONS); - cf_create_directory(CF_TYPE_MODELS); - cf_create_directory(CF_TYPE_TABLES); - cf_create_directory(CF_TYPE_SOUNDS_8B22K); - cf_create_directory(CF_TYPE_SOUNDS_16B11K); - cf_create_directory(CF_TYPE_VOICE_BRIEFINGS); - cf_create_directory(CF_TYPE_VOICE_CMD_BRIEF); - cf_create_directory(CF_TYPE_VOICE_DEBRIEFINGS); - cf_create_directory(CF_TYPE_VOICE_PERSONAS); - cf_create_directory(CF_TYPE_VOICE_SPECIAL); - cf_create_directory(CF_TYPE_VOICE_TRAINING); - cf_create_directory(CF_TYPE_MUSIC); - cf_create_directory(CF_TYPE_MOVIES); - cf_create_directory(CF_TYPE_INTERFACE); - cf_create_directory(CF_TYPE_FONT); - cf_create_directory(CF_TYPE_EFFECTS); - cf_create_directory(CF_TYPE_HUD); - cf_create_directory(CF_TYPE_PLAYER_IMAGES_MAIN); - cf_create_directory(CF_TYPE_CACHE); - cf_create_directory(CF_TYPE_SINGLE_PLAYERS); - cf_create_directory(CF_TYPE_MULTI_PLAYERS); - cf_create_directory(CF_TYPE_MULTI_CACHE); - cf_create_directory(CF_TYPE_CONFIG); - cf_create_directory(CF_TYPE_SQUAD_IMAGES_MAIN); - cf_create_directory(CF_TYPE_DEMOS); - cf_create_directory(CF_TYPE_CBANIMS); - cf_create_directory(CF_TYPE_INTEL_ANIMS); - - // unset FirstRun flag + // unset first-run flag os_config_write_uint(NULL, "StraightToSetup", 0); } -- 2.39.2