Checkout Tools
  • last updated 6 hours ago
Constraints: committers
Constraints: files
Constraints: dates

Changeset 937692 is being indexed.

Deprecate svn_subst_copy_and_translate3() in favor of a version that has a

cancellation function.

* subversion/include/svn_subst.h:

(svn_subst_copy_and_translate4): new function, like the translate3

version, but with CANCEL_FUNC/BATON.

(svn_subst_copy_and_translate3): mark as deprecated

* subversion/libsvn_subr/subst.c:

(detranslate_special_file): take a CANCEL_FUNC/BATON param pair and pass

it along to svn_stream_copy3(). add an svn_error_return

(svn_subst_copy_and_translate3): renamed to ...

(svn_subst_copy_and_translate4): ... this, and take a CANCEL_FUNC/BATON

pair. pass CANCEL_FUNC/BATON to detranslate_special_file and


* subversion/libsvn_subr/deprecated.c:

(svn_subst_copy_and_translate3): new. call svn_subst_copy_and_translate4


(...): add some svn_error_return love

  1. … 2 more files in changeset.
Update svn_stream_contents_same() to close the streams before exit. If a

stream is read to the end, then it may as well be closed (and, thus,

simplifying the work for the caller).

* subversion/include/svn_io.h:

(svn_stream_contents_same2): new function

(svn_stream_contents_same): deprecated

* subversion/libsvn_subr/stream.c:

(svn_stream_contents_same): renamed to ...

(svn_stream_contents_same2): ... this. the streams are now closed before

exit (regardless or result or error).

* subversion/libsvn_subr/deprecated.c:

(svn_stream_contents_same): new function. the two streams are disowned

before passing to same2() so they won't be closed

  1. … 2 more files in changeset.
Following up on r924797, move the svn_stream_from_aprfile() function I

accidentally removed to deprecated.c.

* subversion/libsvn_subr/deprecated.c

(svn_stream_from_aprfile): Move this function here from stream.c.

Add "const" to all "apr_array_header_t *" input parameters in public and

private APIs.

