77 Commits

Author SHA1 Message Date
b4a6e4d56d
libluna/PathParser: Make dirname() and basename() static functions
This avoids creating a PathParser to use them, which allocates memory that won't be used.
2023-06-19 11:21:58 +02:00
0b553cadc0
libluna: Do not fault if vstring_format() is called with buf=nullptr
Instead, just discard the output and return the number of bytes formatted, as mandated by the C standard.
2023-06-19 10:44:33 +02:00
ae01a31104
kernel: Make sure the stack is 16-byte aligned on program startup
This is required by the System V ABI and fixes some movaps-related GPFs in ndisasm.
2023-06-19 10:41:32 +02:00
21cc7e3729
libluna: Rename parse_length() to parse_type() in Format.cpp 2023-06-19 01:00:05 +02:00
a2c081f219
libluna: Allow passing a base to scan_(un)signed_integer() 2023-06-19 00:58:02 +02:00
08997007f2
libluna: Stop checking initialization status on every bitmap method call
Since our asserts (expect()) are enabled on release as well, this is kinda expensive.

It's up to the caller, if they receive a null pointer dereference it's
their fault for not initializing their bitmap :)

We do still assert out-of-range indexing and stuff like that.
2023-06-18 19:28:28 +02:00
148c1c7341
libluna: Add the clear_data() method to Vector and use it to optimize Base64::decode
This method clears the Vector's data without deallocating the
backing buffer, so that it can be reused without reallocation.
2023-06-18 19:24:26 +02:00
d45e9e2a8c
libluna: Simplify the API for Utf8StateDecoder by splitting it into multiple methods 2023-06-18 18:38:01 +02:00
2f08e0f5b0
libos: Make long value arguments use '=' and make value arguments' values always required 2023-06-17 20:58:54 +02:00
592558d7ad
kernel: Add GUID partition table support 2023-06-17 12:03:37 +02:00
d589834eb7
libluna: Add HashTable 2023-06-15 15:50:04 +02:00
fd62de6474
libluna: Do not sort empty arrays; avoids a segfault 2023-06-03 11:55:46 +02:00
cc72a1655d
libc+libluna: Move libluna hooks out of libc and into a central place in libluna 2023-06-03 11:18:52 +02:00
51a5727c8d
libluna: Fix a crash in quicksort 2023-05-28 21:51:50 +02:00
b75bd4cd14
libluna: Add PathParser::has_next() 2023-05-20 16:39:18 +02:00
9bb5371e8c
libluna+libc: Add strtok_r() 2023-05-20 16:37:07 +02:00
30d1dad149
libluna: Let String::join take a vector of StringViews instead of Strings 2023-05-20 12:46:33 +02:00
e098a3269a
libluna: Treat a negative precision as if precision was omitted 2023-05-13 12:40:03 +02:00
38541e22e9
libluna: Fix flag shenanigans in cstyle_format
Finally, zero-pad and left-align work properly!
2023-05-13 12:39:31 +02:00
5911b052dc
libluna: Add more options to to_dynamic_unit()
Also, make the output look more like how it is on linux.
2023-05-13 12:01:09 +02:00
4a764bc315
tests+libluna: Start testing Format.cpp 2023-05-11 16:56:28 +02:00
77560bbc3e
kernel+tools: Allow loading files with different owners + add a more dynamic install script 2023-05-06 12:11:35 +02:00
58eb2d7703
libc: Print failed assertions to stderr instead of stdout
This removes two FIXMEs from the time there was no stderr.
2023-05-04 16:37:13 +02:00
d9b7e8edc0
init: Read and launch service files in order using sort() 2023-05-02 20:56:28 +02:00
dcd93cce3a
libluna: Add a sort() function 2023-05-02 20:56:27 +02:00
052ae4902e
libluna: Remove EFIXME and make others declare error_string() and error_name()
Closes .
2023-05-02 10:51:53 +02:00
7058ec945a
libluna: Use a String for name and handle prefix correctly in TarStream 2023-05-02 10:51:53 +02:00
6982a8c07e
libluna: Make String::from_string_view handle non-null-terminated strings properly 2023-05-02 10:51:52 +02:00
1444cbb3df
libluna: Allow constructing a StringView from a string that might not be null-terminated 2023-05-02 10:51:52 +02:00
1d6a39c924
libluna: Make String::split() inline 2023-05-01 20:05:10 +02:00
df590f4e26
libluna: Add String::join() 2023-05-01 19:29:17 +02:00
8adfb6fdb9
libluna: Leave String in a valid state when moved 2023-04-28 21:16:43 +02:00
c5a867d81c
libluna: Add wcscmp 2023-04-28 20:00:26 +02:00
15dcd6ad15
libluna: Check the whole string in Utf8StringDecoder::code_points() 2023-04-28 20:00:14 +02:00
b4a5aff071
libluna: Fix UTF-8 encoding 2023-04-28 19:59:40 +02:00
b1e400d795
libluna: Allow callers to optimize heap allocations by telling us they won't resize the returned memory
strdup() now does this. If someone resizes strdup()-ed memory, nothing bad will happen, they will just take a small performance hit the first time.

But I think realloc-ing strdup()-ed memory is rare, that's why I did this.
2023-04-27 17:36:25 +02:00
e1ac9473a2
libluna: If allowing garbage chars while decoding Base64, skip them after the padding instead of erroring out 2023-04-26 22:32:24 +02:00
b48d1024a8
libluna: Add Base64 encoding and decoding code 2023-04-26 20:57:48 +02:00
37547ec640
libluna: Run lint scripts 2023-04-23 10:53:48 +02:00
dcc6bbf055
libluna: Add String::trim 2023-04-22 15:19:07 +02:00
fb79e12248
StringView: Add split_once and to_uint 2023-04-20 20:08:49 +02:00
0058df9f01
libluna: Handle * characters correctly in cstyle_format 2023-04-19 19:05:09 +02:00
3b4214c8be
dirname: Parse one-character paths properly 2023-04-16 11:25:47 +02:00
60c6e764a4
libos+apps: Add some missing functionality to File and eliminate any trace of C from cat and edit 2023-04-13 17:31:21 +02:00
193d63c81b
libluna+libc: Add strpbrk() 2023-04-12 18:42:25 +02:00
427662d5f1
kernel+libc: Add getcwd() 2023-04-11 22:45:13 +02:00
2a967f4b8b
kernel+libc: Add chdir() 2023-04-11 22:15:21 +02:00
fe348d56c0
String+StringView: Add split() 2023-04-07 15:14:46 +02:00
0f678f845c
String: Add operator= 2023-04-07 12:14:21 +02:00
4e48d024d9
libluna: Add StringBuilder 2023-04-07 11:53:52 +02:00