1*adcb0a62SAndroid Build Coastguard Worker /*
2*adcb0a62SAndroid Build Coastguard Worker * Copyright (C) 2008 The Android Open Source Project
3*adcb0a62SAndroid Build Coastguard Worker *
4*adcb0a62SAndroid Build Coastguard Worker * Licensed under the Apache License, Version 2.0 (the "License");
5*adcb0a62SAndroid Build Coastguard Worker * you may not use this file except in compliance with the License.
6*adcb0a62SAndroid Build Coastguard Worker * You may obtain a copy of the License at
7*adcb0a62SAndroid Build Coastguard Worker *
8*adcb0a62SAndroid Build Coastguard Worker * http://www.apache.org/licenses/LICENSE-2.0
9*adcb0a62SAndroid Build Coastguard Worker *
10*adcb0a62SAndroid Build Coastguard Worker * Unless required by applicable law or agreed to in writing, software
11*adcb0a62SAndroid Build Coastguard Worker * distributed under the License is distributed on an "AS IS" BASIS,
12*adcb0a62SAndroid Build Coastguard Worker * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13*adcb0a62SAndroid Build Coastguard Worker * See the License for the specific language governing permissions and
14*adcb0a62SAndroid Build Coastguard Worker * limitations under the License.
15*adcb0a62SAndroid Build Coastguard Worker */
16*adcb0a62SAndroid Build Coastguard Worker
17*adcb0a62SAndroid Build Coastguard Worker #include "zip_error.h"
18*adcb0a62SAndroid Build Coastguard Worker
19*adcb0a62SAndroid Build Coastguard Worker #include <android-base/macros.h>
20*adcb0a62SAndroid Build Coastguard Worker
21*adcb0a62SAndroid Build Coastguard Worker static const char* kErrorMessages[] = {
22*adcb0a62SAndroid Build Coastguard Worker "Success",
23*adcb0a62SAndroid Build Coastguard Worker "Iteration ended",
24*adcb0a62SAndroid Build Coastguard Worker "Zlib error",
25*adcb0a62SAndroid Build Coastguard Worker "Invalid file",
26*adcb0a62SAndroid Build Coastguard Worker "Invalid handle",
27*adcb0a62SAndroid Build Coastguard Worker "Duplicate entries in archive",
28*adcb0a62SAndroid Build Coastguard Worker "Empty archive",
29*adcb0a62SAndroid Build Coastguard Worker "Entry not found",
30*adcb0a62SAndroid Build Coastguard Worker "Invalid offset",
31*adcb0a62SAndroid Build Coastguard Worker "Inconsistent information",
32*adcb0a62SAndroid Build Coastguard Worker "Invalid entry name",
33*adcb0a62SAndroid Build Coastguard Worker "I/O error",
34*adcb0a62SAndroid Build Coastguard Worker "File mapping failed",
35*adcb0a62SAndroid Build Coastguard Worker "Allocation failed",
36*adcb0a62SAndroid Build Coastguard Worker "Unsupported zip entry size",
37*adcb0a62SAndroid Build Coastguard Worker };
38*adcb0a62SAndroid Build Coastguard Worker
ErrorCodeString(int32_t error_code)39*adcb0a62SAndroid Build Coastguard Worker const char* ErrorCodeString(int32_t error_code) {
40*adcb0a62SAndroid Build Coastguard Worker // Make sure that the number of entries in kErrorMessages and the ZipError
41*adcb0a62SAndroid Build Coastguard Worker // enum match.
42*adcb0a62SAndroid Build Coastguard Worker static_assert((-kLastErrorCode + 1) == arraysize(kErrorMessages),
43*adcb0a62SAndroid Build Coastguard Worker "(-kLastErrorCode + 1) != arraysize(kErrorMessages)");
44*adcb0a62SAndroid Build Coastguard Worker
45*adcb0a62SAndroid Build Coastguard Worker const uint32_t idx = -error_code;
46*adcb0a62SAndroid Build Coastguard Worker if (idx < arraysize(kErrorMessages)) {
47*adcb0a62SAndroid Build Coastguard Worker return kErrorMessages[idx];
48*adcb0a62SAndroid Build Coastguard Worker }
49*adcb0a62SAndroid Build Coastguard Worker
50*adcb0a62SAndroid Build Coastguard Worker return "Unknown return code";
51*adcb0a62SAndroid Build Coastguard Worker }
52