mirror of
				https://git.zaroz.cloud/nintendo-back-up/yuzu/yuzu.git
				synced 2025-05-12 00:45:25 +00:00 
			
		
		
		
	Merge pull request #335 from bunnei/delete-file
fsp_srv: Implement DeleteFile.
This commit is contained in:
		
						commit
						b8825fbf10
					
				@ -57,10 +57,14 @@ ResultVal<std::unique_ptr<StorageBackend>> Disk_FileSystem::OpenFile(const std::
 | 
			
		||||
        std::make_unique<Disk_Storage>(std::move(file)));
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
ResultCode Disk_FileSystem::DeleteFile(const Path& path) const {
 | 
			
		||||
    LOG_WARNING(Service_FS, "(STUBBED) called");
 | 
			
		||||
    // TODO(bunnei): Use correct error code
 | 
			
		||||
    return ResultCode(-1);
 | 
			
		||||
ResultCode Disk_FileSystem::DeleteFile(const std::string& path) const {
 | 
			
		||||
    if (!FileUtil::Exists(path)) {
 | 
			
		||||
        return ERROR_PATH_NOT_FOUND;
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    FileUtil::Delete(path);
 | 
			
		||||
 | 
			
		||||
    return RESULT_SUCCESS;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
ResultCode Disk_FileSystem::RenameFile(const Path& src_path, const Path& dest_path) const {
 | 
			
		||||
 | 
			
		||||
@ -25,7 +25,7 @@ public:
 | 
			
		||||
 | 
			
		||||
    ResultVal<std::unique_ptr<StorageBackend>> OpenFile(const std::string& path,
 | 
			
		||||
                                                        Mode mode) const override;
 | 
			
		||||
    ResultCode DeleteFile(const Path& path) const override;
 | 
			
		||||
    ResultCode DeleteFile(const std::string& path) const override;
 | 
			
		||||
    ResultCode RenameFile(const Path& src_path, const Path& dest_path) const override;
 | 
			
		||||
    ResultCode DeleteDirectory(const Path& path) const override;
 | 
			
		||||
    ResultCode DeleteDirectoryRecursively(const Path& path) const override;
 | 
			
		||||
 | 
			
		||||
@ -97,7 +97,7 @@ public:
 | 
			
		||||
     * @param path Path relative to the archive
 | 
			
		||||
     * @return Result of the operation
 | 
			
		||||
     */
 | 
			
		||||
    virtual ResultCode DeleteFile(const Path& path) const = 0;
 | 
			
		||||
    virtual ResultCode DeleteFile(const std::string& path) const = 0;
 | 
			
		||||
 | 
			
		||||
    /**
 | 
			
		||||
     * Create a directory specified by its path
 | 
			
		||||
 | 
			
		||||
@ -20,7 +20,7 @@ ResultVal<std::unique_ptr<StorageBackend>> RomFS_FileSystem::OpenFile(const std:
 | 
			
		||||
        std::make_unique<RomFS_Storage>(romfs_file, data_offset, data_size));
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
ResultCode RomFS_FileSystem::DeleteFile(const Path& path) const {
 | 
			
		||||
ResultCode RomFS_FileSystem::DeleteFile(const std::string& path) const {
 | 
			
		||||
    LOG_CRITICAL(Service_FS, "Attempted to delete a file from an ROMFS archive (%s).",
 | 
			
		||||
                 GetName().c_str());
 | 
			
		||||
    // TODO(bunnei): Use correct error code
 | 
			
		||||
 | 
			
		||||
@ -31,7 +31,7 @@ public:
 | 
			
		||||
 | 
			
		||||
    ResultVal<std::unique_ptr<StorageBackend>> OpenFile(const std::string& path,
 | 
			
		||||
                                                        Mode mode) const override;
 | 
			
		||||
    ResultCode DeleteFile(const Path& path) const override;
 | 
			
		||||
    ResultCode DeleteFile(const std::string& path) const override;
 | 
			
		||||
    ResultCode RenameFile(const Path& src_path, const Path& dest_path) const override;
 | 
			
		||||
    ResultCode DeleteDirectory(const Path& path) const override;
 | 
			
		||||
    ResultCode DeleteDirectoryRecursively(const Path& path) const override;
 | 
			
		||||
 | 
			
		||||
@ -236,7 +236,7 @@ public:
 | 
			
		||||
        : ServiceFramework("IFileSystem"), backend(std::move(backend)) {
 | 
			
		||||
        static const FunctionInfo functions[] = {
 | 
			
		||||
            {0, &IFileSystem::CreateFile, "CreateFile"},
 | 
			
		||||
            {1, nullptr, "DeleteFile"},
 | 
			
		||||
            {1, &IFileSystem::DeleteFile, "DeleteFile"},
 | 
			
		||||
            {2, &IFileSystem::CreateDirectory, "CreateDirectory"},
 | 
			
		||||
            {3, nullptr, "DeleteDirectory"},
 | 
			
		||||
            {4, nullptr, "DeleteDirectoryRecursively"},
 | 
			
		||||
@ -273,6 +273,20 @@ public:
 | 
			
		||||
        rb.Push(backend->CreateFile(name, size));
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    void DeleteFile(Kernel::HLERequestContext& ctx) {
 | 
			
		||||
        IPC::RequestParser rp{ctx};
 | 
			
		||||
 | 
			
		||||
        auto file_buffer = ctx.ReadBuffer();
 | 
			
		||||
        auto end = std::find(file_buffer.begin(), file_buffer.end(), '\0');
 | 
			
		||||
 | 
			
		||||
        std::string name(file_buffer.begin(), end);
 | 
			
		||||
 | 
			
		||||
        LOG_DEBUG(Service_FS, "called file %s", name.c_str());
 | 
			
		||||
 | 
			
		||||
        IPC::ResponseBuilder rb{ctx, 2};
 | 
			
		||||
        rb.Push(backend->DeleteFile(name));
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    void CreateDirectory(Kernel::HLERequestContext& ctx) {
 | 
			
		||||
        IPC::RequestParser rp{ctx};
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
		Loading…
	
		Reference in New Issue
	
	Block a user