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

Changeset 1806041 is being indexed.

Introduce the svn_cstring_join2() API that allows selecting if the

trailing separator is required in the joined string.

Previously, svn_cstring_join() has been always appending the trailing

separator, and that required us to sometimes manually strip that final

separator from the result.

* subversion/include/svn_string.h

(svn_cstring_join2): New, revved from ...

(svn_cstring_join): ...this function, which is now deprecated.

* subversion/libsvn_subr/string.c

(svn_cstring_join2): New, supports the new 'trailing_separator' argument.

(svn_cstring_join): Move ...

* subversion/libsvn_subr/deprecated.c

(svn_cstring_join): ...here and call svn_cstring_join2() with the

'trailing_separator' set to true, to match the original behavior.

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

(test_cstring_join): New test.

(test_funcs): Add new test.

* subversion/libsvn_repos/hooks.c

(svn_repos__hooks_start_commit): Use svn_cstring_join2() without

the trailing separator, instead of manually stripping it from the

resulting string.

(svn_repos__hooks_post_lock, svn_repos__hooks_post_unlock):

Switch to svn_cstring_join2(), request the trailing separator as

before.

* tools/dev/svnmover/svnmover.c

(execute): Switch to svn_cstring_join2(), request the trailing separator

as before.

  1. … 5 more files in changeset.
Expose the mergerange canonical form helper functions in the private api

to allow hiding some implementation details. Improve the canonical form

api to verify assumptions related to inheritability.

This is initial plumbing for fixing issue #4686.

* subversion/include/private/svn_mergeinfo_private.h

(svn_rangelist__parse): Update comment.

(svn_rangelist__is_canonical): New function.

(svn_rangelist__combine_adjacent_ranges): Remove function, as users

should really call the canonicalize function.

* subversion/libsvn_subr/deprecated.c

(svn_rangelist_merge): Canonicalize the result, instead of just merging

ranges.

* subversion/libsvn_subr/mergeinfo.c

(is_rangelist_normalized): Rename to...

(svn_rangelist__is_canonical): ... this and remove the existing

limitations.

(svn_rangelist__canonicalize): Update caller and fold in the actual

canonicalization that used to be in...

(svn_rangelist__combine_adjacent_ranges): ... this function.

(svn_rangelist_merge2): In SVN_DEBUG mode verify that the result is

canonical when the input arguments are. Currently this assertion

fails for issue #4686.

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

(test_rangelist_merge_overlap): Add some test assertions using the new

helper function.

  1. … 3 more files in changeset.
Make sure two DARWIN specific deprecated functions don't try to access

the keychain library when a user explicitly disabled keychain support

by passing --disable-keychain to configure.

Note that we can't just undefine these functions as that would break

our ABI.

* subversion/libsvn_subr/deprecated.c

(svn_auth_get_keychain_simple_provider,

svn_auth_get_keychain_ssl_client_cert_pw_provider):

Return a dummy provider when SVN_HAVE_KEYCHAIN_SERVICES is not

defined.

Implement svn_base64_encode2() with BREAK_LINES flag to control whether

insert newlines periodically or not. The old svn_base64_encode() was

inserting newlines unconditionally.

* subversion/include/svn_base64.h

(svn_base64_encode2): New function declaration.

(svn_base64_encode): Deprecate.

* subversion/libsvn_subr/base64.c

(encode_baton): Add BREAK_LINES field.

(encode_data, finish_encoding_data): Use EB->BREAK_LINES flag.

(svn_base64_encode2): Revv from svn_base64_encode(). Add BREAK_LINES.

argument and save it in ENCODE_BATON.

* subversion/libsvn_subr/deprecated.c

(svn_base64_encode): Call svn_base64_encode2() with BREAK_LINES=TRUE.

* subversion/mod_dav_svn/util.c

(dav_svn__make_base64_output_stream): Use svn_base64_encode2() with

BREAK_LINES=TRUE.

* subversion/tests/libsvn_delta/svndiff-test.c

(main): Use svn_base64_encode2() with BREAK_LINES=TRUE.

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

(test_stream_base64, test_stream_base64_2): Test svn_base64_encode2() with

BREAK_LINES=TRUE and BREAK_LINES=FALSE.

  1. … 5 more files in changeset.
Remove the scratch pool from svn_string_from_stream2(), for consistency with

svn_stringbuf_from_stream().

* subversion/include/svn_io.h,

subversion/libsvn_subr/stream.c

