mirror of
https://github.com/wiidev/usbloadergx.git
synced 2024-11-10 13:35:07 +01:00
973d8b2005
*Converted every 4 spaces to a tab to make the source consistent on those
76 lines
1.4 KiB
C++
76 lines
1.4 KiB
C++
#include <stdlib.h>
|
|
#include <string.h>
|
|
#include "WDMFile.hpp"
|
|
|
|
static inline int GetNumber(const char * line)
|
|
{
|
|
while(*line == ' ') line++;
|
|
|
|
if(line[0] == '0' && (line[1] == 'x' || line[1] == 'X'))
|
|
return strtol(line, 0, 16);
|
|
else
|
|
return strtol(line, 0, 10);
|
|
}
|
|
|
|
WDMFile::WDMFile(const char * path)
|
|
{
|
|
FILE * file = fopen(path, "rb");
|
|
if(!file)
|
|
return;
|
|
|
|
char line[255];
|
|
int entry_number = 0;
|
|
int counter = 0;
|
|
WDMEntry Entry;
|
|
|
|
while (fgets(line, sizeof(line), file))
|
|
{
|
|
if(line[0] == '#' || line[0] == '\0')
|
|
continue;
|
|
|
|
entry_number++;
|
|
|
|
if(entry_number < 3)
|
|
continue;
|
|
|
|
if(counter == 0)
|
|
{
|
|
int strlength = strlen(line);
|
|
while(strlength > 0 && (line[strlength-1] == '\n' || line[strlength-1] == '\r' || line[strlength-1] == ' '))
|
|
{
|
|
line[strlength-1] = '\0';
|
|
strlength--;
|
|
}
|
|
|
|
Entry.ReplaceName = line;
|
|
}
|
|
else if(counter == 1)
|
|
{
|
|
int strlength = strlen(line);
|
|
while(strlength > 0 && (line[strlength-1] == '\n' || line[strlength-1] == '\r' || line[strlength-1] == ' '))
|
|
{
|
|
line[strlength-1] = '\0';
|
|
strlength--;
|
|
}
|
|
|
|
Entry.DolName = line;
|
|
}
|
|
else if(counter == 2)
|
|
{
|
|
Entry.Parameter = GetNumber(line);
|
|
WDMEntries.push_back(Entry);
|
|
}
|
|
else if(counter == 3)
|
|
{
|
|
//This is actually the place where submenus are described
|
|
//But we skip it because its never used
|
|
counter = 0;
|
|
continue;
|
|
}
|
|
|
|
counter++;
|
|
}
|
|
|
|
fclose(file);
|
|
}
|