2 * Regression tests for KQEMU
3 * (c) 2005-2007 Fabrice Bellard
6 void put_string(const char *s
)
12 void put_int(unsigned int v
)
14 static const char hexchars
[] = "0123456789abcdef";
15 putchar(hexchars
[(v
>> 28) & 0xf]);
16 putchar(hexchars
[(v
>> 24) & 0xf]);
17 putchar(hexchars
[(v
>> 20) & 0xf]);
18 putchar(hexchars
[(v
>> 16) & 0xf]);
19 putchar(hexchars
[(v
>> 12) & 0xf]);
20 putchar(hexchars
[(v
>> 8) & 0xf]);
21 putchar(hexchars
[(v
>> 4) & 0xf]);
22 putchar(hexchars
[(v
>> 0) & 0xf]);
25 void *memset(void *d1
, int val
, size_t len
)
35 void *memcpy(void *d1
, const void *s1
, size_t len
)
38 const uint8_t *s
= s1
;
46 void *memmove(void *d1
, const void *s1
, size_t len
)
49 const uint8_t *s
= s1
;
65 size_t strlen(const char *s
)
68 for(s1
= s
; *s1
!= '\0'; s1
++);
72 static inline int mon_isdigit(int c
)
74 return c
>= '0' && c
<= '9';
77 #define OUTCHAR(c) (buflen > 0? (--buflen, *buf++ = (c)): 0)
79 /* from BSD ppp sources */
80 int vsnprintf(char *buf
, int buflen
, const char *fmt
, va_list args
)
83 int width
, prec
, fillch
;
84 int base
, len
, neg
, is_long
;
85 unsigned long val
= 0;
89 static const char hexchars
[] = "0123456789abcdef";
94 for (f
= fmt
; *f
!= '%' && *f
!= 0; ++f
)
100 memcpy(buf
, fmt
, len
);
115 width
= va_arg(args
, int);
118 while (mon_isdigit(c
)) {
119 width
= width
* 10 + c
- '0';
126 prec
= va_arg(args
, int);
129 while (mon_isdigit(c
)) {
130 prec
= prec
* 10 + c
- '0';
152 val
= va_arg(args
, long);
154 val
= va_arg(args
, int);
163 val
= va_arg(args
, unsigned long);
165 val
= va_arg(args
, unsigned int);
171 val
= va_arg(args
, unsigned long);
173 val
= va_arg(args
, unsigned int);
177 val
= (unsigned long) va_arg(args
, void *);
182 str
= va_arg(args
, char *);
185 num
[0] = va_arg(args
, int);
192 --fmt
; /* so %z outputs %z etc. */
197 str
= num
+ sizeof(num
);
199 while (str
> num
+ neg
) {
200 *--str
= hexchars
[val
% base
];
202 if (--prec
<= 0 && val
== 0)
214 len
= num
+ sizeof(num
) - 1 - str
;
217 if (prec
> 0 && len
> prec
)
223 if ((n
= width
- len
) > 0) {
231 memcpy(buf
, str
, len
);
239 void __attribute((format (printf
, 1, 2))) printf(const char *fmt
, ...)
244 vsnprintf(buf
, sizeof(buf
), fmt
, ap
);