[svn.haxx.se] · SVN Dev · SVN Users · SVN Org · TSVN Dev · TSVN Users · Subclipse Dev · Subclipse Users · this month's index

Re: [PATCH] svnadmin load will not import dump with windows newline character in svn:mergeinfo

From: David Glasser <glasser_at_davidglasser.net>
Date: Sun, 10 May 2009 13:32:55 -0700

Why is there a windows newline in your dump file? Svn dumps are binary
files, not text.

Now, maybe the svn:mergeinfo property in general should allow windows
newlines (which is what your patch does), but why?

--dave

On May 8, 2009 3:23 PM, "John Skopis" <jskopis_at_backstopsolutions.com> wrote:

Hello,

svnadmin load fails while importing a dump that contains a windows newline
in svn:mergeinfo prop. I have not done extensive testing on this patch, but
it should work (in that it doesn't segfault when I attempt to import a
revision with \r\n in mergeinfo). Be advised I am not actually a developer.

Thanks,
John Skopis
Systems Administration

[[[
* subversion/libsvn_subr/mergeinfo.c
 (parse_revlist): Ignore windows newlines in svn:mergeinfo
]]]

Index: subversion/libsvn_subr/mergeinfo.c
===================================================================
--- subversion/libsvn_subr/mergeinfo.c (revision 37647)
+++ subversion/libsvn_subr/mergeinfo.c (working copy)
@@ -402,7 +403,7 @@
      svn_revnum_t firstrev;

      SVN_ERR(svn_revnum_parse(&firstrev, curr, &curr));
- if (*curr != '-' && *curr != '\n' && *curr != ',' && *curr != '*'
+ if (*curr != '-' && *curr != '\n' && *curr != ',' && *curr != '*' &&
*curr != '\r'
          && curr != end)
        return svn_error_createf(SVN_ERR_MERGEINFO_PARSE_ERROR, NULL,
                                 _("Invalid character '%c' found in revision
"
@@ -430,8 +431,10 @@
          mrange->end = secondrev;
        }

- if (*curr == '\n' || curr == end)
+ if (*curr == '\r' || *curr == '\n' || curr == end)
        {
+ if ( *curr == '\r' )
+ curr++;
          APR_ARRAY_PUSH(revlist, svn_merge_range_t *) = mrange;
          *input = curr;
          return SVN_NO_ERROR;
@@ -445,10 +448,10 @@
        {
          mrange->inheritable = FALSE;
          curr++;
- if (*curr == ',' || *curr == '\n' || curr == end)
+ if (*curr == ',' || *curr == '\n' || *curr == '\r' || curr == end
)
            {
              APR_ARRAY_PUSH(revlist, svn_merge_range_t *) = mrange;
- if (*curr == ',')
+ if (*curr == ',' || *curr == '\r' )
                {
                  curr++;
                }

------------------------------------------------------
http://subversion.tigris.org/ds/viewMessage.do?dsForumId=462&dsMessageId=2121222

------------------------------------------------------
http://subversion.tigris.org/ds/viewMessage.do?dsForumId=462&dsMessageId=2176270
Received on 2009-05-10 22:33:21 CEST

This is an archived mail posted to the Subversion Dev mailing list.