1*01826a49SYabin Cui /* 2*01826a49SYabin Cui * Copyright (c) Meta Platforms, Inc. and affiliates. 3*01826a49SYabin Cui * All rights reserved. 4*01826a49SYabin Cui * 5*01826a49SYabin Cui * This source code is licensed under both the BSD-style license (found in the 6*01826a49SYabin Cui * LICENSE file in the root directory of this source tree) and the GPLv2 (found 7*01826a49SYabin Cui * in the COPYING file in the root directory of this source tree). 8*01826a49SYabin Cui * You may select, at your option, one of the above-listed licenses. 9*01826a49SYabin Cui */ 10*01826a49SYabin Cui 11*01826a49SYabin Cui /* The purpose of this file is to have a single list of error strings embedded in binary */ 12*01826a49SYabin Cui 13*01826a49SYabin Cui #include "error_private.h" 14*01826a49SYabin Cui ERR_getErrorString(ERR_enum code)15*01826a49SYabin Cuiconst char* ERR_getErrorString(ERR_enum code) 16*01826a49SYabin Cui { 17*01826a49SYabin Cui #ifdef ZSTD_STRIP_ERROR_STRINGS 18*01826a49SYabin Cui (void)code; 19*01826a49SYabin Cui return "Error strings stripped"; 20*01826a49SYabin Cui #else 21*01826a49SYabin Cui static const char* const notErrorCode = "Unspecified error code"; 22*01826a49SYabin Cui switch( code ) 23*01826a49SYabin Cui { 24*01826a49SYabin Cui case PREFIX(no_error): return "No error detected"; 25*01826a49SYabin Cui case PREFIX(GENERIC): return "Error (generic)"; 26*01826a49SYabin Cui case PREFIX(prefix_unknown): return "Unknown frame descriptor"; 27*01826a49SYabin Cui case PREFIX(version_unsupported): return "Version not supported"; 28*01826a49SYabin Cui case PREFIX(frameParameter_unsupported): return "Unsupported frame parameter"; 29*01826a49SYabin Cui case PREFIX(frameParameter_windowTooLarge): return "Frame requires too much memory for decoding"; 30*01826a49SYabin Cui case PREFIX(corruption_detected): return "Data corruption detected"; 31*01826a49SYabin Cui case PREFIX(checksum_wrong): return "Restored data doesn't match checksum"; 32*01826a49SYabin Cui case PREFIX(literals_headerWrong): return "Header of Literals' block doesn't respect format specification"; 33*01826a49SYabin Cui case PREFIX(parameter_unsupported): return "Unsupported parameter"; 34*01826a49SYabin Cui case PREFIX(parameter_combination_unsupported): return "Unsupported combination of parameters"; 35*01826a49SYabin Cui case PREFIX(parameter_outOfBound): return "Parameter is out of bound"; 36*01826a49SYabin Cui case PREFIX(init_missing): return "Context should be init first"; 37*01826a49SYabin Cui case PREFIX(memory_allocation): return "Allocation error : not enough memory"; 38*01826a49SYabin Cui case PREFIX(workSpace_tooSmall): return "workSpace buffer is not large enough"; 39*01826a49SYabin Cui case PREFIX(stage_wrong): return "Operation not authorized at current processing stage"; 40*01826a49SYabin Cui case PREFIX(tableLog_tooLarge): return "tableLog requires too much memory : unsupported"; 41*01826a49SYabin Cui case PREFIX(maxSymbolValue_tooLarge): return "Unsupported max Symbol Value : too large"; 42*01826a49SYabin Cui case PREFIX(maxSymbolValue_tooSmall): return "Specified maxSymbolValue is too small"; 43*01826a49SYabin Cui case PREFIX(stabilityCondition_notRespected): return "pledged buffer stability condition is not respected"; 44*01826a49SYabin Cui case PREFIX(dictionary_corrupted): return "Dictionary is corrupted"; 45*01826a49SYabin Cui case PREFIX(dictionary_wrong): return "Dictionary mismatch"; 46*01826a49SYabin Cui case PREFIX(dictionaryCreation_failed): return "Cannot create Dictionary from provided samples"; 47*01826a49SYabin Cui case PREFIX(dstSize_tooSmall): return "Destination buffer is too small"; 48*01826a49SYabin Cui case PREFIX(srcSize_wrong): return "Src size is incorrect"; 49*01826a49SYabin Cui case PREFIX(dstBuffer_null): return "Operation on NULL destination buffer"; 50*01826a49SYabin Cui case PREFIX(noForwardProgress_destFull): return "Operation made no progress over multiple calls, due to output buffer being full"; 51*01826a49SYabin Cui case PREFIX(noForwardProgress_inputEmpty): return "Operation made no progress over multiple calls, due to input being empty"; 52*01826a49SYabin Cui /* following error codes are not stable and may be removed or changed in a future version */ 53*01826a49SYabin Cui case PREFIX(frameIndex_tooLarge): return "Frame index is too large"; 54*01826a49SYabin Cui case PREFIX(seekableIO): return "An I/O error occurred when reading/seeking"; 55*01826a49SYabin Cui case PREFIX(dstBuffer_wrong): return "Destination buffer is wrong"; 56*01826a49SYabin Cui case PREFIX(srcBuffer_wrong): return "Source buffer is wrong"; 57*01826a49SYabin Cui case PREFIX(sequenceProducer_failed): return "Block-level external sequence producer returned an error code"; 58*01826a49SYabin Cui case PREFIX(externalSequences_invalid): return "External sequences are not valid"; 59*01826a49SYabin Cui case PREFIX(maxCode): 60*01826a49SYabin Cui default: return notErrorCode; 61*01826a49SYabin Cui } 62*01826a49SYabin Cui #endif 63*01826a49SYabin Cui } 64