1static const char * const lcset = "0123456789abcdef";
2static const char * const ucset = "0123456789ABCDEF";
3
4char *
5f (char *buffer, long long value, char type)
6{
7  int base, i;
8
9  i = 128  - 1;
10  buffer[i--] = '\0';
11
12  switch (type)
13    {
14    case 'u':
15    case 'o':
16    case 'x':
17    case 'X':
18      if (type == 'u')
19	base = 10;
20      else if (type == 'o')
21	base = 8;
22      else
23	base = 16;
24
25      while (i >= 0)
26	{
27	  if (type == 'X')
28	    buffer[i--] = ucset[((unsigned long long) value) % base];
29	  else
30	    buffer[i--] = lcset[((unsigned long long) value) % base];
31
32	  if ((value = ((unsigned long long) value) / base) == 0)
33	    break;
34	}
35      break;
36    }
37
38  return &buffer[++i];
39}
40