tools/nolibc/stdio: add a minimal set of stdio functions

This only provides getchar(), putchar(), and puts().

Signed-off-by: Willy Tarreau <w@1wt.eu>
Signed-off-by: Paul E. McKenney <paulmck@kernel.org>
This commit is contained in:
Willy Tarreau 2022-02-07 17:23:30 +01:00 committed by Paul E. McKenney
parent 5f493178ef
commit 4e383a66ac
2 changed files with 58 additions and 0 deletions

View file

@ -88,6 +88,7 @@
#include "types.h"
#include "sys.h"
#include "ctype.h"
#include "stdio.h"
#include "stdlib.h"
#include "string.h"

View file

@ -0,0 +1,57 @@
/* SPDX-License-Identifier: LGPL-2.1 OR MIT */
/*
* minimal stdio function definitions for NOLIBC
* Copyright (C) 2017-2021 Willy Tarreau <w@1wt.eu>
*/
#ifndef _NOLIBC_STDIO_H
#define _NOLIBC_STDIO_H
#include "std.h"
#include "arch.h"
#include "types.h"
#include "sys.h"
#include "stdlib.h"
#include "string.h"
#ifndef EOF
#define EOF (-1)
#endif
static __attribute__((unused))
int getchar(void)
{
unsigned char ch;
if (read(0, &ch, 1) <= 0)
return EOF;
return ch;
}
static __attribute__((unused))
int putchar(int c)
{
unsigned char ch = c;
if (write(1, &ch, 1) <= 0)
return EOF;
return ch;
}
static __attribute__((unused))
int puts(const char *s)
{
size_t len = strlen(s);
ssize_t ret;
while (len > 0) {
ret = write(1, s, len);
if (ret <= 0)
return EOF;
s += ret;
len -= ret;
}
return putchar('\n');
}
#endif /* _NOLIBC_STDIO_H */