3 * ====================================================================
4 * Licensed to the Apache Software Foundation (ASF) under one
5 * or more contributor license agreements. See the NOTICE file
6 * distributed with this work for additional information
7 * regarding copyright ownership. The ASF licenses this file
8 * to you under the Apache License, Version 2.0 (the
9 * "License"); you may not use this file except in compliance
10 * with the License. You may obtain a copy of the License at
12 * http://www.apache.org/licenses/LICENSE-2.0
14 * Unless required by applicable law or agreed to in writing,
15 * software distributed under the License is distributed on an
16 * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
17 * KIND, either express or implied. See the License for the
18 * specific language governing permissions and limitations
20 * ====================================================================
23 * @file svn_cmdline_private.h
24 * @brief Private functions for Subversion cmdline.
27 #ifndef SVN_CMDLINE_PRIVATE_H
28 #define SVN_CMDLINE_PRIVATE_H
30 #include <apr_pools.h>
33 #include "svn_string.h"
34 #include "svn_error.h"
39 #endif /* __cplusplus */
41 /** Write a property as an XML element into @a *outstr.
43 * If @a outstr is NULL, allocate @a *outstr in @a pool; else append to
44 * @a *outstr, allocating in @a outstr's pool
46 * @a propname is the property name. @a propval is the property value, which
47 * will be encoded if it contains unsafe bytes.
49 * If @a inherited_prop is TRUE then @a propname is an inherited property,
50 * otherwise @a propname is an explicit property.
53 svn_cmdline__print_xml_prop(svn_stringbuf_t **outstr,
55 svn_string_t *propval,
56 svn_boolean_t inherited_prop,
60 /** An implementation of @c svn_auth_gnome_keyring_unlock_prompt_func_t that
61 * prompts the user for default GNOME Keyring password.
63 * Expects a @c svn_cmdline_prompt_baton2_t to be passed as @a baton.
68 svn_cmdline__auth_gnome_keyring_unlock_prompt(char **keyring_password,
69 const char *keyring_name,
73 /** Container for config options parsed with svn_cmdline__parse_config_option
77 typedef struct svn_cmdline__config_argument_t
83 } svn_cmdline__config_argument_t;
85 /** Parser for 'FILE:SECTION:OPTION=[VALUE]'-style option arguments.
87 * Parses @a opt_arg and places its value in @a config_options, an apr array
88 * containing svn_cmdline__config_argument_t* elements, allocating the option
91 * [Since 1.9/1.10:] If the file, section, or option value is not recognized,
92 * warn to @c stderr, using @a prefix as in svn_handle_warning2().
97 svn_cmdline__parse_config_option(apr_array_header_t *config_options,
102 /** Sets the config options in @a config_options, an apr array containing
103 * @c svn_cmdline__config_argument_t* elements, to the configuration in @a cfg,
104 * a hash mapping of <tt>const char *</tt> configuration file names to
105 * @c svn_config_t *'s. Write warnings to stderr.
107 * Use @a prefix as prefix and @a argument_name in warning messages.
112 svn_cmdline__apply_config_options(apr_hash_t *config,
113 const apr_array_header_t *config_options,
115 const char *argument_name);
117 /* Return a string allocated in POOL that is a copy of STR but with each
118 * line prefixed with INDENT. A line is all characters up to the first
119 * CR-LF, LF-CR, CR or LF, or the end of STR if sooner. */
121 svn_cmdline__indent_string(const char *str,
125 /* Print to stdout a hash PROP_HASH that maps property names (char *) to
126 property values (svn_string_t *). The names are assumed to be in UTF-8
127 format; the values are either in UTF-8 (the special Subversion props) or
130 If OUT is not NULL, then write to it rather than stdout.
132 If NAMES_ONLY is true, print just names, else print names and
135 svn_cmdline__print_prop_hash(svn_stream_t *out,
136 apr_hash_t *prop_hash,
137 svn_boolean_t names_only,
140 /* Similar to svn_cmdline__print_prop_hash(), only output xml to *OUTSTR.
141 If INHERITED_PROPS is true, then PROP_HASH contains inherited properties,
142 otherwise PROP_HASH contains explicit properties. If *OUTSTR is NULL,
143 allocate it first from POOL, otherwise append to it. */
145 svn_cmdline__print_xml_prop_hash(svn_stringbuf_t **outstr,
146 apr_hash_t *prop_hash,
147 svn_boolean_t names_only,
148 svn_boolean_t inherited_props,
152 /* Search for a text editor command in standard environment variables,
153 and invoke it to edit PATH. Use POOL for all allocations.
155 If EDITOR_CMD is not NULL, it is the name of the external editor
156 command to use, overriding anything else that might determine the
159 CONFIG is a hash of svn_config_t * items keyed on a configuration
160 category (SVN_CONFIG_CATEGORY_CONFIG et al), and may be NULL. */
162 svn_cmdline__edit_file_externally(const char *path,
163 const char *editor_cmd,
167 /* Search for a text editor command in standard environment variables,
168 and invoke it to edit CONTENTS (using a temporary file created in
169 directory BASE_DIR). Return the new contents in *EDITED_CONTENTS,
170 or set *EDITED_CONTENTS to NULL if no edit was performed.
172 If EDITOR_CMD is not NULL, it is the name of the external editor
173 command to use, overriding anything else that might determine the
176 If TMPFILE_LEFT is NULL, the temporary file will be destroyed.
177 Else, the file will be left on disk, and its path returned in
180 CONFIG is a hash of svn_config_t * items keyed on a configuration
181 category (SVN_CONFIG_CATEGORY_CONFIG et al), and may be NULL.
183 If AS_TEXT is TRUE, recode CONTENTS and convert to native eol-style before
184 editing and back again afterwards. In this case, ENCODING determines the
185 encoding used during editing. If non-NULL, use the named encoding, else
186 use the system encoding. If AS_TEXT is FALSE, don't do any translation.
187 In that case, ENCODING is ignored.
189 Use POOL for all allocations. Use PREFIX as the prefix for the
190 temporary file used by the editor.
192 If return error, *EDITED_CONTENTS is not touched. */
194 svn_cmdline__edit_string_externally(svn_string_t **edited_contents,
195 const char **tmpfile_left,
196 const char *editor_cmd,
197 const char *base_dir,
198 const svn_string_t *contents,
201 svn_boolean_t as_text,
202 const char *encoding,
206 /** Wrapper for apr_getopt_init(), which see.
211 svn_cmdline__getopt_init(apr_getopt_t **os,
216 /* Determine whether interactive mode should be enabled, based on whether
217 * the user passed the --non-interactive or --force-interactive options.
218 * If neither option was passed, interactivity is enabled if standard
219 * input is connected to a terminal device.
224 svn_cmdline__be_interactive(svn_boolean_t non_interactive,
225 svn_boolean_t force_interactive);
227 /* Parses the argument value of '--trust-server-cert-failures' OPT_ARG into
228 * the expected booleans for passing to svn_cmdline_create_auth_baton2()
233 svn_cmdline__parse_trust_options(
234 svn_boolean_t *trust_server_cert_unknown_ca,
235 svn_boolean_t *trust_server_cert_cn_mismatch,
236 svn_boolean_t *trust_server_cert_expired,
237 svn_boolean_t *trust_server_cert_not_yet_valid,
238 svn_boolean_t *trust_server_cert_other_failure,
240 apr_pool_t *scratch_pool);
244 #endif /* __cplusplus */
246 #endif /* SVN_CMDLINE_PRIVATE_H */