FreeBSD/contrib/subversion/subversion/libsvn_client/status.c
/* Perform status operations on each external in EXTERNAL_MAP, a const char *
   local_abspath of all externals mapping to the const char* defining_abspath.
   All other options are the same as those passed to svn_client_status().

   If ANCHOR_ABSPATH and ANCHOR-RELPATH are not null, use them to provide
   properly formatted relative paths */
Perform status operations on each external in EXTERNAL_MAP, a const char
local_abspath of all externals mapping to the const char* defining_abspath.
All other options are the same as those passed to svn_client_status().

If ANCHOR_ABSPATH and ANCHOR-RELPATH are not null, use them to provide
properly formatted relative paths
Perform status operations on each external in EXTERNAL_MAP a const char local_abspath of all externals mapping to the const char * defining_abspath . All other options are the same as those passed to svn_client_status () . If ANCHOR_ABSPATH and ANCHOR - RELPATH are not null use them to provide properly formatted relative paths
static svn_error_t *
do_external_status(svn_client_ctx_t *ctx,
                   apr_hash_t *external_map,
                   svn_depth_t depth,
                   svn_boolean_t get_all,
                   svn_boolean_t check_out_of_date,
                   svn_boolean_t check_working_copy,
                   svn_boolean_t no_ignore,
                   const apr_array_header_t *changelists,
                   const char *anchor_abspath,
                   const char *anchor_relpath,
                   svn_client_status_func_t status_func,
                   void *status_baton,
                   apr_pool_t *scratch_pool)
{
  apr_pool_t *iterpool = svn_pool_create(scratch_pool);
  apr_array_header_t *externals;
  int i;
  externals = svn_sort__hash(external_map, svn_sort_compare_items_lexically,
                             scratch_pool);
  for (i = 0; i < externals->nelts; i++)
    {
      svn_node_kind_t external_kind;
      svn_sort__item_t item = APR_ARRAY_IDX(externals, i, svn_sort__item_t);
      const char *local_abspath = item.key;
      const char *defining_abspath = item.value;
      svn_node_kind_t kind;
      svn_opt_revision_t opt_rev;
      const char *status_path;
      svn_pool_clear(iterpool);
      SVN_ERR(svn_wc__read_external_info(&external_kind, NULL, NULL, NULL,
                                         &opt_rev.value.number,
                                         ctx->wc_ctx, defining_abspath,
                                         local_abspath, FALSE,
                                         iterpool, iterpool));
      if (external_kind != svn_node_dir)
        continue;
      SVN_ERR(svn_io_check_path(local_abspath, &kind, iterpool));
      if (kind != svn_node_dir)
        continue;
      if (SVN_IS_VALID_REVNUM(opt_rev.value.number))
        opt_rev.kind = svn_opt_revision_number;
      else
        opt_rev.kind = svn_opt_revision_unspecified;
      if (ctx->notify_func2)
        ctx->notify_func2(
               ctx->notify_baton2,
               svn_wc_create_notify(local_abspath,
                                    svn_wc_notify_status_external,
                                    iterpool), iterpool);
      status_path = local_abspath;
      if (anchor_abspath)
        {
          status_path = svn_dirent_join(anchor_relpath,
                           svn_dirent_skip_ancestor(anchor_abspath,
                                                    status_path),
                           iterpool);
        }
      SVN_ERR(svn_client_status6(NULL, ctx, status_path, &opt_rev, depth,
                                 get_all, check_out_of_date,
                                 check_working_copy, no_ignore,
                                 FALSE ,
                                 FALSE ,
                                 changelists, status_func, status_baton,
                                 iterpool));
    }
  svn_pool_destroy(iterpool);
  return SVN_NO_ERROR;
}
static svn_error_t * do_external_status ( svn_client_ctx_t * ctx , apr_hash_t * external_map , svn_depth_t depth , svn_boolean_t get_all , svn_boolean_t check_out_of_date , svn_boolean_t check_working_copy , svn_boolean_t no_ignore , const apr_array_header_t * changelists , const char * anchor_abspath , const char * anchor_relpath , svn_client_status_func_t status_func , void * status_baton , apr_pool_t * scratch_pool ) { apr_pool_t * iterpool = svn_pool_create ( scratch_pool ) ; apr_array_header_t * externals ; int i ; externals = svn_sort__hash ( external_map , svn_sort_compare_items_lexically , scratch_pool ) ; for ( i = 0 ; i < externals -> nelts ; i ++ ) { svn_node_kind_t external_kind ; svn_sort__item_t item = APR_ARRAY_IDX ( externals , i , svn_sort__item_t ) ; const char * local_abspath = item . key ; const char * defining_abspath = item . value ; svn_node_kind_t kind ; svn_opt_revision_t opt_rev ; const char * status_path ; svn_pool_clear ( iterpool ) ; SVN_ERR ( svn_wc__read_external_info ( & external_kind , NULL , NULL , NULL , & opt_rev . value . number , ctx -> wc_ctx , defining_abspath , local_abspath , FALSE , iterpool , iterpool ) ) ; if ( external_kind != svn_node_dir ) continue ; SVN_ERR ( svn_io_check_path ( local_abspath , & kind , iterpool ) ) ; if ( kind != svn_node_dir ) continue ; if ( SVN_IS_VALID_REVNUM ( opt_rev . value . number ) ) opt_rev . kind = svn_opt_revision_number ; else opt_rev . kind = svn_opt_revision_unspecified ; if ( ctx -> notify_func2 ) ctx -> notify_func2 ( ctx -> notify_baton2 , svn_wc_create_notify ( local_abspath , svn_wc_notify_status_external , iterpool ) , iterpool ) ; status_path = local_abspath ; if ( anchor_abspath ) { status_path = svn_dirent_join ( anchor_relpath , svn_dirent_skip_ancestor ( anchor_abspath , status_path ) , iterpool ) ; } SVN_ERR ( svn_client_status6 ( NULL , ctx , status_path , & opt_rev , depth , get_all , check_out_of_date , check_working_copy , no_ignore , FALSE , FALSE , changelists , status_func , status_baton , iterpool ) ) ; } svn_pool_destroy ( iterpool ) ; return SVN_NO_ERROR ; }
Perform status operations on each external in EXTERNAL_MAP, a const char
local_abspath of all externals mapping to the const char* defining_abspath.
Perform status operations on each external in EXTERNAL_MAP a const char local_abspath of all externals mapping to the const char * defining_abspath .
/* Loop over the hash of new values (we don't care about the old
     ones).  This is a mapping of versioned directories to property
     values. */ /* Obtain information on the expected external. */ /* Tell the client we're starting an external status set. */ /* And then do the status. */ /* ignore_exernals */ /* depth_as_sticky */ /* Destroy SUBPOOL and (implicitly) ITERPOOL. */