(Note that we are allowed to add "const" to a pointer parameter of a public

API, and have done so before, because that is a backward-compatible API

change and doesn't change the ABI at all.)

The public functions whose prototypes are changed are listed individually

below; the private functions are not.

* subversion/include/svn_auth.h


* subversion/include/svn_client.h






* subversion/include/svn_delta.h




* subversion/include/svn_fs.h


* subversion/include/svn_mergeinfo.h








* subversion/include/svn_opt.h





* subversion/include/svn_ra.h




* subversion/include/svn_ra_svn.h





* subversion/include/svn_repos.h






* subversion/include/svn_sorts.h


* subversion/include/svn_string.h


* subversion/include/svn_wc.h







* subversion/include/private/svn_cmdline_private.h

* subversion/include/private/svn_opt_private.h

* subversion/libsvn_client/blame.c

* subversion/libsvn_client/client.h

* subversion/libsvn_client/commit.c

* subversion/libsvn_client/commit_util.c

* subversion/libsvn_client/copy.c

* subversion/libsvn_client/deprecated.c

* subversion/libsvn_client/merge.c

* subversion/libsvn_client/mergeinfo.c

* subversion/libsvn_client/mergeinfo.h

* subversion/libsvn_client/patch.c

* subversion/libsvn_client/ra.c

* subversion/libsvn_delta/compat.c

* subversion/libsvn_delta/path_driver.c

* subversion/libsvn_fs_base/reps-strings.c

* subversion/libsvn_fs_base/revs-txns.c

* subversion/libsvn_fs_base/revs-txns.h

* subversion/libsvn_fs_fs/fs_fs.c

* subversion/libsvn_fs_fs/fs_fs.h

* subversion/libsvn_fs/fs-loader.c

* subversion/libsvn_fs/fs-loader.h

* subversion/libsvn_ra/compat.c

* subversion/libsvn_ra/ra_loader.c

* subversion/libsvn_ra/ra_loader.h

* subversion/libsvn_ra/wrapper_template.h

* subversion/libsvn_ra_local/ra_plugin.c

* subversion/libsvn_ra_neon/get_locations.c

* subversion/libsvn_ra_neon/props.c

* subversion/libsvn_ra_neon/ra_neon.h

* subversion/libsvn_ra_serf/getlocations.c

* subversion/libsvn_ra_serf/ra_serf.h

* subversion/libsvn_ra_svn/client.c

* subversion/libsvn_ra_svn/cyrus_auth.c

* subversion/libsvn_ra_svn/editorp.c

* subversion/libsvn_ra_svn/internal_auth.c

* subversion/libsvn_ra_svn/marshal.c

* subversion/libsvn_ra_svn/ra_svn.h

* subversion/libsvn_repos/fs-wrap.c

* subversion/libsvn_repos/log.c

* subversion/libsvn_repos/repos.c

* subversion/libsvn_repos/repos.h

* subversion/libsvn_repos/rev_hunt.c

* subversion/libsvn_subr/auth.c

* subversion/libsvn_subr/cmdline.c

* subversion/libsvn_subr/deprecated.c

* subversion/libsvn_subr/mergeinfo.c

* subversion/libsvn_subr/opt.c

* subversion/libsvn_subr/sorts.c

* subversion/libsvn_subr/svn_string.c

* subversion/libsvn_wc/adm_ops.c

* subversion/libsvn_wc/deprecated.c

* subversion/libsvn_wc/diff.c

* subversion/libsvn_wc/status.c

* subversion/libsvn_wc/update_editor.c

* subversion/libsvn_wc/util.c

* subversion/mod_dav_svn/dav_svn.h

* subversion/mod_dav_svn/reports/file-revs.c

* subversion/mod_dav_svn/util.c

* subversion/svn/cl.h

* subversion/svn/props.c

* subversion/svn/switch-cmd.c

* subversion/svn/util.c

* subversion/svndumpfilter/main.c

* subversion/svnserve/serve.c

* subversion/tests/libsvn_repos/repos-test.c

* subversion/tests/libsvn_subr/mergeinfo-test.c

  1. … 78 more files in changeset.
Move two deprecated functions to 'deprecated.c'.

* subversion/libsvn_subr/deprecated.c

(svn_mergeinfo_inheritable, svn_rangelist_inheritable): Move from ...

* subversion/libsvn_subr/mergeinfo.c

(svn_mergeinfo_inheritable, svn_rangelist_inheritable): ... here.

  1. … 1 more file in changeset.
Test out my new and fancy ASF commit priviledges by changing the copyright

wording in our license headers to reflect ownership by the ASF.


Change terminology to ASF, and update a link.

* subversion/libsvn_subr/opt.c

(svn_opt__print_version_info): Note that the product as a whole is

copyrighted by the ASF, and update the project website.

* everywhere:

Change license text to reflect ASF ownership.

  1. … 891 more files in changeset.
Following up on r39958, move 2 deprecated path functions to deprecated.c and

update test results for a small change in results on Windows.

The change in result on Windows allows old code using svn_path_canonicalize()/

svn_path_internal_style() to produce canonical dirents after the drive letter

casing restrictions were updated.

* subversion/libsvn_subr/deprecated.c

(svn_path_canonicalize): New function; wrapper around uri/dirent support.

(svn_path_is_canonical): New function wrapper around uri/dirent support.

* subversion/libsvn_subr/path.c


svn_path_local_style): Remove functions. These functions were

added to deprecated.c in r39958.


svn_path_is_canonical): Remove functions.

* subversion/tests/libsvn_subr/path-test.c


test_path_internal_style): Expect upper case driveletters on Windows.

  1. … 2 more files in changeset.
Mark two deprecated functions as SVN_DEPRECATED and move their

implementations to deprecated.c

* subversion/libsvn_client/deprecated.c


svn_client_mergeinfo_log_eligible): Move here from mergeinfo.c

