~bzr-pqm/bzr/bzr.dev

« back to all changes in this revision

Viewing changes to bzrlib/osutils.py

Merge from integration.

Show diffs side-by-side

added added

removed removed

Lines of Context:
30
30
import types
31
31
 
32
32
import bzrlib
33
 
from bzrlib.errors import BzrError, NotBranchError
 
33
from bzrlib.errors import BzrError, PathNotChild
34
34
from bzrlib.trace import mutter
35
35
 
36
36
 
240
240
 
241
241
def pumpfile(fromfile, tofile):
242
242
    """Copy contents of one file to another."""
243
 
    tofile.write(fromfile.read())
 
243
    BUFSIZE = 32768
 
244
    while True:
 
245
        b = fromfile.read(BUFSIZE)
 
246
        if not b:
 
247
            break
 
248
        tofile.write(b)
244
249
 
245
250
 
246
251
def sha_file(f):
481
486
    else:
482
487
        # XXX This should raise a NotChildPath exception, as its not tied
483
488
        # to branch anymore.
484
 
        raise NotBranchError("path %r is not within branch %r" % (rp, base))
 
489
        raise PathNotChild(rp, base)
485
490
 
486
491
    return os.sep.join(s)
 
492
 
 
493
 
 
494
 
 
495
def terminal_width():
 
496
    """Return estimated terminal width."""
 
497
 
 
498
    # TODO: Do something smart on Windows?
 
499
 
 
500
    # TODO: Is there anything that gets a better update when the window
 
501
    # is resized while the program is running? We could use the Python termcap
 
502
    # library.
 
503
    try:
 
504
        return int(os.environ['COLUMNS'])
 
505
    except (IndexError, KeyError, ValueError):
 
506
        return 80