(svn_string_from_stream2): Remove the scratch scratch pool parameter. (It

wasn't used.)

* subversion/libsvn_fs_x/reps.c

(svn_fs_x__reps_add_base): Update a caller.

* subversion/libsvn_subr/deprecated.c

(svn_string_from_stream): Update a caller.

* subversion/libsvn_wc/old-and-busted.c

(svn_wc__read_entries_old): Update a caller.

* tools/dev/x509-parser.c

(get_der_cert_from_stream): Update a caller.

  1. … 5 more files in changeset.
Revv svn_string_from_stream() function and share implementation with

svn_stringbuf_from_stream().

Suggested by: julianf

* subversion/include/svn_io.h

(svn_string_from_stream2): New.

(svn_string_from_stream): Deprecate.

* subversion/libsvn_subr/stream.c

(svn_string_from_stream2): Revv from svn_string_from_stream(): add LEN_HINT

argument. Use svn_stringbuf_from_stream() as implementation.

* subversion/libsvn_subr/deprecated.c

(svn_string_from_stream): Call svn_string_from_stream2() with LEN_HINT=0.

* subversion/libsvn_fs_x/reps.c

* subversion/libsvn_wc/old-and-busted.c

* tools/dev/x509-parser.c

(svn_fs_x__reps_add_base, svn_wc__read_entries_old,

get_der_cert_from_stream): Use svn_string_from_stream2() with

LEN_HINT=SVN__STREAM_CHUNK_SIZE. It doesn't increase memory usage because

we use same pool for SCRATCH and RESULT pool.

  1. … 5 more files in changeset.
Implement svn_io_write_atomic2() with FLUSH_TO_DISK flag to control whether

wait or not until file is actually written to disk. The old

svn_io_write_atomic() was flushing data to disk unconditionally.

* subversion/include/svn_io.h

(svn_io_write_atomic2): New function declaration.

(svn_io_write_atomic): Deprecate.

* subversion/libsvn_subr/io.c

(svn_io_write_atomic2): Revv from svn_io_write_atomic() Add FLUSH_TO_DISK

parameter and perform flush to disk only if FLUSH_TO_DISK is non-zero.

* subversion/libsvn_subr/deprecated.c

(svn_io_write_atomic): Call svn_io_write_atomic2() with FLUSH_TO_DISK=TRUE.

* subversion/libsvn_fs_fs/fs_fs.c

* subversion/libsvn_fs_fs/transaction.c

* subversion/libsvn_fs_fs/util.c

* subversion/libsvn_fs_x/fs_x.c

* subversion/libsvn_fs_x/revprops.c

* subversion/libsvn_fs_x/util.c

* subversion/libsvn_wc/workqueue.c

* subversion/mod_dav_svn/activity.c

* subversion/tests/libsvn_fs_fs/fs-fs-pack-test.c

* subversion/tests/libsvn_fs_x/fs-x-pack-test.c

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

(*): Use svn_io_write_atomic2() with FLUSH_TO_DISK=TRUE instead of

svn_io_write_atomic().

  1. … 13 more files in changeset.
Introduce svn_stream_for_stdin2 that supports optional APR buffering.

Update all callers.

* subversion/include/svn_io.h

(svn_stream_for_stdin2): Declare new, bumped API version.

(svn_stream_for_stdin): Depcreate.

* subversion/libsvn_subr/deprecated.c

(svn_stream_for_stdin): Implement in terms of the new API version.

* subversion/libsvn_subr/stream.c

(svn_stream_for_stdin2): Implement.

* subversion/svnadmin/svnadmin.c

(subcommand_load): Update caller.

(subcommand_load_revprops): Same. Also, don't use the buffering

read stream wrapper anymore.

* subversion/svnfsfs/load-index-cmd.c

(subcommand__load_index): Ditto.

* subversion/svnmucc/svnmucc.c

(execute): Update caller.

* subversion/svnserve/svnserve.c

(sub_main): Same.

* tools/dev/x509-parser.c

(main): Same.

  1. … 7 more files in changeset.
Implement svn_io_file_rename2() with FLUSH_TO_DISK flag to require OS to

wait until rename operation is actually written to disk. Discussed in thread

"svn commit: r1682265 - /subversion/trunk/subversion/libsvn_fs_fs/util.c" on

dev@s.a.o [1]

[1] http://svn.haxx.se/dev/archive-2015-05/0211.shtml

* subversion/include/svn_io.h

(svn_io_file_rename2): New function declaration.

(svn_io_file_rename): Deprecate.

* subversion/libsvn_subr/io.c

(win32_file_rename): Use MOVEFILE_WRITE_THROUGH flag in call to

MoveFileExW if FLUSH_TO_DISK is non-zero.

(svn_io_file_rename2): Revv from svn_io_file_rename(). Add FLUSH_TO_DISK

parameter and perform flush to disk operation depending on the platform:

use MoveFileEx flag on Windows, fsync() target directory on POSIX and

fsync() target file on all other platforms. This logic mostly copied

from svn_fs_fs__move_into_place().

(svn_io_copy_link, svn_io_copy_file, svn_io_write_atomic,

svn_io_write_version_file): Use svn_io_rename2() with

FLUSH_TO_DISK=FALSE instead of svn_io_rename().

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

(test_file_rename2): Simple tests for svn_io_file_rename2().

(test_funcs): Add test_file_rename2.

* subversion/libsvn_subr/deprecated.c

(svn_io_file_rename): Call svn_io_file_rename2() with FLUSH_TO_DISK=FALSE.

* subversion/libsvn_client/copy.c

* subversion/libsvn_client/export.c

* subversion/libsvn_client/externals.c

* subversion/libsvn_fs_fs/fs_fs.c

* subversion/libsvn_fs_fs/lock.c

* subversion/libsvn_fs_fs/transaction.c

* subversion/libsvn_fs_fs/util.c

* subversion/libsvn_fs_x/lock.c

* subversion/libsvn_fs_x/transaction.c

* subversion/libsvn_fs_x/util.c

* subversion/libsvn_subr/config_auth.c

* subversion/libsvn_subr/stream.c

* subversion/libsvn_subr/subst.c

* subversion/libsvn_wc/copy.c

* subversion/libsvn_wc/node.c

* subversion/libsvn_wc/upgrade.c

* subversion/libsvn_wc/wc_db_pristine.c

* subversion/libsvn_wc/workqueue.c

(*): Use svn_io_file_rename2() with FLUSH_TO_DISK=FALSE instead of

svn_io_file_rename().

  1. … 21 more files in changeset.
Follow up to r1694481: Do not remove a public API implementation.

* subversion/libsvn_subr/auth.h

(svn_auth__get_dummmy_simple_provider): New prototype.

* subversion/libsvn_subr/auth.c

(dummy_first_creds): New.

(svn_auth__get_dummmy_simple_provider): Implement.

* subversion/libsvn_subr/deprecated.c

(svn_auth_get_gpg_agent_simple_provider): Always provide an implementation

on non-Windows platforms, but return a dummy provider if GPG agent

support is not available.

  1. … 2 more files in changeset.
Fix UNIX build without GPG agent.

* subversion/libsvn_subr/deprecated.c

(svn_auth_get_gpg_agent_simple_provider): Disable compilation when we

don't have GPG agent support.

Patch by: Alexander Dreweke <alexander{_AT_}dreweke.net>

For non-interactive mode, allow fine-grained control over which SSL

certificate failures are considered fatal and which may be ignored.

The --trust-server-cert option only accepts certificates signed by an

unknown CA, and rejects certificates which fail for other reasons.

However, in practice, people run into broken SSL configurations that

trigger other failure conditions such as hostname/CN mismatch, expired

certs, etc. Sometimes they are not in a position to fix the problem themselves

and can't get work done (writing scripts) since SVN refuses to operate.

This topic is one of the most discussed issues in the #svn IRC channel.

Somewhat less so on the users@ mailing lists, though it also occurs there.

There is no real reason to prefer one kind of failure condition over

any other. An invalid cert is an invalid cert, regardless of why it fails

validation. Ultimately, it is up to users to waive trust in SSL when it

gets in the way in a particular situation. We should not be making this

decision for them.

Deprecate the --trust-server-cert option and add the following new options

to 'svn', exposing all possible failure modes the underlying API can handle:

--trust-unknown-ca : with --non-interactive, accept SSL server

certificates from unknown certificate authorities

--trust-cn-mismatch : with --non-interactive, accept SSL server

certificates even if the server hostname does not

match the certificate's common name attribute

--trust-expired : with --non-interactive, accept expired SSL server

certificates

--trust-not-yet-valid : with --non-interactive, accept SSL server

certificates from the future

--trust-other-failure : with --non-interactive, accept SSL server

certificates with failures other than the above

* subversion/include/svn_cmdline.h

(svn_cmdline_create_auth_baton2): Declare and document new parameters.

(svn_cmdline_create_auth_baton): Deprecate.

* subversion/libsvn_subr/cmdline.c

(trust_server_cert_non_interactive_baton): New baton.

(ssl_trust_unknown_server_cert): Rename to ...

(trust_server_cert_non_interactive): .. this and implement generic

validation failure checks according to flags passed in baton.

(svn_cmdline_create_auth_baton): Move to libsvn_subr/deprecated.c.

(svn_cmdline_create_auth_baton2): Implement new revision of this API with

new options trust_server_cert_unknown_ca, trust_server_cert_cn_mismatch,

trust_server_cert_expired, trust_server_cert_not_yet_valid, and

trust_server_cert_other_failure.

* subversion/libsvn_subr/deprecated.c

(svn_cmdline_create_auth_baton): Implement as wrapper around

svn_cmdline_create_auth_baton2.

* subversion/svn/cl.h

(svn_cl__opt_state_t): Add new options trust_server_cert_unknown_ca,

trust_server_cert_cn_mismatch, trust_server_cert_expired,

trust_server_cert_not_yet_valid, and trust_server_cert_other_failure.

.

* subversion/svn/svn.c

(svn_cl__longopt_t): Add new options opt_trust_server_cert_unknown_ca,

opt_trust_server_cert_cn_mismatch, opt_trust_server_cert_expired,

opt_trust_server_cert_not_yet_valid, opt_trust_server_cert_other_failure.

(svn_cl__options): Add options and help text for --trust-unknown-ca,

--trust-cn-mismatch, --trust-expired, --trust-not-yet-valid, and

--trust-other-failure.

(svn_cl__global_options): Add the new options here.

(sub_main): Process new options and use svn_cmdline_create_auth_baton2().

* subversion/tests/cmdline/getopt_tests_data/svn_help_log_switch_stdout:

Adjust expected output.

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

* subversion/libsvn_subr/deprecated.c

(svn_handle_error,

svn_handle_warning): Move here...

* subversion/libsvn_subr/error.c

(svn_handle_error,

svn_handle_warning): ... from here.

  1. … 1 more file in changeset.
Revert r1508225, which moved the include of svn_private_config.h before all

includes of our public headers. Public headers shouldn't depend on private

headers and all changes that required this are long reverted on trunk.

This patch excludes all conflicting cases.

* subversion/bindings/swig/perl/libsvn_swig_perl/swigutil_pl.c

* subversion/bindings/swig/python/libsvn_swig_py/swigutil_py.c

* subversion/bindings/swig/ruby/libsvn_swig_ruby/swigutil_rb.c

* subversion/libsvn_auth_gnome_keyring/gnome_keyring.c

* subversion/libsvn_client/add.c

* subversion/libsvn_client/cat.c

* subversion/libsvn_client/changelist.c

* subversion/libsvn_client/cleanup.c

* subversion/libsvn_client/commit.c

* subversion/libsvn_client/commit_util.c

* subversion/libsvn_client/copy.c

* subversion/libsvn_client/copy_foreign.c

* subversion/libsvn_client/ctx.c

* subversion/libsvn_client/delete.c

* subversion/libsvn_client/deprecated.c

* subversion/libsvn_client/diff.c

* subversion/libsvn_client/diff_local.c

* subversion/libsvn_client/diff_summarize.c

* subversion/libsvn_client/export.c

* subversion/libsvn_client/externals.c

* subversion/libsvn_client/import.c

* subversion/libsvn_client/info.c

* subversion/libsvn_client/iprops.c

* subversion/libsvn_client/list.c

* subversion/libsvn_client/locking_commands.c

* subversion/libsvn_client/log.c

* subversion/libsvn_client/merge.c

* subversion/libsvn_client/mergeinfo.c

* subversion/libsvn_client/patch.c

* subversion/libsvn_client/prop_commands.c

* subversion/libsvn_client/ra.c

* subversion/libsvn_client/repos_diff.c

* subversion/libsvn_client/resolved.c

* subversion/libsvn_client/revert.c

* subversion/libsvn_client/switch.c

* subversion/libsvn_client/update.c

* subversion/libsvn_client/util.c

* subversion/libsvn_delta/compat.c

* subversion/libsvn_delta/xdelta.c

* subversion/libsvn_diff/parse-diff.c

* subversion/libsvn_diff/util.c

* subversion/libsvn_fs/access.c

* subversion/libsvn_fs_base/bdb/changes-table.c

* subversion/libsvn_fs_base/bdb/env.c

* subversion/libsvn_fs_base/dag.c

* subversion/libsvn_fs_base/fs.c

* subversion/libsvn_fs_base/lock.c

* subversion/libsvn_fs_base/revs-txns.c

* subversion/libsvn_fs_base/tree.c

* subversion/libsvn_fs_fs/caching.c

* subversion/libsvn_fs_fs/lock.c

* subversion/libsvn_fs_fs/temp_serializer.c

* subversion/libsvn_fs_fs/tree.c

* subversion/libsvn_ra/compat.c

* subversion/libsvn_ra/deprecated.c

* subversion/libsvn_ra/ra_loader.c

* subversion/libsvn_ra_local/ra_plugin.c

* subversion/libsvn_ra_serf/blame.c

* subversion/libsvn_ra_serf/blncache.c

* subversion/libsvn_ra_serf/commit.c

* subversion/libsvn_ra_serf/getlocations.c

* subversion/libsvn_ra_serf/getlocationsegments.c

* subversion/libsvn_ra_serf/getlocks.c

* subversion/libsvn_ra_serf/inherited_props.c

* subversion/libsvn_ra_serf/log.c

* subversion/libsvn_ra_serf/merge.c

* subversion/libsvn_ra_serf/mergeinfo.c

* subversion/libsvn_ra_serf/options.c

* subversion/libsvn_ra_serf/property.c

* subversion/libsvn_ra_serf/replay.c

* subversion/libsvn_ra_serf/serf.c

* subversion/libsvn_ra_serf/update.c

* subversion/libsvn_ra_serf/util.c

* subversion/libsvn_ra_serf/xml.c

* subversion/libsvn_ra_svn/client.c

* subversion/libsvn_ra_svn/editorp.c

* subversion/libsvn_ra_svn/marshal.c

* subversion/libsvn_repos/authz.c

* subversion/libsvn_repos/commit.c

* subversion/libsvn_repos/delta.c

* subversion/libsvn_repos/deprecated.c

* subversion/libsvn_repos/fs-wrap.c

* subversion/libsvn_repos/hooks.c

* subversion/libsvn_repos/log.c

* subversion/libsvn_repos/replay.c

* subversion/libsvn_repos/reporter.c

* subversion/libsvn_repos/repos.c

* subversion/libsvn_repos/rev_hunt.c

* subversion/libsvn_subr/auth.c

* subversion/libsvn_subr/cmdline.c

* subversion/libsvn_subr/compat.c

* subversion/libsvn_subr/config.c

* subversion/libsvn_subr/config_auth.c

* subversion/libsvn_subr/deprecated.c

* subversion/libsvn_subr/dso.c

* subversion/libsvn_subr/hash.c

* subversion/libsvn_subr/io.c

* subversion/libsvn_subr/mergeinfo.c

* subversion/libsvn_subr/opt.c

* subversion/libsvn_subr/properties.c

* subversion/libsvn_subr/simple_providers.c

* subversion/libsvn_subr/sorts.c

* subversion/libsvn_subr/ssl_client_cert_providers.c

* subversion/libsvn_subr/ssl_client_cert_pw_providers.c

* subversion/libsvn_subr/ssl_server_trust_providers.c

* subversion/libsvn_subr/subst.c

* subversion/libsvn_subr/types.c

* subversion/libsvn_subr/username_providers.c

* subversion/libsvn_subr/utf.c

* subversion/libsvn_subr/win32_crypto.c

* subversion/libsvn_wc/adm_crawler.c

* subversion/libsvn_wc/adm_files.c

* subversion/libsvn_wc/conflicts.c

* subversion/libsvn_wc/copy.c

* subversion/libsvn_wc/deprecated.c

* subversion/libsvn_wc/diff_editor.c

* subversion/libsvn_wc/diff_local.c

* subversion/libsvn_wc/entries.c

* subversion/libsvn_wc/externals.c

* subversion/libsvn_wc/info.c

* subversion/libsvn_wc/lock.c

* subversion/libsvn_wc/node.c

* subversion/libsvn_wc/old-and-busted.c

* subversion/libsvn_wc/props.c

* subversion/libsvn_wc/revert.c

* subversion/libsvn_wc/status.c

* subversion/libsvn_wc/update_editor.c

* subversion/libsvn_wc/upgrade.c

* subversion/libsvn_wc/wc_db_update_move.c

* subversion/libsvn_wc/wc_db_wcroot.c

* subversion/mod_dav_svn/repos.c

* subversion/mod_dav_svn/version.c

* subversion/svn/cl-conflicts.c

* subversion/svn/commit-cmd.c

* subversion/svn/conflict-callbacks.c

* subversion/svn/diff-cmd.c

* subversion/svn/help-cmd.c

* subversion/svn/notify.c

* subversion/svn/propedit-cmd.c

* subversion/svn/propget-cmd.c

* subversion/svn/props.c

* subversion/svn/status-cmd.c

* subversion/svn/status.c

* subversion/svn/svn.c

* subversion/svn/util.c

* subversion/svnadmin/svnadmin.c

* subversion/svnlook/svnlook.c

* subversion/svnrdump/dump_editor.c

* subversion/svnrdump/svnrdump.c

* subversion/svnrdump/util.c

* subversion/svnserve/serve.c

* subversion/svnsync/svnsync.c

* subversion/svnsync/sync.c

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

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

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

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

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

* subversion/tests/libsvn_wc/conflict-data-test.c

* subversion/tests/libsvn_wc/op-depth-test.c

* subversion/tests/libsvn_wc/wc-test.c

* subversion/tests/svn_test_fs.c

* tools/server-side/fsfs-stats.c

Move the svn_string_private.h include back to the original location.

  1. … 162 more files in changeset.
Following up on r1561688, remove the automatic use of a full read as default

implementation for a possibly partial read. Provide a default full read

implementation for code that only implements partial reads.

* subversion/include/svn_error_codes.h

(SVN_ERR_STREAM_DATA_AVAILABLE_NOT_SUPPORTED): Rename to...

(SVN_ERR_STREAM_NOT_SUPPORTED): ... this instead of adding yet another error.

* subversion/include/svn_io.h

(svn_stream_set_read2,

svn_stream_set_read): Tweak comments.

(svn_stream_read2): Document not implemented behavior.

(svn_stream_data_available): Update error code.

* subversion/libsvn_ra_svn/cyrus_auth.c

(sasl_read_full_cb): Remove function.

(svn_ra_svn__enable_sasl_encryption): Pass null instead of stub.

* subversion/libsvn_ra_svn/streams.c

(sock_read_full_cb): Remove function.

(svn_ra_svn__stream_from_sock): Pass NULL instead of stub.

* subversion/libsvn_subr/deprecated.c

(svn_stream_set_read): Update caller with new rules.

* subversion/libsvn_subr/stream.c

(full_read_fallback): New function.

(svn_stream_read2): Return documented error instead of assert when not set.

(svn_stream_read_full): Fall back to multiple calls to svn_stream_read2

not set.

(data_available_handler_apr): Update error code.

  1. … 5 more files in changeset.
Following up on r1561387, which was (temporarily) reverted in r1561424 extend

the existing stream api with an optional incomplete read function to allow

using the stream api as was intended by r1561387.

After discussion on irc we came with the idea of revving svn_stream_read()

to two separate functions: one with full read semantics (like before) and one

with the new possibly incomplete read support.

This patch currently provides a default implementation of the incomplete read

with a forced complete read. Brane suggests that it might be better to just

return an error for requested incomplete reads. I commit this version under

the assumption that it is very easy to change this later in a separate patch.

* subversion/include/svn_io.h

(svn_stream_t): Tweak documentation.

(svn_stream_set_read2): New function.

(svn_stream_set_read): Deprecate function.

(svn_stream_read_full): New function.

(svn_stream_read2): New function.

(svn_stream_read): Deprecate function.

* subversion/libsvn_subr/deprecated.c

(svn_stream_set_read): New function.

(svn_stream_read): New function.

(md5_stream_baton,

read_handler_md5): Move here from stream.c. Update caller.

(read_full_handler_md5): New function.

(skip_handler_md5,

write_handler_md5,

close_handler_md5): Move here from stream.c.

(svn_stream_checksummed): Move here. Update caller.

* subversion/libsvn_subr/stream.c

(svn_stream_t): Add callback.

(skip_default_handler): Update prototype.

(svn_stream_set_read): Rename to...

(svn_stream_set_read2): ... this and set both callbacks.

(svn_stream_read2): New function.

(svn_stream_read): Rename to...

(svn_stream_read_full): ... this. Update used callback.

(svn_stream_skip): Pass full read callback.

(stream_readline_bytewise,

stream_readline_chunky,

svn_stream_copy3,

svn_stream_contents_same2): Update caller.

(skip_default_handler): Rename argument to auto-document behavior.

(svn_stream_empty): Pass same read handler for both apis.

(read_handler_disown): Update caller.

(read_full_handler_disown): New function.

(svn_stream_disown): Update caller.

(read_handler_apr): New function. Rename the old function

with this name to ...

(read_full_handler_apr): ... this.

(svn_stream_from_aprfile2): Update caller.

(read_handler_checksum): New function. Rename the old function

with this name to ...

(read_full_handler_checksum): ... this.

(close_handler_checksum): Update caller.

(svn_stream_checksummed2): Update caller.

(md5_stream_baton,

read_handler_md5,

skip_handler_md5,

write_handler_md5,

close_handler_md5,

svn_stream_checksummed): Move to deprecated.c

(svn_stringbuf_from_stream,

svn_stream_from_stringbuf,

svn_stream_from_string,

svn_string_from_stream): Update caller.

(read_handler_lazyopen): Update caller.

(read_full_handler_lazyopen): New function.

(svn_stream_lazyopen_create): Update caller.

  1. … 2 more files in changeset.
Mark platform specific svn_auth_get_* functions as deprecated to discourage

api consumers from using them and point them towards

svn_auth_get_platform_specific_provider().

* subversion/include/svn_auth.h

(svn_auth_get_windows_simple_provider,

svn_auth_get_windows_ssl_client_cert_pw_provider,

svn_auth_get_windows_ssl_server_trust_provider,

svn_auth_get_keychain_simple_provider,

svn_auth_get_keychain_ssl_client_cert_pw_provider,

svn_auth_get_gnome_keyring_simple_provider,

svn_auth_get_gnome_keyring_ssl_client_cert_pw_provider,

svn_auth_get_kwallet_simple_provider,

svn_auth_get_kwallet_ssl_client_cert_pw_provider,

svn_auth_get_gpg_agent_simple_provider): Deprecate

* subversion/libsvn_subr/auth.h

(svn_auth__get_windows_simple_provider,

svn_auth__get_windows_ssl_client_cert_pw_provider,

svn_auth__get_windows_ssl_server_trust_provider,

svn_auth__get_keychain_simple_provider,

svn_auth__get_keychain_ssl_client_cert_pw_provider,

svn_auth__get_gnome_keyring_simple_provider,

svn_auth__get_gnome_keyring_ssl_client_cert_pw_provider,

svn_auth__get_kwallet_simple_provider,

svn_auth__get_kwallet_ssl_client_cert_pw_provider,

svn_auth__get_gpg_agent_simple_provider): Add private delcartions.

* subversion/libsvn_subr/gpg_agent.c,

subversion/libsvn_subr/macos_keychain.c,

subversion/libsvn_subr/win32_crypto.c:

(svn_auth__get_*): Convert public versions to private versions.

* subversion/libsvn_subr/deprecated.c

(svn_auth_get_*): Implement public versions as wrappers of the new private

versions.

* subversion/libsvn_subr/auth.c

(svn_auth_get_platform_specific_provider): Use private versions

of the platform specific svn_auth_get_* functions in order

to avoid warnings about using deprecated functions.

  1. … 6 more files in changeset.
Move deprecated utf function to deprecated.c

* subversion/libsvn_subr/deprecated.c

(svn_utf_cstring_from_utf8_ex): Move function here..

* subversion/libsvn_subr/utf.c

(svn_utf_cstring_from_utf8_ex): ... that used to be here.

  1. … 1 more file in changeset.
Fix the #include order such that svn_private_config.h is always

included first before any other svn header - if we also include

svn_hash.h.

* subversion/bindings/javahl/native/org_apache_subversion_javahl_ConfigImpl_Category.cpp,

subversion/bindings/swig/perl/libsvn_swig_perl/swigutil_pl.c,

subversion/bindings/swig/python/libsvn_swig_py/swigutil_py.c,

subversion/bindings/swig/ruby/libsvn_swig_ruby/swigutil_rb.c,

subversion/libsvn_auth_gnome_keyring/gnome_keyring.c,

subversion/libsvn_client/add.c,

subversion/libsvn_client/cat.c,

subversion/libsvn_client/changelist.c,

subversion/libsvn_client/cleanup.c,

subversion/libsvn_client/commit.c,

subversion/libsvn_client/commit_util.c,

subversion/libsvn_client/copy.c,

subversion/libsvn_client/copy_foreign.c,

subversion/libsvn_client/ctx.c,

subversion/libsvn_client/delete.c,

subversion/libsvn_client/deprecated.c,

subversion/libsvn_client/diff.c,

subversion/libsvn_client/diff_local.c,

subversion/libsvn_client/diff_summarize.c,

subversion/libsvn_client/export.c,

subversion/libsvn_client/externals.c,

subversion/libsvn_client/import.c,

subversion/libsvn_client/info.c,

subversion/libsvn_client/iprops.c,

subversion/libsvn_client/list.c,

subversion/libsvn_client/locking_commands.c,

subversion/libsvn_client/log.c,

subversion/libsvn_client/merge.c,

subversion/libsvn_client/mergeinfo.c,

subversion/libsvn_client/patch.c,

subversion/libsvn_client/prop_commands.c,

subversion/libsvn_client/ra.c,

subversion/libsvn_client/repos_diff.c,

subversion/libsvn_client/resolved.c,

subversion/libsvn_client/revert.c,

subversion/libsvn_client/status.c,

subversion/libsvn_client/switch.c,

subversion/libsvn_client/update.c,

subversion/libsvn_client/util.c,

subversion/libsvn_delta/compat.c,

subversion/libsvn_delta/xdelta.c,

subversion/libsvn_diff/parse-diff.c,

subversion/libsvn_diff/util.c,

subversion/libsvn_fs/access.c,

subversion/libsvn_fs_base/bdb/changes-table.c,

subversion/libsvn_fs_base/bdb/env.c,

subversion/libsvn_fs_base/dag.c,

subversion/libsvn_fs_base/fs.c,

subversion/libsvn_fs_base/lock.c,

subversion/libsvn_fs_base/revs-txns.c,

subversion/libsvn_fs_base/tree.c,

subversion/libsvn_fs_fs/caching.c,

subversion/libsvn_fs_fs/fs_fs.c,

subversion/libsvn_fs/fs-loader.c,

subversion/libsvn_fs_fs/lock.c,

subversion/libsvn_fs_fs/temp_serializer.c,

subversion/libsvn_fs_fs/tree.c,

subversion/libsvn_fs_util/fs-util.c,

subversion/libsvn_ra/compat.c,

subversion/libsvn_ra/deprecated.c,

subversion/libsvn_ra_local/ra_plugin.c,

subversion/libsvn_ra/ra_loader.c,

subversion/libsvn_ra_serf/blame.c,

subversion/libsvn_ra_serf/blncache.c,

subversion/libsvn_ra_serf/commit.c,

subversion/libsvn_ra_serf/getlocations.c,

subversion/libsvn_ra_serf/getlocationsegments.c,

subversion/libsvn_ra_serf/getlocks.c,

subversion/libsvn_ra_serf/inherited_props.c,

subversion/libsvn_ra_serf/log.c,

subversion/libsvn_ra_serf/merge.c,

subversion/libsvn_ra_serf/mergeinfo.c,

subversion/libsvn_ra_serf/options.c,

subversion/libsvn_ra_serf/property.c,

subversion/libsvn_ra_serf/replay.c,

subversion/libsvn_ra_serf/serf.c,

subversion/libsvn_ra_serf/update.c,

subversion/libsvn_ra_serf/util.c,

subversion/libsvn_ra_serf/xml.c,

subversion/libsvn_ra_svn/client.c,

subversion/libsvn_ra_svn/editorp.c,

subversion/libsvn_ra_svn/marshal.c,

subversion/libsvn_repos/authz.c,

subversion/libsvn_repos/commit.c,

subversion/libsvn_repos/delta.c,

subversion/libsvn_repos/deprecated.c,

subversion/libsvn_repos/fs-wrap.c,

subversion/libsvn_repos/hooks.c,

subversion/libsvn_repos/log.c,

subversion/libsvn_repos/replay.c,

subversion/libsvn_repos/reporter.c,

subversion/libsvn_repos/repos.c,

subversion/libsvn_repos/rev_hunt.c,

subversion/libsvn_subr/auth.c,

subversion/libsvn_subr/cmdline.c,

subversion/libsvn_subr/compat.c,

subversion/libsvn_subr/config_auth.c,

subversion/libsvn_subr/config.c,

subversion/libsvn_subr/deprecated.c,

subversion/libsvn_subr/dso.c,

subversion/libsvn_subr/hash.c,

subversion/libsvn_subr/io.c,

subversion/libsvn_subr/mergeinfo.c,

subversion/libsvn_subr/opt.c,

subversion/libsvn_subr/properties.c,

subversion/libsvn_subr/simple_providers.c,

subversion/libsvn_subr/sorts.c,

subversion/libsvn_subr/ssl_client_cert_providers.c,

subversion/libsvn_subr/ssl_client_cert_pw_providers.c,

subversion/libsvn_subr/ssl_server_trust_providers.c,

subversion/libsvn_subr/subst.c,

subversion/libsvn_subr/types.c,

subversion/libsvn_subr/username_providers.c,

subversion/libsvn_subr/utf.c,

subversion/libsvn_subr/win32_crypto.c,

subversion/libsvn_wc/adm_crawler.c,

subversion/libsvn_wc/adm_files.c,

subversion/libsvn_wc/adm_ops.c,

subversion/libsvn_wc/conflicts.c,

subversion/libsvn_wc/copy.c,

subversion/libsvn_wc/deprecated.c,

subversion/libsvn_wc/diff_editor.c,

subversion/libsvn_wc/diff_local.c,

subversion/libsvn_wc/entries.c,

subversion/libsvn_wc/externals.c,

subversion/libsvn_wc/info.c,

subversion/libsvn_wc/lock.c,

subversion/libsvn_wc/node.c,

subversion/libsvn_wc/old-and-busted.c,

subversion/libsvn_wc/props.c,

subversion/libsvn_wc/revert.c,

subversion/libsvn_wc/status.c,

subversion/libsvn_wc/translate.c,

subversion/libsvn_wc/update_editor.c,

subversion/libsvn_wc/upgrade.c,

subversion/libsvn_wc/wc_db.c,

subversion/libsvn_wc/wc_db_update_move.c,

subversion/libsvn_wc/wc_db_wcroot.c,

subversion/libsvn_wc/workqueue.c,

subversion/mod_dav_svn/activity.c,

subversion/mod_dav_svn/deadprops.c,

subversion/mod_dav_svn/lock.c,

subversion/mod_dav_svn/merge.c,

subversion/mod_dav_svn/mod_dav_svn.c,

subversion/mod_dav_svn/reports/update.c,

subversion/mod_dav_svn/repos.c,

subversion/mod_dav_svn/version.c,

subversion/svnadmin/svnadmin.c,

subversion/svnauth/svnauth.c,

subversion/svn/cl-conflicts.c,

subversion/svn/commit-cmd.c,

subversion/svn/conflict-callbacks.c,

subversion/svn/diff-cmd.c,

subversion/svn/help-cmd.c,

subversion/svnlook/svnlook.c,

subversion/svnmucc/svnmucc.c,

subversion/svn/notify.c,

subversion/svn/propedit-cmd.c,

subversion/svn/propget-cmd.c,

subversion/svn/props.c,

subversion/svnrdump/dump_editor.c,

subversion/svnrdump/svnrdump.c,

subversion/svnrdump/util.c,

subversion/svnserve/serve.c,

subversion/svn/status.c,

subversion/svn/status-cmd.c,

subversion/svn/svn.c,

subversion/svnsync/svnsync.c,

subversion/svnsync/sync.c,

subversion/svn/util.c,

subversion/tests/libsvn_fs/fs-test.c,

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

subversion/tests/libsvn_subr/hashdump-test.c,

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

subversion/tests/libsvn_subr/subst_translate-test.c,

subversion/tests/libsvn_wc/conflict-data-test.c,

subversion/tests/libsvn_wc/op-depth-test.c,

subversion/tests/libsvn_wc/wc-test.c,

subversion/tests/svn_test_fs.c,

tools/dev/fsfs-reorg.c,

tools/server-side/fsfs-stats.c): #include svn_private_config.h first

  1. … 180 more files in changeset.
