! 
! 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 the exception of CURLE_OK, all of the messages are at 
! the error severity level.  With the exception of 
! FTP_USER_PWD_INCORRECT, which is a shortened form of 
! FTP_USER_PASSWORD_INCORRECT, these are the same names as the 
! CURLE_ ones in include/curl.h
! 
.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>
URL_MALFORMAT_USER	<URL malformat user>
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>
FTP_USER_PWD_INCORRECT	<FTP user password incorrect>
FTP_WEIRD_PASS_REPLY	<FTP weird PASS reply>
FTP_WEIRD_USER_REPLY	<FTP weird USER reply>
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>
FTP_CANT_RECONNECT	<FTP can not reconnect>
FTP_COULDNT_SET_BINARY	<FTP could not set binary>
PARTIAL_FILE		<partial file>
FTP_COULDNT_RETR_FILE	<FTP could not RETR file>
FTP_WRITE_ERROR		<FTP write error>
FTP_QUOTE_ERROR		<FTP quote error>
HTTP_RETURNED_ERROR	<HTTP returned error>
WRITE_ERROR		<write error>
MALFORMAT_USER		<user name is illegally specified>
FTP_COULDNT_STOR_FILE	<FTP could not STOR file>
READ_ERROR		<read error, could not open/read file>
OUT_OF_MEMORY		<out of memory>
OPERATION_TIMEOUTED	<operation timed out, timeout time was reached>
FTP_COULDNT_SET_ASCII	<FTP could not set ASCII, TYPE A failed>
FTP_PORT_FAILED		<FTP PORT operation failed>
FTP_COULDNT_USE_REST	<FTP REST command failed>
FTP_COULDNT_GET_SIZE	<FTP SIZE command failed>
HTTP_RANGE_ERROR	<HTTP RANGE 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>
LIBRARY_NOT_FOUND	<library not found>
FUNCTION_NOT_FOUND	<function not found>
ABORTED_BY_CALLBACK	<aborted by callback>
BAD_FUNCTION_ARGUMENT	<bad function argument>
BAD_CALLING_ORDER	<bad calling order>
HTTP_PORT_FAILED	<HTTP port failed>
BAD_PASSWORD_ENTERED	<bad password entered, my_getpass() returns fail>
TOO_MANY_REDIRECTS	<too many redirects>
UNKNOWN_TELNET_OPTION	<unknown TELNET option>
TELNET_OPTION_SYNTAX	<malformed TELNET option syntax>
OBSOLETE		<obsolete, removed after 7.7.3>
SSL_PEER_CERTIFICATE	<SSL peer certificate was not OK>
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>
SHARE_IN_USE		<share is in use>
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>
FTP_SSL_FAILED		<requested FTP SSL level failed>
CURL_LAST		<CURLMSG.MSG is out of sync with the source code>

.END
