예제 #1
0
 def resolve(self, path, parent=None, want_meta=True, follow=False):
     self._require_command(b'resolve')
     self.check_busy()
     self._busy = b'resolve'
     conn = self.conn
     conn.write(b'resolve %d\n' % ((1 if want_meta else 0)
                                   | (2 if follow else 0)
                                   | (4 if parent else 0)))
     if parent:
         vfs.write_resolution(conn, parent)
     write_bvec(conn, path)
     success = ord(conn.read(1))
     assert success in (0, 1)
     if success:
         result = vfs.read_resolution(conn)
     else:
         result = vfs.read_ioerror(conn)
     # FIXME: confusing
     not_ok = self.check_ok()
     if not_ok:
         raise not_ok
     self._not_busy()
     if isinstance(result, vfs.IOError):
         raise result
     return result
예제 #2
0
파일: client.py 프로젝트: bup/bup
 def resolve(self, path, parent=None, want_meta=True, follow=False):
     self._require_command('resolve')
     self.check_busy()
     self._busy = 'resolve'
     conn = self.conn
     conn.write('resolve %d\n' % ((1 if want_meta else 0)
                                  | (2 if follow else 0)
                                  | (4 if parent else 0)))
     if parent:
         vfs.write_resolution(conn, parent)
     write_bvec(conn, path)
     success = ord(conn.read(1))
     assert success in (0, 1)
     if success:
         result = vfs.read_resolution(conn)
     else:
         result = vfs.read_ioerror(conn)
     # FIXME: confusing
     not_ok = self.check_ok()
     if not_ok:
         raise not_ok
     self._not_busy()
     if isinstance(result, vfs.IOError):
         raise result
     return result