janwas
0fd85b76db
- allocators.cpp: fix: make sure all pool fields are reset in pool_free_all; correct matrix self-test - lib: fix self-test - lib_error: give "informational" return codes values > 100 (allows multiplexing with percent indicator) - archive: add clarification to afile_enum; use vfs_load when building archive (fixes caching problem); add support for progressive archive creation - file: allow pp_set_dir's path to end in slash (simplifies other code); add file_exists - file_cache: add stats+sanity checks to allocator; improve ExtantBufMgr find(); add ExactBufOracle to translate padded address returned by Cache to what was actually allocated; relax infinite-loop check; fix file_cache_reset - file_io: refactor callback logic so it can be used by vfs (needed for vfs_load) - vfs: vfs_load now supports calling back (required for archive builder) - vfs_mount: optimize path caching in afile_cb: due to atom_fn system, string compare can be done via pointer compare - vfs_optimizer: support auto-build of archive (progressive); improve should-build-archive check (WIP) - vfs_path: add util functions (also used in screenshot code) - vfs_tree: simplify pathname storage - wposix: mmap bugfix - main: call progressive archive builder; skip reload when doing so (documented) - JSInterface_VFS+scriptglue: add archiveBuilderCancel - ps/Util: use new vfs_path helper function for cleverer screenshot naming (correctly handles some being deleted) This was SVN commit r3578.
51 lines
1.8 KiB
C
51 lines
1.8 KiB
C
#ifndef VFS_PATH_H__
|
|
#define VFS_PATH_H__
|
|
|
|
#include "lib.h"
|
|
|
|
// internal use only:
|
|
|
|
// if path is invalid (see source for criteria), print a diagnostic message
|
|
// (indicating line number of the call that failed) and
|
|
// return a negative error code. used by CHECK_PATH.
|
|
extern LibError path_validate(const uint line, const char* path);
|
|
#define CHECK_PATH(path) CHECK_ERR(path_validate(__LINE__, path))
|
|
|
|
extern bool path_component_valid(const char* name);
|
|
|
|
// strip <remove> from the start of <src>, prepend <replace>,
|
|
// and write to <dst>.
|
|
// used when converting VFS <--> real paths.
|
|
extern LibError path_replace(char* dst, const char* src, const char* remove, const char* replace);
|
|
|
|
|
|
// fill V_dir_only with the path portion of V_src_fn
|
|
// ("" if root dir, otherwise ending with /)
|
|
extern void path_dir_only(const char* V_src_fn, char* V_dir_only);
|
|
|
|
// return pointer to the name component within V_src_fn
|
|
extern const char* path_name_only(const char* V_src_fn);
|
|
|
|
|
|
struct NextNumberedFilenameInfo
|
|
{
|
|
int next_num;
|
|
};
|
|
|
|
// fill V_next_fn (which must be big enough for VFS_MAX_PATH chars) with
|
|
// the next numbered filename according to the pattern defined by V_fn_fmt.
|
|
// <nfi> must be initially zeroed (e.g. by defining as static) and passed
|
|
// each time.
|
|
// if <use_vfs> (default), the paths are treated as VFS paths; otherwise,
|
|
// file.cpp's functions are used. this is necessary because one of
|
|
// our callers needs a filename for VFS archive files.
|
|
//
|
|
// this function is useful when creating new files which are not to
|
|
// overwrite the previous ones, e.g. screenshots.
|
|
// example for V_fn_fmt: "screenshots/screenshot%04d.png".
|
|
extern void next_numbered_filename(const char* V_fn_fmt,
|
|
NextNumberedFilenameInfo* nfi, char* V_next_fn, bool use_vfs = true);
|
|
|
|
|
|
#endif // #ifndef VFS_PATH_H__
|