mirror of
https://gitlab.com/sortix/sortix.git
synced 2023-02-13 20:55:38 -05:00
Fix struct kernel_dirent::d_namlen being called d_namelen.
This commit is contained in:
parent
ffff20be35
commit
021256ad8e
6 changed files with 11 additions and 11 deletions
|
@ -229,9 +229,9 @@ bool RespondReadDir(int svr, int chl, struct kernel_dirent* dirent)
|
||||||
struct fsm_resp_readdirents body;
|
struct fsm_resp_readdirents body;
|
||||||
body.ino = dirent->d_ino;
|
body.ino = dirent->d_ino;
|
||||||
body.type = dirent->d_type;
|
body.type = dirent->d_type;
|
||||||
body.namelen = dirent->d_namelen;
|
body.namelen = dirent->d_namlen;
|
||||||
return RespondMessage(svr, chl, FSM_RESP_READDIRENTS, &body, sizeof(body)) &&
|
return RespondMessage(svr, chl, FSM_RESP_READDIRENTS, &body, sizeof(body)) &&
|
||||||
RespondData(svr, chl, dirent->d_name, dirent->d_namelen);
|
RespondData(svr, chl, dirent->d_name, dirent->d_namlen);
|
||||||
}
|
}
|
||||||
|
|
||||||
void HandleRefer(int svr, int chl, struct fsm_req_refer* msg, Filesystem* fs)
|
void HandleRefer(int svr, int chl, struct fsm_req_refer* msg, Filesystem* fs)
|
||||||
|
@ -466,10 +466,10 @@ void HandleReadDir(int svr, int chl, struct fsm_req_readdirents* msg, Filesystem
|
||||||
kernel_entry.d_ino = entry->inode;
|
kernel_entry.d_ino = entry->inode;
|
||||||
kernel_entry.d_dev = 0;
|
kernel_entry.d_dev = 0;
|
||||||
kernel_entry.d_type = 0; // TODO: Support this!
|
kernel_entry.d_type = 0; // TODO: Support this!
|
||||||
kernel_entry.d_namelen = entry->name_len;
|
kernel_entry.d_namlen = entry->name_len;
|
||||||
memcpy(kernel_entry.d_name, entry->name, entry->name_len);
|
memcpy(kernel_entry.d_name, entry->name, entry->name_len);
|
||||||
size_t dname_offset = offsetof(struct kernel_dirent, d_name);
|
size_t dname_offset = offsetof(struct kernel_dirent, d_name);
|
||||||
padding[dname_offset + kernel_entry.d_namelen] = '\0';
|
padding[dname_offset + kernel_entry.d_namlen] = '\0';
|
||||||
block->Unref();
|
block->Unref();
|
||||||
inode->Unref();
|
inode->Unref();
|
||||||
RespondReadDir(svr, chl, &kernel_entry);
|
RespondReadDir(svr, chl, &kernel_entry);
|
||||||
|
|
|
@ -57,7 +57,7 @@ static int fddir_sortix_readents(fddir_sortix_t* info)
|
||||||
{
|
{
|
||||||
if ( errno != ERANGE )
|
if ( errno != ERANGE )
|
||||||
return -1;
|
return -1;
|
||||||
size_t newdirentsize = sizeof(struct kernel_dirent) + info->dirent->d_namelen + 1;
|
size_t newdirentsize = sizeof(struct kernel_dirent) + info->dirent->d_namlen + 1;
|
||||||
if ( newdirentsize < info->direntsize )
|
if ( newdirentsize < info->direntsize )
|
||||||
newdirentsize *= 2;
|
newdirentsize *= 2;
|
||||||
struct kernel_dirent* newdirent = (struct kernel_dirent*) malloc(newdirentsize);
|
struct kernel_dirent* newdirent = (struct kernel_dirent*) malloc(newdirentsize);
|
||||||
|
@ -83,7 +83,7 @@ static int fddir_sortix_read(void* user, struct dirent* dirent, size_t* size)
|
||||||
}
|
}
|
||||||
|
|
||||||
size_t provided = (user) ? *size : 0;
|
size_t provided = (user) ? *size : 0;
|
||||||
size_t needed = sizeof(struct dirent) + info->current->d_namelen + 1;
|
size_t needed = sizeof(struct dirent) + info->current->d_namlen + 1;
|
||||||
*size = needed;
|
*size = needed;
|
||||||
if ( provided < needed )
|
if ( provided < needed )
|
||||||
return 1;
|
return 1;
|
||||||
|
|
|
@ -323,7 +323,7 @@ ssize_t Descriptor::readdirents(ioctx_t* ctx, struct kernel_dirent* dirent,
|
||||||
memset(&retdirent, 0, sizeof(retdirent));
|
memset(&retdirent, 0, sizeof(retdirent));
|
||||||
retdirent.d_reclen = needed;
|
retdirent.d_reclen = needed;
|
||||||
retdirent.d_off = 0;
|
retdirent.d_off = 0;
|
||||||
retdirent.d_namelen = namelen;
|
retdirent.d_namlen = namelen;
|
||||||
if ( !ctx->copy_to_dest(dirent, &retdirent, sizeof(retdirent)) )
|
if ( !ctx->copy_to_dest(dirent, &retdirent, sizeof(retdirent)) )
|
||||||
return -1;
|
return -1;
|
||||||
if ( size < needed )
|
if ( size < needed )
|
||||||
|
|
|
@ -150,7 +150,7 @@ ssize_t Dir::readdirents(ioctx_t* ctx, struct kernel_dirent* dirent,
|
||||||
if ( size < needed )
|
if ( size < needed )
|
||||||
{
|
{
|
||||||
errno = ERANGE;
|
errno = ERANGE;
|
||||||
retdirent.d_namelen = namelen;
|
retdirent.d_namlen = namelen;
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
|
@ -158,7 +158,7 @@ ssize_t Dir::readdirents(ioctx_t* ctx, struct kernel_dirent* dirent,
|
||||||
ret = needed;
|
ret = needed;
|
||||||
retdirent.d_reclen = needed;
|
retdirent.d_reclen = needed;
|
||||||
retdirent.d_off = 0;
|
retdirent.d_off = 0;
|
||||||
retdirent.d_namelen = namelen;
|
retdirent.d_namlen = namelen;
|
||||||
retdirent.d_ino = inode->ino;
|
retdirent.d_ino = inode->ino;
|
||||||
retdirent.d_dev = inode->dev;
|
retdirent.d_dev = inode->dev;
|
||||||
retdirent.d_type = ModeToDT(inode->type);
|
retdirent.d_type = ModeToDT(inode->type);
|
||||||
|
|
|
@ -921,7 +921,7 @@ ssize_t Unode::readdirents(ioctx_t* ctx, struct kernel_dirent* dirent,
|
||||||
struct kernel_dirent entry;
|
struct kernel_dirent entry;
|
||||||
entry.d_reclen = sizeof(entry) + resp.namelen + 1;
|
entry.d_reclen = sizeof(entry) + resp.namelen + 1;
|
||||||
entry.d_off = 0;
|
entry.d_off = 0;
|
||||||
entry.d_namelen = resp.namelen;
|
entry.d_namlen = resp.namelen;
|
||||||
entry.d_dev = (dev_t) server;
|
entry.d_dev = (dev_t) server;
|
||||||
entry.d_ino = resp.ino;
|
entry.d_ino = resp.ino;
|
||||||
entry.d_type = resp.type;
|
entry.d_type = resp.type;
|
||||||
|
|
|
@ -42,7 +42,7 @@ struct kernel_dirent
|
||||||
{
|
{
|
||||||
size_t d_reclen;
|
size_t d_reclen;
|
||||||
size_t d_off;
|
size_t d_off;
|
||||||
size_t d_namelen;
|
size_t d_namlen;
|
||||||
ino_t d_ino;
|
ino_t d_ino;
|
||||||
dev_t d_dev;
|
dev_t d_dev;
|
||||||
unsigned char d_type;
|
unsigned char d_type;
|
||||||
|
|
Loading…
Add table
Reference in a new issue