diff --git a/ce/ce.c b/ce/ce.c index cf27372..0863110 100644 --- a/ce/ce.c +++ b/ce/ce.c @@ -298,7 +298,9 @@ static void ls (const char* path_string) { describe (path, &desc); if (desc.type != FS_DIR) { + printf ("ERROR '%s' is not a directory\n", path_string); volume_close (); + return; } size_t entries = desc.size; diff --git a/kernel/fs/tarfs.c b/kernel/fs/tarfs.c index a77cd53..fdbe25d 100644 --- a/kernel/fs/tarfs.c +++ b/kernel/fs/tarfs.c @@ -121,7 +121,7 @@ int tarfs_format (struct vfs_volume* volume) { int tarfs_describe (struct vfs_volume* volume, const char* path, struct desc* desc) { struct tarfs* tarfs = volume->udata; - if (strncmp (path, "/", PATH_MAX) == 0) { + if ((path[0] == '/') && (path[1] == '\0')) { desc->size = 0; desc->type = FS_DIR; diff --git a/libsystem/str_status.h b/libsystem/str_status.h index d108ed6..025b31f 100644 --- a/libsystem/str_status.h +++ b/libsystem/str_status.h @@ -18,6 +18,12 @@ static const char* str_status[] = { [ST_BAD_PATH] = "path parsing error", [ST_EXEC_ERROR] = "exec error", [ST_MOUNT_ERROR] = "mount error", + [ST_TRY_AGAIN] = "try again", + [ST_NOT_DIR] = "not a directory", + [ST_DIR_NO_ENTRIES] = "empty directory", + [ST_FORMAT_ERROR] = "filesystem formatting error", + [ST_NOT_DRV] = "not a drive device", + [ST_PARTITION_ERROR] = "partition error", }; #endif // _LIBSYSTEM_STR_STATUS_H