~bzr-pqm/bzr/bzr.dev

« back to all changes in this revision

Viewing changes to bzrlib/osutils.py

  • Committer: Robert Collins
  • Date: 2005-10-17 21:57:32 UTC
  • mto: This revision was merged to the branch mainline in revision 1462.
  • Revision ID: robertc@robertcollins.net-20051017215732-08f487800e726748
Allow creation of testaments from uncommitted data, and use that to get signatures before committing revisions.

Show diffs side-by-side

added added

removed removed

Lines of Context:
119
119
        return F(f)
120
120
    else:
121
121
        return os.path.join(F(p), e)
122
 
 
123
 
if os.name == "posix":
124
 
    # In Python 2.4.2 and older, os.path.abspath and os.path.realpath
125
 
    # choke on a Unicode string containing a relative path if
126
 
    # os.getcwd() returns a non-sys.getdefaultencoding()-encoded
127
 
    # string.
128
 
    _fs_enc = sys.getfilesystemencoding()
129
 
    def abspath(path):
130
 
        return os.path.abspath(path.encode(_fs_enc)).decode(_fs_enc)
131
 
    def realpath(path):
132
 
        return os.path.realpath(path.encode(_fs_enc)).decode(_fs_enc)
133
 
else:
134
 
    # We need to use the Unicode-aware os.path.abspath and
135
 
    # os.path.realpath on Windows systems.
136
 
    abspath = os.path.abspath
137
 
    realpath = os.path.realpath
 
122
    
138
123
 
139
124
def backup_file(fn):
140
125
    """Copy a file to a backup.
240
225
 
241
226
def pumpfile(fromfile, tofile):
242
227
    """Copy contents of one file to another."""
243
 
    BUFSIZE = 32768
244
 
    while True:
245
 
        b = fromfile.read(BUFSIZE)
246
 
        if not b:
247
 
            break
248
 
        tofile.write(b)
 
228
    tofile.write(fromfile.read())
249
229
 
250
230
 
251
231
def sha_file(f):
473
453
    os.path.commonprefix (python2.4) has a bad bug that it works just
474
454
    on string prefixes, assuming that '/u' is a prefix of '/u2'.  This
475
455
    avoids that problem."""
476
 
    rp = abspath(path)
 
456
    rp = os.path.abspath(path)
477
457
 
478
458
    s = []
479
459
    head = rp
489
469
        raise NotBranchError("path %r is not within branch %r" % (rp, base))
490
470
 
491
471
    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