| 274 | } |
| 275 | |
| 276 | static char * |
| 277 | d2s(intmax_t x, char sign, char *s, size_t *slen_p) { |
| 278 | bool neg; |
| 279 | |
| 280 | if ((neg = (x < 0))) { |
| 281 | x = -x; |
| 282 | } |
| 283 | s = u2s(x, 10, false, s, slen_p); |
| 284 | if (neg) { |
| 285 | sign = '-'; |
| 286 | } |
| 287 | switch (sign) { |
| 288 | case '-': |
| 289 | if (!neg) { |
| 290 | break; |
| 291 | } |
| 292 | /* Fall through. */ |
| 293 | case ' ': |
| 294 | case '+': |
| 295 | s--; |
| 296 | (*slen_p)++; |
| 297 | *s = sign; |
| 298 | break; |
| 299 | default: not_reached(); |
| 300 | } |
| 301 | return s; |
| 302 | } |
| 303 | |
| 304 | static char * |
| 305 | o2s(uintmax_t x, bool alt_form, char *s, size_t *slen_p) { |