Go to the source code of this file.
◆ _fdoprnt()
void _fdoprnt |
( |
char * |
, |
|
|
va_list |
, |
|
|
int(*)(int, int) |
func, |
|
|
int |
|
|
) |
| |
Definition at line 20 of file fdoprnt.c.
References _prtl10(), _prtl16(), _prtl2(), _prtl8(), _prtX16(), MAXSTR, NULL, and va_arg.
Referenced by sprintf().
46 while ((c = *fmt++) !=
'%')
57 (*func) (farg, *fmt++);
61 if ((leftjust = ((*fmt ==
'-')) ? 1 : 0))
66 fill = (*fmt ==
'0') ? *fmt++ :
' ';
78 while (
'0' <= *fmt && *fmt <=
'9')
80 fmin = fmin * 10 + *fmt++ -
'0';
94 while (
'0' <= *fmt && *fmt <=
'9')
96 fmax = fmax * 10 + *fmt++ -
'0';
102 if ((f = *fmt++) ==
'\0')
112 string[0] =
va_arg(ap,
int);
189 for (length = 0; str[length] !=
'\0'; length++)
192 if (fmin >
MAXSTR || fmin < 0)
196 if (fmax >
MAXSTR || fmax < 0)
201 if (fmax != 0 || fmin != 0)
212 leading = fmin - length;
219 if (sign ==
'-' && fill ==
'0')
221 (*func) (farg, sign);
225 for (i = 0; i < leading; i++)
227 (*func) (farg, fill);
230 if (sign ==
'-' && fill ==
' ')
232 (*func) (farg, sign);
234 for (i = 0; i < length; i++)
236 (*func) (farg, str[i]);
240 for (i = 0; i < leading; i++)
241 (*func) (farg, fill);
static void _prtl2(long num, char *str)
static void _prtl10(long num, char *str)
static void _prtX16(long num, char *str)
static void _prtl16(long num, char *str)
#define va_arg(va, type)
可変長引数の値を返し、次の引数へ進む。 「va_start()とva_end()の間」もしくは「va_copy()とva_end()の間...
static void _prtl8(long num, char *str)
◆ sprintf()
int sprintf |
( |
char * |
str, |
|
|
char * |
fmt, |
|
|
|
... |
|
) |
| |
Definition at line 12 of file sprintf.c.
References _fdoprnt(), sprntf(), va_end, and va_start.
Referenced by ascdate(), startup(), and xsh_netinfo().
void _fdoprnt(char *, va_list, int(*func)(int, int), int)
#define va_start(last, va)
va_list型を初期化し、可変長引数の使用を開始する。
#define va_end(va)
可変長引数の処理を終了する。
__builtin_va_list va_list
可変個の実引数を扱うための情報を保持するための型(__builtin_va_listはGCCに定義された型) ...
static int sprntf(int, int)
◆ sprntf()
static int sprntf |
( |
int |
acpp, |
|
|
int |
ac |
|
) |
| |
|
static |
Definition at line 34 of file sprintf.c.
Referenced by sprintf().
39 char **cpp = (
char **)acpp;
42 return (*(*cpp)++ = c);