D2683: xdiff: remove whitespace related feature

2018-03-06 Thread quark (Jun Wu)
This revision was automatically updated to reflect the committed changes.
Closed by commit rHG09f320067591: xdiff: remove whitespace related feature 
(authored by quark, committed by ).

REPOSITORY
  rHG Mercurial

CHANGES SINCE LAST UPDATE
  https://phab.mercurial-scm.org/D2683?vs=6681=6685

REVISION DETAIL
  https://phab.mercurial-scm.org/D2683

AFFECTED FILES
  mercurial/thirdparty/xdiff/xdiff.h
  mercurial/thirdparty/xdiff/xdiffi.c
  mercurial/thirdparty/xdiff/xutils.c
  mercurial/thirdparty/xdiff/xutils.h

CHANGE DETAILS

diff --git a/mercurial/thirdparty/xdiff/xutils.h 
b/mercurial/thirdparty/xdiff/xutils.h
--- a/mercurial/thirdparty/xdiff/xutils.h
+++ b/mercurial/thirdparty/xdiff/xutils.h
@@ -32,7 +32,6 @@
 void xdl_cha_free(chastore_t *cha);
 void *xdl_cha_alloc(chastore_t *cha);
 long xdl_guess_lines(mmfile_t *mf, long sample);
-int xdl_blankline(const char *line, long size, long flags);
 int xdl_recmatch(const char *l1, long s1, const char *l2, long s2, long flags);
 unsigned long xdl_hash_record(char const **data, char const *top, long flags);
 unsigned int xdl_hashbits(unsigned int size);
diff --git a/mercurial/thirdparty/xdiff/xutils.c 
b/mercurial/thirdparty/xdiff/xutils.c
--- a/mercurial/thirdparty/xdiff/xutils.c
+++ b/mercurial/thirdparty/xdiff/xutils.c
@@ -143,168 +143,17 @@
return nl + 1;
 }
 
