X-Git-Url: https://git.ucc.asn.au/?a=blobdiff_plain;f=KernelLand%2FModules%2FStorage%2FLVM%2Fmain.c;h=8793d68be3cd78eda6539f1307016ef710a129f2;hb=4ebe00546574e97c5316881881f7f2562deea74b;hp=d4e9aa4060547614ba4e1e7f4bfc8e97227f0981;hpb=bf62604f78c2d8bc88cac3664e15ed02c6e6d581;p=tpg%2Facess2.git diff --git a/KernelLand/Modules/Storage/LVM/main.c b/KernelLand/Modules/Storage/LVM/main.c index d4e9aa40..8793d68b 100644 --- a/KernelLand/Modules/Storage/LVM/main.c +++ b/KernelLand/Modules/Storage/LVM/main.c @@ -17,9 +17,9 @@ int LVM_Initialise(char **Arguments); int LVM_Cleanup(void); // --- -char *LVM_Root_ReadDir(tVFS_Node *Node, int ID); + int LVM_Root_ReadDir(tVFS_Node *Node, int ID, char Dest[FILENAME_MAX]); tVFS_Node *LVM_Root_FindDir(tVFS_Node *Node, const char *Name); -char *LVM_Vol_ReadDir(tVFS_Node *Node, int ID); + int LVM_Vol_ReadDir(tVFS_Node *Node, int ID, char Dest[FILENAME_MAX]); tVFS_Node *LVM_Vol_FindDir(tVFS_Node *Node, const char *Name); size_t LVM_Vol_Read(tVFS_Node *Node, off_t Offset, size_t Length, void *Buffer); size_t LVM_Vol_Write(tVFS_Node *Node, off_t Offset, size_t Length, const void *Buffer); @@ -124,18 +124,20 @@ int LVM_Cleanup(void) // -------------------------------------------------------------------- // VFS Inteface // -------------------------------------------------------------------- -char *LVM_Root_ReadDir(tVFS_Node *Node, int ID) +int LVM_Root_ReadDir(tVFS_Node *Node, int ID, char Dest[FILENAME_MAX]) { tLVM_Vol *vol; - if( ID < 0 ) return NULL; + if( ID < 0 ) return -EINVAL; for( vol = gpLVM_FirstVolume; vol && ID --; vol = vol->Next ); - if(vol) - return strdup(vol->Name); + if(vol) { + strncpy(Dest, vol->Name, FILENAME_MAX); + return 0; + } else - return NULL; + return -ENOENT; } tVFS_Node *LVM_Root_FindDir(tVFS_Node *Node, const char *Name) { @@ -151,17 +153,22 @@ tVFS_Node *LVM_Root_FindDir(tVFS_Node *Node, const char *Name) return NULL; } -char *LVM_Vol_ReadDir(tVFS_Node *Node, int ID) +int LVM_Vol_ReadDir(tVFS_Node *Node, int ID, char Dest[FILENAME_MAX]) { tLVM_Vol *vol = Node->ImplPtr; + const char *src; if( ID < 0 || ID >= vol->nSubVolumes+1 ) - return NULL; + return -EINVAL; - if( ID == 0 ) - return strdup("ROOT"); - else - return strdup( vol->SubVolumes[ID-1]->Name ); + if( ID == 0 ) { + src = "ROOT"; + } + else { + src = vol->SubVolumes[ID-1]->Name; + } + strncpy(Dest, src, FILENAME_MAX); + return 0; } tVFS_Node *LVM_Vol_FindDir(tVFS_Node *Node, const char *Name) {