Commit Graph

674 Commits

Author SHA1 Message Date
e4982a1a5c LibC: Fix printf with alternate format and zero values 2024-09-26 15:25:16 +03:00
cea6dedccc Userspace: Compile programs and libraries with -Wall -Wextra -Werror 2024-09-26 15:20:07 +03:00
57ae74f908 Terminal: Implement more ANSI escape handling
This patch adds L and M codes for inserting and deleting lines and SGR 7
for inverting colors
2024-09-26 15:07:08 +03:00
1a6804b4b4 Terminal: Make Terminal::handle_csi() return invalidated rectangle
When I updated Terminal to only do a single invalidation after all of
input text was printed, I forgot to change handle_csi
2024-09-26 15:05:11 +03:00
82e6a3582d LibGUI: cleanup Window::shift_vertical and add copy_horizontal_slice 2024-09-26 15:00:14 +03:00
11a4e4faa2 LibImage: Add Adam7 support for PNG decoder 2024-09-26 11:47:34 +03:00
50a3533322 LibInput: Add value for ESC in key_to_utf8_ansi
This allows exiting vim when using this function for key mappings :D
2024-09-24 18:08:34 +03:00
4e9f39384a LibC: Initialize libc only once
This was breaking stuff with dynamic loader initializing libc and main
executable reinitializing it later :D
2024-09-24 17:56:12 +03:00
1b0086217c Terminal: Do scrolling in putchar if necessary
I overlooked that handling *newline* scrolls would be enough. You can
definitely scroll more if printing a lot of text which wraps to the next
line.
2024-09-23 15:00:47 +03:00
1280528e4e BuildSystem: Use -O2 for all libraries
I don't know why I had not specified optimization level for libraries.
Only LibImage was using explicit -O3. LibImage doesn't need O3 anymore
as O2 seems to be around the same speed.
2024-09-20 20:04:49 +03:00
fbb99de728 ls: Show symlink target with -l 2024-09-17 19:12:34 +03:00
a6b973003b WindowServer: chmod the correct file 2024-09-17 18:35:27 +03:00
e431e90b20 Kernel/LibC: Implement all chown family function with fchownat 2024-09-17 18:35:01 +03:00
4aa466b948 Kernel/LibC: Implement all chmod family functions using fchmodat 2024-09-17 17:19:26 +03:00
04ae53b6df Shell: Add back accidentally deleted cd and time builtins 2024-09-17 16:38:45 +03:00
3666525d24 Kernel/LibC: Implement readlink in terms of readlinkat 2024-09-17 16:38:15 +03:00
f1a4bbce53 Kernel/LibC: Implement all stat family functions with fstatat
This patch gets rid of 2 unnecessary syscalls!
2024-09-17 16:38:01 +03:00
708a720d9d Kernel: Remove SYS_OPEN
This can be done with SYS_OPENAT with fd set to AT_FDCWD
2024-09-17 16:16:47 +03:00
7177da7d62 LibC: Implement dummy get_rusage
One port seems to use this function. This dummy just reports no used CPU
time for current process nor children
2024-09-17 15:59:22 +03:00
d88ee5c9ee Kernel/LibC: Implement creat with open
This allows getting rid of unnecessary SYS_CREATE. Directory creation
still has its own syscall, but I could combine it with SYS_OPEN also.
2024-09-17 15:55:53 +03:00
a084f83f4c Kernel: Rework kernel-side ELF loading
ELFs are now loaded as MemoryRegions so they don't need special handling
anywhere. This also allows file backed COW optimizations to work. This
was not the case before.

This patch removes now obsolete LoadableELF and unused ELF files from
LibElf.
2024-09-15 23:57:34 +03:00
1a24d1839f LibInput: KeyEvent to ansi string now handles delete key
This allows Terminal emulator to also handle delete key.

The value of `\0x7F` may be wrong as qemu's serial console seems to be
sending `\e[3~`
2024-09-15 03:13:21 +03:00
c3040a04a3 Terminal: Optimize printing a lot
Terminal used to run `yes` at around 400 lines per second

