Fix some typos (found by codespell)
[pspp] / src / libpspp / zip-reader.h
1 /* PSPP - a program for statistical analysis.
2    Copyright (C) 2011, 2013 Free Software Foundation, Inc.
3
4    This program is free software: you can redistribute it and/or modify
5    it under the terms of the GNU General Public License as published by
6    the Free Software Foundation, either version 3 of the License, or
7    (at your option) any later version.
8
9    This program is distributed in the hope that it will be useful,
10    but WITHOUT ANY WARRANTY; without even the implied warranty of
11    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
12    GNU General Public License for more details.
13
14    You should have received a copy of the GNU General Public License
15    along with this program.  If not, see <http://www.gnu.org/licenses/>. */
16
17
18 #ifndef ZIP_READER_H
19 #define ZIP_READER_H 1
20
21 #include <inttypes.h>
22
23 struct zip_reader;
24 struct string;
25
26 enum compression
27   {
28     COMPRESSION_STORED = 0,
29     COMPRESSION_INFLATE,
30     n_COMPRESSION
31   };
32
33 struct zip_member
34 {
35   FILE *fp;                   /* The stream from which the data is read */
36   uint32_t offset;            /* Starting offset in file. */
37   uint32_t comp_size;         /* Length of member file data, in bytes. */
38   uint32_t ucomp_size;        /* Uncompressed length of member file data, in bytes. */
39   uint32_t expected_crc;      /* CRC-32 of member file data.. */
40   char *name;                 /* Name of member file. */
41   uint32_t crc;
42   enum compression compression;
43
44   size_t bytes_unread;       /* Number of bytes left in the member available for reading */
45   int ref_cnt;
46   struct string *errmsgs;    /* A string to hold error messages.
47                                 This string is NOT owned by this object. */
48   void *aux;
49 };
50
51 struct decompressor
52 {
53   bool (*init) (struct zip_member *);
54   int  (*read) (struct zip_member *, void *, size_t);
55   void (*finish) (struct zip_member *);
56 };
57
58
59 void zm_dump (const struct zip_member *zm);
60
61 /* Create zip reader to read the file called FILENAME.
62    If ERRS is non-null if will be used to contain any error messages
63    which the reader wishes to report.
64  */
65 struct zip_reader *zip_reader_create (const char *filename, struct string *errs);
66
67 /* Destroy the zip reader */
68 void zip_reader_destroy (struct zip_reader *zr);
69
70 /* Return the zip member in the reader ZR, called MEMBER */
71 struct zip_member *zip_member_open (struct zip_reader *zr, const char *member);
72
73 /* Read up to N bytes from ZM, storing them in BUF.
74    Returns the number of bytes read, or -1 on error */
75 int zip_member_read (struct zip_member *zm, void *buf, size_t n);
76
77 /* Unref (and possibly destroy) the zip member ZM */
78 void zip_member_unref (struct zip_member *zm);
79
80 /* Ref the zip member */
81 void zip_member_ref (struct zip_member *zm);
82
83 void zip_member_finish (struct zip_member *zm);
84
85
86 #endif