summaryrefslogtreecommitdiffstats
path: root/mdk-stage1/dietlibc/lib/__lltostr.c
blob: f53dcfb80e2e665e56a3338d365de4457c063b42 (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
28
29
30
31
32
33
34
#include <string.h>

static char *num="0123456789abcdefghijklmnopqrstuvwxyz";

int __lltostr(char *s, int size, unsigned long long i, int base, char UpCase)
{
  char *tmp;
  int j=0;

  s[--size]=0;

  tmp=s+size;

  if ((base==0)||(base>36)) base=10;

  j=0;
  if (!i)
  {
    *(--tmp)='0';
    j=1;
  }

  while((tmp>s)&&(i))
  {
    tmp--;
    *tmp=num[i%base];
    if ((UpCase)&&(*tmp>96)) (*tmp)-=' ';
    i=i/base;
    j++;
  }
  memmove(s,tmp,j+1);

  return j;
}