DECL(int, FSChangeDirAsync, void *pClient, void *pCmd, char *path, int error, FSAsyncParams *asyncParams) { int client = GetCurClient(pClient); if (client != -1) { // log log_string(bss.socket_fs[client], path, BYTE_CHANGE_DIR_ASYNC); // change path if it is a game folder int is_save = 0; if (is_gamefile(path) || (is_save = is_savefile(path))) { int len = strlen(path); int len_base = (is_save ? (strlen(bss.save_base) + 8) : strlen(bss.mount_base)); char new_path[len + len_base + 1]; compute_new_path(new_path, path, len, is_save); log_string(bss.socket_fs[client], new_path, BYTE_LOG_STR); return real_FSChangeDirAsync(pClient, pCmd, new_path, error, asyncParams); } } return real_FSChangeDirAsync(pClient, pCmd, path, error, asyncParams); }
DECL(int, FSOpenDir, void *pClient, void* pCmd, char *path, int *handle, int error) { int client = GetCurClient(pClient); if (client != -1) { // log log_string(bss.socket_fs[client], path, BYTE_OPEN_DIR); // change path if it is a game folder int is_save = 0; if (is_gamefile(path) || (is_save = is_savefile(path))) { int len = strlen(path); int len_base = (is_save ? (strlen(bss.save_base) + 8) : strlen(bss.mount_base)); char new_path[len + len_base + 1]; compute_new_path(new_path, path, len, is_save); log_string(bss.socket_fs[client], new_path, BYTE_LOG_STR); return real_FSOpenDir(pClient, pCmd, new_path, handle, error); } } return real_FSOpenDir(pClient, pCmd, path, handle, error); }
DECL(FSStatus, FSChangeDir, FSClient *pClient, FSCmdBlock *pCmd, const char *path, FSRetFlag error) { int client = GetCurClient(pClient); if (client != -1) { // log log_string(bss.socket_fs[client], path, BYTE_CHANGE_DIR); // change path if it is a game folder int is_save = 0; if (is_gamefile(path) || (is_save = is_savefile(path))) { int len = strlen(path); int len_base = (is_save ? (strlen(bss.save_base) + 8) : strlen(bss.mount_base)); char new_path[len + len_base + 1]; compute_new_path(new_path, path, len, is_save); log_string(bss.socket_fs[client], new_path, BYTE_LOG_STR); return real_FSChangeDir(pClient, pCmd, new_path, error); } } return real_FSChangeDir(pClient, pCmd, path, error); }
DECL(int, FSOpenFileAsync, void *pClient, void *pCmd, const char *path, const char *mode, int *handle, int error, const FSAsyncParams *asyncParams) { int client = GetCurClient(pClient); if (client != -1) { // log log_string(bss.socket_fs[client], path, BYTE_OPEN_FILE_ASYNC); // change path if it is a game file int is_save = 0; if (is_gamefile(path) || (is_save = is_savefile(path))) { int len = strlen(path); int len_base = (is_save ? (strlen(bss.save_base) + 8) : strlen(bss.mount_base)); char new_path[len + len_base + 1]; compute_new_path(new_path, path, len, is_save); log_string(bss.socket_fs[client], new_path, BYTE_LOG_STR); return real_FSOpenFileAsync(pClient, pCmd, new_path, mode, handle, error, asyncParams); } } return real_FSOpenFileAsync(pClient, pCmd, path, mode, handle, error, asyncParams); }
/* ***************************************************************************** * Replacement functions * ****************************************************************************/ DECL(int, FSGetStat, void *pClient, void *pCmd, char *path, void *stats, int error) { int client = GetCurClient(pClient); if (client != -1) { // log log_string(bss.socket_fs[client], path, BYTE_STAT); // change path if it is a game file int is_save = 0; if (is_gamefile(path) || (is_save = is_savefile(path))) { int len = strlen(path); int len_base = (is_save ? (strlen(bss.save_base) + 8) : strlen(bss.mount_base)); char new_path[len + len_base + 1]; compute_new_path(new_path, path, len, is_save); log_string(bss.socket_fs[client], new_path, BYTE_LOG_STR); // return function with new_path if path exists return real_FSGetStat(pClient, pCmd, new_path, stats, error); } } return real_FSGetStat(pClient, pCmd, path, stats, error); }