mirror of
				https://git.suyu.dev/suyu/suyu
				synced 2025-11-04 00:49:02 -06:00 
			
		
		
		
	Address review comments pt. 2
This commit is contained in:
		@@ -38,4 +38,29 @@ enum class CreateOption : u8 {
 | 
			
		||||
    BigFile = (1 << 0),
 | 
			
		||||
};
 | 
			
		||||
 | 
			
		||||
struct FileSystemAttribute {
 | 
			
		||||
    u8 dir_entry_name_length_max_defined;
 | 
			
		||||
    u8 file_entry_name_length_max_defined;
 | 
			
		||||
    u8 dir_path_name_length_max_defined;
 | 
			
		||||
    u8 file_path_name_length_max_defined;
 | 
			
		||||
    INSERT_PADDING_BYTES_NOINIT(0x5);
 | 
			
		||||
    u8 utf16_dir_entry_name_length_max_defined;
 | 
			
		||||
    u8 utf16_file_entry_name_length_max_defined;
 | 
			
		||||
    u8 utf16_dir_path_name_length_max_defined;
 | 
			
		||||
    u8 utf16_file_path_name_length_max_defined;
 | 
			
		||||
    INSERT_PADDING_BYTES_NOINIT(0x18);
 | 
			
		||||
    s32 dir_entry_name_length_max;
 | 
			
		||||
    s32 file_entry_name_length_max;
 | 
			
		||||
    s32 dir_path_name_length_max;
 | 
			
		||||
    s32 file_path_name_length_max;
 | 
			
		||||
    INSERT_PADDING_WORDS_NOINIT(0x5);
 | 
			
		||||
    s32 utf16_dir_entry_name_length_max;
 | 
			
		||||
    s32 utf16_file_entry_name_length_max;
 | 
			
		||||
    s32 utf16_dir_path_name_length_max;
 | 
			
		||||
    s32 utf16_file_path_name_length_max;
 | 
			
		||||
    INSERT_PADDING_WORDS_NOINIT(0x18);
 | 
			
		||||
    INSERT_PADDING_WORDS_NOINIT(0x1);
 | 
			
		||||
};
 | 
			
		||||
static_assert(sizeof(FileSystemAttribute) == 0xC0, "FileSystemAttribute has incorrect size");
 | 
			
		||||
 | 
			
		||||
} // namespace FileSys
 | 
			
		||||
 
 | 
			
		||||
@@ -91,12 +91,8 @@ public:
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
#define DECLARE_PATH_FLAG_HANDLER(__WHICH__)                                                       \
 | 
			
		||||
    constexpr bool Is##__WHICH__##Allowed() const {                                                \
 | 
			
		||||
        return (m_value & __WHICH__##Flag) != 0;                                                   \
 | 
			
		||||
    }                                                                                              \
 | 
			
		||||
    constexpr void Allow##__WHICH__() {                                                            \
 | 
			
		||||
        m_value |= __WHICH__##Flag;                                                                \
 | 
			
		||||
    }
 | 
			
		||||
    constexpr bool Is##__WHICH__##Allowed() const { return (m_value & __WHICH__##Flag) != 0; }     \
 | 
			
		||||
    constexpr void Allow##__WHICH__() { m_value |= __WHICH__##Flag; }
 | 
			
		||||
 | 
			
		||||
    DECLARE_PATH_FLAG_HANDLER(WindowsPath)
 | 
			
		||||
    DECLARE_PATH_FLAG_HANDLER(RelativePath)
 | 
			
		||||
 
 | 
			
		||||
@@ -56,7 +56,7 @@ private:
 | 
			
		||||
        next_entry_index += actual_entries;
 | 
			
		||||
        *out_count = actual_entries;
 | 
			
		||||
 | 
			
		||||
        std::memcpy(out_entries, entries.data(), range_size);
 | 
			
		||||
        std::memcpy(out_entries, begin, range_size);
 | 
			
		||||
 | 
			
		||||
        R_SUCCEED();
 | 
			
		||||
    }
 | 
			
		||||
 
 | 
			
		||||
@@ -125,10 +125,8 @@ protected:
 | 
			
		||||
 | 
			
		||||
private:
 | 
			
		||||
    Result DoRead(size_t* out, s64 offset, void* buffer, size_t size, const ReadOption& option) {
 | 
			
		||||
        std::vector<u8> output = backend->ReadBytes(size, offset);
 | 
			
		||||
 | 
			
		||||
        *out = output.size();
 | 
			
		||||
        std::memcpy(buffer, output.data(), size);
 | 
			
		||||
        const auto read_size = backend->Read(static_cast<u8*>(buffer), size, offset);
 | 
			
		||||
        *out = read_size;
 | 
			
		||||
 | 
			
		||||
        R_SUCCEED();
 | 
			
		||||
    }
 | 
			
		||||
 
 | 
			
		||||
