summaryrefslogtreecommitdiff
path: root/lib/uxtoa.c
blob: 8d4e0e1c0a9edb99a894af7f5f407591d3a87c58 (plain)
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
#include <stdlib.h>

#define UXTOA(type, name)                                \
	char *name(unsigned type n, char *buffer, int radix) \
	{                                                    \
		if (n == 0) {                                    \
			buffer[0] = '0';                             \
			buffer[1] = '\0';                            \
			return buffer + 1;                           \
		}                                                \
		char *start = buffer;                            \
		for (; n; n /= radix) {                          \
			*buffer++ = itoc(n % radix);                 \
		}                                                \
		char *buf_end = buffer;                          \
		*buffer-- = '\0';                                \
		while (buffer > start) {                         \
			char tmp = *start;                           \
			*start++ = *buffer;                          \
			*buffer-- = tmp;                             \
		}                                                \
		return buf_end;                                  \
	}

UXTOA(int, utoa)
UXTOA(long int, ultoa)
UXTOA(long long int, ulltoa)