const char *GetFileNameOnly(char *filename, int fl){ //return pointer to the filename begin (without path), if no path, return value == filename //if fl=1 crop extention char i; for (i=strlen(filename);i;i--){ if(fl && *(filename+i)=='.'){ fl=0;//crop once *(filename+i)='\x0'; } if(*(filename+i)=='\\'||*(filename+i)==':'|| *(filename+i)=='/') return filename+i+1; } return filename; } void kill8(char *line){ //kill all char with code >127 while(*line){ if((unsigned char)(*line)>127) *line=' '; line++; } } void human_number(int number, char *output) #define DOT_DISABLE 1 #define DOT_ENABLE 0 //Translate a number to the human reading form //(900000000-> ~900Mb). // Support ' ','K', 'M', 'G' !!only signed 32bits! { int up; char postfix=' '; char prefix=' '; int div=1; int first=0; int second=0; int dot=DOT_DISABLE; up=number; if (up>=0x40000000){ postfix='G' ;div = 0x40000000;} else{ if (up>=0x100000){postfix='M';div=0x100000;} else if (up>= 1024){postfix ='K';div=1024;} }; first=number/div; if (up/div <10 && (div>1)) { dot=DOT_ENABLE; second=number/(div/10)-number/div*10; }; if (!second) dot=DOT_DISABLE; if (first*div+second*(div/10)!=number) prefix='~'; if (flags.disable.accuracy) sprintf(output, "%d%c", first,postfix); else{ if (dot==DOT_ENABLE) sprintf(output, "%c%d.%d%c",prefix,first,second,postfix); else sprintf (output,"%c%d%c",prefix,first,postfix); } return; } void human_time(int number,char *line,int type){ char *pointer; int h; int m; int s; pointer=line; h=number/3600; m=(number-h*3600)/60; s=(number-h*3600-m*60); if(flags.disable.accuracy){ if (h){ sprintf(pointer, "%dh ",h); pointer+=strlen (pointer);} if (m){ sprintf(pointer,"%dm",m); pointer+=strlen(pointer);} if(!h && !m){sprintf(pointer,"%ds",s); pointer+=strlen(pointer);} }else sprintf(line,"%.2d:%.2d:%.2d",h,m,s); } void INFOsprintf (char *output, char *info[23]){ int counter; for(counter=0;counter<23;counter++) if(info[counter]) sprintf(output, "%s: %s\n",info_desc[counter],info[counter]); } int chk(const char *line, const int number){ //return OK (0) if line eqv. FOURCC number //added in 0.7.1 - support masks: //? - any char //~ - digit //` - letter int i; char l; for(i=0;i<4;i++){ l=(number&(0xFF<<(i*8)))>>(i*8); switch(line[i]){ case '~': if(l>'9' || l<'0') return -1; break; case '`': if(l>'a'&& l<'z') break; if(l>'A' && l<'Z') break; return -1; //non letter break; case '?': //just skip break; default: if(line[i]!=l) return -1; } } return 0; } void fill(char *line, const char Symbol,const int counter){ //fill a line with a "counter" "Sybol"'s. (some like strnset in Win32) int count; for(count=0;count