mirror of
https://github.com/Xevion/easy7zip.git
synced 2025-12-07 03:15:00 -06:00
114 lines
3.8 KiB
C
114 lines
3.8 KiB
C
/*
|
|
* Copyright (c) 2016-present, Yann Collet, Facebook, Inc.
|
|
* All rights reserved.
|
|
* Modified for FL2 by Conor McCarthy
|
|
*
|
|
* This source code is licensed under both the BSD-style license (found in the
|
|
* LICENSE file in the root directory of this source tree) and the GPLv2 (found
|
|
* in the COPYING file in the root directory of this source tree).
|
|
* You may select, at your option, one of the above-listed licenses.
|
|
*/
|
|
|
|
|
|
|
|
/*-*************************************
|
|
* Dependencies
|
|
***************************************/
|
|
#include "fast-lzma2.h"
|
|
#include "fl2_errors.h"
|
|
#include "fl2_internal.h"
|
|
#include "lzma2_enc.h"
|
|
|
|
|
|
/*-****************************************
|
|
* Version
|
|
******************************************/
|
|
FL2LIB_API unsigned FL2LIB_CALL FL2_versionNumber(void) { return FL2_VERSION_NUMBER; }
|
|
|
|
FL2LIB_API const char* FL2LIB_CALL FL2_versionString(void) { return FL2_VERSION_STRING; }
|
|
|
|
|
|
/*-****************************************
|
|
* Compression helpers
|
|
******************************************/
|
|
FL2LIB_API size_t FL2LIB_CALL FL2_compressBound(size_t srcSize)
|
|
{
|
|
return LZMA2_compressBound(srcSize);
|
|
}
|
|
|
|
/*-****************************************
|
|
* FL2 Error Management
|
|
******************************************/
|
|
HINT_INLINE
|
|
unsigned IsError(size_t code)
|
|
{
|
|
return (code > FL2_ERROR(maxCode));
|
|
}
|
|
|
|
/*! FL2_isError() :
|
|
* tells if a return value is an error code */
|
|
FL2LIB_API unsigned FL2LIB_CALL FL2_isError(size_t code)
|
|
{
|
|
return IsError(code);
|
|
}
|
|
|
|
/*! FL2_isTimedOut() :
|
|
* tells if a return value is the timeout code */
|
|
FL2LIB_API unsigned FL2LIB_CALL FL2_isTimedOut(size_t code)
|
|
{
|
|
return (code == FL2_ERROR(timedOut));
|
|
}
|
|
|
|
/*! FL2_getErrorName() :
|
|
* provides error code string from function result (useful for debugging) */
|
|
FL2LIB_API const char* FL2LIB_CALL FL2_getErrorName(size_t code)
|
|
{
|
|
return FL2_getErrorString(FL2_getErrorCode(code));
|
|
}
|
|
|
|
/*! FL2_getError() :
|
|
* convert a `size_t` function result into a proper FL2_errorCode enum */
|
|
FL2LIB_API FL2_ErrorCode FL2LIB_CALL FL2_getErrorCode(size_t code)
|
|
{
|
|
if (!IsError(code))
|
|
return (FL2_ErrorCode)0;
|
|
|
|
return (FL2_ErrorCode)(0 - code);
|
|
}
|
|
|
|
/*! FL2_getErrorString() :
|
|
* provides error code string from enum */
|
|
FL2LIB_API const char* FL2LIB_CALL FL2_getErrorString(FL2_ErrorCode code)
|
|
{
|
|
static const char* const notErrorCode = "Unspecified error code";
|
|
switch (code)
|
|
{
|
|
case PREFIX(no_error): return "No error detected";
|
|
case PREFIX(GENERIC): return "Error (generic)";
|
|
case PREFIX(internal): return "Internal error (bug)";
|
|
case PREFIX(corruption_detected): return "Corrupted block detected";
|
|
case PREFIX(checksum_wrong): return "Restored data doesn't match checksum";
|
|
case PREFIX(parameter_unsupported): return "Unsupported parameter";
|
|
case PREFIX(parameter_outOfBound): return "Parameter is out of bound";
|
|
case PREFIX(lclpMax_exceeded): return "Parameters lc+lp > 4";
|
|
case PREFIX(stage_wrong): return "Not possible at this stage of encoding";
|
|
case PREFIX(init_missing): return "Context should be init first";
|
|
case PREFIX(memory_allocation): return "Allocation error : not enough memory";
|
|
case PREFIX(dstSize_tooSmall): return "Destination buffer is too small";
|
|
case PREFIX(srcSize_wrong): return "Src size is incorrect";
|
|
case PREFIX(canceled): return "Processing was canceled by a call to FL2_cancelCStream() or FL2_cancelDStream()";
|
|
case PREFIX(buffer): return "Streaming progress halted due to buffer(s) full/empty";
|
|
case PREFIX(timedOut): return "Wait timed out. Timeouts should be handled before errors using FL2_isTimedOut()";
|
|
/* following error codes are not stable and may be removed or changed in a future version */
|
|
case PREFIX(maxCode):
|
|
default: return notErrorCode;
|
|
}
|
|
}
|
|
|
|
/*! g_debuglog_enable :
|
|
* turn on/off debug traces (global switch) */
|
|
#if defined(FL2_DEBUG) && (FL2_DEBUG >= 2)
|
|
int g_debuglog_enable = 1;
|
|
#endif
|
|
|