* subversion/libsvn_client/mergeinfo.c


svn_client_mergeinfo_log_eligible): Move to deprecated.c

* subversion/include/svn_client.h


svn_client_mergeinfo_log_eligible): Add missing SVN_DEPRECATED markings.

* subversion/libsvn_subr/deprecated.c


svn_path_local_style): New functions, replacing their versions in path.c

[Note from the future: this needs the removement of these functions

in path.c, which was committed in r39959.]

  1. … 3 more files in changeset.
Relicense Subversion under the Apache License, Version 2.0.

* NOTICE: New.



subversion/LICENSE: Remove.

* subversion/libsvn_subr/opt.c

(svn_opt__print_version_info): Note that the product as a whole is

copyrighted by the SVN Corp, and that it contains contributions from

many people, as referenced in NOTICE.

* subversion/bindings/swig/python/LICENSE_FOR_PYTHON_BINDINGS:

Relicense the SVN parts under Apache 2.0.

* everywhere:

Change copyright notices in file headers to reflect the Apache 2.0 license.

  1. … 882 more files in changeset.
Add a MISSING_OK parameter to svn_io_remove_file(). A lot of our calls

actually are okay with the file not being present. We have many places

that catch this error, and ignore it.

This revision introduces the new function, and deprecates the old. Future

revisions will start updating invocations.

* subversion/include/svn_io.h:

(svn_io_remove_file): deprecate, in favor of ...

(svn_io_remove_file2): ... this new function, which adds MISSING_OK

* subversion/libsvn_subr/io.c:

(svn_io_remove_file): renamed to ...

(svn_io_remove_file2): ... this, and a MISSING_OK param added. the POOL

parameter was renamed. internal logic switched around to check the new

flag, and also to early-out.

(reown_file, svn_io_remove_dir2, svn_io_file_move): switch to use the

new svn_io_remove_file2 call, all passing MISSING_OK=FALSE.

* subversion/libsvn_subr/deprecated.c:

(svn_io_remove_file): new function, invokes svn_io_remove_file2.

  1. … 2 more files in changeset.
Shuffle a couple of deprecated functions.

* subversion/libsvn_subr/stream.c

(svn_stream_copy2, svn_stream_copy): Move from here...

* subversion/libsvn_subr/deprecated.c

(svn_stream_copy2, svn_stream_copy): here.

  1. … 1 more file in changeset.
