Use stdio.h instead of vsprintf.h
[people/xl0/gpxe.git] / src / include / vsprintf.h
1 #ifndef VSPRINTF_H
2 #define VSPRINTF_H
3
4 /** @file
5  *
6  * printf() and friends
7  *
8  * Etherboot's printf() functions understand the following subset of
9  * the standard C printf()'s format specifiers:
10  *
11  *      - Flag characters
12  *              - '#'           - Alternate form (i.e. "0x" prefix)
13  *              - '0'           - Zero-pad
14  *      - Field widths
15  *      - Length modifiers
16  *              - 'hh'          - Signed / unsigned char
17  *              - 'h'           - Signed / unsigned short
18  *              - 'l'           - Signed / unsigned long
19  *              - 'll'          - Signed / unsigned long long
20  *              - 'z'           - Signed / unsigned size_t
21  *      - Conversion specifiers
22  *              - 'd'           - Signed decimal
23  *              - 'x','X'       - Unsigned hexadecimal
24  *              - 'c'           - Character
25  *              - 's'           - String
26  *              - 'p'           - Pointer
27  *
28  * Hexadecimal numbers are always zero-padded to the specified field
29  * width (if any); decimal numbers are always space-padded.  Decimal
30  * long longs are not supported.
31  *
32  */
33
34 #include <stdint.h>
35 #include <stdarg.h>
36 #include <stdio.h>
37
38 /**
39  * A printf context
40  *
41  * Contexts are used in order to be able to share code between
42  * vprintf() and vsnprintf(), without requiring the allocation of a
43  * buffer for vprintf().
44  */
45 struct printf_context {
46         /**
47          * Character handler
48          *
49          * @v ctx       Context
50          * @v c         Character
51          *
52          * This method is called for each character written to the
53          * formatted string.
54          */
55         void ( * handler ) ( struct printf_context *ctx, unsigned int c );
56         /** Length of formatted string
57          *
58          * When handler() is called, @len will be set to the number of
59          * characters written so far (i.e. zero for the first call to
60          * handler()).
61          */
62         size_t len;
63 };
64
65 extern size_t vcprintf ( struct printf_context *ctx, const char *fmt,
66                          va_list args );
67 #endif /* VSPRINTF_H */