tests/md5sum.py
author Nicolas Dumazet <nicdumz.commits@gmail.com>
Thu, 27 Aug 2009 11:55:21 +0200
changeset 9428 5d6659cfaa06
parent 7080 a6477aa893b8
child 14494 1ffeeb91c55d
permissions -rwxr-xr-x
inotify: _inotify.c: bugfix: remove_watch has to return PyNone on success We are not currently using that API function in inotify, hence the reason for the "silent" bug. But returning NULL here causes the interpreter to crash. Let's keep code clean for reusers :) The whole "bail" logic was unneeded here.

#!/usr/bin/env python
#
# Based on python's Tools/scripts/md5sum.py
#
# This software may be used and distributed according to the terms
# of the PYTHON SOFTWARE FOUNDATION LICENSE VERSION 2, which is
# GPL-compatible.

import sys, os

try:
    from hashlib import md5
except ImportError:
    from md5 import md5

try:
    import msvcrt
    msvcrt.setmode(sys.stdout.fileno(), os.O_BINARY)
    msvcrt.setmode(sys.stderr.fileno(), os.O_BINARY)
except ImportError:
    pass

for filename in sys.argv[1:]:
    try:
        fp = open(filename, 'rb')
    except IOError, msg:
        sys.stderr.write('%s: Can\'t open: %s\n' % (filename, msg))
        sys.exit(1)

    m = md5()
    try:
        while 1:
            data = fp.read(8192)
            if not data:
                break
            m.update(data)
    except IOError, msg:
        sys.stderr.write('%s: I/O error: %s\n' % (filename, msg))
        sys.exit(1)
    sys.stdout.write('%s  %s\n' % (m.hexdigest(), filename))

sys.exit(0)