!***************************************************************************
!                                  _   _ ____  _
!  Project                     ___| | | |  _ \| |
!                             / __| | | | |_) | |
!                            | (__| |_| |  _ <| |___
!                             \___|\___/|_| \_\_____|
!
! Copyright (C) 1998 - 2020, Daniel Stenberg, <daniel@haxx.se>, et al.
!
! This software is licensed as described in the file COPYING, which
! you should have received as part of this distribution. The terms
! are also available at https://curl.haxx.se/docs/copyright.html.
!
! You may opt to use, copy, modify, merge, publish, distribute and/or sell
! copies of the Software, and permit persons to whom the Software is
! furnished to do so, under the terms of the COPYING file.
!
! This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
! KIND, either express or implied.
!
!##########################################################################
!
! 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>
WEIRD_SERVER_REPLY	<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
