~bzr-pqm/bzr/bzr.dev

« back to all changes in this revision

Viewing changes to bzrlib/osutils.py

  • Committer: Robert Collins
  • Date: 2005-09-28 09:35:50 UTC
  • mfrom: (1185.1.47)
  • Revision ID: robertc@robertcollins.net-20050928093550-3ca194dfaffc79f1
merge from integration

Show diffs side-by-side

added added

removed removed

Lines of Context:
16
16
# along with this program; if not, write to the Free Software
17
17
# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
18
18
 
 
19
from shutil import copyfile
19
20
from stat import (S_ISREG, S_ISDIR, S_ISLNK, ST_MODE, ST_SIZE,
20
21
                  S_ISCHR, S_ISBLK, S_ISFIFO, S_ISSOCK)
21
22
from cStringIO import StringIO
480
481
        return os.path.join(p1, p2)
481
482
    
482
483
 
483
 
def extern_command(cmd, ignore_errors = False):
484
 
    mutter('external command: %s' % `cmd`)
485
 
    if os.system(cmd):
486
 
        if not ignore_errors:
487
 
            raise BzrError('command failed')
488
 
 
489
 
 
490
484
def _read_config_value(name):
491
485
    """Read a config value from the file ~/.bzr.conf/<name>
492
486
    Return None if the file does not exist"""
502
496
def split_lines(s):
503
497
    """Split s into lines, but without removing the newline characters."""
504
498
    return StringIO(s).readlines()
 
499
 
 
500
 
 
501
def hardlinks_good():
 
502
    return sys.platform not in ('win32', 'cygwin', 'darwin')
 
503
 
 
504
 
 
505
def link_or_copy(src, dest):
 
506
    """Hardlink a file, or copy it if it can't be hardlinked."""
 
507
    if not hardlinks_good():
 
508
        copyfile(src, dest)
 
509
        return
 
510
    try:
 
511
        os.link(src, dest)
 
512
    except (OSError, IOError), e:
 
513
        if e.errno != errno.EXDEV:
 
514
            raise
 
515
        copyfile(src, dest)