@@ -157,10 +157,10 @@ Result IFileSystem::GetFileTimeStampRaw(
 | 
			
		||||
    R_SUCCEED();
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
Result IFileSystem::GetFileSystemAttribute(Out<FileSystemAttribute> out_attribute) {
 | 
			
		||||
Result IFileSystem::GetFileSystemAttribute(Out<FileSys::FileSystemAttribute> out_attribute) {
 | 
			
		||||
    LOG_WARNING(Service_FS, "(STUBBED) called");
 | 
			
		||||
 | 
			
		||||
    FileSystemAttribute savedata_attribute{};
 | 
			
		||||
    FileSys::FileSystemAttribute savedata_attribute{};
 | 
			
		||||
    savedata_attribute.dir_entry_name_length_max_defined = true;
 | 
			
		||||
    savedata_attribute.file_entry_name_length_max_defined = true;
 | 
			
		||||
    savedata_attribute.dir_entry_name_length_max = 0x40;
 | 
			
		||||
 
 | 
			
		||||
@@ -4,6 +4,7 @@
 | 
			
		||||
#pragma once
 | 
			
		||||
 | 
			
		||||
#include "common/common_funcs.h"
 | 
			
		||||
#include "core/file_sys/fs_filesystem.h"
 | 
			
		||||
#include "core/file_sys/fsa/fs_i_filesystem.h"
 | 
			
		||||
#include "core/file_sys/vfs/vfs.h"
 | 
			
		||||
#include "core/hle/service/cmif_types.h"
 | 
			
		||||
@@ -24,31 +25,6 @@ class IFileSystem final : public ServiceFramework<IFileSystem> {
 | 
			
		||||
public:
 | 
			
		||||
    explicit IFileSystem(Core::System& system_, FileSys::VirtualDir dir_, SizeGetter size_getter_);
 | 
			
		||||
 | 
			
		||||
    struct FileSystemAttribute {
 | 
			
		||||
        u8 dir_entry_name_length_max_defined;
 | 
			
		||||
        u8 file_entry_name_length_max_defined;
 | 
			
		||||
        u8 dir_path_name_length_max_defined;
 | 
			
		||||
        u8 file_path_name_length_max_defined;
 | 
			
		||||
        INSERT_PADDING_BYTES_NOINIT(0x5);
 | 
			
		||||
        u8 utf16_dir_entry_name_length_max_defined;
 | 
			
		||||
        u8 utf16_file_entry_name_length_max_defined;
 | 
			
		||||
        u8 utf16_dir_path_name_length_max_defined;
 | 
			
		||||
        u8 utf16_file_path_name_length_max_defined;
 | 
			
		||||
        INSERT_PADDING_BYTES_NOINIT(0x18);
 | 
			
		||||
        s32 dir_entry_name_length_max;
 | 
			
		||||
        s32 file_entry_name_length_max;
 | 
			
		||||
        s32 dir_path_name_length_max;
 | 
			
		||||
        s32 file_path_name_length_max;
 | 
			
		||||
        INSERT_PADDING_WORDS_NOINIT(0x5);
 | 
			
		||||
        s32 utf16_dir_entry_name_length_max;
 | 
			
		||||
        s32 utf16_file_entry_name_length_max;
 | 
			
		||||
        s32 utf16_dir_path_name_length_max;
 | 
			
		||||
        s32 utf16_file_path_name_length_max;
 | 
			
		||||
        INSERT_PADDING_WORDS_NOINIT(0x18);
 | 
			
		||||
        INSERT_PADDING_WORDS_NOINIT(0x1);
 | 
			
		||||
    };
 | 
			
		||||
    static_assert(sizeof(FileSystemAttribute) == 0xC0, "FileSystemAttribute has incorrect size");
 | 
			
		||||
 | 
			
		||||
    Result CreateFile(const InLargeData<FileSys::Sf::Path, BufferAttr_HipcPointer> path, s32 option,
 | 
			
		||||
                      s64 size);
 | 
			
		||||
    Result DeleteFile(const InLargeData<FileSys::Sf::Path, BufferAttr_HipcPointer> path);
 | 
			
		||||
@@ -74,7 +50,7 @@ public:
 | 
			
		||||
                             const InLargeData<FileSys::Sf::Path, BufferAttr_HipcPointer> path);
 | 
			
		||||
    Result GetFileTimeStampRaw(Out<FileSys::FileTimeStampRaw> out_timestamp,
 | 
			
		||||
                               const InLargeData<FileSys::Sf::Path, BufferAttr_HipcPointer> path);
 | 
			
		||||
    Result GetFileSystemAttribute(Out<FileSystemAttribute> out_attribute);
 | 
			
		||||
    Result GetFileSystemAttribute(Out<FileSys::FileSystemAttribute> out_attribute);
 | 
			
		||||
 | 
			
		||||
private:
 | 
			
		||||
    std::unique_ptr<FileSys::Fsa::IFileSystem> backend;
 | 
			
		||||
 
 | 
			
		||||
		Reference in New Issue
	
	Block a user