xref: /aosp_15_r20/system/libziparchive/zip_error.cpp (revision adcb0a6279ea715828f9bc5e351569419e478774)
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