diff options
author | Jon Rumsey <jrumsey@uk.ibm.com> | 2020-01-27 09:23:43 +0100 |
---|---|---|
committer | Daniel Stenberg <daniel@haxx.se> | 2020-01-27 09:26:58 +0100 |
commit | 42287004610f0d3386b1c08a0fff8ed149f76c4e (patch) | |
tree | 74cd647b2623bf76e94b1f3726965bb05016ac2b /packages | |
parent | 9870b80f81789d45744a6639d97c5f1595f9fd70 (diff) | |
download | curl-42287004610f0d3386b1c08a0fff8ed149f76c4e.tar.gz |
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
Diffstat (limited to 'packages')
-rw-r--r-- | packages/OS400/ccsidcurl.c | 16 | ||||
-rw-r--r-- | packages/OS400/chkstrings.c | 62 | ||||
-rw-r--r-- | packages/OS400/make-lib.sh | 20 |
3 files changed, 82 insertions, 16 deletions
diff --git a/packages/OS400/ccsidcurl.c b/packages/OS400/ccsidcurl.c index 11e4c777e..64fb7393d 100644 --- a/packages/OS400/ccsidcurl.c +++ b/packages/OS400/ccsidcurl.c @@ -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); diff --git a/packages/OS400/chkstrings.c b/packages/OS400/chkstrings.c new file mode 100644 index 000000000..613540e42 --- /dev/null +++ b/packages/OS400/chkstrings.c @@ -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; +}
\ No newline at end of file diff --git a/packages/OS400/make-lib.sh b/packages/OS400/make-lib.sh index 410bef05b..fadb4c5f6 100644 --- a/packages/OS400/make-lib.sh +++ b/packages/OS400/make-lib.sh @@ -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" |