summaryrefslogtreecommitdiff
path: root/tools/client-side/svn-bench/null-list-cmd.c
diff options
context:
space:
mode:
Diffstat (limited to 'tools/client-side/svn-bench/null-list-cmd.c')
-rw-r--r--tools/client-side/svn-bench/null-list-cmd.c169
1 files changed, 0 insertions, 169 deletions
diff --git a/tools/client-side/svn-bench/null-list-cmd.c b/tools/client-side/svn-bench/null-list-cmd.c
deleted file mode 100644
index 8aa08cd..0000000
--- a/tools/client-side/svn-bench/null-list-cmd.c
+++ /dev/null
@@ -1,169 +0,0 @@
-/*
- * list-cmd.c -- list a URL
- *
- * ====================================================================
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements. See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership. The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing,
- * software distributed under the License is distributed on an
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- * KIND, either express or implied. See the License for the
- * specific language governing permissions and limitations
- * under the License.
- * ====================================================================
- */
-
-#include "svn_cmdline.h"
-#include "svn_client.h"
-#include "svn_error.h"
-#include "svn_pools.h"
-#include "svn_time.h"
-#include "svn_xml.h"
-#include "svn_dirent_uri.h"
-#include "svn_path.h"
-#include "svn_utf.h"
-#include "svn_opt.h"
-
-#include "cl.h"
-
-#include "svn_private_config.h"
-#include "private/svn_string_private.h"
-
-
-
-/* Baton used when printing directory entries. */
-struct print_baton {
- svn_boolean_t verbose;
- apr_int64_t directories;
- apr_int64_t files;
- apr_int64_t locks;
- svn_client_ctx_t *ctx;
-};
-
-/* This implements the svn_client_list_func2_t API, printing a single
- directory entry in text format. */
-static svn_error_t *
-print_dirent(void *baton,
- const char *path,
- const svn_dirent_t *dirent,
- const svn_lock_t *lock,
- const char *abs_path,
- const char *external_parent_url,
- const char *external_target,
- apr_pool_t *pool)
-{
- struct print_baton *pb = baton;
-
- if (pb->ctx->cancel_func)
- SVN_ERR(pb->ctx->cancel_func(pb->ctx->cancel_baton));
-
- if (dirent->kind == svn_node_dir)
- pb->directories++;
- if (dirent->kind == svn_node_file)
- pb->files++;
- if (lock)
- pb->locks++;
-
- return SVN_NO_ERROR;
-}
-
-
-/* This implements the `svn_opt_subcommand_t' interface. */
-svn_error_t *
-svn_cl__null_list(apr_getopt_t *os,
- void *baton,
- apr_pool_t *pool)
-{
- svn_cl__opt_state_t *opt_state = ((svn_cl__cmd_baton_t *) baton)->opt_state;
- svn_client_ctx_t *ctx = ((svn_cl__cmd_baton_t *) baton)->ctx;
- apr_array_header_t *targets;
- int i;
- apr_pool_t *subpool = svn_pool_create(pool);
- apr_uint32_t dirent_fields;
- struct print_baton pb = { FALSE };
- svn_boolean_t seen_nonexistent_target = FALSE;
- svn_error_t *err;
-
- SVN_ERR(svn_cl__args_to_target_array_print_reserved(&targets, os,
- opt_state->targets,
- ctx, FALSE, pool));
-
- /* Add "." if user passed 0 arguments */
- svn_opt_push_implicit_dot_target(targets, pool);
-
- if (opt_state->verbose)
- dirent_fields = SVN_DIRENT_ALL;
- else
- dirent_fields = SVN_DIRENT_KIND; /* the only thing we actually need... */
-
- pb.ctx = ctx;
- pb.verbose = opt_state->verbose;
-
- if (opt_state->depth == svn_depth_unknown)
- opt_state->depth = svn_depth_immediates;
-
- /* For each target, try to list it. */
- for (i = 0; i < targets->nelts; i++)
- {
- const char *target = APR_ARRAY_IDX(targets, i, const char *);
- const char *truepath;
- svn_opt_revision_t peg_revision;
-
- svn_pool_clear(subpool);
-
- SVN_ERR(svn_cl__check_cancel(ctx->cancel_baton));
-
- /* Get peg revisions. */
- SVN_ERR(svn_opt_parse_path(&peg_revision, &truepath, target,
- subpool));
-
- err = svn_client_list3(truepath, &peg_revision,
- &(opt_state->start_revision),
- opt_state->depth,
- dirent_fields,
- opt_state->verbose,
- FALSE, /* include externals */
- print_dirent,
- &pb, ctx, subpool);
-
- if (err)
- {
- /* If one of the targets is a non-existent URL or wc-entry,
- don't bail out. Just warn and move on to the next target. */
- if (err->apr_err == SVN_ERR_WC_PATH_NOT_FOUND ||
- err->apr_err == SVN_ERR_FS_NOT_FOUND)
- svn_handle_warning2(stderr, err, "svn-bench: ");
- else
- return svn_error_trace(err);
-
- svn_error_clear(err);
- err = NULL;
- seen_nonexistent_target = TRUE;
- }
- else if (!opt_state->quiet)
- SVN_ERR(svn_cmdline_printf(pool,
- _("%15s directories\n"
- "%15s files\n"
- "%15s locks\n"),
- svn__ui64toa_sep(pb.directories, ',', pool),
- svn__ui64toa_sep(pb.files, ',', pool),
- svn__ui64toa_sep(pb.locks, ',', pool)));
- }
-
- svn_pool_destroy(subpool);
-
- if (seen_nonexistent_target)
- return svn_error_create(
- SVN_ERR_ILLEGAL_TARGET, NULL,
- _("Could not list all targets because some targets don't exist"));
- else
- return SVN_NO_ERROR;
-}