mirror of
https://github.com/hrydgard/ppsspp.git
synced 2026-10-21 02:09:05 +02:00
Headless used ~/.ppsspp, which nothing else uses, while the app uses ~/.config/ppsspp (or $XDG_CONFIG_HOME/ppsspp on Linux). The derivation is now shared, and the app's default is unchanged. Windows and iOS keep their own. test.py and frametests.py pass a memory stick next to the binary, as Windows headless already defaulted to, so the tests still don't write into the user's memory stick or see its firmware. Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
59 lines
2.1 KiB
C++
59 lines
2.1 KiB
C++
#pragma once
|
|
|
|
#include <string>
|
|
#include <string_view>
|
|
|
|
#include "Common/File/Path.h"
|
|
|
|
// Use these in conjunction with GetSysDirectory.
|
|
enum PSPDirectories {
|
|
DIRECTORY_PSP,
|
|
DIRECTORY_CHEATS,
|
|
DIRECTORY_SCREENSHOT,
|
|
DIRECTORY_SYSTEM,
|
|
DIRECTORY_NAND,
|
|
DIRECTORY_GAME,
|
|
DIRECTORY_SAVEDATA,
|
|
DIRECTORY_PAUTH,
|
|
DIRECTORY_DUMP,
|
|
DIRECTORY_SAVESTATE,
|
|
DIRECTORY_CACHE,
|
|
DIRECTORY_TEXTURES,
|
|
DIRECTORY_PLUGINS,
|
|
DIRECTORY_APP_CACHE, // Use the OS app cache if available
|
|
DIRECTORY_VIDEO,
|
|
DIRECTORY_AUDIO,
|
|
DIRECTORY_MEMSTICK_ROOT,
|
|
DIRECTORY_EXDATA,
|
|
DIRECTORY_CUSTOM_SHADERS,
|
|
DIRECTORY_CUSTOM_THEMES,
|
|
COUNT,
|
|
};
|
|
|
|
// Returns true if the given path (e.g. a zip entry name) contains a parent
|
|
// directory ("..") component. Used to guard against path traversal when
|
|
// extracting or writing files to disk.
|
|
bool HasParentDirComponent(std::string_view path);
|
|
|
|
// Returns true if the given string contains a path separator ('/' or '\\')
|
|
// or is a bare dot component ("." or ".."). Used to reject guest-controlled
|
|
// strings that would otherwise become host filesystem path components.
|
|
bool HasPathTraversal(std::string_view path);
|
|
|
|
// Returns true if an untrusted string (a disc ID, a texture pack's game ID) can be used as a single
|
|
// directory or file name. Stricter than HasPathTraversal: also rejects empty names, control
|
|
// characters, ':' (drive letters, NTFS streams) and the trailing dots and spaces Win32 strips,
|
|
// which would turn "..." into "..".
|
|
bool IsSafePathComponent(std::string_view name);
|
|
|
|
Path FindConfigFile(const Path &searchPath, std::string_view baseFilename, bool *exists);
|
|
Path GetSysDirectory(PSPDirectories directoryType);
|
|
bool CreateSysDirectories();
|
|
Path GetGameConfigFilePath(const Path &searchPath, std::string_view gameId, bool *exists);
|
|
bool TryUpdateSavedPath(Path *path);
|
|
Path GetFailedBackendsDir();
|
|
// The default memory stick of the Mac and Linux builds, shared by the app and headless. The Mac app may use
|
|
// another one, if the user picked it.
|
|
Path GetDefaultDesktopMemStickDirectory();
|
|
std::string GetFriendlyPath(Path path, const Path &rootMatch = Path(), std::string_view rootDisplay = "ms:/");
|