]> git.phdru.name Git - sqlconvert.git/blob - devscripts/cmp.py
Fix comment in appveyor.yml
[sqlconvert.git] / devscripts / cmp.py
1 #! /usr/bin/env python
2 """cmp.py: compare two files. Portable replacement for cmp."""
3
4 import os
5 import sys
6
7 if sys.argv[1] in ("-h", "--help"):
8     print("Broytman cmp.py 1.0, Copyright (C) 2003-2017 PhiloSoft Design")
9     print("Usage: cmp.py [-h|--help|-V|--version] [-i] file1 file2")
10     sys.exit()
11 elif sys.argv[1] in ("-V", "--version"):
12     print("Broytman cmp.py 1.0, Copyright (C) 2003-2017 PhiloSoft Design")
13     sys.exit()
14 elif sys.argv[1] == "-i":
15     show_pbar = False
16     fname1 = sys.argv[2]
17     fname2 = sys.argv[3]
18 else:
19     show_pbar = sys.stderr.isatty()
20     fname1 = sys.argv[1]
21     fname2 = sys.argv[2]
22
23 if show_pbar:
24     try:
25         from m_lib.pbar.tty_pbar import ttyProgressBar
26     except ImportError:
27         show_pbar = 0
28
29 if show_pbar:
30     try:
31         size = os.path.getsize(fname1)
32     except:
33         print(fname1, ": no such file")
34         sys.exit(1)
35
36 if show_pbar:
37     pbar = ttyProgressBar(0, size)
38
39 file1 = open(fname1, 'rb')
40 file2 = open(fname2, 'rb')
41
42 M = 1024*1024
43 diff = False
44 count = 0
45
46
47 def report():
48     if show_pbar:
49         global pbar
50         del pbar
51     sys.stderr.write("Files differ at %d megabayte block\n" % count)
52     global diff
53     diff = True
54
55
56 while True:
57     block1 = file1.read(M)
58     block2 = file2.read(M)
59
60     if show_pbar:
61         pbar.display(file1.tell())
62
63     if block1 and block2:
64         if len(block1) != len(block2):
65             report()
66             break
67     elif block1:
68         report()
69         break
70     elif block2:
71         report()
72         break
73     else:
74         break
75
76     if block1 != block2:
77         report()
78         break
79
80     count += 1
81
82 if show_pbar and not diff:
83     del pbar
84
85 file1.close()
86 file2.close()
87
88 if diff:
89     sys.exit(1)