git.ucc.asn.au
/
tpg
/
acess2.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
Kernel - VFS API Update - ReadDir caller provided buffer
[tpg/acess2.git]
/
KernelLand
/
Kernel
/
vfs
/
dir.c
diff --git
a/KernelLand/Kernel/vfs/dir.c
b/KernelLand/Kernel/vfs/dir.c
index
65218af
..
fab9d56
100644
(file)
--- a/
KernelLand/Kernel/vfs/dir.c
+++ b/
KernelLand/Kernel/vfs/dir.c
@@
-41,7
+41,7
@@
int VFS_MkNod(const char *Path, Uint Flags)
int pos = 0, oldpos = 0;
int next = 0;
tVFS_Node *parent;
int pos = 0, oldpos = 0;
int next = 0;
tVFS_Node *parent;
-
int
ret;
+
tVFS_Node *
ret;
ENTER("sPath xFlags", Path, Flags);
ENTER("sPath xFlags", Path, Flags);
@@
-92,6
+92,7
@@
int VFS_MkNod(const char *Path, Uint Flags)
// Create node
ret = parent->Type->MkNod(parent, name, Flags);
// Create node
ret = parent->Type->MkNod(parent, name, Flags);
+ _CloseNode(ret);
// Free allocated string
free(absPath);
// Free allocated string
free(absPath);
@@
-101,8
+102,8
@@
int VFS_MkNod(const char *Path, Uint Flags)
_CloseNode(parent);
// Return whatever the driver said
_CloseNode(parent);
// Return whatever the driver said
- LEAVE('i', ret);
- return ret;
+ LEAVE('i', ret
==NULL
);
+ return ret
==NULL
;
}
/**
}
/**
@@
-154,7
+155,7
@@
int VFS_Symlink(const char *Name, const char *Link)
int VFS_ReadDir(int FD, char *Dest)
{
tVFS_Handle *h = VFS_GetHandle(FD);
int VFS_ReadDir(int FD, char *Dest)
{
tVFS_Handle *h = VFS_GetHandle(FD);
-
char *tmp
;
+
int rv
;
//ENTER("ph pDest", h, Dest);
//ENTER("ph pDest", h, Dest);
@@
-169,23
+170,18
@@
int VFS_ReadDir(int FD, char *Dest)
}
do {
}
do {
-
tmp = h->Node->Type->ReadDir(h->Node, h->Position
);
- if(
(Uint)tmp < (Uint)VFS_MAXSKIP
)
- h->Position +=
(Uint)tmp
;
+
rv = h->Node->Type->ReadDir(h->Node, h->Position, Dest
);
+ if(
rv > 0
)
+ h->Position +=
rv
;
else
h->Position ++;
else
h->Position ++;
- } while(
tmp != NULL && (Uint)tmp < (Uint)VFS_MAXSKIP
);
+ } while(
rv > 0
);
- //LOG("tmp = '%s'", tmp);
-
- if(!tmp) {
+ if(rv < 0) {
//LEAVE('i', 0);
return 0;
}
//LEAVE('i', 0);
return 0;
}
- strcpy(Dest, tmp);
- free(tmp);
-
//LEAVE('i', 1);
return 1;
}
//LEAVE('i', 1);
return 1;
}
UCC
git Repository :: git.ucc.asn.au