mercurial/util_win32.py
changeset 7390 0d1c770c6be1
parent 6881 d2375bbee6d4
child 7427 f21e3d0e335b
equal deleted inserted replaced
7389:72f0e4ebd9e6 7390:0d1c770c6be1
   290                                                0)
   290                                                0)
   291         except pywintypes.error, err:
   291         except pywintypes.error, err:
   292             raise WinIOError(err, name)
   292             raise WinIOError(err, name)
   293 
   293 
   294     def __iter__(self):
   294     def __iter__(self):
   295         for line in self.read().splitlines(True):
   295         for line in self.readlines():
   296             yield line
   296             yield line
   297 
   297 
   298     def read(self, count=-1):
   298     def read(self, count=-1):
   299         try:
   299         try:
   300             cs = cStringIO.StringIO()
   300             cs = cStringIO.StringIO()
   309                     count -= len(data)
   309                     count -= len(data)
   310             return cs.getvalue()
   310             return cs.getvalue()
   311         except pywintypes.error, err:
   311         except pywintypes.error, err:
   312             raise WinIOError(err)
   312             raise WinIOError(err)
   313 
   313 
       
   314     def readlines(self, sizehint=None):
       
   315         # splitlines() splits on single '\r' while readlines()
       
   316         # does not. cStringIO has a well behaving readlines() and is fast.
       
   317         return cStringIO.StringIO(self.read()).readlines()
       
   318 
   314     def write(self, data):
   319     def write(self, data):
   315         try:
   320         try:
   316             if 'a' in self.mode:
   321             if 'a' in self.mode:
   317                 win32file.SetFilePointer(self.handle, 0, win32file.FILE_END)
   322                 win32file.SetFilePointer(self.handle, 0, win32file.FILE_END)
   318             nwrit = 0
   323             nwrit = 0