vfs: add "readlines" and "tryreadlines"

This patch allows "readlines" and "tryreadlines" to take "mode"
argument, because "subrepo" requires to read files not in "rb"
(binary, default for vfs) but in "r" (text) mode in subsequent patch.
This commit is contained in:
FUJIWARA Katsunori 2014-11-19 18:35:14 +09:00
parent 38f496a6bb
commit b1ff97d24c

View File

@ -188,6 +188,15 @@ class abstractvfs(object):
raise
return ""
def tryreadlines(self, path, mode='rb'):
'''gracefully return an empty array for missing files'''
try:
return self.readlines(path, mode=mode)
except IOError, inst:
if inst.errno != errno.ENOENT:
raise
return []
def open(self, path, mode="r", text=False, atomictemp=False):
self.open = self.__call__
return self.__call__(path, mode, text, atomictemp)
@ -199,6 +208,13 @@ class abstractvfs(object):
finally:
fp.close()
def readlines(self, path, mode='rb'):
fp = self(path, mode=mode)
try:
return fp.readlines()
finally:
fp.close()
def write(self, path, data):
fp = self(path, 'wb')
try: