Handbook
Glossary
check-part ( header trailer part bytes -- )
Vocabulary
yenc
.
private
Inputs
header
an
object
trailer
an
object
part
an
object
bytes
an
object
Outputs
None
Definition
USING:
assocs
kernel
math
sequences
yenc
;
IN:
yenc.private
::
check-part
( header trailer part bytes -- )
header
"part"
metadata-number
:>
number number 0
>
[
"Invalid part number"
invalid-yenc
]
unless
number trailer
"part"
metadata-number
check-size
"total"
header
at
[
drop
header
"total"
metadata-number
:>
total number total
<=
[
"Invalid part count"
invalid-yenc
]
unless
"total"
trailer
key?
[
total trailer
"total"
metadata-number
check-size
]
when
]
when*
part
"begin"
metadata-number
:>
first part
"end"
metadata-number
:>
last header
"size"
metadata-number
:>
size first 1
>=
last first
>=
and
last size
<=
and
[
"Invalid part range"
invalid-yenc
]
unless
last first
-
1
+
bytes
length
check-size
"pcrc32"
trailer
key?
[
"Missing part CRC32"
invalid-yenc
]
unless
bytes trailer
"pcrc32"
check-crc
first 1
=
last size
=
and
[
bytes trailer
"crc32"
check-crc
]
when
;