annotate libzip/lib/zipwin32.h @ 4:2306f4b04790

libzip: import 1.1.2
author David Demelier <markand@malikania.fr>
date Wed, 24 Feb 2016 21:19:28 +0100
parents
children
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
4
2306f4b04790 libzip: import 1.1.2
David Demelier <markand@malikania.fr>
parents:
diff changeset
1 #ifndef _HAD_ZIPWIN32_H
2306f4b04790 libzip: import 1.1.2
David Demelier <markand@malikania.fr>
parents:
diff changeset
2 #define _HAD_ZIPWIN32_H
2306f4b04790 libzip: import 1.1.2
David Demelier <markand@malikania.fr>
parents:
diff changeset
3
2306f4b04790 libzip: import 1.1.2
David Demelier <markand@malikania.fr>
parents:
diff changeset
4 /*
2306f4b04790 libzip: import 1.1.2
David Demelier <markand@malikania.fr>
parents:
diff changeset
5 zipwin32.h -- internal declarations for Windows.
2306f4b04790 libzip: import 1.1.2
David Demelier <markand@malikania.fr>
parents:
diff changeset
6 Copyright (C) 1999-2015 Dieter Baron and Thomas Klausner
2306f4b04790 libzip: import 1.1.2
David Demelier <markand@malikania.fr>
parents:
diff changeset
7
2306f4b04790 libzip: import 1.1.2
David Demelier <markand@malikania.fr>
parents:
diff changeset
8 This file is part of libzip, a library to manipulate ZIP archives.
2306f4b04790 libzip: import 1.1.2
David Demelier <markand@malikania.fr>
parents:
diff changeset
9 The authors can be contacted at <libzip@nih.at>
2306f4b04790 libzip: import 1.1.2
David Demelier <markand@malikania.fr>
parents:
diff changeset
10
2306f4b04790 libzip: import 1.1.2
David Demelier <markand@malikania.fr>
parents:
diff changeset
11 Redistribution and use in source and binary forms, with or without
2306f4b04790 libzip: import 1.1.2
David Demelier <markand@malikania.fr>
parents:
diff changeset
12 modification, are permitted provided that the following conditions
2306f4b04790 libzip: import 1.1.2
David Demelier <markand@malikania.fr>
parents:
diff changeset
13 are met:
2306f4b04790 libzip: import 1.1.2
David Demelier <markand@malikania.fr>
parents:
diff changeset
14 1. Redistributions of source code must retain the above copyright
2306f4b04790 libzip: import 1.1.2
David Demelier <markand@malikania.fr>
parents:
diff changeset
15 notice, this list of conditions and the following disclaimer.
2306f4b04790 libzip: import 1.1.2
David Demelier <markand@malikania.fr>
parents:
diff changeset
16 2. Redistributions in binary form must reproduce the above copyright
2306f4b04790 libzip: import 1.1.2
David Demelier <markand@malikania.fr>
parents:
diff changeset
17 notice, this list of conditions and the following disclaimer in
2306f4b04790 libzip: import 1.1.2
David Demelier <markand@malikania.fr>
parents:
diff changeset
18 the documentation and/or other materials provided with the
2306f4b04790 libzip: import 1.1.2
David Demelier <markand@malikania.fr>
parents:
diff changeset
19 distribution.
2306f4b04790 libzip: import 1.1.2
David Demelier <markand@malikania.fr>
parents:
diff changeset
20 3. The names of the authors may not be used to endorse or promote
2306f4b04790 libzip: import 1.1.2
David Demelier <markand@malikania.fr>
parents:
diff changeset
21 products derived from this software without specific prior
2306f4b04790 libzip: import 1.1.2
David Demelier <markand@malikania.fr>
parents:
diff changeset
22 written permission.
2306f4b04790 libzip: import 1.1.2
David Demelier <markand@malikania.fr>
parents:
diff changeset
23
2306f4b04790 libzip: import 1.1.2
David Demelier <markand@malikania.fr>
parents:
diff changeset
24 THIS SOFTWARE IS PROVIDED BY THE AUTHORS ``AS IS'' AND ANY EXPRESS
2306f4b04790 libzip: import 1.1.2
David Demelier <markand@malikania.fr>
parents:
diff changeset
25 OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
2306f4b04790 libzip: import 1.1.2
David Demelier <markand@malikania.fr>
parents:
diff changeset
26 WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
2306f4b04790 libzip: import 1.1.2
David Demelier <markand@malikania.fr>
parents:
diff changeset
27 ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHORS BE LIABLE FOR ANY
2306f4b04790 libzip: import 1.1.2
David Demelier <markand@malikania.fr>
parents:
diff changeset
28 DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
2306f4b04790 libzip: import 1.1.2
David Demelier <markand@malikania.fr>
parents:
diff changeset
29 DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE
2306f4b04790 libzip: import 1.1.2
David Demelier <markand@malikania.fr>
parents:
diff changeset
30 GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
2306f4b04790 libzip: import 1.1.2
David Demelier <markand@malikania.fr>
parents:
diff changeset
31 INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER
2306f4b04790 libzip: import 1.1.2
David Demelier <markand@malikania.fr>
parents:
diff changeset
32 IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR
2306f4b04790 libzip: import 1.1.2
David Demelier <markand@malikania.fr>
parents:
diff changeset
33 OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN
2306f4b04790 libzip: import 1.1.2
David Demelier <markand@malikania.fr>
parents:
diff changeset
34 IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
2306f4b04790 libzip: import 1.1.2
David Demelier <markand@malikania.fr>
parents:
diff changeset
35 */
2306f4b04790 libzip: import 1.1.2
David Demelier <markand@malikania.fr>
parents:
diff changeset
36
2306f4b04790 libzip: import 1.1.2
David Demelier <markand@malikania.fr>
parents:
diff changeset
37 /* 0x0501 => Windows XP; needs to be at least this value because of GetFileSizeEx */
2306f4b04790 libzip: import 1.1.2
David Demelier <markand@malikania.fr>
parents:
diff changeset
38 #define _WIN32_WINNT 0x0501
2306f4b04790 libzip: import 1.1.2
David Demelier <markand@malikania.fr>
parents:
diff changeset
39 #include <windows.h>
2306f4b04790 libzip: import 1.1.2
David Demelier <markand@malikania.fr>
parents:
diff changeset
40
2306f4b04790 libzip: import 1.1.2
David Demelier <markand@malikania.fr>
parents:
diff changeset
41 /* context for Win32 source */
2306f4b04790 libzip: import 1.1.2
David Demelier <markand@malikania.fr>
parents:
diff changeset
42
2306f4b04790 libzip: import 1.1.2
David Demelier <markand@malikania.fr>
parents:
diff changeset
43 struct _zip_source_win32_file_ops;
2306f4b04790 libzip: import 1.1.2
David Demelier <markand@malikania.fr>
parents:
diff changeset
44
2306f4b04790 libzip: import 1.1.2
David Demelier <markand@malikania.fr>
parents:
diff changeset
45 struct _zip_source_win32_read_file {
2306f4b04790 libzip: import 1.1.2
David Demelier <markand@malikania.fr>
parents:
diff changeset
46 zip_error_t error; /* last error information */
2306f4b04790 libzip: import 1.1.2
David Demelier <markand@malikania.fr>
parents:
diff changeset
47 zip_int64_t supports;
2306f4b04790 libzip: import 1.1.2
David Demelier <markand@malikania.fr>
parents:
diff changeset
48
2306f4b04790 libzip: import 1.1.2
David Demelier <markand@malikania.fr>
parents:
diff changeset
49 /* operations */
2306f4b04790 libzip: import 1.1.2
David Demelier <markand@malikania.fr>
parents:
diff changeset
50 struct _zip_source_win32_file_ops *ops;
2306f4b04790 libzip: import 1.1.2
David Demelier <markand@malikania.fr>
parents:
diff changeset
51
2306f4b04790 libzip: import 1.1.2
David Demelier <markand@malikania.fr>
parents:
diff changeset
52 /* reading */
2306f4b04790 libzip: import 1.1.2
David Demelier <markand@malikania.fr>
parents:
diff changeset
53 void *fname; /* name of file to read from - ANSI (char *) or Unicode (wchar_t *) */
2306f4b04790 libzip: import 1.1.2
David Demelier <markand@malikania.fr>
parents:
diff changeset
54 void *h; /* HANDLE for file to read from */
2306f4b04790 libzip: import 1.1.2
David Demelier <markand@malikania.fr>
parents:
diff changeset
55 int closep; /* whether to close f on ZIP_CMD_FREE */
2306f4b04790 libzip: import 1.1.2
David Demelier <markand@malikania.fr>
parents:
diff changeset
56 struct zip_stat st; /* stat information passed in */
2306f4b04790 libzip: import 1.1.2
David Demelier <markand@malikania.fr>
parents:
diff changeset
57 zip_uint64_t start; /* start offset of data to read */
2306f4b04790 libzip: import 1.1.2
David Demelier <markand@malikania.fr>
parents:
diff changeset
58 zip_uint64_t end; /* end offset of data to read, 0 for up to EOF */
2306f4b04790 libzip: import 1.1.2
David Demelier <markand@malikania.fr>
parents:
diff changeset
59 zip_uint64_t current; /* current offset */
2306f4b04790 libzip: import 1.1.2
David Demelier <markand@malikania.fr>
parents:
diff changeset
60
2306f4b04790 libzip: import 1.1.2
David Demelier <markand@malikania.fr>
parents:
diff changeset
61 /* writing */
2306f4b04790 libzip: import 1.1.2
David Demelier <markand@malikania.fr>
parents:
diff changeset
62 void *tmpname; /* name of temp file - ANSI (char *) or Unicode (wchar_t *) */
2306f4b04790 libzip: import 1.1.2
David Demelier <markand@malikania.fr>
parents:
diff changeset
63 void *hout; /* HANDLE for output file */
2306f4b04790 libzip: import 1.1.2
David Demelier <markand@malikania.fr>
parents:
diff changeset
64 };
2306f4b04790 libzip: import 1.1.2
David Demelier <markand@malikania.fr>
parents:
diff changeset
65
2306f4b04790 libzip: import 1.1.2
David Demelier <markand@malikania.fr>
parents:
diff changeset
66 typedef struct _zip_source_win32_read_file _zip_source_win32_read_file_t;
2306f4b04790 libzip: import 1.1.2
David Demelier <markand@malikania.fr>
parents:
diff changeset
67
2306f4b04790 libzip: import 1.1.2
David Demelier <markand@malikania.fr>
parents:
diff changeset
68 /* internal operations for Win32 source */
2306f4b04790 libzip: import 1.1.2
David Demelier <markand@malikania.fr>
parents:
diff changeset
69
2306f4b04790 libzip: import 1.1.2
David Demelier <markand@malikania.fr>
parents:
diff changeset
70 struct _zip_source_win32_file_ops {
2306f4b04790 libzip: import 1.1.2
David Demelier <markand@malikania.fr>
parents:
diff changeset
71 void *(*op_strdup)(const void *);
2306f4b04790 libzip: import 1.1.2
David Demelier <markand@malikania.fr>
parents:
diff changeset
72 void *(*op_open)(_zip_source_win32_read_file_t *);
2306f4b04790 libzip: import 1.1.2
David Demelier <markand@malikania.fr>
parents:
diff changeset
73 void *(*op_create_temp)(_zip_source_win32_read_file_t *, void **, zip_uint32_t, PSECURITY_ATTRIBUTES);
2306f4b04790 libzip: import 1.1.2
David Demelier <markand@malikania.fr>
parents:
diff changeset
74 int (*op_rename_temp)(_zip_source_win32_read_file_t *);
2306f4b04790 libzip: import 1.1.2
David Demelier <markand@malikania.fr>
parents:
diff changeset
75 int (*op_remove)(const void *);
2306f4b04790 libzip: import 1.1.2
David Demelier <markand@malikania.fr>
parents:
diff changeset
76 };
2306f4b04790 libzip: import 1.1.2
David Demelier <markand@malikania.fr>
parents:
diff changeset
77
2306f4b04790 libzip: import 1.1.2
David Demelier <markand@malikania.fr>
parents:
diff changeset
78 typedef struct _zip_source_win32_file_ops _zip_source_win32_file_ops_t;
2306f4b04790 libzip: import 1.1.2
David Demelier <markand@malikania.fr>
parents:
diff changeset
79
2306f4b04790 libzip: import 1.1.2
David Demelier <markand@malikania.fr>
parents:
diff changeset
80 zip_source_t *_zip_source_win32_handle_or_name(const void *, void *, zip_uint64_t, zip_int64_t, int, const zip_stat_t *, _zip_source_win32_file_ops_t *, zip_error_t *);
2306f4b04790 libzip: import 1.1.2
David Demelier <markand@malikania.fr>
parents:
diff changeset
81
2306f4b04790 libzip: import 1.1.2
David Demelier <markand@malikania.fr>
parents:
diff changeset
82 #endif /* zipwin32.h */