Mercurial > hg
comparison mercurial/util.py @ 2471:6904e1ef8ad1
merge with crew.
author | Vadim Gelfer <vadim.gelfer@gmail.com> |
---|---|
date | Tue, 20 Jun 2006 23:58:45 -0700 |
parents | fe1689273f84 d610bcfd66a8 |
children | 519a1011db91 |
comparison
equal
deleted
inserted
replaced
2470:fe1689273f84 | 2471:6904e1ef8ad1 |
---|---|
819 self.iterempty = True | 819 self.iterempty = True |
820 self.buf = collector.getvalue() | 820 self.buf = collector.getvalue() |
821 s, self.buf = self.buf[:l], buffer(self.buf, l) | 821 s, self.buf = self.buf[:l], buffer(self.buf, l) |
822 return s | 822 return s |
823 | 823 |
824 def filechunkiter(f, size = 65536): | 824 def filechunkiter(f, size=65536, limit=None): |
825 """Create a generator that produces all the data in the file size | 825 """Create a generator that produces the data in the file size |
826 (default 65536) bytes at a time. Chunks may be less than size | 826 (default 65536) bytes at a time, up to optional limit (default is |
827 bytes if the chunk is the last chunk in the file, or the file is a | 827 to read all data). Chunks may be less than size bytes if the |
828 socket or some other type of file that sometimes reads less data | 828 chunk is the last chunk in the file, or the file is a socket or |
829 than is requested.""" | 829 some other type of file that sometimes reads less data than is |
830 s = f.read(size) | 830 requested.""" |
831 while len(s) > 0: | 831 assert size >= 0 |
832 assert limit is None or limit >= 0 | |
833 while True: | |
834 if limit is None: nbytes = size | |
835 else: nbytes = min(limit, size) | |
836 s = nbytes and f.read(nbytes) | |
837 if not s: break | |
838 if limit: limit -= len(s) | |
832 yield s | 839 yield s |
833 s = f.read(size) | |
834 | 840 |
835 def makedate(): | 841 def makedate(): |
836 lt = time.localtime() | 842 lt = time.localtime() |
837 if lt[8] == 1 and time.daylight: | 843 if lt[8] == 1 and time.daylight: |
838 tz = time.altzone | 844 tz = time.altzone |