This patch pumps that to over 100'000 lines per second!

There are 2 optimizations done:
  1. only invalidate window once after rendering is done
  2. if printing more than `rows()` newlines skip prior data
2024-09-15 03:12:26 +03:00
d68ad893f0 Kernel/Shell: Add support for delete key 2024-09-14 22:45:48 +03:00
4ca147699d Shell: use printf and putchar instead of fprintf and fputc 2024-09-14 22:37:09 +03:00
abed41b8fa Shell: Remove builtin tests
Test should be programs in /bin instead
2024-09-14 22:28:33 +03:00
2604a55f80 Shell: Make ctrl+c start a new command 2024-09-14 22:27:32 +03:00
7f25ddc229 userspace: Add missing alpha channels 2024-09-12 20:53:45 +03:00
97da386ed6 WindowServer: Make focused window bounce by pressing F2
This was an awesome idea by [@Dcraftbg](https://github.com/Dcraftbg)
2024-09-12 20:09:23 +03:00
c706829a91 WindowServer: Make corner-radius a variable in config file! 2024-09-12 20:07:30 +03:00
6cd246a38e WindowServer: Add support for rounded corners and transparency 2024-09-12 19:35:44 +03:00
43e88c0ae0 Terminal: Add alpha channel to colors
This doesn't do anything yet, but will when I add transparency support
for WindowServer
2024-09-12 19:34:25 +03:00
bf01b935bd WindowServer: Start Terminal with Super+Enter
this allows doing something in GUI after Terminal is closed

also WindowServer is now stopped with Super+Shift+E
2024-09-11 22:18:08 +03:00
98c011e6a6 WindowServer: Open all fds as CLOEXEC
This will allow forking the window server cleanly :D
2024-09-11 22:17:31 +03:00
86dcb5c471 init: Don't leak pwent fd to child processes 2024-09-11 22:11:05 +03:00
467ac6c365 Kernel/LibC: Implement SOCK_CLOEXEC and SOCK_NONBLOCK
This removes the need for fcntl after creating a socket :)
2024-09-11 21:59:11 +03:00
4006a04817 DynamicLoader: Don't do file backed mapping over file bounds 2024-09-11 19:30:35 +03:00
4189a1c729 LibC: Make _init and _fini weak symbols
These seem to be missing sometimes when making shared executables
2024-09-11 14:39:07 +03:00
a07cbabcb3 LibC: Define function sizes for setjmp and longjmp
dynamic linking was complaining about these not existing
2024-09-10 16:21:20 +03:00
19d16620a6 DynamicLoader: Don't do file backed mapping for filesz == 0 2024-09-05 14:50:05 +03:00
e8bcebfb8e DynamicLoader: Use file backed mmap when possible 2024-09-05 13:59:39 +03:00
6affef76b1 test-shared: Add more shared tests 2024-09-05 12:59:48 +03:00
32ba4d07e2 Userspace: Remove unnecessary mov instruction from crt0 2024-09-05 12:59:05 +03:00
ddaaf89c87 BuildSystem: Make default libc a shared library 2024-09-05 12:58:35 +03:00
9aed8dbe6b Toolchain: Build crtbeginS.o crtendS.o and shared libgcc 2024-09-05 12:58:21 +03:00
aa7e92b275 Userspace: Write a dynamic loader
This allows running executing dynamically linked executables!
2024-09-05 12:58:21 +03:00
f30947336a BuildSystem: Cleanup cmake files 2024-09-05 12:52:25 +03:00
0bb44d7b75 LibC: Fix errno to work with shared libraries 2024-09-04 21:16:04 +03:00
35743cc8e6 LibC: Compile both static and shared version of LibC
libc target is now set as an alias for libc-static
2024-09-02 21:28:02 +03:00
5f92807fdd userspace: Allow building without SSE
I had added changes that had broken compilation without sse support
2024-09-02 21:25:00 +03:00