diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index 936b6ae..b62b91c 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -39,14 +39,12 @@ jobs: - name: Build QtWebApp run: | if [ "${{ matrix.os }}" == "ubuntu-latest" ] && [ "$CC" == "clang" ]; then export LDFLAGS=-fuse-ld=lld; fi - pushd QtWebApp mkdir build pushd build cmake -G 'Unix Makefiles' -DCMAKE_BUILD_TYPE=Release .. make sudo make install popd # build - popd # QtWebApp env: CC: ${{ matrix.compiler.cc }} CXX: ${{ matrix.compiler.cxx }} @@ -109,7 +107,7 @@ jobs: if: matrix.arch == 'win32_mingw81' run: echo "$env:IQTA_TOOLS/mingw810_32/bin" | Out-File -FilePath $env:GITHUB_PATH -Encoding utf8 -Append - - run: cmake -S QtWebApp -B build-qtwebapp ${{ matrix.generator }} -DCMAKE_BUILD_TYPE=Release + - run: cmake -B build-qtwebapp ${{ matrix.generator }} -DCMAKE_BUILD_TYPE=Release - run: cmake --build build-qtwebapp - run: cmake --build build-qtwebapp --target install diff --git a/CMakeLists.txt b/CMakeLists.txt new file mode 100644 index 0000000..4151e30 --- /dev/null +++ b/CMakeLists.txt @@ -0,0 +1,29 @@ +cmake_minimum_required(VERSION 3.22) +project(QtWebApp CXX) + +find_package(QT NAMES Qt6 Qt5 COMPONENTS Core REQUIRED HINTS $ENV{Qt6_DIR} $ENV{Qt5_DIR}) + +set(CMAKE_CXX_STANDARD 17) +set(CMAKE_CXX_STANDARD_REQUIRED ON) + +if(NOT MSVC) + set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -Werror=format -Werror=return-type") + set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Werror=format -Werror=return-type") +endif() + +if(CMAKE_BUILD_TYPE MATCHES Debug) + if(MSVC) + set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Wall") + else() + set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Wall -Wextra -fsanitize=undefined") + set(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} -fsanitize=undefined") + endif() + add_definitions("-D_GLIBCXX_DEBUG") + add_definitions("-DQT_SHAREDPOINTER_TRACK_POINTERS") + add_definitions("-DCMAKE_DEBUG") + add_definitions("-DSUPERVERBOSE") +endif() + +set(CMAKE_AUTOMOC ON) + +add_subdirectory(QtWebApp) diff --git a/QtWebApp/CMakeLists.txt b/QtWebApp/CMakeLists.txt index b682903..5f00e19 100644 --- a/QtWebApp/CMakeLists.txt +++ b/QtWebApp/CMakeLists.txt @@ -1,42 +1,16 @@ -cmake_minimum_required(VERSION 3.1) -project(QtWebApp CXX) - set(qtwebapp_MAJOR 1) set(qtwebapp_MINOR 8) set(qtwebapp_PATCH 3) set(qtwebapp_VERSION ${qtwebapp_MAJOR}.${qtwebapp_MINOR}.${qtwebapp_PATCH}) -find_package(QT NAMES Qt6 Qt5 COMPONENTS Core REQUIRED HINTS $ENV{Qt6_DIR} $ENV{Qt5_DIR}) find_package(Qt${QT_VERSION_MAJOR} COMPONENTS Core Network REQUIRED) if (Qt6_FOUND) find_package(Qt6 COMPONENTS Core5Compat REQUIRED) endif() -set(CMAKE_AUTOMOC ON) - add_definitions(-DQTWEBAPPLIB_EXPORT) -set(CMAKE_CXX_STANDARD 11) -set(CMAKE_CXX_STANDARD_REQUIRED ON) - -if(NOT MSVC) - set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -Werror=format -Werror=return-type") - set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Werror=format -Werror=return-type") -endif() - -if(CMAKE_BUILD_TYPE MATCHES Debug) - if(MSVC) - set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Wall") - else() - set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Wall -Wextra -fsanitize=undefined") - set(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} -fsanitize=undefined") - endif() - add_definitions("-D_GLIBCXX_DEBUG") - add_definitions("-DQT_SHAREDPOINTER_TRACK_POINTERS") - add_definitions("-DCMAKE_DEBUG") - add_definitions("-DSUPERVERBOSE") -endif() add_definitions("-DCMAKE_QTWEBAPP_SO") configure_file(qtwebappglobal.h.in qtwebappglobal.h @ONLY) diff --git a/QtWebApp/httpserver/httprequest.cpp b/QtWebApp/httpserver/httprequest.cpp index 59b5122..a9dc037 100644 --- a/QtWebApp/httpserver/httprequest.cpp +++ b/QtWebApp/httpserver/httprequest.cpp @@ -369,9 +369,11 @@ void HttpRequest::parseMultiPartFile() { #endif QTemporaryFile *uploadedFile = nullptr; QByteArray fieldValue; + QByteArray boundaryStart = "--" + boundary; + QByteArray boundaryEnd = boundary + "--"; while (!tempFile->atEnd() && !finished && !tempFile->error()) { QByteArray line = tempFile->readLine(65536); - if (line.startsWith("--" + boundary)) { + if (line.startsWith(boundaryStart)) { // Boundary found. Until now we have collected 2 bytes too much, // so remove them from the last result if (fileName.isEmpty() && !fieldName.isEmpty()) { @@ -403,7 +405,7 @@ void HttpRequest::parseMultiPartFile() { qWarning("HttpRequest: format error, unexpected end of file data"); } } - if (line.contains(boundary + "--")) { + if (line.contains(boundaryEnd)) { finished = true; } break;