diff options
author | Joseph Hunkeler <jhunkeler@users.noreply.github.com> | 2020-04-19 00:35:25 -0400 |
---|---|---|
committer | GitHub <noreply@github.com> | 2020-04-19 00:35:25 -0400 |
commit | 57c9489b28a481abc078ad3a2dd197079f9c414b (patch) | |
tree | 12cc1ea0186b242a82d87bc2f62142e5decefedb /include/error_handler.h | |
parent | 59f7d29e2d707373ba1153337dca3279a2e3acc5 (diff) | |
parent | 8cdddbb0f1a8c6eb023cbe732e5701240a54ff3c (diff) | |
download | spmc-57c9489b28a481abc078ad3a2dd197079f9c414b.tar.gz |
Merge pull request #25 from jhunkeler/error-handler-etc
Error handler etc
Diffstat (limited to 'include/error_handler.h')
-rw-r--r-- | include/error_handler.h | 34 |
1 files changed, 34 insertions, 0 deletions
diff --git a/include/error_handler.h b/include/error_handler.h new file mode 100644 index 0000000..a731d28 --- /dev/null +++ b/include/error_handler.h @@ -0,0 +1,34 @@ +#ifndef SPM_ERROR_HANDLER_H +#define SPM_ERROR_HANDLER_H + +#define _SPM_ERR_BASE 0x8000 // SPM errors begin at 32768 +#define _SPM_ERR_MASK 0x7FFF // Support up to 32768 error strings (zero index) +#define _SPM_ERR(X) _SPM_ERR_BASE + X // Create an error code +#define SPM_ERR_CONFIRM(X) (X >= 0x8000) // Is X a SPM error code? (no=0, yes=!0) +#define SPM_ERR_INDEX(X) (_SPM_ERR_MASK & X) // get index of error string + +#define SPM_ERR_SUCCESS _SPM_ERR(0) // no error +#define SPM_ERR_ROOT_NO_RECORD _SPM_ERR(1) // "root" has no root record +#define SPM_ERR_ROOT_UNSAFE _SPM_ERR(2) // "root" at root, "/" +#define SPM_ERR_PKG_NOT_FOUND _SPM_ERR(3) // package not found +#define SPM_ERR_PKG_INVALID _SPM_ERR(4) // invalid package (wrong structure, missing data, etc) +#define SPM_ERR_PKG_CHECKSUM _SPM_ERR(5) // bad checksum +#define SPM_ERR_PKG_FETCH _SPM_ERR(6) // failed to download package + +extern int spmerrno; + +static const char *SPM_ERR_STRING[] = { + "Success", + "No root record", + "Dangerous root path", + "Package not found", + "Invalid package", + "Bad package checksum", + "Failed to fetch package", + NULL, +}; + +char *spm_strerror(int code); +void spm_perror(const char *msg); + +#endif //SPM_ERROR_HANDLER_H |