def enc.room

bend-kit-tar@0.3.0.0 · tar.bend:677

import bend-kit-tar@0.3.0.0/tar.bend as Tar
import Base

677# Does an entry fit what is left of the U32 length, with room for the end blocks? Every step checks before it subtracts.
678def enc.room(+ol: U32, +dl: U32, +nl: U32, +long: Bool) -> Bool:
679  +r0 = (4294967295 - ol : U32)
680  +pd = pad(dl)
681  +l = rec.len(nl)
682  +pl = pad(l)
683  +okd = U32.is_le(1536, r0) && (U32.is_le(dl, pd) && U32.is_le(pd, (r0 - 1536 : U32)))
684  +r1 = (r0 - 1536 - pd : U32)
685  +okl = Bool.not(long) || (U32.is_le(nl, 4294967040) && (U32.is_le(l, pl) && (U32.is_le(512, r1) && U32.is_le(pl, (r1 - 512 : U32)))))
686  okd && okl

Uses (9)

Used by (1)