2 * Hyper Operating System Application Framework
5 * @brief %jp{システムボリューム}
7 * Copyright (C) 2006-2007 by Project HOS
8 * http://sourceforge.jp/projects/hos/
14 #include "sysvol_local.h"
15 #include "system/sysapi/sysapi.h"
16 #include "system/file/drvobj.h"
20 HANDLE SysVol_Open(C_DRVOBJ *pDrvObj, const char *pszPath, int iMode)
27 self = (C_SYSVOL *)pDrvObj;
29 /* 自分自身のディレクトリを開くなら */
30 if ( *pszPath == '\0' )
35 if ( !(iMode & (FILE_OPEN_DIR | FILE_OPEN_READ)) )
41 if ( (pDir = (C_SYSVOLDIR *)SysMem_Alloc(sizeof(C_SYSVOLDIR))) == NULL )
45 FileObj_Create(&pDir->FileObj, (C_DRVOBJ *)self, NULL);
52 for ( i = 0; i < DEVVOL_MAX_DEVICE; i++ )
55 for ( iLen =0; pszPath[iLen] != '\0' && pszPath[iLen] != '/'; iLen++ )
58 if ( strncmp(pszPath, self->DevTable[i].szName, iLen) == 0 )
63 if ( i >= DEVVOL_MAX_DEVICE )
68 if ( pszPath[iLen] == '/' )
73 return DrvObj_vOpen(self->DevTable[i].pDrvObj, &pszPath[iLen], iMode);