]> granicus.if.org Git - postgresql/commitdiff
Adjust yywrap macro for non-reentrant scanners for MSVC.
authorAndrew Dunstan <andrew@dunslane.net>
Mon, 25 Apr 2011 13:10:59 +0000 (09:10 -0400)
committerAndrew Dunstan <andrew@dunslane.net>
Mon, 25 Apr 2011 13:10:59 +0000 (09:10 -0400)
The MSVC compiler complains if a macro is called with less arguments
than its definition provides for. flex generates a macro with one
argument for yywrap, but only supplies the argument for reentrant
scanners, so we remove the useless argument in the non-reentrant
case to silence the warning.

src/tools/msvc/pgflex.bat

index da7c33d7af29c647c41d7af9f77b0dd2db4b35e6..58870f05121b2882f619e48a7e9dc3f411c26e90 100755 (executable)
@@ -25,9 +25,19 @@ if "%1" == "contrib\seg\segscan.l" call :generate %1 contrib\seg\segscan.c
 echo Unknown flex input: %1
 exit 1
 
+REM For non-reentrant scanners we need to fix up the yywrap macro definition
+REM to keep the MS compiler happy.
+REM For reentrant scanners (like the core scanner) we do not
+REM need to (and must not) change the yywrap definition.
 :generate
 flex %3 -o%2 %1
-exit %errorlevel%
+if errorlevel 1 exit %errorlevel%
+perl -n -e "exit 1 if /^\%%option\s+reentrant/;" %1
+if errorlevel 1 exit 0
+perl -pi.bak -e "s/yywrap\(n\)/yywrap()/;" %2
+if errorlevel 1 exit %errorlevel%
+del %2.bak
+exit 0
 
 :noflex
 echo WARNING! flex install not found, attempting to build without