40b078e0a2
libc: Make fread/fwrite return the number of items read/written instead of the number of bytes
2022-11-06 14:46:22 +01:00
d7692a7f59
libc: Rename fold() to lowercase() in strcasecmp and strncasecmp
2022-11-06 14:45:58 +01:00
da182f1c2f
libc: Add mktemp() and mkdtemp(), along with a test for mktemp
2022-11-05 18:07:45 +01:00
cedefaf93d
libc: Exit with -errno if we fail initialization
2022-11-05 11:56:31 +01:00
3b86f87c76
libc: Support %i in printf()
...
Which is the same as %d.
2022-11-03 16:53:19 +01:00
2cfefc25cc
libc: Stub out rename()
2022-11-03 16:52:41 +01:00
249c79f8a3
Kernel, libc: Add ioctl()
...
Right now, only the framebuffer supports this system call, to query its dimensions.
2022-11-02 20:59:42 +01:00
feab66c0d3
Kernel: Remove the paint() system call
...
That was a very old one from back in the old days. Now that the framebuffer is finally a device file,
and it can be memory-mapped by user programs for more performance,
this syscall is MORE than obsolete.
2022-11-02 20:35:06 +01:00
8f2308c80d
Kernel: Implement mmap-able device files (regular files are not mmap-able yet)
2022-11-02 20:24:07 +01:00
42a805fd60
Kernel: Move the translated keyboard to /dev/console and make /dev/kbd provide raw scancodes
2022-11-02 19:51:54 +01:00
534500cda0
Implement enough runtime for binutils to compile
2022-10-31 12:29:53 +01:00
aabff7a1d3
libc: Add mktime()
2022-10-30 20:46:25 +01:00
45f40a31d6
Remove old FIXME
2022-10-30 20:40:53 +01:00
f83c78bcad
libc: Implement gettimeofday() and instantly mark it as deprecated
2022-10-30 20:40:05 +01:00
7bd1cba1e3
libc: Stub out bsearch()
2022-10-30 20:02:03 +01:00
52d4f34f05
Kernel, libc: Implement umask()
2022-10-30 19:55:38 +01:00
0d443385e9
libc: Add system()
2022-10-30 19:43:37 +01:00
e244c150c2
Kernel, libc: Add ECHILD
2022-10-30 19:24:26 +01:00
948361bec5
printf: Show which format specifier is unknown
2022-10-30 18:08:29 +01:00
d5a6c7f27f
libc: Implement strftime()
2022-10-30 17:47:47 +01:00
6df5b8a703
Make backspace work
2022-10-30 10:08:52 +01:00
8d46c9bbe2
Kernel, libc: Fix a big bug in printf()
...
Every time printf flushes the buffer to us in sprintf() or snprintf(), we call strncat to append the data.
But we want to start from the beginning in the first flush. What if there was data already there?
Well, we just append to the old data. Which is not good, and breaks snprintf()'s maximum size policy.
This fix sets the first byte of str to NULL, to avoid this.
2022-10-30 09:53:23 +01:00
324fb42ee2
libc: Add support for the new time functionality in the kernel
2022-10-30 09:08:29 +01:00
32e09d3417
libc: Stub out more functionality so part of binutils builds
2022-10-29 09:39:12 +02:00
702cc0442c
endpwent: Close all opened instances of /etc/passwd, including those used by getpwuid() and getpwnam()
2022-10-28 21:02:55 +02:00
7d0e442cde
libc: Add /etc/passwd and the pwd.h API
...
getpwent, getpwnam, getpwuid... they may have been a pain to implement but once they work they're awesome :)
Right now passwords are stored in plaintext in the world-readable passwd file, which is not good.
But I don't have any sort of hashing implemented so it'll stay that way for now.
2022-10-28 20:55:00 +02:00
8f0e358360
libc: Add setuid, setgid, seteuid, setegid
2022-10-28 17:52:39 +02:00
acdc2d3ad7
init: Open /dev/console for appending
2022-10-28 17:31:00 +02:00
17671fd435
libc: Implement getuid, geteuid, getgid, getegid
2022-10-28 17:24:28 +02:00
1c4f1ab867
Kernel, libc: Add setuid() and setgid() system calls
2022-10-28 17:19:26 +02:00
b1729689df
libc: Open stdout and stderr write-only on init
2022-10-28 17:14:09 +02:00
26b20938de
Kernel, libc: Use mode in mkdir()
2022-10-28 17:11:35 +02:00
b2f321c0b8
libc: Parse the mode string
2022-10-28 17:02:08 +02:00
8ed0ff1381
libc: Ensure /dev/random is opened with O_CLOEXEC on init
2022-10-27 17:50:15 +02:00
d93a4062a2
libc: Do not use the heavy variadic syscall() function for wrappers
...
That function is meant more for user programs, and should still be rarely used, since it's not portable.
Instead, we already know the number of arguments. We just call __lc_fast_syscallN, which also sets errno.
2022-10-27 17:42:00 +02:00
1c35eabb2b
open(): Add a third optional mode argument
2022-10-27 07:52:57 +02:00
796d61020b
argv might be null when we're init
2022-10-26 19:22:50 +02:00
4f6333ca17
compilation fix
2022-10-26 19:17:26 +02:00
8eb986df63
libc: Add program_invocation_name
...
This is a GNU extension, but I'm fine with adding it to libc.
It's guarded by the _GNU_SOURCE feature test macro anyways.
2022-10-26 19:17:05 +02:00
7d20c507b1
Kernel, libc, userspace: Implement command-line arguments (argv)
...
The only thing missing now is for sh to pass them on.
2022-10-26 18:57:06 +02:00
9b1e50ae27
libc: Add EACCES
2022-10-25 20:29:56 +02:00
13fce2c4b3
libc: Update headers with more comments
2022-10-25 19:27:24 +02:00
af452e2b2a
Kernel, libc: Add dup2()
2022-10-25 18:58:06 +02:00
b17ff6319a
libc: compilation fix for libc's printf
2022-10-24 20:47:00 +02:00
33f6765a5c
libc: Make the userspace printf much better
2022-10-24 17:21:40 +02:00
315d2f9f24
libc: actually return buf in getcwd()
2022-10-24 17:08:40 +02:00
0dec5f7bad
libc: Add dummy getcwd()
2022-10-24 17:05:28 +02:00
b615166373
libc: Stub out tmpfile() as well as add an empty math.h
2022-10-23 18:58:48 +02:00
58b01b74e2
Kernel, libc: Add stat()
2022-10-23 18:35:32 +02:00
865018e7f8
libc: Implement dirfd, rewinddir, telldir and seekdir
2022-10-23 14:59:06 +02:00