// Parses system.cnf. Returns the boot elf filename on success, NULL on failure
char *parseSystemCnf()
{
char *buffer;
int fd, fdSize;
int i;
// Open SYSTEM.CNF on the cdrom, allocate memory for it, terminate the array
fd = fioOpen("
cdrom0:\\SYSTEM.CNF;1", O_RDONLY);
if(fd < 0) return (char *)ERROR_SYSTEMCNF_FILEIO;
fdSize = fioLseek(fd, 0, SEEK_END);
fioLseek(fd, 0, SEEK_SET);
buffer = malloc(fdSize + 1);
if(!buffer) return (char *)ERROR_SYSTEMCNF_MEMORY;
if(fioRead(fd, buffer, fdSize) != fdSize) return (char *)ERROR_SYSTEMCNF_FILEIO;
fioClose(fd);
buffer[fdSize] = '\0';
// Find boot file substring
buffer = strstr(buffer, "
BOOT2");
buffer += 5;
while((*buffer == ' ') || (*buffer == '\t')) buffer++;
buffer++; // bypass '=' character
while((*buffer == ' ') || (*buffer == '\t')) buffer++;
i = 0;
while((buffer[i] != '\n') && (buffer[i] != '\r')) i++;
// Terminate string at end of boot elf filename
buffer[i] = '\0';
// Return pointer to boot elf filename string
return buffer;