- ds_clear (zr->errs);
- zm->errmsgs = zr->errs;
-
- if ( ! check_magic (zr->fr, MAGIC_SOCD, zr->errs))
- return NULL;
-
- if (! get_u16 (zr->fr, &v)) return NULL;
-
- if (! get_u16 (zr->fr, &v)) return NULL;
- if (! get_u16 (zr->fr, &gp)) return NULL;
- if (! get_u16 (zr->fr, &comp_type)) return NULL;
-
- zm->decompressor = get_decompressor (zm, comp_type);
- if (! zm->decompressor) return NULL;
-
- if (! get_u16 (zr->fr, &time)) return NULL;
- if (! get_u16 (zr->fr, &date)) return NULL;
- if (! get_u32 (zr->fr, &zm->expected_crc)) return NULL;
- if (! get_u32 (zr->fr, &zm->comp_size)) return NULL;
- if (! get_u32 (zr->fr, &zm->ucomp_size)) return NULL;
- if (! get_u16 (zr->fr, &nlen)) return NULL;
- if (! get_u16 (zr->fr, &extralen)) return NULL;
- if (! get_u16 (zr->fr, &clen)) return NULL;
- if (! get_u16 (zr->fr, &diskstart)) return NULL;
- if (! get_u16 (zr->fr, &iattr)) return NULL;
- if (! get_u32 (zr->fr, &eattr)) return NULL;
- if (! get_u32 (zr->fr, &zm->offset)) return NULL;
-
- zm->name = xzalloc (nlen + 1);
- if (! get_bytes (zr->fr, zm->name, nlen)) return NULL;
-
- skip_bytes (zr->fr, extralen);
-
- zr->members[zr->nm++] = zm;
-
- zm->fp = fopen (zr->filename, "rb");
- zm->ref_cnt = 1;