code: def add_entry(self, length):
          '''
          Add a new entry to this Rock Ridge Continuation Block.  This method
          attempts to find a gap that fits the new length anywhere within this
          Continuation Block.  If successful, it returns the offset at which
          it placed this entry.  If unsuccessful, it returns None.
          Parameters:
           length - The length of the entry to find a gap for.
          Returns:
           The offset the entry was placed at, or None if no gap was found.
          '''
          offset = -1
          for index, entry in enumerate(self._entries):
              if index == 0:
                  if entry.offset != 0 and length <= entry.offset:
                      offset = 0
                      break
              else:
                  lastentry = self._entries[index - 1]
                  lastend = lastentry.offset + lastentry.length - 1
                  gapsize = entry.offset - lastend - 1
                  if gapsize >= length:
                      offset = lastend + 1
                      break
          else:
              if self._entries:
                  lastentry = self._entries[-1]
                  lastend = lastentry.offset + lastentry.length - 1
                  left = self._max_block_size - lastend - 1
                  if left >= length:
                      offset = lastend + 1
              else:
                  if self._max_block_size >= length:
                      offset = 0
          if offset >= 0:
              bisect.insort_left(self._entries,
                                 RockRidgeContinuationEntry(offset, length))
          return offset