X-Git-Url: https://git.cryptolib.org/?a=blobdiff_plain;f=test_src%2Fstring-extras.c;fp=test_src%2Fstring-extras.c;h=41e3aecb7a7d0cc6726cda06570150adb8c7a331;hb=85aee632b0799ce567b9df7a6d16f59ab1564b34;hp=0c01a048c8f4486002043f90503b4380769c7ba7;hpb=450dc954c85cb4fcb90f052222f9ab0c26194cb2;p=arm-crypto-lib.git diff --git a/test_src/string-extras.c b/test_src/string-extras.c index 0c01a04..41e3aec 100644 --- a/test_src/string-extras.c +++ b/test_src/string-extras.c @@ -28,6 +28,7 @@ #include #include #include +#include uint32_t stridentcnt(const char* a, const char* b){ uint16_t i=0; @@ -76,63 +77,85 @@ void str_reverse(char* buffer){ --j; } } - -char* ultoa(unsigned long a, char* buffer, uint8_t radix){ - if(radix<2 || radix>36){ +char* ultoa (unsigned long value, char* buffer, uint8_t radix ){ + if((radix>36) || (radix<2) || (buffer==NULL)){ return NULL; } - char* ptr=buffer; - div_t result; - if(a==0){ - ptr[0] = '0'; - ptr[1] = '\0'; - return buffer; - } - while(a){ - result = div(a, radix); - *ptr = result.rem; - if(result.rem<10){ - *ptr += '0'; + unsigned length=(unsigned)-1; + uint8_t x; + char c; + do{ + x = value%radix; + value /= radix; + if(x<10){ + c = x+ '0'; }else{ - *ptr += 'a'-10; + c = x+ 'a'; } - ++ptr; - a = result.quot; + buffer[++length] = c; + }while(value); + buffer[length+1]='\0'; + unsigned idx=0; + while(idx+136){ +char* ulltoa(unsigned long long value, char* buffer, uint8_t radix){ + if((radix>36) || (radix<2) || (buffer==NULL)){ return NULL; } - char* ptr=buffer; - uint8_t rem; - if(a==0){ - ptr[0] = '0'; - ptr[1] = '\0'; - return buffer; - } - while(a){ - rem = a % radix; - a = a / radix; - *ptr = rem; - if(rem<10){ - *ptr += '0'; + unsigned length=(unsigned)-1; + uint8_t x; + char c; + do{ + x = value%radix; + value /= radix; + if(x<10){ + c = x+ '0'; }else{ - *ptr += 'a'-10; + c = x+ 'a'; } - ++ptr; + buffer[++length] = c; + }while(value); + buffer[length+1]='\0'; + unsigned idx=0; + while(idx+136) || (radix<2) || (buffer==NULL)){ + return NULL; + } + unsigned length=(unsigned)-1; + uint8_t x; + char c; + do{ + x = value%radix; + value /= radix; + if(x<10){ + c = x+ '0'; + }else{ + c = x+ 'a'; + } + buffer[++length] = c; + }while(value); + buffer[length+1]='\0'; + unsigned idx=0; + while(idx+1