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; }