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