More work on the FAT driver, more messy, but more complete
[tpg/acess2.git] / Kernel / include / vfs.h
index 47cbe19..a782104 100644 (file)
  * Marks a file as a symbolic link
  */
 #define VFS_FFLAG_SYMLINK      0x04
+/**
+ * \brief Set User ID Flag
+ * 
+ * Allows an executable file to change it's executing user to the file's
+ * owner.
+ * In the case of a directory, it means that all immediate children will
+ * inherit the UID of the parent.
+ */
+#define VFS_FFLAG_SETUID       0x08
+/**
+ * \brief Set Group ID Flag
+ * 
+ * Allows an executable file to change it's executing group to the file's
+ * owning group.
+ * In the case of a directory, it means that all immediate children will
+ * inherit the GID of the parent.
+ */
+#define VFS_FFLAG_SETGID       0x10
 /**
  * \}
  */
@@ -54,7 +72,8 @@
  * This structure provides the VFS with the functions required to read/write
  * the file (or directory) that it represents.
  */
-typedef struct sVFS_Node {
+typedef struct sVFS_Node
+{
        /**
         * \name Identifiers
         * \brief Fields used by the driver to identify what data this node
@@ -68,11 +87,19 @@ typedef struct sVFS_Node {
         * \}
         */
        
+       /**
+        * \name Node State
+        * \brief Stores the misc information about the node
+        * \{
+        */
         int    ReferenceCount; //!< Number of times the node is used
        
        Uint64  Size;   //!< File Size
        
        Uint32  Flags;  //!< File Flags
+       /**
+        * \}
+        */
        
        /**
         * \name Times
@@ -200,7 +227,7 @@ typedef struct sVFS_Node {
         * \param Node  Pointer to this node
         * \param OldName       Name of the item to move/delete
         * \param NewName       New name (or NULL if unlinking is wanted)
-        * \return Boolean Success
+        * \return Zero on Success, non-zero on error (see errno.h)
         */
         int    (*Relink)(struct sVFS_Node *Node, char *OldName, char *NewName);
         
@@ -305,7 +332,7 @@ extern tVFS_Node    *Inode_GetCache(int Handle, Uint64 Inode);
  */
 extern tVFS_Node       *Inode_CacheNode(int Handle, tVFS_Node *Node);
 /**
- * \fn void Inode_UncacheNode(int Handle, Uint64 Inode)
+ * \fn int Inode_UncacheNode(int Handle, Uint64 Inode)
  * \brief Dereferences (and removes if needed) a node from the cache
  * \param Handle       A handle returned by Inode_GetHandle()
  * \param Inode        Value of the Inode field of the ::tVFS_Node you want to remove

UCC git Repository :: git.ucc.asn.au