diff --git a/msvc/lcurl.vcproj b/msvc/lcurl.vcproj index 80bcd0a..c82ac65 100644 --- a/msvc/lcurl.vcproj +++ b/msvc/lcurl.vcproj @@ -211,6 +211,22 @@ RelativePath="..\src\lceasy.h" > + + + + + + + + diff --git a/src/lcerr_easy.h b/src/lcerr_easy.h new file mode 100644 index 0000000..2ddd56b --- /dev/null +++ b/src/lcerr_easy.h @@ -0,0 +1,96 @@ +ERR_ENTRY ( OK ) +ERR_ENTRY ( UNSUPPORTED_PROTOCOL ) +ERR_ENTRY ( FAILED_INIT ) +ERR_ENTRY ( URL_MALFORMAT ) +ERR_ENTRY ( NOT_BUILT_IN ) +ERR_ENTRY ( COULDNT_RESOLVE_PROXY ) +ERR_ENTRY ( COULDNT_RESOLVE_HOST ) +ERR_ENTRY ( COULDNT_CONNECT ) +ERR_ENTRY ( FTP_WEIRD_SERVER_REPLY ) +ERR_ENTRY ( REMOTE_ACCESS_DENIED ) +#if LCURL_CURL_VER_GE(7,31,0) +ERR_ENTRY ( FTP_ACCEPT_FAILED ) +#endif +ERR_ENTRY ( FTP_WEIRD_PASS_REPLY ) +#if LCURL_CURL_VER_GE(7,24,0) +ERR_ENTRY ( FTP_ACCEPT_TIMEOUT ) +#endif +ERR_ENTRY ( FTP_WEIRD_PASV_REPLY ) +ERR_ENTRY ( FTP_WEIRD_227_FORMAT ) +ERR_ENTRY ( FTP_CANT_GET_HOST ) +ERR_ENTRY ( OBSOLETE16 ) +ERR_ENTRY ( FTP_COULDNT_SET_TYPE ) +ERR_ENTRY ( PARTIAL_FILE ) +ERR_ENTRY ( FTP_COULDNT_RETR_FILE ) +ERR_ENTRY ( OBSOLETE20 ) +ERR_ENTRY ( QUOTE_ERROR ) +ERR_ENTRY ( HTTP_RETURNED_ERROR ) +ERR_ENTRY ( WRITE_ERROR ) +ERR_ENTRY ( OBSOLETE24 ) +ERR_ENTRY ( UPLOAD_FAILED ) +ERR_ENTRY ( READ_ERROR ) +ERR_ENTRY ( OUT_OF_MEMORY ) +ERR_ENTRY ( OPERATION_TIMEDOUT ) +ERR_ENTRY ( OBSOLETE29 ) +ERR_ENTRY ( FTP_PORT_FAILED ) +ERR_ENTRY ( FTP_COULDNT_USE_REST ) +ERR_ENTRY ( OBSOLETE32 ) +ERR_ENTRY ( RANGE_ERROR ) +ERR_ENTRY ( HTTP_POST_ERROR ) +ERR_ENTRY ( SSL_CONNECT_ERROR ) +ERR_ENTRY ( BAD_DOWNLOAD_RESUME ) +ERR_ENTRY ( FILE_COULDNT_READ_FILE ) +ERR_ENTRY ( LDAP_CANNOT_BIND ) +ERR_ENTRY ( LDAP_SEARCH_FAILED ) +ERR_ENTRY ( OBSOLETE40 ) +ERR_ENTRY ( FUNCTION_NOT_FOUND ) +ERR_ENTRY ( ABORTED_BY_CALLBACK ) +ERR_ENTRY ( BAD_FUNCTION_ARGUMENT ) +ERR_ENTRY ( OBSOLETE44 ) +ERR_ENTRY ( INTERFACE_FAILED ) +ERR_ENTRY ( OBSOLETE46 ) +ERR_ENTRY ( TOO_MANY_REDIRECTS ) +ERR_ENTRY ( UNKNOWN_OPTION ) +ERR_ENTRY ( TELNET_OPTION_SYNTAX ) +ERR_ENTRY ( OBSOLETE50 ) +ERR_ENTRY ( PEER_FAILED_VERIFICATION ) +ERR_ENTRY ( GOT_NOTHING ) +ERR_ENTRY ( SSL_ENGINE_NOTFOUND ) +ERR_ENTRY ( SSL_ENGINE_SETFAILED ) +ERR_ENTRY ( SEND_ERROR ) +ERR_ENTRY ( RECV_ERROR ) +ERR_ENTRY ( OBSOLETE57 ) +ERR_ENTRY ( SSL_CERTPROBLEM ) +ERR_ENTRY ( SSL_CIPHER ) +ERR_ENTRY ( SSL_CACERT ) +ERR_ENTRY ( BAD_CONTENT_ENCODING ) +ERR_ENTRY ( LDAP_INVALID_URL ) +ERR_ENTRY ( FILESIZE_EXCEEDED ) +ERR_ENTRY ( USE_SSL_FAILED ) +ERR_ENTRY ( SEND_FAIL_REWIND ) +ERR_ENTRY ( SSL_ENGINE_INITFAILED ) +ERR_ENTRY ( LOGIN_DENIED ) +ERR_ENTRY ( TFTP_NOTFOUND ) +ERR_ENTRY ( TFTP_PERM ) +ERR_ENTRY ( REMOTE_DISK_FULL ) +ERR_ENTRY ( TFTP_ILLEGAL ) +ERR_ENTRY ( TFTP_UNKNOWNID ) +ERR_ENTRY ( REMOTE_FILE_EXISTS ) +ERR_ENTRY ( TFTP_NOSUCHUSER ) +ERR_ENTRY ( CONV_FAILED ) +ERR_ENTRY ( CONV_REQD ) +ERR_ENTRY ( SSL_CACERT_BADFILE ) +ERR_ENTRY ( REMOTE_FILE_NOT_FOUND ) +ERR_ENTRY ( SSH ) +ERR_ENTRY ( SSL_SHUTDOWN_FAILED ) +ERR_ENTRY ( AGAIN ) +ERR_ENTRY ( SSL_CRL_BADFILE ) +ERR_ENTRY ( SSL_ISSUER_ERROR ) +ERR_ENTRY ( FTP_PRET_FAILED ) +ERR_ENTRY ( RTSP_CSEQ_ERROR ) +ERR_ENTRY ( RTSP_SESSION_ERROR ) +ERR_ENTRY ( FTP_BAD_FILE_LIST ) +ERR_ENTRY ( CHUNK_FAILED ) +#if LCURL_CURL_VER_GE(7,30,0) +ERR_ENTRY ( NO_CONNECTION_AVAILABLE ) +#endif diff --git a/src/lcerr_form.h b/src/lcerr_form.h new file mode 100644 index 0000000..60ca8ce --- /dev/null +++ b/src/lcerr_form.h @@ -0,0 +1,8 @@ +ERR_ENTRY ( OK ) +ERR_ENTRY ( MEMORY ) +ERR_ENTRY ( OPTION_TWICE ) +ERR_ENTRY ( NULL ) +ERR_ENTRY ( UNKNOWN_OPTION ) +ERR_ENTRY ( INCOMPLETE ) +ERR_ENTRY ( ILLEGAL_ARRAY ) +ERR_ENTRY ( DISABLED ) diff --git a/src/lcerr_multi.h b/src/lcerr_multi.h new file mode 100644 index 0000000..37d3b44 --- /dev/null +++ b/src/lcerr_multi.h @@ -0,0 +1,11 @@ +ERR_ENTRY ( OK ) +ERR_ENTRY ( CALL_MULTI_PERFORM ) +ERR_ENTRY ( BAD_HANDLE ) +ERR_ENTRY ( BAD_EASY_HANDLE ) +ERR_ENTRY ( OUT_OF_MEMORY ) +ERR_ENTRY ( INTERNAL_ERROR ) +ERR_ENTRY ( BAD_SOCKET ) +ERR_ENTRY ( UNKNOWN_OPTION ) +#if LCURL_CURL_VER_GE(7,32,1) +ERR_ENTRY ( ADDED_ALREADY ) +#endif diff --git a/src/lcerr_share.h b/src/lcerr_share.h new file mode 100644 index 0000000..7027c2a --- /dev/null +++ b/src/lcerr_share.h @@ -0,0 +1,8 @@ +ERR_ENTRY ( OK ) +ERR_ENTRY ( BAD_OPTION ) +ERR_ENTRY ( IN_USE ) +ERR_ENTRY ( INVALID ) +ERR_ENTRY ( NOMEM ) +#if LCURL_CURL_VER_GE(7,23,0) +ERR_ENTRY ( NOT_BUILT_IN ) +#endif diff --git a/src/lcerror.c b/src/lcerror.c index 6b5593c..8c3d44a 100644 --- a/src/lcerror.c +++ b/src/lcerror.c @@ -11,6 +11,7 @@ #include "lcurl.h" #include "lcerror.h" #include +#include "lcutils.h" #define LCURL_ERROR_NAME LCURL_PREFIX" Error" static const char *LCURL_ERROR = LCURL_ERROR_NAME; @@ -23,162 +24,42 @@ typedef struct lcurl_error_tag{ //{ static const char* lcurl_err_easy_mnemo(int err){ -#define RETURN_IF(E) case CURLE_##E: return #E; +#define ERR_ENTRY(E) case CURLE_##E: return #E; switch (err){ - RETURN_IF ( OK ) - RETURN_IF ( UNSUPPORTED_PROTOCOL ) - RETURN_IF ( FAILED_INIT ) - RETURN_IF ( URL_MALFORMAT ) - RETURN_IF ( NOT_BUILT_IN ) - RETURN_IF ( COULDNT_RESOLVE_PROXY ) - RETURN_IF ( COULDNT_RESOLVE_HOST ) - RETURN_IF ( COULDNT_CONNECT ) - RETURN_IF ( FTP_WEIRD_SERVER_REPLY ) - RETURN_IF ( REMOTE_ACCESS_DENIED ) -#if LCURL_CURL_VER_GE(7,24,0) - RETURN_IF ( FTP_ACCEPT_FAILED ) -#endif - RETURN_IF ( FTP_WEIRD_PASS_REPLY ) -#if LCURL_CURL_VER_GE(7,24,0) - RETURN_IF ( FTP_ACCEPT_TIMEOUT ) -#endif - RETURN_IF ( FTP_WEIRD_PASV_REPLY ) - RETURN_IF ( FTP_WEIRD_227_FORMAT ) - RETURN_IF ( FTP_CANT_GET_HOST ) - RETURN_IF ( OBSOLETE16 ) - RETURN_IF ( FTP_COULDNT_SET_TYPE ) - RETURN_IF ( PARTIAL_FILE ) - RETURN_IF ( FTP_COULDNT_RETR_FILE ) - RETURN_IF ( OBSOLETE20 ) - RETURN_IF ( QUOTE_ERROR ) - RETURN_IF ( HTTP_RETURNED_ERROR ) - RETURN_IF ( WRITE_ERROR ) - RETURN_IF ( OBSOLETE24 ) - RETURN_IF ( UPLOAD_FAILED ) - RETURN_IF ( READ_ERROR ) - RETURN_IF ( OUT_OF_MEMORY ) - RETURN_IF ( OPERATION_TIMEDOUT ) - RETURN_IF ( OBSOLETE29 ) - RETURN_IF ( FTP_PORT_FAILED ) - RETURN_IF ( FTP_COULDNT_USE_REST ) - RETURN_IF ( OBSOLETE32 ) - RETURN_IF ( RANGE_ERROR ) - RETURN_IF ( HTTP_POST_ERROR ) - RETURN_IF ( SSL_CONNECT_ERROR ) - RETURN_IF ( BAD_DOWNLOAD_RESUME ) - RETURN_IF ( FILE_COULDNT_READ_FILE ) - RETURN_IF ( LDAP_CANNOT_BIND ) - RETURN_IF ( LDAP_SEARCH_FAILED ) - RETURN_IF ( OBSOLETE40 ) - RETURN_IF ( FUNCTION_NOT_FOUND ) - RETURN_IF ( ABORTED_BY_CALLBACK ) - RETURN_IF ( BAD_FUNCTION_ARGUMENT ) - RETURN_IF ( OBSOLETE44 ) - RETURN_IF ( INTERFACE_FAILED ) - RETURN_IF ( OBSOLETE46 ) - RETURN_IF ( TOO_MANY_REDIRECTS ) - RETURN_IF ( UNKNOWN_OPTION ) - RETURN_IF ( TELNET_OPTION_SYNTAX ) - RETURN_IF ( OBSOLETE50 ) - RETURN_IF ( PEER_FAILED_VERIFICATION ) - RETURN_IF ( GOT_NOTHING ) - RETURN_IF ( SSL_ENGINE_NOTFOUND ) - RETURN_IF ( SSL_ENGINE_SETFAILED ) - RETURN_IF ( SEND_ERROR ) - RETURN_IF ( RECV_ERROR ) - RETURN_IF ( OBSOLETE57 ) - RETURN_IF ( SSL_CERTPROBLEM ) - RETURN_IF ( SSL_CIPHER ) - RETURN_IF ( SSL_CACERT ) - RETURN_IF ( BAD_CONTENT_ENCODING ) - RETURN_IF ( LDAP_INVALID_URL ) - RETURN_IF ( FILESIZE_EXCEEDED ) - RETURN_IF ( USE_SSL_FAILED ) - RETURN_IF ( SEND_FAIL_REWIND ) - RETURN_IF ( SSL_ENGINE_INITFAILED ) - RETURN_IF ( LOGIN_DENIED ) - RETURN_IF ( TFTP_NOTFOUND ) - RETURN_IF ( TFTP_PERM ) - RETURN_IF ( REMOTE_DISK_FULL ) - RETURN_IF ( TFTP_ILLEGAL ) - RETURN_IF ( TFTP_UNKNOWNID ) - RETURN_IF ( REMOTE_FILE_EXISTS ) - RETURN_IF ( TFTP_NOSUCHUSER ) - RETURN_IF ( CONV_FAILED ) - RETURN_IF ( CONV_REQD ) - RETURN_IF ( SSL_CACERT_BADFILE ) - RETURN_IF ( REMOTE_FILE_NOT_FOUND ) - RETURN_IF ( SSH ) - RETURN_IF ( SSL_SHUTDOWN_FAILED ) - RETURN_IF ( AGAIN ) - RETURN_IF ( SSL_CRL_BADFILE ) - RETURN_IF ( SSL_ISSUER_ERROR ) - RETURN_IF ( FTP_PRET_FAILED ) - RETURN_IF ( RTSP_CSEQ_ERROR ) - RETURN_IF ( RTSP_SESSION_ERROR ) - RETURN_IF ( FTP_BAD_FILE_LIST ) - RETURN_IF ( CHUNK_FAILED ) -#if LCURL_CURL_VER_GE(7,30,0) - RETURN_IF ( NO_CONNECTION_AVAILABLE ) -#endif + #include "lcerr_easy.h" } return "UNKNOWN"; -#undef RETURN_IF +#undef ERR_ENTRY } static const char* lcurl_err_multi_mnemo(int err){ -#define RETURN_IF(E) case CURLM_##E: return #E; +#define ERR_ENTRY(E) case CURLM_##E: return #E; switch (err){ - RETURN_IF ( OK ) - RETURN_IF ( CALL_MULTI_PERFORM ) - RETURN_IF ( BAD_HANDLE ) - RETURN_IF ( BAD_EASY_HANDLE ) - RETURN_IF ( OUT_OF_MEMORY ) - RETURN_IF ( INTERNAL_ERROR ) - RETURN_IF ( BAD_SOCKET ) - RETURN_IF ( UNKNOWN_OPTION ) -#if LCURL_CURL_VER_GE(7,32,1) - RETURN_IF ( ADDED_ALREADY ) -#endif + #include "lcerr_multi.h" } return "UNKNOWN"; -#undef RETURN_IF +#undef ERR_ENTRY } static const char* lcurl_err_share_mnemo(int err){ -#define RETURN_IF(E) case CURLSHE_##E: return #E; +#define ERR_ENTRY(E) case CURLSHE_##E: return #E; switch (err){ - RETURN_IF ( OK ) - RETURN_IF ( BAD_OPTION ) - RETURN_IF ( IN_USE ) - RETURN_IF ( INVALID ) - RETURN_IF ( NOMEM ) -#if LCURL_CURL_VER_GE(7,23,0) - RETURN_IF ( NOT_BUILT_IN ) -#endif + #include "lcerr_share.h" } return "UNKNOWN"; -#undef RETURN_IF +#undef ERR_ENTRY } static const char* lcurl_err_form_mnemo(int err){ #define RETURN_IF(E) case CURL_FORMADD_##E: return #E; switch (err){ - RETURN_IF ( OK ) - RETURN_IF ( MEMORY ) - RETURN_IF ( OPTION_TWICE ) - RETURN_IF ( NULL ) - RETURN_IF ( UNKNOWN_OPTION ) - RETURN_IF ( INCOMPLETE ) - RETURN_IF ( ILLEGAL_ARRAY ) - RETURN_IF ( DISABLED ) } return "UNKNOWN"; diff --git a/src/lcutils.h b/src/lcutils.h index 8c4902c..a16823f 100644 --- a/src/lcutils.h +++ b/src/lcutils.h @@ -3,8 +3,8 @@ #include "lcurl.h" -#define LCURL_MAKE_VERSION(MIN, MAJ, PAT) (MIN<<16) + (MAJ<<8) + PAT -#define LCURL_CURL_VER_GE(MIN, MAJ, PAT) LIBCURL_VERSION_NUM >= LCURL_MAKE_VERSION(MIN, MAJ, PAT) +#define LCURL_MAKE_VERSION(MIN, MAJ, PAT) ((MIN<<16) + (MAJ<<8) + PAT) +#define LCURL_CURL_VER_GE(MIN, MAJ, PAT) (LIBCURL_VERSION_NUM >= LCURL_MAKE_VERSION(MIN, MAJ, PAT)) typedef struct lcurl_const_tag{ const char *name;