/* This implements the `svn_opt_subcommand_t' interface. */ svn_error_t * svn_cl__lock(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; const char *comment; SVN_ERR(svn_cl__args_to_target_array_print_reserved(&targets, os, opt_state->targets, pool)); /* We only support locking files, so '.' is not valid. */ if (! targets->nelts) return svn_error_create(SVN_ERR_CL_INSUFFICIENT_ARGS, 0, NULL); /* Get comment. */ SVN_ERR(get_comment(&comment, ctx, opt_state, pool)); svn_cl__get_notifier(&ctx->notify_func2, &ctx->notify_baton2, FALSE, FALSE, FALSE, pool); SVN_ERR(svn_client_lock(targets, comment, opt_state->force, ctx, pool)); return SVN_NO_ERROR; }
Py::Object pysvn_client::cmd_lock( const Py::Tuple &a_args, const Py::Dict &a_kws ) { static argument_description args_desc[] = { { true, name_url_or_path }, { true, name_comment }, { false, name_force }, { false, NULL } }; FunctionArguments args( "lock", args_desc, a_args, a_kws ); args.check(); SvnPool pool( m_context ); apr_array_header_t *targets = targetsFromStringOrList( args.getArg( name_url_or_path ), pool ); std::string type_error_message; try { type_error_message = "expecting string for comment (arg 2)"; std::string comment( args.getUtf8String( name_comment ) ); type_error_message = "expecting boolean for force keyword arg"; bool force = args.getBoolean( name_force, false ); try { checkThreadPermission(); PythonAllowThreads permission( m_context ); svn_error_t *error = svn_client_lock ( targets, comment.c_str(), force, // non recursive m_context, pool ); permission.allowThisThread(); if( error != NULL ) throw SvnException( error ); } catch( SvnException &e ) { // use callback error over ClientException m_context.checkForError( m_module.client_error ); throw_client_error( e ); } } catch( Py::TypeError & ) { throw Py::TypeError( type_error_message ); } return Py::None(); }
void Client::lock(const Targets & targets, bool force, const char * comment) throw(ClientException) { Pool pool; svn_error_t * error = svn_client_lock(const_cast<apr_array_header_t*>(targets.array(pool)), comment, force, *m_context, pool); if (error != NULL) throw ClientException(error); }