区分 ls、ll 指令

This commit is contained in:
KAAAsS 2022-04-20 22:39:20 +08:00
parent 752d175228
commit b51087922a
Signed by: KAAAsS
GPG Key ID: D22F53AF662411FE

View File

@ -218,7 +218,7 @@ int fs_read_all(char *path, void **ret_buf)
return size;
}
int do_ls(char *cmdline)
int do_ls(char *cmdline, bool detail)
{
char pathbuf[BUFLEN];
char fpathbuf[BUFLEN];
@ -240,6 +240,7 @@ int do_ls(char *cmdline)
for (int i = 0; i < ret; i++) {
dirat = (struct dirent *) print_ptr;
if (detail) {
// 文件类型
char type = 'f';
if (dirat->d_type == 2) {
@ -251,6 +252,9 @@ int do_ls(char *cmdline)
int size = fs_get_size(fpathbuf);
// 输出
printf("%c %10d %s\n", type, size, dirat->d_name);
} else {
printf("%s\n", dirat->d_name);
}
print_ptr += dirat->d_reclen;
}
} else {
@ -318,7 +322,11 @@ int builtin_cmd(char *cmdline)
return !ret ? 1 : -1;
}
if (!strcmp(cmd, "ls")) {
ret = do_ls(cmdline);
ret = do_ls(cmdline, false);
return !ret ? 1 : -1;
}
if (!strcmp(cmd, "ll")) {
ret = do_ls(cmdline, true);
return !ret ? 1 : -1;
}
if (!strcmp(cmd, "echo")) {