~bzr-pqm/bzr/bzr.dev

« back to all changes in this revision

Viewing changes to bzrlib/transport/local.py

  • Committer: John Arbash Meinel
  • Date: 2010-03-25 12:32:24 UTC
  • mfrom: (5115 +trunk)
  • mto: This revision was merged to the branch mainline in revision 5116.
  • Revision ID: john@arbash-meinel.com-20100325123224-km80yrpbn7cm0jcr
Merge bzr.dev to be ready for NEWS

Show diffs side-by-side

added added

removed removed

Lines of Context:
42
42
from bzrlib import transport
43
43
 
44
44
 
45
 
_append_flags = os.O_CREAT | os.O_APPEND | os.O_WRONLY | osutils.O_BINARY
46
 
_put_non_atomic_flags = os.O_CREAT | os.O_TRUNC | os.O_WRONLY | osutils.O_BINARY
 
45
_append_flags = os.O_CREAT | os.O_APPEND | os.O_WRONLY | osutils.O_BINARY | osutils.O_NOINHERIT
 
46
_put_non_atomic_flags = os.O_CREAT | os.O_TRUNC | os.O_WRONLY | osutils.O_BINARY | osutils.O_NOINHERIT
47
47
 
48
48
 
49
49
class LocalTransport(transport.Transport):
160
160
            transport._file_streams[canonical_url].flush()
161
161
        try:
162
162
            path = self._abspath(relpath)
163
 
            return open(path, 'rb')
 
163
            return osutils.open_file(path, 'rb')
164
164
        except (IOError, OSError),e:
165
165
            if e.errno == errno.EISDIR:
166
166
                return LateReadError(relpath)
329
329
        # initialise the file
330
330
        self.put_bytes_non_atomic(relpath, "", mode=mode)
331
331
        abspath = self._abspath(relpath)
332
 
        handle = open(abspath, 'wb')
 
332
        handle = osutils.open_file(abspath, 'wb')
333
333
        if mode is not None:
334
334
            self._check_mode_and_size(abspath, handle.fileno(), mode)
335
335
        transport._file_streams[self.abspath(relpath)] = handle
481
481
        path = relpath
482
482
        try:
483
483
            path = self._abspath(relpath)
484
 
            return os.stat(path)
 
484
            return os.lstat(path)
485
485
        except (IOError, OSError),e:
486
486
            self._translate_error(e, path)
487
487
 
515
515
        except (IOError, OSError),e:
516
516
            self._translate_error(e, path)
517
517
 
 
518
    if osutils.host_os_dereferences_symlinks():
 
519
        def readlink(self, relpath):
 
520
            """See Transport.readlink."""
 
521
            return osutils.readlink(self._abspath(relpath))
 
522
 
 
523
    if osutils.hardlinks_good():
 
524
        def hardlink(self, source, link_name):
 
525
            """See Transport.link."""
 
526
            try:
 
527
                os.link(self._abspath(source), self._abspath(link_name))
 
528
            except (IOError, OSError), e:
 
529
                self._translate_error(e, source)
 
530
 
 
531
    if osutils.has_symlinks():
 
532
        def symlink(self, source, link_name):
 
533
            """See Transport.symlink."""
 
534
            abs_link_dirpath = urlutils.dirname(self.abspath(link_name))
 
535
            source_rel = urlutils.file_relpath(
 
536
                urlutils.strip_trailing_slash(abs_link_dirpath),
 
537
                urlutils.strip_trailing_slash(self.abspath(source))
 
538
            )
 
539
 
 
540
            try:
 
541
                os.symlink(source_rel, self._abspath(link_name))
 
542
            except (IOError, OSError), e:
 
543
                self._translate_error(e, source_rel)
 
544
 
518
545
    def _can_roundtrip_unix_modebits(self):
519
546
        if sys.platform == 'win32':
520
547
            # anyone else?