Commit 3aa9ca14 authored by Guido van Rossum's avatar Guido van Rossum

Patch by Mikael Lyngvig:

1. Fix incorrect file open mode on Win32 platforms (use "rb" instead
of "r").

2. Add shallow parameter to cmp.cmp().  If false, deep file
comparisons are made.

The module should be 100 percent backwards compatible.
parent cf6905f9
...@@ -12,14 +12,14 @@ import os ...@@ -12,14 +12,14 @@ import os
cache = {} cache = {}
def cmp(f1, f2): # Compare two files, use the cache if possible. def cmp(f1, f2, shallow=1): # Compare two files, use the cache if possible.
# Return 1 for identical files, 0 for different. # Return 1 for identical files, 0 for different.
# Raise exceptions if either file could not be statted, read, etc. # Raise exceptions if either file could not be statted, read, etc.
s1, s2 = sig(os.stat(f1)), sig(os.stat(f2)) s1, s2 = sig(os.stat(f1)), sig(os.stat(f2))
if s1[0] <> 8 or s2[0] <> 8: if s1[0] <> 8 or s2[0] <> 8:
# Either is a not a plain file -- always report as different # Either is a not a plain file -- always report as different
return 0 return 0
if s1 == s2: if shallow and s1 == s2:
# type, size & mtime match -- report same # type, size & mtime match -- report same
return 1 return 1
if s1[:2] <> s2[:2]: # Types or sizes differ, don't bother if s1[:2] <> s2[:2]: # Types or sizes differ, don't bother
...@@ -52,8 +52,8 @@ def sig(st): # Return signature (i.e., type, size, mtime) from raw stat data ...@@ -52,8 +52,8 @@ def sig(st): # Return signature (i.e., type, size, mtime) from raw stat data
def do_cmp(f1, f2): # Compare two files, really def do_cmp(f1, f2): # Compare two files, really
bufsize = 8*1024 # Could be tuned bufsize = 8*1024 # Could be tuned
fp1 = open(f1, 'r') fp1 = open(f1, 'rb')
fp2 = open(f2, 'r') fp2 = open(f2, 'rb')
while 1: while 1:
b1 = fp1.read(bufsize) b1 = fp1.read(bufsize)
b2 = fp2.read(bufsize) b2 = fp2.read(bufsize)
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment