Files
2026-05-07 06:55:44 +02:00

292 lines
6.5 KiB
C

/*
* The error code definitions for libexe
*
* Copyright (C) 2011-2026, Joachim Metz <joachim.metz@gmail.com>
*
* Refer to AUTHORS for acknowledgements.
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU Lesser General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU Lesser General Public License
* along with this program. If not, see <https://www.gnu.org/licenses/>.
*/
#if !defined( _LIBEXE_ERROR_H )
#define _LIBEXE_ERROR_H
#include <libexe/types.h>
/* External error type definition hides internal structure
*/
typedef intptr_t libexe_error_t;
/* The error domains
*/
enum LIBEXE_ERROR_DOMAINS
{
LIBEXE_ERROR_DOMAIN_ARGUMENTS = (int) 'a',
LIBEXE_ERROR_DOMAIN_CONVERSION = (int) 'c',
LIBEXE_ERROR_DOMAIN_COMPRESSION = (int) 'C',
LIBEXE_ERROR_DOMAIN_IO = (int) 'I',
LIBEXE_ERROR_DOMAIN_INPUT = (int) 'i',
LIBEXE_ERROR_DOMAIN_MEMORY = (int) 'm',
LIBEXE_ERROR_DOMAIN_OUTPUT = (int) 'o',
LIBEXE_ERROR_DOMAIN_RUNTIME = (int) 'r'
};
/* The argument error codes
* to signify errors regarding arguments passed to a function
*/
enum LIBEXE_ARGUMENT_ERROR
{
LIBEXE_ARGUMENT_ERROR_GENERIC = 0,
/* The argument contains an invalid value
*/
LIBEXE_ARGUMENT_ERROR_INVALID_VALUE = 1,
/* The argument contains a value less than zero
*/
LIBEXE_ARGUMENT_ERROR_VALUE_LESS_THAN_ZERO = 2,
/* The argument contains a value zero or less
*/
LIBEXE_ARGUMENT_ERROR_VALUE_ZERO_OR_LESS = 3,
/* The argument contains a value that exceeds the maximum
* for the specific type
*/
LIBEXE_ARGUMENT_ERROR_VALUE_EXCEEDS_MAXIMUM = 4,
/* The argument contains a value that is too small
*/
LIBEXE_ARGUMENT_ERROR_VALUE_TOO_SMALL = 5,
/* The argument contains a value that is too large
*/
LIBEXE_ARGUMENT_ERROR_VALUE_TOO_LARGE = 6,
/* The argument contains a value that is out of bounds
*/
LIBEXE_ARGUMENT_ERROR_VALUE_OUT_OF_BOUNDS = 7,
/* The argument contains a value that is not supported
*/
LIBEXE_ARGUMENT_ERROR_UNSUPPORTED_VALUE = 8,
/* The argument contains a value that conficts with another argument
*/
LIBEXE_ARGUMENT_ERROR_CONFLICTING_VALUE = 9
};
/* The conversion error codes
* to signify errors regarding conversions
*/
enum LIBEXE_CONVERSION_ERROR
{
LIBEXE_CONVERSION_ERROR_GENERIC = 0,
/* The conversion failed on the input
*/
LIBEXE_CONVERSION_ERROR_INPUT_FAILED = 1,
/* The conversion failed on the output
*/
LIBEXE_CONVERSION_ERROR_OUTPUT_FAILED = 2
};
/* The compression error codes
* to signify errors regarding compression
*/
enum LIBEXE_COMPRESSION_ERROR
{
LIBEXE_COMPRESSION_ERROR_GENERIC = 0,
/* The compression failed
*/
LIBEXE_COMPRESSION_ERROR_COMPRESS_FAILED = 1,
/* The decompression failed
*/
LIBEXE_COMPRESSION_ERROR_DECOMPRESS_FAILED = 2
};
/* The input/output error codes
* to signify errors regarding input/output
*/
enum LIBEXE_IO_ERROR
{
LIBEXE_IO_ERROR_GENERIC = 0,
/* The open failed
*/
LIBEXE_IO_ERROR_OPEN_FAILED = 1,
/* The close failed
*/
LIBEXE_IO_ERROR_CLOSE_FAILED = 2,
/* The seek failed
*/
LIBEXE_IO_ERROR_SEEK_FAILED = 3,
/* The read failed
*/
LIBEXE_IO_ERROR_READ_FAILED = 4,
/* The write failed
*/
LIBEXE_IO_ERROR_WRITE_FAILED = 5,
/* Access denied
*/
LIBEXE_IO_ERROR_ACCESS_DENIED = 6,
/* The resource is invalid i.e. a missing file
*/
LIBEXE_IO_ERROR_INVALID_RESOURCE = 7,
/* The ioctl failed
*/
LIBEXE_IO_ERROR_IOCTL_FAILED = 8,
/* The unlink failed
*/
LIBEXE_IO_ERROR_UNLINK_FAILED = 9
};
/* The input error codes
* to signify errors regarding handing input data
*/
enum LIBEXE_INPUT_ERROR
{
LIBEXE_INPUT_ERROR_GENERIC = 0,
/* The input contains invalid data
*/
LIBEXE_INPUT_ERROR_INVALID_DATA = 1,
/* The input contains an unsupported signature
*/
LIBEXE_INPUT_ERROR_SIGNATURE_MISMATCH = 2,
/* A checksum in the input did not match
*/
LIBEXE_INPUT_ERROR_CHECKSUM_MISMATCH = 3,
/* A value in the input did not match a previously
* read value or calculated value
*/
LIBEXE_INPUT_ERROR_VALUE_MISMATCH = 4
};
/* The memory error codes
* to signify errors regarding memory
*/
enum LIBEXE_MEMORY_ERROR
{
LIBEXE_MEMORY_ERROR_GENERIC = 0,
/* There is insufficient memory available
*/
LIBEXE_MEMORY_ERROR_INSUFFICIENT = 1,
/* The memory failed to be copied
*/
LIBEXE_MEMORY_ERROR_COPY_FAILED = 2,
/* The memory failed to be set
*/
LIBEXE_MEMORY_ERROR_SET_FAILED = 3
};
/* The output error codes
*/
enum LIBEXE_OUTPUT_ERROR
{
LIBEXE_OUTPUT_ERROR_GENERIC = 0,
/* There is insuficient space to write the output
*/
LIBEXE_OUTPUT_ERROR_INSUFFICIENT_SPACE = 1
};
/* The runtime error codes
* to signify errors regarding runtime processing
*/
enum LIBEXE_RUNTIME_ERROR
{
LIBEXE_RUNTIME_ERROR_GENERIC = 0,
/* The value is missing
*/
LIBEXE_RUNTIME_ERROR_VALUE_MISSING = 1,
/* The value was already set
*/
LIBEXE_RUNTIME_ERROR_VALUE_ALREADY_SET = 2,
/* The creation and/or initialization of an internal structure failed
*/
LIBEXE_RUNTIME_ERROR_INITIALIZE_FAILED = 3,
/* The resize of an internal structure failed
*/
LIBEXE_RUNTIME_ERROR_RESIZE_FAILED = 4,
/* The free and/or finalization of an internal structure failed
*/
LIBEXE_RUNTIME_ERROR_FINALIZE_FAILED = 5,
/* The value could not be determined
*/
LIBEXE_RUNTIME_ERROR_GET_FAILED = 6,
/* The value could not be set
*/
LIBEXE_RUNTIME_ERROR_SET_FAILED = 7,
/* The value could not be appended/prepended
*/
LIBEXE_RUNTIME_ERROR_APPEND_FAILED = 8,
/* The value could not be copied
*/
LIBEXE_RUNTIME_ERROR_COPY_FAILED = 9,
/* The value could not be removed
*/
LIBEXE_RUNTIME_ERROR_REMOVE_FAILED = 10,
/* The value could not be printed
*/
LIBEXE_RUNTIME_ERROR_PRINT_FAILED = 11,
/* The value was out of bounds
*/
LIBEXE_RUNTIME_ERROR_VALUE_OUT_OF_BOUNDS = 12,
/* The value exceeds the maximum for its specific type
*/
LIBEXE_RUNTIME_ERROR_VALUE_EXCEEDS_MAXIMUM = 13,
/* The value is unsupported
*/
LIBEXE_RUNTIME_ERROR_UNSUPPORTED_VALUE = 14,
/* An abort was requested
*/
LIBEXE_RUNTIME_ERROR_ABORT_REQUESTED = 15
};
#endif /* !defined( _LIBEXE_ERROR_H ) */