Make svn_wc_entry provide a pointer to const.  Treat the values in the
hash returned by svn_wc_entries_read as pointers to const where
possible.  This makes it harder to abuse/corrupt the entries cache.

* subversion/include/svn_wc.h
  (svn_wc_entry): Make svn_wc_entry_t** parameter const.
  (svn_wc_entry_dup, svn_wc_conflicted_p,
  svn_wc_transmit_prop_deltas): Make svn_wc_entry_t* parameter const.
  (struct svn_wc_entry_callbacks_t): Make svn_wc_entry_t* parameter of
  found_entry const.

* subversion/libsvn_wc/entries.c
  (svn_wc_entry): Make svn_wc_entry_t** parameter const.
  (walker_helper, svn_wc_walk_entries): Make svn_wc_entry_t* const.

* subversion/libsvn_wc/merge.c (svn_wc_merge): Make svn_wc_entry_t*
  const and use a local svn_wc_entry_t.

* subversion/libsvn_wc/props.c (svn_wc__get_existing_prop_reject_file,
  svn_wc_merge_prop_diffs): Make svn_wc_entry_t* const.

* subversion/libsvn_wc/diff.c
  (file_diff): Make svn_wc_entry_t* parameter const.
  (directory_elements_diff, delete_entry, close_file, svn_wc_diff):
  Make svn_wc_entry_t* const.

* subversion/libsvn_wc/copy.c
  (svn_wc__remove_wcprops, copy_file_administratively,
   copy_dir_administratively): Make svn_wc_entry_t* const.

* subversion/libsvn_wc/adm_crawler.c
  (report_revisions, svn_wc_crawl_revisions,
   svn_wc_transmit_text_deltas): Make svn_wc_entry_t* const.
  (svn_wc_transmit_prop_deltas): Make svn_wc_entry_t* parameter const.

* subversion/libsvn_wc/log.c
  (log_do_delete_entry, svn_wc_cleanup): Make svn_wc_entry_t* const.
  (log_do_committed): Make svn_wc_entry_t* const. Use a local
  duplicate entry.  Allocate local entry on stack rather than heap.
  (svn_wc__run_log): Make svn_wc_entry_t* const. Allocate local entry
  on stack rather than heap.

* subversion/libsvn_wc/adm_ops.c
  (svn_wc__do_update_cleanup, svn_wc_process_committed, erase_from_wc,
   svn_wc_get_ancestry, svn_wc_add, svn_wc_remove_from_revision_control,
   svn_wc_resolve_conflict, svn_wc_set_auth_file): Make svn_wc_entry_t*
  const.
  (mark_tree): Add comment about cache modification.
  (svn_wc_delete): Make svn_wc_entry_t* const.  Use local svn_wc_entry_t.
  (svn_wc_revert): Make svn_wc_entry_t* const.  Duplicate the entry.
  (resolve_conflict_on_entry): Make svn_wc_entry_t* parameter const.

* subversion/libsvn_wc/status.c
  (assemble_status, add_status_structure): Make svn_wc_entry_t*
  parameter const.
  (svn_wc_status, svn_wc_statuses): Make svn_wc_entry_t* const.

* subversion/libsvn_wc/adm_files.c (check_adm_exists): Make svn_wc_entry_t*
  const.

* subversion/libsvn_wc/update_editor.c
  (make_dir_baton, make_file_baton, add_directory, add_or_open_file,
   apply_textdelta, svn_wc_install_file, check_wc_root): Make
  svn_wc_entry_t* const.

* subversion/libsvn_wc/lock.c (svn_wc_adm_open): Make svn_wc_entry_t* const.

* subversion/libsvn_wc/questions.c
 (svn_wc__timestamps_equal_p): Make svn_wc_entry_t* const.
 (svn_wc_conflicted_p): Make svn_wc_entry_t* parameter const.

* subversion/libsvn_wc/translate.c
  (expand_keyword): Make svn_wc_entry_t* parameter const.
  (svn_wc__get_keywords): Make svn_wc_entry_t* const.

* subversion/libsvn_client/prop_commands.c
  (recursive_propset, svn_client_propset, recursive_propget,
   svn_client_propget, recursive_proplist, svn_client_proplist): Make
  svn_wc_entry_t* const.

* subversion/libsvn_client/switch.c (svn_client_switch): Make
  svn_wc_entry_t* const.

* subversion/libsvn_client/ra.c (get_committed_rev): Make svn_wc_entry_t*
  const.

* subversion/libsvn_client/diff.c (merge_file_added, merge_dir_added,
  convert_to_url, svn_client_merge): Make svn_wc_entry_t* const.

* subversion/libsvn_client/copy.c (repos_to_wc_copy, setup_copy): Make
  svn_wc_entry_t* const.  Merge rev 3225 from trunk.

* subversion/libsvn_client/log.c (svn_client_log): Make svn_wc_entry_t*
  const.

* subversion/libsvn_client/revisions.c
  (svn_client__get_revision_number):Make svn_wc_entry_t* const.

* subversion/libsvn_client/export.c (copy_versioned_files): Make
  svn_wc_entry_t* const.

* subversion/libsvn_client/update.c (svn_client_update): Make svn_wc_entry_t*
  const.

* subversion/libsvn_client/status.c (add_update_info_to_status_hash): Make
  svn_wc_entry_t* const.

* subversion/libsvn_client/commit_util.c
  (harvest_committables): Make svn_wc_entry_t* parameter const. Use
  local revnum variable rather than modify entry.
  (svn_client__harvest_committables, svn_client__get_copy_committables,
   do_item_commit): Make svn_wc_entry_t* const.

* subversion/clients/cmdline/switch-cmd.c (svn_cl__switch): Make
  svn_wc_entry_t* const.

* subversion/clients/cmdline/main.c (main): Make svn_wc_entry_t* const.

* subversion/clients/cmdline/info-cmd.c
  (print_entry, info_found_entry_callback): Make svn_wc_entry_t*
  parameter const.
  (svn_cl__info): Make svn_wc_entry_t* const.

* subversion/clients/cmdline/propedit-cmd.c (svn_cl__propedit): Make
  svn_wc_entry_t* const.


git-svn-id: https://svn.apache.org/repos/asf/subversion/branches/issue-749-caching@843306 13f79535-47bb-0310-9956-ffa450edef68
30 files changed