125164Speter/* 225164Speter * delete-cmd.c -- Delete/undelete commands 325164Speter * 425164Speter * ==================================================================== 525164Speter * Licensed to the Apache Software Foundation (ASF) under one 625164Speter * or more contributor license agreements. See the NOTICE file 725164Speter * distributed with this work for additional information 825164Speter * regarding copyright ownership. The ASF licenses this file 925164Speter * to you under the Apache License, Version 2.0 (the 1025164Speter * "License"); you may not use this file except in compliance 1125164Speter * with the License. You may obtain a copy of the License at 1225164Speter * 1325164Speter * http://www.apache.org/licenses/LICENSE-2.0 1425164Speter * 1525164Speter * Unless required by applicable law or agreed to in writing, 1625164Speter * software distributed under the License is distributed on an 1725164Speter * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY 1825164Speter * KIND, either express or implied. See the License for the 1925164Speter * specific language governing permissions and limitations 2025164Speter * under the License. 2125164Speter * ==================================================================== 2225164Speter */ 2325164Speter 2425164Speter/* ==================================================================== */ 2526101Sfsmp 2625164Speter 2725164Speter 2825164Speter/*** Includes. ***/ 2925215Sfsmp 3025292Sfsmp#include "svn_client.h" 3125164Speter#include "svn_error.h" 3225164Speter#include "svn_path.h" 3325164Speter#include "cl.h" 3425164Speter 3525164Speter#include "svn_private_config.h" 3625164Speter 3725164Speter 3825164Speter/*** Code. ***/ 3925164Speter 4025164Speter/* This implements the `svn_opt_subcommand_t' interface. */ 4125164Spetersvn_error_t * 4225164Spetersvn_cl__delete(apr_getopt_t *os, 4325164Speter void *baton, 4425164Speter apr_pool_t *pool) 4525164Speter{ 4625164Speter svn_cl__opt_state_t *opt_state = ((svn_cl__cmd_baton_t *) baton)->opt_state; 4725164Speter svn_client_ctx_t *ctx = ((svn_cl__cmd_baton_t *) baton)->ctx; 4825164Speter apr_array_header_t *targets; 4925164Speter svn_error_t *err; 5025216Sfsmp svn_boolean_t is_url; 5125164Speter 5225164Speter SVN_ERR(svn_cl__args_to_target_array_print_reserved(&targets, os, 5325164Speter opt_state->targets, 5425215Sfsmp ctx, FALSE, pool)); 5525215Sfsmp 5625215Sfsmp if (! targets->nelts) 5725215Sfsmp return svn_error_create(SVN_ERR_CL_INSUFFICIENT_ARGS, 0, NULL); 5825215Sfsmp 5925164Speter SVN_ERR(svn_cl__assert_homogeneous_target_type(targets)); 6025164Speter is_url = svn_path_is_url(APR_ARRAY_IDX(targets, 0, const char *)); 6125164Speter 6225164Speter if (! is_url) 6325164Speter { 6425164Speter ctx->log_msg_func3 = NULL; 6525164Speter if (opt_state->message || opt_state->filedata || opt_state->revprop_table) 6625164Speter { 6725164Speter return svn_error_create 6825164Speter (SVN_ERR_CL_UNNECESSARY_LOG_MESSAGE, NULL, 6925164Speter _("Local, non-commit operations do not take a log message " 7025164Speter "or revision properties")); 7125164Speter } 7225164Speter } 7325164Speter else 7425164Speter { 7525164Speter SVN_ERR(svn_cl__make_log_msg_baton(&(ctx->log_msg_baton3), opt_state, 7625164Speter NULL, ctx->config, pool)); 7725164Speter } 7825164Speter 7925164Speter SVN_ERR(svn_cl__eat_peg_revisions(&targets, targets, pool)); 8025164Speter 8125164Speter err = svn_client_delete4(targets, opt_state->force, opt_state->keep_local, 8225164Speter opt_state->revprop_table, 8325164Speter (opt_state->quiet 8425164Speter ? NULL : svn_cl__print_commit_info), 8525164Speter NULL, ctx, pool); 8625164Speter if (err) 8725164Speter err = svn_cl__may_need_force(err); 8825164Speter 8925164Speter if (ctx->log_msg_func3) 9025164Speter SVN_ERR(svn_cl__cleanup_log_msg(ctx->log_msg_baton3, err, pool)); 9125164Speter else if (err) 9225164Speter return svn_error_trace(err); 9325164Speter 9425164Speter return SVN_NO_ERROR; 9525164Speter} 9625164Speter