diff options
author | Zheng Da <zhengda1936@gmail.com> | 2009-12-04 12:18:26 +0100 |
---|---|---|
committer | Zheng Da <zhengda1936@gmail.com> | 2009-12-04 12:18:26 +0100 |
commit | 79a5b62aba561e8eb24aa74b789ff71d5c52be5e (patch) | |
tree | 9e234144fc306ba56cc398ed45255c558aced6ea /libddekit | |
parent | b6bc230f90c7ca641f4555647649bdf681a268c1 (diff) |
Implement printf and its variant.
Diffstat (limited to 'libddekit')
-rw-r--r-- | libddekit/init.c | 2 | ||||
-rw-r--r-- | libddekit/printf.c | 40 |
2 files changed, 38 insertions, 4 deletions
diff --git a/libddekit/init.c b/libddekit/init.c index 9708ba1d..6bc9d8ff 100644 --- a/libddekit/init.c +++ b/libddekit/init.c @@ -8,7 +8,9 @@ void ddekit_init(void) { extern void linux_kmem_init (); + extern int log_init (); ddekit_init_threads(); linux_kmem_init (); + log_init (); } diff --git a/libddekit/printf.c b/libddekit/printf.c index fb13a0b4..bbd58863 100644 --- a/libddekit/printf.c +++ b/libddekit/printf.c @@ -4,9 +4,12 @@ * \date 2006-03-01 */ -#include <l4/dde/ddekit/printf.h> +#include <stdio.h> +#include <unistd.h> -#include <l4/log/l4log.h> +#include "ddekit/printf.h" + +static FILE *output; /** * Log constant string message w/o arguments @@ -15,7 +18,17 @@ */ int ddekit_print(const char *msg) { - return LOG_printf("%s", msg); + int ret; + + /* If LOG hasn't been initialized or failed its initialization, + * return the error. */ + if (output == NULL) + return -1; + + ret = fprintf (output, "%s", msg); + if (!ret) + fflush (output); + return ret; } /** @@ -42,5 +55,24 @@ int ddekit_printf(const char *fmt, ...) */ int ddekit_vprintf(const char *fmt, va_list va) { - return LOG_vprintf(fmt, va); + char *tmp = NULL; + int ret; + + ret = vasprintf (&tmp, fmt, va); + if (!ret) { + ret = ddekit_print (tmp); + free (tmp); + } + return ret; +} + +int log_init () +{ + char *log_file_name = mktemp ("/tmp/dde_log.XXXXXX"); + output = fopen (log_file_name, "a+"); + if (!output) { + error (0, errno, "open %s", log_file_name); + return -1; + } + return 0; } |