Added a parameter for the maximum number of dirents for sys_read_dir().

git-svn-id: file:///srv/svn/repos/haiku/trunk/current@59 a95241bf-73f2-0310-859d-f6bbb57e9c96
This commit is contained in:
Axel Dörfler 2002-07-10 21:47:38 +00:00
parent f8d7610714
commit c1f7f96bbf
1 changed files with 6 additions and 6 deletions

View File

@ -209,21 +209,21 @@ user_ioctl(int fd, ulong op, void *buffer, size_t length)
ssize_t ssize_t
user_read_dir(int fd, struct dirent *buffer,size_t bufferSize) user_read_dir(int fd, struct dirent *buffer,size_t bufferSize,uint32 maxCount)
{ {
struct file_descriptor *descriptor; struct file_descriptor *descriptor;
ssize_t retval; ssize_t retval;
CHECK_USER_ADDR(buffer) CHECK_USER_ADDR(buffer)
PRINT(("user_read_dir(fd = %d, buffer = 0x%p, bufferSize = %ld)\n",fd,buffer,bufferSize)); PRINT(("user_read_dir(fd = %d, buffer = 0x%p, bufferSize = %ld, count = %d)\n",fd,buffer,bufferSize,maxCount));
descriptor = get_fd(get_current_io_context(false), fd); descriptor = get_fd(get_current_io_context(false), fd);
if (descriptor == NULL) if (descriptor == NULL)
return EBADF; return EBADF;
if (descriptor->ops->fd_read_dir) { if (descriptor->ops->fd_read_dir) {
uint32 count; uint32 count = maxCount;
retval = descriptor->ops->fd_read_dir(descriptor,buffer,bufferSize,&count); retval = descriptor->ops->fd_read_dir(descriptor,buffer,bufferSize,&count);
if (retval >= 0) if (retval >= 0)
retval = count; retval = count;
@ -389,19 +389,19 @@ sys_ioctl(int fd, ulong op, void *buffer, size_t length)
ssize_t ssize_t
sys_read_dir(int fd, struct dirent *buffer,size_t bufferSize) sys_read_dir(int fd, struct dirent *buffer,size_t bufferSize,uint32 maxCount)
{ {
struct file_descriptor *descriptor; struct file_descriptor *descriptor;
ssize_t retval; ssize_t retval;
PRINT(("sys_read_dir(fd = %d, buffer = 0x%p, bufferSize = %ld)\n",fd,buffer,bufferSize)); PRINT(("sys_read_dir(fd = %d, buffer = 0x%p, bufferSize = %ld, count = %u)\n",fd,buffer,bufferSize,maxCount));
descriptor = get_fd(get_current_io_context(false), fd); descriptor = get_fd(get_current_io_context(false), fd);
if (descriptor == NULL) if (descriptor == NULL)
return EBADF; return EBADF;
if (descriptor->ops->fd_read_dir) { if (descriptor->ops->fd_read_dir) {
uint32 count; uint32 count = maxCount;
retval = descriptor->ops->fd_read_dir(descriptor,buffer,bufferSize,&count); retval = descriptor->ops->fd_read_dir(descriptor,buffer,bufferSize,&count);
if (retval >= 0) if (retval >= 0)
retval = count; retval = count;