Exemplo n.º 1
0
 def create(self, blks, data, version, dos_type):
   self.data = data
   # create fs header
   self.fshd = FSHeaderBlock(self.blkdev, self.blk_num)
   self.fshd.create(version=version, dos_type=dos_type)
   # create lseg blocks
   self.lsegs = []
   lseg_size = self.blkdev.block_bytes - 20
   off = 0
   size = len(data)
   blk_off = 0
   self.fshd.dev_node.seg_list_blk = blks[blk_off]
   while(off < size):
     blk_len = size - off
     if blk_len > lseg_size:
       blk_len = lseg_size
     blk_data = data[off:off+blk_len]
     # create new lseg block
     ls = LoadSegBlock(self.blkdev, blks[blk_off])
     # get next block
     if blk_off == len(blks)-1:
       next = Block.no_blk
     else:
       next = blks[blk_off+1]
     ls.create(next=next)
     ls.set_data(blk_data)
     self.lsegs.append(ls)
     # next round
     off += blk_len
     blk_off += 1
Exemplo n.º 2
0
 def read(self):
   # read fs header
   self.fshd = FSHeaderBlock(self.blkdev, self.blk_num)
   if not self.fshd.read():
     self.valid = False
     return False
   # read lseg blocks
   lseg_blk = self.fshd.dev_node.seg_list_blk
   self.lsegs = []
   data = ""
   while lseg_blk != 0xffffffff:
     ls = LoadSegBlock(self.blkdev, lseg_blk)
     if not ls.read():
       self.valid = False
       return False
     lseg_blk = ls.next
     data += ls.get_data()
     self.lsegs.append(ls)
   self.data = data
   return True
Exemplo n.º 3
0
 def read(self):
     # read fs header
     self.fshd = FSHeaderBlock(self.blkdev, self.blk_num)
     if not self.fshd.read():
         self.valid = False
         return False
     # read lseg blocks
     lseg_blk = self.fshd.dev_node.seg_list_blk
     self.lsegs = []
     data = b""
     while lseg_blk != 0xFFFFFFFF:
         ls = LoadSegBlock(self.blkdev, lseg_blk)
         if not ls.read():
             self.valid = False
             return False
         lseg_blk = ls.next
         data += ls.get_data()
         self.lsegs.append(ls)
     self.data = data
     return True
Exemplo n.º 4
0
 def create(self, blks, data, version, dos_type):
     self.data = data
     # create fs header
     self.fshd = FSHeaderBlock(self.blkdev, self.blk_num)
     self.fshd.create(version=version, dos_type=dos_type)
     # create lseg blocks
     self.lsegs = []
     lseg_size = self.blkdev.block_bytes - 20
     off = 0
     size = len(data)
     blk_off = 0
     self.fshd.dev_node.seg_list_blk = blks[blk_off]
     while (off < size):
         blk_len = size - off
         if blk_len > lseg_size:
             blk_len = lseg_size
         blk_data = data[off:off + blk_len]
         # create new lseg block
         ls = LoadSegBlock(self.blkdev, blks[blk_off])
         # get next block
         if blk_off == len(blks) - 1:
             next = Block.no_blk
         else:
             next = blks[blk_off + 1]
         ls.create(next=next)
         ls.set_data(blk_data)
         self.lsegs.append(ls)
         # next round
         off += blk_len
         blk_off += 1
Exemplo n.º 5
0
 def create(self, blks, data, version, dos_type, dev_flags=None):
   self.data = data
   # create fs header
   self.fshd = FSHeaderBlock(self.blkdev, self.blk_num)
   self.fshd.create(version=version, dos_type=dos_type)
   # store begin of seg list
   self.fshd.set_flag('seg_list_blk',blks[0])
   self.fshd.set_flag('global_vec', 0xffffffff)
   # add custom flags
   if dev_flags is not None:
     for p in dev_flags:
       self.fshd.set_flag(p[0], p[1])
   # create lseg blocks
   self.lsegs = []
   lseg_size = self.blkdev.block_bytes - 20
   off = 0
   size = len(data)
   blk_off = 0
   while(off < size):
     blk_len = size - off
     if blk_len > lseg_size:
       blk_len = lseg_size
     blk_data = data[off:off+blk_len]
     # create new lseg block
     ls = LoadSegBlock(self.blkdev, blks[blk_off])
     # get next block
     if blk_off == len(blks)-1:
       next = Block.no_blk
     else:
       next = blks[blk_off+1]
     ls.create(next=next)
     ls.set_data(blk_data)
     self.lsegs.append(ls)
     # next round
     off += blk_len
     blk_off += 1
Exemplo n.º 6
0
 def create(self, blks, data, version, dos_type, dev_flags=None):
     self.data = data
     # create fs header
     self.fshd = FSHeaderBlock(self.blkdev, self.blk_num)
     self.fshd.create(version=version, dos_type=dos_type)
     # store begin of seg list
     self.fshd.set_flag("seg_list_blk", blks[0])
     self.fshd.set_flag("global_vec", 0xFFFFFFFF)
     # add custom flags
     if dev_flags is not None:
         for p in dev_flags:
             self.fshd.set_flag(p[0], p[1])
     # create lseg blocks
     self.lsegs = []
     lseg_size = self.blkdev.block_bytes - 20
     off = 0
     size = len(data)
     blk_off = 0
     while off < size:
         blk_len = size - off
         if blk_len > lseg_size:
             blk_len = lseg_size
         blk_data = data[off:off + blk_len]
         # create new lseg block
         ls = LoadSegBlock(self.blkdev, blks[blk_off])
         # get next block
         if blk_off == len(blks) - 1:
             next = Block.no_blk
         else:
             next = blks[blk_off + 1]
         ls.create(next=next)
         ls.set_data(blk_data)
         self.lsegs.append(ls)
         # next round
         off += blk_len
         blk_off += 1