filetype detect_type(FILE *infile) { if (ist64(infile)) return t64; if (isp00(infile)) return p00; if (isprg(infile)) return prg; return not_a_valid_file; }
int get_entry_info(int count, FILE *infile, struct program_block_info *info, unsigned int* offset) { unsigned char byte; int power; if (!ist64(infile)) return 0; if ((count < 1) || (count > get_total_entries(infile))) return 0; if (fseek(infile, 32 + 32 * count, SEEK_SET) != 0) return 0; if (fread(&byte, 1, 1, infile) < 1) return 0; if (byte != 1) return 0; if (fread(&byte, 1, 1, infile) < 1) return 0; if (byte == 0) return 0; if (fread(&byte, 1, 1, infile) < 1) return 0; info->start = byte; if (fread(&byte, 1, 1, infile) < 1) return 0; info->start += byte * 256; if (fread(&byte, 1, 1, infile) < 1) return 0; info->end = byte; if (fread(&byte, 1, 1, infile) < 1) return 0; info->end += byte * 256; if (fseek(infile, 2, SEEK_CUR) != 0) return 0; *offset = 0; for (power = 0; power <= 3; power++) { if (fread(&byte, 1, 1, infile) < 1) return 0; *offset += byte << 8 * power; } if (fseek(infile, 4, SEEK_CUR) != 0) return 0; if (fread(info->name, 16, 1, infile) < 1) return 0; info->name[16] = 0; return 1; }
filetype detect_type(int ingresso){ if (ist64(ingresso)) return t64; if (isp00(ingresso)) return p00; if (isprg(ingresso)) return prg; return not_a_valid_file; }