diff options
| author | Michael Brown | 2007-01-19 02:17:23 +0100 |
|---|---|---|
| committer | Michael Brown | 2007-01-19 02:17:23 +0100 |
| commit | f4c1e564a1da2f755b25019273b20aa7964dd784 (patch) | |
| tree | b8681bf9d6903b31f00889e45f5835a8169ea5b3 /src/include/gpxe/vsprintf.h | |
| parent | Use stdio.h instead of vsprintf.h (diff) | |
| download | ipxe-f4c1e564a1da2f755b25019273b20aa7964dd784.tar.gz ipxe-f4c1e564a1da2f755b25019273b20aa7964dd784.tar.xz ipxe-f4c1e564a1da2f755b25019273b20aa7964dd784.zip | |
vsprintf.h is gPXE-specific; move it to include/gpxe
Diffstat (limited to 'src/include/gpxe/vsprintf.h')
| -rw-r--r-- | src/include/gpxe/vsprintf.h | 67 |
1 files changed, 67 insertions, 0 deletions
diff --git a/src/include/gpxe/vsprintf.h b/src/include/gpxe/vsprintf.h new file mode 100644 index 000000000..ac87c5a8b --- /dev/null +++ b/src/include/gpxe/vsprintf.h @@ -0,0 +1,67 @@ +#ifndef _GPXE_VSPRINTF_H +#define _GPXE_VSPRINTF_H + +/** @file + * + * printf() and friends + * + * Etherboot's printf() functions understand the following subset of + * the standard C printf()'s format specifiers: + * + * - Flag characters + * - '#' - Alternate form (i.e. "0x" prefix) + * - '0' - Zero-pad + * - Field widths + * - Length modifiers + * - 'hh' - Signed / unsigned char + * - 'h' - Signed / unsigned short + * - 'l' - Signed / unsigned long + * - 'll' - Signed / unsigned long long + * - 'z' - Signed / unsigned size_t + * - Conversion specifiers + * - 'd' - Signed decimal + * - 'x','X' - Unsigned hexadecimal + * - 'c' - Character + * - 's' - String + * - 'p' - Pointer + * + * Hexadecimal numbers are always zero-padded to the specified field + * width (if any); decimal numbers are always space-padded. Decimal + * long longs are not supported. + * + */ + +#include <stdint.h> +#include <stdarg.h> +#include <stdio.h> + +/** + * A printf context + * + * Contexts are used in order to be able to share code between + * vprintf() and vsnprintf(), without requiring the allocation of a + * buffer for vprintf(). + */ +struct printf_context { + /** + * Character handler + * + * @v ctx Context + * @v c Character + * + * This method is called for each character written to the + * formatted string. + */ + void ( * handler ) ( struct printf_context *ctx, unsigned int c ); + /** Length of formatted string + * + * When handler() is called, @len will be set to the number of + * characters written so far (i.e. zero for the first call to + * handler()). + */ + size_t len; +}; + +extern size_t vcprintf ( struct printf_context *ctx, const char *fmt, + va_list args ); +#endif /* _GPXE_VSPRINTF_H */ |
