svn commit: r1925892 - /subversion/branches/utf8-cmdline-prototype/subversion/svnlook/svnlook.c

[email protected]
Newsgroups gmane.comp.version-control.subversion.svn
Message-ID <[email protected]>
Author: rinrab
Date: Tue May 27 23:15:25 2025
New Revision: 1925892

URL: http://svn.apache.org/viewvc?rev=1925892&view=rev
Log:
On the 'utf8-cmdline-prototype' branch: utf8-ize svnlook program 🧑‍💻

* subversion/svnlook/svnlook.c
  (print_diff_tree): Don't convert diff_options to utf8 twice.
  (sub_main): Convert args straight to utf8, remove in-place conversions,
   and handle the other arguments as utf8.

Modified:
    subversion/branches/utf8-cmdline-prototype/subversion/svnlook/svnlook.c

Modified: subversion/branches/utf8-cmdline-prototype/subversion/svnlook/svnlook.c
URL: http://svn.apache.org/viewvc/subversion/branches/utf8-cmdline-prototype/subversion/svnlook/svnlook.c?rev=1925892&r1=1925891&r2=1925892&view=diff
==============================================================================
--- subversion/branches/utf8-cmdline-prototype/subversion/svnlook/svnlook.c (original)
+++ subversion/branches/utf8-cmdline-prototype/subversion/svnlook/svnlook.c Tue May 27 23:15:25 2025
@@ -998,9 +998,8 @@ print_diff_tree(svn_stream_t *out_stream
                   diff_cmd_argv = apr_palloc(pool,
                                              diff_cmd_argc * sizeof(char *));
                   for (i = 0; i < diff_cmd_argc; i++)
-                    SVN_ERR(svn_utf_cstring_to_utf8(&diff_cmd_argv[i],
-                              APR_ARRAY_IDX(c->diff_options, i, const char *),
-                              pool));
+                    diff_cmd_argv[i] = apr_pstrdup(
+                        pool, APR_ARRAY_IDX(c->diff_options, i, const char *));
                 }
 
               /* Print diff header. */
@@ -2487,7 +2486,7 @@ sub_main(int *exit_code,
   /* Check library versions */
   SVN_ERR(check_lib_versions());
 
-  SVN_ERR(svn_cmdline__get_cstring_argv(&argv, argc, cmdline_argv, pool));
+  SVN_ERR(svn_cmdline__get_utf8_argv(&argv, argc, cmdline_argv, pool));
 
   /* Initialize the FS library. */
   SVN_ERR(svn_fs_initialize(pool));
@@ -2510,10 +2509,10 @@ sub_main(int *exit_code,
   os->interleave = 1;
   while (1)
     {
-      const char *opt_arg;
+      const char *utf8_opt_arg;
 
       /* Parse the next option. */
-      apr_err = apr_getopt_long(os, options_table, &opt_id, &opt_arg);
+      apr_err = apr_getopt_long(os, options_table, &opt_id, &utf8_opt_arg);
       if (APR_STATUS_IS_EOF(apr_err))
         break;
       else if (apr_err)
@@ -2529,17 +2528,17 @@ sub_main(int *exit_code,
       switch (opt_id)
         {
         case 'r':
-          SVN_ERR(svn_revnum_parse(&opt_state.rev, opt_arg, NULL));
+          SVN_ERR(svn_revnum_parse(&opt_state.rev, utf8_opt_arg, NULL));
           break;
 
         case 't':
-          opt_state.txn = opt_arg;
+          opt_state.txn = apr_pstrdup(pool, utf8_opt_arg);
           break;
 
         case 'M':
           {
             apr_uint64_t sz_val;
-            SVN_ERR(svn_cstring_atoui64(&sz_val, opt_arg));
+            SVN_ERR(svn_cstring_atoui64(&sz_val, utf8_opt_arg));
 
             opt_state.memory_cache_size = 0x100000 * sz_val;
           }
@@ -2580,8 +2579,6 @@ sub_main(int *exit_code,
 
         case 'l':
           {
-            const char *utf8_opt_arg;
-            SVN_ERR(svn_utf_cstring_to_utf8(&utf8_opt_arg, opt_arg, pool));
             err = svn_cstring_atoi(&opt_state.limit, utf8_opt_arg);
             if (err)
               {
@@ -2617,7 +2614,7 @@ sub_main(int *exit_code,
           break;
 
         case 'x':
-          opt_state.extensions = opt_arg;
+          opt_state.extensions = apr_pstrdup(pool, utf8_opt_arg);
           break;
 
         case svnlook__ignore_properties:
@@ -2629,7 +2626,7 @@ sub_main(int *exit_code,
           break;
 
         case svnlook__diff_cmd:
-          opt_state.diff_cmd = opt_arg;
+          opt_state.diff_cmd = apr_pstrdup(pool, utf8_opt_arg);
           break;
 
         case svnlook__show_inherited_props:
@@ -2698,10 +2695,8 @@ sub_main(int *exit_code,
         }
       else
         {
-          const char *first_arg;
+          const char *first_arg = os->argv[os->ind++];
 
-          SVN_ERR(svn_utf_cstring_to_utf8(&first_arg, os->argv[os->ind++],
-                                          pool));
           subcommand = svn_opt_get_canonical_subcommand3(cmd_table, first_arg);
           if (subcommand == NULL)
             {
@@ -2738,12 +2733,7 @@ sub_main(int *exit_code,
 
       /* Get the repository. */
       if (os->ind < os->argc)
-        {
-          SVN_ERR(svn_utf_cstring_to_utf8(&repos_path,
-                                          os->argv[os->ind++],
-                                          pool));
-          repos_path = svn_dirent_internal_style(repos_path, pool);
-        }
+        repos_path = svn_dirent_internal_style(os->argv[os->ind++], pool);
 
       if (repos_path == NULL)
         {
@@ -2768,18 +2758,14 @@ sub_main(int *exit_code,
 
       /* Get next arg (arg1), if any. */
       if (os->ind < os->argc)
-        {
-          SVN_ERR(svn_utf_cstring_to_utf8(&arg1, os->argv[os->ind++], pool));
-          arg1 = svn_dirent_internal_style(arg1, pool);
-        }
+        arg1 = svn_dirent_internal_style(os->argv[os->ind++], pool);
+
       opt_state.arg1 = arg1;
 
       /* Get next arg (arg2), if any. */
       if (os->ind < os->argc)
-        {
-          SVN_ERR(svn_utf_cstring_to_utf8(&arg2, os->argv[os->ind++], pool));
-          arg2 = svn_dirent_internal_style(arg2, pool);
-        }
+        arg2 = svn_dirent_internal_style(os->argv[os->ind++], pool);
+
       opt_state.arg2 = arg2;
     }
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.