##// END OF EJS Templates
fix test-mq-eol under --pure (mimic diffhelper.c behaviour)...
Benoit Boissinot -
r10551:f61dced1 stable
parent child Browse files
Show More
@@ -1,56 +1,60 b''
1 1 # diffhelpers.py - pure Python implementation of diffhelpers.c
2 2 #
3 3 # Copyright 2009 Matt Mackall <mpm@selenic.com> and others
4 4 #
5 5 # This software may be used and distributed according to the terms of the
6 6 # GNU General Public License version 2 or any later version.
7 7
8 8 def addlines(fp, hunk, lena, lenb, a, b):
9 9 while True:
10 10 todoa = lena - len(a)
11 11 todob = lenb - len(b)
12 12 num = max(todoa, todob)
13 13 if num == 0:
14 14 break
15 15 for i in xrange(num):
16 16 s = fp.readline()
17 17 c = s[0]
18 18 if s == "\\ No newline at end of file\n":
19 19 fix_newline(hunk, a, b)
20 20 continue
21 21 if c == "\n":
22 22 # Some patches may be missing the control char
23 23 # on empty lines. Supply a leading space.
24 24 s = " \n"
25 25 hunk.append(s)
26 26 if c == "+":
27 27 b.append(s[1:])
28 28 elif c == "-":
29 29 a.append(s)
30 30 else:
31 31 b.append(s[1:])
32 32 a.append(s)
33 33 return 0
34 34
35 35 def fix_newline(hunk, a, b):
36 36 l = hunk[-1]
37 c = l[0]
38 hline = l[:-1]
37 # tolerate CRLF in last line
38 if l.endswith('\r\n'):
39 hline = l[:-2]
40 else:
41 hline = l[:-1]
42 c = hline[0]
39 43
40 44 if c == " " or c == "+":
41 b[-1] = l[1:-1]
45 b[-1] = hline[1:]
42 46 if c == " " or c == "-":
43 47 a[-1] = hline
44 48 hunk[-1] = hline
45 49 return 0
46 50
47 51
48 52 def testhunk(a, b, bstart):
49 53 alen = len(a)
50 54 blen = len(b)
51 55 if alen > blen - bstart:
52 56 return -1
53 57 for i in xrange(alen):
54 58 if a[i][1:] != b[i + bstart]:
55 59 return -1
56 60 return 0
General Comments 0
You need to be logged in to leave comments. Login now