Enforce our standing policy that the cmdline tools and all libraries must be

upgraded in lockstep: fail the library version check if any of the dependency

libraries are not exactly the same version as the calling library or binary.

* subversion/include/svn_version.h

(svn_ver_check_list): Deprecate.

(svn_ver_check_list2): New.

(svn_ver_equal, svn_ver_compatible):

Document their use in svn_ver_check_list2().

* subversion/libsvn_subr/deprecated.c

* subversion/libsvn_subr/version.c

(svn_ver_check_list): New deprecated wrapper.

(svn_ver_check_list2): Implement.

* subversion/libsvn_fs_base/fs.c

(svn_fs_base__init):

* subversion/libsvn_fs_fs/fs.c

(svn_fs_fs__init):

* subversion/libsvn_ra_local/ra_plugin.c

(svn_ra_local__init):

* subversion/libsvn_ra_serf/serf.c

(svn_ra_serf__init):

* subversion/libsvn_ra_svn/client.c

(svn_ra_svn__init):

* subversion/libsvn_subr/auth.c

(svn_auth_get_platform_specific_provider):

* subversion/svn/svn.c

(check_lib_versions):

* subversion/svnadmin/svnadmin.c

(check_lib_versions):

* subversion/svnadmin/svnadmin.c

(check_lib_versions):

