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 коммит произвёл Paul E. McKenney
Родитель 5f493178ef
Коммит 4e383a66ac
2 изменённых файлов: 58 добавлений и 0 удалений

Просмотреть файл

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

Просмотреть файл

@ -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 */