1289177Speter/* 2289177Speter * cl-log.h: Log entry receiver 3289177Speter * 4289177Speter * ==================================================================== 5289177Speter * Licensed to the Apache Software Foundation (ASF) under one 6289177Speter * or more contributor license agreements. See the NOTICE file 7289177Speter * distributed with this work for additional information 8289177Speter * regarding copyright ownership. The ASF licenses this file 9289177Speter * to you under the Apache License, Version 2.0 (the 10289177Speter * "License"); you may not use this file except in compliance 11289177Speter * with the License. You may obtain a copy of the License at 12289177Speter * 13289177Speter * http://www.apache.org/licenses/LICENSE-2.0 14289177Speter * 15289177Speter * Unless required by applicable law or agreed to in writing, 16289177Speter * software distributed under the License is distributed on an 17289177Speter * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY 18289177Speter * KIND, either express or implied. See the License for the 19289177Speter * specific language governing permissions and limitations 20289177Speter * under the License. 21289177Speter * ==================================================================== 22289177Speter */ 23289177Speter 24289177Speter 25289177Speter 26289177Speter#ifndef SVN_CL_LOG_H 27289177Speter#define SVN_CL_LOG_H 28289177Speter 29289177Speter/*** Includes. ***/ 30289177Speter#include <apr_pools.h> 31289177Speter 32289177Speter#include "svn_types.h" 33289177Speter 34289177Speter#ifdef __cplusplus 35289177Speterextern "C" { 36289177Speter#endif /* __cplusplus */ 37289177Speter 38289177Speter 39289177Speter 40289177Speter/* The separator between log messages. */ 41289177Speter#define SVN_CL__LOG_SEP_STRING \ 42289177Speter "------------------------------------------------------------------------\n" 43289177Speter 44289177Speter/* Baton for log_entry_receiver() and log_entry_receiver_xml(). */ 45289177Spetertypedef struct svn_cl__log_receiver_baton 46289177Speter{ 47289177Speter /* Client context. */ 48289177Speter svn_client_ctx_t *ctx; 49289177Speter 50289177Speter /* The target of the log operation. */ 51289177Speter const char *target_path_or_url; 52289177Speter svn_opt_revision_t target_peg_revision; 53289177Speter 54289177Speter /* Don't print log message body nor its line count. */ 55289177Speter svn_boolean_t omit_log_message; 56289177Speter 57289177Speter /* Whether to show diffs in the log. (maps to --diff) */ 58289177Speter svn_boolean_t show_diff; 59289177Speter 60289177Speter /* Depth applied to diff output. */ 61289177Speter svn_depth_t depth; 62289177Speter 63289177Speter /* Diff arguments received from command line. */ 64289177Speter const char *diff_extensions; 65289177Speter 66289177Speter /* Stack which keeps track of merge revision nesting, using svn_revnum_t's */ 67289177Speter apr_array_header_t *merge_stack; 68289177Speter 69289177Speter /* Log message search patterns. Log entries will only be shown if the author, 70289177Speter * the log message, or a changed path matches one of these patterns. */ 71289177Speter apr_array_header_t *search_patterns; 72289177Speter 73289177Speter /* Pool for persistent allocations. */ 74289177Speter apr_pool_t *pool; 75289177Speter} svn_cl__log_receiver_baton; 76289177Speter 77289177Speter/* Implement `svn_log_entry_receiver_t', printing the logs in 78289177Speter * a human-readable and machine-parseable format. 79289177Speter * 80289177Speter * BATON is of type `struct svn_cl__log_receiver_baton'. 81289177Speter * 82289177Speter * First, print a header line. Then if CHANGED_PATHS is non-null, 83289177Speter * print all affected paths in a list headed "Changed paths:\n", 84289177Speter * immediately following the header line. Then print a newline 85289177Speter * followed by the message body, unless BATON->omit_log_message is true. 86289177Speter */ 87289177Spetersvn_error_t * 88289177Spetersvn_cl__log_entry_receiver(void *baton, 89289177Speter svn_log_entry_t *log_entry, 90289177Speter apr_pool_t *pool); 91289177Speter 92289177Speter/* This implements `svn_log_entry_receiver_t', printing the logs in XML. 93289177Speter * 94289177Speter * BATON is of type `struct svn_cl__log_receiver_baton'. 95289177Speter */ 96289177Spetersvn_error_t * 97289177Spetersvn_cl__log_entry_receiver_xml(void *baton, 98289177Speter svn_log_entry_t *log_entry, 99289177Speter apr_pool_t *pool); 100289177Speter 101289177Speter#ifdef __cplusplus 102289177Speter} 103289177Speter#endif /* __cplusplus */ 104289177Speter 105289177Speter#endif /* SVN_CL_LOG_H */ 106