X-Git-Url: https://git.draconx.ca/gitweb/upkg.git/blobdiff_plain/0a55ae84545c5e5a45e2240c06bd77a1917f7d3e..b228d2b354248b62d70a582a37693cff829fe0c6:/src/uobject/vfs.h diff --git a/src/uobject/vfs.h b/src/uobject/vfs.h index d986aec..c0bdc4f 100644 --- a/src/uobject/vfs.h +++ b/src/uobject/vfs.h @@ -18,6 +18,8 @@ #ifndef U_OBJECT_VFS_H_ #define U_OBJECT_VFS_H_ +#include + /* * Insert a local package to the VFS. A "local package" is an explicit * association of a name to a file, and thus can be located outside the normal @@ -35,9 +37,44 @@ const char *u_pkg_vfs_add_local(const char *name, const char *file); void u_pkg_vfs_del_local(const char *name); /* - * Find a package by name in the VFS. Names are case-insensitive. + * Set the global VFS search path - a LT_PATHSEP-delimited sequence of + * directories to be searched for packages after local packages. + * + * Returns 0 on success, or -1 on failure. + */ +int u_pkg_vfs_set_search_path(const char *path); + +/* + * Appends a directory to the global VFS search path. This directory will + * be searched after any directories already in the path. + * + * Returns 0 on success, or -1 on failure. + */ +int u_pkg_vfs_add_search_dir(const char *path); + +/* + * Get the global VFS search path. + */ +const char *u_pkg_vfs_get_search_path(void); + +/* + * Opens a package file by name. First, local packages are searched for a + * match. If a local match is found, the global search path is never + * consulted. If no local match is found, the directories in the global search + * path are examined, in order. + * + * When searching the global search path, the first file found which both + * matches the given name and can be opened successfully is used. A file + * foo.EXT matches the name if foo is equal to name (without regard to case) + * and EXT is one of u, utx, uax, umx or unr. If multiple extensions + * are valid, they are tried in this order. + * + * Note that the particular file extension used does not make any difference + * as to what sort of objects can be contained in a package. + * + * Returns the opened package on success, or NULL on failure. */ -const char *u_pkg_vfs_lookup(const char *name); +struct upkg *u_pkg_vfs_open_by_name(const char *name); /* * Initialize the UObject VFS system. Returns 0 on success, -1 otherwise.