Author: rinrab
Date: Sun Jun 8 13:52:15 2025
New Revision: 1926252
URL: http://svn.apache.org/viewvc?rev=1926252&view=rev
Log:
Print character encoding in `svn --version --verbose`.
- Add `locale encoding:` line to under machine information.
- Use apr_os_locale_encoding() to retrieve the name of the encoding. The
same function is used to determine the encoding during xlate work, when
converting from APR_LOCALE_CHARSET.
- The character encoding is being retrieved through the svn_version_extended_t
structure.
Expected behaviors:
---
* running on x86_64-microsoft-windows6.2.9200
- Windows 10 Pro, build 26100 [6.3 Client Multiprocessor Free]
- character encoding: CP1252
---
* running on x86_64-unknown-linux-gnu
- "Debian GNU/Linux 12 (bookworm)" [Linux 6.6.87.1-microsoft-standard-WSL2]
- character encoding: UTF-8
---
* running on x86_64-unknown-linux-gnu
- "Debian GNU/Linux 12 (bookworm)" [Linux 6.6.87.1-microsoft-standard-WSL2]
- character encoding: ISO-8859-15
---
* subversion/include/svn_version.h
(svn_version_ext_character_encoding): New function; Accesses character encoding.
* subversion/libsvn_subr/opt_subcommand.c
(svn_opt__print_version_info): Add `character encoding` section and use
the svn_version_ext_character_encoding() function to retrieve the name of
the encoding.
* subversion/libsvn_subr/sysinfo.h
(svn_sysinfo__character_encoding): Declare function; Detects the encoding.
* subversion/libsvn_subr/sysinfo.c
(includes): Add apr_portable.h for apr_os_locale_encoding() function.
(svn_sysinfo__character_encoding): Implement function; For now just a
wrapper around apr_os_locale_encoding().
* subversion/libsvn_subr/version.c
(svn_version_extended_t): Add character_encoding field and format code.
(svn_version_extended): Initialize svn_version_extended_t::character_encoding
using svn_sysinfo__character_encoding().
(svn_version_ext_character_encoding): Implement accessor to character_encoding.
See related discussion on [email protected]:
- https://lists.apache.org/thread/qyxgtkfmybwozz4ny8zxvc5hz16km8y7
Reviewed by: brane
Modified:
subversion/trunk/subversion/include/svn_version.h
subversion/trunk/subversion/libsvn_subr/opt_subcommand.c
subversion/trunk/subversion/libsvn_subr/sysinfo.c
subversion/trunk/subversion/libsvn_subr/sysinfo.h
subversion/trunk/subversion/libsvn_subr/version.c
Modified: subversion/trunk/subversion/include/svn_version.h
URL: http://svn.apache.org/viewvc/subversion/trunk/subversion/include/svn_version.h?rev=1926252&r1=1926251&r2=1926252&view=diff
==============================================================================
--- subversion/trunk/subversion/include/svn_version.h (original)
+++ subversion/trunk/subversion/include/svn_version.h Sun Jun 8 13:52:15 2025
@@ -391,6 +391,16 @@ const char *
svn_version_ext_runtime_osname(const svn_version_extended_t *ext_info);
/**
+ * Accessor for svn_version_extended_t.
+ *
+ * @return The name of the current locale character set.
+ *
+ * @since New in 1.15.
+ */
+const char *
+svn_version_ext_character_encoding(const svn_version_extended_t *ext_info);
+
+/**
* Dependent library information.
* Describes the name and versions of known dependencies
* used by libsvn_subr.
Modified: subversion/trunk/subversion/libsvn_subr/opt_subcommand.c
URL: http://svn.apache.org/viewvc/subversion/trunk/subversion/libsvn_subr/opt_subcommand.c?rev=1926252&r1=1926251&r2=1926252&view=diff
==============================================================================
--- subversion/trunk/subversion/libsvn_subr/opt_subcommand.c (original)
+++ subversion/trunk/subversion/libsvn_subr/opt_subcommand.c Sun Jun 8 13:52:15 2025
@@ -491,6 +491,9 @@ svn_opt__print_version_info(const char *
svn_version_ext_runtime_osname(info)));
}
+ SVN_ERR(svn_cmdline_printf(pool, _(" - character encoding: %s\n"),
+ svn_version_ext_character_encoding(info)));
+
libs = svn_version_ext_linked_libs(info);
if (libs && libs->nelts)
{
Modified: subversion/trunk/subversion/libsvn_subr/sysinfo.c
URL: http://svn.apache.org/viewvc/subversion/trunk/subversion/libsvn_subr/sysinfo.c?rev=1926252&r1=1926251&r2=1926252&view=diff
==============================================================================
--- subversion/trunk/subversion/libsvn_subr/sysinfo.c (original)
+++ subversion/trunk/subversion/libsvn_subr/sysinfo.c Sun Jun 8 13:52:15 2025
@@ -35,6 +35,7 @@
#include <apr_thread_proc.h>
#include <apr_version.h>
#include <apu_version.h>
+#include <apr_portable.h> /* for apr_os_locale_encoding() */
#include "svn_pools.h"
#include "svn_ctype.h"
@@ -137,6 +138,12 @@ svn_sysinfo__release_name(apr_pool_t *po
#endif
}
+const char *
+svn_sysinfo__character_encoding(apr_pool_t *pool)
+{
+ return apr_os_locale_encoding(pool);
+}
+
const apr_array_header_t *
svn_sysinfo__linked_libs(apr_pool_t *pool)
{
Modified: subversion/trunk/subversion/libsvn_subr/sysinfo.h
URL: http://svn.apache.org/viewvc/subversion/trunk/subversion/libsvn_subr/sysinfo.h?rev=1926252&r1=1926251&r2=1926252&view=diff
==============================================================================
--- subversion/trunk/subversion/libsvn_subr/sysinfo.h (original)
+++ subversion/trunk/subversion/libsvn_subr/sysinfo.h Sun Jun 8 13:52:15 2025
@@ -45,6 +45,12 @@ const char *svn_sysinfo__canonical_host(
*/
const char *svn_sysinfo__release_name(apr_pool_t *pool);
+/* Return the name of the current locale character set.
+ *
+ * All allocations are done in POOL.
+ */
+const char *svn_sysinfo__character_encoding(apr_pool_t *pool);
+
/* Return an array of svn_version_linked_lib_t of descriptions of the
* link-time and run-time versions of dependent libraries, or NULL of
* the info is not available.
Modified: subversion/trunk/subversion/libsvn_subr/version.c
URL: http://svn.apache.org/viewvc/subversion/trunk/subversion/libsvn_subr/version.c?rev=1926252&r1=1926251&r2=1926252&view=diff
==============================================================================
--- subversion/trunk/subversion/libsvn_subr/version.c (original)
+++ subversion/trunk/subversion/libsvn_subr/version.c Sun Jun 8 13:52:15 2025
@@ -116,12 +116,13 @@ svn_ver_check_list2(const svn_version_t
struct svn_version_extended_t
{
- const char *build_date; /* Compilation date */
- const char *build_time; /* Compilation time */
- const char *build_host; /* Build canonical host name */
- const char *copyright; /* Copyright notice (localized) */
- const char *runtime_host; /* Runtime canonical host name */
- const char *runtime_osname; /* Running OS release name */
+ const char *build_date; /* Compilation date */
+ const char *build_time; /* Compilation time */
+ const char *build_host; /* Build canonical host name */
+ const char *copyright; /* Copyright notice (localized) */
+ const char *runtime_host; /* Runtime canonical host name */
+ const char *runtime_osname; /* Running OS release name */
+ const char *character_encoding; /* Encoding of the current locale */
/* Array of svn_version_ext_linked_lib_t describing dependent
libraries. */
@@ -153,6 +154,7 @@ svn_version_extended(svn_boolean_t verbo
{
info->runtime_host = svn_sysinfo__canonical_host(pool);
info->runtime_osname = svn_sysinfo__release_name(pool);
+ info->character_encoding = svn_sysinfo__character_encoding(pool);
info->linked_libs = svn_sysinfo__linked_libs(pool);
info->loaded_libs = svn_sysinfo__loaded_libs(pool);
}
@@ -197,6 +199,12 @@ svn_version_ext_runtime_osname(const svn
return ext_info->runtime_osname;
}
+const char *
+svn_version_ext_character_encoding(const svn_version_extended_t *ext_info)
+{
+ return ext_info->character_encoding;
+}
+
const apr_array_header_t *
svn_version_ext_linked_libs(const svn_version_extended_t *ext_info)
{
lmpx.com only provides a reader for public news (NNTP) servers. It is not
affiliated with the servers or forums shown here and is not responsible for
the content of articles, which is written by their respective authors.