typing a directory alone cds you to it

This commit is contained in:
IoIxD 2026-01-19 17:33:05 -07:00
commit ce504f4448
3 changed files with 18 additions and 6 deletions

View file

@ -136,6 +136,11 @@ void msh_lexer_execute(msh_lexer *lexer) {
if (msh_try_builtin(cmd, args)) {
exec_success = 1;
}
/* If the command is a folder, cd to it */
else if (msh_path_is_directory(cmd)) {
msh_builtin_cd(cmd);
exec_success = 1;
}
/* If the command is a file, first try and execute it. */
else if (msh_path_exists(cmd)) {
msh_execute(cmd, args);

View file

@ -4,6 +4,7 @@
#include <signal.h>
#include <sys/file.h>
#include <sys/stat.h>
#include <sys/wait.h>
char msh_path_seperator = '/';
@ -128,11 +129,12 @@ void msh_set_working_directory(const char *dir) { SYSCALL(chdir, dir); }
int msh_path_exists(char *file) { return SYSCALL(access, file, F_OK) == 0; };
void msh_backend_init() {
msh_linux_env_map_init();
msh_env_set("TERMF", "test");
msh_env_set("TERM", "test");
int msh_path_is_directory(char *path) {
struct stat path_stat;
SYSCALL(stat, path, &path_stat);
return S_ISDIR(path_stat.st_mode);
};
void msh_backend_init() { msh_linux_env_map_init(); };
void msh_backend_deinit() { msh_linux_env_map_deinit(); };

View file

@ -45,7 +45,12 @@ SIZE_TYPE msh_file_size(msh_file *file);
/*
* Return whether the path exists
*/
int msh_path_exists(char *file);
int msh_path_exists(char *path);
/*
* Return whether the path is a directory.
*/
int msh_path_is_directory(char *path);
/*
* Read up to x characters from file into ptr