Author: brane
Date: Mon Sep 10 23:21:28 2012
New Revision: 1383149
URL: http://svn.apache.org/viewvc?rev=1383149&view=rev
Log:
Make the extended version info an opaque type.
* subversion/include/svn_version.h (svn_version_extended_t): Remove definition,
leaving only a forward-declared typedef.
(svn_version_ext_linked_lib_t): Renamed from svn_version_linked_lib_t.
(svn_version_ext_loaded_lib_t): Renamed from svn_version_loaded_lib_t.
(svn_version_extended): Update docstring.
(svn_version_ext_build_date, svn_version_ext_build_time,
svn_version_ext_build_host, svn_version_ext_copyright,
svn_version_ext_runtime_host, svn_version_ext_runtime_osname,
svn_version_ext_linked_libs, svn_version_ext_loaded_libs): New; accessor
functions for svn_version_extended_t.
* subversion/libsvn_subr/version.c (svn_version_extended_t): Define here.
Remove the version_number and version_string fields, they're redundant.
(svn_version_extended) remove initialization for version_number
and version_string.
(svn_version_ext_build_date, svn_version_ext_build_time,
svn_version_ext_build_host, svn_version_ext_copyright,
svn_version_ext_runtime_host, svn_version_ext_runtime_osname,
svn_version_ext_linked_libs, svn_version_ext_loaded_libs): Implement.
* subversion/libsvn_subr/opt.c (svn_opt__print_version_info): Use the new
svn_version_ext_* accessors to retreive extended version information.
Use SVN_VER_NUMBER and SVN_VERSION since these fields are no longer
part of the extended version info.
* subversion/libsvn_subr/sysinfo.c: Propagate renames of
svn_version_ext_linked_lib_t and svn_version_ext_loaded_lib_t.
Modified:
subversion/trunk/subversion/include/svn_version.h
subversion/trunk/subversion/libsvn_subr/opt.c
subversion/trunk/subversion/libsvn_subr/sysinfo.c
subversion/trunk/subversion/libsvn_subr/version.c
Modified: subversion/trunk/subversion/include/svn_version.h
URL:
http://svn.apache.org/viewvc/subversion/trunk/subversion/include/svn_version.h?rev=1383149&r1=1383148&r2=1383149&view=diff
==============================================================================
--- subversion/trunk/subversion/include/svn_version.h (original)
+++ subversion/trunk/subversion/include/svn_version.h Mon Sep 10 23:21:28 2012
@@ -262,30 +262,92 @@ svn_subr_version(void);
*
* @since New in 1.8.
*/
-typedef struct svn_version_extended_t
-{
- const char *version_number; /**< Version number */
- const char *version_string; /**< Version string */
- const char *build_date; /**< Compilation date */
- const char *build_time; /**< Compilation time */
- const char *build_host; /**< Build canonical host name */
- const char *copyright; /**< Copyright notice (localized) */
- const char *runtime_host; /**< Runtime canonical host name */
- const char *runtime_osname; /**< Running OS release name */
-
- /**
- * Array of svn_version_linked_lib_t describing dependent libraries.
- */
- const apr_array_header_t *linked_libs;
-
- /**
- * Array of svn_version_loaded_lib_t describing loaded shared libraries.
- *
- * On Mac OS X, the loaded frameworks, private frameworks and
- * system libraries will not be listed here.
- */
- const apr_array_header_t *loaded_libs;
-} svn_version_extended_t;
+typedef struct svn_version_extended_t svn_version_extended_t;
+
+/**
+ * Return version information for the running program. If @a verbose
+ * is true, collect extra information that may be expensive to
+ * retrieve (for example, the OS release name, list of shared
+ * libraries, etc.). Use @a pool for all allocations.
+ *
+ * @since New in 1.8.
+ */
+const svn_version_extended_t *
+svn_version_extended(svn_boolean_t verbose,
+ apr_pool_t *pool);
+
+
+/**
+ * Accessor for svn_version_extended_t.
+ *
+ * @return The date when the libsvn_subr library was compiled, in the
+ * format defined by the C standard macro @c __DATE__.
+ *
+ * @since New in 1.8.
+ */
+const char *
+svn_version_ext_build_date(const svn_version_extended_t *ext_info);
+
+/**
+ * Accessor for svn_version_extended_t.
+ *
+ * @return The time when the libsvn_subr library was compiled, in the
+ * format defined by the C standard macro @c __TIME__.
+ *
+ * @since New in 1.8.
+ */
+const char *
+svn_version_ext_build_time(const svn_version_extended_t *ext_info);
+
+/**
+ * Accessor for svn_version_extended_t.
+ *
+ * @return The canonical host triplet (arch-vendor-osname) of the
+ * system where libsvn_subr was compiled.
+ *
+ * @note On Unix-like systems (includng Mac OS X), this string is the
+ * same as the output of the config.guess script.
+ *
+ * @since New in 1.8.
+ */
+const char *
+svn_version_ext_build_host(const svn_version_extended_t *ext_info);
+
+/**
+ * Accessor for svn_version_extended_t.
+ *
+ * @return The localized copyright notice.
+ *
+ * @since New in 1.8.
+ */
+const char *
+svn_version_ext_copyright(const svn_version_extended_t *ext_info);
+
+/**
+ * Accessor for svn_version_extended_t.
+ *
+ * @return The canonical host triplet (arch-vendor-osname) of the
+ * system where the current process is running.
+ *
+ * @note This string may not be the same as the output of config.guess
+ * on the same system.
+ *
+ * @since New in 1.8.
+ */
+const char *
+svn_version_ext_runtime_host(const svn_version_extended_t *ext_info);
+
+/**
+ * Accessor for svn_version_extended_t.
+ *
+ * @return The "commercial" release name of the running operating
+ * system, if available. Not to be confused with, e.g., the output of
+ * "uname -v" or "uname -r". The returned value may be @c NULL.
+ *
+ * @since New in 1.8.
+ */
+const char *
+svn_version_ext_runtime_osname(const svn_version_extended_t *ext_info);
/**
* Dependent library information.
@@ -294,12 +356,24 @@ typedef struct svn_version_extended_t
*
* @since New in 1.8.
*/
-typedef struct svn_version_linked_lib_t
+typedef struct svn_version_ext_linked_lib_t
{
const char *name; /**< Library name */
const char *compiled_version; /**< Compile-time version string */
const char *runtime_version; /**< Run-time version string (optional) */
-} svn_version_linked_lib_t;
+} svn_version_ext_linked_lib_t;
+
+/**
+ * Accessor for svn_version_extended_t.
+ *
+ * @eturns Array of svn_version_ext_linked_lib_t describing dependent
+ * libraries. The returned value may be @c NULL.
+ *
+ * @since New in 1.8.
+ */
+const apr_array_header_t *
+svn_version_ext_linked_libs(const svn_version_extended_t *ext_info);
+
/**
* Loaded shared library information.
@@ -308,22 +382,26 @@ typedef struct svn_version_linked_lib_t
*
* @since New in 1.8.
*/
-typedef struct svn_version_loaded_lib_t
+typedef struct svn_version_ext_loaded_lib_t
{
const char *name; /**< Library name */
const char *version; /**< Library version (optional) */
-} svn_version_loaded_lib_t;
+} svn_version_ext_loaded_lib_t;
+
/**
- * Return version information for the running program, If @a verbose
- * is true, collect extra information about the runtime system (this
- * can be an expensive operation). Use @a pool for all allocations.
+ * Accessor for svn_version_extended_t.
+ *
+ * @return Array of svn_version_ext_loaded_lib_t describing loaded
+ * shared libraries. The returned value may be @c NULL.
+ *
+ * @note On Mac OS X, the loaded frameworks, private frameworks and
+ * system libraries will not be listed.
*
* @since New in 1.8.
*/
-const svn_version_extended_t *
-svn_version_extended(svn_boolean_t verbose,
- apr_pool_t *pool);
+const apr_array_header_t *
+svn_version_ext_loaded_libs(const svn_version_extended_t *ext_info);
#ifdef __cplusplus
Modified: subversion/trunk/subversion/libsvn_subr/opt.c
URL:
http://svn.apache.org/viewvc/subversion/trunk/subversion/libsvn_subr/opt.c?rev=1383149&r1=1383148&r2=1383149&view=diff
==============================================================================
--- subversion/trunk/subversion/libsvn_subr/opt.c (original)
+++ subversion/trunk/subversion/libsvn_subr/opt.c Mon Sep 10 23:21:28 2012
@@ -1111,14 +1111,15 @@ svn_opt__print_version_info(const char *
apr_pool_t *pool)
{
if (quiet)
- return svn_cmdline_printf(pool, "%s\n", info->version_number);
+ return svn_cmdline_printf(pool, "%s\n", SVN_VER_NUMBER);
SVN_ERR(svn_cmdline_printf(pool, _("%s, version %s\n"
" compiled %s, %s on %s\n\n"),
- pgm_name, info->version_string,
- info->build_date, info->build_time,
- info->build_host));
- SVN_ERR(svn_cmdline_printf(pool, "%s\n", info->copyright));
+ pgm_name, SVN_VERSION,
+ svn_version_ext_build_date(info),
+ svn_version_ext_build_time(info),
+ svn_version_ext_build_host(info)));
+ SVN_ERR(svn_cmdline_printf(pool, "%s\n", svn_version_ext_copyright(info)));
if (footer)
{
@@ -1127,26 +1128,28 @@ svn_opt__print_version_info(const char *
if (verbose)
{
+ const apr_array_header_t *libs;
+
SVN_ERR(svn_cmdline_fputs(_("System information:\n\n"), stdout, pool));
SVN_ERR(svn_cmdline_printf(pool, _("* running on %s\n"),
- info->runtime_host));
- if (info->runtime_osname)
+ svn_version_ext_runtime_host(info)));
+ if (svn_version_ext_runtime_osname(info))
{
SVN_ERR(svn_cmdline_printf(pool, _(" - %s\n"),
- info->runtime_osname));
+ svn_version_ext_runtime_osname(info)));
}
- if (info->linked_libs && info->linked_libs->nelts)
+ libs = svn_version_ext_linked_libs(info);
+ if (libs && libs->nelts)
{
- const svn_version_linked_lib_t *lib;
+ const svn_version_ext_linked_lib_t *lib;
int i;
SVN_ERR(svn_cmdline_fputs(_("* linked dependencies:\n"),
stdout, pool));
- for (i = 0; i < info->linked_libs->nelts; ++i)
+ for (i = 0; i < libs->nelts; ++i)
{
- lib = &APR_ARRAY_IDX(info->linked_libs, i,
- svn_version_linked_lib_t);
+ lib = &APR_ARRAY_IDX(libs, i, svn_version_ext_linked_lib_t);
if (lib->runtime_version)
SVN_ERR(svn_cmdline_printf(pool,
" - %s %s (compiled with %s)\n",
@@ -1161,17 +1164,17 @@ svn_opt__print_version_info(const char *
}
}
- if (info->loaded_libs && info->loaded_libs->nelts)
+ libs = svn_version_ext_loaded_libs(info);
+ if (libs && libs->nelts)
{
- const svn_version_loaded_lib_t *lib;
+ const svn_version_ext_loaded_lib_t *lib;
int i;
SVN_ERR(svn_cmdline_fputs(_("* loaded shared libraries:\n"),
stdout, pool));
- for (i = 0; i < info->loaded_libs->nelts; ++i)
+ for (i = 0; i < libs->nelts; ++i)
{
- lib = &APR_ARRAY_IDX(info->loaded_libs, i,
- svn_version_loaded_lib_t);
+ lib = &APR_ARRAY_IDX(libs, i, svn_version_ext_loaded_lib_t);
if (lib->version)
SVN_ERR(svn_cmdline_printf(pool,
" - %s (%s)\n",
Modified: subversion/trunk/subversion/libsvn_subr/sysinfo.c
URL:
http://svn.apache.org/viewvc/subversion/trunk/subversion/libsvn_subr/sysinfo.c?rev=1383149&r1=1383148&r2=1383149&view=diff
==============================================================================
--- subversion/trunk/subversion/libsvn_subr/sysinfo.c (original)
+++ subversion/trunk/subversion/libsvn_subr/sysinfo.c Mon Sep 10 23:21:28 2012
@@ -125,20 +125,20 @@ svn_sysinfo__release_name(apr_pool_t *po
const apr_array_header_t *
svn_sysinfo__linked_libs(apr_pool_t *pool)
{
- svn_version_linked_lib_t *lib;
+ svn_version_ext_linked_lib_t *lib;
apr_array_header_t *array = apr_array_make(pool, 3, sizeof(*lib));
- lib = &APR_ARRAY_PUSH(array, svn_version_linked_lib_t);
+ lib = &APR_ARRAY_PUSH(array, svn_version_ext_linked_lib_t);
lib->name = "APR";
lib->compiled_version = APR_VERSION_STRING;
lib->runtime_version = apr_pstrdup(pool, apr_version_string());
- lib = &APR_ARRAY_PUSH(array, svn_version_linked_lib_t);
+ lib = &APR_ARRAY_PUSH(array, svn_version_ext_linked_lib_t);
lib->name = "APR-Util";
lib->compiled_version = APU_VERSION_STRING;
lib->runtime_version = apr_pstrdup(pool, apu_version_string());
- lib = &APR_ARRAY_PUSH(array, svn_version_linked_lib_t);
+ lib = &APR_ARRAY_PUSH(array, svn_version_ext_linked_lib_t);
lib->name = "SQLite";
lib->compiled_version = apr_pstrdup(pool, svn_sqlite__compiled_version());
#ifdef SVN_SQLITE_INLINE
@@ -830,7 +830,7 @@ win32_shared_libs(apr_pool_t *pool)
filename = wcs_to_utf8(buffer, pool);
if (filename)
{
- svn_version_loaded_lib_t *lib;
+ svn_version_ext_loaded_lib_t *lib;
char *truename;
if (0 == apr_filepath_merge(&truename, "", filename,
@@ -843,7 +843,7 @@ win32_shared_libs(apr_pool_t *pool)
{
array = apr_array_make(pool, 32, sizeof(*lib));
}
- lib = &APR_ARRAY_PUSH(array, svn_version_loaded_lib_t);
+ lib = &APR_ARRAY_PUSH(array, svn_version_ext_loaded_lib_t);
lib->name = filename;
lib->version = version;
}
@@ -1063,7 +1063,7 @@ macos_shared_libs(apr_pool_t *pool)
const char *filename = _dyld_get_image_name(i);
const char *version;
char *truename;
- svn_version_loaded_lib_t *lib;
+ svn_version_ext_loaded_lib_t *lib;
if (!(header && filename))
break;
@@ -1101,7 +1101,7 @@ macos_shared_libs(apr_pool_t *pool)
{
result = apr_array_make(pool, 32, sizeof(*lib));
}
- lib = &APR_ARRAY_PUSH(result, svn_version_loaded_lib_t);
+ lib = &APR_ARRAY_PUSH(result, svn_version_ext_loaded_lib_t);
}
else
{
@@ -1109,7 +1109,7 @@ macos_shared_libs(apr_pool_t *pool)
{
dylibs = apr_array_make(pool, 32, sizeof(*lib));
}
- lib = &APR_ARRAY_PUSH(dylibs, svn_version_loaded_lib_t);
+ lib = &APR_ARRAY_PUSH(dylibs, svn_version_ext_loaded_lib_t);
}
lib->name = filename;
Modified: subversion/trunk/subversion/libsvn_subr/version.c
URL:
http://svn.apache.org/viewvc/subversion/trunk/subversion/libsvn_subr/version.c?rev=1383149&r1=1383148&r2=1383149&view=diff
==============================================================================
--- subversion/trunk/subversion/libsvn_subr/version.c (original)
+++ subversion/trunk/subversion/libsvn_subr/version.c Mon Sep 10 23:21:28 2012
@@ -99,14 +99,31 @@ svn_ver_check_list(const svn_version_t *
}
+struct svn_version_extended_t
+{
+ const char *build_date; /* Compilation date */
+ const char *build_time; /* Compilation time */
+ const char *build_host; /* Build canonical host name */
+ const char *copyright; /* Copyright notice (localized) */
+ const char *runtime_host; /* Runtime canonical host name */
+ const char *runtime_osname; /* Running OS release name */
+
+ /* Array of svn_version_ext_linked_lib_t describing dependent
+ libraries. */
+ const apr_array_header_t *linked_libs;
+
+ /* Array of svn_version_ext_loaded_lib_t describing loaded shared
+ libraries. */
+ const apr_array_header_t *loaded_libs;
+};
+
+
const svn_version_extended_t *
svn_version_extended(svn_boolean_t verbose,
apr_pool_t *pool)
{
svn_version_extended_t *info = apr_pcalloc(pool, sizeof(*info));
- info->version_number = SVN_VER_NUMBER;
- info->version_string = SVN_VERSION;
info->build_date = __DATE__;
info->build_time = __TIME__;
info->build_host = SVN_BUILD_HOST;
@@ -127,3 +144,52 @@ svn_version_extended(svn_boolean_t verbo
return info;
}
+
+
+const char *
+svn_version_ext_build_date(const svn_version_extended_t *ext_info)
+{
+ return ext_info->build_date;
+}
+
+const char *
+svn_version_ext_build_time(const svn_version_extended_t *ext_info)
+{
+ return ext_info->build_time;
+}
+
+const char *
+svn_version_ext_build_host(const svn_version_extended_t *ext_info)
+{
+ return ext_info->build_host;
+}
+
+const char *
+svn_version_ext_copyright(const svn_version_extended_t *ext_info)
+{
+ return ext_info->copyright;
+}
+
+const char *
+svn_version_ext_runtime_host(const svn_version_extended_t *ext_info)
+{
+ return ext_info->runtime_host;
+}
+
+const char *
+svn_version_ext_runtime_osname(const svn_version_extended_t *ext_info)
+{
+ return ext_info->runtime_osname;
+}
+
+const apr_array_header_t *
+svn_version_ext_linked_libs(const svn_version_extended_t *ext_info)
+{
+ return ext_info->linked_libs;
+}
+
+const apr_array_header_t *
+svn_version_ext_loaded_libs(const svn_version_extended_t *ext_info)
+{
+ return ext_info->loaded_libs;
+}