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,&current_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