summaryrefslogtreecommitdiff
path: root/lib/libc/stdio
diff options
context:
space:
mode:
Diffstat (limited to 'lib/libc/stdio')
-rw-r--r--lib/libc/stdio/Kbuild48
-rw-r--r--lib/libc/stdio/dtoa.c11
-rw-r--r--lib/libc/stdio/fdopen.c2
-rw-r--r--lib/libc/stdio/fflush.c1
-rw-r--r--lib/libc/stdio/fmemopen.c2
-rw-r--r--lib/libc/stdio/fopen.c2
-rw-r--r--lib/libc/stdio/fprintf.c2
-rw-r--r--lib/libc/stdio/stdin.c2
-rw-r--r--lib/libc/stdio/stdout.c2
-rw-r--r--lib/libc/stdio/vfprintf.c5
-rw-r--r--lib/libc/stdio/vsnprintf.c1
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)