Sorting source tree a bit
[tpg/acess2.git] / Kernel / vfs / mount.c
diff --git a/Kernel/vfs/mount.c b/Kernel/vfs/mount.c
deleted file mode 100644 (file)
index 1773218..0000000
+++ /dev/null
@@ -1,176 +0,0 @@
-/* 
- * Acess Micro - VFS Server version 1
- */
-#include <acess.h>
-#include <vfs.h>
-#include <vfs_int.h>
-#include <fs_sysfs.h>
-
-// === IMPORTS ===
-extern int     giVFS_MountFileID;
-extern char    *gsVFS_MountFile;
-
-// === PROTOTYPES ===
-#if 0
- int   VFS_Mount(const char *Device, const char *MountPoint, const char *Filesystem, const char *Options);
-#endif
-void   VFS_UpdateMountFile(void);
-
-// === GLOBALS ===
-tMutex glVFS_MountList;
-tVFS_Mount     *gVFS_Mounts;
-tVFS_Mount     *gVFS_RootMount = NULL;
-Uint32 giVFS_NextMountIdent = 1;
-
-// === CODE ===
-/**
- * \brief Mount a device
- * \param Device       Device string to mount
- * \param MountPoint   Destination for the mount
- * \param Filesystem   Filesystem to use for the mount
- * \param Options              Options to be passed to the filesystem
- * \return -1 on Invalid FS, -2 on No Mem, 0 on success
- * 
- * Mounts the filesystem on \a Device at \a MountPoint using the driver
- * \a Filesystem. The options in the string \a Options is passed to the
- * driver's mount.
- */
-int VFS_Mount(const char *Device, const char *MountPoint, const char *Filesystem, const char *Options)
-{
-       tVFS_Mount      *mnt;
-       tVFS_Driver     *fs;
-        int    deviceLen = strlen(Device);
-        int    mountLen = strlen(MountPoint);
-        int    argLen = strlen(Options);
-       
-       // Get the filesystem
-       fs = VFS_GetFSByName(Filesystem);
-       if(!fs) {
-               Log_Warning("VFS", "VFS_Mount - Unknown FS Type '%s'", Filesystem);
-               return -1;
-       }
-       
-       // Create mount information
-       mnt = malloc( sizeof(tVFS_Mount)+deviceLen+1+mountLen+1+argLen+1 );
-       if(!mnt) {
-               return -2;
-       }
-       
-       // HACK: Forces VFS_ParsePath to fall back on root  
-       if(mountLen == 1 && MountPoint[0] == '/')
-               mnt->MountPointLen = 0;
-       else
-               mnt->MountPointLen = mountLen;
-       
-       // Fill Structure
-       mnt->Filesystem = fs;
-       
-       mnt->Device = &mnt->StrData[0];
-       memcpy( mnt->Device, Device, deviceLen+1 );
-       
-       mnt->MountPoint = &mnt->StrData[deviceLen+1];
-       memcpy( mnt->MountPoint, MountPoint, mountLen+1 );
-       
-       mnt->Options = &mnt->StrData[deviceLen+1+mountLen+1];
-       memcpy( mnt->Options, Options, argLen+1 );
-       
-       // Initialise Volume
-       mnt->RootNode = fs->InitDevice(Device, NULL);   //&ArgString);
-       if(!mnt->RootNode) {
-               free(mnt);
-               return -2;
-       }
-
-       mnt->Identifier = giVFS_NextMountIdent++;
-       #if 0
-       // Ensure identifiers don't repeat
-       // - Only a problem if there have been 4 billion mounts
-       while( giVFS_NextMountIdent == 0 || VFS_GetMountByIdent(giVFS_NextMountIdent) )
-               giVFS_NextMountIdent ++;
-       #endif
-       
-       // Set root
-       if(!gVFS_RootMount)     gVFS_RootMount = mnt;
-       
-       // Add to mount list
-       Mutex_Acquire( &glVFS_MountList );
-       {
-               tVFS_Mount      *tmp;
-               mnt->Next = NULL;
-               if(gVFS_Mounts) {
-                       for( tmp = gVFS_Mounts; tmp->Next; tmp = tmp->Next );
-                       tmp->Next = mnt;
-               }
-               else {
-                       gVFS_Mounts = mnt;
-               }
-       }
-       Mutex_Release( &glVFS_MountList );
-       
-       Log_Log("VFS", "Mounted '%s' to '%s' ('%s')", Device, MountPoint, Filesystem);
-       
-       VFS_UpdateMountFile();
-       
-       return 0;
-}
-
-/**
- * \brief Gets a mount point given the identifier
- */
-tVFS_Mount *VFS_GetMountByIdent(Uint32 MountID)
-{
-       tVFS_Mount      *mnt;
-       for(mnt = gVFS_Mounts; mnt; mnt = mnt->Next)
-       {
-               if(mnt->Identifier == MountID)
-                       return mnt;
-       }
-       return NULL;
-}
-
-/**
- * \brief Updates the mount file buffer
- * 
- * Updates the ProcFS mounts file buffer to match the current mounts list.
- */
-void VFS_UpdateMountFile(void)
-{
-        int    len = 0;
-       char    *buf;
-       tVFS_Mount      *mnt;
-       
-       // Format:
-       // <device>\t<location>\t<type>\t<options>\n
-       
-       for(mnt = gVFS_Mounts; mnt; mnt = mnt->Next)
-       {
-               len += 4 + strlen(mnt->Device) + strlen(mnt->MountPoint)
-                       + strlen(mnt->Filesystem->Name) + strlen(mnt->Options);
-       }
-       
-       buf = malloc( len + 1 );
-       len = 0;
-       for(mnt = gVFS_Mounts; mnt; mnt = mnt->Next)
-       {
-               strcpy( &buf[len], mnt->Device );
-               len += strlen(mnt->Device);
-               buf[len++] = '\t';
-               
-               strcpy( &buf[len], mnt->MountPoint );
-               len += strlen(mnt->MountPoint);
-               buf[len++] = '\t';
-               
-               strcpy( &buf[len], mnt->Filesystem->Name );
-               len += strlen(mnt->Filesystem->Name);
-               buf[len++] = '\t';
-               
-               strcpy( &buf[len], mnt->Options );
-               len += strlen(mnt->Options);
-               buf[len++] = '\n';
-       }
-       buf[len] = 0;
-       
-       SysFS_UpdateFile( giVFS_MountFileID, buf, len );
-       if( gsVFS_MountFile )   free( gsVFS_MountFile );
-       gsVFS_MountFile = buf;
-}

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