Stub out FILE*, stdout/stdin/stderr and implement fprintf on these
- Add FILE* - Add stdout, stdin, stderr stubs - Add fprintf that redirects to printf for stdout and stderr and fails otherwise Signed-off-by: Patrick Georgi <patrick.georgi@secunet.com> Acked-by: Stefan Reinauer <stefan.reinauer@coreboot.org> git-svn-id: svn://svn.coreboot.org/coreboot/trunk@6358 2b7e53f0-3cfb-0310-b3e9-8179ed1497e1
This commit is contained in:
parent
a4a022c941
commit
cd913bdf5c
|
@ -32,6 +32,15 @@
|
||||||
|
|
||||||
#include <stddef.h>
|
#include <stddef.h>
|
||||||
|
|
||||||
|
struct _FILE {
|
||||||
|
} _stdout, _stdin, _stderr;
|
||||||
|
|
||||||
|
typedef struct _FILE FILE;
|
||||||
|
|
||||||
|
FILE *stdout = &_stdout;
|
||||||
|
FILE *stdin = &_stdin;
|
||||||
|
FILE *stderr = &_stderr;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @defgroup printf Print functions
|
* @defgroup printf Print functions
|
||||||
* @{
|
* @{
|
||||||
|
@ -39,6 +48,7 @@
|
||||||
int snprintf(char *str, size_t size, const char *fmt, ...);
|
int snprintf(char *str, size_t size, const char *fmt, ...);
|
||||||
int sprintf(char *str, const char *fmt, ...);
|
int sprintf(char *str, const char *fmt, ...);
|
||||||
int printf(const char *fmt, ...);
|
int printf(const char *fmt, ...);
|
||||||
|
int fprintf(FILE *file, const char *fmt, ...);
|
||||||
/** @} */
|
/** @} */
|
||||||
|
|
||||||
void perror(const char *s);
|
void perror(const char *s);
|
||||||
|
@ -47,5 +57,4 @@ void perror(const char *s);
|
||||||
#define SEEK_CUR 1 /**< The seek offset is against the current position. */
|
#define SEEK_CUR 1 /**< The seek offset is against the current position. */
|
||||||
#define SEEK_END 2 /**< The seek offset is against the end of the file. */
|
#define SEEK_END 2 /**< The seek offset is against the end of the file. */
|
||||||
|
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
|
|
@ -723,6 +723,20 @@ int sprintf(char *str, const char *fmt, ...)
|
||||||
return ret;
|
return ret;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
int fprintf(FILE *file, const char *fmt, ...)
|
||||||
|
{
|
||||||
|
int ret;
|
||||||
|
if ((file == stdout) || (file == stderr)) {
|
||||||
|
va_list args;
|
||||||
|
va_start(args, fmt);
|
||||||
|
ret = vprintf(fmt, args);
|
||||||
|
va_end(args);
|
||||||
|
|
||||||
|
return ret;
|
||||||
|
}
|
||||||
|
return -1;
|
||||||
|
}
|
||||||
|
|
||||||
struct vsnprintf_data {
|
struct vsnprintf_data {
|
||||||
size_t size; /* Total space for string */
|
size_t size; /* Total space for string */
|
||||||
size_t len; /* Count of currently used characters */
|
size_t len; /* Count of currently used characters */
|
||||||
|
|
Loading…
Reference in New Issue