* subversion/svnadmin/svnadmin.c

(check_lib_versions):

* subversion/svndumpfilter/svndumpfilter.c

(check_lib_versions):

* subversion/svnlook/svnlook.c

(check_lib_versions):

* subversion/svnmucc/svnmucc.c

(init):

* subversion/svnserve/svnserve.c

(check_lib_versions):

* subversion/svnsync/svnsync.c

(check_lib_versions):

* subversion/svnversion/svnversion.c

(check_lib_versions):

Update callers.

  1. … 16 more files in changeset.
Swap the argument order of svn_utf_initialize2() in its definition and all its

callers to follow our standard ordering rules.

* subversion/include/svn_utf.h

(svn_utf_initialize2): Reorder arguments.

* subversion/libsvn_subr/cmdline.c

(svn_cmdline_init): Update caller.

* subversion/libsvn_subr/deprecated.c

(svn_utf_initialize): Update caller.

* subversion/libsvn_subr/utf.c

(svn_utf_initialize2): Update argument order.

* subversion/mod_dav_svn/mod_dav_svn.c

(init): Update caller.

  1. … 4 more files in changeset.
Fix issue #4361 (user/group names in authz files are case-insensitive).

Because of the way the original svn_config structure was designed to be

case-preserving but case-insensitive, when using it to parse authz

