1 /*
2  * Copyright (C) 2020 The Android Open Source Project
3  *
4  * Licensed under the Apache License, Version 2.0 (the "License");
5  * you may not use this file except in compliance with the License.
6  * You may obtain a copy of the License at
7  *
8  *    http://www.apache.org/licenses/LICENSE-2.0
9  *
10  * Unless required by applicable law or agreed to in writing, software
11  * distributed under the License is distributed on an "AS IS" BASIS,
12  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13  * See the License for the specific language governing permissions and
14  * limitations under the License.
15  */
16 
17 #pragma once
18 
19 #include <stdint.h>
20 
21 enum ZipError : int32_t {
22   kSuccess = 0,
23 
24   kIterationEnd = -1,
25 
26   // We encountered a Zlib error when inflating a stream from this file.
27   // Usually indicates file corruption.
28   kZlibError = -2,
29 
30   // The input file cannot be processed as a zip archive. Usually because
31   // it's too small, too large or does not have a valid signature.
32   kInvalidFile = -3,
33 
34   // An invalid iteration / ziparchive handle was passed in as an input
35   // argument.
36   kInvalidHandle = -4,
37 
38   // The zip archive contained two (or possibly more) entries with the same
39   // name.
40   kDuplicateEntry = -5,
41 
42   // The zip archive contains no entries.
43   kEmptyArchive = -6,
44 
45   // The specified entry was not found in the archive.
46   kEntryNotFound = -7,
47 
48   // The zip archive contained an invalid local file header pointer.
49   kInvalidOffset = -8,
50 
51   // The zip archive contained inconsistent entry information. This could
52   // be because the central directory & local file header did not agree, or
53   // if the actual uncompressed length or crc32 do not match their declared
54   // values.
55   kInconsistentInformation = -9,
56 
57   // An invalid entry name was encountered.
58   kInvalidEntryName = -10,
59 
60   // An I/O related system call (read, lseek, ftruncate, map) failed.
61   kIoError = -11,
62 
63   // We were not able to mmap the central directory or entry contents.
64   kMmapFailed = -12,
65 
66   // An allocation failed.
67   kAllocationFailed = -13,
68 
69   // The compressed or uncompressed size is larger than UINT32_MAX and
70   // doesn't fit into the 32 bits zip entry.
71   kUnsupportedEntrySize = -14,
72 
73   kLastErrorCode = kUnsupportedEntrySize,
74 };
75