mirror of
https://github.com/moparisthebest/curl
synced 2024-11-04 16:45:06 -05:00
urldata: do string enums without #ifdefs for build scripts
... and check for inconsistencies for OS400 at build time with the new chkstrings tool. Closes #4822
This commit is contained in:
parent
9870b80f81
commit
4228700461
@ -1450,6 +1450,14 @@ struct DynamicStatic {
|
||||
|
||||
struct Curl_multi; /* declared and used only in multi.c */
|
||||
|
||||
/*
|
||||
* This enumeration MUST not use conditional directives (#ifdefs), new
|
||||
* null terminated strings MUST be added to the enumeration immediately
|
||||
* before STRING_LASTZEROTERMINATED, binary fields immediately before
|
||||
* STRING_LAST. When doing so, ensure that the packages/OS400/chkstring.c
|
||||
* test is updated and applicable changes for EBCDIC to ASCII conversion
|
||||
* are catered for in curl_easy_setopt_ccsid()
|
||||
*/
|
||||
enum dupstring {
|
||||
STRING_CERT_ORIG, /* client certificate file name */
|
||||
STRING_CERT_PROXY, /* client certificate file name */
|
||||
@ -1506,36 +1514,35 @@ enum dupstring {
|
||||
STRING_RTSP_SESSION_ID, /* Session ID to use */
|
||||
STRING_RTSP_STREAM_URI, /* Stream URI for this request */
|
||||
STRING_RTSP_TRANSPORT, /* Transport for this session */
|
||||
#ifdef USE_SSH
|
||||
|
||||
STRING_SSH_PRIVATE_KEY, /* path to the private key file for auth */
|
||||
STRING_SSH_PUBLIC_KEY, /* path to the public key file for auth */
|
||||
STRING_SSH_HOST_PUBLIC_KEY_MD5, /* md5 of host public key in ascii hex */
|
||||
STRING_SSH_KNOWNHOSTS, /* file name of knownhosts file */
|
||||
#endif
|
||||
|
||||
STRING_PROXY_SERVICE_NAME, /* Proxy service name */
|
||||
STRING_SERVICE_NAME, /* Service name */
|
||||
STRING_MAIL_FROM,
|
||||
STRING_MAIL_AUTH,
|
||||
|
||||
#ifdef USE_TLS_SRP
|
||||
STRING_TLSAUTH_USERNAME_ORIG, /* TLS auth <username> */
|
||||
STRING_TLSAUTH_USERNAME_PROXY, /* TLS auth <username> */
|
||||
STRING_TLSAUTH_PASSWORD_ORIG, /* TLS auth <password> */
|
||||
STRING_TLSAUTH_PASSWORD_PROXY, /* TLS auth <password> */
|
||||
#endif
|
||||
|
||||
STRING_BEARER, /* <bearer>, if used */
|
||||
#ifdef USE_UNIX_SOCKETS
|
||||
|
||||
STRING_UNIX_SOCKET_PATH, /* path to Unix socket, if used */
|
||||
#endif
|
||||
|
||||
STRING_TARGET, /* CURLOPT_REQUEST_TARGET */
|
||||
STRING_DOH, /* CURLOPT_DOH_URL */
|
||||
#ifdef USE_ALTSVC
|
||||
|
||||
STRING_ALTSVC, /* CURLOPT_ALTSVC */
|
||||
#endif
|
||||
|
||||
STRING_SASL_AUTHZID, /* CURLOPT_SASL_AUTHZID */
|
||||
#ifndef CURL_DISABLE_PROXY
|
||||
|
||||
STRING_TEMP_URL, /* temp URL storage for proxy use */
|
||||
#endif
|
||||
|
||||
/* -- end of zero-terminated strings -- */
|
||||
|
||||
STRING_LASTZEROTERMINATED,
|
||||
|
@ -1130,22 +1130,6 @@ curl_easy_setopt_ccsid(CURL *curl, CURLoption tag, ...)
|
||||
char *cp;
|
||||
unsigned int ccsid;
|
||||
curl_off_t pfsize;
|
||||
static char testwarn = 1;
|
||||
|
||||
/* Warns if this procedure has not been updated when the dupstring enum
|
||||
changes.
|
||||
We (try to) do it only once: there is no need to issue several times
|
||||
the same message; but since threadsafeness is not handled here,
|
||||
this may occur (and we don't care!). */
|
||||
|
||||
if(testwarn) {
|
||||
testwarn = 0;
|
||||
|
||||
if((int) STRING_LASTZEROTERMINATED != (int) STRING_SASL_AUTHZID + 1 ||
|
||||
(int) STRING_LAST != (int) STRING_COPYPOSTFIELDS + 1)
|
||||
curl_mfprintf(stderr,
|
||||
"*** WARNING: curl_easy_setopt_ccsid() should be reworked ***\n");
|
||||
}
|
||||
|
||||
data = (struct Curl_easy *) curl;
|
||||
va_start(arg, tag);
|
||||
|
62
packages/OS400/chkstrings.c
Normal file
62
packages/OS400/chkstrings.c
Normal file
@ -0,0 +1,62 @@
|
||||
/***************************************************************************
|
||||
* _ _ ____ _
|
||||
* 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.
|
||||
*
|
||||
***************************************************************************/
|
||||
|
||||
#include <stdlib.h>
|
||||
#pragma enum(int)
|
||||
#include "curl_setup.h"
|
||||
#include "urldata.h"
|
||||
|
||||
/* The following defines indicate the expected dupstring enum values
|
||||
* in curl_easy_setopt_ccsid() in packages/OS400/ccsidcurl.c. If a
|
||||
* mismatch is flagged during the build, it indicates that curl_easy_setopt_ccsid()
|
||||
* may need updating to perform data EBCDIC to ASCII data conversion on
|
||||
* the string.
|
||||
* Once any applicable changes to curl_easy_setopt_ccsid() have been
|
||||
* made, the EXPECTED_STRING_LASTZEROTERMINATED/EXPECTED_STRING_LAST
|
||||
* values can be updated to match the latest enum values in urldata.h.
|
||||
*/
|
||||
#define EXPECTED_STRING_LASTZEROTERMINATED (STRING_TEMP_URL + 1)
|
||||
#define EXPECTED_STRING_LAST (STRING_COPYPOSTFIELDS + 1)
|
||||
|
||||
int main(int argc, char *argv[])
|
||||
{
|
||||
int rc = 0;
|
||||
|
||||
if (STRING_LASTZEROTERMINATED != EXPECTED_STRING_LASTZEROTERMINATED)
|
||||
{
|
||||
fprintf(stderr,"STRING_LASTZEROTERMINATED(%d) is not expected value(%d).\n",
|
||||
STRING_LASTZEROTERMINATED, EXPECTED_STRING_LASTZEROTERMINATED);
|
||||
rc += 1;
|
||||
}
|
||||
if (STRING_LAST != EXPECTED_STRING_LAST)
|
||||
{
|
||||
fprintf(stderr,"STRING_LAST(%d) is not expected value(%d).\n",
|
||||
STRING_LAST, EXPECTED_STRING_LAST);
|
||||
rc += 2;
|
||||
}
|
||||
if (rc != 0)
|
||||
{
|
||||
fprintf(stderr,"curl_easy_setopt_ccsid() in packages/OS400/ccsidcurl.c"
|
||||
" may need updating if new strings are provided as input via the curl API.\n");
|
||||
}
|
||||
return rc;
|
||||
}
|
@ -46,6 +46,26 @@ sed -e ':begin' \
|
||||
|
||||
INCLUDES="'`pwd`'"
|
||||
|
||||
# Create a small C program to check ccsidcurl.c is up to date
|
||||
if action_needed "${LIBIFSNAME}/CHKSTRINGS.PGM"
|
||||
then
|
||||
CMD="CRTBNDC PGM(${TARGETLIB}/CHKSTRINGS) SRCSTMF('${SCRIPTDIR}/chkstrings.c')"
|
||||
CMD="${CMD} INCDIR('${TOPDIR}/include/curl' '${TOPDIR}/include' '${SRCDIR}' ${INCLUDES})"
|
||||
system -i "${CMD}"
|
||||
if [ $? -ne 0 ]
|
||||
then
|
||||
echo "ERROR: Failed to build CHKSTRINGS *PGM object!"
|
||||
exit 2
|
||||
else
|
||||
${LIBIFSNAME}/CHKSTRINGS.PGM
|
||||
if [ $? -ne 0 ]
|
||||
then
|
||||
echo "ERROR: CHKSTRINGS failed!"
|
||||
exit 2
|
||||
fi
|
||||
fi
|
||||
fi
|
||||
|
||||
make_module OS400SYS "${SCRIPTDIR}/os400sys.c"
|
||||
make_module CCSIDCURL "${SCRIPTDIR}/ccsidcurl.c"
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user