+ int64_t size = file_item->size;
+#if 1
+ int len = 1;
+ static const char *suffix[] = { "", "K", "M", "G", "T", "P" };
+ for( int64_t s=size; len<15 && (s/=10)>0; ++len );
+ int drop = len-3;
+ if( drop > 0 ) {
+ size /= ipow(10,drop);
+ int sfx = (len-1)/3;
+ int digits = (sfx+1)*3 - len;
+ int64_t frac = ipow(10,digits);
+ int mantisa = size / frac;
+ int fraction = size - mantisa*frac;
+ if( fraction )
+ sprintf(string, "%d.%0*d%s", mantisa, digits, fraction, suffix[sfx]);
+ else
+ sprintf(string, "%d%s", mantisa, suffix[sfx]);
+ }
+ else
+#endif
+ sprintf(string, "%jd", size);