X-Git-Url: https://git.ucc.asn.au/?a=blobdiff_plain;f=KernelLand%2FKernel%2Fdrv%2Ffifo.c;h=2adaec7c886d84716e5a35ad02c293846f3c68d3;hb=df224fad82532507b2801670dbb83666b69539dc;hp=cb62193a35b3921160079b497a363aab2ff51683;hpb=9dccbc6f16485ea62caa8c4153f6f878da8cbb0d;p=tpg%2Facess2.git diff --git a/KernelLand/Kernel/drv/fifo.c b/KernelLand/Kernel/drv/fifo.c index cb62193a..2adaec7c 100644 --- a/KernelLand/Kernel/drv/fifo.c +++ b/KernelLand/Kernel/drv/fifo.c @@ -26,9 +26,9 @@ typedef struct sPipe { // === PROTOTYPES === int FIFO_Install(char **Arguments); int FIFO_IOCtl(tVFS_Node *Node, int Id, void *Data); -char *FIFO_ReadDir(tVFS_Node *Node, int Id); + int FIFO_ReadDir(tVFS_Node *Node, int Id, char Dest[FILENAME_MAX]); tVFS_Node *FIFO_FindDir(tVFS_Node *Node, const char *Filename); - int FIFO_MkNod(tVFS_Node *Node, const char *Name, Uint Flags); +tVFS_Node *FIFO_MkNod(tVFS_Node *Node, const char *Name, Uint Flags); void FIFO_Reference(tVFS_Node *Node); void FIFO_Close(tVFS_Node *Node); int FIFO_Unlink(tVFS_Node *Node, const char *OldName); @@ -92,19 +92,24 @@ int FIFO_IOCtl(tVFS_Node *Node, int Id, void *Data) * \fn char *FIFO_ReadDir(tVFS_Node *Node, int Id) * \brief Reads from the FIFO root */ -char *FIFO_ReadDir(tVFS_Node *Node, int Id) +int FIFO_ReadDir(tVFS_Node *Node, int Id, char Dest[FILENAME_MAX]) { tPipe *tmp = gFIFO_NamedPipes; // Entry 0 is Anon Pipes - if(Id == 0) return strdup("anon"); + if(Id == 0) { + strcpy(Dest, "anon"); + return 0; + } // Find the id'th node while(--Id && tmp) tmp = tmp->Next; - // If node found, return it - if(tmp) return strdup(tmp->Name); - // else error return - return NULL; + // If the list ended, error return + if(!tmp) + return -EINVAL; + // Return good + strncpy(Dest, tmp->Name, FILENAME_MAX); + return 0; } /** @@ -142,7 +147,7 @@ tVFS_Node *FIFO_FindDir(tVFS_Node *Node, const char *Filename) /** * \fn int FIFO_MkNod(tVFS_Node *Node, const char *Name, Uint Flags) */ -int FIFO_MkNod(tVFS_Node *Node, const char *Name, Uint Flags) +tVFS_Node *FIFO_MkNod(tVFS_Node *Node, const char *Name, Uint Flags) { return 0; }