Following up on r36221: (and part of issue #1711 and #2556)

* subversion/include/svn_path.h

(svn_path_split_if_file): Deprecate function.

(Never used in our libraries since at least 1.0)

* subversion/libsvn_subr/deprecated.c

(SVN_EMPTY_PATH): Copy #define here

(svn_path_split, svn_path_split_if_file): Move here from path.c

* subversion/libsvn_subr/io.c

(global): Include svn_dirent_uri.h,

(svn_io_copy_file, svn_io_file_move): Use svn_dirent_dirname().

(svn_io_dir_walk): Use svn_dirent_basename().

(svn_io_write_version_file): Use svn_dirent_dirname().

* subversion/libsvn_subr/opt.c

(global): Include svn_dirent_uri.h

(svn_opt__args_to_target_array): Use svn_dirent_basename instead

of svn_path_basename.

* subversion/libsvn_subr/path.c

(svn_path_split, svn_path_split_if_file): Move to deprecated.c

* subversion/libsvn_subr/subst.c

(global): Include svn_dirent_uri.h

(keyword_printf): Use svn_uri_basename().

(detranslate_special_file, create_special_file_from_stream,

svn_subst_copy_and_translate3): Use svn_dirent_dirname().

  1. … 5 more files in changeset.
Following up on r35746, deprecate public diff apis that use apr internal

encoding for passing the diff tool.

* subversion/include/svn_io.h

(svn_io_run_diff2): New function.

(svn_io_run_diff): Deprecate function.

(svn_io_run_diff3_3): New function.

(svn_io_run_diff3_2): Deprecate function.

* subversion/libsvn_subr/deprecated.c

(svn_io_run_diff): Reimplement here using svn_io_run_diff2.

(svn_io_run_diff3_2): Reimplement here using svn_io_run_diff3_3.

(svn_io_run_diff3): Moved deprecated function here (from io.c).

* subversion/libsvn_subr/io.c

(svn_io_run_diff2): New function, based on svn_io_run_diff, but without

apr internal charset assumption.

(svn_io_run_diff): Move to deprecated.c.

(svn_io_run_diff3_3): New function, based on svn_io_run_diff_3_2, but

without apr internal charset assumption.

(svn_io_run_diff3_2, svn_io_run_diff3): Move to deprecated.c.

Suggested by: gstein

  1. … 2 more files in changeset.
Stop recanonicalizing the base url on every call of svn_path_url_add_component

by introducing svn_path_url_add_component2 that assumes the caller already did


(Our working copy library guarantees all url entries are canonicalized for

new (tested) and old (recanonicalize on load) working copy formats, but

we are recanonicalizing every single path continuously during svn update even

without changes).

This change reduces the user time of svn update time by about 3 or 4% here.

(about 1% wallclock time in my experiment. ra_neon, remote repository)

Update all callers except for the RA layers that currently

might assume the canonicalization.

* subversion/include/svn_path.h

(svn_path_url_add_component2): New function

(svn_path_url_add_component): Deprecate function.

* subversion/libsvn_subr/path.c

(svn_path_url_add_component2): New function.

(svn_path_url_add_component): Move to ...

* subversion/libsvn_subr/deprecated.c

(svn_path_url_add_component): ... here.

* subversion/svn/util.c


* subversion/libsvn_wc/crop.c


* subversion/libsvn_wc/util.c


* subversion/libsvn_wc/adm_ops.c

(tweak_entries, svn_wc_add3):

* subversion/libsvn_wc/status.c

(tweak_statushash, find_dir_url, make_file_baton, close_file):

* subversion/libsvn_wc/update_editor.c

(make_dir_baton, make_file_baton, delete_entry, add_directory,

svn_wc_get_switch_editor3, check_wc_root, svn_wc_add_repos_file3):

* subversion/libsvn_wc/entries.c

(take_from_entry, write_entry, write_entry_xml):

* subversion/libsvn_wc/adm_crawler.c

(report_revisions_and_depths, svn_wc_crawl_revisions4):

* subversion/libsvn_client/externals.c


* subversion/libsvn_client/merge.c

(tree_conflict, filter_self_referential_mergeinfo, merge_file_added

merge_dir_added, populate_remaining_ranges, get_mergeinfo_walk_cb,

combine_range_with_segments, normalize_merge_sources, svn_client_merge3,

ensure_all_missing_ranges_are_phantoms, calculate_left_hand_side):

* subversion/svn/util.c

(svn_cl__node_description): Update callers.

  1. … 13 more files in changeset.
* subversion/libsvn_subr/ssl_client_cert_pw_providers.c

(svn_auth_get_ssl_client_cert_pw_file_provider): Move this and ...

* subversion/libsvn_subr/simple_providers.c

(svn_auth_get_simple_provider): ... this function ...

* subversion/libsvn_subr/deprecated.c


svn_auth_get_simple_provider): To this file.

  1. … 2 more files in changeset.
* subversion/libsvn_subr/prompt.c

(svn_cmdline_prompt_user): Move deprecated function to ...

* subversion/libsvn_subr/deprecated.c

(svn_cmdline_prompt_user): ... this file.

  1. … 1 more file in changeset.
* subversion/libsvn_subr/deprecated.c

(global): Following up on r35621, add missing header.

* subversion/libsvn_subr/dso.c

(svn_dso_initialize): Move deprecated function to ...

* subversion/libsvn_subr/deprecated.c

(svn_dso_initialize): ... this file.

  1. … 1 more file in changeset.
