Author: futatuki
Date: Sun Mar 14 18:39:26 2021
New Revision: 1887641

URL: http://svn.apache.org/viewvc?rev=1887641&view=rev
Log:
Fix encoding of error message on failure of system() call.

* subversion/libsvn_subr/cmdline.c
  (svn_cmdline__edit_file_externally, svn_cmdline__edit_string_externally):
    Transcode command line, passed to system(), to UTF-8 before composing
    error message.

Modified:
    subversion/trunk/subversion/libsvn_subr/cmdline.c

Modified: subversion/trunk/subversion/libsvn_subr/cmdline.c
URL: 
http://svn.apache.org/viewvc/subversion/trunk/subversion/libsvn_subr/cmdline.c?rev=1887641&r1=1887640&r2=1887641&view=diff
==============================================================================
--- subversion/trunk/subversion/libsvn_subr/cmdline.c (original)
+++ subversion/trunk/subversion/libsvn_subr/cmdline.c Sun Mar 14 18:39:26 2021
@@ -1499,10 +1499,16 @@ svn_cmdline__edit_file_externally(const
                       stderr, TRUE /* fatal */, "svn: ");
 
   if (sys_err)
-    /* Extracting any meaning from sys_err is platform specific, so just
-       use the raw value. */
-    return svn_error_createf(SVN_ERR_EXTERNAL_PROGRAM, NULL,
-                             _("system('%s') returned %d"), cmd, sys_err);
+    {
+      const char *cmd_utf8;
+
+      /* Extracting any meaning from sys_err is platform specific, so just
+         use the raw value. */
+      SVN_ERR(svn_utf_cstring_to_utf8(&cmd_utf8, cmd, pool));
+      return svn_error_createf(SVN_ERR_EXTERNAL_PROGRAM, NULL,
+                               _("system('%s') returned %d"),
+                               cmd_utf8, sys_err);
+    }
 
   return SVN_NO_ERROR;
 }
@@ -1678,10 +1684,14 @@ svn_cmdline__edit_string_externally(svn_
 #endif
   if (sys_err != 0)
     {
+      const char *cmd_utf8;
+
       /* Extracting any meaning from sys_err is platform specific, so just
          use the raw value. */
+      SVN_ERR(svn_utf_cstring_to_utf8(&cmd_utf8, cmd, pool));
       err =  svn_error_createf(SVN_ERR_EXTERNAL_PROGRAM, NULL,
-                               _("system('%s') returned %d"), cmd, sys_err);
+                               _("system('%s') returned %d"),
+                               cmd_utf8, sys_err);
       goto cleanup;
     }
 


Reply via email to