~bzr-pqm/bzr/bzr.dev

« back to all changes in this revision

Viewing changes to bzrlib/transport/local.py

  • Committer: Vincent Ladeuil
  • Date: 2010-02-10 15:46:03 UTC
  • mfrom: (4985.3.21 update)
  • mto: This revision was merged to the branch mainline in revision 5021.
  • Revision ID: v.ladeuil+lp@free.fr-20100210154603-k4no1gvfuqpzrw7p
Update performs two merges in a more logical order but stop on conflicts

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., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
 
15
# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 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:
171
171
 
172
172
        :param relpath: Location to put the contents, relative to base.
173
173
        :param f:       File-like object.
174
 
        :param mode: The mode for the newly created file, 
 
174
        :param mode: The mode for the newly created file,
175
175
                     None means just use the default
176
176
        """
177
177
 
204
204
        except (IOError, OSError),e:
205
205
            self._translate_error(e, path)
206
206
        try:
207
 
            fp.write(bytes)
 
207
            if bytes:
 
208
                fp.write(bytes)
208
209
            fp.commit()
209
210
        finally:
210
211
            fp.close()
285
286
    def put_bytes_non_atomic(self, relpath, bytes, mode=None,
286
287
                             create_parent_dir=False, dir_mode=None):
287
288
        def writer(fd):
288
 
            os.write(fd, bytes)
 
289
            if bytes:
 
290
                os.write(fd, bytes)
289
291
        self._put_non_atomic_helper(relpath, writer, mode=mode,
290
292
                                    create_parent_dir=create_parent_dir,
291
293
                                    dir_mode=dir_mode)
370
372
        file_abspath, fd = self._get_append_file(relpath, mode=mode)
371
373
        try:
372
374
            result = self._check_mode_and_size(file_abspath, fd, mode=mode)
373
 
            os.write(fd, bytes)
 
375
            if bytes:
 
376
                os.write(fd, bytes)
374
377
        finally:
375
378
            os.close(fd)
376
379
        return result
397
400
    def rename(self, rel_from, rel_to):
398
401
        path_from = self._abspath(rel_from)
399
402
        try:
400
 
            # *don't* call bzrlib.osutils.rename, because we want to 
 
403
            # *don't* call bzrlib.osutils.rename, because we want to
401
404
            # detect errors on rename
402
405
            os.rename(path_from, self._abspath(rel_to))
403
406
        except (IOError, OSError),e:
536
539
 
537
540
    def clone(self, offset=None):
538
541
        """Return a new LocalTransport with root at self.base + offset
539
 
        Because the local filesystem does not require a connection, 
 
542
        Because the local filesystem does not require a connection,
540
543
        we can just return a new object.
541
544
        """
542
545
        if offset is None:
553
556
 
554
557
class LocalURLServer(Server):
555
558
    """A pretend server for local transports, using file:// urls.
556
 
    
 
559
 
557
560
    Of course no actual server is required to access the local filesystem, so
558
561
    this just exists to tell the test code how to get to it.
559
562
    """
560
563
 
561
 
    def setUp(self):
562
 
        """Setup the server to service requests.
563
 
        
564
 
        :param decorated_transport: ignored by this implementation.
565
 
        """
 
564
    def start_server(self):
 
565
        pass
566
566
 
567
567
    def get_url(self):
568
568
        """See Transport.Server.get_url."""