and group definition files, we had the following problems:

* User- and group names that differed only in case could not be

represented in the authorization configuration.

* The results returned from authorization queries depended,

although predictably, on the order in which the authz entries

appeared in the authz file.

In 1.7.0, we added an option to svn_config to make configuration groups

(hence, repository paths in the authz config) case-sensitive. This change

does the same for option names, which map to group and user names.

* subversion/include/svn_config.h

(svn_config_create2): New, revised from svn_config_create, with additional

flag to treat option names as case-sensitive.

(svn_config_read3): New, revised from svn_config_read2, with same

additional flag as above.

(svn_config_parse): Add flag to treat option names as case-sensitive.

(svn_config_create): Deprecated.

(svn_config_read2): Deprecated; argument "pool" renamde to "result_pool".

(svn_config_read): Argument "pool" renamde to "result_pool".

* subversion/libsvn_subr/config_impl.h (struct svn_config_t): Add new

struct member option_names_case_sensitive.

* subversion/libsvn_subr/config.c: Replace the newly deprecated

svn_config APIs with their revised versions.

(svn_config_create2): Renamed from

svn_config_create and implementation updated to the new spec.

(svn_config_read3): Renamed from svn_config_read; then same as above.

(svn_config_merge): Make sure both sides of the merged config

have the same case-(in)sensitive behaviour.

