~bzr-pqm/bzr/bzr.dev

« back to all changes in this revision

Viewing changes to bzrlib/transport/local.py

  • Committer: John Arbash Meinel
  • Date: 2008-09-09 15:09:12 UTC
  • mto: This revision was merged to the branch mainline in revision 3699.
  • Revision ID: john@arbash-meinel.com-20080909150912-wyttm8he1zsls2ck
Use the right timing function on win32

Show diffs side-by-side

added added

removed removed

Lines of Context:
12
12
#
13
13
# You should have received a copy of the GNU General Public License
14
14
# along with this program; if not, write to the Free Software
15
 
# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
 
15
# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
16
16
 
17
17
"""Transport for the local filesystem.
18
18
 
71
71
            self._local_base = ''
72
72
            super(LocalTransport, self).__init__(base)
73
73
            return
74
 
 
 
74
            
75
75
        super(LocalTransport, self).__init__(base)
76
76
        self._local_base = urlutils.local_path_from_url(base)
77
77
 
78
78
    def clone(self, offset=None):
79
79
        """Return a new LocalTransport with root at self.base + offset
80
 
        Because the local filesystem does not require a connection,
 
80
        Because the local filesystem does not require a connection, 
81
81
        we can just return a new object.
82
82
        """
83
83
        if offset is None:
109
109
        #       proper handling of stuff like
110
110
        path = osutils.normpath(osutils.pathjoin(
111
111
                    self._local_base, urlutils.unescape(relpath)))
112
 
        # on windows, our _local_base may or may not have a drive specified
113
 
        # (ie, it may be "/" or "c:/foo").
114
 
        # If 'relpath' is '/' we *always* get back an abspath without
115
 
        # the drive letter - but if our transport already has a drive letter,
116
 
        # we want our abspaths to have a drive letter too - so handle that
117
 
        # here.
118
 
        if (sys.platform == "win32" and self._local_base[1:2] == ":"
119
 
            and path == '/'):
120
 
            path = self._local_base[:3]
121
 
 
122
112
        return urlutils.local_path_to_url(path)
123
113
 
124
114
    def local_abspath(self, relpath):
171
161
 
172
162
        :param relpath: Location to put the contents, relative to base.
173
163
        :param f:       File-like object.
174
 
        :param mode: The mode for the newly created file,
 
164
        :param mode: The mode for the newly created file, 
175
165
                     None means just use the default
176
166
        """
177
167
 
204
194
        except (IOError, OSError),e:
205
195
            self._translate_error(e, path)
206
196
        try:
207
 
            if bytes:
208
 
                fp.write(bytes)
 
197
            fp.write(bytes)
209
198
            fp.commit()
210
199
        finally:
211
200
            fp.close()
286
275
    def put_bytes_non_atomic(self, relpath, bytes, mode=None,
287
276
                             create_parent_dir=False, dir_mode=None):
288
277
        def writer(fd):
289
 
            if bytes:
290
 
                os.write(fd, bytes)
 
278
            os.write(fd, bytes)
291
279
        self._put_non_atomic_helper(relpath, writer, mode=mode,
292
280
                                    create_parent_dir=create_parent_dir,
293
281
                                    dir_mode=dir_mode)
372
360
        file_abspath, fd = self._get_append_file(relpath, mode=mode)
373
361
        try:
374
362
            result = self._check_mode_and_size(file_abspath, fd, mode=mode)
375
 
            if bytes:
376
 
                os.write(fd, bytes)
 
363
            os.write(fd, bytes)
377
364
        finally:
378
365
            os.close(fd)
379
366
        return result
400
387
    def rename(self, rel_from, rel_to):
401
388
        path_from = self._abspath(rel_from)
402
389
        try:
403
 
            # *don't* call bzrlib.osutils.rename, because we want to
 
390
            # *don't* call bzrlib.osutils.rename, because we want to 
404
391
            # detect errors on rename
405
392
            os.rename(path_from, self._abspath(rel_to))
406
393
        except (IOError, OSError),e:
539
526
 
540
527
    def clone(self, offset=None):
541
528
        """Return a new LocalTransport with root at self.base + offset
542
 
        Because the local filesystem does not require a connection,
 
529
        Because the local filesystem does not require a connection, 
543
530
        we can just return a new object.
544
531
        """
545
532
        if offset is None:
556
543
 
557
544
class LocalURLServer(Server):
558
545
    """A pretend server for local transports, using file:// urls.
559
 
 
 
546
    
560
547
    Of course no actual server is required to access the local filesystem, so
561
548
    this just exists to tell the test code how to get to it.
562
549
    """
563
550
 
564
551
    def setUp(self):
565
552
        """Setup the server to service requests.
566
 
 
 
553
        
567
554
        :param decorated_transport: ignored by this implementation.
568
555
        """
569
556