X-Git-Url: https://git.cryptolib.org/?p=arm-crypto-lib.git;a=blobdiff_plain;f=test_src%2Fstring-extras.c;h=18cf67f6f5ced5fc8cbdc8d080ca1ff462bff334;hp=41e3aecb7a7d0cc6726cda06570150adb8c7a331;hb=a0b23b3327c8bc2ecd7278c95662fdebf6f15d6b;hpb=85aee632b0799ce567b9df7a6d16f59ab1564b34 diff --git a/test_src/string-extras.c b/test_src/string-extras.c index 41e3aec..18cf67f 100644 --- a/test_src/string-extras.c +++ b/test_src/string-extras.c @@ -1,7 +1,7 @@ /* string_extras.c */ /* This file is part of the ARM-Crypto-Lib. - Copyright (C) 2006-2010 Daniel Otte (daniel.otte@rub.de) + Copyright (C) 2008 Daniel Otte (daniel.otte@rub.de) This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by @@ -28,7 +28,8 @@ #include #include #include -#include + +#include "cli.h" uint32_t stridentcnt(const char* a, const char* b){ uint16_t i=0; @@ -43,8 +44,13 @@ uint32_t stridentcnt(const char* a, const char* b){ uint16_t firstword_length(const char* s){ uint16_t ret=0; - while(isgraph((uint8_t)(*s++))) + if(!s){ + return 0; + } + int c; + while(c=*s++, isgraph(c)){ ret++; + } return ret; } @@ -77,85 +83,69 @@ void str_reverse(char* buffer){ --j; } } -char* ultoa (unsigned long value, char* buffer, uint8_t radix ){ - if((radix>36) || (radix<2) || (buffer==NULL)){ + +char* ultoa(unsigned long a, char* buffer, uint8_t radix){ + if(radix<2 || radix>36){ return NULL; } - unsigned length=(unsigned)-1; - uint8_t x; - char c; - do{ - x = value%radix; - value /= radix; - if(x<10){ - c = x+ '0'; + char* ptr=buffer; + div_t result; + if(a==0){ + ptr[0] = '0'; + ptr[1] = '\0'; + return buffer; + } + while(a){ + /* toolchain bug?? + result = div(a, radix); + */ + result.quot = a/radix; + result.rem = a%radix; + *ptr = result.rem; + if(result.rem<10){ + *ptr += '0'; }else{ - c = x+ 'a'; + *ptr += 'a'-10; } - buffer[++length] = c; - }while(value); - buffer[length+1]='\0'; - unsigned idx=0; - while(idx+136) || (radix<2) || (buffer==NULL)){ + +char* ulltoa(unsigned long long a, char* buffer, uint8_t radix){ + if(radix<2 || radix>36){ return NULL; } - unsigned length=(unsigned)-1; - uint8_t x; - char c; - do{ - x = value%radix; - value /= radix; - if(x<10){ - c = x+ '0'; + char* ptr=buffer; + uint8_t rem; + unsigned long long quot; + if(a==0){ + ptr[0] = '0'; + ptr[1] = '\0'; + return buffer; + } + while(a){ + rem = a % radix; + quot = a / radix; + if(rem<10){ + rem += '0'; }else{ - c = x+ 'a'; + rem += 'a'-10; } - 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