Bananymous
67dfe0bcf3
BAN: Allow String::formatted to fail
2024-06-25 11:04:03 +03:00
Bananymous
9e1b5cbaab
BuildSystem: Cleanup CMake code to allow libc only installation
...
There was no way to just install libc which is required for stdlibc++
2024-06-21 01:45:14 +03:00
Bananymous
ad6d95ba52
BuildSystem: Rework the whole cmake build system
...
Now files are installed using the install() command instead of manually
copying files to their destinations. This allows automatic recompilation
of headers that did not work previously
2024-06-19 09:40:03 +03:00
Bananymous
318ce5dec8
All: Fix a lot of compiler warnings from header files
...
While reworking build system, header files started to report warnings.
2024-06-18 23:02:10 +03:00
Bananymous
843a6851c4
Userspace: Start work on a terminal emulator
...
Terminal is still missing some ANSI codes, cursor and pseudo terminal
support.
Shell's builtin start-gui now launches a Terminal instead of test
windows.
2024-06-03 18:04:33 +03:00
Bananymous
234051d6bc
Shell: Optimize drawing characters at the end of a command
2024-06-03 18:03:19 +03:00
Bananymous
981c0eb8bc
Shell: Only set terminal properties if STDIN is a TTY
2024-06-03 18:02:49 +03:00
Bananymous
6346d1b6c7
Shell: Add builtin command for starting window server and test windows
2024-06-02 17:27:40 +03:00
Bananymous
967f9a9174
Shell: Ignore tab as that just fucks up formatting
2024-05-07 14:16:17 +03:00
Bananymous
b979023b9d
Shell: Add test cases for stroul and strod in builtin `test-strtox`
2024-02-16 15:35:02 +02:00
Bananymous
c469d9b3ff
Shell: Add builtin test for strtol `test-strtol`
2024-02-14 22:38:16 +02:00
Bananymous
dfe5a2d665
All: Cleanup all files
...
Add newline to end of files and remove whitespace from end of lines
2024-01-24 15:53:38 +02:00
Bananymous
00d57d783e
LibC+userspace: Make everything compile with -Wall -Wextra -Werror
...
I added -Wall -Wextra -Werror as public compile flags to libc. Now
everything in userspace in compiled using these flags. I made all
necessary changes to allow compilation to work.
Only exception is execvp which has a large stack usage. Maybe it
should use malloc for the buffer but posix allows ENOMEM only when
kernel is out of memory... This can be fixed when fexecve is
implemented and there is no need for absolute path.
2023-12-10 19:20:14 +02:00
Bananymous
24243268a6
Shell: do path resolution only if command doesn't contain '/'
2023-12-07 13:34:46 +02:00
Bananymous
56008869d6
Shell: Handle keyboard input that was interrupted by signal
2023-12-06 13:04:33 +02:00
Bananymous
622007f2ee
Shell: Verify that command exists before executing it
...
This prevents page fault somewhere when executing non-existing
commands.
2023-12-04 22:57:27 +02:00
Bananymous
056586486d
Shell: make clear use \e[2J instead of \e[J
...
This makes kernel to actually clear the full screen. If framebuffer
did not fit font exactly last row would be left partially uncleared
2023-11-28 23:55:37 +02:00
Bananymous
f6c312a6b3
BuildSystem: using sysroot doesn't need root privileges anymore!
...
Sysroot is now created with fakeroot. This allows root access to be
only needed for disk image creation, since it uses loopback devices.
2023-11-04 17:50:43 +02:00
Bananymous
07f8c972b3
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
Bananymous
8c792f9c6d
Shell: Fix parsing $ with unknown character
2023-10-12 22:24:27 +03:00
Bananymous
1cd99631e1
Shell: source $HOME/.shellrc if found on Shell startup
2023-10-03 10:39:27 +03:00
Bananymous
f67ed9a66e
Shell: Implement sourcing scripts
2023-10-03 10:24:10 +03:00
Bananymous
6304388100
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
399d5338c6
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
3ba15b41a3
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
41757b5f6c
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
80e7a89f67
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
b780df8be0
Shell: hostname is not parsed from /etc/hostname
2023-08-23 10:38:21 +03:00
Bananymous
c4210b5810
Shell: use process groups more properly
2023-08-22 14:54:50 +03:00
Bananymous
2dcd4ed131
Shell/init: We now use pgrp instead of pid and init open terminal
2023-08-22 11:37:04 +03:00
Bananymous
089da2608c
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
ed5f4d64a8
Shell: add basic printf test
2023-08-16 10:49:34 +03:00
Bananymous
5a94818210
Shell: $? returns last return value
2023-08-15 09:17:46 +03:00
Bananymous
db2eca697e
Shell: '\u' in PS1 is replaced with username corresponding to euid
2023-08-14 14:55:23 +03:00
Bananymous
81d79cca61
Shell: ^A moves cursor to the beginning of line
2023-08-14 12:26:22 +03:00
Bananymous
dddfa308d7
Shell: Print if the process exited because of a signal
2023-08-01 14:24:36 +03:00
Bananymous
1d7795e22c
Kernel: Hardware exceptions now sends signals to userspace
2023-07-30 14:34:15 +03:00
Bananymous
925df39107
Kernel: Userspace sets the foreground process and Shell handles ^C
2023-07-28 18:10:36 +03:00
Bananymous
2dce0a0415
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
10169d773d
Kernel/LibC: Add SYS_KILL/kill()
2023-07-21 19:27:38 +03:00
Bananymous
c2cf98e32f
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
404b3dd44c
Shell: $(...) expansion works now :)
2023-07-06 23:22:57 +03:00
Bananymous
d04b031e30
Shell: you can call Shell -c ... to invoke the shell as interpreter
2023-07-06 23:22:49 +03:00
Bananymous
f19dc114d6
Userspace: Shell now has 'env' for printing environment
2023-07-06 10:32:43 +03:00
Bananymous
d2aabb669b
Userspace: Shell imporove 'time' command
2023-07-06 09:45:04 +03:00
Bananymous
9c3f4039a5
Userspace: Shell now has time builtin
2023-07-06 00:39:04 +03:00
Bananymous
84ecf861cd
Userspace: Shell now processes $ arguments
2023-06-19 01:39:24 +03:00
Bananymous
46a6daccfe
Userspace: Shell argument parsing now appriciates quotes
2023-06-19 01:07:00 +03:00
Bananymous
3df3c37bad
Userspace: Shell argument parse now results in BAN::String
2023-06-19 00:34:44 +03:00
Bananymous
191a24110a
Userspace: Shell now sets SHELL environment variable
2023-06-18 23:35:51 +03:00