!
! These VMS error codes are generated by taking apart the curl.h
! file and putting all the CURLE_* enum stuff into this file,
! CURLMSG.MSG.  An .SDL file is created from this file with
! MESSAGE/SDL.  The .H file is created using the freeware SDL tool
! against the .SDL file with SDL/ALPHA/LANG=CC command.
!
! With the exception of CURLE_OK, all of the messages are at
! the error severity level.  With the exception of
! PEER_FAILED_VERIF, which is a shortened form of
! PEER_FAILED_VERIFICATION, these are the same names as the
! CURLE_ ones in include/curl.h.  The Message Utility manual states
! "The combined length of the prefix and the message symbol name cannot
! exceed 31 characters."  With a prefix of five that leaves us with 26
! for the message name.
!
! If you update this file also update curlmsg_vms.h so that they are in sync
!
.TITLE		CURLMSG Message files
.FACILITY	CURL,1793	/PREFIX=CURL_
.BASE		1
.SEVERITY	SUCCESS
OK		<normal successful completion>

.SEVERITY	ERROR
UNSUPPORTED_PROTOCOL	<unsupported protocol>
FAILED_INIT		<failed init>
URL_MALFORMAT		<URL malformat>
OBSOLETE4		<obsolete error code>
COULDNT_RESOLVE_PROXY	<could not resolve proxy>
COULDNT_RESOLVE_HOST	<could not resolve host>
COULDNT_CONNECT		<could not connect>
FTP_WEIRD_SERVER_REPLY	<FTP weird server reply>
FTP_ACCESS_DENIED	<FTP access denied>
OBSOLETE10		<obsolete error code>
FTP_WEIRD_PASS_REPLY	<FTP weird PASS reply>
OBSOLETE12		<obsolete error code>
FTP_WEIRD_PASV_REPLY	<FTP weird PASV reply>
FTP_WEIRD_227_FORMAT	<FTP weird 227 format>
FTP_CANT_GET_HOST	<FTP can not get host>
OBSOLETE16		<obsolete error code>
FTP_COULDNT_SET_TYPE	<FTP could not set type>
PARTIAL_FILE		<partial file>
FTP_COULDNT_RETR_FILE	<FTP could not RETR file>
OBSOLETE20		<obsolete error code>
QUOTE_ERROR		<quote command error>
HTTP_RETURNED_ERROR	<HTTP returned error>
WRITE_ERROR		<write error>
OBSOLETE24    		<obsolete error code>
UPLOAD_FAILED		<failed upload command>
READ_ERROR		<read error, could not open/read file>
OUT_OF_MEMORY		<out of memory>
OPERATION_TIMEOUTED	<operation timed out, timeout time was reached>
OBSOLETE29		<obsolete error code>
FTP_PORT_FAILED		<FTP PORT operation failed>
FTP_COULDNT_USE_REST	<FTP REST command failed>
OBSOLETE32		<obsolete error code>
RANGE_ERROR		<RANGE command error>
HTTP_POST_ERROR		<HTTP POST error>
SSL_CONNECT_ERROR	<SSL connect error>
BAD_DOWNLOAD_RESUME	<bad download resume>
FILE_COULDNT_READ_FILE	<FILE could not read file>
LDAP_CANNOT_BIND	<LDAP cannot bind>
LDAP_SEARCH_FAILED	<LDAP search failed>
OBSOLETE40		<obsolete error code>
FUNCTION_NOT_FOUND	<function not found>
ABORTED_BY_CALLBACK	<aborted by callback>
BAD_FUNCTION_ARGUMENT	<bad function argument>
OBSOLETE44		<obsolete error code>
INTERFACE_FAILED	<CURLOPT_INTERFACE failed>
OBSOLETE46		<obsolete error code>
TOO_MANY_REDIRECTS	<too many redirects>
UNKNOWN_TELNET_OPTION	<unknown TELNET option>
TELNET_OPTION_SYNTAX	<malformed TELNET option syntax>
OBSOLETE50		<obsolete error code>
PEER_FAILED_VERIF	<peer certificate or fingerprint failed>
GOT_NOTHING		<got nothing>
SSL_ENGINE_NOTFOUND	<SSL crypto engine not found>
SSL_ENGINE_SETFAILED	<SSL can not set SSL crypto engine as default>
SEND_ERROR		<SEND error, failure sending network data>
RECV_ERROR		<RECV error, failure receiving network data>
OBSOLETE57  		<obsolete error code>
SSL_CERTPROBLEM		<SSL problem with the local certificate>
SSL_CIPHER              <SSL CIPHER, could not use specified cipher>
SSL_CACERT		<SSL CACERT, problem with the CA cert (path?)>
BAD_CONTENT_ENCODING	<unrecognized transfer encoding>
LDAP_INVALID_URL	<LDAP invalid url>
FILESIZE_EXCEEDED	<maximum file size exceeded>
USE_SSL_FAILED		<requested FTP SSL level failed>
SEND_FAIL_REWIND	<sending data requires a rewind that failed>
SSL_ENGINE_INITFAILED	<failed to initialise ENGINE>
LOGIN_DENIED		<user or password not accepted. failed to login>
TFTP_NOTFOUND		<file not found on server>
TFTP_PERM		<permission problem on server>
REMOTE_DISK_FULL	<out of disk space on server>
TFTP_ILLEGAL		<illegal TFTP operation>
TFTP_UNKNOWNID		<unknown transfer ID>
REMOTE_FILE_EXISTS	<file already exists>
TFTP_NOSUCHUSER		<no such user>
CONV_FAILED		<conversion failed>
CONV_REQD		<caller must register conversion callbacks>
SSL_CACERT_BADFILE	<could not load CACERT file>
REMOTE_FILE_NOT_FOUND	<remote file not found>
SSH			<unspecified error from the SSH layer>
SSL_SHUTDOWN_FAILED	<failed to shut down the SSL connection>
AGAIN			<socket not ready, wait and try again>
SSL_CRL_BADFILE		<could not load CRL file, missing or wrong format>
SSL_ISSUER_ERROR	<issuer check failed>
CURL_LAST		<CURLMSG.MSG is out of sync with the source code>

.END