(svn_config_create_option): Added case-sensitive flag.

* subversion/libsvn_subr/deprecated.c

(svn_config_create, svn_config_read2): Implement deprecated wrappers.

* subversion/libsvn_repos/authz.c

(authz_retrieve_config_repo, authz_retrieve_config,

svn_repos__authz_read, svn_repos_authz_parse): Parse authz and groups config

files with case-sensitive user and group names.

* subversion/libsvn_repos/hooks.c (svn_repos__parse_hooks_env):

Likewise for the hooks environment file.

* subversion/libsvn_fs_fs/fs_fs.c,

subversion/svnserve/serve.c,

subversion/svnserve/svnserve.c,

subversion/tests/libsvn_subr/cache-test.c,

tools/server-side/mod_dontdothat/mod_dontdothat.c: Replace the newly

deprecated svn_config APIs with their revised versions.

No functional changes were made.

  1. … 12 more files in changeset.
* subversion/libsvn_subr/subst.c

(svn_subst_build_keywords): Move deprecated function ...

* subversion/libsvn_subr/deprecated.c

(svn_subst_build_keywords): ... here.

  1. … 1 more file in changeset.
Use svn_hash_gets and svn_hash_sets.

* subversion/libsvn_subr/auth.c

* subversion/libsvn_subr/cmdline.c

