1#include <string.h> 2#include <stdio.h> 3#include <stdlib.h> 4#include <unistd.h> 5#include <sys/types.h> 6#include <fcntl.h> 7 8/* convert console-log.txt(from flash -ndump) to bin * 9 * usage ./t2b [log.txt] */ 10 11int 12AtoH(char *arg) 13{ 14 int i, len = strlen(arg), ret=0; 15 char *p, tmpstr[32]; 16 17 for(i=0; i<len; ++i) 18 { 19 p = &arg[i]; 20 if((*p>='0') && (*p<='9')) 21 *p = *p - '0'; 22 else if((*p>='a') && (*p<='f')) 23 *p = *p - 'a' + 0xA; 24 else if((*p>='A') && (*p<='F')) 25 *p = *p - 'A' + 0xA; 26 } 27 return (arg[0] << 4 | arg[1]); 28} 29 30int 31main(int argc, char *argv[]) 32{ 33 char dst_file[20], line[100], *p, xb[2]; 34 FILE *fp_s, *fp_d; 35 unsigned char x, x6[16]; 36 int i=0; 37 int j=0; 38 39 if(!argv[1]){ 40 printf("no src file\n"); 41 return -1; 42 } else{ 43 sprintf(dst_file, "%s_v.bin", argv[1]); 44 } 45 46 if(((fp_s = fopen(argv[1], "r")) == NULL) || ((fp_d = fopen(dst_file, "w+")) == NULL)){ 47 printf("open src/dst fail\n"); 48 return -1; 49 } 50 51 while(fgets(line, sizeof(line), fp_s)!=(char*)0){ 52 if(line[8]==':' && line[9]==' '){ 53 p = line; 54 i=0; 55 memset(x6, 0, sizeof(x6)); 56 while(p){ 57 p = strtok(p, "\r\n "); 58 if(p==NULL) 59 break; 60 if(strlen(p) > 3){ 61 p+=strlen(p)+1; 62 continue; 63 } 64 xb[0] = *p; 65 xb[1] = *(p+1); 66 x = AtoH(xb); 67 x6[i++] = x; 68 p+=strlen(p)+1; 69 } 70 /* 71 for(i=0; i<16; ++i) 72 printf("%2x ", x6[i]); 73 printf(" (%d)\n", strlen(x6)); 74 if(j++ > 5) 75 break; 76 */ 77 if(*x6) 78 fwrite(x6, 1, sizeof(x6), fp_d); 79 } 80 81 } 82 83 fclose(fp_s); 84 fclose(fp_d); 85 return 0; 86} 87