X-Git-Url: http://git.ipfire.org/?a=blobdiff_plain;f=util.c;h=895337fe9f2081cae53d453ff54ea43ab2c09292;hb=844f18f2517af49eb8356792c714a3f235464eb6;hp=e3a5dd6d23809067270c1b25843fdb1d928caadb;hpb=d5a8da9d4972921353701936eb653fb2f6edb19b;p=thirdparty%2Fsarg.git diff --git a/util.c b/util.c index e3a5dd6..895337f 100644 --- a/util.c +++ b/util.c @@ -602,52 +602,53 @@ char *fixnum(long long int value, int n) numlen = strlen(num); if(numlen <= 3) strcpy(abbrev,num); - else if(numlen == 4 || numlen == 7 || numlen == 10 || numlen == 13) { - memcpy(abbrev,num,1); - abbrev[1]='.'; - strncpy(abbrev+2,num+1,2); + else if (numlen%3 == 1) { + abbrev[0]=num[0]; + abbrev[1]=(UseComma) ? ',' : '.'; + abbrev[2]=num[1]; + abbrev[3]=num[2]; abbrev[4]='\0'; - if(!n) return(abbrev); - if(numlen == 4) - strcat(abbrev,"K"); - else if(numlen == 7) - strcat(abbrev,"M"); - else if(numlen == 10) - strcat(abbrev,"G"); - else if(numlen == 13) - strcat(abbrev,"T"); } - else if(numlen == 5 || numlen == 8 || numlen == 11 || numlen == 14) { - memcpy(abbrev,num,2); - abbrev[2]='.'; - strncpy(abbrev+3,num+2,2); + else if (numlen%3 == 2) { + abbrev[0]=num[0]; + abbrev[1]=num[1]; + abbrev[2]=(UseComma) ? ',' : '.'; + abbrev[3]=num[2]; + abbrev[4]=num[3]; abbrev[5]='\0'; - if(!n) return(abbrev); - if(numlen == 5) - strcat(abbrev,"K"); - else if(numlen == 8) - strcat(abbrev,"M"); - else if(numlen == 11) - strcat(abbrev,"G"); - else if(numlen == 14) - strcat(abbrev,"T"); } - else if(numlen == 6 || numlen == 9 || numlen == 12 || numlen == 15) { - memcpy(abbrev,num,3); - abbrev[3]='.'; - strncpy(abbrev+4,num+3,2); + else if (numlen%3 == 0) { + abbrev[0]=num[0]; + abbrev[1]=num[1]; + abbrev[2]=num[2]; + abbrev[3]=(UseComma) ? ',' : '.'; + abbrev[4]=num[3]; + abbrev[5]=num[4]; abbrev[6]='\0'; - if(!n) return(abbrev); - if(numlen == 6) + } + if (n) { + if (numlen <= 3) { + //no prefix + } + else if (numlen <= 6) strcat(abbrev,"K"); - else if(numlen == 9) + else if (numlen <= 9) strcat(abbrev,"M"); - else if(numlen == 12) + else if (numlen <= 12) strcat(abbrev,"G"); - else if(numlen == 15) + else if (numlen <= 15) strcat(abbrev,"T"); + else if (numlen >= 18) + strcat(abbrev,"P"); + else if (numlen <= 21) + strcat(abbrev,"E"); + else if (numlen <= 24) + strcat(abbrev,"Z"); + else if (numlen <= 27) + strcat(abbrev,"Y"); + else + strcat(abbrev,"???"); } - return(abbrev); }