John Peacock <>

Patch Review Suggested
r16193, r16171, r9339 r16784 r6441

r16784 | dlr | 2005-10-18 12:16:47 -0500 (Tue, 18 Oct 2005)

* subversion/libsvn_wc/status.c
  (change_dir_prop): Assure that we actually have a value for
   properties sent from the repository before trying to use them
   (necessitated by r16344).  Only a deleted "svn:author" property has
   actually been known to trigger a problem here, but we guard against
   any NULL property to take a defensive stance against unexpected
   repository data.

Found by: Stefan K√ľng <>
Review by: philip
           John Peacock <>

r16193 | julianfoad | 2005-09-21 15:13:01 -0500 (Wed, 21 Sep 2005)

Use the new hash-based keywords functionality introduced in r16171:
the struct-based method was deprecated at that time.  No functional change.

This is mainly replacement of svn_subst_keywords_t with apr_hash_t and
replacement of deprecated svn_subst_*() function calls with their successors.

Patch by: John Peacock <>
(tweaked by me)

* subversion/clients/cmdline/util.c
    Use the new svn_subst_translate_cstring2().

* subversion/libsvn_client/cat.c (cat_local_file, svn_client_cat2):
    Use apr_hash_t and the new svn_subst_translate_stream3().
    Avoid calling svn_subst_translate_stream3() if no translation is to be
    performed: it was previously violating that function's API by doing so.

* subversion/libsvn_client/commit.c (send_file_contents):
  subversion/libsvn_client/export.c (copy_one_versioned_file, close_file):
    Use apr_hash_t and the new svn_subst_build_keywords2() and

* subversion/libsvn_wc/adm_crawler.c (restore_file):
  subversion/libsvn_wc/adm_ops.c (revert_admin_things):
  subversion/libsvn_wc/log.c (file_xfer_under_path, install_committed_file):
  subversion/libsvn_wc/merge.c (svn_wc_merge):
    Use apr_hash_t and the new svn_subst_copy_and_translate3().

* subversion/libsvn_wc/props.c
  (validate_eol_prop_against_file, svn_wc_prop_set2):
    Use apr_hash_t and the new svn_subst_translate_stream3() and

* subversion/libsvn_wc/translate.c
    Use apr_hash_t and the new svn_subst_copy_and_translate3().
    Use apr_hash_t and the new svn_subst_build_keywords2().

* subversion/libsvn_wc/translate.h
    Use apr_hash_t.

* subversion/tests/libsvn_wc/translate-test.c
    Use apr_hash_t.  Initialize test keywords hash with all possible keys for
    available test input values.

r16171 | julianfoad | 2005-09-20 14:42:28 -0500 (Tue, 20 Sep 2005)

Revise keywords API - represent keywords as a hash for better extensibility.
Implement internal printf-like format characters for keyword expansion.
A part of issue #890. Note that this only introduces the new APIs - making
the rest of the code make use of them will be a separate commit.

Patch by: "plasma" <>
          John Peacock <>

Review by: lundblad

* subversion/includes/svn_subst.h
  (svn_subst_keywords_t, svn_subst_build_keywords,
   svn_subst_keywords_differ, svn_subst_translate_stream2,
   svn_subst_copy_and_translate2, svn_subst_translate_cstring):
   svn_subst_keywords_differ2, svn_subst_translate_stream3,
   svn_subst_copy_and_translate3, svn_subst_translate_cstring2):
    New functions to replace those deprecated, with keywords in a hash instead
    of a struct.  Also add a 'pool' argument for svn_subst_keywords_differ2().

* subversion/libsvn_subr/subst.c
  (keyword_printf): New private function: printf-style formatting of keywords.
  (date_prop_to_human): Remove: swallowed by keyword_printf.
  (kwstruct_to_kwhash): New private function: convert keywords struct to hash.
  (svn_subst_build_keywords): Convert to API compatibility wrapper.
  (svn_subst_build_keywords2): New function, using keyword_printf().
  (translate_keyword): Interface changes. Also, look up the keyword in the
    passed in buffer, instead of trying to translate all possibilities.
  (svn_subst_keywords_differ): Retain unchanged for API compatibility.
  (svn_subst_keywords_differ2): New version of svn_subst_keywords_differ.
  (svn_subst_translate_stream2): Convert to API compatibility wrapper.
  (svn_subst_translate_stream3): New version of svn_subst_translate_stream2.
  (svn_subst_translate_cstring): Convert to API compatibility wrapper.
  (svn_subst_translate_cstring2): New version of svn_subst_translate_cstring.
  (svn_subst_copy_and_translate2): Convert to API combatibility wrapper.
  (svn_subst_copy_and_translate3): New version of svn_subst_copy_and_translate2.
  (svn_subst_translate_string): Update function call to new API version.
  (svn_subst_detranslate_string): Update function call to new API version.

r9339 | breser | 2004-04-12 16:27:18 -0500 (Mon, 12 Apr 2004)

Stylistic changes to Perl SVN::Client

Patch by: John Peacock <>

* subversion/bindings/swig/perl/Native/
  changes to line length and punctuation
  rewrite several sections to be consistent with each other
  rewrite several sections to aid clarity and add examples

r6441 | jerenkrantz | 2003-07-10 16:20:26 -0500 (Thu, 10 Jul 2003)

Add build infrastructure to support Perl SWIG bindings.

The bindings will build, but it is unknown if they actually work or install.
Use 'make swig-pl' to build.

* Add the relevant SWIG_PY_* variables and directory information.
* build.conf: Add perl-specific options so perl SWIG targets will be emitted.
* Search for perl - if it exists set PERL.
* build/ac-macros/swig.m4 (SVN_FIND_SWIG): Use the Config and ExtUtils::Embed
  packages to discover the appropriate information on how to build modules for
  Perl from C.
  (This may be further abstracted into if time allows.)
* subversion/bindings/swig/swigutil_pl.c (Added): Add a placeholder file for
  the Perl stub libraries.  build.conf requires this to be present and will
  most likely be needed eventually, so add it now.

Suggested by: John Peacock <>