diff options
| author | Kacper <kacper@mail.openlinux.dev> | 2025-12-07 22:22:16 +0100 |
|---|---|---|
| committer | Kacper <kacper@mail.openlinux.dev> | 2025-12-07 22:22:16 +0100 |
| commit | 8f9e448b2ef6db7cd905540c21f3c5b190e7a1e7 (patch) | |
| tree | ae0285dd15042d1e9236a5ce2e60daf65acbdca0 /lib/libc/stdio | |
| parent | fc00c656c96528112d05cf0edf8631bd5eaea446 (diff) | |
Add bin/true and bin/false implementations
- Added assembly implementations for `true` and `false` commands.
- Updated Kbuild files to include new binaries.
- Removed unused libraries and headers.
- Cleaned up makefile and unused code.
Diffstat (limited to 'lib/libc/stdio')
| -rw-r--r-- | lib/libc/stdio/Kbuild | 48 | ||||
| -rw-r--r-- | lib/libc/stdio/dtoa.c | 11 | ||||
| -rw-r--r-- | lib/libc/stdio/fdopen.c | 2 | ||||
| -rw-r--r-- | lib/libc/stdio/fflush.c | 1 | ||||
| -rw-r--r-- | lib/libc/stdio/fmemopen.c | 2 | ||||
| -rw-r--r-- | lib/libc/stdio/fopen.c | 2 | ||||
| -rw-r--r-- | lib/libc/stdio/fprintf.c | 2 | ||||
| -rw-r--r-- | lib/libc/stdio/stdin.c | 2 | ||||
| -rw-r--r-- | lib/libc/stdio/stdout.c | 2 | ||||
| -rw-r--r-- | lib/libc/stdio/vfprintf.c | 5 | ||||
| -rw-r--r-- | lib/libc/stdio/vsnprintf.c | 1 |
11 files changed, 63 insertions, 15 deletions
diff --git a/lib/libc/stdio/Kbuild b/lib/libc/stdio/Kbuild new file mode 100644 index 00000000..36339313 --- /dev/null +++ b/lib/libc/stdio/Kbuild @@ -0,0 +1,48 @@ +obj-y += asprintf.o +obj-y += clearerr.o +obj-y += dprintf.o +obj-y += dtoa.o +obj-y += fclose.o +obj-y += fdopen.o +obj-y += feof.o +obj-y += ferror.o +obj-y += fflush.o +obj-y += fgetc.o +obj-y += fgets.o +obj-y += fileno.o +obj-y += fmemopen.o +obj-y += fopen.o +obj-y += fprintf.o +obj-y += fputc.o +obj-y += fputs.o +obj-y += fread.o +obj-y += fseek.o +obj-y += ftell.o +obj-y += ftello.o +obj-y += fwrite.o +obj-y += getc.o +obj-y += getchar.o +obj-y += pclose.o +obj-y += perror.o +obj-y += popen.o +obj-y += printf.o +obj-y += putc.o +obj-y += putchar.o +obj-y += puts.o +obj-y += remove.o +obj-y += rename.o +obj-y += renameat.o +obj-y += rewind.o +obj-y += setbuf.o +obj-y += setvbuf.o +obj-y += snprintf.o +obj-y += sprintf.o +obj-y += stderr.o +obj-y += stdin.o +obj-y += stdout.o +obj-y += vasprintf.o +obj-y += vdprintf.o +obj-y += vfprintf.o +obj-y += vprintf.o +obj-y += vsnprintf.o +obj-y += vsprintf.o diff --git a/lib/libc/stdio/dtoa.c b/lib/libc/stdio/dtoa.c index 9417fa8e..9b0eea99 100644 --- a/lib/libc/stdio/dtoa.c +++ b/lib/libc/stdio/dtoa.c @@ -1598,7 +1598,9 @@ static Bigint *Balloc(int k MTd) len = (sizeof(Bigint) + (x - 1) * sizeof(ULong) + sizeof(double) - 1) / sizeof(double); - if (k <= Kmax && pmem_next - private_mem + len <= PRIVATE_mem + if (k <= Kmax && + (long)(pmem_next - private_mem) + (long)len <= + (long)PRIVATE_mem #ifdef MULTIPLE_THREADS && TI == TI1 #endif @@ -4891,7 +4893,8 @@ static char *rv_alloc(int i MTd) int j, k, *r; j = sizeof(ULong); - for (k = 0; sizeof(Bigint) - sizeof(ULong) - sizeof(int) + j <= i; + for (k = 0; + sizeof(Bigint) - sizeof(ULong) - sizeof(int) + j <= (size_t)i; j <<= 1) k++; r = (int *)Balloc(k MTa); @@ -4910,7 +4913,7 @@ static char *nrv_alloc(const char *s, char *s0, size_t s0len, char **rve, if (!s0) s0 = rv_alloc(n MTa); - else if (s0len <= n) { + else if (s0len <= (size_t)n) { rv = 0; t = rv + n; goto rve_chk; @@ -5312,7 +5315,7 @@ char *dtoa_r(double dd, int mode, int ndigits, int *decpt, int *sign, blen = sizeof(Bigint) + ((1 << ((int *)buf)[-1]) - 1) * sizeof(ULong) - sizeof(int); - } else if (blen <= i) { + } else if (blen <= (size_t)i) { buf = 0; if (rve) *rve = buf + i; diff --git a/lib/libc/stdio/fdopen.c b/lib/libc/stdio/fdopen.c index f2ce0693..23f94843 100644 --- a/lib/libc/stdio/fdopen.c +++ b/lib/libc/stdio/fdopen.c @@ -3,7 +3,7 @@ #include <unistd.h> #include <stdio.h> -weak void __stdio_cleanup(void) +__weak void __stdio_cleanup(void) { } diff --git a/lib/libc/stdio/fflush.c b/lib/libc/stdio/fflush.c index f9a2004d..9af9ca2d 100644 --- a/lib/libc/stdio/fflush.c +++ b/lib/libc/stdio/fflush.c @@ -4,6 +4,7 @@ #include <io.h> #include <errno.h> #include <string.h> +#include <fcntl.h> int fflush(FILE *stream) { diff --git a/lib/libc/stdio/fmemopen.c b/lib/libc/stdio/fmemopen.c index 1ad86f7b..6830dcbe 100644 --- a/lib/libc/stdio/fmemopen.c +++ b/lib/libc/stdio/fmemopen.c @@ -6,7 +6,7 @@ #include <stdio.h> #include <libc.h> -weak void __stdio_cleanup(void) +__weak void __stdio_cleanup(void) { } diff --git a/lib/libc/stdio/fopen.c b/lib/libc/stdio/fopen.c index 7d01fd38..1f15820b 100644 --- a/lib/libc/stdio/fopen.c +++ b/lib/libc/stdio/fopen.c @@ -7,7 +7,7 @@ #include <string.h> #include <libc.h> -weak void __stdio_cleanup(void) +__weak void __stdio_cleanup(void) { } diff --git a/lib/libc/stdio/fprintf.c b/lib/libc/stdio/fprintf.c index 4283b424..c0d14a48 100644 --- a/lib/libc/stdio/fprintf.c +++ b/lib/libc/stdio/fprintf.c @@ -6,7 +6,7 @@ int fprintf(FILE *restrict stream, const char *restrict format, ...) int r; va_list ap; va_start(ap, format); - r = vfprintf(stdout, format, ap); + r = vfprintf(stream, format, ap); va_end(ap); return r; } diff --git a/lib/libc/stdio/stdin.c b/lib/libc/stdio/stdin.c index bcc2eca6..329c9528 100644 --- a/lib/libc/stdio/stdin.c +++ b/lib/libc/stdio/stdin.c @@ -6,7 +6,7 @@ #define BUFSIZ 4096 #define _IOLBF 0x1 -weak char __stdin_buffer[0]; +__weak char __stdin_buffer[0]; struct __FILE __stdin = { .fd = STDOUT_FILENO, .flags = O_RDONLY, .buf = __stdin_buffer, diff --git a/lib/libc/stdio/stdout.c b/lib/libc/stdio/stdout.c index 7d55c3e7..3645e07d 100644 --- a/lib/libc/stdio/stdout.c +++ b/lib/libc/stdio/stdout.c @@ -6,7 +6,7 @@ #define BUFSIZ 4096 -weak char __stdout_buffer[0]; +__weak char __stdout_buffer[0]; static atomic_flag __stdio_lock = ATOMIC_FLAG_INIT; struct __FILE __stdout = { .fd = STDOUT_FILENO, .flags = O_WRONLY, diff --git a/lib/libc/stdio/vfprintf.c b/lib/libc/stdio/vfprintf.c index fb4c200e..495fb9ea 100644 --- a/lib/libc/stdio/vfprintf.c +++ b/lib/libc/stdio/vfprintf.c @@ -9,7 +9,6 @@ #include <stddef.h> #include <math.h> #include <unistd.h> -#include <wchar.h> extern char *dtoa(double, int mode, int ndigits, int *decpt, int *sign, char **rve); @@ -752,15 +751,12 @@ int vfprintf(FILE *restrict stream, const char *restrict format, va_list ap) if ((flags & FLAG_MINUS) == 0) { if (pad_char == '0' && s != NULL) { - int prefix_len = 0; - if (s[0] == '-' || s[0] == '+' || s[0] == ' ') { fwrite(s, 1, 1, stream); total_printed++; s++; l--; - prefix_len++; } if (l >= 2 && s[0] == '0' && @@ -769,7 +765,6 @@ int vfprintf(FILE *restrict stream, const char *restrict format, va_list ap) total_printed += 2; s += 2; l -= 2; - prefix_len += 2; } for (int i = 0; i < padding; i++) { diff --git a/lib/libc/stdio/vsnprintf.c b/lib/libc/stdio/vsnprintf.c index b7a59064..7afae866 100644 --- a/lib/libc/stdio/vsnprintf.c +++ b/lib/libc/stdio/vsnprintf.c @@ -3,6 +3,7 @@ #include <stdlib.h> #include <string.h> #include <stdatomic.h> +#include <fcntl.h> int vsnprintf(char *restrict s, size_t n, const char *restrict format, va_list ap) |