* subversion/libsvn_subr/compat.c

* subversion/libsvn_subr/config.c

* subversion/libsvn_subr/config_auth.c

* subversion/libsvn_subr/deprecated.c

* subversion/libsvn_subr/dso.c

* subversion/libsvn_subr/hash.c

* subversion/libsvn_subr/io.c

* subversion/libsvn_subr/mergeinfo.c

* subversion/libsvn_subr/opt.c

* subversion/libsvn_subr/properties.c

* subversion/libsvn_subr/simple_providers.c

* subversion/libsvn_subr/ssl_client_cert_providers.c

* subversion/libsvn_subr/ssl_client_cert_pw_providers.c

* subversion/libsvn_subr/ssl_server_trust_providers.c

* subversion/libsvn_subr/subst.c

* subversion/libsvn_subr/types.c

* subversion/libsvn_subr/username_providers.c

* subversion/libsvn_subr/utf.c

* subversion/libsvn_subr/win32_crypto.c

* subversion/libsvn_subr/xml.c

  1. … 21 more files in changeset.
Optimize a few truename checks on Windows to use a far more efficient code

path.

* subversion/include/svn_io.h

(svn_io_stat_dirent2): New function, allowing optional truename check.

(svn_io_stat_dirent): Deprecate function.

* subversion/libsvn_subr/deprecated.c

(svn_io_stat_dirent): New function.

* subversion/libsvn_subr/io.c

(svn_io_stat_dirent): Rename to ...

(svn_io_stat_dirent2): ... this and use the existing stat call to perform

a truename check.

* subversion/libsvn_subr/sysinfo.c

(includes): Add path handling.

(win32_shared_libs): Just use our own apis instead of the apr ones, that

perform a lot of unnecessary IO for the TRUENAME question that we don't

even need.

* subversion/libsvn_wc/status.c

(stat_wc_dirent_case_sensitive): Use svn_io_stat_dirent2 for a cheaper

truename check.

  1. … 4 more files in changeset.
Coding style patch: in logical expressions, instead of comparing

