summaryrefslogtreecommitdiffstats
path: root/src/include/vsprintf.h
blob: 122fcc66ee64b6029b4d94ba9ce2e9baf43a1c3a (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
#ifndef VSPRINTF_H
#define VSPRINTF_H

/** @file
 *
 * printf and friends.
 *
 * Etherboot's printf() functions understand the following format
 * specifiers:
 *
 *	- Hexadecimal integers
 *		- @c %[#]x	- 4 bytes int (8 hex digits, lower case)
 *		- @c %[#]X	- 4 bytes int (8 hex digits, upper case)
 *		- @c %[#]lx	- 8 bytes long (16 hex digits, lower case)
 *		- @c %[#]lX	- 8 bytes long (16 hex digits, upper case)
 *		- @c %[#]hx	- 2 bytes int (4 hex digits, lower case)
 *		- @c %[#]hX	- 2 bytes int (4 hex digits, upper case)
 *		- @c %[#]hhx	- 1 byte int (2 hex digits, lower case)
 *		- @c %[#]hhX	- 1 byte int (2 hex digits, upper case)
 *		.
 *		If the optional # prefix is specified, the output will
 *		be prefixed with 0x (or 0X).
 *
 *	- Other integers
 *		- @c %d		- decimal int
 *	.
 *	Note that any width specification (e.g. the @c 02 in @c %02x)
 *	will be accepted but ignored.
 *
 *	- Strings and characters
 *		- @c %c		- char
 *		- @c %s		- string
 *		- @c %m		- error message text (i.e. strerror(errno))
 *
 *	- Etherboot-specific specifiers
 *		- @c %@		- IP address in ddd.ddd.ddd.ddd notation
 *		- @c %!		- MAC address in xx:xx:xx:xx:xx:xx notation
 *
 *
 * @note Unfortunately, we cannot use <tt> __attribute__ (( format (
 * printf, ... ) )) </tt> to get automatic type checking on arguments,
 * because we use non-standard format characters such as @c %! and
 * @c %@.
 *
 */

extern int sprintf ( char *buf, const char *fmt, ... );
extern int printf ( const char *fmt, ... );

#endif /* VSPRINTF_H */