-int xdl_blankline(const char *line, long size, long flags)
-{
-   long i;
-
-   if (!(flags & XDF_WHITESPACE_FLAGS))
-   return (size <= 1);
-
-   for (i = 0; i < size && XDL_ISSPACE(line[i]); i++)
-   ;
-
-   return (i == size);
-}
-
-/*
- * Have we eaten everything on the line, except for an optional
- * CR at the very end?
- */
-static int ends_with_optional_cr(const char *l, long s, long i)
-{
-   int complete = s && l[s-1] == '\n';
-
-   if (complete)
-   s--;
-   if (s == i)
-   return 1;
-   /* do not ignore CR at the end of an incomplete line */
-   if (complete && s == i + 1 && l[i] == '\r')
-   return 1;
-   return 0;
-}
-
 int xdl_recmatch(const char *l1, long s1, const char *l2, long s2, long flags)
 {
-   int i1, i2;
-
if (s1 == s2 && !memcmp(l1, l2, s1))
return 1;
-   if (!(flags & XDF_WHITESPACE_FLAGS))
-   return 0;
-
-   i1 = 0;
-   i2 = 0;
-
-   /*
-* -w matches everything that matches with -b, and -b in turn
-* matches everything that matches with --ignore-space-at-eol,
-* which in turn matches everything that matches with 
--ignore-cr-at-eol.
-*
-* Each flavor of ignoring needs different logic to skip whitespaces
-* while we have both sides to compare.
-*/
-   if (flags & XDF_IGNORE_WHITESPACE) {
-   goto skip_ws;
-   while (i1 < s1 && i2 < s2) {
-   if (l1[i1++] != l2[i2++])
-   return 0;
-   skip_ws:
-   while (i1 < s1 && XDL_ISSPACE(l1[i1]))
-   i1++;
-   while (i2 < s2 && XDL_ISSPACE(l2[i2]))
-   i2++;
-   }
-   } else if (flags & XDF_IGNORE_WHITESPACE_CHANGE) {
-   while (i1 < s1 && i2 < s2) {
-   if (XDL_ISSPACE(l1[i1]) && XDL_ISSPACE(l2[i2])) {
-   /* Skip matching spaces and try again */
-   while (i1 < s1 && XDL_ISSPACE(l1[i1]))
-   i1++;
-   while (i2 < s2 && XDL_ISSPACE(l2[i2]))
-   i2++;
-   continue;
-   }
-   if (l1[i1++] != l2[i2++])
-   return 0;
-   }
-   } else if (flags & XDF_IGNORE_WHITESPACE_AT_EOL) {
-   while (i1 < s1 && i2 < s2 && l1[i1] == l2[i2]) {
-   i1++;
-   i2++;
-   }
-   } else if (flags & XDF_IGNORE_CR_AT_EOL) {
-   /* Find the first difference and see how the line ends */
-   while (i1 < s1 && i2 < s2 && l1[i1] == l2[i2]) {
-   i1++;
-   i2++;
-   }
-   return (ends_with_optional_cr(l1, s1, i1) &&
-   ends_with_optional_cr(l2, s2, i2));
-   }
-
-   /*
-* After running out of one side, the remaining side must have
-* nothing but whitespace for the lines to match.  Note that
-* ignore-whitespace-at-eol case may break out of the loop
-* while there still are characters remaining on both lines.
-*/
-   if (i1 < s1) {
-   while (i1 < s1 && XDL_ISSPACE(l1[i1]))
-   i1++;
-   if (s1 != i1)
-   return 0;
-   }
-   if (i2 < s2) {
-   while 

D2683: xdiff: remove whitespace related feature

2018-03-06 Thread indygreg (Gregory Szorc)
indygreg accepted this revision.
indygreg added a comment.
This revision is now accepted and ready to land.


  I *love* patches that only remove code.

REPOSITORY
  rHG Mercurial

REVISION DETAIL
  https://phab.mercurial-scm.org/D2683

To: quark, #hg-reviewers, indygreg
Cc: indygreg, mercurial-devel
___
Mercurial-devel mailing list
Mercurial-devel@mercurial-scm.org
https://www.mercurial-scm.org/mailman/listinfo/mercurial-devel


D2683: xdiff: remove whitespace related feature

2018-03-06 Thread quark (Jun Wu)
quark updated this revision to Diff 6681.

REPOSITORY
  rHG Mercurial

CHANGES SINCE LAST UPDATE
  https://phab.mercurial-scm.org/D2683?vs=6641=6681

REVISION DETAIL
  https://phab.mercurial-scm.org/D2683

AFFECTED FILES
  mercurial/thirdparty/xdiff/xdiff.h
  mercurial/thirdparty/xdiff/xdiffi.c
  mercurial/thirdparty/xdiff/xutils.c
  mercurial/thirdparty/xdiff/xutils.h

CHANGE DETAILS

diff --git a/mercurial/thirdparty/xdiff/xutils.h 
b/mercurial/thirdparty/xdiff/xutils.h
--- a/mercurial/thirdparty/xdiff/xutils.h
+++ b/mercurial/thirdparty/xdiff/xutils.h
@@ -32,7 +32,6 @@
 void xdl_cha_free(chastore_t *cha);
 void *xdl_cha_alloc(chastore_t *cha);
 long xdl_guess_lines(mmfile_t *mf, long sample);
-int xdl_blankline(const char *line, long size, long flags);
 int xdl_recmatch(const char *l1, long s1, const char *l2, long s2, long flags);
 unsigned long xdl_hash_record(char const **data, char const *top, long flags);
 unsigned int xdl_hashbits(unsigned int size);
diff --git a/mercurial/thirdparty/xdiff/xutils.c 
b/mercurial/thirdparty/xdiff/xutils.c
--- a/mercurial/thirdparty/xdiff/xutils.c
+++ b/mercurial/thirdparty/xdiff/xutils.c
@@ -143,168 +143,17 @@
return nl + 1;
 }
 
-int xdl_blankline(const char *line, long size, long flags)
-{
-   long i;
-
-   if (!(flags & XDF_WHITESPACE_FLAGS))
-   return (size <= 1);
-
-   for (i = 0; i < size && XDL_ISSPACE(line[i]); i++)
-   ;
-
-   return (i == size);
-}
-
-/*
- * Have we eaten everything on the line, except for an optional
- * CR at the very end?
- */
-static int ends_with_optional_cr(const char *l, long s, long i)
-{
-   int complete = s && l[s-1] == '\n';
-
-   if (complete)
-   s--;
-   if (s == i)
-   return 1;
-   /* do not ignore CR at the end of an incomplete line */
-   if (complete && s == i + 1 && l[i] == '\r')
-   return 1;
-   return 0;
-}
-
 int xdl_recmatch(const char *l1, long s1, const char *l2, long s2, long flags)
 {
-   int i1, i2;
-
if (s1 == s2 && !memcmp(l1, l2, s1))
return 1;
-   if (!(flags & XDF_WHITESPACE_FLAGS))
-   return 0;
-
-   i1 = 0;
-   i2 = 0;
-
-   /*
-* -w matches everything that matches with -b, and -b in turn
-* matches everything that matches with --ignore-space-at-eol,
-* which in turn matches everything that matches with 
--ignore-cr-at-eol.
-*
-* Each flavor of ignoring needs different logic to skip whitespaces
-* while we have both sides to compare.
-*/
-   if (flags & XDF_IGNORE_WHITESPACE) {
-   goto skip_ws;
-   while (i1 < s1 && i2 < s2) {
-   if (l1[i1++] != l2[i2++])
-   return 0;
-   skip_ws:
-   while (i1 < s1 && XDL_ISSPACE(l1[i1]))
-   i1++;
-   while (i2 < s2 && XDL_ISSPACE(l2[i2]))
-   i2++;
-   }
-   } else if (flags & XDF_IGNORE_WHITESPACE_CHANGE) {
-   while (i1 < s1 && i2 < s2) {
-   if (XDL_ISSPACE(l1[i1]) && XDL_ISSPACE(l2[i2])) {
-   /* Skip matching spaces and try again */
-   while (i1 < s1 && XDL_ISSPACE(l1[i1]))
-   i1++;
-   while (i2 < s2 && XDL_ISSPACE(l2[i2]))
-   i2++;
-   continue;
-   }
-   if (l1[i1++] != l2[i2++])
-   return 0;
-   }
-   } else if (flags & XDF_IGNORE_WHITESPACE_AT_EOL) {
-   while (i1 < s1 && i2 < s2 && l1[i1] == l2[i2]) {
-   i1++;
-   i2++;
-   }
-   } else if (flags & XDF_IGNORE_CR_AT_EOL) {
-   /* Find the first difference and see how the line ends */
-   while (i1 < s1 && i2 < s2 && l1[i1] == l2[i2]) {
-   i1++;
-   i2++;
-   }
-   return (ends_with_optional_cr(l1, s1, i1) &&
-   ends_with_optional_cr(l2, s2, i2));
-   }
-
-   /*
-* After running out of one side, the remaining side must have
-* nothing but whitespace for the lines to match.  Note that
-* ignore-whitespace-at-eol case may break out of the loop
-* while there still are characters remaining on both lines.
-*/
-   if (i1 < s1) {
-   while (i1 < s1 && XDL_ISSPACE(l1[i1]))
-   i1++;
-   if (s1 != i1)
-   return 0;
-   }
-   if (i2 < s2) {
-   while (i2 < s2 && XDL_ISSPACE(l2[i2]))
-   i2++;
-   return (s2 == i2);
-   }
-   return 1;
-}
-
-static 

D2683: xdiff: remove whitespace related feature

2018-03-04 Thread quark (Jun Wu)
quark created this revision.
Herald added a subscriber: mercurial-devel.
Herald added a reviewer: hg-reviewers.

REVISION SUMMARY
  In Mercurial, whitespace related handling are done at a higher level than
  the low-level diff algorithm so "ignore spaces". So it's not used by mdiff.
  Some of the upcoming optimizations would be more difficult with whitespace
  related features kept. So let's remove them.

REPOSITORY
  rHG Mercurial

REVISION DETAIL
  https://phab.mercurial-scm.org/D2683

AFFECTED FILES
  mercurial/thirdparty/xdiff/xdiff.h
  mercurial/thirdparty/xdiff/xdiffi.c
  mercurial/thirdparty/xdiff/xutils.c
  mercurial/thirdparty/xdiff/xutils.h

CHANGE DETAILS

diff --git a/mercurial/thirdparty/xdiff/xutils.h 
b/mercurial/thirdparty/xdiff/xutils.h
--- a/mercurial/thirdparty/xdiff/xutils.h
+++ b/mercurial/thirdparty/xdiff/xutils.h
@@ -32,7 +32,6 @@
 void xdl_cha_free(chastore_t *cha);
 void *xdl_cha_alloc(chastore_t *cha);
 long xdl_guess_lines(mmfile_t *mf, long sample);
-int xdl_blankline(const char *line, long size, long flags);
 int xdl_recmatch(const char *l1, long s1, const char *l2, long s2, long flags);
 unsigned long xdl_hash_record(char const **data, char const *top, long flags);
 unsigned int xdl_hashbits(unsigned int size);
diff --git a/mercurial/thirdparty/xdiff/xutils.c 
b/mercurial/thirdparty/xdiff/xutils.c
--- a/mercurial/thirdparty/xdiff/xutils.c
+++ b/mercurial/thirdparty/xdiff/xutils.c
@@ -143,168 +143,17 @@
return nl + 1;
 }
 
