void get_stats(void) { PACKFILE *f; #ifdef ALLEGRO_UNIX if (stat(opt_filename, &stat_stat)) { fprintf(stderr, "Error statting %s\n", opt_filename); err = 1; return; } #endif f = pack_fopen(opt_filename, F_READ); if (!f) { fprintf(stderr, "Error opening %s\n", opt_filename); err = 1; return; } stat_exe_size = f->normal.todo; pack_fseek(f, f->normal.todo-8); if (pack_mgetl(f) != F_EXE_MAGIC) { stat_hasdata = FALSE; stat_compressed_size = 0; stat_uncompressed_size = 0; pack_fclose(f); return; } stat_hasdata = TRUE; stat_compressed_size = pack_mgetl(f) - 16; pack_fclose(f); f = pack_fopen(opt_filename, F_READ); if (!f) { fprintf(stderr, "Error reading %s\n", opt_filename); err = 1; return; } stat_exe_size = f->normal.todo - stat_compressed_size - 16; pack_fseek(f, stat_exe_size); f = pack_fopen_chunk(f, FALSE); if (!f) { fprintf(stderr, "Error reading %s\n", opt_filename); err = 1; return; } stat_uncompressed_size = f->normal.todo; pack_fclose(f); }
int detect_it(char *f) { int sig; PACKFILE *fn = pack_fopen(f, "rb"); if (fn == NULL) return FALSE; sig = pack_mgetl(fn); if (sig != AL_ID('I','M','P','M')) { pack_fclose(fn); return FALSE; } pack_fclose(fn); return TRUE; }