From 62b78f7b9f4e89d3bcad236148b0193f86e00c41 Mon Sep 17 00:00:00 2001 From: Maschell Date: Sat, 26 Feb 2022 16:55:47 +0100 Subject: [PATCH] coreinit: Add missing parameter to FSChangeMode/FSChangeModeAsync (#199) --- include/coreinit/filesystem.h | 2 ++ libraries/wutdevoptab/devoptab_fs_chmod.c | 12 +++++++++++- 2 files changed, 13 insertions(+), 1 deletion(-) diff --git a/include/coreinit/filesystem.h b/include/coreinit/filesystem.h index 4f303021..ba2491b0 100644 --- a/include/coreinit/filesystem.h +++ b/include/coreinit/filesystem.h @@ -472,6 +472,7 @@ FSChangeMode(FSClient *client, FSCmdBlock *block, char *path, FSMode mode, + FSMode modeMask, FSErrorFlag errorMask); FSStatus @@ -479,6 +480,7 @@ FSChangeModeAsync(FSClient *client, FSCmdBlock *block, char *path, FSMode mode, + FSMode modeMask, FSErrorFlag errorMask, FSAsyncData *asyncData); diff --git a/libraries/wutdevoptab/devoptab_fs_chmod.c b/libraries/wutdevoptab/devoptab_fs_chmod.c index 43a26920..bc4de68a 100644 --- a/libraries/wutdevoptab/devoptab_fs_chmod.c +++ b/libraries/wutdevoptab/devoptab_fs_chmod.c @@ -1,5 +1,13 @@ +#include #include "devoptab_fs.h" +static inline FSMode +__wut_fs_convert_mode(mode_t mode) +{ + // Convert normal Unix octal permission bits into CafeOS hexadecimal permission bits + return (FSMode) (((mode & S_IRWXU) << 2) | ((mode & S_IRWXG) << 1) | (mode & S_IRWXO)); +} + int __wut_fs_chmod(struct _reent *r, const char *path, @@ -18,9 +26,11 @@ __wut_fs_chmod(struct _reent *r, return -1; } + FSMode translatedMode = __wut_fs_convert_mode(mode); + FSInitCmdBlock(&cmd); status = FSChangeMode(__wut_devoptab_fs_client, &cmd, fixedPath, - (FSMode)mode, FS_ERROR_FLAG_ALL); + translatedMode, 0x777, FS_ERROR_FLAG_ALL); free(fixedPath); if (status < 0) { r->_errno = __wut_fs_translate_error(status);