1: #line 75 "diff.ipk" 2: import os 3: import tempfile 4: import string 5: import re 6: 7: def compare_files(o,m): 8: cmd = 'diff -q '+o+' '+m 9: f = os.popen(cmd,'r') 10: output = f.read() 11: result = f.close() 12: return len(output)==0 13: 14: def compare_code_files(o,m,**kwds): 15: # slack implementation 16: return compare_files(o,m) 17: 18: def diff_files(o,m,patch=None, context=10): 19: cmd = 'diff -C'+str(context)+' '+o+' '+m 20: f = os.popen(cmd,'r') 21: output = f.read() 22: result = f.close() 23: if patch: 24: f = open(patch,'w') 25: f.write(output) 26: f.close() 27: return output 28: 29: def diff_strings(o,m,context=0): 30: foname = tempfile.mktemp() 31: fmname = tempfile.mktemp() 32: fo = open(foname,'w') 33: fm = open(fmname,'w') 34: fo.write(o) 35: fm.write(m) 36: fo.close() 37: fm.close() 38: result = diff_files(foname, fmname,context=context) 39: os.unlink(foname) 40: os.unlink(fmname) 41: return result 42: 43: def diff_lines(o,m,context=0): 44: os = string.join(o,'\n')+'\n' 45: om = string.join(m,'\n')+'\n' 46: result = diff_strings(os,om,context=context) 47: del os 48: del om 49: data = string.split(result,'\n')[:-1] 50: cs = data[0][0] 51: cm = data[1][0] 52: sep = data[2] 53: lth = len(data) 54: sections = [] 55: for i in range(2,lth): 56: if data[i] == sep: 57: sections.append([]) 58: else: 59: sections[-1].append(data[i]) 60: del data 61: del lth 62: del sep 63: 64: for i in range(len(sections)): 65: section = sections[i] 66: sections[i] = [] 67: for j in range(len(section)): 68: line = section[j] 69: code = line[0]+line[1] 70: if code == cs*2 or code == cm*2: 71: k = 0 72: first = 0 73: count = 0 74: while line[k] not in '0123456789': k = k + 1 75: while line[k] in '0123456789': 76: first = first * 10 +ord(line[k])-ord('0') 77: k = k + 1 78: first = first - 1 79: sections[i].append([[first,0]]) 80: else: 81: lineno = first + count 82: count = count + 1 83: sections[i][-1][0][1] = count 84: sections[i][-1].append(('%3d'%(lineno+1))+':'+line) 85: return sections 86: 87: def patch_file(o,diff,m): 88: cmd = 'patch -s -c -o ' + m + ' ' + o + ' -' 89: print cmd 90: f = os.popen(cmd,'w') 91: f.write(diff) 92: result = f.close() 93: 94: def posix_patch(o,diff,m): 95: patch_file(o,diff,m) 96: