+ if( FD & VFS_KERNEL_FLAG ) {
+ FD &= (VFS_KERNEL_FLAG -1);
+ if( FD >= MAX_KERNEL_FILES ) return -1;
+ h = &gaKernelHandles[FD];
+ }
+ else {
+ tUserHandles *ent;
+ int pid = Threads_GetPID();
+ int maxhandles = *Threads_GetMaxFD();
+
+ ent = VFS_int_GetUserHandles(pid, 0);
+ if(!ent) {
+ Log_Error("VFS", "Client %i does not have a handle list (>)", pid);
+ return -1;
+ }
+
+ if(FD >= maxhandles) {
+ LOG("FD (%i) > Limit (%i), RETURN NULL", FD, maxhandles);
+ return -1;
+ }
+ h = &ent->Handles[ FD ];
+ }
+ h->Node = Node;
+ h->Mode = Mode;
+ return FD;
+}
+
+
+int VFS_AllocHandle(int bIsUser, tVFS_Node *Node, int Mode)
+{