e640c6e245
Kernel, libc, userspace: Add file timestamps (atime,ctime,mtime)
2022-10-30 09:57:17 +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
09a615bd99
Kernel, libc: Expose processes' UID and GID in pstat()
2022-10-28 17:31:34 +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
c312d81de4
Kernel, libc: Add st_uid and st_gid to stat, and handle st_mode differently
2022-10-28 17:13:20 +02:00
26b20938de
Kernel, libc: Use mode in mkdir()
2022-10-28 17:11:35 +02:00
16dc227a05
Kernel: Add UID and GID fields to Task
2022-10-28 17:06:13 +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
0eb0ca4028
libc: Add an empty locale.h
2022-10-27 17:23:59 +02:00
7155cf8d6b
libc: Add alloca.h
2022-10-27 17:23:50 +02:00
703b0a1435
libc: Make tv_usec in timeval signed, as it should be
2022-10-27 17:20:46 +02:00
50cda50f01
Kernel, libc: Add F_GETFD, F_SETFD and FD_CLOEXEC
2022-10-27 17:17:24 +02:00
fcf53ef6a5
Kernel: Make waitpid() block by default unless WNOHANG is specified
2022-10-27 17:05:42 +02:00
da8a3de480
It's actually S_ISCHR in this case
2022-10-27 08:10:35 +02:00
cdb1f46b93
libc: Add S_ISDEV
2022-10-27 08:09:10 +02:00
f9dad8a8d6
Kernel, libc: Stub out struct stat.st_dev
2022-10-27 08:01:33 +02:00
9b0f6b6595
Kernel, libc: Add O_EXCL
2022-10-27 07:55:59 +02:00
211c76f920
libc: Provide a definition for timeval
2022-10-27 07:55:02 +02:00
1c35eabb2b
open(): Add a third optional mode argument
2022-10-27 07:52:57 +02:00
a3c6635f3e
Kernel, libc: Add O_APPEND and stub out O_CREAT and O_TRUNC
2022-10-27 07:43:55 +02:00
41f7232b77
Devices: Return EOF after first read for some devices
...
Still not optimal.
2022-10-26 20:54:47 +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
57658f2d3e
libc: Add EOPNOTSUPP
2022-10-25 20:28:12 +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
e457b88b04
Kernel, libc: Implement O_DIRECTORY and use that in dirent.h
2022-10-23 14:46:27 +02:00
8bf2904d74
libc: Implement a basic subset of dirent.h
2022-10-23 14:41:45 +02:00
78d72c2f0c
Kernel, libc: Add a getdents() system call
...
This is meant to be a low-level interface to implement dirent.h on top of.
2022-10-23 14:03:46 +02:00
19ee21ae5a
libc: Make string_to_integer_type static
2022-10-23 12:28:25 +02:00
35616993f8
libc: Add div(), ldiv(), and lldiv()
2022-10-23 12:26:48 +02:00
51bd7de17b
libc: Patch mman.h so libgcov builds
2022-10-23 12:10:05 +02:00
43180b777e
libc: Stub out qsort()
2022-10-23 11:19:08 +02:00
9dc8bfbdce
libc: Define a dummy FILENAME_MAX
2022-10-23 11:17:22 +02:00
bd8825231a
libc: Stub out sscanf()
2022-10-23 11:16:36 +02:00
d82238b485
libc: Add return value to ungetc()
2022-10-23 11:14:18 +02:00
d75de5f423
libc: Partially implement ungetc
2022-10-23 11:12:54 +02:00
51580bb846
libc: Add abs(), labs() and llabs()
...
Just needed to alias them to GCC builtins.
2022-10-23 11:10:26 +02:00
c02f2e128d
libc: Stub out ungetc()
2022-10-23 10:34:49 +02:00
f0eeaa25a3
libc: More inttypes.h
2022-10-23 10:31:56 +02:00
0c33fcdff2
libc: Stub out setvbuf, and add S_ISREG
2022-10-23 10:09:20 +02:00
fa35e883d7
libc: Stub out strftime
2022-10-23 10:01:03 +02:00
06f9ffc184
libc: Add EXIT_SUCCESS, EXIT_FAILURE, RAND_MAX and BUFSIZ
2022-10-22 21:39:51 +02:00
dd9b90d69d
compilation fix :)
2022-10-22 21:16:51 +02:00
7600bc5582
libc: Add strings.h
2022-10-22 21:13:22 +02:00
433b307cb2
libc: Add strcoll()
...
No locale support, this just calls strcmp()
2022-10-22 21:00:59 +02:00
4725538aa7
Tests: Add tests for memmove and memcmp + correct our memcmp implementation
2022-10-22 19:04:19 +02:00
8908faf6e2
libc: Add strchrnul()
...
Another GNU extension, it's ok.
2022-10-22 18:37:02 +02:00
503a04f0e9
libc: Add strpbrk()
2022-10-22 17:54:33 +02:00
4d71c0ef04
libc: Implement strndup()
2022-10-22 17:49:44 +02:00
ac8a23d733
wrong type :)
2022-10-22 14:40:30 +02:00
189986d23f
libc: Rename pstname() to pstatname()
...
To avoid confusion with ptsname().
2022-10-22 14:30:41 +02:00
6ac57a2f5c
libc: Add support for pstat()
2022-10-22 14:26:42 +02:00
a4eed362b6
libc: Implement fseeko() and ftello()
2022-10-22 12:41:15 +02:00
759c8a8cab
libc: Make fpos_t no longer a struct
2022-10-22 12:39:37 +02:00
9bbb5d0c07
libc: Implement strspn (with a test)
2022-10-22 12:36:31 +02:00
551d731627
libc: Add FIXME
2022-10-22 12:30:30 +02:00
063e2d5e7a
libc: Add more spacing to stdio.cpp
2022-10-22 12:21:04 +02:00
6dc51abfc8
libc: Add remove() stub
2022-10-22 12:20:05 +02:00
81c337cf9a
libc: Add struct tm and localtime(), gmtime() stubs
2022-10-22 12:17:48 +02:00
91969d4d48
libc: strtoul's endptr must not be const
2022-10-22 12:12:52 +02:00
1f5f6a5e3b
libc: Add strcspn (with a test)
2022-10-22 11:57:25 +02:00
27a18a608c
libc: Implement fgets, fgetc, getc, getchar (with buffered read IO)
2022-10-22 11:38:16 +02:00
51e024588e
libc: Update inttypes.h
...
Turns out it was incorrect.
2022-10-22 11:23:12 +02:00
0faabe02e5
Kernel, libc: Implement O_CLOEXEC
2022-10-22 10:28:02 +02:00
fb88459263
libc: Add all missing errors to strerror()
2022-10-22 10:14:40 +02:00
b2f5a0502f
Kernel, libc: Implement O_NONBLOCK
2022-10-21 21:51:03 +02:00
43073cfdbb
Add new __lc_used macro
2022-10-21 18:39:46 +02:00
fcd6d9b9f5
Add FIXME
2022-10-21 18:37:18 +02:00
bef9158450
Kernel, libc: Add isatty() and F_ISTTY to fcntl()
2022-10-21 18:34:31 +02:00
93207820b3
libc: Add a few errors to errno.h
...
As well as ino_t, which I forgot in the fstat() commit :)
2022-10-21 18:34:01 +02:00
62fa773b27
libc: Add dummy argv
2022-10-21 18:33:06 +02:00
6d7a8a0d0b
libc: Add very basic strtoul()
...
As well as returning NULL in getenv() instead of aborting.
2022-10-21 18:32:46 +02:00
bf026d0dea
libc: Add bad time() function
...
It's just an alias for clock(). Which is not good. But it's a stub, that's the point.
2022-10-21 18:32:01 +02:00
c8a37eaf70
libc: Add SIGINT define
2022-10-21 18:31:19 +02:00
fcf191aa7a
Kernel, libc: Add fstat()
2022-10-21 18:31:09 +02:00
f7cf395f71
Kernel, libc: Add access()
2022-10-20 19:03:24 +02:00
aebd860947
libc: Add stdin
...
Aka keyboard :)
2022-10-19 20:43:04 +02:00
7ec221c36d
libc: Move __luna_syscall* declarations to asm
2022-10-19 17:50:09 +02:00
5816f54293
libc: Move SYS_* constants to sys/syscall.h
2022-10-19 17:49:55 +02:00