Пример #1
0
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);
}
Пример #2
0
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;
}