* subversion/libsvn_subr/cmdline.c

(svn_cmdline_setup_auth_baton): Move deprecated function to ...

* subversion/libsvn_subr/deprecated.c

(svn_cmdline_setup_auth_baton): ... deprecated.c

  1. … 1 more file in changeset.
Various cleanups after all the subst work.

* subversion/include/svn_subst.h:

(SVN_SUBST_NATIVE_EOL_STR): new definition for the EOL format used in

the repository ("Normal Form")

* subversion/libsvn_subr/subst.c:

(SVN_SUBST__DEFAULT_EOL_STR): removed in favor of above

(svn_subst_translation_required): use SVN_SUBST_NATIVE_EOL_STR

(svn_subst_copy_and_translate3): fold old svn_subst_create_translated

into this function.

* subversion/libsvn_subr/deprecated.c:


svn_subst_translate_to_normal_form): use SVN_SUBST_NATIVE_EOL_STR

* subversion/libsvn_wc/questions.c:

(compare_and_verify): use SVN_SUBST_NATIVE_EOL_STR

* subversion/libsvn_wc/translate.c:

(svn_wc_translated_stream, svn_wc_translated_file2): use


* subversion/libsvn_wc/merge.c:

(detranslate_wc_file): use SVN_SUBST_NATIVE_EOL_STR

* subversion/libsvn_wc/copy.c:

(copy_file_administratively): use SVN_SUBST_NATIVE_EOL_STR

* subversion/libsvn_client/export.c:

(close_file): simplify via ternary operator removal

* subversion/libsvn_client/commit.c:

(send_file_contents): use SVN_SUBST_NATIVE_EOL_STR

Suggestion (of SVN_SUBST_NATIVE_EOL_STR) by: rhuijben

  1. … 8 more files in changeset.
Deprecate svn_subst_stream_translated_to_normal_form() and remove the

newly-added (in 1.6) svn_subst_create_translated() function.

* subversion/include/svn_subst.h:

(svn_subst_stream_translated_to_normal_form): deprecate

(svn_subst_create_translated): removed

* subversion/libsvn_subr/subst.c:

(svn_subst_stream_translated_to_normal_form): move to deprecated.c

(svn_subst_copy_and_translate3): remove the SPECIAL parameter in our

call to svn_subst_create_translated.

(svn_subst_create_translated): mark as "static" since this is used by

another function within subst.c. remove the SPECIAL parameter since it

is a constant.

* subversion/libsvn_subr/deprecated.c:

(svn_subst_stream_translated_to_normal_form): moved from subst.c

* subversion/libsvn_client/export.c:

(copy_one_versioned_file): adjust logic to early-exit for special files,

and to use svn_subst_create_specialfile() for them. rewrite code to

use svn_subst_stream_translated instead of create_translated. do the

extra fiddly on the temp file before renaming it into place.

* subversion/libsvn_wc/questions.c:

(compare_and_verify): use svn_subst_stream_translated

* subversion/libsvn_wc/translate.c:

(svn_wc_translated_stream): use svn_subst_stream_translated

* subversion/libsvn_wc/copy.c:

(copy_file_administratively): use svn_subst_stream_translated

  1. … 6 more files in changeset.
Adjust a bunch of our public header files:

- make sure everything the header needs is included

- make sure nothing is included which is NOT needed

Added an exception to svn_types.h: it now explicitly includes svn_error.h

since Everybody needs that thing. We go ahead and make it easy for them,

even though that is counter-philosophy.

After altering the header files, some .c files in our codebase would not

compile -- they used stuff that they did not explicitly include. Thus, a

goodly number of .c files were updated, too.

* subversion/libsvn_ra/wrapper_template.h:

* subversion/libsvn_ra/deprecated.c:

* subversion/libsvn_ra/compat.c:

* subversion/libsvn_subr/iter.c:

* subversion/libsvn_subr/cmdline.c:

* subversion/libsvn_subr/ssl_client_cert_pw_providers.c:

