Commit Graph

45 Commits

Author SHA1 Message Date
1e2c2fb973 Shell: Set get old termios earlier
I sourced the config file before getting old termios. Sourcing
updated the termios so old_termios was always in non canonical, non
echoing mode.
2023-10-24 19:10:53 +03:00
f0820e6f24 Shell: Fix parsing $ with unknown character 2023-10-12 22:24:27 +03:00
44cb0af64f Shell: source $HOME/.shellrc if found on Shell startup 2023-10-03 10:39:27 +03:00
bb0989fdef Shell: Implement sourcing scripts 2023-10-03 10:24:10 +03:00
Bananymous
94ce2c97be Shell: Quick fix to not freeze for multiple seconds
When sync is writing to disk, it reserves whole disk to itself.
This commit makes Shell to read username only once from getpwuid().
We used to get username every time prompt was printed.
2023-09-29 19:20:48 +03:00
Bananymous
c84b66d078 Shell: String leading and trailing whitespace from commands
This fixes a bug of inserting empty argument if command had trailing
whitespace
2023-09-28 10:28:49 +03:00
Bananymous
fc953df281 Kernel/LibC: remove PATH resoltion from kernel
I have no idea why I had made PATH environment variable parsing
to be part of the kernel. Now the shell does the parsing and
environment syscall is no longer needed.
2023-09-23 03:08:14 +03:00
Bananymous
afe95be42f Shell: Clean exit on ^D and use getchar()
Use getchar() instead of fread(&ch, 1, sizeof(char), stdin). This
is much cleaner.
2023-09-07 15:51:05 +03:00
Bananymous
b05cf9ef09 BuildSystem: Base sysroot is now distributed as a tar ball
This allows file and directory permissions work as intended.

cmake is now filled with 'sudo' but with sudo timeout this should be
fine.
2023-08-23 10:38:21 +03:00
Bananymous
a74eb357a1 Shell: hostname is not parsed from /etc/hostname 2023-08-23 10:38:21 +03:00
Bananymous
8eb71084f0 Shell: use process groups more properly 2023-08-22 14:54:50 +03:00
Bananymous
6ada36d3cb Shell/init: We now use pgrp instead of pid and init open terminal 2023-08-22 11:37:04 +03:00
Bananymous
eb98d70a0b Shell: command execution and parsing support piped commands
There is still problems with "blocking" builtin commands (time),
return value, ...
2023-08-17 12:05:38 +03:00
Bananymous
5bd7099b96 Shell: add basic printf test 2023-08-16 10:49:34 +03:00
Bananymous
0fa5401800 Shell: $? returns last return value 2023-08-15 09:17:46 +03:00
Bananymous
ba37183c9c Shell: '\u' in PS1 is replaced with username corresponding to euid 2023-08-14 14:55:23 +03:00
Bananymous
2f298a1979 Shell: ^A moves cursor to the beginning of line 2023-08-14 12:26:22 +03:00
Bananymous
9fe878bbec Shell: Print if the process exited because of a signal 2023-08-01 14:24:36 +03:00
Bananymous
5e434f5131 Kernel: Hardware exceptions now sends signals to userspace 2023-07-30 14:34:15 +03:00
Bananymous
00f1f30a08 Kernel: Userspace sets the foreground process and Shell handles ^C 2023-07-28 18:10:36 +03:00
Bananymous
adb14ba373 Kernel: Userspace signal handlers are now called one at a time
I added a syscall for telling the kernel when signal execution has
finished. We should send a random hash or id to the signal trampoline
that we would include in the syscall, so validity of signal exit can
be confirmed.
2023-07-23 13:34:53 +03:00
Bananymous
ad756c36fc Kernel/LibC: Add SYS_KILL/kill() 2023-07-21 19:27:38 +03:00
Bananymous
dcd4d0daeb Kernel/LibC: Add bareboness signals
You can now call raise() to raise a signal. Signal handlers are
not yet supported, but the handling works :)
2023-07-21 15:45:02 +03:00
Bananymous
683c2a68cd Shell: $(...) expansion works now :) 2023-07-06 23:22:57 +03:00
Bananymous
ad98181069 Shell: you can call Shell -c ... to invoke the shell as interpreter 2023-07-06 23:22:49 +03:00
Bananymous
21bd87bb07 Userspace: Shell now has 'env' for printing environment 2023-07-06 10:32:43 +03:00
Bananymous
79450df04c Userspace: Shell imporove 'time' command 2023-07-06 09:45:04 +03:00
Bananymous
7f8b7b811e Userspace: Shell now has time builtin 2023-07-06 00:39:04 +03:00
Bananymous
54f89cba33 Userspace: Shell now processes $ arguments 2023-06-19 01:39:24 +03:00
Bananymous
de88f60d1a Userspace: Shell argument parsing now appriciates quotes 2023-06-19 01:07:00 +03:00
Bananymous
f7060970e6 Userspace: Shell argument parse now results in BAN::String 2023-06-19 00:34:44 +03:00
Bananymous
e7a98ac6cc Userspace: Shell now sets SHELL environment variable 2023-06-18 23:35:51 +03:00
Bananymous
38dff41e25 Userspace: Shell processes PS1 '\~' as cwd and implement cd 2023-06-12 02:03:13 +03:00
Bananymous
b2de706693 Userspace: Shell now uses PS1 as prompt if set 2023-06-12 00:45:47 +03:00
Bananymous
e001eecb7b Userspace: add exit to shell 2023-06-09 01:51:23 +03:00
Bananymous
2c18adbddd Userspace: add ^L support for shell 2023-06-09 01:24:33 +03:00
Bananymous
064ce568c2 Kernel: add basic support for environment variables
exec functions will search files from PATH
2023-06-05 22:51:02 +03:00
Bananymous
3fc2c3529a Shell: load old termios for process execution 2023-06-05 21:12:08 +03:00
Bananymous
2f2c298c68 Shell: add bareboness utf8 support
This should work as long as TTY provides only valid utf8.
If the utf is invalid, assertion fails and the shell dies.
2023-06-05 18:55:22 +03:00
Bananymous
90e48970e6 Shell: we now support left/right arrows 2023-06-05 18:24:41 +03:00
Bananymous
9d64dbd5c2 Kernel/LibC: add SYS_STAT and stat(), lstat() 2023-06-05 14:37:14 +03:00
Bananymous
1f36ed0cf9 Userspace: Start work on proper shell 2023-06-05 01:42:57 +03:00
Bananymous
cb359a05dc BuildSystem: link libraries when they change
This also fixed the need for manual linkin on firt build
2023-05-31 23:01:40 +03:00
Bananymous
245dff8027 Shell: we now link BAN (we can't use it though) 2023-05-26 22:31:21 +03:00
Bananymous
0ab3332ad3 Userspace: Start work on shell 2023-05-26 22:31:21 +03:00