mirror of
https://github.com/EnderIce2/Fennix.git
synced 2025-05-28 15:34:31 +00:00
userspace/libc: implement vfprintf function
Signed-off-by: EnderIce2 <enderice2@protonmail.com>
This commit is contained in:
parent
b05868d120
commit
8f7938a1e5
@ -141,7 +141,7 @@ extern "C"
|
||||
char *tmpnam(char *);
|
||||
int ungetc(int, FILE *);
|
||||
int vdprintf(int, const char *restrict, va_list);
|
||||
int vfprintf(FILE *restrict, const char *restrict, va_list);
|
||||
int vfprintf(FILE *restrict stream, const char *restrict format, va_list ap);
|
||||
int vfscanf(FILE *restrict, const char *restrict, va_list);
|
||||
int vprintf(const char *restrict, va_list);
|
||||
int vscanf(const char *restrict, va_list);
|
||||
|
@ -412,7 +412,32 @@ export FILE *tmpfile(void);
|
||||
export char *tmpnam(char *);
|
||||
export int ungetc(int, FILE *);
|
||||
export int vdprintf(int, const char *restrict, va_list);
|
||||
export int vfprintf(FILE *restrict, const char *restrict, va_list);
|
||||
|
||||
export int vfprintf(FILE *restrict stream, const char *restrict format, va_list ap)
|
||||
{
|
||||
if (!stream || !(stream->flags & _i_WRITE))
|
||||
return EOF;
|
||||
|
||||
int ret = vprintf_(format, ap);
|
||||
if (ret < 0)
|
||||
{
|
||||
stream->error = 1;
|
||||
return EOF;
|
||||
}
|
||||
|
||||
const char *p = format;
|
||||
while (*p)
|
||||
{
|
||||
if (fputc(*p++, stream) == EOF)
|
||||
{
|
||||
stream->error = 1;
|
||||
return EOF;
|
||||
}
|
||||
}
|
||||
|
||||
return ret;
|
||||
}
|
||||
|
||||
export int vfscanf(FILE *restrict, const char *restrict, va_list);
|
||||
export int vprintf(const char *restrict, va_list);
|
||||
export int vscanf(const char *restrict, va_list);
|
||||
|
Loading…
x
Reference in New Issue
Block a user