* subversion/libsvn_subr/error.c:

* subversion/libsvn_subr/auth.c:

* subversion/libsvn_subr/opt.c:

* subversion/libsvn_subr/checksum.c:

* subversion/libsvn_subr/compat.c:

* subversion/libsvn_subr/sha1.c:

* subversion/libsvn_subr/deprecated.c:

* subversion/libsvn_subr/ssl_server_trust_providers.c:

* subversion/mod_dav_svn/activity.c:

* subversion/mod_dav_svn/reports/log.c:

* subversion/tests/libsvn_fs/fs-test.c:

* subversion/tests/libsvn_repos/repos-test.c:

* subversion/svn/list-cmd.c:

* subversion/svn/changelist-cmd.c:

* subversion/svn/log-cmd.c:

* subversion/svn/conflict-callbacks.c:

* subversion/libsvn_fs_base/dag.c:

* subversion/libsvn_fs_base/util/fs_skels.c:

* subversion/include/svn_dirent_uri.h:

* subversion/include/svn_error_codes.h:

* subversion/include/svn_fs.h:

* subversion/include/svn_diff.h:

* subversion/include/svn_sorts.h:

* subversion/include/svn_mergeinfo.h:

* subversion/include/svn_base64.h:

* subversion/include/svn_dso.h:

* subversion/include/svn_ra_svn.h:

* subversion/include/svn_repos.h:

* subversion/include/svn_delta.h:

* subversion/include/svn_path.h:

* subversion/include/svn_subst.h:

* subversion/include/svn_xml.h:

* subversion/include/svn_props.h:

* subversion/include/svn_iter.h:

* subversion/include/svn_types.h:

* subversion/include/svn_config.h:

* subversion/include/svn_string.h:

* subversion/include/svn_io.h:

* subversion/include/svn_wc.h:

* subversion/include/svn_cmdline.h:

* subversion/include/svn_client.h:

* subversion/include/svn_user.h:

* subversion/include/svn_hash.h:

* subversion/include/svn_md5.h:

* subversion/include/svn_error.h:

* subversion/include/svn_pools.h:

* subversion/include/private/svn_log.h:

* subversion/include/svn_time.h:

* subversion/include/svn_utf.h:

* subversion/include/svn_auth.h:

* subversion/include/svn_ra.h:

* subversion/include/svn_opt.h:

* subversion/include/svn_checksum.h:

* subversion/libsvn_wc/deprecated.c:

* subversion/libsvn_wc/util.c:

* subversion/libsvn_wc/merge.c:

* subversion/libsvn_wc/tree_conflicts.c:

* subversion/libsvn_client/list.c:

* subversion/libsvn_client/log.c:

* subversion/libsvn_ra_neon/util.c:

* subversion/libsvn_ra_neon/log.c:

* subversion/libsvn_repos/deprecated.c:

* subversion/libsvn_fs_fs/tree.c:

* subversion/libsvn_fs_fs/fs_fs.c:

(): adjust #include statements appropriately

  1. … 69 more files in changeset.
Deprecate svn_subst_translate_to_normal_form().

* subversion/include/svn_subst.h:

(svn_subst_translate_to_normal_form): mark as deprecated

* subversion/libsvn_subr/subst.c:

(svn_subst_translate_to_normal_form): move to deprecated.c

* subversion/libsvn_subr/deprecated.c:

(svn_subst_translate_to_normal_form): moved from subst.c

* subversion/libsvn_wc/merge.c:

(detranslate_wc_file): switch to svn_subst_copy_and_translate3()

* subversion/libsvn_client/commit.c:

(send_file_contents): switch to svn_subst_stream_translated() by

reordering some logic, and using svn_subst_read_specialfile()


  1. … 4 more files in changeset.
Following up on r35329, make the new svn_log_changed_path2_t type future

extensible by providing create and dup functions.

* subversion/include/svn_types.h

(svn_log_changed_path2_t): Note that you should use

