2
0
mirror of https://github.com/curl/curl.git synced 2025-04-24 16:40:32 +08:00

OS400: avoid using awk in the build scripts

Awk is a PASE program and its use may cause a failure depending on the
CCSID of the calling script (IBM bug?).

For this reason, revert to an sed-only solution to extract the exported
symbols from the header files.

Closes 
This commit is contained in:
Patrick Monnerat 2024-01-31 14:04:41 +01:00 committed by Daniel Stenberg
parent a911f4ffe6
commit 627c8c598f
No known key found for this signature in database
GPG Key ID: 5CC908FDB71E12C2

@ -98,26 +98,21 @@ fi
# Gather the list of symbols to export.
# First use awk to pull all CURL_EXTERN function prototypes from
# the header files, pass through to sed to strip CURL_DEPRECATED(..)
# and CURL_TEMP_PRINTF(..) then back to awk to pull the string
# immediately to the left of a bracket stripping any spaces or *'s.
# - Unfold lines from the header files so that they contain a semicolon.
# - Keep only CURL_EXTERN definitions.
# - Remove the CURL_DEPRECATED and CURL_TEMP_PRINTF macro calls.
# - Drop the parenthesized function arguments and what follows.
# - Keep the trailing function name only.
EXPORTS=`cat "${TOPDIR}"/include/curl/*.h "${SCRIPTDIR}/ccsidcurl.h" |
sed -e 'H;s/.*//;x;s/\n//;s/.*/& /' \
-e '/^CURL_EXTERN[[:space:]]/!d' \
-e '/\;/!{x;d;}' \
-e 's/ CURL_DEPRECATED([^)]*)//g' \
-e 's/ CURL_TEMP_PRINTF([^)]*)//g' \
-e 's/[[:space:]]*(.*$//' \
-e 's/^.*[^A-Za-z0-9_]\([A-Za-z0-9_]*\)$/\1/'`
EXPORTS=`awk '/^CURL_EXTERN/,/;/' \
"${TOPDIR}"/include/curl/*.h \
"${SCRIPTDIR}/ccsidcurl.h" |
sed 's/ CURL_DEPRECATED(.*)//g;s/ CURL_TEMP_PRINTF(.*)//g' |
awk '{br=index($0,"("); \
if (br) { \
for(c=br-1; ;c--) { \
if (c==1) { \
print substr($0,c,br-1); break \
} else if (match(substr($0, c, br-c), "[ *]") != 0) { \
print substr($0, c+1, br-c-1); break \
} \
} \
} \
}'`
# Create the service program exportation file in DB2 member if needed.