13d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby#include <sys/types.h> 23d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby#include <sys/stat.h> 33d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby#include <unistd.h> 43d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby#include <fcntl.h> 53d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby#include <dlfcn.h> 63d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby#include <stdio.h> 73d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby#include <string.h> 83d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby#include <stdlib.h> 93d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby#include <dirent.h> 103d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby 113d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby#define MAX_STRING_LENGTH 255 123d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby 133d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby 143d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hambybool IsEnd(int handler) 153d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby{ 163d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby int nPos; 173d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby 183d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby nPos = lseek(handler,0,SEEK_CUR); 193d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby 203d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby if ( nPos < 0 ) 213d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby return true; // means some error 223d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby 233d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby struct stat st; 243d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby if(fstat(handler, &st) < 0) 253d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby return true; 263d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby 273d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby if ( st.st_size == nPos ) 283d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby return true; 293d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby else 303d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby return false; 313d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby} 323d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby 333d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby 343d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hambychar* ReadLine(int handler, char* s, int size ) 353d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby{ 363d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby 373d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby char c = 0; 383d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby int nPos = 0; 393d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby 403d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby while ( read(handler, &c, 1 ) != -1 && !IsEnd(handler) ) 413d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby { 423d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby s[nPos] = c; 433d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby nPos++; 443d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby 453d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby if ( c == '\n' ) 463d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby break; 473d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby } 483d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby s[nPos] = 0; 493d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby return s; 503d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby} 513d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby 523d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby 533d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hambyvoid ConvertFile(const char * pPath, const char * pFileName, const char * pExtension, bool bTextFile) 543d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby{ 553d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby 563d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby 573d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby char full_path_in[MAX_STRING_LENGTH]; 583d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby char full_path_out_c[MAX_STRING_LENGTH]; 593d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby char full_path_out_h[MAX_STRING_LENGTH]; 603d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby char signature[MAX_STRING_LENGTH]; 613d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby char str[MAX_STRING_LENGTH]; 623d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby char str_size[20]; 633d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby int size; 643d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby 653d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby int len = pExtension == NULL ? 0 : strlen(pExtension)+1; 663d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby 673d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby strcpy(full_path_in,pPath); 683d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby strcat(full_path_in,"/"); 693d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby strcat(full_path_in,pFileName); 703d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby 713d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby memset(signature,0,MAX_STRING_LENGTH); 723d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby memset(str,0,MAX_STRING_LENGTH); 733d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby 743d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby strncpy(signature,pFileName,strlen(pFileName)-len); 753d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby 763d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby int file_handler_in; 773d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby file_handler_in = open(full_path_in, O_RDONLY, S_IRUSR | S_IWUSR | S_IRGRP | S_IWGRP ); 783d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby if ( file_handler_in == -1 ) 793d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby { 803d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby printf("Unable open file %s\n",full_path_in); 813d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby return; 823d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby } 833d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby 843d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby struct stat st; 853d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby if(fstat(file_handler_in, &st) < 0) 863d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby { 873d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby printf("Unable get size of file %s\n",full_path_in); 883d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby return; 893d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby } 903d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby 913d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby size = st.st_size; 923d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby 933d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby if ( pExtension ) 943d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby { 953d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby strcat(signature,"_"); 963d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby strcat(signature,pExtension); 973d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby } 983d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby 993d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby strcpy(full_path_out_c,signature); 1003d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby strcpy(full_path_out_h,signature); 1013d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby 1023d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby strcat(full_path_out_c,".c"); 1033d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby strcat(full_path_out_h,".h"); 1043d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby 1053d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby strcpy(str,"#include \""); 1063d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby strcat(str,signature); 1073d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby strcat(str,".h\"\n\n#ifdef __cplusplus\nextern \"C\" {\n#endif\n\n"); 1083d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby strcat(str,"static UINT8 "); 1093d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby strcat(str,signature); 1103d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby strcat(str,"[] = {\n"); 1113d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby 1123d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby int file_handler_c; 1133d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby int file_handler_h; 1143d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby 1153d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby file_handler_c = open(full_path_out_c, O_WRONLY | O_TRUNC | O_CREAT, S_IRUSR | S_IWUSR | S_IRGRP | S_IWGRP ); 1163d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby if ( file_handler_c == -1 ) 1173d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby { 1183d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby printf("Unable open file %s\n",full_path_out_c); 1193d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby return; 1203d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby } 1213d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby 1223d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby 1233d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby file_handler_h = open(full_path_out_h, O_WRONLY | O_TRUNC | O_CREAT, S_IRUSR | S_IWUSR | S_IRGRP | S_IWGRP ); 1243d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby if ( file_handler_h == -1 ) 1253d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby { 1263d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby printf("Unable open file %s\n",full_path_out_h); 1273d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby return; 1283d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby } 1293d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby 1303d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby write(file_handler_c,str,strlen(str)); 1313d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby 1323d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby int current_byte_in_line = 0; 1333d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby int current_byte = 0; 1343d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby char hex_byte[20]; 1353d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby int i; 1363d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby 1373d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby if ( pExtension && strcmp(pExtension,"bmdf") == 0 ) 1383d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby { 1393d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby int value = 0; 1403d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby unsigned char value1[4]; 1413d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby 1423d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby read(file_handler_in,(unsigned char*)value1,4); 1433d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby if ( value1[0] == '[' && (value1[1] == '/' || value1[2] == '.') ) 1443d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby { 1453d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby printf("BMDF: file %s not recognized as a bmdf file\n",full_path_in); 1463d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby return; 1473d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby } 1483d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby 1493d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby for (i=0; i<4; i++) 1503d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby { 1513d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby value |= value1[i] << (i*8); 1523d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby } 1533d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby if ( value != size ) 1543d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby { 1553d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby printf("corrupted mdf file %s ,size %d\n",full_path_in,value); 1563d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby return; 1573d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby } 1583d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby printf("mdf file %s ,size %d\n",full_path_in,value); 1593d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby lseek(file_handler_in,0,SEEK_SET); 1603d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby } 1613d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby 1623d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby 1633d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby if ( bTextFile == true ) 1643d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby { 1653d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby char line[300]; 1663d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby int new_size = 0; 1673d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby int line_len = 0; 1683d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby while ( !IsEnd(file_handler_in) ) 1693d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby { 1703d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby ReadLine(file_handler_in,line,300); 1713d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby if ( line[0] == '#' ) 1723d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby continue; 1733d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby 1743d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby line_len = strlen(line); 1753d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby while ( line_len > 0 && (line[line_len-1]=='\r' || line[line_len-1]=='\n' || 1763d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby line[line_len-1]==' ' || line[line_len-1]=='\t' ) ) 1773d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby line[--line_len]='\0'; 1783d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby 1793d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby if ( line_len == 0 ) 1803d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby continue; 1813d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby 1823d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby char * new_line = line; 1833d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby 1843d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby while ( ( *new_line == ' ' || *new_line == '\t') && *new_line != '\0' ) 1853d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby new_line ++; 1863d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby 1873d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby line_len = strlen(new_line); 1883d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby 1893d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby if ( line_len == 0 ) 1903d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby continue; 1913d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby 1923d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby line[line_len] = '\0'; 1933d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby for (i = 0; i<=line_len; i++) 1943d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby { 1953d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby if ( line[i] == '\t' ) 1963d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby line[i] = ' '; 1973d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby current_byte_in_line++; 1983d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby new_size++; 1993d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby if ( i < line_len ) 2003d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby { 2013d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby if ( current_byte_in_line != 30 ) 2023d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby sprintf(hex_byte,"%#4x,",line[i]); 2033d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby else 2043d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby { 2053d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby sprintf(hex_byte,"%#4x,\n",line[i]); 2063d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby current_byte_in_line = 0; 2073d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby } 2083d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby } 2093d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby else 2103d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby { 2113d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby if ( IsEnd(file_handler_in) ) 2123d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby sprintf(hex_byte,"%#4x\n",line[i]); 2133d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby else 2143d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby { 2153d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby if ( current_byte_in_line != 30 ) 2163d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby sprintf(hex_byte,"%#4x,",line[i]); 2173d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby else 2183d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby { 2193d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby sprintf(hex_byte,"%#4x,\n",line[i]); 2203d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby current_byte_in_line = 0; 2213d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby } 2223d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby } 2233d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby } 2243d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby write(file_handler_c,hex_byte,strlen(hex_byte)); 2253d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby } 2263d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby } 2273d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby size = new_size; 2283d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby } 2293d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby else 2303d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby { 2313d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby 2323d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby for (int i=0; i<size; i++) 2333d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby { 2343d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby read(file_handler_in,¤t_byte,1); 2353d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby current_byte_in_line++; 2363d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby if ( i != size - 1 ) 2373d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby { 2383d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby if ( current_byte_in_line != 30 ) 2393d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby sprintf(hex_byte,"%#4x,",current_byte); 2403d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby else 2413d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby { 2423d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby sprintf(hex_byte,"%#4x,\n",current_byte); 2433d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby current_byte_in_line = 0; 2443d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby } 2453d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby } 2463d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby else 2473d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby sprintf(hex_byte,"%#4x\n",current_byte); 2483d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby write(file_handler_c,hex_byte,strlen(hex_byte)); 2493d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby } 2503d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby } 2513d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby 2523d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby strcpy(str,"};\n\n"); 2533d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby 2543d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby write(file_handler_c,str,strlen(str)); 2553d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby 2563d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby sprintf(str_size,"%d",size); 2573d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby 2583d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby strcpy(str,"#ifndef "); 2593d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby strcat(str,signature); 2603d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby strcat(str,"_H\n#define "); 2613d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby strcat(str,signature); 2623d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby strcat(str,"_H\n\n#include \"xpl_Types.h\"\n\n#ifdef __cplusplus\nextern \"C\" {\n#endif\n\n"); 2633d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby 2643d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby write(file_handler_h,str,strlen(str)); 2653d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby 2663d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby 2673d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby strcpy(str,"const UINT8 * dmGet_"); 2683d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby strcat(str,signature); 2693d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby strcat(str,"(UINT32 * size)"); 2703d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby 2713d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby write(file_handler_h,str,strlen(str)); 2723d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby write(file_handler_c,str,strlen(str)); 2733d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby 2743d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby strcpy(str,";\n\n#ifdef __cplusplus\n}\n#endif\n\n#endif\n\n"); 2753d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby 2763d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby write(file_handler_h,str,strlen(str)); 2773d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby 2783d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby strcpy(str,"\n{\n if ( size )\n {\n *size = "); 2793d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby strcat(str,str_size); 2803d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby strcat(str,";\n return "); 2813d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby strcat(str,signature); 2823d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby strcat(str,";\n }\n else\n {\n return NULL;\n }\n}\n\n#ifdef __cplusplus\n}\n#endif\n\n"); 2833d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby 2843d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby write(file_handler_c,str,strlen(str)); 2853d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby 2863d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby close(file_handler_c); 2873d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby close(file_handler_h); 2883d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby close(file_handler_in); 2893d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby 2903d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby} 2913d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby 2923d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby 2933d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hambyvoid ConvertFiles(const char * pPath, const char * pExtension, bool bTextFile) 2943d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby{ 2953d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby 2963d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby DIR *dir = NULL; 2973d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby struct dirent *de = NULL; 2983d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby 2993d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby 3003d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby dir = opendir(pPath); 3013d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby if ( dir == NULL ) 3023d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby { 3033d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby printf("cannot open dir : %s\n",pPath); 3043d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby return; 3053d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby } 3063d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby 3073d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby int nExtensionLen = pExtension == NULL ? 0 : strlen(pExtension); 3083d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby while ( de = readdir(dir) ) 3093d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby { 3103d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby int nNameLen = strlen(de->d_name); 3113d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby if (nNameLen > nExtensionLen && !strncmp((de->d_name + nNameLen - nExtensionLen), pExtension, nExtensionLen)) 3123d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby { 3133d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby ConvertFile(pPath,de->d_name,pExtension,bTextFile); 3143d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby } 3153d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby } 3163d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby closedir(dir); 3173d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby 3183d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby} 3193d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby 3203d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hambyint main(int argc, char** argv) 3213d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby{ 3223d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby 3233d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby 3243d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby char * settings_path = getenv("dm_setting_root"); 3253d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby char * plugin_path = getenv("dm_setting_plugin"); 3263d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby 3273d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby if ( settings_path == NULL && plugin_path == NULL ) 3283d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby { 3293d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby printf("env variables are not set :dm_setting_root, dm_setting_plugin\n"); 3303d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby return 0; 3313d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby } 3323d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby 3333d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby if ( settings_path ) 3343d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby { 3353d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby printf("dm settings : %s\n",settings_path); 3363d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby 3373d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby char * s = (char*)strchr( (const char *)settings_path, ':' ); 3383d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby if ( s ) 3393d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby s = '\0'; 3403d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby 3413d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby ConvertFiles(settings_path,"bmdf",false); 3423d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby ConvertFile(settings_path,"fstab",NULL,true); 3433d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby } 3443d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby if ( plugin_path ) 3453d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby { 3463d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby printf("plugin settings : %s\n",plugin_path ); 3473d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby ConvertFiles(plugin_path,"ini",true); 3483d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby } 3493d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby return 0; 3503d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby} 351