svn_log_changed_path2_create() to create instances and

svn_log_changed_path2_dup() to duplicate.

(svn_log_changed_path2_create): New function.

(svn_log_changed_path2_dup): New function.

(svn_log_changed_path_dup): Deprecate function

* subversion/libsvn_ra_neon/log.c

(log_start_element): Use svn_log_changed_path2_create()

* subversion/libsvn_ra_serf/log.c

(push_state): Use svn_log_changed_path2_create()

* subversion/libsvn_ra_svn/client.c

(ra_svn_log): Use svn_log_changed_path2_create()

* subversion/libsvn_repos/log.c

(detect_changed): Use svn_log_changed_path2_create()

* subversion/libsvn_subr/constructors.c

(svn_log_changed_path2_create): New function.

(svn_log_changed_path2_dup): New function.

(svn_log_changed_path_dup): Move to ...

* subversion/libsvn_subr/deprecated.c

(svn_log_changed_path_dup): ... here.

  1. … 6 more files in changeset.
Continued evolution of the translation APIs.

- svn_subst_translate_stream4 has been rolled back, leaving the

still-deprecated svn_subst_translate_stream3.

- svn_subst_stream_from_specialfile has been deprecated in favor of the

clearer svn_subst_*_specialfile APIs. the dual-purpose stream was very

hard to use and made reading code using it hard to understand

* subversion/libsvn_subr/subst.c:

(open_specialfile): this poor function has been renamed once again to ...

(svn_subst_read_specialfile): ... this. we also create a readonly stream

around an svn_string_t rather than a stringbuf-based stream.

(svn_subst_translate_stream4): removed. a couple of the key lines move

to deprecated.c and svn_subst_translate_stream3.

(svn_subst_translate_cstring2): big optimization. don't create two

streams and use stream4 to copy between them. instead, create the

stringbuf string to hold the output, wrap a translator stream around

it, and directly write the bytes into it. easy peasy.

(detranslate_special_file): follow rename to svn_subst_read_specialfile

(svn_subst_copy_and_translate3): follow rename to svn_subst_read_specialfile

(svn_subst_create_translated): toss use of stream4 in favor of wrapping

the destination stream (if needed) and always copying

(svn_subst_create_specialfile): new function, with basically a copy of

the deprecated svn_subst_stream_from_specialfile function.

(svn_subst_stream_from_specialfile): follow rename

* subversion/libsvn_subr/deprecated.c:

(svn_subst_translate_stream3): implement stream copying rather than

attempting to call the now-missing stream4 variant.

(svn_subst_stream_detranslated): use new svn_subst_read_specialfile

* subversion/libsvn_client/export.c:

(copy_one_versionedfile): use new svn_subst_read_specialfile

* subversion/libsvn_client/cat.c:

(cat_local_file): optionally wrap destination stream instead of using

the stream4 API.

* subversion/libsvn_wc/questions.c:

(compare_and_verify): use new svn_subst_read_specialfile

* subversion/libsvn_wc/translate.c:

(svn_wc_translated_stream): large control flow tweak in order to remove


* subversion/libsvn_wc/copy.c:

(copy_file_administratively): use new svn_subst_read_specialfile

* subversion/include/svn_subst.h:

(svn_subst_translate_stream4): removed

(svn_subst_translate_stream3): restore the docstring

(svn_subst_read_specialfile, svn_subst_create_specialfile): add new

targeted functions to take over from svn_subst_open_specialfile

  1. … 7 more files in changeset.
Trim down the set of supported APIs in svn_subst.h. Simplify the

translate_stream4 implementation by using the more generalized

streamy code of svn_subst_stream_translated()

* subversion/include/svn_subst.h:

(svn_subst_stream_detranslated): removed in favor of having clients use

one of two other APIs.

(svn_subst_get_detranslated_stream): removed. it was added for 1.6 but

had problems. killed with extreme prejudice.

* subversion/include/svn_io.h:

(svn_stream_copy3): fix typo. add TODO

