1@echo off 2rem *************************************************************************** 3rem * _ _ ____ _ 4rem * Project ___| | | | _ \| | 5rem * / __| | | | |_) | | 6rem * | (__| |_| | _ <| |___ 7rem * \___|\___/|_| \_\_____| 8rem * 9rem * Copyright (C) Steve Holme, <steve_holme@hotmail.com>. 10rem * 11rem * This software is licensed as described in the file COPYING, which 12rem * you should have received as part of this distribution. The terms 13rem * are also available at https://curl.se/docs/copyright.html. 14rem * 15rem * You may opt to use, copy, modify, merge, publish, distribute and/or sell 16rem * copies of the Software, and permit persons to whom the Software is 17rem * furnished to do so, under the terms of the COPYING file. 18rem * 19rem * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY 20rem * KIND, either express or implied. 21rem * 22rem * SPDX-License-Identifier: curl 23rem * 24rem *************************************************************************** 25 26:begin 27 rem Check we are running on a Windows NT derived OS 28 if not "%OS%" == "Windows_NT" goto nodos 29 30 rem Set our variables 31 setlocal 32 set CHECK_LIB=TRUE 33 set CHECK_SRC=TRUE 34 set CHECK_TESTS=TRUE 35 set CHECK_EXAMPLES=TRUE 36 set SRC_DIR= 37 set CUR_DIR=%cd% 38 set ARG0_DIR=%~dp0 39 40:parseArgs 41 if "%~1" == "" goto prerequisites 42 43 if /i "%~1" == "-?" ( 44 goto syntax 45 ) else if /i "%~1" == "-h" ( 46 goto syntax 47 ) else if /i "%~1" == "-help" ( 48 goto syntax 49 ) else if /i "%~1" == "lib" ( 50 set CHECK_LIB=TRUE 51 set CHECK_SRC=FALSE 52 set CHECK_TESTS=FALSE 53 set CHECK_EXAMPLES=FALSE 54 ) else if /i "%~1" == "src" ( 55 set CHECK_LIB=FALSE 56 set CHECK_SRC=TRUE 57 set CHECK_TESTS=FALSE 58 set CHECK_EXAMPLES=FALSE 59 ) else if /i "%~1" == "tests" ( 60 set CHECK_LIB=FALSE 61 set CHECK_SRC=FALSE 62 set CHECK_TESTS=TRUE 63 set CHECK_EXAMPLES=FALSE 64 ) else if /i "%~1" == "examples" ( 65 set CHECK_LIB=FALSE 66 set CHECK_SRC=FALSE 67 set CHECK_TESTS=FALSE 68 set CHECK_EXAMPLES=TRUE 69 ) else ( 70 if not defined SRC_DIR ( 71 set SRC_DIR=%~1% 72 ) else ( 73 goto unknown 74 ) 75 ) 76 77 shift & goto parseArgs 78 79:prerequisites 80 rem Check we have Perl in our path 81 perl --version <NUL 1>NUL 2>&1 82 if errorlevel 1 ( 83 rem It isn't so check we have it installed and set the path if it is 84 if exist "%SystemDrive%\Perl" ( 85 set "PATH=%SystemDrive%\Perl\bin;%PATH%" 86 ) else ( 87 if exist "%SystemDrive%\Perl64" ( 88 set "PATH=%SystemDrive%\Perl64\bin;%PATH%" 89 ) else ( 90 goto noperl 91 ) 92 ) 93 ) 94 95:configure 96 if "%SRC_DIR%" == "" ( 97 rem Are we being executed from the "projects" or main directory? 98 if "%CUR_DIR%\" == "%ARG0_DIR%" ( 99 set SRC_DIR=.. 100 ) else if exist projects ( 101 if exist docs ( 102 if exist lib ( 103 if exist src ( 104 if exist tests ( 105 set SRC_DIR=. 106 ) 107 ) 108 ) 109 ) 110 ) 111 ) 112 if not exist "%SRC_DIR%" goto nosrc 113 114:start 115 if "%CHECK_SRC%" == "TRUE" ( 116 rem Check the src directory 117 if exist %SRC_DIR%\src ( 118 for /f "delims=" %%i in ('dir "%SRC_DIR%\src\*.c.*" /b 2^>NUL') do @perl "%SRC_DIR%\scripts\checksrc.pl" "-D%SRC_DIR%\src" -Wtool_ca_embed.c -Wtool_hugehelp.c "%%i" 119 for /f "delims=" %%i in ('dir "%SRC_DIR%\src\*.h.*" /b 2^>NUL') do @perl "%SRC_DIR%\scripts\checksrc.pl" "-D%SRC_DIR%\src" "%%i" 120 ) 121 ) 122 123 if "%CHECK_LIB%" == "TRUE" ( 124 rem Check the lib directory 125 if exist %SRC_DIR%\lib ( 126 for /f "delims=" %%i in ('dir "%SRC_DIR%\lib\*.c.*" /b 2^>NUL') do @perl "%SRC_DIR%\scripts\checksrc.pl" "-D%SRC_DIR%\lib" "%%i" 127 for /f "delims=" %%i in ('dir "%SRC_DIR%\lib\*.h.*" /b 2^>NUL') do @perl "%SRC_DIR%\scripts\checksrc.pl" "-D%SRC_DIR%\lib" -Wcurl_config.h.cmake -Wcurl_config.h.in -Wcurl_config.h "%%i" 128 ) 129 130 rem Check the lib\vauth directory 131 if exist %SRC_DIR%\lib\vauth ( 132 for /f "delims=" %%i in ('dir "%SRC_DIR%\lib\vauth\*.c.*" /b 2^>NUL') do @perl "%SRC_DIR%\scripts\checksrc.pl" "-D%SRC_DIR%\lib\vauth" "%%i" 133 for /f "delims=" %%i in ('dir "%SRC_DIR%\lib\vauth\*.h.*" /b 2^>NUL') do @perl "%SRC_DIR%\scripts\checksrc.pl" "-D%SRC_DIR%\lib\vauth" "%%i" 134 ) 135 136 rem Check the lib\vquic directory 137 if exist %SRC_DIR%\lib\vquic ( 138 for /f "delims=" %%i in ('dir "%SRC_DIR%\lib\vquic\*.c.*" /b 2^>NUL') do @perl "%SRC_DIR%\scripts\checksrc.pl" "-D%SRC_DIR%\lib\vquic" "%%i" 139 for /f "delims=" %%i in ('dir "%SRC_DIR%\lib\vquic\*.h.*" /b 2^>NUL') do @perl "%SRC_DIR%\scripts\checksrc.pl" "-D%SRC_DIR%\lib\vquic" "%%i" 140 ) 141 142 rem Check the lib\vssh directory 143 if exist %SRC_DIR%\lib\vssh ( 144 for /f "delims=" %%i in ('dir "%SRC_DIR%\lib\vssh\*.c.*" /b 2^>NUL') do @perl "%SRC_DIR%\scripts\checksrc.pl" "-D%SRC_DIR%\lib\vssh" "%%i" 145 for /f "delims=" %%i in ('dir "%SRC_DIR%\lib\vssh\*.h.*" /b 2^>NUL') do @perl "%SRC_DIR%\scripts\checksrc.pl" "-D%SRC_DIR%\lib\vssh" "%%i" 146 ) 147 148 rem Check the lib\vtls directory 149 if exist %SRC_DIR%\lib\vtls ( 150 for /f "delims=" %%i in ('dir "%SRC_DIR%\lib\vtls\*.c.*" /b 2^>NUL') do @perl "%SRC_DIR%\scripts\checksrc.pl" "-D%SRC_DIR%\lib\vtls" "%%i" 151 for /f "delims=" %%i in ('dir "%SRC_DIR%\lib\vtls\*.h.*" /b 2^>NUL') do @perl "%SRC_DIR%\scripts\checksrc.pl" "-D%SRC_DIR%\lib\vtls" "%%i" 152 ) 153 ) 154 155 if "%CHECK_TESTS%" == "TRUE" ( 156 rem Check the tests\libtest directory 157 if exist %SRC_DIR%\tests\libtest ( 158 for /f "delims=" %%i in ('dir "%SRC_DIR%\tests\libtest\*.c.*" /b 2^>NUL') do @perl "%SRC_DIR%\scripts\checksrc.pl" "-D%SRC_DIR%\tests\libtest" "%%i" 159 for /f "delims=" %%i in ('dir "%SRC_DIR%\tests\libtest\*.h.*" /b 2^>NUL') do @perl "%SRC_DIR%\scripts\checksrc.pl" "-D%SRC_DIR%\tests\libtest" "%%i" 160 ) 161 162 rem Check the tests\unit directory 163 if exist %SRC_DIR%\tests\unit ( 164 for /f "delims=" %%i in ('dir "%SRC_DIR%\tests\unit\*.c.*" /b 2^>NUL') do @perl "%SRC_DIR%\scripts\checksrc.pl" "-D%SRC_DIR%\tests\unit" "%%i" 165 for /f "delims=" %%i in ('dir "%SRC_DIR%\tests\unit\*.h.*" /b 2^>NUL') do @perl "%SRC_DIR%\scripts\checksrc.pl" "-D%SRC_DIR%\tests\unit" "%%i" 166 ) 167 168 rem Check the tests\server directory 169 if exist %SRC_DIR%\tests\server ( 170 for /f "delims=" %%i in ('dir "%SRC_DIR%\tests\server\*.c.*" /b 2^>NUL') do @perl "%SRC_DIR%\scripts\checksrc.pl" "-D%SRC_DIR%\tests\server" "%%i" 171 for /f "delims=" %%i in ('dir "%SRC_DIR%\tests\server\*.h.*" /b 2^>NUL') do @perl "%SRC_DIR%\scripts\checksrc.pl" "-D%SRC_DIR%\tests\server" "%%i" 172 ) 173 ) 174 175 if "%CHECK_EXAMPLES%" == "TRUE" ( 176 rem Check the docs\examples directory 177 if exist %SRC_DIR%\docs\examples ( 178 for /f "delims=" %%i in ('dir "%SRC_DIR%\docs\examples\*.c.*" /b 2^>NUL') do @perl "%SRC_DIR%\scripts\checksrc.pl" "-D%SRC_DIR%\docs\examples" -ASNPRINTF "%%i" 179 ) 180 ) 181 182 goto success 183 184:syntax 185 rem Display the help 186 echo. 187 echo Usage: checksrc [what] [directory] 188 echo. 189 echo What to scan: 190 echo. 191 echo lib - Scan the libcurl source 192 echo src - Scan the command-line tool source 193 echo tests - Scan the library tests and unit tests 194 echo examples - Scan the examples 195 echo. 196 echo directory - Specifies the curl source directory 197 goto success 198 199:unknown 200 echo. 201 echo Error: Unknown argument '%1' 202 goto error 203 204:nodos 205 echo. 206 echo Error: Only a Windows NT based Operating System is supported 207 goto error 208 209:noperl 210 echo. 211 echo Error: Perl is not installed 212 goto error 213 214:nosrc 215 echo. 216 echo Error: "%SRC_DIR%" does not exist 217 goto error 218 219:error 220 if "%OS%" == "Windows_NT" endlocal 221 exit /B 1 222 223:success 224 endlocal 225 exit /B 0 226