]> git.draconx.ca Git - upkg.git/blobdiff - src/uobject/vfs.h
package: Make the VFS directly open the package file.
[upkg.git] / src / uobject / vfs.h
index d986aeca3907900aaa005f1289a4d083db7c5552..bc835a782294137018e5f6f0c3e6a8327d0bb416 100644 (file)
@@ -18,6 +18,8 @@
 #ifndef U_OBJECT_VFS_H_
 #define U_OBJECT_VFS_H_
 
+#include <upkg.h>
+
 /*
  * 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,23 @@ 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.
+ * 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.