Author: stsp
Date: Fri Jul  9 00:32:15 2010
New Revision: 962375

URL: http://svn.apache.org/viewvc?rev=962375&view=rev
Log:
* subversion/libsvn_diff/parse-diff.c
  (readline): Rename this function to ...
  (hunk_readline): ... this. Turns out we only need it for reading original
   and modified hunk texts. The diff text can instead be read with
   svn_stream_readline_detect_eol(). So this function no longer needs
   a 'plain diff' mode, and we can drop the PLAIN_DIFF parameter.
   Tweak docstring accordingly.
  (svn_diff_hunk_readline_original_text,
   svn_diff_hunk_readline_modified_text): Adjust callers.
  (svn_diff_hunk_readline_diff_text): Use svn_stream_readline_detect_eol().

Modified:
    subversion/trunk/subversion/libsvn_diff/parse-diff.c

Modified: subversion/trunk/subversion/libsvn_diff/parse-diff.c
URL: 
http://svn.apache.org/viewvc/subversion/trunk/subversion/libsvn_diff/parse-diff.c?rev=962375&r1=962374&r2=962375&view=diff
==============================================================================
--- subversion/trunk/subversion/libsvn_diff/parse-diff.c (original)
+++ subversion/trunk/subversion/libsvn_diff/parse-diff.c Fri Jul  9 00:32:15 
2010
@@ -293,34 +293,32 @@ scan_eol(const char **eol, svn_stream_t 
   return SVN_NO_ERROR;
 }
 
-/* A helper function similar to svn_stream_readline(), suitable for reading
- * lines from a STREAM which has been mapped onto a hunk region within a
- * unidiff patch file.
+/* A helper function similar to svn_stream_readline_detect_eol(),
+ * suitable for reading original or modified hunk text from a STREAM
+ * which has been mapped onto a hunk region within a unidiff patch file.
  *
  * Allocate *STRINGBUF in RESULT_POOL, and read into it one line from STREAM.
  *
+ * STREAM is expected to contain unidiff text.
+ * Leading unidiff symbols ('+', '-', and ' ') are removed from the line,
+ * Any lines commencing with the VERBOTEN character are discarded.
+ * VERBOTEN should be '+' or '-', depending on which form of hunk text
+ * is being read.
+ *
  * The line-terminator is detected automatically and stored in *EOL
  * if EOL is not NULL. If EOF is reached and the stream does not end
  * with a newline character, and EOL is not NULL, *EOL is set to NULL.
  *
- * STREAM is expected to contain unidiff text.
- * If PLAIN_DIFF is TRUE, return unidiff text read from STREAM unmodified.
- * If PLAIN_DIFF is FALSE, shave off leading unidiff symbols ('+', '-', 
- * and ' ') from the line, and discard any lines commencing with the
- * VERBOTEN character. VERBOTEN should be '+' or '-', and is ignored if
- * PLAIN_DIFF is TRUE.
- *
  * SCRATCH_POOL is used for temporary allocations.
  */
 static svn_error_t *
-readline(svn_stream_t *stream,
-         svn_stringbuf_t **stringbuf,
-         const char **eol,
-         svn_boolean_t *eof,
-         char verboten,
-         svn_boolean_t plain_diff,
-         apr_pool_t *result_pool,
-         apr_pool_t *scratch_pool)
+hunk_readline(svn_stream_t *stream,
+              svn_stringbuf_t **stringbuf,
+              const char **eol,
+              svn_boolean_t *eof,
+              char verboten,
+              apr_pool_t *result_pool,
+              apr_pool_t *scratch_pool)
 {
   svn_stringbuf_t *str;
   apr_pool_t *iterpool;
@@ -380,8 +378,7 @@ readline(svn_stream_t *stream,
         }
 
       svn_stringbuf_chop(str, match - eol_str);
-      filtered = (plain_diff == FALSE &&
-                  (str->data[0] == verboten || str->data[0] == '\\'));
+      filtered = (str->data[0] == verboten || str->data[0] == '\\');
     }
   while (filtered && ! *eof);
   /* Not destroying the iterpool just yet since we still need STR
@@ -392,8 +389,7 @@ readline(svn_stream_t *stream,
       /* EOF, return an empty string. */
       *stringbuf = svn_stringbuf_create_ensure(0, result_pool);
     }
-  else if (! plain_diff &&
-           (str->data[0] == '+' || str->data[0] == '-' || str->data[0] == ' '))
+  else if (str->data[0] == '+' || str->data[0] == '-' || str->data[0] == ' ')
     {
       /* Shave off leading unidiff symbols. */
       *stringbuf = svn_stringbuf_create(str->data + 1, result_pool);
@@ -418,9 +414,9 @@ svn_diff_hunk_readline_original_text(con
                                      apr_pool_t *result_pool,
                                      apr_pool_t *scratch_pool)
 {
-  return svn_error_return(readline(hunk->original_text, stringbuf, eol, eof,
-                                   hunk->reverse ? '-' : '+',
-                                   FALSE, result_pool, scratch_pool));
+  return svn_error_return(hunk_readline(hunk->original_text, stringbuf,
+                                        eol, eof, hunk->reverse ? '-' : '+',
+                                        result_pool, scratch_pool));
 }
 
 svn_error_t *
@@ -431,9 +427,9 @@ svn_diff_hunk_readline_modified_text(con
                                      apr_pool_t *result_pool,
                                      apr_pool_t *scratch_pool)
 {
-  return svn_error_return(readline(hunk->modified_text, stringbuf, eol, eof,
-                                   hunk->reverse ? '+' : '-',
-                                   FALSE, result_pool, scratch_pool));
+  return svn_error_return(hunk_readline(hunk->modified_text, stringbuf,
+                                        eol, eof, hunk->reverse ? '+' : '-',
+                                        result_pool, scratch_pool));
 }
 
 svn_error_t *
@@ -447,8 +443,8 @@ svn_diff_hunk_readline_diff_text(const s
   svn_hunk_t dummy;
   svn_stringbuf_t *line;
 
-  SVN_ERR(readline(hunk->diff_text, &line, eol, eof, '\0', TRUE,
-                   result_pool, scratch_pool));
+  SVN_ERR(svn_stream_readline_detect_eol(hunk->diff_text, &line, eol, eof,
+                                         result_pool));
   
   if (hunk->reverse)
     {


Reply via email to