From 627c8c598f2115deea7b3c38b56b0c42180f6714 Mon Sep 17 00:00:00 2001 From: Patrick Monnerat Date: Wed, 31 Jan 2024 14:04:41 +0100 Subject: [PATCH] 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 #12826 --- packages/OS400/make-lib.sh | 33 ++++++++++++++------------------- 1 file changed, 14 insertions(+), 19 deletions(-) diff --git a/packages/OS400/make-lib.sh b/packages/OS400/make-lib.sh index 860cb5d76d..8179d816d5 100755 --- a/packages/OS400/make-lib.sh +++ b/packages/OS400/make-lib.sh @@ -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.