diff --git a/.clang-format b/.clang-format new file mode 100644 index 0000000..56cc685 --- /dev/null +++ b/.clang-format @@ -0,0 +1,67 @@ +# Generated from CLion C/C++ Code Style settings +BasedOnStyle: LLVM +AccessModifierOffset: -4 +AlignAfterOpenBracket: Align +AlignConsecutiveAssignments: Consecutive +AlignConsecutiveMacros: AcrossEmptyLinesAndComments +AlignOperands: Align +AllowAllArgumentsOnNextLine: false +AllowAllConstructorInitializersOnNextLine: false +AllowAllParametersOfDeclarationOnNextLine: false +AllowShortBlocksOnASingleLine: Always +AllowShortCaseLabelsOnASingleLine: false +AllowShortFunctionsOnASingleLine: All +AllowShortIfStatementsOnASingleLine: Always +AllowShortLambdasOnASingleLine: All +AllowShortLoopsOnASingleLine: true +AlwaysBreakAfterReturnType: None +AlwaysBreakTemplateDeclarations: Yes +BreakBeforeBraces: Custom +BraceWrapping: + AfterCaseLabel: false + AfterClass: false + AfterControlStatement: Never + AfterEnum: false + AfterFunction: false + AfterNamespace: false + AfterUnion: false + BeforeCatch: false + BeforeElse: false + IndentBraces: false + SplitEmptyFunction: false + SplitEmptyRecord: true +BreakBeforeBinaryOperators: None +BreakBeforeTernaryOperators: true +BreakConstructorInitializers: BeforeColon +BreakInheritanceList: BeforeColon +ColumnLimit: 0 +CompactNamespaces: false +ContinuationIndentWidth: 8 +IndentCaseLabels: true +IndentPPDirectives: None +IndentWidth: 4 +KeepEmptyLinesAtTheStartOfBlocks: true +MaxEmptyLinesToKeep: 2 +NamespaceIndentation: All +ObjCSpaceAfterProperty: false +ObjCSpaceBeforeProtocolList: true +PointerAlignment: Right +ReflowComments: false +SpaceAfterCStyleCast: true +SpaceAfterLogicalNot: false +SpaceAfterTemplateKeyword: false +SpaceBeforeAssignmentOperators: true +SpaceBeforeCpp11BracedList: false +SpaceBeforeCtorInitializerColon: true +SpaceBeforeInheritanceColon: true +SpaceBeforeParens: ControlStatements +SpaceBeforeRangeBasedForLoopColon: true +SpaceInEmptyParentheses: false +SpacesBeforeTrailingComments: 1 +SpacesInAngles: false +SpacesInCStyleCastParentheses: false +SpacesInContainerLiterals: false +SpacesInParentheses: false +SpacesInSquareBrackets: false +TabWidth: 4 +UseTab: Never diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 88fccb0..14b2964 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -6,8 +6,16 @@ on: - main jobs: + clang-format: + runs-on: ubuntu-18.04 + steps: + - uses: actions/checkout@v2 + - name: clang-format + run: | + docker run --rm -v ${PWD}:/src wiiuenv/clang-format:13.0.0-2 -r ./src build-binary: runs-on: ubuntu-18.04 + needs: clang-format steps: - uses: actions/checkout@v2 - name: build binary diff --git a/.github/workflows/pr.yml b/.github/workflows/pr.yml index 0413d45..ef22559 100644 --- a/.github/workflows/pr.yml +++ b/.github/workflows/pr.yml @@ -3,8 +3,16 @@ name: CI-PR on: [pull_request] jobs: + clang-format: + runs-on: ubuntu-18.04 + steps: + - uses: actions/checkout@v2 + - name: clang-format + run: | + docker run --rm -v ${PWD}:/src wiiuenv/clang-format:13.0.0-2 -r ./src build-binary: runs-on: ubuntu-18.04 + needs: clang-format steps: - uses: actions/checkout@v2 - name: build binary diff --git a/README.md b/README.md index 186d9ef..942c9bf 100644 --- a/README.md +++ b/README.md @@ -1,3 +1,5 @@ +[![CI-Release](https://github.com/wiiu-env/RPXLoadingModule/actions/workflows/ci.yml/badge.svg)](https://github.com/wiiu-env/RPXLoadingModule/actions/workflows/ci.yml) + ## Usage (`[ENVIRONMENT]` is a placeholder for the actual environment name.) @@ -18,3 +20,7 @@ docker run -it --rm -v ${PWD}:/project rpxloadingmodule-builder make # make clean docker run -it --rm -v ${PWD}:/project rpxloadingmodule-builder make clean ``` + +## Format the code via docker + +`docker run --rm -v ${PWD}:/src wiiuenv/clang-format:13.0.0-2 -r ./src -i` \ No newline at end of file diff --git a/src/FSDirReplacements.cpp b/src/FSDirReplacements.cpp index e2092ba..a7780e7 100644 --- a/src/FSDirReplacements.cpp +++ b/src/FSDirReplacements.cpp @@ -1,28 +1,28 @@ #include "FSDirReplacements.h" -#include -#include -#include "utils/logger.h" -#include "globals.h" #include "FSWrapper.h" #include "FileUtils.h" +#include "globals.h" +#include "utils/logger.h" +#include +#include #define SYNC_RESULT_HANDLER [](FSStatus res) -> FSStatus { \ - return res; \ + return res; \ } #define ASYNC_RESULT_HANDLER [client, block, asyncData](FSStatus res) -> FSStatus { \ - DEBUG_FUNCTION_LINE_VERBOSE("Result was %d", res); \ - return send_result_async(client, block, asyncData, res); \ + DEBUG_FUNCTION_LINE_VERBOSE("Result was %d", res); \ + return send_result_async(client, block, asyncData, res); \ } DECL_FUNCTION(FSStatus, FSOpenDir, FSClient *client, FSCmdBlock *block, char *path, FSDirectoryHandle *handle, FSErrorFlag errorMask) { DEBUG_FUNCTION_LINE_VERBOSE("%s", path); - FSStatus result = FSOpenDirWrapper(path, handle, errorMask, - [client, block, handle, errorMask] - (char *_path) -> FSStatus { - return real_FSOpenDir(client, block, _path, handle, errorMask); - }, - SYNC_RESULT_HANDLER); + FSStatus result = FSOpenDirWrapper( + path, handle, errorMask, + [client, block, handle, errorMask](char *_path) -> FSStatus { + return real_FSOpenDir(client, block, _path, handle, errorMask); + }, + SYNC_RESULT_HANDLER); if (result != FS_STATUS_USE_REAL_OS) { DEBUG_FUNCTION_LINE_VERBOSE("Result was %d", result); return result; @@ -37,12 +37,12 @@ DECL_FUNCTION(FSStatus, FSOpenDirAsync, FSClient *client, FSCmdBlock *block, cha // Even real_FSOpenDir is still calling our FSOpenDirAsync hook. To bypass our code we use "FORCE_REAL_FUNC_WITH_FULL_ERRORS" as an errorMask. if ((errorMask & ERROR_FLAG_MASK) != FORCE_REAL_FUNC_MAGIC) { - FSStatus result = FSOpenDirWrapper(path, handle, errorMask, - [client, block, handle, errorMask, asyncData] - (char *_path) -> FSStatus { - return real_FSOpenDirAsync(client, block, _path, handle, errorMask, asyncData); - }, - ASYNC_RESULT_HANDLER); + FSStatus result = FSOpenDirWrapper( + path, handle, errorMask, + [client, block, handle, errorMask, asyncData](char *_path) -> FSStatus { + return real_FSOpenDirAsync(client, block, _path, handle, errorMask, asyncData); + }, + ASYNC_RESULT_HANDLER); if (result != FS_STATUS_USE_REAL_OS) { return result; } @@ -133,12 +133,12 @@ DECL_FUNCTION(FSStatus, FSRewindDirAsync, FSClient *client, FSCmdBlock *block, F DECL_FUNCTION(FSStatus, FSMakeDir, FSClient *client, FSCmdBlock *block, char *path, FSErrorFlag errorMask) { DEBUG_FUNCTION_LINE_VERBOSE("%s", path); - FSStatus result = FSMakeDirWrapper(path, errorMask, - [client, block, errorMask] - (char *_path) -> FSStatus { - return real_FSMakeDir(client, block, _path, errorMask); - }, - SYNC_RESULT_HANDLER); + FSStatus result = FSMakeDirWrapper( + path, errorMask, + [client, block, errorMask](char *_path) -> FSStatus { + return real_FSMakeDir(client, block, _path, errorMask); + }, + SYNC_RESULT_HANDLER); if (result != FS_STATUS_USE_REAL_OS) { return result; } @@ -148,12 +148,12 @@ DECL_FUNCTION(FSStatus, FSMakeDir, FSClient *client, FSCmdBlock *block, char *pa DECL_FUNCTION(FSStatus, FSMakeDirAsync, FSClient *client, FSCmdBlock *block, char *path, FSErrorFlag errorMask, FSAsyncData *asyncData) { DEBUG_FUNCTION_LINE_VERBOSE("%s", path); - FSStatus result = FSMakeDirWrapper(path, errorMask, - [client, block, errorMask, asyncData] - (char *_path) -> FSStatus { - return real_FSMakeDirAsync(client, block, _path, errorMask, asyncData); - }, - ASYNC_RESULT_HANDLER); + FSStatus result = FSMakeDirWrapper( + path, errorMask, + [client, block, errorMask, asyncData](char *_path) -> FSStatus { + return real_FSMakeDirAsync(client, block, _path, errorMask, asyncData); + }, + ASYNC_RESULT_HANDLER); if (result != FS_STATUS_USE_REAL_OS) { return result; } @@ -163,10 +163,10 @@ DECL_FUNCTION(FSStatus, FSMakeDirAsync, FSClient *client, FSCmdBlock *block, cha DECL_FUNCTION(FSStatus, FSChangeDirAsync, FSClient *client, FSCmdBlock *block, const char *path, FSErrorFlag errorMask, FSAsyncData *asyncData) { DEBUG_FUNCTION_LINE_VERBOSE("FSChangeDirAsync %s", path); snprintf(gReplacementInfo.contentReplacementInfo.workingDir, sizeof(gReplacementInfo.contentReplacementInfo.workingDir), "%s", path); - int len = strlen(gReplacementInfo.contentReplacementInfo.workingDir); + auto len = strlen(gReplacementInfo.contentReplacementInfo.workingDir); if (len > 0 && gReplacementInfo.contentReplacementInfo.workingDir[len - 1] != '/') { gReplacementInfo.contentReplacementInfo.workingDir[len - 1] = '/'; - gReplacementInfo.contentReplacementInfo.workingDir[len] = 0; + gReplacementInfo.contentReplacementInfo.workingDir[len] = 0; } DCFlushRange(gReplacementInfo.contentReplacementInfo.workingDir, sizeof(gReplacementInfo.contentReplacementInfo.workingDir)); return real_FSChangeDirAsync(client, block, path, errorMask, asyncData); diff --git a/src/FSDirReplacements.h b/src/FSDirReplacements.h index 81c518f..542f219 100644 --- a/src/FSDirReplacements.h +++ b/src/FSDirReplacements.h @@ -13,4 +13,3 @@ extern uint32_t fs_dir_function_replacements_size; #ifdef __cplusplus } #endif - diff --git a/src/FSFileReplacements.cpp b/src/FSFileReplacements.cpp index 88d8c46..b7a0f43 100644 --- a/src/FSFileReplacements.cpp +++ b/src/FSFileReplacements.cpp @@ -4,26 +4,26 @@ #include #include -#include "utils/logger.h" -#include "FileUtils.h" #include "FSWrapper.h" +#include "FileUtils.h" +#include "utils/logger.h" #define SYNC_RESULT_HANDLER [](FSStatus res) -> FSStatus { \ - return res; \ + return res; \ } #define ASYNC_RESULT_HANDLER [client, block, asyncData](FSStatus res) -> FSStatus { \ - return send_result_async(client, block, asyncData, res);\ + return send_result_async(client, block, asyncData, res); \ } DECL_FUNCTION(FSStatus, FSOpenFile, FSClient *client, FSCmdBlock *block, char *path, const char *mode, FSFileHandle *handle, FSErrorFlag errorMask) { DEBUG_FUNCTION_LINE_VERBOSE("%s", path); - FSStatus result = FSOpenFileWrapper(path, mode, handle, errorMask, - [client, block, mode, handle, errorMask] - (char *_path) -> FSStatus { - return real_FSOpenFile(client, block, _path, mode, handle, errorMask); - }, - SYNC_RESULT_HANDLER); + FSStatus result = FSOpenFileWrapper( + path, mode, handle, errorMask, + [client, block, mode, handle, errorMask](char *_path) -> FSStatus { + return real_FSOpenFile(client, block, _path, mode, handle, errorMask); + }, + SYNC_RESULT_HANDLER); if (result != FS_STATUS_USE_REAL_OS) { return result; } @@ -34,12 +34,12 @@ DECL_FUNCTION(FSStatus, FSOpenFile, FSClient *client, FSCmdBlock *block, char *p DECL_FUNCTION(FSStatus, FSOpenFileAsync, FSClient *client, FSCmdBlock *block, char *path, const char *mode, FSFileHandle *handle, FSErrorFlag errorMask, FSAsyncData *asyncData) { DEBUG_FUNCTION_LINE_VERBOSE("%s", path); - FSStatus result = FSOpenFileWrapper(path, mode, handle, errorMask, - [client, block, mode, handle, errorMask, asyncData] - (char *_path) -> FSStatus { - return real_FSOpenFileAsync(client, block, _path, mode, handle, errorMask, asyncData); - }, - ASYNC_RESULT_HANDLER); + FSStatus result = FSOpenFileWrapper( + path, mode, handle, errorMask, + [client, block, mode, handle, errorMask, asyncData](char *_path) -> FSStatus { + return real_FSOpenFileAsync(client, block, _path, mode, handle, errorMask, asyncData); + }, + ASYNC_RESULT_HANDLER); if (result != FS_STATUS_USE_REAL_OS) { return result; } @@ -70,11 +70,12 @@ DECL_FUNCTION(FSStatus, FSCloseFileAsync, FSClient *client, FSCmdBlock *block, F DECL_FUNCTION(FSStatus, FSGetStat, FSClient *client, FSCmdBlock *block, char *path, FSStat *stats, FSErrorFlag errorMask) { DEBUG_FUNCTION_LINE_VERBOSE("%s", path); - FSStatus result = FSGetStatWrapper(path, stats, errorMask, - [client, block, stats, errorMask](char *_path) -> FSStatus { - return real_FSGetStat(client, block, _path, stats, errorMask); - }, - SYNC_RESULT_HANDLER); + FSStatus result = FSGetStatWrapper( + path, stats, errorMask, + [client, block, stats, errorMask](char *_path) -> FSStatus { + return real_FSGetStat(client, block, _path, stats, errorMask); + }, + SYNC_RESULT_HANDLER); if (result != FS_STATUS_USE_REAL_OS) { return result; } @@ -83,11 +84,12 @@ DECL_FUNCTION(FSStatus, FSGetStat, FSClient *client, FSCmdBlock *block, char *pa DECL_FUNCTION(FSStatus, FSGetStatAsync, FSClient *client, FSCmdBlock *block, char *path, FSStat *stats, FSErrorFlag errorMask, FSAsyncData *asyncData) { DEBUG_FUNCTION_LINE_VERBOSE("%s", path); - FSStatus result = FSGetStatWrapper(path, stats, errorMask, - [client, block, stats, errorMask, asyncData](char *_path) -> FSStatus { - return real_FSGetStatAsync(client, block, _path, stats, errorMask, asyncData); - }, - ASYNC_RESULT_HANDLER); + FSStatus result = FSGetStatWrapper( + path, stats, errorMask, + [client, block, stats, errorMask, asyncData](char *_path) -> FSStatus { + return real_FSGetStatAsync(client, block, _path, stats, errorMask, asyncData); + }, + ASYNC_RESULT_HANDLER); if (result != FS_STATUS_USE_REAL_OS) { return result; } @@ -257,11 +259,12 @@ DECL_FUNCTION(FSStatus, FSTruncateFileAsync, FSClient *client, FSCmdBlock *block DECL_FUNCTION(FSStatus, FSRemove, FSClient *client, FSCmdBlock *block, char *path, FSErrorFlag errorMask) { DEBUG_FUNCTION_LINE_VERBOSE("%s", path); - FSStatus result = FSRemoveWrapper(path, errorMask, - [client, block, errorMask](char *_path) -> FSStatus { - return real_FSRemove(client, block, _path, errorMask); - }, - SYNC_RESULT_HANDLER); + FSStatus result = FSRemoveWrapper( + path, errorMask, + [client, block, errorMask](char *_path) -> FSStatus { + return real_FSRemove(client, block, _path, errorMask); + }, + SYNC_RESULT_HANDLER); if (result != FS_STATUS_USE_REAL_OS) { return result; } @@ -271,11 +274,12 @@ DECL_FUNCTION(FSStatus, FSRemove, FSClient *client, FSCmdBlock *block, char *pat DECL_FUNCTION(FSStatus, FSRemoveAsync, FSClient *client, FSCmdBlock *block, char *path, FSErrorFlag errorMask, FSAsyncData *asyncData) { DEBUG_FUNCTION_LINE_VERBOSE("%s", path); - FSStatus result = FSRemoveWrapper(path, errorMask, - [client, block, errorMask, asyncData](char *_path) -> FSStatus { - return real_FSRemoveAsync(client, block, _path, errorMask, asyncData); - }, - ASYNC_RESULT_HANDLER); + FSStatus result = FSRemoveWrapper( + path, errorMask, + [client, block, errorMask, asyncData](char *_path) -> FSStatus { + return real_FSRemoveAsync(client, block, _path, errorMask, asyncData); + }, + ASYNC_RESULT_HANDLER); if (result != FS_STATUS_USE_REAL_OS) { return result; } @@ -285,11 +289,12 @@ DECL_FUNCTION(FSStatus, FSRemoveAsync, FSClient *client, FSCmdBlock *block, char DECL_FUNCTION(FSStatus, FSRename, FSClient *client, FSCmdBlock *block, char *oldPath, char *newPath, FSErrorFlag errorMask) { DEBUG_FUNCTION_LINE_VERBOSE("%s %s", oldPath, newPath); - FSStatus result = FSRenameWrapper(oldPath, newPath, errorMask, - [client, block, errorMask](char *_oldOath, char *_newPath) -> FSStatus { - return real_FSRename(client, block, _oldOath, _newPath, errorMask); - }, - SYNC_RESULT_HANDLER); + FSStatus result = FSRenameWrapper( + oldPath, newPath, errorMask, + [client, block, errorMask](char *_oldOath, char *_newPath) -> FSStatus { + return real_FSRename(client, block, _oldOath, _newPath, errorMask); + }, + SYNC_RESULT_HANDLER); if (result != FS_STATUS_USE_REAL_OS) { return result; } @@ -299,11 +304,12 @@ DECL_FUNCTION(FSStatus, FSRename, FSClient *client, FSCmdBlock *block, char *old DECL_FUNCTION(FSStatus, FSRenameAsync, FSClient *client, FSCmdBlock *block, char *oldPath, char *newPath, FSErrorFlag errorMask, FSAsyncData *asyncData) { DEBUG_FUNCTION_LINE_VERBOSE("%s %s", oldPath, newPath); - FSStatus result = FSRenameWrapper(oldPath, newPath, errorMask, - [client, block, errorMask, asyncData](char *_oldOath, char *_newPath) -> FSStatus { - return real_FSRenameAsync(client, block, _oldOath, _newPath, errorMask, asyncData); - }, - ASYNC_RESULT_HANDLER); + FSStatus result = FSRenameWrapper( + oldPath, newPath, errorMask, + [client, block, errorMask, asyncData](char *_oldOath, char *_newPath) -> FSStatus { + return real_FSRenameAsync(client, block, _oldOath, _newPath, errorMask, asyncData); + }, + ASYNC_RESULT_HANDLER); if (result != FS_STATUS_USE_REAL_OS) { return result; } diff --git a/src/FSFileReplacements.h b/src/FSFileReplacements.h index da7ccf8..ce06bb2 100644 --- a/src/FSFileReplacements.h +++ b/src/FSFileReplacements.h @@ -13,4 +13,3 @@ extern uint32_t fs_file_function_replacements_size; #ifdef __cplusplus } #endif - diff --git a/src/FSWrapper.cpp b/src/FSWrapper.cpp index 6b5497f..c20804a 100644 --- a/src/FSWrapper.cpp +++ b/src/FSWrapper.cpp @@ -1,15 +1,15 @@ #include "FSWrapper.h" -#include -#include -#include -#include -#include -#include -#include -#include -#include "utils/logger.h" #include "FileUtils.h" #include "globals.h" +#include "utils/logger.h" +#include +#include +#include +#include +#include +#include +#include +#include dirMagic_t dir_handles[DIR_HANDLES_LENGTH]; fileMagic_t file_handles[FILE_HANDLES_LENGTH]; @@ -59,10 +59,10 @@ int getNewFileHandleIndex() { handle_id = i; if (!file_handles[i].mutex) { file_handles[i].mutex = (OSMutex *) malloc(sizeof(OSMutex)); - OSInitMutex(file_handles[i].mutex); if (!file_handles[i].mutex) { OSFatal("Failed to alloc memory for mutex"); } + OSInitMutex(file_handles[i].mutex); DCFlushRange(file_handles[i].mutex, sizeof(OSMutex)); DCFlushRange(&file_handles[i], sizeof(fileMagic_t)); } @@ -172,8 +172,8 @@ FSStatus FSOpenDirWrapper(char *path, if ((dir = opendir(pathForCheck))) { OSLockMutex(dir_handles[handle_index].mutex); dir_handles[handle_index].handle = DIR_HANDLE_MAGIC | handle_index; - *handle = dir_handles[handle_index].handle; - dir_handles[handle_index].dir = dir; + *handle = dir_handles[handle_index].handle; + dir_handles[handle_index].dir = dir; dir_handles[handle_index].in_use = true; dir_handles[handle_index].path[0] = '\0'; @@ -182,8 +182,8 @@ FSStatus FSOpenDirWrapper(char *path, if (gReplacementInfo.contentReplacementInfo.mode == CONTENTREDIRECT_FROM_PATH) { auto dir_info = &dir_handles[handle_index]; - dir_info->readResult = nullptr; - dir_info->readResultCapacity = 0; + dir_info->readResult = nullptr; + dir_info->readResultCapacity = 0; dir_info->readResultNumberOfEntries = 0; dir_info->realDirHandle = 0; @@ -256,25 +256,25 @@ FSStatus FSReadDirWrapper(FSDirectoryHandle handle, } struct dirent *entry_ = readdir(dir); - FSStatus result = FS_STATUS_END; + FSStatus result = FS_STATUS_END; if (entry_) { entry->name[0] = '\0'; strncat(entry->name, entry_->d_name, sizeof(entry->name) - 1); entry->info.mode = (FSMode) FS_MODE_READ_OWNER; if (entry_->d_type == DT_DIR) { entry->info.flags = (FSStatFlags) ((uint32_t) FS_STAT_DIRECTORY); - entry->info.size = 0; + entry->info.size = 0; } else { entry->info.flags = (FSStatFlags) 0; if (strcmp(entry_->d_name, ".") == 0 || strcmp(entry_->d_name, "..") == 0) { entry->info.size = 0; } else { - struct stat sb{}; + struct stat sb {}; int strLen = strlen(dir_handles[handle_index].path) + 1 + strlen(entry_->d_name) + 1; char path[strLen]; snprintf(path, sizeof(path), "%s/%s", dir_handles[handle_index].path, entry_->d_name); if (stat(path, &sb) >= 0) { - entry->info.size = sb.st_size; + entry->info.size = sb.st_size; entry->info.flags = (FSStatFlags) 0; entry->info.owner = sb.st_uid; entry->info.group = sb.st_gid; @@ -285,8 +285,8 @@ FSStatus FSReadDirWrapper(FSDirectoryHandle handle, if (gReplacementInfo.contentReplacementInfo.mode == CONTENTREDIRECT_FROM_PATH) { auto dir_info = &dir_handles[handle_index]; if (dir_info->readResultNumberOfEntries >= dir_info->readResultCapacity) { - auto newCapacity = dir_info->readResultCapacity * 2; - dir_info->readResult = (FSDirectoryEntry *) realloc(dir_info->readResult, newCapacity * sizeof(FSDirectoryEntry)); + auto newCapacity = dir_info->readResultCapacity * 2; + dir_info->readResult = (FSDirectoryEntry *) realloc(dir_info->readResult, newCapacity * sizeof(FSDirectoryEntry)); dir_info->readResultCapacity = newCapacity; if (dir_info->readResult == nullptr) { OSFatal("Failed to alloc memory for dir entry list"); @@ -308,7 +308,7 @@ FSStatus FSReadDirWrapper(FSDirectoryHandle handle, if (gFSClient && gFSCmd) { FSDirectoryEntry realDirEntry; FSStatus readDirResult = FS_STATUS_OK; - result = FS_STATUS_END; + result = FS_STATUS_END; while (readDirResult == FS_STATUS_OK) { readDirResult = real_FSReadDir(gFSClient, gFSCmd, dir_info->realDirHandle, &realDirEntry, (FSErrorFlag) FORCE_REAL_FUNC_WITH_FULL_ERRORS); if (readDirResult == FS_STATUS_OK) { @@ -389,8 +389,8 @@ FSStatus FSCloseDirWrapper(FSDirectoryHandle handle, if (dir_info->readResult != nullptr) { free(dir_info->readResult); - dir_info->readResult = nullptr; - dir_info->readResultCapacity = 0; + dir_info->readResult = nullptr; + dir_info->readResultCapacity = 0; dir_info->readResultNumberOfEntries = 0; } DCFlushRange(dir_info, sizeof(dirMagic_t)); @@ -511,7 +511,7 @@ FSStatus FSOpenFileWrapper(char *path, DEBUG_FUNCTION_LINE_VERBOSE("%s -> %s", path, pathForCheck); int handle_index = getNewFileHandleIndex(); - FSStatus result = FS_STATUS_OK; + FSStatus result = FS_STATUS_OK; if (handle_index >= 0) { OSLockMutex(file_handles[handle_index].mutex); int _mode = 0; @@ -541,8 +541,8 @@ FSStatus FSOpenFileWrapper(char *path, file_handles[handle_index].handle = FILE_HANDLE_MAGIC + handle_index; //DEBUG_FUNCTION_LINE("handle %08X", file_handles[handle_index].handle); - *handle = file_handles[handle_index].handle; - file_handles[handle_index].fd = fd; + *handle = file_handles[handle_index].handle; + file_handles[handle_index].fd = fd; file_handles[handle_index].in_use = true; DCFlushRange(&file_handles[handle_index], sizeof(fileMagic_t)); } else { @@ -587,7 +587,7 @@ FSStatus FSCloseFileWrapper(FSFileHandle handle, OSLockMutex(file_handles[handle_index].mutex); - int real_fd = file_handles[handle_index].fd; + int real_fd = file_handles[handle_index].fd; file_handles[handle_index].in_use = false; DEBUG_FUNCTION_LINE_VERBOSE("closing %d", real_fd); @@ -634,7 +634,7 @@ FSStatus FSGetStatWrapper(char *path, FSStat *stats, FSErrorFlag errorMask, DEBUG_FUNCTION_LINE("Invalid args"); return FS_STATUS_FATAL_ERROR; } else { - struct stat path_stat{}; + struct stat path_stat {}; memset(&path_stat, 0, sizeof(path_stat)); if (stat(pathForCheck, &path_stat) < 0) { if (gReplacementInfo.contentReplacementInfo.fallbackOnError) { @@ -648,8 +648,8 @@ FSStatus FSGetStatWrapper(char *path, FSStat *stats, FSErrorFlag errorMask, if (S_ISDIR(path_stat.st_mode)) { stats->flags = (FSStatFlags) ((uint32_t) FS_STAT_DIRECTORY); } else { - stats->size = path_stat.st_size; - stats->mode = (FSMode) FS_MODE_READ_OWNER; + stats->size = path_stat.st_size; + stats->mode = (FSMode) FS_MODE_READ_OWNER; stats->flags = (FSStatFlags) 0; stats->owner = path_stat.st_uid; stats->group = path_stat.st_gid; @@ -698,7 +698,7 @@ FSStatus FSGetStatFileWrapper(FSFileHandle handle, int real_fd = file_handles[handle_index].fd; //DEBUG_FUNCTION_LINE("FSGetStatFileAsync real_fd %d", real_fd); - struct stat path_stat{}; + struct stat path_stat {}; FSStatus result = FS_STATUS_OK; if (fstat(real_fd, &path_stat) < 0) { @@ -706,8 +706,8 @@ FSStatus FSGetStatFileWrapper(FSFileHandle handle, } else { memset(&(stats->flags), 0, sizeof(stats->flags)); - stats->size = path_stat.st_size; - stats->mode = (FSMode) FS_MODE_READ_OWNER; + stats->size = path_stat.st_size; + stats->mode = (FSMode) FS_MODE_READ_OWNER; stats->flags = (FSStatFlags) 0; stats->owner = path_stat.st_uid; stats->group = path_stat.st_gid; @@ -779,14 +779,12 @@ FSStatus FSReadFileWithPosWrapper(void *buffer, FSStatus result; if ((result = FSSetPosFileWrapper(handle, pos, errorMask, - [](FSStatus res) -> FSStatus { return res; }) - ) != FS_STATUS_OK) { + [](FSStatus res) -> FSStatus { return res; })) != FS_STATUS_OK) { return result; } result = FSReadFileWrapper(buffer, size, count, handle, unk1, errorMask, - [](FSStatus res) -> FSStatus { return res; } - ); + [](FSStatus res) -> FSStatus { return res; }); if (result != FS_STATUS_USE_REAL_OS && result != FS_STATUS_FATAL_ERROR) { return result_handler(result); @@ -881,7 +879,7 @@ FSStatus FSIsEofWrapper(FSFileHandle handle, int real_fd = file_handles[handle_index].fd; off_t currentPos = lseek(real_fd, (off_t) 0, SEEK_CUR); - off_t endPos = lseek(real_fd, (off_t) 0, SEEK_END); + off_t endPos = lseek(real_fd, (off_t) 0, SEEK_END); if (currentPos == endPos) { DEBUG_FUNCTION_LINE_VERBOSE("FSIsEof END for %d\n", real_fd); diff --git a/src/FSWrapper.h b/src/FSWrapper.h index dc26c38..dcd324c 100644 --- a/src/FSWrapper.h +++ b/src/FSWrapper.h @@ -1,10 +1,10 @@ #pragma once +#include +#include #include #include #include -#include -#include typedef struct dirMagic { uint32_t handle{}; @@ -14,8 +14,8 @@ typedef struct dirMagic { OSMutex *mutex{}; - FSDirectoryEntry *readResult = nullptr; - int readResultCapacity = 0; + FSDirectoryEntry *readResult = nullptr; + int readResultCapacity = 0; int readResultNumberOfEntries = 0; FSDirectoryHandle realDirHandle = 0; @@ -29,20 +29,20 @@ typedef struct fileMagic { } fileMagic_t; -#define ERROR_FLAG_MASK (0xFFFF0000) -#define FORCE_REAL_FUNC_MAGIC (0x42420000) -#define FORCE_REAL_FUNC_WITH_FULL_ERRORS (FORCE_REAL_FUNC_MAGIC | 0x0000FFFF) +#define ERROR_FLAG_MASK (0xFFFF0000) +#define FORCE_REAL_FUNC_MAGIC (0x42420000) +#define FORCE_REAL_FUNC_WITH_FULL_ERRORS (FORCE_REAL_FUNC_MAGIC | 0x0000FFFF) -#define HANDLE_INDICATOR_MASK 0xFFFFFF00 -#define HANDLE_INDICATOR_MASK 0xFFFFFF00 -#define HANDLE_MASK (0x000000FF) -#define DIR_HANDLE_MAGIC 0x30000000 -#define FILE_HANDLE_MAGIC 0x30000100 +#define HANDLE_INDICATOR_MASK 0xFFFFFF00 +#define HANDLE_INDICATOR_MASK 0xFFFFFF00 +#define HANDLE_MASK (0x000000FF) +#define DIR_HANDLE_MAGIC 0x30000000 +#define FILE_HANDLE_MAGIC 0x30000100 -#define FILE_HANDLES_LENGTH 64 -#define DIR_HANDLES_LENGTH 64 +#define FILE_HANDLES_LENGTH 64 +#define DIR_HANDLES_LENGTH 64 -#define FS_STATUS_USE_REAL_OS (FSStatus) 0xFFFF0000 +#define FS_STATUS_USE_REAL_OS (FSStatus) 0xFFFF0000 extern dirMagic_t dir_handles[DIR_HANDLES_LENGTH]; extern fileMagic_t file_handles[FILE_HANDLES_LENGTH]; diff --git a/src/FileUtils.cpp b/src/FileUtils.cpp index 8975b16..6216448 100644 --- a/src/FileUtils.cpp +++ b/src/FileUtils.cpp @@ -1,18 +1,18 @@ #include "FileUtils.h" -#include -#include -#include #include +#include +#include +#include +#include "utils/StringTools.h" +#include "utils/logger.h" +#include "utils/utils.h" +#include #include -#include #include #include -#include -#include "utils/StringTools.h" -#include "utils/utils.h" -#include "utils/logger.h" +#include extern "C" OSMessageQueue *OSGetDefaultAppIOQueue(); @@ -42,17 +42,17 @@ FSStatus send_result_async(FSClient *client, FSCmdBlock *block, FSAsyncData *asy #pragma GCC diagnostic ignored "-Waddress-of-packed-member" FSAsyncResult *result = &(fsCmdBlockGetBody(block)->asyncResult); //DEBUG_FUNCTION_LINE("Send result %d to ioMsgQueue (%08X)", status, asyncData->ioMsgQueue); - result->asyncData.callback = asyncData->callback; - result->asyncData.param = asyncData->param; + result->asyncData.callback = asyncData->callback; + result->asyncData.param = asyncData->param; result->asyncData.ioMsgQueue = asyncData->ioMsgQueue; memset(&result->ioMsg, 0, sizeof(result->ioMsg)); result->ioMsg.data = result; result->ioMsg.type = OS_FUNCTION_TYPE_FS_CMD_ASYNC; - result->client = client; - result->block = block; - result->status = status; + result->client = client; + result->block = block; + result->status = status; - while (!OSSendMessage(asyncData->ioMsgQueue, (OSMessage * ) & (result->ioMsg), OS_MESSAGE_FLAGS_NONE)) { + while (!OSSendMessage(asyncData->ioMsgQueue, (OSMessage *) &(result->ioMsg), OS_MESSAGE_FLAGS_NONE)) { DEBUG_FUNCTION_LINE("Failed to send message"); } } @@ -66,7 +66,7 @@ int32_t readIntoBuffer(int32_t handle, void *buffer, size_t size, size_t count) if (sizeToRead > 0x100000) { sizeToRead = 0x100000; }*/ - void *newBuffer = buffer; + void *newBuffer = buffer; int32_t curResult = -1; int32_t totalSize = 0; // int32_t toRead = 0; @@ -96,7 +96,7 @@ int32_t CheckFile(const char *filepath) { return 0; } - struct stat filestat{}; + struct stat filestat {}; char dirnoslash[strlen(filepath) + 2]; snprintf(dirnoslash, sizeof(dirnoslash), "%s", filepath); @@ -142,7 +142,7 @@ int32_t CreateSubfolder(const char *fullpath) { if (!ptr) { //!Device root directory (must be with '/') strcat(parentpath, "/"); - struct stat filestat{}; + struct stat filestat {}; if (stat(parentpath, &filestat) == 0) { return 1; } @@ -180,12 +180,12 @@ int32_t getRPXInfoForPath(const std::string &path, romfs_fileInfo *info) { return -2; } bool found = false; - int res = -3; + int res = -3; while ((entry = readdir(dir)) != nullptr) { if (StringTools::EndsWith(entry->d_name, ".rpx")) { if (romfsGetFileInfoPerPath("rcc", (std::string("code/") + entry->d_name).c_str(), info) >= 0) { found = true; - res = 0; + res = 0; } else { DEBUG_FUNCTION_LINE("Failed to get info for %s", entry->d_name); } diff --git a/src/FileUtils.h b/src/FileUtils.h index 15d5da9..d4aa6c8 100644 --- a/src/FileUtils.h +++ b/src/FileUtils.h @@ -1,14 +1,13 @@ #pragma once -#include #include #include +#include -struct WUT_PACKED FSCmdBlockBody {//! FSAsyncResult object used for this command. +struct WUT_PACKED FSCmdBlockBody { //! FSAsyncResult object used for this command. WUT_UNKNOWN_BYTES(0x96C); FSAsyncResult asyncResult; - }; WUT_CHECK_OFFSET(FSCmdBlockBody, 0x96C, asyncResult); WUT_CHECK_SIZE(FSCmdBlockBody, 0x96C + 0x28); diff --git a/src/RPXLoading.cpp b/src/RPXLoading.cpp index e5130c9..6046adf 100644 --- a/src/RPXLoading.cpp +++ b/src/RPXLoading.cpp @@ -1,21 +1,21 @@ -#include -#include -#include -#include -#include "utils/logger.h" #include "RPXLoading.h" -#include "globals.h" #include "FileUtils.h" -#include -#include -#include +#include "globals.h" #include "utils/FileReader.h" #include "utils/FileReaderCompressed.h" #include "utils/StringTools.h" #include "utils/ini.h" +#include "utils/logger.h" +#include +#include +#include #include -#include #include +#include +#include +#include +#include +#include /* * Patch the meta xml for the home menu @@ -43,7 +43,7 @@ DECL_FUNCTION(int, RPX_FSOpenFile, FSClient *client, FSCmdBlock *block, char *pa if (gReplacementInfo.rpxReplacementInfo.isRPXReplaced) { if (StringTools::EndsWith(path, iconTex)) { auto *reader = new FileReader(reinterpret_cast(gReplacementInfo.rpxReplacementInfo.iconCache), sizeof(gReplacementInfo.rpxReplacementInfo.iconCache)); - *handle = (uint32_t) reader; + *handle = (uint32_t) reader; return FS_STATUS_OK; } } @@ -57,7 +57,6 @@ DECL_FUNCTION(FSStatus, RPX_FSReadFile, FSClient *client, FSCmdBlock *block, uin if ((handle & 0xF0000000) == 0x80000000) { auto reader = (FileReader *) handle; return (FSStatus) reader->read(buffer, size * count); - } FSStatus result = real_RPX_FSReadFile(client, block, buffer, size, count, handle, unk1, flags); return result; @@ -101,7 +100,7 @@ static int parseINIhandler(void *user, const char *section, const char *name, fInfo->author[0] = '\0'; strncat(fInfo->author, value, sizeof(fInfo->author) - 1); } else { - return 0; /* unknown section/name, error */ + return 0; /* unknown section/name, error */ } return 1; @@ -111,21 +110,21 @@ bool RL_LoadFromSDOnNextLaunch(const char *bundle_path) { LOAD_REQUEST request; memset(&request, 0, sizeof(request)); - request.command = 0xFC; // IPC_CUSTOM_LOAD_CUSTOM_RPX; - request.target = 0; // LOAD_FILE_TARGET_SD_CARD - request.filesize = 0; // unknown filesize - request.fileoffset = 0; // + request.command = 0xFC; // IPC_CUSTOM_LOAD_CUSTOM_RPX; + request.target = 0; // LOAD_FILE_TARGET_SD_CARD + request.filesize = 0; // unknown filesize + request.fileoffset = 0; // romfs_fileInfo info; bool metaLoaded = false; std::string completePath = std::string("/vol/external01/") + bundle_path; - int res = getRPXInfoForPath(completePath, &info); - bool isBundle = false; + int res = getRPXInfoForPath(completePath, &info); + bool isBundle = false; if (res >= 0) { - isBundle = true; - request.filesize = ((uint32_t *) &info.length)[1]; + isBundle = true; + request.filesize = ((uint32_t *) &info.length)[1]; request.fileoffset = ((uint32_t *) &info.offset)[1]; if (romfsMount("rcc", completePath.c_str(), RomfsSource_FileDescriptor_CafeOS) == 0) { @@ -138,14 +137,14 @@ bool RL_LoadFromSDOnNextLaunch(const char *bundle_path) { if (CheckFile("rcc:/meta/iconTex.tga")) { std::string path = "rcc:/meta/iconTex.tga"; - reader = new FileReader(path); + reader = new FileReader(path); } else if (CheckFile("rcc:/meta/iconTex.tga.gz")) { std::string path = "rcc:/meta/iconTex.tga.gz"; - reader = new FileReaderCompressed(path); + reader = new FileReaderCompressed(path); } if (reader) { uint32_t alreadyRead = 0; - uint32_t toRead = sizeof(gReplacementInfo.rpxReplacementInfo.iconCache); + uint32_t toRead = sizeof(gReplacementInfo.rpxReplacementInfo.iconCache); do { int read = reader->read(reinterpret_cast(&gReplacementInfo.rpxReplacementInfo.iconCache[alreadyRead]), toRead); if (read <= 0) { @@ -168,9 +167,9 @@ bool RL_LoadFromSDOnNextLaunch(const char *bundle_path) { } if (!metaLoaded) { - gReplacementInfo.rpxReplacementInfo.metaInformation.author[0] = '\0'; + gReplacementInfo.rpxReplacementInfo.metaInformation.author[0] = '\0'; gReplacementInfo.rpxReplacementInfo.metaInformation.shortname[0] = '\0'; - gReplacementInfo.rpxReplacementInfo.metaInformation.longname[0] = '\0'; + gReplacementInfo.rpxReplacementInfo.metaInformation.longname[0] = '\0'; strncat(gReplacementInfo.rpxReplacementInfo.metaInformation.author, bundle_path, sizeof(gReplacementInfo.rpxReplacementInfo.metaInformation.author) - 1); strncat(gReplacementInfo.rpxReplacementInfo.metaInformation.shortname, bundle_path, sizeof(gReplacementInfo.rpxReplacementInfo.metaInformation.shortname) - 1); @@ -180,10 +179,10 @@ bool RL_LoadFromSDOnNextLaunch(const char *bundle_path) { request.path[0] = '\0'; strncat(request.path, bundle_path, sizeof(request.path) - 1); - DCFlushRange(&request, sizeof(LOAD_REQUEST)); + DCFlushRange(&request, sizeof(request)); int success = false; - int mcpFd = IOS_Open("/dev/mcp", (IOSOpenMode) 0); + int mcpFd = IOS_Open("/dev/mcp", (IOSOpenMode) 0); if (mcpFd >= 0) { int out = 0; IOS_Ioctl(mcpFd, 100, &request, sizeof(request), &out, sizeof(out)); @@ -212,7 +211,7 @@ bool RL_LoadFromSDOnNextLaunch(const char *bundle_path) { strncat(gReplacementInfo.contentReplacementInfo.bundleMountInformation.toMountPath, completePath.c_str(), sizeof(gReplacementInfo.contentReplacementInfo.bundleMountInformation.toMountPath) - 1); - gReplacementInfo.contentReplacementInfo.mode = CONTENTREDIRECT_FROM_WUHB_BUNDLE; + gReplacementInfo.contentReplacementInfo.mode = CONTENTREDIRECT_FROM_WUHB_BUNDLE; gReplacementInfo.contentReplacementInfo.replaceSave = true; } else { DEBUG_FUNCTION_LINE("Loaded file is no bundle"); @@ -265,7 +264,7 @@ int32_t RL_FileOpen(const char *name, uint32_t *handle) { } FileReader *reader; - std::string path = std::string(name); + std::string path = std::string(name); std::string pathGZ = path + ".gz"; if (CheckFile(path.c_str())) { @@ -307,9 +306,9 @@ bool RL_RedirectContentWithFallback(const char *newContentPath) { gReplacementInfo.contentReplacementInfo.replacementPath[0] = '\0'; strncat(gReplacementInfo.contentReplacementInfo.replacementPath, newContentPath, sizeof(gReplacementInfo.contentReplacementInfo.replacementPath) - 1); - gReplacementInfo.contentReplacementInfo.mode = CONTENTREDIRECT_FROM_PATH; + gReplacementInfo.contentReplacementInfo.mode = CONTENTREDIRECT_FROM_PATH; gReplacementInfo.contentReplacementInfo.fallbackOnError = true; - gReplacementInfo.contentReplacementInfo.replaceSave = false; + gReplacementInfo.contentReplacementInfo.replaceSave = false; return true; } diff --git a/src/RPXLoading.h b/src/RPXLoading.h index ab196f9..ccc1b4e 100644 --- a/src/RPXLoading.h +++ b/src/RPXLoading.h @@ -1,7 +1,7 @@ #pragma once -#include #include +#include #ifdef __cplusplus extern "C" { @@ -21,5 +21,3 @@ extern uint32_t rpx_utils_function_replacements_size; #ifdef __cplusplus } #endif - - diff --git a/src/globals.cpp b/src/globals.cpp index 85ed382..3ba5955 100644 --- a/src/globals.cpp +++ b/src/globals.cpp @@ -1,7 +1,7 @@ -#include #include "globals.h" +#include RPXLoader_ReplacementInformation gReplacementInfo __attribute__((section(".data"))); FSClient *gFSClient __attribute__((section(".data"))) = nullptr; -FSCmdBlock *gFSCmd __attribute__((section(".data"))) = nullptr; \ No newline at end of file +FSCmdBlock *gFSCmd __attribute__((section(".data"))) = nullptr; \ No newline at end of file diff --git a/src/globals.h b/src/globals.h index 190610a..24db43d 100644 --- a/src/globals.h +++ b/src/globals.h @@ -1,6 +1,6 @@ -#include -#include #include +#include +#include typedef struct MetaInformation_t { char shortname[64]; diff --git a/src/main.cpp b/src/main.cpp index 6654c73..ef2d500 100644 --- a/src/main.cpp +++ b/src/main.cpp @@ -1,22 +1,22 @@ -#include #include #include +#include +#include "FSDirReplacements.h" +#include "FSFileReplacements.h" +#include "FileUtils.h" +#include "RPXLoading.h" +#include "globals.h" +#include "utils/StringTools.h" +#include "utils/logger.h" #include #include -#include #include -#include "utils/logger.h" -#include "utils/StringTools.h" -#include "FSFileReplacements.h" -#include "globals.h" -#include "FileUtils.h" -#include "FSDirReplacements.h" -#include "RPXLoading.h" +#include -#include #include #include +#include WUMS_MODULE_EXPORT_NAME("homebrew_rpx_loader"); WUMS_USE_WUT_DEVOPTAB(); @@ -66,12 +66,12 @@ WUMS_APPLICATION_STARTS() { initLogging(); if (gReplacementInfo.rpxReplacementInfo.willRPXBeReplaced) { gReplacementInfo.rpxReplacementInfo.willRPXBeReplaced = false; - gReplacementInfo.rpxReplacementInfo.isRPXReplaced = true; + gReplacementInfo.rpxReplacementInfo.isRPXReplaced = true; } if (gReplacementInfo.contentReplacementInfo.mode == CONTENTREDIRECT_FROM_PATH) { auto fsClient = (FSClient *) memalign(0x20, sizeof(FSClient)); - auto fsCmd = (FSCmdBlock *) memalign(0x20, sizeof(FSCmdBlock)); + auto fsCmd = (FSCmdBlock *) memalign(0x20, sizeof(FSCmdBlock)); if (fsClient == nullptr || fsCmd == nullptr) { DEBUG_FUNCTION_LINE("Failed to alloc memory for fsclient or fsCmd"); @@ -84,7 +84,7 @@ WUMS_APPLICATION_STARTS() { } else { FSInitCmdBlock(fsCmd); gFSClient = fsClient; - gFSCmd = fsCmd; + gFSCmd = fsCmd; } } return; @@ -92,7 +92,7 @@ WUMS_APPLICATION_STARTS() { if (_SYSGetSystemApplicationTitleId(SYSTEM_APP_ID_HEALTH_AND_SAFETY) != OSGetTitleID()) { DEBUG_FUNCTION_LINE("Set mode to CONTENTREDIRECT_NONE and replaceSave to false"); - gReplacementInfo.contentReplacementInfo.mode = CONTENTREDIRECT_NONE; + gReplacementInfo.contentReplacementInfo.mode = CONTENTREDIRECT_NONE; gReplacementInfo.contentReplacementInfo.replaceSave = false; DCFlushRange(&gReplacementInfo, sizeof(gReplacementInfo)); } else { @@ -100,12 +100,12 @@ WUMS_APPLICATION_STARTS() { uint32_t currentHash = StringTools::hash(gReplacementInfo.contentReplacementInfo.bundleMountInformation.toMountPath); nn::act::Initialize(); - nn::act::PersistentId slot = nn::act::GetPersistentId(); + nn::act::PersistentId persistentId = nn::act::GetPersistentId(); nn::act::Finalize(); std::string basePath = StringTools::strfmt("/vol/external01/wiiu/apps/save/%08X", currentHash); - std::string common = StringTools::strfmt("fs:/vol/external01/wiiu/apps/save/%08X/common", currentHash); - std::string user = StringTools::strfmt("fs:/vol/external01/wiiu/apps/save/%08X/%08X", currentHash, 0x80000000 | slot); + std::string common = StringTools::strfmt("fs:/vol/external01/wiiu/apps/save/%08X/common", currentHash); + std::string user = StringTools::strfmt("fs:/vol/external01/wiiu/apps/save/%08X/%08X", currentHash, 0x80000000 | persistentId); gReplacementInfo.contentReplacementInfo.savePath[0] = '\0'; strncat(gReplacementInfo.contentReplacementInfo.savePath, @@ -140,4 +140,3 @@ WUMS_APPLICATION_STARTS() { DCFlushRange(&gReplacementInfo, sizeof(gReplacementInfo)); } } - diff --git a/src/utils/FileReader.cpp b/src/utils/FileReader.cpp index 11a139e..04d4b52 100644 --- a/src/utils/FileReader.cpp +++ b/src/utils/FileReader.cpp @@ -14,7 +14,7 @@ int FileReader::read(uint8_t *buffer, uint32_t size) { if (toRead == 0) { return 0; } - memcpy(buffer, input_buffer + input_pos, toRead); + memcpy(buffer, &input_buffer[input_pos], toRead); input_pos += toRead; return toRead; } else if (isReadFromFile) { @@ -27,9 +27,9 @@ int FileReader::read(uint8_t *buffer, uint32_t size) { FileReader::FileReader(std::string &path) { int fd; if ((fd = open(path.c_str(), O_RDONLY)) >= 0) { - this->isReadFromFile = true; + this->isReadFromFile = true; this->isReadFromBuffer = false; - this->file_fd = fd; + this->file_fd = fd; } else { DEBUG_FUNCTION_LINE("Failed to open file %s", path.c_str()); } @@ -42,9 +42,9 @@ FileReader::~FileReader() { } FileReader::FileReader(uint8_t *buffer, uint32_t size) { - this->input_buffer = buffer; - this->input_size = size; - this->input_pos = 0; + this->input_buffer = buffer; + this->input_size = size; + this->input_pos = 0; this->isReadFromBuffer = true; - this->isReadFromFile = false; + this->isReadFromFile = false; } diff --git a/src/utils/FileReader.h b/src/utils/FileReader.h index 6f4f041..19fe6ec 100644 --- a/src/utils/FileReader.h +++ b/src/utils/FileReader.h @@ -1,10 +1,10 @@ #pragma once -#include -#include -#include -#include #include +#include +#include +#include +#include class FileReader { @@ -20,9 +20,9 @@ public: private: bool isReadFromBuffer = false; uint8_t *input_buffer = nullptr; - uint32_t input_size = 0; - uint32_t input_pos = 0; + uint32_t input_size = 0; + uint32_t input_pos = 0; bool isReadFromFile = false; - int file_fd = 0; + int file_fd = 0; }; diff --git a/src/utils/FileReaderCompressed.cpp b/src/utils/FileReaderCompressed.cpp index 847532d..a25558e 100644 --- a/src/utils/FileReaderCompressed.cpp +++ b/src/utils/FileReaderCompressed.cpp @@ -4,9 +4,9 @@ int FileReaderCompressed::read(uint8_t *buffer, uint32_t size) { if (!initDone) { return -11; } - int startValue = this->strm.total_out; + int startValue = this->strm.total_out; uint32_t newSize = 0; - int ret = 0; + int ret = 0; do { uint32_t nextOut = BUFFER_SIZE; if (nextOut > size) { @@ -18,7 +18,7 @@ int FileReaderCompressed::read(uint8_t *buffer, uint32_t size) { break; } this->strm.avail_in = read_res; - this->strm.next_in = this->zlib_in_buf; + this->strm.next_in = this->zlib_in_buf; } /* run inflate() on input until output buffer not full */ do { @@ -27,8 +27,8 @@ int FileReaderCompressed::read(uint8_t *buffer, uint32_t size) { } this->strm.avail_out = nextOut; - this->strm.next_out = buffer + newSize; - ret = inflate(&this->strm, Z_NO_FLUSH); + this->strm.next_out = buffer + newSize; + ret = inflate(&this->strm, Z_NO_FLUSH); if (ret == Z_STREAM_ERROR) { DEBUG_FUNCTION_LINE("Z_STREAM_ERROR"); @@ -39,7 +39,7 @@ int FileReaderCompressed::read(uint8_t *buffer, uint32_t size) { case Z_NEED_DICT: DEBUG_FUNCTION_LINE("Z_NEED_DICT"); ret = Z_DATA_ERROR; - [[fallthrough]]; /* and fall through */ + [[fallthrough]]; /* and fall through */ case Z_DATA_ERROR: case Z_MEM_ERROR: DEBUG_FUNCTION_LINE("Z_MEM_ERROR or Z_DATA_ERROR"); @@ -55,7 +55,7 @@ int FileReaderCompressed::read(uint8_t *buffer, uint32_t size) { } nextOut = BUFFER_SIZE; if (newSize + nextOut >= (size)) { - nextOut = (size) - newSize; + nextOut = (size) -newSize; } } while (this->strm.avail_out == 0 && newSize < (size)); @@ -71,12 +71,12 @@ FileReaderCompressed::FileReaderCompressed(std::string &file) : FileReader(file) void FileReaderCompressed::initCompressedData() { /* allocate inflate state */ - this->strm.zalloc = Z_NULL; - this->strm.zfree = Z_NULL; - this->strm.opaque = Z_NULL; + this->strm.zalloc = Z_NULL; + this->strm.zfree = Z_NULL; + this->strm.opaque = Z_NULL; this->strm.avail_in = 0; - this->strm.next_in = Z_NULL; - int ret = inflateInit2(&this->strm, MAX_WBITS | 16); //gzip + this->strm.next_in = Z_NULL; + int ret = inflateInit2(&this->strm, MAX_WBITS | 16); //gzip if (ret != Z_OK) { DEBUG_FUNCTION_LINE("inflateInit2 failed"); return; diff --git a/src/utils/FileReaderCompressed.h b/src/utils/FileReaderCompressed.h index 2f026fe..a39495b 100644 --- a/src/utils/FileReaderCompressed.h +++ b/src/utils/FileReaderCompressed.h @@ -1,8 +1,8 @@ #pragma once -#include #include "FileReader.h" #include "logger.h" +#include #define BUFFER_SIZE 0x20000 @@ -12,8 +12,7 @@ public: explicit FileReaderCompressed(std::string &file); - ~FileReaderCompressed() override { - } + ~FileReaderCompressed() override = default; int read(uint8_t *buffer, uint32_t size) override; diff --git a/src/utils/StringTools.cpp b/src/utils/StringTools.cpp index eca34b8..7e18248 100644 --- a/src/utils/StringTools.cpp +++ b/src/utils/StringTools.cpp @@ -23,22 +23,22 @@ * * for WiiXplorer 2010 ***************************************************************************/ -#include -#include -#include #include +#include #include -#include -#include +#include +#include #include -#include -#include #include +#include +#include +#include BOOL StringTools::EndsWith(const std::string &a, const std::string &b) { - if (b.size() > a.size()) + if (b.size() > a.size()) { return false; + } return std::equal(a.begin() + a.size() - b.size(), a.end(), b.begin()); } @@ -85,7 +85,7 @@ const wchar_t *StringTools::wfmt(const char *format, ...) { static char tmp[512]; static wchar_t strWChar[512]; strWChar[0] = 0; - tmp[0] = 0; + tmp[0] = 0; if (!format) return (const wchar_t *) strWChar; @@ -98,7 +98,7 @@ const wchar_t *StringTools::wfmt(const char *format, ...) { if ((vsprintf(tmp, format, va) >= 0)) { int bt; int32_t strlength = strlen(tmp); - bt = mbstowcs(strWChar, tmp, (strlength < 512) ? strlength : 512); + bt = mbstowcs(strWChar, tmp, (strlength < 512) ? strlength : 512); if (bt > 0) { strWChar[bt] = 0; @@ -112,13 +112,13 @@ const wchar_t *StringTools::wfmt(const char *format, ...) { int32_t StringTools::strprintf(std::string &str, const char *format, ...) { static char tmp[512]; - tmp[0] = 0; + tmp[0] = 0; int32_t result = 0; va_list va; va_start(va, format); if ((vsprintf(tmp, format, va) >= 0)) { - str = tmp; + str = tmp; result = str.size(); } va_end(va); @@ -215,7 +215,7 @@ const char *StringTools::FullpathToFilename(const char *path) { if (!path) return path; - const char *ptr = path; + const char *ptr = path; const char *Filename = ptr; while (*ptr != '\0') { @@ -244,13 +244,13 @@ void StringTools::RemoveDoubleSlashs(std::string &str) { // You must free the result if result is non-NULL. char *StringTools::str_replace(char *orig, char *rep, char *with) { - char *result; // the return string - char *ins; // the next insert point - char *tmp; // varies - int len_rep; // length of rep (the string to remove) - int len_with; // length of with (the string to replace rep with) + char *result; // the return string + char *ins; // the next insert point + char *tmp; // varies + int len_rep; // length of rep (the string to remove) + int len_with; // length of with (the string to replace rep with) int len_front; // distance between rep and end of last rep - int count; // number of replacements + int count; // number of replacements // sanity checks and initialization if (!orig || !rep) @@ -279,10 +279,10 @@ char *StringTools::str_replace(char *orig, char *rep, char *with) { // ins points to the next occurrence of rep in orig // orig points to the remainder of orig after "end of rep" while (count--) { - ins = strstr(orig, rep); + ins = strstr(orig, rep); len_front = ins - orig; - tmp = strncpy(tmp, orig, len_front) + len_front; - tmp = strcpy(tmp, with) + len_with; + tmp = strncpy(tmp, orig, len_front) + len_front; + tmp = strcpy(tmp, with) + len_with; orig += len_front + len_rep; // move to next "end of rep" } strcpy(tmp, orig); @@ -301,4 +301,3 @@ uint32_t StringTools::hash(char *str) { } return h; // or, h % ARRAY_SIZE; } - diff --git a/src/utils/StringTools.h b/src/utils/StringTools.h index 8fa3319..6bc6e22 100644 --- a/src/utils/StringTools.h +++ b/src/utils/StringTools.h @@ -26,8 +26,8 @@ #ifndef __STRING_TOOLS_H #define __STRING_TOOLS_H -#include #include +#include #include class StringTools { @@ -64,4 +64,3 @@ public: }; #endif /* __STRING_TOOLS_H */ - diff --git a/src/utils/ini.c b/src/utils/ini.c index b65aad3..b33c2b0 100644 --- a/src/utils/ini.c +++ b/src/utils/ini.c @@ -1,12 +1,16 @@ /* inih -- simple .INI file parser +SPDX-License-Identifier: BSD-3-Clause + +Copyright (C) 2009-2020, Ben Hoyt + inih is released under the New BSD license (see LICENSE.txt). Go to the project home page for more info: https://github.com/benhoyt/inih */ - +// clang-format off #if defined(_MSC_VER) && !defined(_CRT_SECURE_NO_WARNINGS) #define _CRT_SECURE_NO_WARNINGS #endif @@ -18,9 +22,17 @@ https://github.com/benhoyt/inih #include "ini.h" #if !INI_USE_STACK - +#if INI_CUSTOM_ALLOCATOR +#include +void* ini_malloc(size_t size); +void ini_free(void* ptr); +void* ini_realloc(void* ptr, size_t size); +#else #include - +#define ini_malloc malloc +#define ini_free free +#define ini_realloc realloc +#endif #endif #define MAX_SECTION 50 @@ -28,34 +40,37 @@ https://github.com/benhoyt/inih /* Used by ini_parse_string() to keep track of string parsing state. */ typedef struct { - const char *ptr; + const char* ptr; size_t num_left; } ini_parse_string_ctx; /* Strip whitespace chars off end of given string, in place. Return s. */ -static char *rstrip(char *s) { - char *p = s + strlen(s); - while (p > s && isspace((unsigned char) (*--p))) +static char* rstrip(char* s) +{ + char* p = s + strlen(s); + while (p > s && isspace((unsigned char)(*--p))) *p = '\0'; return s; } /* Return pointer to first non-whitespace char in given string. */ -static char *lskip(const char *s) { - while (*s && isspace((unsigned char) (*s))) +static char* lskip(const char* s) +{ + while (*s && isspace((unsigned char)(*s))) s++; - return (char *) s; + return (char*)s; } /* Return pointer to first char (of chars) or inline comment in given string, - or pointer to null at end of string if neither found. Inline comment must + or pointer to NUL at end of string if neither found. Inline comment must be prefixed by a whitespace character to register as a comment. */ -static char *find_chars_or_comment(const char *s, const char *chars) { +static char* find_chars_or_comment(const char* s, const char* chars) +{ #if INI_ALLOW_INLINE_COMMENTS int was_space = 0; while (*s && (!chars || !strchr(chars, *s)) && !(was_space && strchr(INI_INLINE_COMMENT_PREFIXES, *s))) { - was_space = isspace((unsigned char) (*s)); + was_space = isspace((unsigned char)(*s)); s++; } #else @@ -63,46 +78,49 @@ static char *find_chars_or_comment(const char *s, const char *chars) { s++; } #endif - return (char *) s; + return (char*)s; } -/* Version of strncpy that ensures dest (size bytes) is null-terminated. */ -static char *strncpy0(char *dest, const char *src, size_t size) { -#pragma GCC diagnostic push -#pragma GCC diagnostic ignored "-Wstringop-truncation" - strncpy(dest, src, size - 1); -#pragma GCC diagnostic pop - dest[size - 1] = '\0'; +/* Similar to strncpy, but ensures dest (size bytes) is + NUL-terminated, and doesn't pad with NULs. */ +static char* strncpy0(char* dest, const char* src, size_t size) +{ + /* Could use strncpy internally, but it causes gcc warnings (see issue #91) */ + size_t i; + for (i = 0; i < size - 1 && src[i]; i++) + dest[i] = src[i]; + dest[i] = '\0'; return dest; } /* See documentation in header file. */ -int ini_parse_stream(ini_reader reader, void *stream, ini_handler handler, - void *user) { +int ini_parse_stream(ini_reader reader, void* stream, ini_handler handler, + void* user) +{ /* Uses a fair bit of stack (use heap instead if you need to) */ #if INI_USE_STACK char line[INI_MAX_LINE]; int max_line = INI_MAX_LINE; #else - char *line; - int max_line = INI_INITIAL_ALLOC; + char* line; + size_t max_line = INI_INITIAL_ALLOC; #endif -#if INI_ALLOW_REALLOC - char *new_line; - int offset; +#if INI_ALLOW_REALLOC && !INI_USE_STACK + char* new_line; + size_t offset; #endif char section[MAX_SECTION] = ""; char prev_name[MAX_NAME] = ""; - char *start; - char *end; - char *name; - char *value; + char* start; + char* end; + char* name; + char* value; int lineno = 0; int error = 0; #if !INI_USE_STACK - line = (char *) malloc(INI_INITIAL_ALLOC); + line = (char*)ini_malloc(INI_INITIAL_ALLOC); if (!line) { return -2; } @@ -115,20 +133,20 @@ int ini_parse_stream(ini_reader reader, void *stream, ini_handler handler, #endif /* Scan through stream line by line */ - while (reader(line, max_line, stream) != NULL) { -#if INI_ALLOW_REALLOC + while (reader(line, (int)max_line, stream) != NULL) { +#if INI_ALLOW_REALLOC && !INI_USE_STACK offset = strlen(line); while (offset == max_line - 1 && line[offset - 1] != '\n') { max_line *= 2; if (max_line > INI_MAX_LINE) max_line = INI_MAX_LINE; - new_line = realloc(line, max_line); + new_line = ini_realloc(line, max_line); if (!new_line) { - free(line); + ini_free(line); return -2; } line = new_line; - if (reader(line + offset, max_line - offset, stream) == NULL) + if (reader(line + offset, (int)(max_line - offset), stream) == NULL) break; if (max_line >= INI_MAX_LINE) break; @@ -140,9 +158,9 @@ int ini_parse_stream(ini_reader reader, void *stream, ini_handler handler, start = line; #if INI_ALLOW_BOM - if (lineno == 1 && (unsigned char) start[0] == 0xEF && - (unsigned char) start[1] == 0xBB && - (unsigned char) start[2] == 0xBF) { + if (lineno == 1 && (unsigned char)start[0] == 0xEF && + (unsigned char)start[1] == 0xBB && + (unsigned char)start[2] == 0xBF) { start += 3; } #endif @@ -166,11 +184,17 @@ int ini_parse_stream(ini_reader reader, void *stream, ini_handler handler, *end = '\0'; strncpy0(section, start + 1, sizeof(section)); *prev_name = '\0'; - } else if (!error) { +#if INI_CALL_HANDLER_ON_NEW_SECTION + if (!HANDLER(user, section, NULL, NULL) && !error) + error = lineno; +#endif + } + else if (!error) { /* No ']' found on section line */ error = lineno; } - } else if (*start) { + } + else if (*start) { /* Not a comment, must be a name[=:]value pair */ end = find_chars_or_comment(start, "=:"); if (*end == '=' || *end == ':') { @@ -189,9 +213,17 @@ int ini_parse_stream(ini_reader reader, void *stream, ini_handler handler, strncpy0(prev_name, name, sizeof(prev_name)); if (!HANDLER(user, section, name, value) && !error) error = lineno; - } else if (!error) { + } + else if (!error) { /* No '=' or ':' found on name[=:]value line */ +#if INI_ALLOW_NO_VALUE + *end = '\0'; + name = rstrip(start); + if (!HANDLER(user, section, name, NULL) && !error) + error = lineno; +#else error = lineno; +#endif } } @@ -202,20 +234,22 @@ int ini_parse_stream(ini_reader reader, void *stream, ini_handler handler, } #if !INI_USE_STACK - free(line); + ini_free(line); #endif return error; } /* See documentation in header file. */ -int ini_parse_file(FILE *file, ini_handler handler, void *user) { - return ini_parse_stream((ini_reader) fgets, file, handler, user); +int ini_parse_file(FILE* file, ini_handler handler, void* user) +{ + return ini_parse_stream((ini_reader)fgets, file, handler, user); } /* See documentation in header file. */ -int ini_parse(const char *filename, ini_handler handler, void *user) { - FILE *file; +int ini_parse(const char* filename, ini_handler handler, void* user) +{ + FILE* file; int error; file = fopen(filename, "r"); @@ -228,11 +262,11 @@ int ini_parse(const char *filename, ini_handler handler, void *user) { /* An ini_reader function to read the next line from a string buffer. This is the fgets() equivalent used by ini_parse_string(). */ -static char *ini_reader_string(char *str, int num, void *stream) { - ini_parse_string_ctx *ctx = (ini_parse_string_ctx *) stream; - const char *ctx_ptr = ctx->ptr; +static char* ini_reader_string(char* str, int num, void* stream) { + ini_parse_string_ctx* ctx = (ini_parse_string_ctx*)stream; + const char* ctx_ptr = ctx->ptr; size_t ctx_num_left = ctx->num_left; - char *strp = str; + char* strp = str; char c; if (ctx_num_left == 0 || num < 2) @@ -254,11 +288,11 @@ static char *ini_reader_string(char *str, int num, void *stream) { } /* See documentation in header file. */ -int ini_parse_string(const char *string, ini_handler handler, void *user) { +int ini_parse_string(const char* string, ini_handler handler, void* user) { ini_parse_string_ctx ctx; ctx.ptr = string; ctx.num_left = strlen(string); - return ini_parse_stream((ini_reader) ini_reader_string, &ctx, handler, + return ini_parse_stream((ini_reader)ini_reader_string, &ctx, handler, user); } diff --git a/src/utils/ini.h b/src/utils/ini.h index 89c351f..8d34e67 100644 --- a/src/utils/ini.h +++ b/src/utils/ini.h @@ -1,14 +1,18 @@ /* inih -- simple .INI file parser +SPDX-License-Identifier: BSD-3-Clause + +Copyright (C) 2009-2020, Ben Hoyt + inih is released under the New BSD license (see LICENSE.txt). Go to the project home page for more info: https://github.com/benhoyt/inih */ - -#ifndef __INI_H__ -#define __INI_H__ +// clang-format off +#ifndef INI_H +#define INI_H /* Make this header file easier to include in C++ code */ #ifdef __cplusplus @@ -28,12 +32,12 @@ typedef int (*ini_handler)(void* user, const char* section, const char* name, const char* value, int lineno); #else -typedef int (*ini_handler)(void *user, const char *section, - const char *name, const char *value); +typedef int (*ini_handler)(void* user, const char* section, + const char* name, const char* value); #endif /* Typedef for prototype of fgets-style reader function. */ -typedef char *(*ini_reader)(char *str, int num, void *stream); +typedef char* (*ini_reader)(char* str, int num, void* stream); /* Parse given INI-style file. May have [section]s, name=value pairs (whitespace stripped), and comments starting with ';' (semicolon). Section @@ -48,22 +52,22 @@ typedef char *(*ini_reader)(char *str, int num, void *stream); stop on first error), -1 on file open error, or -2 on memory allocation error (only when INI_USE_STACK is zero). */ -int ini_parse(const char *filename, ini_handler handler, void *user); +int ini_parse(const char* filename, ini_handler handler, void* user); /* Same as ini_parse(), but takes a FILE* instead of filename. This doesn't close the file when it's finished -- the caller must do that. */ -int ini_parse_file(FILE *file, ini_handler handler, void *user); +int ini_parse_file(FILE* file, ini_handler handler, void* user); /* Same as ini_parse(), but takes an ini_reader function pointer instead of filename. Used for implementing custom or string-based I/O (see also ini_parse_string). */ -int ini_parse_stream(ini_reader reader, void *stream, ini_handler handler, - void *user); +int ini_parse_stream(ini_reader reader, void* stream, ini_handler handler, + void* user); /* Same as ini_parse(), but takes a zero-terminated string with the INI data instead of a file. Useful for parsing INI data from a network socket or already in memory. */ -int ini_parse_string(const char *string, ini_handler handler, void *user); +int ini_parse_string(const char* string, ini_handler handler, void* user); /* Nonzero to allow multi-line value parsing, in the style of Python's configparser. If allowed, ini_parse() will call the handler with the same @@ -73,7 +77,7 @@ int ini_parse_string(const char *string, ini_handler handler, void *user); #endif /* Nonzero to allow a UTF-8 BOM sequence (0xEF 0xBB 0xBF) at the start of - the file. See http://code.google.com/p/inih/issues/detail?id=21 */ + the file. See https://github.com/benhoyt/inih/issues/21 */ #ifndef INI_ALLOW_BOM #define INI_ALLOW_BOM 1 #endif @@ -123,8 +127,31 @@ int ini_parse_string(const char *string, ini_handler handler, void *user); #define INI_STOP_ON_FIRST_ERROR 0 #endif +/* Nonzero to call the handler at the start of each new section (with + name and value NULL). Default is to only call the handler on + each name=value pair. */ +#ifndef INI_CALL_HANDLER_ON_NEW_SECTION +#define INI_CALL_HANDLER_ON_NEW_SECTION 0 +#endif + +/* Nonzero to allow a name without a value (no '=' or ':' on the line) and + call the handler with value NULL in this case. Default is to treat + no-value lines as an error. */ +#ifndef INI_ALLOW_NO_VALUE +#define INI_ALLOW_NO_VALUE 0 +#endif + +/* Nonzero to use custom ini_malloc, ini_free, and ini_realloc memory + allocation functions (INI_USE_STACK must also be 0). These functions must + have the same signatures as malloc/free/realloc and behave in a similar + way. ini_realloc is only needed if INI_ALLOW_REALLOC is set. */ +#ifndef INI_CUSTOM_ALLOCATOR +#define INI_CUSTOM_ALLOCATOR 0 +#endif + + #ifdef __cplusplus } #endif -#endif /* __INI_H__ */ \ No newline at end of file +#endif /* INI_H */ diff --git a/src/utils/logger.c b/src/utils/logger.c index 0411db7..f700806 100644 --- a/src/utils/logger.c +++ b/src/utils/logger.c @@ -1,19 +1,19 @@ #ifdef DEBUG #include -#include #include #include +#include uint32_t moduleLogInit = false; -uint32_t cafeLogInit = false; -uint32_t udpLogInit = false; +uint32_t cafeLogInit = false; +uint32_t udpLogInit = false; #endif // DEBUG void initLogging() { #ifdef DEBUG if (!(moduleLogInit = WHBLogModuleInit())) { cafeLogInit = WHBLogCafeInit(); - udpLogInit = WHBLogUdpInit(); + udpLogInit = WHBLogUdpInit(); } #endif // DEBUG } diff --git a/src/utils/logger.h b/src/utils/logger.h index 6e45bec..847975a 100644 --- a/src/utils/logger.h +++ b/src/utils/logger.h @@ -1,7 +1,7 @@ #pragma once -#include #include +#include #ifdef __cplusplus extern "C" { @@ -9,26 +9,28 @@ extern "C" { #ifdef DEBUG -#define __FILENAME_X__ (strrchr(__FILE__, '\\') ? strrchr(__FILE__, '\\') + 1 : __FILE__) -#define __FILENAME__ (strrchr(__FILE__, '/') ? strrchr(__FILE__, '/') + 1 : __FILENAME_X__) +#define __FILENAME_X__ (strrchr(__FILE__, '\\') ? strrchr(__FILE__, '\\') + 1 : __FILE__) +#define __FILENAME__ (strrchr(__FILE__, '/') ? strrchr(__FILE__, '/') + 1 : __FILENAME_X__) #define DEBUG_FUNCTION_LINE_VERBOSE(FMT, ARGS...) while (0) -#define DEBUG_FUNCTION_LINE(FMT, ARGS...)do { \ - WHBLogPrintf("[%23s]%30s@L%04d: " FMT "",__FILENAME__,__FUNCTION__, __LINE__, ## ARGS); \ +#define DEBUG_FUNCTION_LINE(FMT, ARGS...) \ + do { \ + WHBLogPrintf("[%23s]%30s@L%04d: " FMT "", __FILENAME__, __FUNCTION__, __LINE__, ##ARGS); \ } while (0) -#define DEBUG_FUNCTION_LINE_WRITE(FMT, ARGS...)do { \ - WHBLogWritef("[%23s]%30s@L%04d: " FMT "",__FILENAME__,__FUNCTION__, __LINE__, ## ARGS); \ +#define DEBUG_FUNCTION_LINE_WRITE(FMT, ARGS...) \ + do { \ + WHBLogWritef("[%23s]%30s@L%04d: " FMT "", __FILENAME__, __FUNCTION__, __LINE__, ##ARGS); \ } while (0) #else #define DEBUG_FUNCTION_LINE_VERBOSE(FMT, ARGS...) while (0) -#define DEBUG_FUNCTION_LINE(FMT, ARGS...) while (0) +#define DEBUG_FUNCTION_LINE(FMT, ARGS...) while (0) -#define DEBUG_FUNCTION_LINE_WRITE(FMT, ARGS...) while (0) +#define DEBUG_FUNCTION_LINE_WRITE(FMT, ARGS...) while (0) #endif @@ -39,4 +41,3 @@ void deinitLogging(); #ifdef __cplusplus } #endif - diff --git a/src/utils/utils.cpp b/src/utils/utils.cpp index 29998db..bbe9a07 100644 --- a/src/utils/utils.cpp +++ b/src/utils/utils.cpp @@ -1,6 +1,6 @@ +#include "utils/logger.h" #include #include -#include "utils/logger.h" #define PRINTF_BUFFER_LENGTH 2048 diff --git a/src/utils/utils.h b/src/utils/utils.h index a9f0b69..8dc06b8 100644 --- a/src/utils/utils.h +++ b/src/utils/utils.h @@ -6,28 +6,29 @@ extern "C" { #endif -#define LIMIT(x, min, max) \ - ({ \ - typeof( x ) _x = x; \ - typeof( min ) _min = min; \ - typeof( max ) _max = max; \ - ( ( ( _x ) < ( _min ) ) ? ( _min ) : ( ( _x ) > ( _max ) ) ? ( _max) : ( _x ) ); \ -}) +#define LIMIT(x, min, max) \ + ({ \ + typeof(x) _x = x; \ + typeof(min) _min = min; \ + typeof(max) _max = max; \ + (((_x) < (_min)) ? (_min) : ((_x) > (_max)) ? (_max) \ + : (_x)); \ + }) -#define DegToRad(a) ( (a) * 0.01745329252f ) -#define RadToDeg(a) ( (a) * 57.29577951f ) +#define DegToRad(a) ((a) *0.01745329252f) +#define RadToDeg(a) ((a) *57.29577951f) -#define ALIGN4(x) (((x) + 3) & ~3) -#define ALIGN32(x) (((x) + 31) & ~31) +#define ALIGN4(x) (((x) + 3) & ~3) +#define ALIGN32(x) (((x) + 31) & ~31) // those work only in powers of 2 -#define ROUNDDOWN(val, align) ((val) & ~(align-1)) -#define ROUNDUP(val, align) ROUNDDOWN(((val) + (align-1)), align) +#define ROUNDDOWN(val, align) ((val) & ~(align - 1)) +#define ROUNDUP(val, align) ROUNDDOWN(((val) + (align - 1)), align) -#define le16(i) ((((uint16_t) ((i) & 0xFF)) << 8) | ((uint16_t) (((i) & 0xFF00) >> 8))) -#define le32(i) ((((uint32_t)le16((i) & 0xFFFF)) << 16) | ((uint32_t)le16(((i) & 0xFFFF0000) >> 16))) -#define le64(i) ((((uint64_t)le32((i) & 0xFFFFFFFFLL)) << 32) | ((uint64_t)le32(((i) & 0xFFFFFFFF00000000LL) >> 32))) +#define le16(i) ((((uint16_t) ((i) &0xFF)) << 8) | ((uint16_t) (((i) &0xFF00) >> 8))) +#define le32(i) ((((uint32_t) le16((i) &0xFFFF)) << 16) | ((uint32_t) le16(((i) &0xFFFF0000) >> 16))) +#define le64(i) ((((uint64_t) le32((i) &0xFFFFFFFFLL)) << 32) | ((uint64_t) le32(((i) &0xFFFFFFFF00000000LL) >> 32))) //Needs to have log_init() called beforehand. void dumpHex(const void *data, size_t size);