* subversion/libsvn_client/export.c:

(copy_one_versioned_file): use svn_subst_stream_from_specialfile instead

of the (bad) svn_subst_get_detranslated_stream.

* subversion/libsvn_wc/questions.c:

(compare_and_verify): use svn_subst_stream_from_specialfile or

svn_subst_stream_translated_to_normal_form as appropriate, instead of

the deprecated svn_subst_stream_detranslated. tweak some of the logic

flow for selecting streams to compare.

* subversion/libsvn_wc/copy.c:

(copy_file_administratively): use svn_subst_stream_from_specialfile

instead of svn_subst_get_detranslated_stream. replace use of


* subversion/libsvn_subr/deprecated.c:

(svn_subst_stream_detranslated): moved here from subst.c

* subversion/libsvn_subr/subst.c:

(svn_subst_get_detranslated_stream): renamed to ...

(open_specialfile): ... this, and made static.

(svn_subst_stream_detranslated): moved to deprecated.c

(svn_subst_translate_stream4): full revamp in terms of

svn_subst_stream_translated, instead of "manual" translation.

(detranslate_special_file, svn_subst_copy_and_translate,

svn_subst_stream_from_specialfile): follow rename of

svn_subst_get_detranslated_stream to open_specialfile.

  1. … 6 more files in changeset.
Begin some cleaning up of the translation APIs. Long term goal is to focus

on stream translation and to deprecate all file-based APIs. Callers can

easily map files to/from streams.

- svn_subst_translate_stream4 has been added to ensure that the streams

passed to it will always be closed (simplifies and fixes some error

cleanup logic)

- internal function create_special_file_from_stringbuf has been changed to

take a stream instead

Note: there appears to be a lot of churn in svn_subst.h, but I simply

moved the svn_subst_translate_stream* functions together

* subversion/include/svn_subst.h:

(svn_subst_translate_stream4): new function to obsolete ...

(svn_subst_translate_stream3): ... this one

* subversion/libsvn_subr/subst.c:

(svn_subst_translate_stream3): moved to deprecated.c

(svn_subst_translate_stream4): rebuilt on the ashes of stream3,

including some argument renames. be very careful of all error returns,

in order to make sure that the streams are closed before returning.

(svn_subst_translate_cstring2): simplify in terms of stream4.

(create_special_file_from_stringbuf): renamed into ...

(create_special_file_from_stream): ... this. take a source stream and

read its first line, and create a special file (e.g. symlink) based on

that information.

(create_special_file): rewrite in terms of create_special_file_from_stream

(svn_subst_copy_and_translate3): rebuild and simplify using stream4.

(svn_subst_create_translated): simplify special file creation using

_from_stream. simplify and correct code and error return logic using

the new stream4 variant.

(close_handler_special): use new _from_stream function

* subversion/libsvn_subr/deprecated.c:

(svn_subst_translate_stream3): moved here from subst.c and implemented

in terms of the new stream4 function.

* subversion/libsvn_client/cat.c:

(cat_local_file): switch to svn_subst_translate_stream4() and ensure

that input is disowned for both branches. clarified err return logic.

  1. … 3 more files in changeset.
* subversion/libsvn_subr/deprecated.c: Include svn_path.h, to avoid an

"implicit declaration of function 'svn_path_split'" warning.

Move a deprecated function to the deprecated file (thus removing a warning).

* subversion/libsvn_subr/io.c

(svn_io_open_unique_file2, svn_io_open_unique_file): Move from here...

* subversion/libsvn_subr/deprecated.c

(svn_io_open_unique_file2, svn_io_open_unique_file): here.

  1. … 1 more file in changeset.
Followup to r33933: Don't duplicate a function declaration.

Suggested by: gstein

* subversion/libsvn_subr/opt.h

(svn_opt__args_to_target_array): Remove.

* subversion/libsvn_subr/deprecated.c:

Include private/svn_opt_private.h, which already has the above declaration.

  1. … 1 more file in changeset.