Author: rinrab Date: Tue Jun 17 14:09:00 2025 New Revision: 1926502 URL: http://svn.apache.org/viewvc?rev=1926502&view=rev Log: On the 'utf8-cmdline-prototype' branch: sync with trunk
Added: subversion/branches/utf8-cmdline-prototype/build/cmake/extractor.cmake - copied unchanged from r1926501, subversion/trunk/build/cmake/extractor.cmake Modified: subversion/branches/utf8-cmdline-prototype/ (props changed) subversion/branches/utf8-cmdline-prototype/.github/workflows/cmake.yml subversion/branches/utf8-cmdline-prototype/CMakeLists.txt subversion/branches/utf8-cmdline-prototype/build/cmake/FindAPR.cmake subversion/branches/utf8-cmdline-prototype/build/cmake/FindSerf.cmake subversion/branches/utf8-cmdline-prototype/build/generator/gen_cmake.py subversion/branches/utf8-cmdline-prototype/build/generator/templates/targets.cmake.ezt subversion/branches/utf8-cmdline-prototype/configure.ac subversion/branches/utf8-cmdline-prototype/subversion/include/private/svn_opt_private.h subversion/branches/utf8-cmdline-prototype/subversion/include/svn_utf.h subversion/branches/utf8-cmdline-prototype/subversion/libsvn_subr/utf.c subversion/branches/utf8-cmdline-prototype/subversion/svnserve/logger.c subversion/branches/utf8-cmdline-prototype/subversion/svnserve/serve.c subversion/branches/utf8-cmdline-prototype/subversion/svnserve/svnserve.c Propchange: subversion/branches/utf8-cmdline-prototype/ ------------------------------------------------------------------------------ Merged /subversion/trunk:r1926278-1926501 Modified: subversion/branches/utf8-cmdline-prototype/.github/workflows/cmake.yml URL: http://svn.apache.org/viewvc/subversion/branches/utf8-cmdline-prototype/.github/workflows/cmake.yml?rev=1926502&r1=1926501&r2=1926502&view=diff ============================================================================== --- subversion/branches/utf8-cmdline-prototype/.github/workflows/cmake.yml (original) +++ subversion/branches/utf8-cmdline-prototype/.github/workflows/cmake.yml Tue Jun 17 14:09:00 2025 @@ -83,6 +83,11 @@ jobs: libdbus-1-dev qtbase5-dev libsecret-1-dev + - name: Mac OS + os: macos-latest + build_shared: ON + cmake_generator: Ninja + run_tests: true runs-on: ${{ matrix.os }} name: ${{ matrix.name }} @@ -106,6 +111,11 @@ jobs: run: | # nothing yet + - name: Prepare Environment (Mac OS) + if: runner.os == 'macOS' + run: | + "CMAKE_PREFIX_PATH=/opt/homebrew/opt/subversion/libexec/serf" >> $env:GITHUB_ENV + - name: Export GitHub Actions cache environment variables if: runner.os == 'Windows' uses: actions/github-script@v7 @@ -138,6 +148,13 @@ jobs: ninja-build ${{ matrix.extra_packages }} + - name: Install dependencies (Mac OS, homebrew) + if: runner.os == 'macOS' + # hack to get serf installed, since there is no separate package. + run: > + brew install subversion + ${{ matrix.extra_packages }} + - name: Use LF for Git checkout run: | git config --global core.autocrlf false Modified: subversion/branches/utf8-cmdline-prototype/CMakeLists.txt URL: http://svn.apache.org/viewvc/subversion/branches/utf8-cmdline-prototype/CMakeLists.txt?rev=1926502&r1=1926501&r2=1926502&view=diff ============================================================================== --- subversion/branches/utf8-cmdline-prototype/CMakeLists.txt (original) +++ subversion/branches/utf8-cmdline-prototype/CMakeLists.txt Tue Jun 17 14:09:00 2025 @@ -114,6 +114,10 @@ option(SVN_USE_DSO "Defined if svn shoul set(SVN_SOVERSION "0" CACHE STRING "Subversion library ABI version") mark_as_advanced(SVN_SOVERSION) +# Check whether we have pkg-config executable or not; Silence any messages. +find_package(PkgConfig QUIET) +cmake_dependent_option(SVN_USE_PKG_CONFIG "Use pkg-config for the dependencies" ON "PKG_CONFIG_FOUND" OFF) + # Dependecies option(SVN_USE_INTERNAL_LZ4 "Use internal version of lz4" ON) option(SVN_USE_INTERNAL_UTF8PROC "Use internal version of utf8proc" ON) @@ -247,25 +251,63 @@ endif() list(APPEND CMAKE_MODULE_PATH "${CMAKE_CURRENT_SOURCE_DIR}/build/cmake") -### APR +# Require pkg-config if we are going to use it, to show the `Found PkgConfig` +# meassge and insure it has actually been found. (yea, this invokes the module +# for second time, but we are guaranteed to from it to not perform actual look +# for the path due to the cache. It's fine to include the same modules for +# multiple times). +if(SVN_USE_PKG_CONFIG) + find_package(PkgConfig REQUIRED) +endif() + +### APR and APR-Util + +if(SVN_USE_PKG_CONFIG) + pkg_check_modules(apr1 IMPORTED_TARGET apr-1) -find_package(APR REQUIRED) -add_library(external-apr ALIAS apr::apr) + if(apr1_FOUND) + # apr-1 + add_library(external-apr ALIAS PkgConfig::apr1) -### APR-Util + pkg_check_modules(aprutil-1 REQUIRED IMPORTED_TARGET apr-util-1) + add_library(external-aprutil ALIAS PkgConfig::aprutil-1) + else() + # apr-2 + pkg_check_modules(apr2 REQUIRED IMPORTED_TARGET apr-2) + add_library(external-apr ALIAS PkgConfig::apr2) + add_library(external-aprutil ALIAS PkgConfig::apr2) + endif() +else() + find_package(APR REQUIRED) + add_library(external-apr ALIAS apr::apr) -find_package(APRUtil REQUIRED) -add_library(external-aprutil ALIAS apr::aprutil) + if(APR_VERSION VERSION_LESS 2.0.0) + find_package(APRUtil REQUIRED) + add_library(external-aprutil ALIAS apr::aprutil) + else() + add_library(external-aprutil ALIAS apr::apr) + endif() +endif() ### ZLIB -find_package(ZLIB REQUIRED) -add_library(external-zlib ALIAS ZLIB::ZLIB) +if(SVN_USE_PKG_CONFIG) + pkg_check_modules(zlib REQUIRED IMPORTED_TARGET zlib) + add_library(external-zlib ALIAS PkgConfig::zlib) +else() + find_package(ZLIB REQUIRED) + add_library(external-zlib ALIAS ZLIB::ZLIB) +endif() ### EXPAT -find_package(EXPAT REQUIRED) -add_library(external-xml ALIAS EXPAT::EXPAT) +if(SVN_USE_PKG_CONFIG) + pkg_check_modules(expat REQUIRED IMPORTED_TARGET expat) + add_library(external-xml ALIAS PkgConfig::expat) +else() + find_package(EXPAT REQUIRED) + add_library(external-xml ALIAS EXPAT::EXPAT) +endif() ### LZ4 @@ -277,6 +319,9 @@ if(SVN_USE_INTERNAL_LZ4) "subversion/libsvn_subr/lz4/lz4internal.h" lz4_VERSION LZ4_VERSION_MAJOR LZ4_VERSION_MINOR LZ4_VERSION_RELEASE ) +elseif(SVN_USE_PKG_CONFIG) + pkg_check_modules(lz4 REQUIRED IMPORTED_TARGET liblz4) + add_library(external-lz4 ALIAS PkgConfig::lz4) else() find_package(lz4 CONFIG REQUIRED) add_library(external-lz4 ALIAS lz4::lz4) @@ -292,6 +337,9 @@ if(SVN_USE_INTERNAL_UTF8PROC) "subversion/libsvn_subr/utf8proc/utf8proc_internal.h" UTF8PROC_VERSION UTF8PROC_VERSION_MAJOR UTF8PROC_VERSION_MINOR UTF8PROC_VERSION_PATCH ) +elseif(SVN_USE_PKG_CONFIG) + pkg_check_modules(utf8proc REQUIRED IMPORTED_TARGET libutf8proc) + add_library(external-utf8proc ALIAS PkgConfig::utf8proc) else() find_package(UTF8PROC REQUIRED) add_library(external-utf8proc ALIAS UTF8PROC::UTF8PROC) @@ -302,6 +350,9 @@ endif() if(SVN_SQLITE_USE_AMALGAMATION) find_package(SQLiteAmalgamation REQUIRED) add_library(external-sqlite ALIAS SQLite::SQLite3Amalgamation) +elseif(SVN_USE_PKG_CONFIG) + pkg_check_modules(sqlite3 REQUIRED IMPORTED_TARGET sqlite3) + add_library(external-sqlite ALIAS PkgConfig::sqlite3) else() # It should be not required. find_package(SQLite3) @@ -323,8 +374,21 @@ endif() ### Serf if (SVN_ENABLE_RA_SERF) - find_package(Serf REQUIRED) - add_library(external-serf ALIAS Serf::Serf) + if(SVN_USE_PKG_CONFIG) + pkg_check_modules(serf1 IMPORTED_TARGET serf-1) + + if(serf1_FOUND) + # serf-1 + add_library(external-serf ALIAS PkgConfig::serf1) + else() + # serf-2 + pkg_check_modules(serf2 REQUIRED IMPORTED_TARGET serf-2) + add_library(external-serf ALIAS PkgConfig::serf2) + endif() + else() + find_package(Serf REQUIRED) + add_library(external-serf ALIAS Serf::Serf) + endif() endif() ### Python @@ -373,9 +437,12 @@ endif() if(SVN_ENABLE_AUTH_GNOME_KEYRING) add_library(external-gnome-keyring INTERFACE) - find_package(PkgConfig REQUIRED) - pkg_check_modules(libsecret-1 REQUIRED IMPORTED_TARGET libsecret-1) - target_link_libraries(external-gnome-keyring INTERFACE PkgConfig::libsecret-1) + if(SVN_USE_PKG_CONFIG OR PKG_CONFIG_FOUND) + pkg_check_modules(libsecret-1 REQUIRED IMPORTED_TARGET libsecret-1) + target_link_libraries(external-gnome-keyring INTERFACE PkgConfig::libsecret-1) + else() + message(ERROR "GNOME Keyring requires pkg-config") + endif() add_private_config_definition( "Is libsecret support enabled?" @@ -516,52 +583,22 @@ function(target_exports target_name) ) set(def_file_path ${CMAKE_BINARY_DIR}/${target_name}.def) + set(headers) - # see build/generator/extractor.py - set(func_regex "(^|\n)((([A-Za-z0-9_]+|[*]) )+[*]?)?((svn|apr)_[A-Za-z0-9_]+)[ \t\r\n]*\\(") - - set(defs) foreach(file ${ARGN}) - file(READ ${file} contents) - string(REGEX MATCHALL "${func_regex}" funcs ${contents}) - - foreach(func_string ${funcs}) - string(REGEX MATCH "[A-Za-z0-9_]+[ \t\r\n]*\\($" func_name ${func_string}) - string(REGEX REPLACE "[ \t\r\n]*\\($" "" func_name ${func_name}) - list(APPEND defs "${func_name}") - endforeach() - - get_filename_component(filename ${file} NAME) - if(${filename} STREQUAL "svn_ctype.h") - # See libsvn_subr/ctype.c for an explanation why we use CONSTANT and not - # DATA, even though it causes an LNK4087 warning! - list(APPEND defs "svn_ctype_table = svn_ctype_table_internal CONSTANT") - elseif(${filename} STREQUAL "svn_wc_private.h") - # svn_wc__internal_walk_children() is now internal to libsvn_wc - # but entries-dump.c still calls it - list(APPEND defs "svn_wc__internal_walk_children") - endif() - endforeach() - - list(SORT defs) - list(REMOVE_DUPLICATES defs) - - set(def_file_content "EXPORTS\n") - foreach(def ${defs}) - list(FIND filter_names "${def}" skip) - if(skip LESS 0) - string(APPEND def_file_content "${def}\n") - endif() + list(APPEND headers "${CMAKE_CURRENT_SOURCE_DIR}/${file}") endforeach() - if(EXISTS "${def_file_path}") - file(READ "${def_file_path}" old_file_content) - else() - set(old_file_content "NOT_EXISTS") - endif() - if(NOT ${old_file_content} STREQUAL ${def_file_content}) - file(WRITE "${def_file_path}" ${def_file_content}) - endif() + add_custom_command( + OUTPUT "${def_file_path}" + DEPENDS ${headers} + COMMAND ${CMAKE_COMMAND} + "-DEXPORT_HEADER_FILE_PATHS=${headers}" + "-DEXPORT_DEF_FILE_PATH=${def_file_path}" + "-DEXPORT_BLACKLIST=${filter_names}" + -P "${CMAKE_CURRENT_SOURCE_DIR}/build/cmake/extractor.cmake" + WORKING_DIRECTORY "${SERF_SOURCE_DIR}" + ) target_sources("${target_name}" PRIVATE "${def_file_path}") endif() @@ -724,6 +761,13 @@ if(SVN_ENABLE_NLS) "ENABLE_NLS" "1" ) + if (NOT WIN32) + add_private_config_definition( + "Defined to be the path to the installed locale dirs" + "SVN_LOCALE_DIR" "\"${CMAKE_INSTALL_PREFIX}/share/locale\"" + ) + endif() + add_custom_target(locale ALL) file(GLOB SVN_PO_FILES "subversion/po/*.po") @@ -915,6 +959,7 @@ message(STATUS " Build type ........... message(STATUS " Build shared libraries ........ : ${BUILD_SHARED_LIBS}") message(STATUS " Build shared FS Modues ........ : ${SVN_BUILD_SHARED_FS}") message(STATUS " Build shared RA Modues ........ : ${SVN_BUILD_SHARED_RA}") +message(STATUS " Use pkg-config dependencies ... : ${SVN_USE_PKG_CONFIG}") message(STATUS " FS modules:") message(STATUS " Enable FSFS ................... : ${SVN_ENABLE_FS_FS}") message(STATUS " Enable FSX .................... : ${SVN_ENABLE_FS_X}") Modified: subversion/branches/utf8-cmdline-prototype/build/cmake/FindAPR.cmake URL: http://svn.apache.org/viewvc/subversion/branches/utf8-cmdline-prototype/build/cmake/FindAPR.cmake?rev=1926502&r1=1926501&r2=1926502&view=diff ============================================================================== --- subversion/branches/utf8-cmdline-prototype/build/cmake/FindAPR.cmake (original) +++ subversion/branches/utf8-cmdline-prototype/build/cmake/FindAPR.cmake Tue Jun 17 14:09:00 2025 @@ -25,20 +25,40 @@ find_path(APR_INCLUDE_DIR include include/apr-1 include/apr-1.0 + include/apr-2 + include/apr-2.0 ) +if (APR_INCLUDE_DIR AND EXISTS ${APR_INCLUDE_DIR}/apr_version.h) + file( + STRINGS "${APR_INCLUDE_DIR}/apr_version.h" VERSION_STRINGS + REGEX "#define (APR_MAJOR_VERSION|APR_MINOR_VERSION|APR_PATCH_VERSION)" + ) + + string(REGEX REPLACE ".*APR_MAJOR_VERSION +([0-9]+).*" "\\1" APR_MAJOR_VERSION ${VERSION_STRINGS}) + string(REGEX REPLACE ".*APR_MINOR_VERSION +([0-9]+).*" "\\1" APR_MINOR_VERSION ${VERSION_STRINGS}) + string(REGEX REPLACE ".*APR_PATCH_VERSION +([0-9]+).*" "\\1" APR_PATCH_VERSION ${VERSION_STRINGS}) +else() + # Default version to 1.0.0 if not found. + set(APR_MAJOR_VERSION 1) + set(APR_MINOR_VERSION 0) + set(APR_PATCH_VERSION 0) +endif() + +set(APR_VERSION "${APR_MAJOR_VERSION}.${APR_MINOR_VERSION}.${APR_PATCH_VERSION}") + find_library(APR_LIBRARY_SHARED - NAMES libapr-1 + NAMES libapr-${APR_MAJOR_VERSION} PATH_SUFFIXES lib ) find_library(APR_LIBRARY_STATIC - NAMES apr-1 + NAMES apr-${APR_MAJOR_VERSION} PATH_SUFFIXES lib ) find_file(APR_DLL - NAMES libapr-1.dll + NAMES libapr-${APR_MAJOR_VERSION}.dll PATH_SUFFIXES bin ) @@ -55,19 +75,6 @@ elseif(APR_LIBRARY_STATIC) set(APR_LIBRARY ${APR_LIBRARY_STATIC}) endif() -if (APR_INCLUDE_DIR AND EXISTS ${APR_INCLUDE_DIR}/apr_version.h) - file( - STRINGS "${APR_INCLUDE_DIR}/apr_version.h" VERSION_STRINGS - REGEX "#define (APR_MAJOR_VERSION|APR_MINOR_VERSION|APR_PATCH_VERSION)" - ) - - string(REGEX REPLACE ".*APR_MAJOR_VERSION +([0-9]+).*" "\\1" APR_MAJOR_VERSION ${VERSION_STRINGS}) - string(REGEX REPLACE ".*APR_MINOR_VERSION +([0-9]+).*" "\\1" APR_MINOR_VERSION ${VERSION_STRINGS}) - string(REGEX REPLACE ".*APR_PATCH_VERSION +([0-9]+).*" "\\1" APR_PATCH_VERSION ${VERSION_STRINGS}) - - set(APR_VERSION "${APR_MAJOR_VERSION}.${APR_MINOR_VERSION}.${APR_PATCH_VERSION}") -endif() - include(FindPackageHandleStandardArgs) FIND_PACKAGE_HANDLE_STANDARD_ARGS( Modified: subversion/branches/utf8-cmdline-prototype/build/cmake/FindSerf.cmake URL: http://svn.apache.org/viewvc/subversion/branches/utf8-cmdline-prototype/build/cmake/FindSerf.cmake?rev=1926502&r1=1926501&r2=1926502&view=diff ============================================================================== --- subversion/branches/utf8-cmdline-prototype/build/cmake/FindSerf.cmake (original) +++ subversion/branches/utf8-cmdline-prototype/build/cmake/FindSerf.cmake Tue Jun 17 14:09:00 2025 @@ -77,16 +77,19 @@ set_target_properties(Serf::Serf PROPERT find_package(OpenSSL REQUIRED) find_package(APR REQUIRED) -find_package(APRUtil REQUIRED) find_package(ZLIB REQUIRED) target_link_libraries(Serf::Serf INTERFACE apr::apr - apr::aprutil OpenSSL::SSL ZLIB::ZLIB ) +if(APR_VERSION VERSION_LESS 2.0.0) + find_package(APRUtil REQUIRED) + target_link_libraries(Serf::Serf INTERFACE apr::aprutil) +endif() + if (WIN32) target_link_libraries(Serf::Serf INTERFACE crypt32.lib Modified: subversion/branches/utf8-cmdline-prototype/build/generator/gen_cmake.py URL: http://svn.apache.org/viewvc/subversion/branches/utf8-cmdline-prototype/build/generator/gen_cmake.py?rev=1926502&r1=1926501&r2=1926502&view=diff ============================================================================== --- subversion/branches/utf8-cmdline-prototype/build/generator/gen_cmake.py (original) +++ subversion/branches/utf8-cmdline-prototype/build/generator/gen_cmake.py Tue Jun 17 14:09:00 2025 @@ -146,7 +146,8 @@ class Generator(gen_base.GeneratorBase): msvc_export.append("subversion/include/" + export) sources = [] - libs = [] + private_libs = [] + public_libs = [] for dep in self.get_dependencies(target.name): enable_condition += get_target_conditions(dep) @@ -157,9 +158,9 @@ class Generator(gen_base.GeneratorBase): elif isinstance(dep, gen_base.TargetLinked): if dep.external_lib: if dep.name == "ra-libs": - libs.append("ra-libs") + private_libs.append("ra-libs") elif dep.name == "fs-libs": - libs.append("fs-libs") + private_libs.append("fs-libs") elif dep.name in ["apriconv", "apr_memcache", "magic", @@ -170,9 +171,17 @@ class Generator(gen_base.GeneratorBase): # TODO: pass else: - libs.append("external-" + dep.name) + dep_name = "external-" + dep.name + + # APR and APR-Util are part of our public interface and should be + # declared PUBLIC in library target dependencies. + if (dep_name in ["external-apr", "external-aprutil"] + and not isinstance(target, gen_base.TargetExe)): + public_libs.append(dep_name) + else: + private_libs.append(dep_name) else: - libs.append(dep.name) + private_libs.append(dep.name) elif isinstance(dep, gen_base.ObjectFile): for source in self.graph.get_sources(gen_base.DT_OBJECT, dep, gen_base.SourceFile): @@ -212,7 +221,9 @@ class Generator(gen_base.GeneratorBase): output_name = get_output_name(target), type = target_type, sources = sources, - libs = libs, + libs = public_libs + private_libs, + public_libs = public_libs, + private_libs = private_libs, msvc_libs = msvc_libs, msvc_objects = msvc_objects, msvc_export = msvc_export, Modified: subversion/branches/utf8-cmdline-prototype/build/generator/templates/targets.cmake.ezt URL: http://svn.apache.org/viewvc/subversion/branches/utf8-cmdline-prototype/build/generator/templates/targets.cmake.ezt?rev=1926502&r1=1926501&r2=1926502&view=diff ============================================================================== --- subversion/branches/utf8-cmdline-prototype/build/generator/templates/targets.cmake.ezt (original) +++ subversion/branches/utf8-cmdline-prototype/build/generator/templates/targets.cmake.ezt Tue Jun 17 14:09:00 2025 @@ -69,9 +69,12 @@ if ([targets.enable_condition])[is targe WORKING_DIRECTORY $<TARGET_FILE_DIR:[targets.name]> ) set_tests_properties([targets.namespace].[targets.name] PROPERTIES ENVIRONMENT LD_LIBRARY_PATH=$<TARGET_FILE_DIR:[targets.name]>) - [end]target_link_libraries([targets.name] PRIVATE[for targets.libs] - [targets.libs][end] - )[if-any targets.msvc_libs] + [end][if-any targets.public_libs]target_link_libraries([targets.name] PUBLIC[for targets.public_libs] + [targets.public_libs][end] + ) + [end][if-any targets.private_libs]target_link_libraries([targets.name] PRIVATE[for targets.private_libs] + [targets.private_libs][end] + )[end][if-any targets.msvc_libs] if (WIN32) target_link_libraries([targets.name] PRIVATE[for targets.msvc_libs] [targets.msvc_libs][end]) endif()[end][if-any targets.msvc_objects] Modified: subversion/branches/utf8-cmdline-prototype/configure.ac URL: http://svn.apache.org/viewvc/subversion/branches/utf8-cmdline-prototype/configure.ac?rev=1926502&r1=1926501&r2=1926502&view=diff ============================================================================== --- subversion/branches/utf8-cmdline-prototype/configure.ac (original) +++ subversion/branches/utf8-cmdline-prototype/configure.ac Tue Jun 17 14:09:00 2025 @@ -1868,12 +1868,7 @@ AC_DEFINE_UNQUOTED([SVN_BUILD_TARGET], " AC_OUTPUT # ==== Generate the .clangd file ============================================= -if test "x$svn_dot_clangdcc_contents$svn_dot_clangdxx_contents" = "x" ; then - if test -f "$svn_dot_clangd_file"; then - AC_MSG_NOTICE([Removing $svn_dot_clangd_file]) - rm -f "$svn_dot_clangd_file" - fi -else +if test "x$svn_dot_clangdcc_contents$svn_dot_clangdxx_contents" != "x" ; then AC_MSG_NOTICE([Writing $svn_dot_clangd_file]) echo "$svn_dot_clangdcc_contents" > "$svn_dot_clangd_file" echo "$svn_dot_clangdxx_contents" >> "$svn_dot_clangd_file" Modified: subversion/branches/utf8-cmdline-prototype/subversion/include/private/svn_opt_private.h URL: http://svn.apache.org/viewvc/subversion/branches/utf8-cmdline-prototype/subversion/include/private/svn_opt_private.h?rev=1926502&r1=1926501&r2=1926502&view=diff ============================================================================== --- subversion/branches/utf8-cmdline-prototype/subversion/include/private/svn_opt_private.h (original) +++ subversion/branches/utf8-cmdline-prototype/subversion/include/private/svn_opt_private.h Tue Jun 17 14:09:00 2025 @@ -90,7 +90,7 @@ svn_opt__arg_canonicalize_path(const cha apr_pool_t *pool); /* - * Processes arguments from from @a utf8_input_targets into @a targets_p. + * Processes arguments from @a utf8_input_targets into @a targets_p. * * On each URL target, do some IRI-to-URI encoding and some * auto-escaping. On each local path, canonicalize case and path Modified: subversion/branches/utf8-cmdline-prototype/subversion/include/svn_utf.h URL: http://svn.apache.org/viewvc/subversion/branches/utf8-cmdline-prototype/subversion/include/svn_utf.h?rev=1926502&r1=1926501&r2=1926502&view=diff ============================================================================== --- subversion/branches/utf8-cmdline-prototype/subversion/include/svn_utf.h (original) +++ subversion/branches/utf8-cmdline-prototype/subversion/include/svn_utf.h Tue Jun 17 14:09:00 2025 @@ -42,10 +42,19 @@ extern "C" { #endif /* __cplusplus */ -#define SVN_APR_LOCALE_CHARSET APR_LOCALE_CHARSET +/** + * Indicates the charset of the sourcecode at compile time names. This is + * useful if there are literal strings in the source code which must + * be translated according to the charset of the source code. + */ #define SVN_APR_DEFAULT_CHARSET APR_DEFAULT_CHARSET /** + * To indicate charset names of the current locale + */ +#define SVN_APR_LOCALE_CHARSET APR_LOCALE_CHARSET + + /** * Initialize the UTF-8 encoding/decoding routines. * Allocate cached translation handles in a subpool of @a pool. * Modified: subversion/branches/utf8-cmdline-prototype/subversion/libsvn_subr/utf.c URL: http://svn.apache.org/viewvc/subversion/branches/utf8-cmdline-prototype/subversion/libsvn_subr/utf.c?rev=1926502&r1=1926501&r2=1926502&view=diff ============================================================================== --- subversion/branches/utf8-cmdline-prototype/subversion/libsvn_subr/utf.c (original) +++ subversion/branches/utf8-cmdline-prototype/subversion/libsvn_subr/utf.c Tue Jun 17 14:09:00 2025 @@ -199,6 +199,17 @@ atomic_swap(void * volatile * mem, void #endif } +static const char * +get_apr_xlate_charset(const char *charset) +{ + if (charset == SVN_APR_DEFAULT_CHARSET) + return APR_DEFAULT_CHARSET; + else if (charset == SVN_APR_LOCALE_CHARSET) + return APR_LOCALE_CHARSET; + else + return charset; +} + /* Set *RET to a newly created handle node for converting from FROMPAGE to TOPAGE, If apr_xlate_open() returns APR_EINVAL or APR_ENOTIMPL, set (*RET)->handle to NULL. If fail for any other reason, return the error. @@ -225,7 +236,10 @@ xlate_alloc_handle(xlate_handle_node_t * frompage, pool); name = "win32-xlate: "; #else - apr_err = apr_xlate_open(&handle, topage, frompage, pool); + apr_err = apr_xlate_open(&handle, + get_apr_xlate_charset(topage), + get_apr_xlate_charset(frompage), + pool); name = "APR: "; #endif Modified: subversion/branches/utf8-cmdline-prototype/subversion/svnserve/logger.c URL: http://svn.apache.org/viewvc/subversion/branches/utf8-cmdline-prototype/subversion/svnserve/logger.c?rev=1926502&r1=1926501&r2=1926502&view=diff ============================================================================== --- subversion/branches/utf8-cmdline-prototype/subversion/svnserve/logger.c (original) +++ subversion/branches/utf8-cmdline-prototype/subversion/svnserve/logger.c Tue Jun 17 14:09:00 2025 @@ -38,6 +38,8 @@ #ifdef HAVE_UNISTD_H #include <unistd.h> /* For getpid() */ +#elif WIN32 +#include <process.h> /* For getpid() */ #endif struct logger_t Modified: subversion/branches/utf8-cmdline-prototype/subversion/svnserve/serve.c URL: http://svn.apache.org/viewvc/subversion/branches/utf8-cmdline-prototype/subversion/svnserve/serve.c?rev=1926502&r1=1926501&r2=1926502&view=diff ============================================================================== --- subversion/branches/utf8-cmdline-prototype/subversion/svnserve/serve.c (original) +++ subversion/branches/utf8-cmdline-prototype/subversion/svnserve/serve.c Tue Jun 17 14:09:00 2025 @@ -58,6 +58,8 @@ #ifdef HAVE_UNISTD_H #include <unistd.h> /* For getpid() */ +#elif WIN32 +#include <process.h> /* For getpid() */ #endif #include "server.h" Modified: subversion/branches/utf8-cmdline-prototype/subversion/svnserve/svnserve.c URL: http://svn.apache.org/viewvc/subversion/branches/utf8-cmdline-prototype/subversion/svnserve/svnserve.c?rev=1926502&r1=1926501&r2=1926502&view=diff ============================================================================== --- subversion/branches/utf8-cmdline-prototype/subversion/svnserve/svnserve.c (original) +++ subversion/branches/utf8-cmdline-prototype/subversion/svnserve/svnserve.c Tue Jun 17 14:09:00 2025 @@ -66,6 +66,8 @@ #ifdef HAVE_UNISTD_H #include <unistd.h> /* For getpid() */ +#elif WIN32 +#include <process.h> /* For getpid() */ #endif #include "server.h"