-int xdl_blankline(const char *line, long size, long flags)
-{
-   long i;
-
-   if (!(flags & XDF_WHITESPACE_FLAGS))
-   return (size <= 1);
-
-   for (i = 0; i < size && XDL_ISSPACE(line[i]); i++)
-   ;
-
-   return (i == size);
-}
-
-/*
- * Have we eaten everything on the line, except for an optional
- * CR at the very end?
- */
-static int ends_with_optional_cr(const char *l, long s, long i)
-{
-   int complete = s && l[s-1] == '\n';
-
-   if (complete)
-   s--;
-   if (s == i)
-   return 1;
-   /* do not ignore CR at the end of an incomplete line */
-   if (complete && s == i + 1 && l[i] == '\r')
-   return 1;
-   return 0;
-}
-
 int xdl_recmatch(const char *l1, long s1, const char *l2, long s2, long flags)
 {
-   int i1, i2;
-
if (s1 == s2 && !memcmp(l1, l2, s1))
return 1;
-   if (!(flags & XDF_WHITESPACE_FLAGS))
-   return 0;
-
-   i1 = 0;
-   i2 = 0;
-
-   /*
-* -w matches everything that matches with -b, and -b in turn
-* matches everything that matches with --ignore-space-at-eol,
-* which in turn matches everything that matches with 
--ignore-cr-at-eol.
-*
-* Each flavor of ignoring needs different logic to skip whitespaces
-* while we have both sides to compare.
-*/
-   if (flags & XDF_IGNORE_WHITESPACE) {
-   goto skip_ws;
-   while (i1 < s1 && i2 < s2) {
-   if (l1[i1++] != l2[i2++])
-   return 0;
-   skip_ws:
-   while (i1 < s1 && XDL_ISSPACE(l1[i1]))
-   i1++;
-   while (i2 < s2 && XDL_ISSPACE(l2[i2]))
-   i2++;
-   }
-   } else if (flags & XDF_IGNORE_WHITESPACE_CHANGE) {
-   while (i1 < s1 && i2 < s2) {
-   if (XDL_ISSPACE(l1[i1]) && XDL_ISSPACE(l2[i2])) {
-   /* Skip matching spaces and try again */
-   while (i1 < s1 && XDL_ISSPACE(l1[i1]))
-   i1++;
-   while (i2 < s2 && XDL_ISSPACE(l2[i2]))
-   i2++;
-   continue;
-   }
-   if (l1[i1++] != l2[i2++])
-   return 0;
-   }
-   } else if (flags & XDF_IGNORE_WHITESPACE_AT_EOL) {
-   while (i1 < s1 && i2 < s2 && l1[i1] == l2[i2]) {
-   i1++;
-   i2++;
-   }
-   } else if (flags & XDF_IGNORE_CR_AT_EOL) {
-   /* Find the first difference and see how the line ends */
-   while (i1 < s1 && i2 < s2 && l1[i1] == l2[i2]) {
-   i1++;
-   i2++;
-   }
-   return (ends_with_optional_cr(l1, s1, i1) &&
-   ends_with_optional_cr(l2, s2, i2));
-   }
-
-   /*
-* After running out of one side, the remaining side must have
-* nothing but whitespace for the lines to match.  Note that
-* ignore-whitespace-at-eol case may break out of the loop
-* while there still are characters remaining on both lines.
-*/
-   if (i1 < s1) {
-   while (i1 < s1 && XDL_ISSPACE(l1[i1]))
-