X-Git-Url: https://pintos-os.org/cgi-bin/gitweb.cgi?a=blobdiff_plain;f=src%2Flibpspp%2Fzip-reader.c;h=4810ae53378c4dda4b98426f809002c4f1c3ad1e;hb=65481c834dca537af5851fa2b7efe209f09af613;hp=69ef4fb9187c3982ca33888f0915df532e0f77fc;hpb=3dd0f6ae0d5eb73a2270a243e443c4ae03c2c16e;p=pspp diff --git a/src/libpspp/zip-reader.c b/src/libpspp/zip-reader.c index 69ef4fb918..4810ae5337 100644 --- a/src/libpspp/zip-reader.c +++ b/src/libpspp/zip-reader.c @@ -73,6 +73,7 @@ static enum compression comp_code (struct zip_member *zm, uint16_t c) { enum compression which; + assert (zm->errmsgs); switch (c) { case 0: @@ -82,7 +83,7 @@ comp_code (struct zip_member *zm, uint16_t c) which = COMPRESSION_INFLATE; break; default: - ds_put_format (zm->errs, _("Unsupported compression type (%d)"), c); + ds_put_format (zm->errmsgs, _("Unsupported compression type (%d)"), c); which = n_COMPRESSION; break; } @@ -103,7 +104,7 @@ struct zip_reader void zip_member_finish (struct zip_member *zm) { - ds_clear (zm->errs); + ds_clear (zm->errmsgs); /* Probably not useful, because we would have to read right to the end of the member if (zm->expected_crc != zm->crc) { @@ -224,7 +225,7 @@ zip_member_read (struct zip_member *zm, void *buf, size_t bytes) { int bytes_read = 0; - ds_clear (zm->errs); + ds_clear (zm->errmsgs); if ( bytes > zm->bytes_unread) bytes = zm->bytes_unread; @@ -260,6 +261,7 @@ zip_header_read_next (struct zip_reader *zr) uint16_t comp_type; ds_clear (zr->errs); + zm->errmsgs = zr->errs; if ( ! check_magic (zr->fr, MAGIC_SOCD, zr->errs)) return NULL; @@ -294,7 +296,7 @@ zip_header_read_next (struct zip_reader *zr) zm->fp = fopen (zr->filename, "rb"); zm->ref_cnt = 1; - zm->errs = zr->errs; + return zm; } @@ -376,7 +378,7 @@ zip_reader_create (const char *filename, struct string *errs) zr->members = xcalloc (zr->n_members, sizeof (*zr->members)); memset (zr->members, 0, zr->n_members * sizeof (*zr->members)); - zr->filename = strdup (filename); + zr->filename = xstrdup (filename); return zr; } @@ -422,7 +424,7 @@ zip_member_open (struct zip_reader *zr, const char *member) if ( 0 != fseeko (zm->fp, zm->offset, SEEK_SET)) { const char *mm = strerror (errno); - ds_put_format (zm->errs, _("Failed to seek to start of member `%s': %s"), zm->name, mm); + ds_put_format (zm->errmsgs, _("Failed to seek to start of member `%s': %s"), zm->name, mm); return NULL; } @@ -452,7 +454,7 @@ zip_member_open (struct zip_reader *zr, const char *member) if (strcmp (name, zm->name) != 0) { - ds_put_format (zm->errs, + ds_put_format (zm->errmsgs, _("Name mismatch in zip archive. Central directory says `%s'; local file header says `%s'"), zm->name, name); free (name);