From 117e8706a86e5802afcfca850a4491127012ba85 Mon Sep 17 00:00:00 2001 From: hasslesstech Date: Fri, 16 May 2025 15:57:09 +0300 Subject: [PATCH] fix deleted directory record listing --- src/fs.c | 22 ++++++++-------------- 1 file changed, 8 insertions(+), 14 deletions(-) diff --git a/src/fs.c b/src/fs.c index 9694568..14cce7e 100644 --- a/src/fs.c +++ b/src/fs.c @@ -1938,7 +1938,7 @@ int fs_ls(void *d) read_block(dir.blocks[i], (void *) &recs); for (int k = 0; k < DIRECTORY_RECORDS_PER_BLOCK; k++) { - if (!recs[k].fname) + if (!recs[k].fname[0]) continue; pr_stdout("%s -> inode_ptr=%d\n", recs[k].fname, recs[k].inode_no); @@ -1961,7 +1961,7 @@ int fs_ls(void *d) read_block(ext.blocks[i], (void *) &recs); for (int k = 0; k < DIRECTORY_RECORDS_PER_BLOCK; k++) { - if (!recs[k].fname) + if (!recs[k].fname[0]) continue; pr_stdout("%s -> inode_ptr=%d\n", recs[k].fname, recs[k].inode_no); @@ -1996,7 +1996,7 @@ int fs_la(void *d) read_block(dir.blocks[i], (void *) &recs); for (int k = 0; k < DIRECTORY_RECORDS_PER_BLOCK; k++) { - if (!recs[k].fname) + if (!recs[k].fname[0]) continue; struct fs_inode f_inode; @@ -2031,7 +2031,7 @@ int fs_la(void *d) read_block(ext.blocks[i], (void *) &recs); for (int k = 0; k < DIRECTORY_RECORDS_PER_BLOCK; k++) { - if (!recs[k].fname) + if (!recs[k].fname[0]) continue; struct fs_inode f_inode; @@ -2058,16 +2058,10 @@ int fs_stat(void *d) { char *fname = *((char **) d); - int file_inode_ptr; - { - int *r = find_filename_in_directory(fs_cwd_inode_ptr, fname); - if (r == NULL) { - pr_err("no such file: '%s'\n", fname); - return 0; - } - - file_inode_ptr = r[2]; - free(r); + int file_inode_ptr = find_fname_in_directory(fs_cwd_inode_ptr, fname); + if (file_inode_ptr < 0) { + pr_err("no such file: '%s'\n", fname); + return 0; } struct fs_inode f;