Commit Graph

136 Commits

Author SHA1 Message Date
Bananymous 52309413af 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 657debc8c0 AOC2023: remove unnecessary loop 2023-12-04 17:54:10 +02:00
Bananymous 35999a5ecc AOC2023: implement day4 2023-12-04 17:51:27 +02:00
Bananymous b0ac571abe AOC2023: implement day3
Solution to second puzzle is not optimal, it definately should be
O(1) space, but I didn't want to think about it.
2023-12-03 17:07:09 +02:00
Bananymous ba0981c0e3 AOC2023: implement day2 2023-12-02 16:10:37 +02:00
Bananymous 24c79d72cd AOC2023: Cleanup day1 code 2023-12-01 13:31:55 +02:00
Bananymous 6dcab1491e AOC2023: implement day1 2023-12-01 12:38:01 +02:00
Bananymous 8f3659dcb9 AOC2023: update buildsystem 2023-12-01 12:38:01 +02:00
Bananymous 2188dc2e1c Userspace: Prepare aoc2023 environment :) 2023-12-01 01:22:53 +02:00
Bananymous ff83c52c89 init: set default termios on every username prompt
Before if e.g. Shell crashed init would have broken termios
2023-12-01 01:22:53 +02:00
Bananymous 547aeb0170 image: Remove inheritance from Netbpm
This inheritance made no sense
2023-11-29 20:56:05 +02:00
Bananymous c10dffd719 Kernel: Make internal framebuffer bpp constexpr defined in libc 2023-11-29 20:07:33 +02:00
Bananymous 21392e34cb cp: allow copying all files except directories
The old condition seemed odd. This allows taking screen shots by
copying the /dev/fb0.
2023-11-29 16:13:40 +02:00
Bananymous ea4a45aef2 Userspace: Implement basic image rendering for Netbpm
You can now render Netbpm (P6) format image to framebuffer using
`image` command. I added basic test image to
/usr/share/images/sample.ppm
2023-11-29 16:11:35 +02:00
Bananymous e3890fa7c4 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 eeadf5fff1 Userspace: Implement basic test for framebuffer mmap 2023-11-28 23:52:22 +02:00
Bananymous 816f8091a9 mmap-shared-test: Add test case for msync 2023-11-22 22:45:16 +02:00
Bananymous 6e3f176457 ls: print link targets when listing files 2023-11-11 23:17:18 +02:00
Bananymous a0fbf18d3b meminfo: better format for files without permissions 2023-11-07 02:41:01 +02:00
Bananymous 6d899aa6ce 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 382f9d9bb3 Userspace: Add quick test for global ctors and dtors 2023-10-30 11:11:10 +02:00
Bananymous 1ec341e2dd rm: add option to remove recursively 2023-10-26 02:32:49 +03:00
Bananymous 126edea119 Userspace: implement basic rm command 2023-10-25 21:45:27 +03:00
Bananymous 8bb47aee02 Kernel/LibC/Userspace: Implement mkdir and creat
Touch now uses creat insteadd of open with O_CREAT flag
2023-10-25 21:07:26 +03:00
Bananymous 9e4adc1264 cp: abort copy if write fails 2023-10-25 02:43:02 +03:00
Bananymous 7a54a088b4 Userspace: Add basic chmod command 2023-10-25 02:37:19 +03:00
Bananymous e8890062d6 Userspace: Implement basic cp
This does not support any meaningful command line arguments but
is a good start.
2023-10-25 00:07:25 +03:00
Bananymous 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
Bananymous adbbdf73c4 meminfo: fix g++ warning for oob write
g++ doesn't realize that read can only return -1
2023-10-24 16:50:21 +03:00
Bananymous f0820e6f24 Shell: Fix parsing $ with unknown character 2023-10-12 22:24:27 +03:00
Bananymous 7ce8e2d57b cat: Use write() instead of puts to print file contents
This allows printing files that contain null bytes behave more like
you would expect
2023-10-04 22:16:19 +03:00
Bananymous e780eaa45f meminfo: Print allocated physical memory percentage 2023-10-03 10:39:27 +03:00
Bananymous 44cb0af64f Shell: source $HOME/.shellrc if found on Shell startup 2023-10-03 10:39:27 +03:00
Bananymous bb0989fdef Shell: Implement sourcing scripts 2023-10-03 10:24:10 +03:00
Bananymous f0b6844feb meminfo: Add process command line to the output 2023-09-30 23:17:31 +03:00
Bananymous 797ca65c66 Kernel: Add physical memory info to /proc/{pid}/meminfo 2023-09-30 22:11:45 +03:00
Bananymous 762b7a4276 Userspace: Add meminfo command that parses /proc/{pid}/meminfo 2023-09-30 21:20:53 +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 3f164c6b82 Userspace: Implement basic test for MAP_SHARED 2023-09-29 18:59:37 +03:00
Bananymous 7a5bb6a56b Userspace: Implement cat-mmap
This behaves exactly as cat, but uses mmap to read the file.
2023-09-29 17:24:55 +03:00
Bananymous 79851394b3 Kernel/LibC/Userspace: Add SYS_POWEROFF + cli tool
You can now shutdown/reboot banan-os with the poweroff cli tool.

Reboot doesn't seem to work on qemu.
2023-09-28 12:36:47 +03:00
Bananymous 85b1252b9e Userspace: Use printf length modifiers when printing 2023-09-28 11:49:31 +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 ec2baeb276 Sync: Add some argument parsing to sync(1)
You can specify --block to make the program wait until sync is
complete.
2023-09-27 00:37:23 +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 5fae3cec2a Kernel: Implement SYS_SYNC and add sync executable to userspace
You can (and have to) manually sync disk after writes to it.
2023-09-11 01:26:27 +03:00
Bananymous 9b4e2e1e21 Kernel: Add basic dd command
This only supports if, of, bs, count and status=progress
2023-09-10 01:19:47 +03:00
Bananymous 720bc418a6 All: Clear lines with only whitspace in them 2023-09-10 00:31:42 +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 14ac1c9904 Init: use read instead of fread()
This allows actually correct behaviour. My fread implementation is
flawed. It should not return on '\n'
2023-09-07 15:47:59 +03:00