42
42
from bzrlib import transport
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
49
49
class LocalTransport(transport.Transport):
160
160
transport._file_streams[canonical_url].flush()
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
515
515
except (IOError, OSError),e:
516
516
self._translate_error(e, path)
518
if osutils.host_os_dereferences_symlinks():
519
def readlink(self, relpath):
520
"""See Transport.readlink."""
521
return osutils.readlink(self._abspath(relpath))
523
if osutils.hardlinks_good():
524
def hardlink(self, source, link_name):
525
"""See Transport.link."""
527
os.link(self._abspath(source), self._abspath(link_name))
528
except (IOError, OSError), e:
529
self._translate_error(e, source)
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))
541
os.symlink(source_rel, self._abspath(link_name))
542
except (IOError, OSError), e:
543
self._translate_error(e, source_rel)
518
545
def _can_roundtrip_unix_modebits(self):
519
546
if sys.platform == 'win32':