Subversion
 All Data Structures Files Functions Variables Typedefs Enumerations Enumerator Macros Modules Pages
svn_version.h
Go to the documentation of this file.
1 /**
2  * @copyright
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
11  *
12  * http://www.apache.org/licenses/LICENSE-2.0
13  *
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
19  * under the License.
20  * ====================================================================
21  * @endcopyright
22  *
23  * @file svn_version.h
24  * @brief Version information.
25  */
26 
27 #ifndef SVN_VERSION_H
28 #define SVN_VERSION_H
29 
30 /* Hack to prevent the resource compiler from including
31  apr_general.h. It doesn't resolve the include paths
32  correctly and blows up without this.
33  */
34 #ifndef APR_STRINGIFY
35 #include <apr_general.h>
36 #endif
37 #include <apr_tables.h>
38 
39 #include "svn_types.h"
40 
41 #ifdef __cplusplus
42 extern "C" {
43 #endif /* __cplusplus */
44 
45 
46 /* Symbols that define the version number. */
47 
48 /* Version numbers: <major>.<minor>.<micro>
49  *
50  * The version numbers in this file follow the rules established by:
51  *
52  * http://apr.apache.org/versioning.html
53  */
54 
55 /** Major version number.
56  *
57  * Modify when incompatible changes are made to published interfaces.
58  */
59 #define SVN_VER_MAJOR 1
60 
61 /** Minor version number.
62  *
63  * Modify when new functionality is added or new interfaces are
64  * defined, but all changes are backward compatible.
65  */
66 #define SVN_VER_MINOR 8
67 
68 /**
69  * Patch number.
70  *
71  * Modify for every released patch.
72  *
73  * @since New in 1.1.
74  */
75 #define SVN_VER_PATCH 10
76 
77 
78 /** @deprecated Provided for backward compatibility with the 1.0 API. */
79 #define SVN_VER_MICRO SVN_VER_PATCH
80 
81 /** @deprecated Provided for backward compatibility with the 1.0 API. */
82 #define SVN_VER_LIBRARY SVN_VER_MAJOR
83 
84 
85 /** Version tag: a string describing the version.
86  *
87  * This tag remains " (dev build)" in the repository so that we can
88  * always see from "svn --version" that the software has been built
89  * from the repository rather than a "blessed" distribution.
90  *
91  * When rolling a tarball, we automatically replace this text with " (r1234)"
92  * (where 1234 is the last revision on the branch prior to the release)
93  * for final releases; in prereleases, it becomes " (Alpha 1)",
94  * " (Beta 1)", etc., as appropriate.
95  *
96  * Always change this at the same time as SVN_VER_NUMTAG.
97  */
98 #define SVN_VER_TAG " (r1615264)"
99 
100 
101 /** Number tag: a string describing the version.
102  *
103  * This tag is used to generate a version number string to identify
104  * the client and server in HTTP requests, for example. It must not
105  * contain any spaces. This value remains "-dev" in the repository.
106  *
107  * When rolling a tarball, we automatically replace this text with ""
108  * for final releases; in prereleases, it becomes "-alpha1, "-beta1",
109  * etc., as appropriate.
110  *
111  * Always change this at the same time as SVN_VER_TAG.
112  */
113 #define SVN_VER_NUMTAG ""
114 
115 
116 /** Revision number: The repository revision number of this release.
117  *
118  * This constant is used to generate the build number part of the Windows
119  * file version. Its value remains 0 in the repository.
120  *
121  * When rolling a tarball, we automatically replace it with what we
122  * guess to be the correct revision number.
123  */
124 #define SVN_VER_REVISION 1615264
125 
126 
127 /* Version strings composed from the above definitions. */
128 
129 /** Version number */
130 #define SVN_VER_NUM APR_STRINGIFY(SVN_VER_MAJOR) \
131  "." APR_STRINGIFY(SVN_VER_MINOR) \
132  "." APR_STRINGIFY(SVN_VER_PATCH)
133 
134 /** Version number with tag (contains no whitespace) */
135 #define SVN_VER_NUMBER SVN_VER_NUM SVN_VER_NUMTAG
136 
137 /** Complete version string */
138 #define SVN_VERSION SVN_VER_NUMBER SVN_VER_TAG
139 
140 
141 
142 /* Version queries and compatibility checks */
143 
144 /**
145  * Version information. Each library contains a function called
146  * svn_<i>libname</i>_version() that returns a pointer to a statically
147  * allocated object of this type.
148  *
149  * @since New in 1.1.
150  */
152 {
153  int major; /**< Major version number */
154  int minor; /**< Minor version number */
155  int patch; /**< Patch number */
156 
157  /**
158  * The version tag (#SVN_VER_NUMTAG). Must always point to a
159  * statically allocated string.
160  */
161  const char *tag;
162 };
163 
164 /**
165  * Define a static svn_version_t object.
166  *
167  * @since New in 1.1.
168  */
169 #define SVN_VERSION_DEFINE(name) \
170  static const svn_version_t name = \
171  { \
172  SVN_VER_MAJOR, \
173  SVN_VER_MINOR, \
174  SVN_VER_PATCH, \
175  SVN_VER_NUMTAG \
176  } \
177 
178 /**
179  * Generate the implementation of a version query function.
180  *
181  * @since New in 1.1.
182  */
183 #define SVN_VERSION_BODY \
184  SVN_VERSION_DEFINE(versioninfo); \
185  return &versioninfo
186 
187 /**
188  * Check library version compatibility. Return #TRUE if the client's
189  * version, given in @a my_version, is compatible with the library
190  * version, provided in @a lib_version.
191  *
192  * This function checks for version compatibility as per our
193  * guarantees, but requires an exact match when linking to an
194  * unreleased library. A development client is always compatible with
195  * a previous released library.
196  *
197  * @since New in 1.1.
198  */
200 svn_ver_compatible(const svn_version_t *my_version,
201  const svn_version_t *lib_version);
202 
203 /**
204  * Check if @a my_version and @a lib_version encode the same version number.
205  *
206  * @since New in 1.2.
207  */
209 svn_ver_equal(const svn_version_t *my_version,
210  const svn_version_t *lib_version);
211 
212 
213 /**
214  * An entry in the compatibility checklist.
215  * @see svn_ver_check_list()
216  *
217  * @since New in 1.1.
218  */
220 {
221  const char *label; /**< Entry label */
222 
223  /** Version query function for this entry */
224  const svn_version_t *(*version_query)(void);
226 
227 
228 /**
229  * Perform a series of version compatibility checks. Checks if @a
230  * my_version is compatible with each entry in @a checklist. @a
231  * checklist must end with an entry whose label is @c NULL.
232  *
233  * @see svn_ver_compatible()
234  *
235  * @since New in 1.1.
236  */
237 svn_error_t *
238 svn_ver_check_list(const svn_version_t *my_version,
239  const svn_version_checklist_t *checklist);
240 
241 
242 /**
243  * Type of function returning library version.
244  *
245  * @since New in 1.6.
246  */
247 typedef const svn_version_t *(*svn_version_func_t)(void);
248 
249 
250 /* libsvn_subr doesn't have an svn_subr header, so put the prototype here. */
251 /**
252  * Get libsvn_subr version information.
253  *
254  * @since New in 1.1.
255  */
256 const svn_version_t *
257 svn_subr_version(void);
258 
259 
260 /**
261  * Extended version information, including info about the running system.
262  *
263  * @since New in 1.8.
264  */
266 
267 /**
268  * Return version information for the running program. If @a verbose
269  * is #TRUE, collect extra information that may be expensive to
270  * retrieve (for example, the OS release name, list of shared
271  * libraries, etc.). Use @a pool for all allocations.
272  *
273  * @since New in 1.8.
274  */
277  apr_pool_t *pool);
278 
279 
280 /**
281  * Accessor for svn_version_extended_t.
282  *
283  * @return The date when the libsvn_subr library was compiled, in the
284  * format defined by the C standard macro @c __DATE__.
285  *
286  * @since New in 1.8.
287  */
288 const char *
290 
291 /**
292  * Accessor for svn_version_extended_t.
293  *
294  * @return The time when the libsvn_subr library was compiled, in the
295  * format defined by the C standard macro @c __TIME__.
296  *
297  * @since New in 1.8.
298  */
299 const char *
301 
302 /**
303  * Accessor for svn_version_extended_t.
304  *
305  * @return The canonical host triplet (arch-vendor-osname) of the
306  * system where libsvn_subr was compiled.
307  *
308  * @note On Unix-like systems (includng Mac OS X), this string is the
309  * same as the output of the config.guess script.
310  *
311  * @since New in 1.8.
312  */
313 const char *
315 
316 /**
317  * Accessor for svn_version_extended_t.
318  *
319  * @return The localized copyright notice.
320  *
321  * @since New in 1.8.
322  */
323 const char *
325 
326 /**
327  * Accessor for svn_version_extended_t.
328  *
329  * @return The canonical host triplet (arch-vendor-osname) of the
330  * system where the current process is running.
331  *
332  * @note This string may not be the same as the output of config.guess
333  * on the same system.
334  *
335  * @since New in 1.8.
336  */
337 const char *
339 
340 /**
341  * Accessor for svn_version_extended_t.
342  *
343  * @return The "commercial" release name of the running operating
344  * system, if available. Not to be confused with, e.g., the output of
345  * "uname -v" or "uname -r". The returned value may be @c NULL.
346  *
347  * @since New in 1.8.
348  */
349 const char *
351 
352 /**
353  * Dependent library information.
354  * Describes the name and versions of known dependencies
355  * used by libsvn_subr.
356  *
357  * @since New in 1.8.
358  */
360 {
361  const char *name; /**< Library name */
362  const char *compiled_version; /**< Compile-time version string */
363  const char *runtime_version; /**< Run-time version string (optional) */
365 
366 /**
367  * Accessor for svn_version_extended_t.
368  *
369  * @return Array of svn_version_ext_linked_lib_t describing dependent
370  * libraries. The returned value may be @c NULL.
371  *
372  * @since New in 1.8.
373  */
374 const apr_array_header_t *
376 
377 
378 /**
379  * Loaded shared library information.
380  * Describes the name and, where available, version of the shared libraries
381  * loaded by the running program.
382  *
383  * @since New in 1.8.
384  */
386 {
387  const char *name; /**< Library name */
388  const char *version; /**< Library version (optional) */
390 
391 
392 /**
393  * Accessor for svn_version_extended_t.
394  *
395  * @return Array of svn_version_ext_loaded_lib_t describing loaded
396  * shared libraries. The returned value may be @c NULL.
397  *
398  * @note On Mac OS X, the loaded frameworks, private frameworks and
399  * system libraries will not be listed.
400  *
401  * @since New in 1.8.
402  */
403 const apr_array_header_t *
405 
406 
407 #ifdef __cplusplus
408 }
409 #endif /* __cplusplus */
410 
411 #endif /* SVN_VERSION_H */
int minor
Minor version number.
Definition: svn_version.h:154
const char * name
Library name.
Definition: svn_version.h:361
struct svn_version_checklist_t svn_version_checklist_t
An entry in the compatibility checklist.
An entry in the compatibility checklist.
Definition: svn_version.h:219
const apr_array_header_t * svn_version_ext_linked_libs(const svn_version_extended_t *ext_info)
Accessor for svn_version_extended_t.
svn_boolean_t svn_ver_equal(const svn_version_t *my_version, const svn_version_t *lib_version)
Check if my_version and lib_version encode the same version number.
struct svn_version_ext_loaded_lib_t svn_version_ext_loaded_lib_t
Loaded shared library information.
const char * tag
The version tag (SVN_VER_NUMTAG).
Definition: svn_version.h:161
const char * svn_version_ext_runtime_host(const svn_version_extended_t *ext_info)
Accessor for svn_version_extended_t.
svn_boolean_t svn_ver_compatible(const svn_version_t *my_version, const svn_version_t *lib_version)
Check library version compatibility.
const svn_version_extended_t * svn_version_extended(svn_boolean_t verbose, apr_pool_t *pool)
Return version information for the running program.
const svn_version_t * svn_subr_version(void)
Get libsvn_subr version information.
Subversion error object.
Definition: svn_types.h:113
svn_error_t * svn_ver_check_list(const svn_version_t *my_version, const svn_version_checklist_t *checklist)
Perform a series of version compatibility checks.
const char * svn_version_ext_build_date(const svn_version_extended_t *ext_info)
Accessor for svn_version_extended_t.
const char * version
Library version (optional)
Definition: svn_version.h:388
Loaded shared library information.
Definition: svn_version.h:385
Version information.
Definition: svn_version.h:151
const char * svn_version_ext_build_host(const svn_version_extended_t *ext_info)
Accessor for svn_version_extended_t.
const char * svn_version_ext_runtime_osname(const svn_version_extended_t *ext_info)
Accessor for svn_version_extended_t.
Subversion's data types.
const char * compiled_version
Compile-time version string.
Definition: svn_version.h:362
const char * runtime_version
Run-time version string (optional)
Definition: svn_version.h:363
struct svn_version_ext_linked_lib_t svn_version_ext_linked_lib_t
Dependent library information.
const apr_array_header_t * svn_version_ext_loaded_libs(const svn_version_extended_t *ext_info)
Accessor for svn_version_extended_t.
int major
Major version number.
Definition: svn_version.h:153
const char * label
Entry label.
Definition: svn_version.h:221
struct svn_version_extended_t svn_version_extended_t
Extended version information, including info about the running system.
Definition: svn_version.h:265
int svn_boolean_t
YABT: Yet Another Boolean Type.
Definition: svn_types.h:94
const char * svn_version_ext_build_time(const svn_version_extended_t *ext_info)
Accessor for svn_version_extended_t.
int patch
Patch number.
Definition: svn_version.h:155
Dependent library information.
Definition: svn_version.h:359
const char * name
Library name.
Definition: svn_version.h:387
const char * svn_version_ext_copyright(const svn_version_extended_t *ext_info)
Accessor for svn_version_extended_t.