with arithmetic constants use boolean operations. I.e. replace

<expr> == TRUE with <expr> and

<expr> == FALSE with !<expr>

* subversion/libsvn_delta/svndiff.c

(send_simple_insertion_window,

window_handler): change condition style

* subversion/libsvn_fs_base/fs.c

(svn_fs_base__clean_logs): ditto

* subversion/libsvn_fs_fs/fs_fs.c

(representation_string,

create_rep_state_body,

build_rep_list): ditto

* subversion/libsvn_ra_serf/locks.c

(handle_lock): ditto

* subversion/libsvn_ra_serf/property.c

(create_propfind_body): same here,

* subversion/libsvn_ra_serf/update.c

(cancel_fetch,

handle_fetch,

end_report,

finish_report): here,

* subversion/libsvn_ra_serf/util.c

(svn_ra_serf__handle_xml_parser): here,

* subversion/libsvn_ra_svn/client.c

(optbool_to_tristate): here,

* subversion/libsvn_repos/authz.c

(authz_parse_section): and here.

* subversion/libsvn_repos/fs-wrap.c

(svn_repos__validate_prop): here as well

* subversion/libsvn_subr/cmdline.c

(svn_cmdline_create_auth_baton): and here

* subversion/libsvn_subr/deprecated.c

(print_command_info): here

* subversion/libsvn_subr/opt.c

(print_command_info2): more of the same

* subversion/libsvn_subr/subst.c

(translate_chunk): ditto

* subversion/libsvn_subr/win32_crashrpt.c

(write_var_values,

svn__unhandled_exception_filter): ditto

* subversion/svn/svn.c

(sub_main): ditto

* subversion/svnsync/svnsync.c

(filter_props): and more of the

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

(test_readonly): same thing

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

(test21): ditto

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

(test_svn_subst_translate_string2_null_encode): here

* subversion/tests/libsvn_wc/db-test.c

(test_getting_info,

test_working_info): and here

* tools/client-side/svn-bench/svn-bench.c

(sub_main): and finally here

  1. … 21 more files in changeset.
Catch some typos. No functional changes.

* subversion/include/private/svn_mergeinfo_private.h

(svn_rangelist__parse,

svn_rangelist__combine_adjecent_ranges,

svn_rangelist__combine_adjacent_ranges): Catch typos.

* subversion/include/svn_mergeinfo.h

(svn_rangelist_merge2,

svn_rangelist_merge): Catch typos.

* subversion/libsvn_subr/deprecated.c

(svn_rangelist_merge): Update caller.

* subversion/libsvn_subr/mergeinfo.c

(svn_rangelist__combine_adjecent_ranges): Rename function.

(svn_rangelist__combine_adjacent_ranges): New name.

(parse_revision_line): Update caller.

Found by: julianfoad

  1. … 3 more files in changeset.
Fulfill a promise of a deprecated rangelist api by refactoring some code.

Document that we don't promise this behavior in the newer api, and point users

of an internal api towards an internal api that might help users fulfill this

promise.

* subversion/include/private/svn_mergeinfo_private.h

(svn_rangelist__parse): Add pointer.

(svn_rangelist__combine_adjecent_ranges): Add function.

* subversion/include/svn_mergeinfo.h

(svn_rangelist_merge2): Document real behavior.

(svn_rangelist_merge): Document the old promise as difference.

* subversion/libsvn_subr/deprecated.c

(includes): Add svn_mergeinfo_private.h.

(svn_rangelist_merge): Call svn_rangelist__combine_adjecent_ranges on the

to be returned rangelist to fulfill promise.

* subversion/libsvn_subr/mergeinfo.c

(svn_rangelist__combine_adjecent_ranges): New function. Extracted from

parse_revision_line.

(parse_revision_line): Call svn_rangelist__combine_adjecent_ranges.

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

(test_funcs): Expect 'test_rangelist_merge' to pass, because it uses

svn_rangelist_merge.

  1. … 4 more files in changeset.
Make the extended version info retrieval a public API.

* subversion/include/svn_version.h: Include apr_tables.h.

(svn_version_extended_t): Move here, rename from svn_opt__version_info_t.

(svn_version_linked_lib_t): Move here, rename from svn_sysinfo__linked_lib_t.

(svn_version_loaded_lib_t): Move here, rename from svn_sysinfo__loaded_lib_t.

(svn_version_extended): Move here, rename from svn_opt__get_version_info.

* subversion/libsvn_subr/version.c: Include sysinfo.h.

(svn_version_extended): Move here, renamed and updated from

svn_opt__get_version_info.

* subversion/libsvn_subr/sysinfo.h

(svn_sysinfo__linked_lib_t, svn_sysinfo__loaded_lib_t): Moved and

renamed to subversion/include/svn_version.h.

(svn_sysinfo__linked_libs, svn_sysinfo__loaded_libs): Update docstring.

* subversion/libsvn_subr/sysinfo.c: Include svn_version.h.

(svn_sysinfo__linked_libs, svn_sysinfo__loaded_libs):

Update, using new type names.

* subversion/libsvn_subr/opt.h:

Include svn_version.h. Do not include apr_tables.h.

(svn_opt__version_info_t, svn_opt__get_version_info):

Moved and renamed to subversion/include/svn_version.h

(svn_opt__print_version_info): Update type name in prototype.

* subversion/libsvn_subr/opt.c: Do not include sysinfo.h.

(svn_opt__get_version_info): Moved and renamed to

subversion/libsvn_subr/version.c.

(svn_opt__print_version_info, svn_opt_print_help):

Update, use public svn_version_extended API.

* subversion/libsvn_subr/deprecated.c: Include svn_version.h.

(svn_opt_print_help): Update, use public svn_version_extended API.

* subversion/tests/cmdline/getopt_tests.py

(switch_res_line, switched_del_lines_res, switched_rep_lines_res):

New filters for extended version information.

(process_lines): Use the new filters.

(getopt__version__verbose): New test for "svn --version --verbose".

* subversion/tests/cmdline/getopt_tests_data/svn--version--verbose_stdout,

subversion/tests/cmdline/getopt_tests_data/svn--version--verbose_stderr: New.

  1. … 9 more files in changeset.
Make the expensive bits of version retreival optional.

* subversion/libsvn_subr/opt.h (svn_opt__get_version_info):

Change prototype: add verbose flag.

* subversion/libsvn_subr/opt.h (svn_opt__get_version_info):

Gather runtime system info only when verbose is set.

(svn_opt_print_help4): Update.

* subversion/libsvn_subr/deprecated.c (svn_opt_print_help): Update.

  1. … 2 more files in changeset.