aboutsummaryrefslogtreecommitdiff
path: root/subversion/libsvn_subr
diff options
context:
space:
mode:
Diffstat (limited to 'subversion/libsvn_subr')
-rw-r--r--subversion/libsvn_subr/config_file.c6
-rw-r--r--subversion/libsvn_subr/internal_statements.h2
-rw-r--r--subversion/libsvn_subr/io.c35
-rw-r--r--subversion/libsvn_subr/version.c2
4 files changed, 36 insertions, 9 deletions
diff --git a/subversion/libsvn_subr/config_file.c b/subversion/libsvn_subr/config_file.c
index 8b4d7a35220c..e4a5936d7834 100644
--- a/subversion/libsvn_subr/config_file.c
+++ b/subversion/libsvn_subr/config_file.c
@@ -1248,12 +1248,12 @@ svn_config_ensure(const char *config_dir, apr_pool_t *pool)
"### passed to the tunnel agent as <user>@<hostname>.) If the" NL
"### built-in ssh scheme were not predefined, it could be defined" NL
"### as:" NL
- "# ssh = $SVN_SSH ssh -q" NL
+ "# ssh = $SVN_SSH ssh -q --" NL
"### If you wanted to define a new 'rsh' scheme, to be used with" NL
"### 'svn+rsh:' URLs, you could do so as follows:" NL
- "# rsh = rsh" NL
+ "# rsh = rsh --" NL
"### Or, if you wanted to specify a full path and arguments:" NL
- "# rsh = /path/to/rsh -l myusername" NL
+ "# rsh = /path/to/rsh -l myusername --" NL
"### On Windows, if you are specifying a full path to a command," NL
"### use a forward slash (/) or a paired backslash (\\\\) as the" NL
"### path separator. A single backslash will be treated as an" NL
diff --git a/subversion/libsvn_subr/internal_statements.h b/subversion/libsvn_subr/internal_statements.h
index 39b671964787..1d0a3f8e9399 100644
--- a/subversion/libsvn_subr/internal_statements.h
+++ b/subversion/libsvn_subr/internal_statements.h
@@ -1,4 +1,4 @@
-/* This file is automatically generated from internal_statements.sql and .dist_sandbox/subversion-1.9.5/subversion/libsvn_subr/token-map.h.
+/* This file is automatically generated from internal_statements.sql and .dist_sandbox/subversion-1.9.7/subversion/libsvn_subr/token-map.h.
* Do not edit this file -- edit the source and rerun gen-make.py */
#define STMT_INTERNAL_SAVEPOINT_SVN 0
diff --git a/subversion/libsvn_subr/io.c b/subversion/libsvn_subr/io.c
index 75e85647df72..468dd1723804 100644
--- a/subversion/libsvn_subr/io.c
+++ b/subversion/libsvn_subr/io.c
@@ -4044,6 +4044,26 @@ svn_io_write_atomic(const char *final_path,
svn_error_t *
svn_io_file_trunc(apr_file_t *file, apr_off_t offset, apr_pool_t *pool)
{
+ /* Workaround for yet another APR issue with trunc.
+
+ If the APR file internally is in read mode, the current buffer pointer
+ will not be clipped to the valid data range. get_file_offset may then
+ return an invalid position *after* new data was written to it.
+
+ To prevent this, write 1 dummy byte just after the OFFSET at which we
+ will trunc it. That will force the APR file into write mode
+ internally and the flush() work-around below becomes affective. */
+ apr_off_t position = 0;
+
+ /* A frequent usage is OFFSET==0, in which case we don't need to preserve
+ any file content or file pointer. */
+ if (offset)
+ {
+ SVN_ERR(svn_io_file_seek(file, APR_CUR, &position, pool));
+ SVN_ERR(svn_io_file_seek(file, APR_SET, &offset, pool));
+ }
+ SVN_ERR(svn_io_file_putc(0, file, pool));
+
/* This is a work-around. APR would flush the write buffer
_after_ truncating the file causing now invalid buffered
data to be written behind OFFSET. */
@@ -4052,10 +4072,17 @@ svn_io_file_trunc(apr_file_t *file, apr_off_t offset, apr_pool_t *pool)
N_("Can't flush stream"),
pool));
- return do_io_file_wrapper_cleanup(file, apr_file_trunc(file, offset),
- N_("Can't truncate file '%s'"),
- N_("Can't truncate stream"),
- pool);
+ SVN_ERR(do_io_file_wrapper_cleanup(file, apr_file_trunc(file, offset),
+ N_("Can't truncate file '%s'"),
+ N_("Can't truncate stream"),
+ pool));
+
+ /* Restore original file pointer, if necessary.
+ It's currently at OFFSET. */
+ if (position < offset)
+ SVN_ERR(svn_io_file_seek(file, APR_SET, &position, pool));
+
+ return SVN_NO_ERROR;
}
diff --git a/subversion/libsvn_subr/version.c b/subversion/libsvn_subr/version.c
index 95cb4d399379..0210fd8836e5 100644
--- a/subversion/libsvn_subr/version.c
+++ b/subversion/libsvn_subr/version.c
@@ -136,7 +136,7 @@ svn_version_extended(svn_boolean_t verbose,
info->build_time = __TIME__;
info->build_host = SVN_BUILD_HOST;
info->copyright = apr_pstrdup
- (pool, _("Copyright (C) 2016 The Apache Software Foundation.\n"
+ (pool, _("Copyright (C) 2017 The Apache Software Foundation.\n"
"This software consists of contributions made by many people;\n"
"see the NOTICE file for more information.\n"
"Subversion is open source software, see "